<?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>205376</bug_id>
          
          <creation_ts>2019-12-17 23:05:56 -0800</creation_ts>
          <short_desc>[WebAuthn] Implement coders for CTAP ClientPIN requests and responses</short_desc>
          <delta_ts>2019-12-20 02:31:13 -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>WebKit Misc.</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=183536</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>181943</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Jiewen Tan">jiewen_tan</reporter>
          <assigned_to name="Jiewen Tan">jiewen_tan</assigned_to>
          <cc>bfulgham</cc>
    
    <cc>commit-queue</cc>
    
    <cc>jiewen_tan</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1599693</commentid>
    <comment_count>0</comment_count>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2019-12-17 23:05:56 -0800</bug_when>
    <thetext>Implement coder for CTAP ClientPIN requests and responses.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1599694</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-12-17 23:06:19 -0800</bug_when>
    <thetext>&lt;rdar://problem/58034395&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1599708</commentid>
    <comment_count>2</comment_count>
      <attachid>385945</attachid>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2019-12-17 23:50:32 -0800</bug_when>
    <thetext>Created attachment 385945
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1599794</commentid>
    <comment_count>3</comment_count>
      <attachid>385972</attachid>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2019-12-18 07:45:02 -0800</bug_when>
    <thetext>Created attachment 385972
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1599831</commentid>
    <comment_count>4</comment_count>
      <attachid>385945</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2019-12-18 08:56:21 -0800</bug_when>
    <thetext>Comment on attachment 385945
Patch

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

&gt; Source/WebCore/ChangeLog:24
&gt; +        of API tests.

I suggest rephrasing this as:

&quot;The authenticatorClientPIN subCommands are based on a Chromium patch: https://chromium-review.googlesource.com/c/chromium/src/+/1457004
Specifically, it adopts the interfaces from that patch, but rewrites the BoringSSL-based crypto features using WebCore&apos;s WebCrypto implementation.
This allows us to focus on high level crypto interfaces, and lets WebCrypto handle the underlying crypto library. Also, the original Chromium patch lacks
tests. We introduce a large set of API tests to confirm proper function.&quot;

&gt; Source/WebCore/ChangeLog:29
&gt; +        made headers private for TestWebKitAPI.

Maybe: &quot;This patch also makes the AES CBC, EDCH, and HMAC platform* implementations public, so that these implementations can be shared by WebAuthentication and test infrastructure.&quot;

&gt; Source/WebCore/Modules/webauthn/fido/Pin.cpp:139
&gt; +// static

I don&apos;t think these comments are helpful. I suggest removing them.

&gt; Source/WebCore/Modules/webauthn/fido/Pin.cpp:171
&gt; +    })) {

I think this Vector&lt;std::pair&lt;int, int&gt;&gt; would be better as a constexpr called &apos;P256Point&apos; or something, and this loop as a helper function: &quot;static bool coseKeyIsP256Point(const CBORValue::MapValue&amp; coseKey)&quot;

&gt; Source/WebCore/Modules/webauthn/fido/Pin.h:63
&gt; +enum class RequestKey : int {

Does this need to be an &apos;int&apos; by spec? All values are positive, and would fit in a byte (could be uint8_t).

&gt; Source/WebCore/Modules/webauthn/fido/Pin.h:74
&gt; +enum class ResponseKey : int {

Ditto.

&gt; Source/WebCore/crypto/mac/CryptoKeyRSAMac.cpp:204
&gt; +        return WTFMove(result);

Is this WTFMove() necessary? I would expect the return value optimization to handle this.

&gt; Source/WebCore/crypto/mac/CryptoKeyRSAMac.cpp:211
&gt; +    return WTFMove(result);

Ditto.

&gt; Tools/TestWebKitAPI/Tests/WebCore/CtapPinTest.cpp:35
&gt; +#include &lt;WebCOre/CryptoAlgorithmAesCbcCfbParams.h&gt;

Oops! Not good for case sensitive file systems! :-)

fatal error: &apos;WebCOre/CryptoAlgorithmAesCbcCfbParams.h&apos; file not found</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1600084</commentid>
    <comment_count>5</comment_count>
      <attachid>385972</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2019-12-18 17:54:02 -0800</bug_when>
    <thetext>Comment on attachment 385972
Patch

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

Looks like your API tests are failing on some systems.

&gt; Source/WebCore/ChangeLog:24
&gt; +        of API tests.

I suggest rephrasing this as: &quot;The authenticatorClientPIN subCommands are based on a Chromium patch: https://chromium-review.googlesource.com/c/chromium/src/+/1457004 Specifically, it adopts the interfaces from that patch, but rewrites the BoringSSL-based crypto features using WebCore&apos;s WebCrypto implementation. This allows us to focus on high level crypto interfaces, and lets WebCrypto handle the underlying crypto library. Also, the original Chromium patch lacks tests. We introduce a large set of API tests to confirm proper function.&quot;

&gt; Source/WebCore/ChangeLog:29
&gt; +        made headers private for TestWebKitAPI.

Maybe: &quot;This patch also makes the AES CBC, EDCH, and HMAC platform* implementations public, so that these implementations can be shared by WebAuthentication and test infrastructure.&quot;

&gt; Source/WebCore/Modules/webauthn/fido/Pin.cpp:111
&gt; +// static

I don&apos;t think these comments are helpful. I suggest removing them.

&gt; Source/WebCore/Modules/webauthn/fido/Pin.cpp:170
&gt; +        {-1 /* curve */, 1 /* P-256 */},

I think this Vector&lt;std::pair&lt;int, int&gt;&gt; would be better as a constexpr called &apos;P256Point&apos; or something, and this loop as a helper function: &quot;static bool coseKeyIsP256Point(const CBORValue::MapValue&amp; coseKey)&quot;

&gt; Source/WebCore/Modules/webauthn/fido/Pin.h:63
&gt; +enum class RequestKey : int {

Does this need to be an &apos;int&apos; by spec? All values are positive, and would fit in a byte (could be uint8_t).

&gt; Source/WebCore/crypto/mac/CryptoKeyRSAMac.cpp:204
&gt; +        return WTFMove(result);

Is this WTFMove() necessary? I would expect the return value optimization to handle this.

&gt; Source/WebCore/crypto/mac/CryptoKeyRSAMac.cpp:211
&gt; +    return WTFMove(result);

Is this WTFMove() necessary? I would expect the return value optimization to handle this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1600592</commentid>
    <comment_count>6</comment_count>
      <attachid>385972</attachid>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2019-12-19 17:42:31 -0800</bug_when>
    <thetext>Comment on attachment 385972
Patch

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

Thanks Brent for reviewing this patch.

&gt;&gt; Source/WebCore/ChangeLog:24
&gt;&gt; +        of API tests.
&gt; 
&gt; I suggest rephrasing this as: &quot;The authenticatorClientPIN subCommands are based on a Chromium patch: https://chromium-review.googlesource.com/c/chromium/src/+/1457004 Specifically, it adopts the interfaces from that patch, but rewrites the BoringSSL-based crypto features using WebCore&apos;s WebCrypto implementation. This allows us to focus on high level crypto interfaces, and lets WebCrypto handle the underlying crypto library. Also, the original Chromium patch lacks tests. We introduce a large set of API tests to confirm proper function.&quot;

Fixed.

&gt;&gt; Source/WebCore/ChangeLog:29
&gt;&gt; +        made headers private for TestWebKitAPI.
&gt; 
&gt; Maybe: &quot;This patch also makes the AES CBC, EDCH, and HMAC platform* implementations public, so that these implementations can be shared by WebAuthentication and test infrastructure.&quot;

Fixed.

&gt;&gt; Source/WebCore/Modules/webauthn/fido/Pin.cpp:111
&gt;&gt; +// static
&gt; 
&gt; I don&apos;t think these comments are helpful. I suggest removing them.

Removed.

&gt;&gt; Source/WebCore/Modules/webauthn/fido/Pin.cpp:170
&gt;&gt; +        {-1 /* curve */, 1 /* P-256 */},
&gt; 
&gt; I think this Vector&lt;std::pair&lt;int, int&gt;&gt; would be better as a constexpr called &apos;P256Point&apos; or something, and this loop as a helper function: &quot;static bool coseKeyIsP256Point(const CBORValue::MapValue&amp; coseKey)&quot;

This part was from the original Chromium patch. If I were to write this part, I won&apos;t write it like this as well. Maybe we should keep it as it is but replace the integer with the constants that I defined in WebAuthenticationConstants.h.

&gt;&gt; Source/WebCore/Modules/webauthn/fido/Pin.h:63
&gt;&gt; +enum class RequestKey : int {
&gt; 
&gt; Does this need to be an &apos;int&apos; by spec? All values are positive, and would fit in a byte (could be uint8_t).

Good catch. I just keep this without second thought.

&gt;&gt; Source/WebCore/crypto/mac/CryptoKeyRSAMac.cpp:204
&gt;&gt; +        return WTFMove(result);
&gt; 
&gt; Is this WTFMove() necessary? I would expect the return value optimization to handle this.

True, I did something earlier, and forgot to undo this part.

&gt;&gt; Source/WebCore/crypto/mac/CryptoKeyRSAMac.cpp:211
&gt;&gt; +    return WTFMove(result);
&gt; 
&gt; Is this WTFMove() necessary? I would expect the return value optimization to handle this.

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1600606</commentid>
    <comment_count>7</comment_count>
      <attachid>386172</attachid>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2019-12-19 18:34:00 -0800</bug_when>
    <thetext>Created attachment 386172
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1600641</commentid>
    <comment_count>8</comment_count>
      <attachid>386172</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2019-12-19 23:55:58 -0800</bug_when>
    <thetext>Comment on attachment 386172
Patch

Thank you for incorporating my suggestions. R=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1600652</commentid>
    <comment_count>9</comment_count>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2019-12-20 01:48:11 -0800</bug_when>
    <thetext>(In reply to Brent Fulgham from comment #8)
&gt; Comment on attachment 386172 [details]
&gt; Patch
&gt; 
&gt; Thank you for incorporating my suggestions. R=me

Thanks for r+ the patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1600657</commentid>
    <comment_count>10</comment_count>
      <attachid>386172</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-12-20 02:31:11 -0800</bug_when>
    <thetext>Comment on attachment 386172
Patch

Clearing flags on attachment: 386172

Committed r253811: &lt;https://trac.webkit.org/changeset/253811&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1600658</commentid>
    <comment_count>11</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-12-20 02:31:13 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>385945</attachid>
            <date>2019-12-17 23:50:32 -0800</date>
            <delta_ts>2019-12-18 07:44:49 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-205376-20191218155027.patch</filename>
            <type>text/plain</type>
            <size>98537</size>
            <attacher name="Jiewen Tan">jiewen_tan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUzNDI1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjVkMTQzM2ZhNWExZjdh
ZDY3YTQ0M2Q3ZmRjOTMxYjk5NmIzMmI0MS4uYjU3ZmFkYWY2OGIwNTIwNTdhMTJiM2QwMGI5YTRj
ZTM3MzFjYTY5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc4IEBACisyMDE5LTEyLTE3ICBKaWV3
ZW4gVGFuICA8amlld2VuX3RhbkBhcHBsZS5jb20+CisKKyAgICAgICAgW1dlYkF1dGhuXSBJbXBs
ZW1lbnQgY29kZXJzIGZvciBDVEFQIENsaWVudFBJTiByZXF1ZXN0cyBhbmQgcmVzcG9uc2VzCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDUzNzYKKyAg
ICAgICAgPHJkYXI6Ly9wcm9ibGVtLzU4MDM0Mzk1PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2ggaW1wbGVtZW50cyBjb2RlcnMgZm9y
IGF1dGhlbnRpY2F0b3JDbGllbnRQSU4gcmVxdWVzdHMgYW5kIHJlc3BvbnNlcworICAgICAgICBm
b2xsb3dpbmcgdGhlIHNwZWM6CisgICAgICAgIGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9zcGVj
cy9maWRvLXYyLjAtcHMtMjAxOTAxMzAvZmlkby1jbGllbnQtdG8tYXV0aGVudGljYXRvci1wcm90
b2NvbC12Mi4wLXBzLTIwMTkwMTMwLmh0bWwjYXV0aGVudGljYXRvckNsaWVudFBJTgorCisgICAg
ICAgIFNwZWNpZmljYWxseSwgaXQKKyAgICAgICAgaSkgaW1wbGVtZW50cyBhdXRoZW50aWNhdG9y
Q2xpZW50UElOIHN1YkNvbW1hbmQ6IGdldFJldHJpZXMsIGdldEtleUFncmVlbWVudCBhbmQgZ2V0
UElOVG9rZW47CisgICAgICAgIGlpKSBhZGRzIHBpbkF1dGgvcGluUHJvdG9jb2wgdG8gYXV0aGVu
dGljYXRvck1ha2VDcmVkZW50aWFsL2F1dGhlbnRpY2F0b3JHZXRBc3NlcnRpb24uCisKKyAgICAg
ICAgRm9yIHRoZSBmaXJzdCBwYXJ0LCBpdCByZWZlcnMgYSBDaHJvbWl1bSBwYXRjaDoKKyAgICAg
ICAgaHR0cHM6Ly9jaHJvbWl1bS1yZXZpZXcuZ29vZ2xlc291cmNlLmNvbS9jL2Nocm9taXVtL3Ny
Yy8rLzE0NTcwMDQKKyAgICAgICAgU3BlY2lmaWNhbGx5LCBpdCB0YWtlcyB0aGUgaW50ZXJmYWNl
cyBmcm9tIHRoYXQgcGF0Y2guIEdpdmVuIGF1dGhlbnRpY2F0b3JDbGllbnRQSU4gbGFyZ2VseQor
ICAgICAgICBkZXBlbmRzIG9uIGNyeXB0byB0byBmdW5jdGlvbiwgdGhpcyBwYXRjaCByZXdyaXRl
cyBhbGwgY3J5cHRvIHBhcnQgb2YgdGhlIENocm9taXVtIHBhdGNoCisgICAgICAgIHdoaWNoIGJh
c2VzIG9uIEJvcmluZ1NTTCBieSB1c2luZyBXZWJDb3JlJ3MgV2ViQ3J5cHRvIGltcGxlbWVudGF0
aW9uLiBUaGlzIGFsbG93cyB1cyB0bworICAgICAgICBmb2N1cyBvbiBoaWdoIGxldmVsIGNyeXB0
byBpbnRlcmZhY2VzLCBhbmQgbGV0IFdlYkNyeXB0byBoYW5kbGVzIHRoZSB1bmRlcm5lYXRoIGNy
eXB0byBsaWJyYXJ5LgorICAgICAgICBBbHNvLCB0aGUgb3JpZ2luYWwgcGF0Y2ggZG9lc24ndCBo
YXZlIGFueSB0ZXN0cywgdGhpcyBwYXRjaCBhbHNvIGludHJvZHVjZXMgYSBsYXJnZSBzZXQKKyAg
ICAgICAgb2YgQVBJIHRlc3RzLgorCisgICAgICAgIFRvIGFsbG93IFdlYkNyeXB0byB0byBiZSB1
c2VkIGluIGJvdGggdGhlIGltcGxlbWVudGF0aW9uIGFuZCB0aGUgQVBJIHRlc3RzLCBwYXJ0IG9m
IGl0IHRoYXQKKyAgICAgICAgaW5jbHVkZXMgQUVTIENCQywgRUNESCwgYW5kIEhNQUMgaGFzIG1v
dmVkIHBsYXRmb3JtKiBvcGVyYXRpb25zIHRvIHB1YmxpYyBzdWNoIHRoYXQgY2FsbGVycworICAg
ICAgICBjYW4gdXNlIHRob3NlIHN0YXRpYyBtZXRob2RzIGRpcmVjdGx5IHdpdGhvdXQgcm91bmR0
cmlwcyB0byBXZWJDcnlwdG8ncyB3ZWIgaW50ZXJmYWNlcywgYW5kCisgICAgICAgIG1hZGUgaGVh
ZGVycyBwcml2YXRlIGZvciBUZXN0V2ViS2l0QVBJLgorCisgICAgICAgIENvdmVyZWQgYnkgQVBJ
IHRlc3RzLgorCisgICAgICAgICogTW9kdWxlcy93ZWJhdXRobi9XZWJBdXRoZW50aWNhdGlvbkNv
bnN0YW50cy5oOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXV0aG4vY2Jvci9DQk9SUmVhZGVyLmNw
cDoKKyAgICAgICAgKGNib3I6OkNCT1JSZWFkZXI6OnJlYWRDQk9STWFwKToKKyAgICAgICAgTGV0
IENCT1JSZWFkZXIgcmVjb2duaXplIG5lZ2F0aXZlIG1hcCBrZXlzLgorICAgICAgICAqIE1vZHVs
ZXMvd2ViYXV0aG4vZmlkby9EZXZpY2VSZXF1ZXN0Q29udmVydGVyLmNwcDoKKyAgICAgICAgKGZp
ZG86OmVuY29kZU1ha2VDcmVkZW5pdGFsUmVxdWVzdEFzQ0JPUik6CisgICAgICAgIChmaWRvOjpl
bmNvZGVHZXRBc3NlcnRpb25SZXF1ZXN0QXNDQk9SKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1
dGhuL2ZpZG8vRGV2aWNlUmVxdWVzdENvbnZlcnRlci5oOgorICAgICAgICAqIE1vZHVsZXMvd2Vi
YXV0aG4vZmlkby9QaW4uY3BwOiBBZGRlZC4KKyAgICAgICAgKGZpZG86OnBpbjo6aGFzQXRMZWFz
dEZvdXJDb2RlcG9pbnRzKToKKyAgICAgICAgKGZpZG86OnBpbjo6bWFrZVBpbkF1dGgpOgorICAg
ICAgICAoZmlkbzo6cGluOjplbmNvZGVSYXdQdWJsaWNLZXkpOgorICAgICAgICAoZmlkbzo6cGlu
Ojp2YWxpZGF0ZUFuZENvbnZlcnRUb1VURjgpOgorICAgICAgICAoZmlkbzo6cGluOjplbmNvZGVQ
aW5Db21tYW5kKToKKyAgICAgICAgKGZpZG86OnBpbjo6UmV0cmllc1Jlc3BvbnNlOjpwYXJzZSk6
CisgICAgICAgIChmaWRvOjpwaW46OktleUFncmVlbWVudFJlc3BvbnNlOjpLZXlBZ3JlZW1lbnRS
ZXNwb25zZSk6CisgICAgICAgIChmaWRvOjpwaW46OktleUFncmVlbWVudFJlc3BvbnNlOjpwYXJz
ZSk6CisgICAgICAgIChmaWRvOjpwaW46OktleUFncmVlbWVudFJlc3BvbnNlOjpwYXJzZUZyb21D
T1NFKToKKyAgICAgICAgKGZpZG86OnBpbjo6ZW5jb2RlQ09TRVB1YmxpY0tleSk6CisgICAgICAg
IChmaWRvOjpwaW46OlRva2VuUmVzcG9uc2U6OlRva2VuUmVzcG9uc2UpOgorICAgICAgICAoZmlk
bzo6cGluOjpUb2tlblJlc3BvbnNlOjpwYXJzZSk6CisgICAgICAgIChmaWRvOjpwaW46OlRva2Vu
UmVzcG9uc2U6OnBpbkF1dGggY29uc3QpOgorICAgICAgICAoZmlkbzo6cGluOjpUb2tlblJlc3Bv
bnNlOjp0b2tlbiBjb25zdCk6CisgICAgICAgIChmaWRvOjpwaW46OmVuY29kZUFzQ0JPUik6Cisg
ICAgICAgIChmaWRvOjpwaW46OlRva2VuUmVxdWVzdDo6dHJ5Q3JlYXRlKToKKyAgICAgICAgKGZp
ZG86OnBpbjo6VG9rZW5SZXF1ZXN0OjpUb2tlblJlcXVlc3QpOgorICAgICAgICAoZmlkbzo6cGlu
OjpUb2tlblJlcXVlc3Q6OnNoYXJlZEtleSBjb25zdCk6CisgICAgICAgICogTW9kdWxlcy93ZWJh
dXRobi9maWRvL1Bpbi5oOiBBZGRlZC4KKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAg
KiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogY3J5cHRvL0Ny
eXB0b0FsZ29yaXRobS5oOgorICAgICAgICAqIGNyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29y
aXRobUFFU19DQkMuaDoKKyAgICAgICAgKiBjcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0
aG1FQ0RILmg6CisgICAgICAgICogY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtSE1B
Qy5oOgorICAgICAgICAqIGNyeXB0by9rZXlzL0NyeXB0b0tleUFFUy5jcHA6CisgICAgICAgICog
Y3J5cHRvL2tleXMvQ3J5cHRvS2V5QUVTLmg6CisgICAgICAgICogY3J5cHRvL2tleXMvQ3J5cHRv
S2V5RUMuaDoKKyAgICAgICAgKiBjcnlwdG8vbWFjL0NyeXB0b0FsZ29yaXRobUFFU19DQkNNYWMu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvQWxnb3JpdGhtQUVTX0NCQzo6cGxhdGZvcm1F
bmNyeXB0KToKKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0FsZ29yaXRobUFFU19DQkM6OnBsYXRm
b3JtRGVjcnlwdCk6CisgICAgICAgICogY3J5cHRvL21hYy9DcnlwdG9LZXlSU0FNYWMuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvS2V5UlNBOjphbGdvcml0aG0gY29uc3QpOgorCiAyMDE5
LTEyLTEyICB5b3Vlbm4gZmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW1v
dmUgZGVidWcgQVNTRVJUIGluIFBlZXJDb25uZWN0aW9uQmFja2VuZApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9XZWJBdXRoZW50aWNhdGlvbkNvbnN0YW50cy5o
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9XZWJBdXRoZW50aWNhdGlvbkNvbnN0
YW50cy5oCmluZGV4IDE4MmUyZWEwNjA0NWQ4YTUzZDg0ZTk4ZGQ1OTQ1Zjc0YTlkYzE4NDMuLjY4
MzMxZjVhN2IxNzg3ZjE1ZDYwYzQxMWQ0ZTJlZTZiYjZhYWJmNTAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vV2ViQXV0aGVudGljYXRpb25Db25zdGFudHMuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL1dlYkF1dGhlbnRpY2F0aW9uQ29u
c3RhbnRzLmgKQEAgLTM4LDYgKzM4LDcgQEAgY29uc3QgaW50NjRfdCB5ID0gLTM7CiAvLyBWYWx1
ZXMKIGNvbnN0IGludDY0X3QgRUMyID0gMjsKIGNvbnN0IGludDY0X3QgRVMyNTYgPSAtNzsKK2Nv
bnN0IGludDY0X3QgRUNESDI1NiA9IC0yNTsKIGNvbnN0IGludDY0X3QgUF8yNTYgPSAxOwogCiB9
IC8vIG5hbWVzcGFjZSBDT1NFCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmF1dGhuL2Nib3IvQ0JPUlJlYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
dGhuL2Nib3IvQ0JPUlJlYWRlci5jcHAKaW5kZXggYWY1YjEwM2M2ZTU5YmUzMDAxZWYxYjY3MDNm
MzYzZDAxNmYzZTFkMS4uY2UyZjBjMjcxNDFiMDBjZjIzZDZkZWU2ZmMyZDliNTNhOGViMWU1MCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9jYm9yL0NCT1JSZWFk
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vY2Jvci9DQk9SUmVh
ZGVyLmNwcApAQCAtMjY5LDcgKzI2OSw3IEBAIE9wdGlvbmFsPENCT1JWYWx1ZT4gQ0JPUlJlYWRl
cjo6cmVhZENCT1JNYXAodWludDY0X3QgbGVuZ3RoLCBpbnQgbWF4TmVzdGluZ0xldmVsCiAgICAg
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogCiAgICAgICAgIC8vIE9ubHkgQ0JPUiBtYXBz
IHdpdGggaW50ZWdlciBvciBzdHJpbmcgdHlwZSBrZXlzIGFyZSBhbGxvd2VkLgotICAgICAgICBp
ZiAoa2V5LnZhbHVlKCkudHlwZSgpICE9IENCT1JWYWx1ZTo6VHlwZTo6U3RyaW5nICYmIGtleS52
YWx1ZSgpLnR5cGUoKSAhPSBDQk9SVmFsdWU6OlR5cGU6OlVuc2lnbmVkKSB7CisgICAgICAgIGlm
IChrZXktPmlzU3RyaW5nKCkgJiYga2V5LT5pc0ludGVnZXIoKSkgewogICAgICAgICAgICAgbV9l
cnJvckNvZGUgPSBEZWNvZGVyRXJyb3I6OkluY29ycmVjdE1hcEtleVR5cGU7CiAgICAgICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmF1dGhuL2ZpZG8vRGV2aWNlUmVxdWVzdENvbnZlcnRlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL2ZpZG8vRGV2aWNlUmVxdWVzdENvbnZlcnRl
ci5jcHAKaW5kZXggZWJkYjE5MjUzYjJlZmJhNmFhNDU2MDUxNjM2MWFjNzJkMTVhYTg1MS4uYjk2
ZGFiYjU5ODY5YzQyNWJkYmJhNDdlOTNmNWQzMDA5OGFhOWQ4OSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9maWRvL0RldmljZVJlcXVlc3RDb252ZXJ0ZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vZmlkby9EZXZpY2VSZXF1ZXN0
Q29udmVydGVyLmNwcApAQCAtODcsNyArODcsNyBAQCBzdGF0aWMgQ0JPUlZhbHVlIGNvbnZlcnRE
ZXNjcmlwdG9yVG9DQk9SKGNvbnN0IFB1YmxpY0tleUNyZWRlbnRpYWxEZXNjcmlwdG9yJiBkZQog
ICAgIHJldHVybiBDQk9SVmFsdWUoV1RGTW92ZShjYm9yRGVzY3JpcHRvck1hcCkpOwogfQogCi1W
ZWN0b3I8dWludDhfdD4gZW5jb2RlTWFrZUNyZWRlbml0YWxSZXF1ZXN0QXNDQk9SKGNvbnN0IFZl
Y3Rvcjx1aW50OF90PiYgaGFzaCwgY29uc3QgUHVibGljS2V5Q3JlZGVudGlhbENyZWF0aW9uT3B0
aW9ucyYgb3B0aW9ucywgVVZBdmFpbGFiaWxpdHkgdXZDYXBhYmlsaXR5KQorVmVjdG9yPHVpbnQ4
X3Q+IGVuY29kZU1ha2VDcmVkZW5pdGFsUmVxdWVzdEFzQ0JPUihjb25zdCBWZWN0b3I8dWludDhf
dD4mIGhhc2gsIGNvbnN0IFB1YmxpY0tleUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnMmIG9wdGlv
bnMsIFVWQXZhaWxhYmlsaXR5IHV2Q2FwYWJpbGl0eSwgT3B0aW9uYWw8UGluUGFyYW1ldGVycz4g
cGluKQogewogICAgIENCT1JWYWx1ZTo6TWFwVmFsdWUgY2Jvck1hcDsKICAgICBjYm9yTWFwW0NC
T1JWYWx1ZSgxKV0gPSBDQk9SVmFsdWUoaGFzaCk7CkBAIC0xMjQsNiArMTI0LDEyIEBAIFZlY3Rv
cjx1aW50OF90PiBlbmNvZGVNYWtlQ3JlZGVuaXRhbFJlcXVlc3RBc0NCT1IoY29uc3QgVmVjdG9y
PHVpbnQ4X3Q+JiBoYXNoLCBjCiAgICAgaWYgKCFvcHRpb25NYXAuZW1wdHkoKSkKICAgICAgICAg
Y2Jvck1hcFtDQk9SVmFsdWUoNyldID0gQ0JPUlZhbHVlKFdURk1vdmUob3B0aW9uTWFwKSk7CiAK
KyAgICBpZiAocGluKSB7CisgICAgICAgIEFTU0VSVChwaW4tPnByb3RvY29sID49IDApOworICAg
ICAgICBjYm9yTWFwW0NCT1JWYWx1ZSg4KV0gPSBDQk9SVmFsdWUocGluLT5wcm90b2NvbCk7Cisg
ICAgICAgIGNib3JNYXBbQ0JPUlZhbHVlKDkpXSA9IENCT1JWYWx1ZShXVEZNb3ZlKHBpbi0+YXV0
aCkpOworICAgIH0KKwogICAgIGF1dG8gc2VyaWFsaXplZFBhcmFtID0gQ0JPUldyaXRlcjo6d3Jp
dGUoQ0JPUlZhbHVlKFdURk1vdmUoY2Jvck1hcCkpKTsKICAgICBBU1NFUlQoc2VyaWFsaXplZFBh
cmFtKTsKIApAQCAtMTMyLDcgKzEzOCw3IEBAIFZlY3Rvcjx1aW50OF90PiBlbmNvZGVNYWtlQ3Jl
ZGVuaXRhbFJlcXVlc3RBc0NCT1IoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBoYXNoLCBjCiAgICAg
cmV0dXJuIGNib3JSZXF1ZXN0OwogfQogCi1WZWN0b3I8dWludDhfdD4gZW5jb2RlR2V0QXNzZXJ0
aW9uUmVxdWVzdEFzQ0JPUihjb25zdCBWZWN0b3I8dWludDhfdD4mIGhhc2gsIGNvbnN0IFB1Ymxp
Y0tleUNyZWRlbnRpYWxSZXF1ZXN0T3B0aW9ucyYgb3B0aW9ucywgVVZBdmFpbGFiaWxpdHkgdXZD
YXBhYmlsaXR5KQorVmVjdG9yPHVpbnQ4X3Q+IGVuY29kZUdldEFzc2VydGlvblJlcXVlc3RBc0NC
T1IoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBoYXNoLCBjb25zdCBQdWJsaWNLZXlDcmVkZW50aWFs
UmVxdWVzdE9wdGlvbnMmIG9wdGlvbnMsIFVWQXZhaWxhYmlsaXR5IHV2Q2FwYWJpbGl0eSwgT3B0
aW9uYWw8UGluUGFyYW1ldGVycz4gcGluKQogewogICAgIENCT1JWYWx1ZTo6TWFwVmFsdWUgY2Jv
ck1hcDsKICAgICBjYm9yTWFwW0NCT1JWYWx1ZSgxKV0gPSBDQk9SVmFsdWUob3B0aW9ucy5ycElk
KTsKQEAgLTE2NCw2ICsxNzAsMTIgQEAgVmVjdG9yPHVpbnQ4X3Q+IGVuY29kZUdldEFzc2VydGlv
blJlcXVlc3RBc0NCT1IoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBoYXNoLCBjb24KICAgICBpZiAo
IW9wdGlvbk1hcC5lbXB0eSgpKQogICAgICAgICBjYm9yTWFwW0NCT1JWYWx1ZSg1KV0gPSBDQk9S
VmFsdWUoV1RGTW92ZShvcHRpb25NYXApKTsKIAorICAgIGlmIChwaW4pIHsKKyAgICAgICAgQVNT
RVJUKHBpbi0+cHJvdG9jb2wgPj0gMCk7CisgICAgICAgIGNib3JNYXBbQ0JPUlZhbHVlKDgpXSA9
IENCT1JWYWx1ZShwaW4tPnByb3RvY29sKTsKKyAgICAgICAgY2Jvck1hcFtDQk9SVmFsdWUoOSld
ID0gQ0JPUlZhbHVlKFdURk1vdmUocGluLT5hdXRoKSk7CisgICAgfQorCiAgICAgYXV0byBzZXJp
YWxpemVkUGFyYW0gPSBDQk9SV3JpdGVyOjp3cml0ZShDQk9SVmFsdWUoV1RGTW92ZShjYm9yTWFw
KSkpOwogICAgIEFTU0VSVChzZXJpYWxpemVkUGFyYW0pOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL2ZpZG8vRGV2aWNlUmVxdWVzdENvbnZlcnRlci5oIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9maWRvL0RldmljZVJlcXVlc3RDb252ZXJ0
ZXIuaAppbmRleCA3ODExNGZhZWI3YjdkMzlmY2I2NjllYmIyOGEwOGU4MWU3ZjVlYWQ4Li5hODk3
NmUwYzkwNDhjM2JhMzgyMWJjZmRjY2QyZTY0NTIwOWU2ZDc4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL2ZpZG8vRGV2aWNlUmVxdWVzdENvbnZlcnRlci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vZmlkby9EZXZpY2VSZXF1ZXN0Q29u
dmVydGVyLmgKQEAgLTQyLDE1ICs0MiwyMCBAQCBzdHJ1Y3QgUHVibGljS2V5Q3JlZGVudGlhbFJl
cXVlc3RPcHRpb25zOwogCiBuYW1lc3BhY2UgZmlkbyB7CiAKK3N0cnVjdCBQaW5QYXJhbWV0ZXJz
IHsKKyAgICBpbnQgcHJvdG9jb2w7CisgICAgVmVjdG9yPHVpbnQ4X3Q+IGF1dGg7Cit9OworCiAv
LyBTZXJpYWxpemVzIE1ha2VDcmVkZW50aWFsIHJlcXVlc3QgcGFyYW1ldGVyIGludG8gQ0JPUiBl
bmNvZGVkIG1hcCB3aXRoCiAvLyBpbnRlZ2VyIGtleXMgYW5kIENCT1IgZW5jb2RlZCB2YWx1ZXMg
YXMgZGVmaW5lZCBieSB0aGUgQ1RBUCBzcGVjLgogLy8gaHR0cHM6Ly9maWRvYWxsaWFuY2Uub3Jn
L3NwZWNzL2ZpZG8tdjIuMC1wcy0yMDE3MDkyNy9maWRvLWNsaWVudC10by1hdXRoZW50aWNhdG9y
LXByb3RvY29sLXYyLjAtcHMtMjAxNzA5MjcuaHRtbCNhdXRoZW50aWNhdG9yTWFrZUNyZWRlbnRp
YWwKLVdFQkNPUkVfRVhQT1JUIFZlY3Rvcjx1aW50OF90PiBlbmNvZGVNYWtlQ3JlZGVuaXRhbFJl
cXVlc3RBc0NCT1IoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBoYXNoLCBjb25zdCBXZWJDb3JlOjpQ
dWJsaWNLZXlDcmVkZW50aWFsQ3JlYXRpb25PcHRpb25zJiwgQXV0aGVudGljYXRvclN1cHBvcnRl
ZE9wdGlvbnM6OlVzZXJWZXJpZmljYXRpb25BdmFpbGFiaWxpdHkpOworV0VCQ09SRV9FWFBPUlQg
VmVjdG9yPHVpbnQ4X3Q+IGVuY29kZU1ha2VDcmVkZW5pdGFsUmVxdWVzdEFzQ0JPUihjb25zdCBW
ZWN0b3I8dWludDhfdD4mIGhhc2gsIGNvbnN0IFdlYkNvcmU6OlB1YmxpY0tleUNyZWRlbnRpYWxD
cmVhdGlvbk9wdGlvbnMmLCBBdXRoZW50aWNhdG9yU3VwcG9ydGVkT3B0aW9uczo6VXNlclZlcmlm
aWNhdGlvbkF2YWlsYWJpbGl0eSwgT3B0aW9uYWw8UGluUGFyYW1ldGVycz4gcGluID0gV1RGOjpu
dWxsb3B0KTsKIAogLy8gU2VyaWFsaXplcyBHZXRBc3NlcnRpb24gcmVxdWVzdCBwYXJhbWV0ZXIg
aW50byBDQk9SIGVuY29kZWQgbWFwIHdpdGgKIC8vIGludGVnZXIga2V5cyBhbmQgQ0JPUiBlbmNv
ZGVkIHZhbHVlcyBhcyBkZWZpbmVkIGJ5IHRoZSBDVEFQIHNwZWMuCiAvLyBodHRwczovL2ZpZG9h
bGxpYW5jZS5vcmcvc3BlY3MvZmlkby12Mi4wLXBzLTIwMTcwOTI3L2ZpZG8tY2xpZW50LXRvLWF1
dGhlbnRpY2F0b3ItcHJvdG9jb2wtdjIuMC1wcy0yMDE3MDkyNy5odG1sI2F1dGhlbnRpY2F0b3JH
ZXRBc3NlcnRpb24KLVdFQkNPUkVfRVhQT1JUIFZlY3Rvcjx1aW50OF90PiBlbmNvZGVHZXRBc3Nl
cnRpb25SZXF1ZXN0QXNDQk9SKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgaGFzaCwgY29uc3QgV2Vi
Q29yZTo6UHVibGljS2V5Q3JlZGVudGlhbFJlcXVlc3RPcHRpb25zJiwgQXV0aGVudGljYXRvclN1
cHBvcnRlZE9wdGlvbnM6OlVzZXJWZXJpZmljYXRpb25BdmFpbGFiaWxpdHkpOworV0VCQ09SRV9F
WFBPUlQgVmVjdG9yPHVpbnQ4X3Q+IGVuY29kZUdldEFzc2VydGlvblJlcXVlc3RBc0NCT1IoY29u
c3QgVmVjdG9yPHVpbnQ4X3Q+JiBoYXNoLCBjb25zdCBXZWJDb3JlOjpQdWJsaWNLZXlDcmVkZW50
aWFsUmVxdWVzdE9wdGlvbnMmLCBBdXRoZW50aWNhdG9yU3VwcG9ydGVkT3B0aW9uczo6VXNlclZl
cmlmaWNhdGlvbkF2YWlsYWJpbGl0eSwgT3B0aW9uYWw8UGluUGFyYW1ldGVycz4gcGluID0gV1RG
OjpudWxsb3B0KTsKIAogLy8gUmVwcmVzZW50cyBDVEFQIHJlcXVlc3RzIHdpdGggZW1wdHkgcGFy
YW1ldGVycywgaW5jbHVkaW5nCiAvLyBBdXRoZW50aWNhdG9yR2V0SW5mbywgQXV0aGVudGljYXRv
clJlc2V0IGFuZCBBdXRoZW50aWNhdG9yR2V0TmV4dEFzc2VydGlvbiBjb21tYW5kcy4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vZmlkby9QaW4uY3BwIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9maWRvL1Bpbi5jcHAKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTFm
NmYxOGEyMGYxOWQyMDhjZTA3ODc3Njk5NzhhNzNhZTg5MDZlNgotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vZmlkby9QaW4uY3BwCkBAIC0wLDAgKzEs
MzIzIEBACisvLyBDb3B5cmlnaHQgMjAxOSBUaGUgQ2hyb21pdW0gQXV0aG9ycy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKy8vIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisvLworLy8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisvLyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisvLyBtZXQ6Cisv
LworLy8gICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorLy8gbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorLy8gICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisvLyBjb3B5cmlnaHQgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisvLyBp
biB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlCisvLyBkaXN0cmlidXRpb24uCisvLyAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xl
IEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKy8vIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0
byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisvLyB0aGlzIHNvZnR3
YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorLy8KKy8vIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05U
UklCVVRPUlMKKy8vICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKy8vIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisv
LyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwKKy8vIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorLy8gREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZCisvLyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisvLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKy8vIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKyNp
bmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJQaW4uaCIKKworI2lmIEVOQUJMRShXRUJfQVVU
SE4pCisKKyNpbmNsdWRlICJDQk9SUmVhZGVyLmgiCisjaW5jbHVkZSAiQ0JPUldyaXRlci5oIgor
I2luY2x1ZGUgIkNyeXB0b0FsZ29yaXRobUFFU19DQkMuaCIKKyNpbmNsdWRlICJDcnlwdG9BbGdv
cml0aG1BZXNDYmNDZmJQYXJhbXMuaCIKKyNpbmNsdWRlICJDcnlwdG9BbGdvcml0aG1FQ0RILmgi
CisjaW5jbHVkZSAiQ3J5cHRvQWxnb3JpdGhtSE1BQy5oIgorI2luY2x1ZGUgIkNyeXB0b0tleUFF
Uy5oIgorI2luY2x1ZGUgIkNyeXB0b0tleUVDLmgiCisjaW5jbHVkZSAiQ3J5cHRvS2V5SE1BQy5o
IgorI2luY2x1ZGUgPHBhbC9jcnlwdG8vQ3J5cHRvRGlnZXN0Lmg+CisKK25hbWVzcGFjZSBmaWRv
IHsKK25hbWVzcGFjZSBwaW4gewordXNpbmcgbmFtZXNwYWNlIGNib3I7CisKKy8vIGhhc0F0TGVh
c3RGb3VyQ29kZXBvaW50cyByZXR1cm5zIHRydWUgaWYgfHBpbnwgY29udGFpbnMKKy8vIGZvdXIg
b3IgbW9yZSBjb2RlIHBvaW50cy4gVGhpcyByZWZsZWN0cyB0aGUgIjQgVW5pY29kZSBjaGFyYWN0
ZXJzIgorLy8gcmVxdWlyZW1lbnQgaW4gQ1RBUDIuCitzdGF0aWMgYm9vbCBoYXNBdExlYXN0Rm91
ckNvZGVwb2ludHMoY29uc3QgU3RyaW5nJiBwaW4pCit7CisgICAgcmV0dXJuIHBpbi5sZW5ndGgo
KSA+PSA0OworfQorCisvLyBtYWtlUGluQXV0aCByZXR1cm5zIGBMRUZUKEhNQUMtU0hBLTI1Nihz
ZWNyZXQsIGRhdGEpLCAxNilgLgorc3RhdGljIFZlY3Rvcjx1aW50OF90PiBtYWtlUGluQXV0aChj
b25zdCBDcnlwdG9LZXlITUFDJiBrZXksIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgZGF0YSkKK3sK
KyAgICBhdXRvIHJlc3VsdCA9IENyeXB0b0FsZ29yaXRobUhNQUM6OnBsYXRmb3JtU2lnbihrZXks
IGRhdGEpOworICAgIEFTU0VSVCghcmVzdWx0Lmhhc0V4Y2VwdGlvbigpKTsKKyAgICBhdXRvIHBp
bkF1dGggPSByZXN1bHQucmVsZWFzZVJldHVyblZhbHVlKCk7CisgICAgcGluQXV0aC5zaHJpbmso
MTYpOworICAgIHJldHVybiBwaW5BdXRoOworfQorCitWZWN0b3I8dWludDhfdD4gZW5jb2RlUmF3
UHVibGljS2V5KGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgeCwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+
JiB5KQoreworICAgIFZlY3Rvcjx1aW50OF90PiByYXdLZXk7CisgICAgcmF3S2V5LnJlc2VydmVD
YXBhY2l0eSgxICsgeC5zaXplKCkgKyB5LnNpemUoKSk7CisgICAgcmF3S2V5LmFwcGVuZCgweDA0
KTsKKyAgICByYXdLZXkuYXBwZW5kVmVjdG9yKHgpOworICAgIHJhd0tleS5hcHBlbmRWZWN0b3Io
eSk7CisgICAgcmV0dXJuIHJhd0tleTsKK30KKworT3B0aW9uYWw8Q1N0cmluZz4gdmFsaWRhdGVB
bmRDb252ZXJ0VG9VVEY4KGNvbnN0IFN0cmluZyYgcGluKQoreworICAgIGlmICghaGFzQXRMZWFz
dEZvdXJDb2RlcG9pbnRzKHBpbikpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAg
YXV0byByZXN1bHQgPSBwaW4udXRmOCgpOworICAgIGlmIChyZXN1bHQubGVuZ3RoKCkgPCBrTWlu
Qnl0ZXMgfHwgcmVzdWx0Lmxlbmd0aCgpID4ga01heEJ5dGVzKQorICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworICAgIHJldHVybiByZXN1bHQ7Cit9CisKKy8vIGVuY29kZVBJTkNvbW1hbmQg
cmV0dXJucyBhIENUQVAyIFBJTiBjb21tYW5kIGZvciB0aGUgb3BlcmF0aW9uIHxzdWJjb21tYW5k
fC4KKy8vIEFkZGl0aW9uYWwgZWxlbWVudHMgb2YgdGhlIHRvcC1sZXZlbCBDQk9SIG1hcCBjYW4g
YmUgYWRkZWQgd2l0aCB0aGUgb3B0aW9uYWwKKy8vIHxhZGRBZGRpdGlvbmFsfCBjYWxsYmFjay4K
K3N0YXRpYyBWZWN0b3I8dWludDhfdD4gZW5jb2RlUGluQ29tbWFuZChTdWJjb21tYW5kIHN1YmNv
bW1hbmQsIEZ1bmN0aW9uPHZvaWQoQ0JPUlZhbHVlOjpNYXBWYWx1ZSopPiBhZGRBZGRpdGlvbmFs
ID0gbnVsbHB0cikKK3sKKyAgICBDQk9SVmFsdWU6Ok1hcFZhbHVlIG1hcDsKKyAgICBtYXAuZW1w
bGFjZShzdGF0aWNfY2FzdDxpbnQ+KFJlcXVlc3RLZXk6OmtQcm90b2NvbCksIGtQcm90b2NvbFZl
cnNpb24pOworICAgIG1hcC5lbXBsYWNlKHN0YXRpY19jYXN0PGludD4oUmVxdWVzdEtleTo6a1N1
YmNvbW1hbmQpLCBzdGF0aWNfY2FzdDxpbnQ+KHN1YmNvbW1hbmQpKTsKKworICAgIGlmIChhZGRB
ZGRpdGlvbmFsKQorICAgICAgICBhZGRBZGRpdGlvbmFsKCZtYXApOworCisgICAgLy8gRklYTUUo
MjA1Mzc1KQorICAgIGF1dG8gc2VyaWFsaXplZFBhcmFtID0gQ0JPUldyaXRlcjo6d3JpdGUoQ0JP
UlZhbHVlKFdURk1vdmUobWFwKSkpOworICAgIEFTU0VSVChzZXJpYWxpemVkUGFyYW0pOworCisg
ICAgVmVjdG9yPHVpbnQ4X3Q+IGNib3JSZXF1ZXN0KHsgc3RhdGljX2Nhc3Q8dWludDhfdD4oQ3Rh
cFJlcXVlc3RDb21tYW5kOjprQXV0aGVudGljYXRvckNsaWVudFBpbikgfSk7CisgICAgY2JvclJl
cXVlc3QuYXBwZW5kVmVjdG9yKCpzZXJpYWxpemVkUGFyYW0pOworICAgIHJldHVybiBjYm9yUmVx
dWVzdDsKK30KKworUmV0cmllc1Jlc3BvbnNlOjpSZXRyaWVzUmVzcG9uc2UoKSA9IGRlZmF1bHQ7
CisKKy8vIHN0YXRpYworT3B0aW9uYWw8UmV0cmllc1Jlc3BvbnNlPiBSZXRyaWVzUmVzcG9uc2U6
OnBhcnNlKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgaW5CdWZmZXIpCit7CisgICAgLy8gRklYTUUo
MjA1Mzc1KQorICAgIGlmIChpbkJ1ZmZlci5zaXplKCkgPD0ga1Jlc3BvbnNlQ29kZUxlbmd0aCB8
fCBnZXRSZXNwb25zZUNvZGUoaW5CdWZmZXIpICE9IEN0YXBEZXZpY2VSZXNwb25zZUNvZGU6OmtT
dWNjZXNzKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgVmVjdG9yPHVpbnQ4
X3Q+IGJ1ZmZlcjsKKyAgICBidWZmZXIuYXBwZW5kKGluQnVmZmVyLmRhdGEoKSArIDEsIGluQnVm
ZmVyLnNpemUoKSAtIDEpOworICAgIE9wdGlvbmFsPENCT1I+IGRlY29kZWRSZXNwb25zZSA9IGNi
b3I6OkNCT1JSZWFkZXI6OnJlYWQoYnVmZmVyKTsKKyAgICBpZiAoIWRlY29kZWRSZXNwb25zZSB8
fCAhZGVjb2RlZFJlc3BvbnNlLT5pc01hcCgpKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworICAgIGNvbnN0IGF1dG8mIHJlc3BvbnNlTWFwID0gZGVjb2RlZFJlc3BvbnNlLT5nZXRNYXAo
KTsKKworICAgIGF1dG8gaXQgPSByZXNwb25zZU1hcC5maW5kKENCT1JWYWx1ZShzdGF0aWNfY2Fz
dDxpbnQ+KFJlc3BvbnNlS2V5OjprUmV0cmllcykpKTsKKyAgICBpZiAoaXQgPT0gcmVzcG9uc2VN
YXAuZW5kKCkgfHwgIWl0LT5zZWNvbmQuaXNVbnNpZ25lZCgpKQorICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworCisgICAgUmV0cmllc1Jlc3BvbnNlIHJldDsKKyAgICByZXQucmV0cmllcyA9
IHN0YXRpY19jYXN0PGludD4oaXQtPnNlY29uZC5nZXRVbnNpZ25lZCgpKTsKKyAgICByZXR1cm4g
cmV0OworfQorCitLZXlBZ3JlZW1lbnRSZXNwb25zZTo6S2V5QWdyZWVtZW50UmVzcG9uc2UoUmVm
PENyeXB0b0tleUVDPiYmIHBlZXJLZXkpCisgICAgOiBwZWVyS2V5KFdURk1vdmUocGVlcktleSkp
Cit7Cit9CisKKy8vIHN0YXRpYworT3B0aW9uYWw8S2V5QWdyZWVtZW50UmVzcG9uc2U+IEtleUFn
cmVlbWVudFJlc3BvbnNlOjpwYXJzZShjb25zdCBWZWN0b3I8dWludDhfdD4mIGluQnVmZmVyKQor
eworICAgIC8vIEZJWE1FKDIwNTM3NSkKKyAgICBpZiAoaW5CdWZmZXIuc2l6ZSgpIDw9IGtSZXNw
b25zZUNvZGVMZW5ndGggfHwgZ2V0UmVzcG9uc2VDb2RlKGluQnVmZmVyKSAhPSBDdGFwRGV2aWNl
UmVzcG9uc2VDb2RlOjprU3VjY2VzcykKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKwor
ICAgIFZlY3Rvcjx1aW50OF90PiBidWZmZXI7CisgICAgYnVmZmVyLmFwcGVuZChpbkJ1ZmZlci5k
YXRhKCkgKyAxLCBpbkJ1ZmZlci5zaXplKCkgLSAxKTsKKyAgICBhdXRvIGRlY29kZWRSZXNwb25z
ZSA9IGNib3I6OkNCT1JSZWFkZXI6OnJlYWQoYnVmZmVyKTsKKyAgICBpZiAoIWRlY29kZWRSZXNw
b25zZSB8fCAhZGVjb2RlZFJlc3BvbnNlLT5pc01hcCgpKQorICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworICAgIGNvbnN0IGF1dG8mIHJlc3BvbnNlTWFwID0gZGVjb2RlZFJlc3BvbnNlLT5n
ZXRNYXAoKTsKKworICAgIC8vIFRoZSBlcGhlbWVyYWwga2V5IGlzIGVuY29kZWQgYXMgYSBDT1NF
IHN0cnVjdHVyZS4KKyAgICBhdXRvIGl0ID0gcmVzcG9uc2VNYXAuZmluZChDQk9SVmFsdWUoc3Rh
dGljX2Nhc3Q8aW50PihSZXNwb25zZUtleTo6a0tleUFncmVlbWVudCkpKTsKKyAgICBpZiAoaXQg
PT0gcmVzcG9uc2VNYXAuZW5kKCkgfHwgIWl0LT5zZWNvbmQuaXNNYXAoKSkKKyAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKyAgICBjb25zdCBhdXRvJiBjb3NlS2V5ID0gaXQtPnNlY29uZC5n
ZXRNYXAoKTsKKworICAgIHJldHVybiBwYXJzZUZyb21DT1NFKGNvc2VLZXkpOworfQorCisvLyBz
dGF0aWMKK09wdGlvbmFsPEtleUFncmVlbWVudFJlc3BvbnNlPiBLZXlBZ3JlZW1lbnRSZXNwb25z
ZTo6cGFyc2VGcm9tQ09TRShjb25zdCBDQk9SVmFsdWU6Ok1hcFZhbHVlJiBjb3NlS2V5KQorewor
ICAgIC8vIFRoZSBDT1NFIGtleSBtdXN0IGJlIGEgUC0yNTYgcG9pbnQuIFNlZQorICAgIC8vIGh0
dHBzOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmM4MTUyI3NlY3Rpb24tNy4xCisgICAgZm9yIChj
b25zdCBhdXRvJiBwYWlyIDogVmVjdG9yPHN0ZDo6cGFpcjxpbnQsIGludD4+KHsKKyAgICAgICAg
ezEgLyoga2V5IHR5cGUgKi8sIDIgLyogZWxsaXB0aWMgY3VydmUsIHVuY29tcHJlc3NlZCAqL30s
CisgICAgICAgIHszIC8qIGFsZ29yaXRobSAqLywgLTI1IC8qIEVDREgsIGVwaGVtZXJhbOKAk3N0
YXRpYywgSEtERi1TSEEtMjU2ICovfSwKKyAgICAgICAgey0xIC8qIGN1cnZlICovLCAxIC8qIFAt
MjU2ICovfSwKKyAgICB9KSkgeworICAgICAgICBhdXRvIGl0ID0gY29zZUtleS5maW5kKENCT1JW
YWx1ZShwYWlyLmZpcnN0KSk7CisgICAgICAgIGlmIChpdCA9PSBjb3NlS2V5LmVuZCgpIHx8ICFp
dC0+c2Vjb25kLmlzSW50ZWdlcigpIHx8IGl0LT5zZWNvbmQuZ2V0SW50ZWdlcigpICE9IHBhaXIu
c2Vjb25kKQorICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICB9CisKKyAgICAv
LyBTZWUgaHR0cHM6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzgxNTIjc2VjdGlvbi0xMy4xLjEK
KyAgICBjb25zdCBhdXRvJiB4SXQgPSBjb3NlS2V5LmZpbmQoQ0JPUlZhbHVlKC0yKSk7CisgICAg
Y29uc3QgYXV0byYgeUl0ID0gY29zZUtleS5maW5kKENCT1JWYWx1ZSgtMykpOworICAgIGlmICh4
SXQgPT0gY29zZUtleS5lbmQoKSB8fCB5SXQgPT0gY29zZUtleS5lbmQoKSB8fCAheEl0LT5zZWNv
bmQuaXNCeXRlU3RyaW5nKCkgfHwgIXlJdC0+c2Vjb25kLmlzQnl0ZVN0cmluZygpKQorICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgY29uc3QgYXV0byYgeCA9IHhJdC0+c2Vjb25k
LmdldEJ5dGVTdHJpbmcoKTsKKyAgICBjb25zdCBhdXRvJiB5ID0geUl0LT5zZWNvbmQuZ2V0Qnl0
ZVN0cmluZygpOworICAgIGF1dG8gcGVlcktleSA9IENyeXB0b0tleUVDOjppbXBvcnRSYXcoQ3J5
cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6RUNESCwgIlAtMjU2IiwgZW5jb2RlUmF3UHVibGljS2V5
KHgsIHkpLCB0cnVlLCBDcnlwdG9LZXlVc2FnZURlcml2ZUJpdHMpOworICAgIGlmICghcGVlcktl
eSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgIHJldHVybiBLZXlBZ3JlZW1l
bnRSZXNwb25zZShwZWVyS2V5LnJlbGVhc2VOb25OdWxsKCkpOworfQorCitjYm9yOjpDQk9SVmFs
dWU6Ok1hcFZhbHVlIGVuY29kZUNPU0VQdWJsaWNLZXkoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBy
YXdQdWJsaWNLZXkpCit7CisgICAgQVNTRVJUKHJhd1B1YmxpY0tleS5zaXplKCkgPT0gNjUpOwor
ICAgIFZlY3Rvcjx1aW50OF90PiB4OworICAgIHguYXBwZW5kKHJhd1B1YmxpY0tleS5kYXRhKCkg
KyAxLCBFUzI1NkZpZWxkRWxlbWVudExlbmd0aCk7CisgICAgVmVjdG9yPHVpbnQ4X3Q+IHk7Cisg
ICAgeS5hcHBlbmQocmF3UHVibGljS2V5LmRhdGEoKSArIDEgKyBFUzI1NkZpZWxkRWxlbWVudExl
bmd0aCwgRVMyNTZGaWVsZEVsZW1lbnRMZW5ndGgpOworCisgICAgY2Jvcjo6Q0JPUlZhbHVlOjpN
YXBWYWx1ZSBwdWJsaWNLZXlNYXA7CisgICAgcHVibGljS2V5TWFwW2Nib3I6OkNCT1JWYWx1ZShD
T1NFOjprdHkpXSA9IGNib3I6OkNCT1JWYWx1ZShDT1NFOjpFQzIpOworICAgIHB1YmxpY0tleU1h
cFtjYm9yOjpDQk9SVmFsdWUoQ09TRTo6YWxnKV0gPSBjYm9yOjpDQk9SVmFsdWUoQ09TRTo6RUNE
SDI1Nik7CisgICAgcHVibGljS2V5TWFwW2Nib3I6OkNCT1JWYWx1ZShDT1NFOjpjcnYpXSA9IGNi
b3I6OkNCT1JWYWx1ZShDT1NFOjpQXzI1Nik7CisgICAgcHVibGljS2V5TWFwW2Nib3I6OkNCT1JW
YWx1ZShDT1NFOjp4KV0gPSBjYm9yOjpDQk9SVmFsdWUoV1RGTW92ZSh4KSk7CisgICAgcHVibGlj
S2V5TWFwW2Nib3I6OkNCT1JWYWx1ZShDT1NFOjp5KV0gPSBjYm9yOjpDQk9SVmFsdWUoV1RGTW92
ZSh5KSk7CisKKyAgICByZXR1cm4gcHVibGljS2V5TWFwOworfQorCitUb2tlblJlc3BvbnNlOjpU
b2tlblJlc3BvbnNlKFJlZjxXZWJDb3JlOjpDcnlwdG9LZXlITUFDPiYmIHRva2VuKQorICAgIDog
bV90b2tlbihXVEZNb3ZlKHRva2VuKSkKK3sKK30KKworT3B0aW9uYWw8VG9rZW5SZXNwb25zZT4g
VG9rZW5SZXNwb25zZTo6cGFyc2UoY29uc3QgV2ViQ29yZTo6Q3J5cHRvS2V5QUVTJiBzaGFyZWRL
ZXksIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgaW5CdWZmZXIpCit7CisgICAgLy8gRklYTUUoMjA1
Mzc1KQorICAgIGlmIChpbkJ1ZmZlci5zaXplKCkgPD0ga1Jlc3BvbnNlQ29kZUxlbmd0aCB8fCBn
ZXRSZXNwb25zZUNvZGUoaW5CdWZmZXIpICE9IEN0YXBEZXZpY2VSZXNwb25zZUNvZGU6OmtTdWNj
ZXNzKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgVmVjdG9yPHVpbnQ4X3Q+
IGJ1ZmZlcjsKKyAgICBidWZmZXIuYXBwZW5kKGluQnVmZmVyLmRhdGEoKSArIDEsIGluQnVmZmVy
LnNpemUoKSAtIDEpOworICAgIGF1dG8gZGVjb2RlZFJlc3BvbnNlID0gY2Jvcjo6Q0JPUlJlYWRl
cjo6cmVhZChidWZmZXIpOworICAgIGlmICghZGVjb2RlZFJlc3BvbnNlIHx8ICFkZWNvZGVkUmVz
cG9uc2UtPmlzTWFwKCkpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgY29uc3Qg
YXV0byYgcmVzcG9uc2VNYXAgPSBkZWNvZGVkUmVzcG9uc2UtPmdldE1hcCgpOworCisgICAgYXV0
byBpdCA9IHJlc3BvbnNlTWFwLmZpbmQoQ0JPUlZhbHVlKHN0YXRpY19jYXN0PGludD4oUmVzcG9u
c2VLZXk6OmtQaW5Ub2tlbikpKTsKKyAgICBpZiAoaXQgPT0gcmVzcG9uc2VNYXAuZW5kKCkgfHwg
IWl0LT5zZWNvbmQuaXNCeXRlU3RyaW5nKCkpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CisgICAgY29uc3QgYXV0byYgZW5jcnlwdGVkVG9rZW4gPSBpdC0+c2Vjb25kLmdldEJ5dGVTdHJp
bmcoKTsKKworICAgIGF1dG8gdG9rZW5SZXN1bHQgPSBDcnlwdG9BbGdvcml0aG1BRVNfQ0JDOjpw
bGF0Zm9ybURlY3J5cHQoeyB9LCBzaGFyZWRLZXksIGVuY3J5cHRlZFRva2VuKTsKKyAgICBpZiAo
dG9rZW5SZXN1bHQuaGFzRXhjZXB0aW9uKCkpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CisgICAgYXV0byB0b2tlbiA9IHRva2VuUmVzdWx0LnJlbGVhc2VSZXR1cm5WYWx1ZSgpOworCisg
ICAgYXV0byB0b2tlbktleSA9IENyeXB0b0tleUhNQUM6OmltcG9ydFJhdyh0b2tlbi5zaXplKCkg
KiA4LCBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpTSEFfMjU2LCBXVEZNb3ZlKHRva2VuKSwg
dHJ1ZSwgQ3J5cHRvS2V5VXNhZ2VTaWduKTsKKyAgICBBU1NFUlQodG9rZW5LZXkpOworCisgICAg
cmV0dXJuIFRva2VuUmVzcG9uc2UodG9rZW5LZXkucmVsZWFzZU5vbk51bGwoKSk7Cit9CisKK1Zl
Y3Rvcjx1aW50OF90PiBUb2tlblJlc3BvbnNlOjpwaW5BdXRoKGNvbnN0IFZlY3Rvcjx1aW50OF90
PiYgY2xpZW50RGF0YUhhc2gpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1ha2VQaW5BdXRoKG1fdG9r
ZW4sIGNsaWVudERhdGFIYXNoKTsKK30KKworY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBUb2tlblJl
c3BvbnNlOjp0b2tlbigpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fdG9rZW4tPmtleSgpOworfQor
CisvLyBzdGF0aWMKK1ZlY3Rvcjx1aW50OF90PiBlbmNvZGVBc0NCT1IoY29uc3QgUmV0cmllc1Jl
cXVlc3QmKQoreworICAgIHJldHVybiBlbmNvZGVQaW5Db21tYW5kKFN1YmNvbW1hbmQ6OmtHZXRS
ZXRyaWVzKTsKK30KKworLy8gc3RhdGljCitWZWN0b3I8dWludDhfdD4gZW5jb2RlQXNDQk9SKGNv
bnN0IEtleUFncmVlbWVudFJlcXVlc3QmKQoreworICAgIHJldHVybiBlbmNvZGVQaW5Db21tYW5k
KFN1YmNvbW1hbmQ6OmtHZXRLZXlBZ3JlZW1lbnQpOworfQorCitPcHRpb25hbDxUb2tlblJlcXVl
c3Q+IFRva2VuUmVxdWVzdDo6dHJ5Q3JlYXRlKGNvbnN0IENTdHJpbmcmIHBpbiwgY29uc3QgQ3J5
cHRvS2V5RUMmIHBlZXJLZXkpCit7CisgICAgLy8gVGhlIGZvbGxvd2luZyBpbXBsZW1lbnRzIFNl
Y3Rpb24gNS41LjQgR2V0dGluZyBzaGFyZWRTZWNyZXQgZnJvbSBBdXRoZW50aWNhdG9yLgorICAg
IC8vIGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9zcGVjcy9maWRvLXYyLjAtcHMtMjAxOTAxMzAv
Zmlkby1jbGllbnQtdG8tYXV0aGVudGljYXRvci1wcm90b2NvbC12Mi4wLXBzLTIwMTkwMTMwLmh0
bWwjZ2V0dGluZ1NoYXJlZFNlY3JldAorICAgIC8vIDEuIEdlbmVyYXRlIGEgUDI1NiBrZXkgcGFp
ci4KKyAgICBhdXRvIGtleVBhaXJSZXN1bHQgPSBDcnlwdG9LZXlFQzo6Z2VuZXJhdGVQYWlyKENy
eXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OkVDREgsICJQLTI1NiIsIHRydWUsIENyeXB0b0tleVVz
YWdlRGVyaXZlQml0cyk7CisgICAgQVNTRVJUKCFrZXlQYWlyUmVzdWx0Lmhhc0V4Y2VwdGlvbigp
KTsKKyAgICBhdXRvIGtleVBhaXIgPSBrZXlQYWlyUmVzdWx0LnJlbGVhc2VSZXR1cm5WYWx1ZSgp
OworCisgICAgLy8gMi4gVXNlIEVDREggdG8gY29tcHV0ZSB0aGUgc2hhcmVkIEFFUy1DQkMga2V5
LgorICAgIGF1dG8gc2hhcmVkS2V5UmVzdWx0ID0gQ3J5cHRvQWxnb3JpdGhtRUNESDo6cGxhdGZv
cm1EZXJpdmVCaXRzKGRvd25jYXN0PENyeXB0b0tleUVDPigqa2V5UGFpci5wcml2YXRlS2V5KSwg
cGVlcktleSk7CisgICAgaWYgKCFzaGFyZWRLZXlSZXN1bHQpCisgICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisgICAgYXV0byBzaGFyZWRLZXkgPSBDcnlwdG9LZXlBRVM6OmltcG9ydFJhdyhD
cnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpBRVNfQ0JDLCBXVEZNb3ZlKCpzaGFyZWRLZXlSZXN1
bHQpLCB0cnVlLCBDcnlwdG9LZXlVc2FnZUVuY3J5cHQgfCBDcnlwdG9LZXlVc2FnZURlY3J5cHQp
OworICAgIEFTU0VSVChzaGFyZWRLZXkpOworCisgICAgLy8gVGhlIGZvbGxvd2luZyBlbmNvZGVz
IHRoZSBwdWJsaWMga2V5IG9mIHRoZSBhYm92ZSBrZXkgcGFpciBpbnRvIENPU0UgZm9ybWF0Lgor
ICAgIGF1dG8gcmF3UHVibGljS2V5UmVzdWx0ID0gZG93bmNhc3Q8Q3J5cHRvS2V5RUM+KCprZXlQ
YWlyLnB1YmxpY0tleSkuZXhwb3J0UmF3KCk7CisgICAgQVNTRVJUKCFyYXdQdWJsaWNLZXlSZXN1
bHQuaGFzRXhjZXB0aW9uKCkpOworICAgIGF1dG8gY29zZUtleSA9IGVuY29kZUNPU0VQdWJsaWNL
ZXkocmF3UHVibGljS2V5UmVzdWx0LnJldHVyblZhbHVlKCkpOworCisgICAgLy8gVGhlIGZvbGxv
d2luZyBjYWxjdWxhdGVzIGEgU0hBLTI1NiBkaWdlc3Qgb2YgdGhlIFBJTiwgYW5kIHNocmluayB0
byB0aGUgbGVmdCAxNiBieXRlcy4KKyAgICBhdXRvIGNyeXB0byA9IFBBTDo6Q3J5cHRvRGlnZXN0
OjpjcmVhdGUoUEFMOjpDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzI1Nik7CisgICAgY3J5
cHRvLT5hZGRCeXRlcyhwaW4uZGF0YSgpLCBwaW4ubGVuZ3RoKCkpOworICAgIGF1dG8gcGluSGFz
aCA9IGNyeXB0by0+Y29tcHV0ZUhhc2goKTsKKyAgICBwaW5IYXNoLnNocmluaygxNik7CisKKyAg
ICByZXR1cm4gVG9rZW5SZXF1ZXN0KHNoYXJlZEtleS5yZWxlYXNlTm9uTnVsbCgpLCBXVEZNb3Zl
KGNvc2VLZXkpLCBXVEZNb3ZlKHBpbkhhc2gpKTsKK30KKworVG9rZW5SZXF1ZXN0OjpUb2tlblJl
cXVlc3QoUmVmPFdlYkNvcmU6OkNyeXB0b0tleUFFUz4mJiBzaGFyZWRLZXksIGNib3I6OkNCT1JW
YWx1ZTo6TWFwVmFsdWUmJiBjb3NlS2V5LCBWZWN0b3I8dWludDhfdD4mJiBwaW5IYXNoKQorICAg
IDogbV9zaGFyZWRLZXkoV1RGTW92ZShzaGFyZWRLZXkpKQorICAgICwgbV9jb3NlS2V5KFdURk1v
dmUoY29zZUtleSkpCisgICAgLCBtX3Bpbkhhc2goV1RGTW92ZShwaW5IYXNoKSkKK3sKK30KKwor
Y29uc3QgQ3J5cHRvS2V5QUVTJiBUb2tlblJlcXVlc3Q6OnNoYXJlZEtleSgpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIG1fc2hhcmVkS2V5OworfQorCisvLyBzdGF0aWMKK1ZlY3Rvcjx1aW50OF90PiBl
bmNvZGVBc0NCT1IoY29uc3QgVG9rZW5SZXF1ZXN0JiByZXF1ZXN0KQoreworICAgIGF1dG8gcmVz
dWx0ID0gQ3J5cHRvQWxnb3JpdGhtQUVTX0NCQzo6cGxhdGZvcm1FbmNyeXB0KHsgfSwgcmVxdWVz
dC5zaGFyZWRLZXkoKSwgcmVxdWVzdC5tX3Bpbkhhc2gpOworICAgIEFTU0VSVCghcmVzdWx0Lmhh
c0V4Y2VwdGlvbigpKTsKKworICAgIHJldHVybiBlbmNvZGVQaW5Db21tYW5kKFN1YmNvbW1hbmQ6
OmtHZXRQaW5Ub2tlbiwgW2Nvc2VLZXkgPSBXVEZNb3ZlKHJlcXVlc3QubV9jb3NlS2V5KSwgZW5j
cnlwdGVkUGluID0gcmVzdWx0LnJlbGVhc2VSZXR1cm5WYWx1ZSgpXSAoQ0JPUlZhbHVlOjpNYXBW
YWx1ZSogbWFwKSBtdXRhYmxlIHsKKyAgICAgICAgbWFwLT5lbXBsYWNlKHN0YXRpY19jYXN0PGlu
dD4oUmVxdWVzdEtleTo6a0tleUFncmVlbWVudCksIFdURk1vdmUoY29zZUtleSkpOworICAgICAg
ICBtYXAtPmVtcGxhY2Uoc3RhdGljX2Nhc3Q8aW50PihSZXF1ZXN0S2V5OjprUGluSGFzaEVuYyks
IFdURk1vdmUoZW5jcnlwdGVkUGluKSk7CisgICAgfSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIHBp
bgorfSAvLyBuYW1lc3BhY2UgZmlkbworCisjZW5kaWYgLy8gRU5BQkxFKFdFQl9BVVRITikKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vZmlkby9QaW4uaCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vZmlkby9QaW4uaApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45NGFh
NTY0NDQ2MmZlNjM0MTU1ODM2ZDMwYjc2MTM2OTM3MzM1ZmE1Ci0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9maWRvL1Bpbi5oCkBAIC0wLDAgKzEsMTg3
IEBACisvLyBDb3B5cmlnaHQgMjAxOSBUaGUgQ2hyb21pdW0gQXV0aG9ycy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKy8vIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisvLworLy8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisvLyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisvLyBtZXQ6CisvLwor
Ly8gICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorLy8gbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorLy8gICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisvLyBjb3B5cmlnaHQgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisvLyBpbiB0
aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
CisvLyBkaXN0cmlidXRpb24uCisvLyAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIElu
Yy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKy8vIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBl
bmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisvLyB0aGlzIHNvZnR3YXJl
IHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorLy8KKy8vIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklC
VVRPUlMKKy8vICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKy8vIEEgUEFSVElDVUxBUiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisvLyBP
V05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwKKy8vIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorLy8gREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
CisvLyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisvLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKy8vIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKy8vIFRo
aXMgZmlsZSBjb250YWlucyBzdHJ1Y3R1cmVzIHRvIGltcGxlbWVudCB0aGUgQ1RBUDIgUElOIHBy
b3RvY29sLCB2ZXJzaW9uCisvLyBvbmUuIFNlZQorLy8gaHR0cHM6Ly9maWRvYWxsaWFuY2Uub3Jn
L3NwZWNzL2ZpZG8tdjIuMC1yZC0yMDE4MDcwMi9maWRvLWNsaWVudC10by1hdXRoZW50aWNhdG9y
LXByb3RvY29sLXYyLjAtcmQtMjAxODA3MDIuaHRtbCNhdXRoZW50aWNhdG9yQ2xpZW50UElOCisK
KyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKFdFQl9BVVRITikKKworI2luY2x1ZGUgIkNCT1JW
YWx1ZS5oIgorI2luY2x1ZGUgIkZpZG9Db25zdGFudHMuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUg
eworY2xhc3MgQ3J5cHRvS2V5QUVTOworY2xhc3MgQ3J5cHRvS2V5RUM7CitjbGFzcyBDcnlwdG9L
ZXlITUFDOworfQorCituYW1lc3BhY2UgZmlkbyB7CituYW1lc3BhY2UgcGluIHsKKworLy8gU3Vi
Y29tbWFuZCBlbnVtZXJhdGVzIHRoZSBzdWJjb21tYW5kcyB0byB0aGUgbWFpbiB8YXV0aGVudGlj
YXRvckNsaWVudFBJTnwKKy8vIGNvbW1hbmQuIFNlZQorLy8gaHR0cHM6Ly9maWRvYWxsaWFuY2Uu
b3JnL3NwZWNzL2ZpZG8tdjIuMC1yZC0yMDE4MDcwMi9maWRvLWNsaWVudC10by1hdXRoZW50aWNh
dG9yLXByb3RvY29sLXYyLjAtcmQtMjAxODA3MDIuaHRtbCNhdXRoZW50aWNhdG9yQ2xpZW50UElO
CitlbnVtIGNsYXNzIFN1YmNvbW1hbmQgOiB1aW50OF90IHsKKyAgICBrR2V0UmV0cmllcyA9IDB4
MDEsCisgICAga0dldEtleUFncmVlbWVudCA9IDB4MDIsCisgICAga1NldFBpbiA9IDB4MDMsCisg
ICAga0NoYW5nZVBpbiA9IDB4MDQsCisgICAga0dldFBpblRva2VuID0gMHgwNSwKK307CisKKy8v
IFJlcXVlc3RLZXkgZW51bWVyYXRlcyB0aGUga2V5cyBpbiB0aGUgdG9wLWxldmVsIENCT1IgbWFw
IGZvciBhbGwgUElOCisvLyBjb21tYW5kcy4KK2VudW0gY2xhc3MgUmVxdWVzdEtleSA6IGludCB7
CisgICAga1Byb3RvY29sID0gMSwKKyAgICBrU3ViY29tbWFuZCA9IDIsCisgICAga0tleUFncmVl
bWVudCA9IDMsCisgICAga1BpbkF1dGggPSA0LAorICAgIGtOZXdQaW5FbmMgPSA1LAorICAgIGtQ
aW5IYXNoRW5jID0gNiwKK307CisKKy8vIFJlc3BvbnNlS2V5IGVudW1lcmF0ZXMgdGhlIGtleXMg
aW4gdGhlIHRvcC1sZXZlbCBDQk9SIG1hcCBmb3IgYWxsIFBJTgorLy8gcmVzcG9uc2VzLgorZW51
bSBjbGFzcyBSZXNwb25zZUtleSA6IGludCB7CisgICAga0tleUFncmVlbWVudCA9IDEsCisgICAg
a1BpblRva2VuID0gMiwKKyAgICBrUmV0cmllcyA9IDMsCit9OworCisvLyBrUHJvdG9jb2xWZXJz
aW9uIGlzIHRoZSB2ZXJzaW9uIG9mIHRoZSBQSU4gcHJvdG9jb2wgdGhhdCB0aGlzIGNvZGUKKy8v
IGltcGxlbWVudHMuCitjb25zdGV4cHIgaW50IGtQcm90b2NvbFZlcnNpb24gPSAxOworCisvLyBl
bmNvZGVDT1NFUHVibGljS2V5IHRha2VzIGEgcmF3IEVDREgyNTYgcHVibGljIGtleSBhbmQgcmV0
dXJucyBpdCBhcyBhIENPU0Ugc3RydWN0dXJlLgorV0VCQ09SRV9FWFBPUlQgY2Jvcjo6Q0JPUlZh
bHVlOjpNYXBWYWx1ZSBlbmNvZGVDT1NFUHVibGljS2V5KGNvbnN0IFZlY3Rvcjx1aW50OF90PiYg
a2V5KTsKKworLy8gZW5jb2RlUmF3UHVibGljS2V5IHRha2VzIFggJiBZIGFuZCByZXR1cm5zIHRo
ZW0gYXMgYSAweDA0IHx8IFggfHwgWSBieXRlIGFycmF5LgorV0VCQ09SRV9FWFBPUlQgVmVjdG9y
PHVpbnQ4X3Q+IGVuY29kZVJhd1B1YmxpY0tleShjb25zdCBWZWN0b3I8dWludDhfdD4mIFgsIGNv
bnN0IFZlY3Rvcjx1aW50OF90PiYgWSk7CisKKy8vIHZhbGlkYXRlQW5kQ29udmVydFRvVVRGOCBj
b252ZXJ0IHRoZSBpbnB1dCB0byBhIFVURjggQ1N0cmluZyBpZiBpdCBpcyBhIHN5bnRhY3RpY2Fs
bHkgdmFsaWQgUElOLgorV0VCQ09SRV9FWFBPUlQgT3B0aW9uYWw8Q1N0cmluZz4gdmFsaWRhdGVB
bmRDb252ZXJ0VG9VVEY4KGNvbnN0IFN0cmluZyYgcGluKTsKKworLy8ga01pbkJ5dGVzIGlzIHRo
ZSBtaW5pbXVtIG51bWJlciBvZiAqYnl0ZXMqIG9mIFBJTiBkYXRhIHRoYXQgYSBDVEFQMiBkZXZp
Y2UKKy8vIHdpbGwgYWNjZXB0LiBTaW5jZSB0aGUgUElOIGlzIFVURi04IGVuY29kZWQsIHRoaXMg
Y291bGQgYmUgYSBzaW5nbGUgY29kZQorLy8gcG9pbnQuIEhvd2V2ZXIsIHRoZSBwbGF0Zm9ybSBp
cyBzdXBwb3NlZCB0byBhZGRpdGlvbmFsbHkgZW5mb3JjZSBhIDQKKy8vICpjaGFyYWN0ZXIqIG1p
bmltdW0KK2NvbnN0ZXhwciBzaXplX3Qga01pbkJ5dGVzID0gNDsKKy8vIGtNYXhCeXRlcyBpcyB0
aGUgbWF4aW11bSBudW1iZXIgb2YgYnl0ZXMgb2YgUElOIGRhdGEgdGhhdCBhIENUQVAyIGRldmlj
ZSB3aWxsCisvLyBhY2NlcHQuCitjb25zdGV4cHIgc2l6ZV90IGtNYXhCeXRlcyA9IDYzOworCisv
LyBSZXRyaWVzUmVxdWVzdCBhc2tzIGFuIGF1dGhlbnRpY2F0b3IgZm9yIHRoZSBudW1iZXIgb2Yg
cmVtYWluaW5nIFBJTiBhdHRlbXB0cworLy8gYmVmb3JlIHRoZSBkZXZpY2UgaXMgbG9ja2VkLgor
c3RydWN0IFJldHJpZXNSZXF1ZXN0IHsKK307CisKKy8vIFJldHJpZXNSZXNwb25zZSByZWZsZWN0
cyBhbiBhdXRoZW50aWNhdG9yJ3MgcmVzcG9uc2UgdG8gYSB8UmV0cmllc1JlcXVlc3R8Lgorc3Ry
dWN0IFJldHJpZXNSZXNwb25zZSB7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIE9wdGlvbmFs
PFJldHJpZXNSZXNwb25zZT4gcGFyc2UoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+Jik7CisKKyAgICAv
LyByZXRyaWVzIGlzIHRoZSBudW1iZXIgb2YgUElOIGF0dGVtcHRzIHJlbWFpbmluZyBiZWZvcmUg
dGhlIGF1dGhlbnRpY2F0b3IKKyAgICAvLyBsb2Nrcy4KKyAgICBpbnQgcmV0cmllczsKKworcHJp
dmF0ZToKKyAgICBSZXRyaWVzUmVzcG9uc2UoKTsKK307CisKKy8vIEtleUFncmVlbWVudFJlcXVl
c3QgYXNrcyBhbiBhdXRoZW50aWNhdG9yIGZvciBhbiBlcGhlbWVyYWwgRUNESCBrZXkgZm9yCisv
LyBlbmNyeXB0aW5nIFBJTiBtYXRlcmlhbCBpbiBmdXR1cmUgcmVxdWVzdHMuCitzdHJ1Y3QgS2V5
QWdyZWVtZW50UmVxdWVzdCB7Cit9OworCisvLyBLZXlBZ3JlZW1lbnRSZXNwb25zZSByZWZsZWN0
cyBhbiBhdXRoZW50aWNhdG9yJ3MgcmVzcG9uc2UgdG8gYQorLy8gfEtleUFncmVlbWVudFJlcXVl
c3R8IGFuZCBpcyBhbHNvIHVzZWQgYXMgcmVwcmVzZW50YXRpb24gb2YgdGhlCisvLyBhdXRoZW50
aWNhdG9yJ3MgZXBoZW1lcmFsIGtleS4KK3N0cnVjdCBLZXlBZ3JlZW1lbnRSZXNwb25zZSB7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIE9wdGlvbmFsPEtleUFncmVlbWVudFJlc3BvbnNlPiBw
YXJzZShjb25zdCBWZWN0b3I8dWludDhfdD4mKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMg
T3B0aW9uYWw8S2V5QWdyZWVtZW50UmVzcG9uc2U+IHBhcnNlRnJvbUNPU0UoY29uc3QgY2Jvcjo6
Q0JPUlZhbHVlOjpNYXBWYWx1ZSYpOworCisgICAgUmVmPFdlYkNvcmU6OkNyeXB0b0tleUVDPiBw
ZWVyS2V5OworCitwcml2YXRlOgorICAgIGV4cGxpY2l0IEtleUFncmVlbWVudFJlc3BvbnNlKFJl
ZjxXZWJDb3JlOjpDcnlwdG9LZXlFQz4mJik7Cit9OworCisvLyBUb2tlblJlcXVlc3QgcmVxdWVz
dHMgYSBwaW4tdG9rZW4gZnJvbSBhbiBhdXRoZW50aWNhdG9yLiBUaGVzZSB0b2tlbnMgY2FuIGJl
CisvLyB1c2VkIHRvIHNob3cgdXNlci12ZXJpZmljYXRpb24gaW4gb3RoZXIgb3BlcmF0aW9ucywg
ZS5nLiB3aGVuIGdldHRpbmcgYW4KKy8vIGFzc2VydGlvbi4KK2NsYXNzIFRva2VuUmVxdWVzdCB7
CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoVG9rZW5SZXF1ZXN0KTsKK3B1YmxpYzoKKyAgICBX
RUJDT1JFX0VYUE9SVCBzdGF0aWMgT3B0aW9uYWw8VG9rZW5SZXF1ZXN0PiB0cnlDcmVhdGUoY29u
c3QgQ1N0cmluZyYgcGluLCBjb25zdCBXZWJDb3JlOjpDcnlwdG9LZXlFQyYpOworICAgIFRva2Vu
UmVxdWVzdChUb2tlblJlcXVlc3QmJikgPSBkZWZhdWx0OworCisgICAgLy8gc2hhcmVkS2V5IHJl
dHVybnMgdGhlIHNoYXJlZCBFQ0RIIGtleSB0aGF0IHdhcyB1c2VkIHRvIGVuY3J5cHQgdGhlIFBJ
Ti4KKyAgICAvLyBUaGlzIGlzIG5lZWRlZCB0byBkZWNyeXB0IHRoZSByZXNwb25zZS4KKyAgICBj
b25zdCBXZWJDb3JlOjpDcnlwdG9LZXlBRVMmIHNoYXJlZEtleSgpIGNvbnN0OworCisgICAgZnJp
ZW5kIFZlY3Rvcjx1aW50OF90PiBlbmNvZGVBc0NCT1IoY29uc3QgVG9rZW5SZXF1ZXN0Jik7CisK
K3ByaXZhdGU6CisgICAgVG9rZW5SZXF1ZXN0KFJlZjxXZWJDb3JlOjpDcnlwdG9LZXlBRVM+JiYg
c2hhcmVkS2V5LCBjYm9yOjpDQk9SVmFsdWU6Ok1hcFZhbHVlJiYgY29zZUtleSwgVmVjdG9yPHVp
bnQ4X3Q+JiYgcGluSGFzaCk7CisKKyAgICBSZWY8V2ViQ29yZTo6Q3J5cHRvS2V5QUVTPiBtX3No
YXJlZEtleTsKKyAgICBtdXRhYmxlIGNib3I6OkNCT1JWYWx1ZTo6TWFwVmFsdWUgbV9jb3NlS2V5
OworICAgIFZlY3Rvcjx1aW50OF90PiBtX3Bpbkhhc2g7IC8vIE9ubHkgdGhlIGxlZnQgMTYgYnl0
ZXMgYXJlIGtlcHQuCit9OworCisvLyBUb2tlblJlc3BvbnNlIHJlcHJlc2VudHMgdGhlIHJlc3Bv
bnNlIHRvIGEgcGluLXRva2VuIHJlcXVlc3QuIEluIG9yZGVyIHRvCisvLyBkZWNyeXB0IGEgcmVz
cG9uc2UsIHRoZSBzaGFyZWQga2V5IGZyb20gdGhlIHJlcXVlc3QgaXMgbmVlZGVkLiBPbmNlIGEg
cGluLQorLy8gdG9rZW4gaGFzIGJlZW4gZGVjcnlwdGVkLCBpdCBjYW4gYmUgdXNlZCB0byBjYWxj
dWxhdGUgdGhlIHBpbkF1dGggcGFyYW1ldGVycworLy8gbmVlZGVkIHRvIHNob3cgdXNlci12ZXJp
ZmljYXRpb24gaW4gZnV0dXJlIG9wZXJhdGlvbnMuCitjbGFzcyBUb2tlblJlc3BvbnNlIHsKK3B1
YmxpYzoKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgT3B0aW9uYWw8VG9rZW5SZXNwb25zZT4g
cGFyc2UoY29uc3QgV2ViQ29yZTo6Q3J5cHRvS2V5QUVTJiBzaGFyZWRLZXksIGNvbnN0IFZlY3Rv
cjx1aW50OF90PiYgaW5CdWZmZXIpOworCisgICAgLy8gcGluQXV0aCByZXR1cm5zIGEgcGluQXV0
aCBwYXJhbWV0ZXIgZm9yIGEgcmVxdWVzdCB0aGF0IHdpbGwgdXNlIHRoZSBnaXZlbgorICAgIC8v
IGNsaWVudC1kYXRhIGhhc2guCisgICAgV0VCQ09SRV9FWFBPUlQgVmVjdG9yPHVpbnQ4X3Q+IHBp
bkF1dGgoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBjbGllbnREYXRhSGFzaCkgY29uc3Q7CisKKyAg
ICBXRUJDT1JFX0VYUE9SVCBjb25zdCBWZWN0b3I8dWludDhfdD4mIHRva2VuKCkgY29uc3Q7CisK
K3ByaXZhdGU6CisgICAgZXhwbGljaXQgVG9rZW5SZXNwb25zZShSZWY8V2ViQ29yZTo6Q3J5cHRv
S2V5SE1BQz4mJik7CisKKyAgICBSZWY8V2ViQ29yZTo6Q3J5cHRvS2V5SE1BQz4gbV90b2tlbjsK
K307CisKK1dFQkNPUkVfRVhQT1JUIFZlY3Rvcjx1aW50OF90PiBlbmNvZGVBc0NCT1IoY29uc3Qg
UmV0cmllc1JlcXVlc3QmKTsKK1dFQkNPUkVfRVhQT1JUIFZlY3Rvcjx1aW50OF90PiBlbmNvZGVB
c0NCT1IoY29uc3QgS2V5QWdyZWVtZW50UmVxdWVzdCYpOworV0VCQ09SRV9FWFBPUlQgVmVjdG9y
PHVpbnQ4X3Q+IGVuY29kZUFzQ0JPUihjb25zdCBUb2tlblJlcXVlc3QmKTsKKworfSAvLyBuYW1l
c3BhY2UgcGluCit9IC8vIG5hbWVzcGFjZSBmaWRvCisKKyNlbmRpZiAvLyBFTkFCTEUoV0VCX0FV
VEhOKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQgYi9Tb3VyY2UvV2Vi
Q29yZS9Tb3VyY2VzLnR4dAppbmRleCBlN2ExOGIzMDg3YzA1MjhiZTU5ZWI2ODYwZTg5M2NhZjBi
Nzg3MDdiLi4wYjY1MTNhN2NlODEzYmU1OWE5ODI4OGVhZGUxNGQyZTQ2ZjBiYjIxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Tb3Vy
Y2VzLnR4dApAQCAtMjg2LDYgKzI4Niw3IEBAIE1vZHVsZXMvd2ViYXV0aG4vZmlkby9GaWRvQ29u
c3RhbnRzLmNwcAogTW9kdWxlcy93ZWJhdXRobi9maWRvL0ZpZG9IaWRNZXNzYWdlLmNwcAogTW9k
dWxlcy93ZWJhdXRobi9maWRvL0ZpZG9IaWRQYWNrZXQuY3BwCiBNb2R1bGVzL3dlYmF1dGhuL2Zp
ZG8vRmlkb1BhcnNpbmdVdGlscy5jcHAKK01vZHVsZXMvd2ViYXV0aG4vZmlkby9QaW4uY3BwCiBN
b2R1bGVzL3dlYmF1dGhuL2ZpZG8vVTJmQ29tbWFuZENvbnN0cnVjdG9yLmNwcAogTW9kdWxlcy93
ZWJhdXRobi9maWRvL1UyZlJlc3BvbnNlQ29udmVydGVyLmNwcAogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggZmZkNWU1NzY0NjUw
YWVmMzYwNWVhMGQ0ZjkxNzMwYTEyMTdkZGQzYi4uM2Q4YTQ3ZDRiNTU1NWNjMmQ0MmFjMDVkZTY2
MWQ5ODA0Yzk5MmRkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagpAQCAtMTc1OSw5ICsxNzU5LDEwIEBACiAJCTU3MTU2MTE0MjM0QzdG
RDYwMDhGQzdBQiAvKiBKU01vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24uY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTcxNTYxMTEyMzRD
N0ZCQzAwOEZDN0FCIC8qIEpTTW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbi5jcHAg
Ki87IH07CiAJCTU3MTU2MTE1MjM0QzdGREMwMDhGQzdBQiAvKiBKU01vY2tXZWJBdXRoZW50aWNh
dGlvbkNvbmZpZ3VyYXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDU3MTU2MTEwMjM0QzdGQkMwMDhGQzdBQiAvKiBKU01vY2tXZWJBdXRoZW50aWNh
dGlvbkNvbmZpZ3VyYXRpb24uaCAqLzsgfTsKIAkJNTcxRjIxODkxREE1N0M1NDAwNUM5RUZEIC8q
IEpTU3VidGxlQ3J5cHRvLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA1NzFGMjE4ODFEQTU3QzU0MDA1QzlFRkQgLyogSlNTdWJ0bGVDcnlwdG8uaCAqLzsg
fTsKLQkJNTcyMDkzRDMxRERDRUI5QTAwMzEwQUIwIC8qIENyeXB0b0FsZ29yaXRobUFlc0NiY0Nm
YlBhcmFtcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NTcyMDkzRDIxRERDRUI5QTAwMzEwQUIwIC8qIENyeXB0b0FsZ29yaXRobUFlc0NiY0NmYlBhcmFt
cy5oICovOyB9OworCQk1NzIwOTNEMzFERENFQjlBMDAzMTBBQjAgLyogQ3J5cHRvQWxnb3JpdGht
QWVzQ2JjQ2ZiUGFyYW1zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA1NzIwOTNEMjFERENFQjlBMDAzMTBBQjAgLyogQ3J5cHRvQWxnb3JpdGhtQWVzQ2Jj
Q2ZiUGFyYW1zLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJNTcyMUE5ODcxRUNFNTNCMTAwODEyOTVBIC8qIENyeXB0b0RpZ2VzdEFsZ29yaXRobS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTcyMUE5ODYx
RUNFNTNCMTAwODEyOTVBIC8qIENyeXB0b0RpZ2VzdEFsZ29yaXRobS5oICovOyB9OwogCQk1NzIx
QTk4QjFFQ0U1NzA0MDA4MTI5NUEgLyogQ3J5cHRvQWxnb3JpdGhtUnNhUHNzUGFyYW1zLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NzIxQTk4ODFFQ0U1
NzA0MDA4MTI5NUEgLyogQ3J5cHRvQWxnb3JpdGhtUnNhUHNzUGFyYW1zLmggKi87IH07CisJCTU3
MjU3NkQ2MjNBODg3MkIwMDkwOTU0MCAvKiBDcnlwdG9LZXlGb3JtYXQuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDOUFDQUM5MUY0MEI5NkEwMEYzQUEw
OSAvKiBDcnlwdG9LZXlGb3JtYXQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQk1NzJBN0YyMTFDNkU1NzE5MDA5QzYxNDkgLyogU2ltdWxhdGVkQ2xp
Y2suaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3MkE3
RjIwMUM2RTU3MTkwMDlDNjE0OSAvKiBTaW11bGF0ZWRDbGljay5oICovOyB9OwogCQk1NzJCNDAx
RjIxNzU3QTY0MDAwQUQ0M0UgLyogRGV2aWNlUmVxdWVzdENvbnZlcnRlci5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTcyQjQwMUQyMTc1N0E2NDAwMEFE
NDNFIC8qIERldmljZVJlcXVlc3RDb252ZXJ0ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1NzJCNDAyQzIxNzY5MDIwMDAwQUQ0M0UgLyogSlNV
c2VyVmVyaWZpY2F0aW9uUmVxdWlyZW1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDU3MkI0MDJBMjE3NjkwMUYwMDBBRDQzRSAvKiBKU1VzZXJWZXJp
ZmljYXRpb25SZXF1aXJlbWVudC5oICovOyB9OwpAQCAtMTc4OCwxOCArMTc4OSwxOSBAQAogCQk1
NzMwM0MyQzIwMDlCNEE4MDAzNTU5NjUgLyogQXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNl
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NzMwM0My
NzIwMDlCMkZDMDAzNTU5NjUgLyogQXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTczMDNDMkYy
MDA5QjdFMTAwMzU1OTY1IC8qIEpTQXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NzMwM0MyRDIwMDlC
N0Q5MDAzNTU5NjUgLyogSlNBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2UuaCAqLzsgfTsK
IAkJNTczMDNDNDYyMDEwNUQyRjAwMzU1OTY1IC8qIEF1dGhlbnRpY2F0b3JDb29yZGluYXRvci5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTczMDNDNDMy
MDEwNUIzRDAwMzU1OTY1IC8qIEF1dGhlbnRpY2F0b3JDb29yZGluYXRvci5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCTU3MzQ4OTM5MURBQzZCNkUw
MERDMDY2NyAvKiBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NzM0ODkzODFEQUM2QjZEMDBEQzA2NjcgLyog
Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycy5oICovOyB9OworCQk1NzM0ODkzOTFEQUM2QjZFMDBE
QzA2NjcgLyogQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycy5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTczNDg5MzgxREFDNkI2RDAwREMwNjY3IC8qIENy
eXB0b0FsZ29yaXRobVBhcmFtZXRlcnMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQk1NzM5RTEyRjFEQUM3Rjc4MDBFMTQzODMgLyogSlNDcnlwdG9B
bGdvcml0aG1QYXJhbWV0ZXJzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA1NzM5RTEyRTFEQUM3Rjc4MDBFMTQzODMgLyogSlNDcnlwdG9BbGdvcml0aG1Q
YXJhbWV0ZXJzLmggKi87IH07CiAJCTU3M0Y1MzMyMjE2ODA2RTEwMDQ1NTg3QSAvKiBGaWRvSGlk
TWVzc2FnZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NTdCQUYyOEEyMTY3RDMwMzAwOEU5NTRFIC8qIEZpZG9IaWRNZXNzYWdlLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTczRjUzMzcyMTY4MEQxNTAw
NDU1ODdBIC8qIEZpZG9QYXJzaW5nVXRpbHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDU3M0Y1MzM1MjE2ODBEMTQwMDQ1NTg3QSAvKiBGaWRvUGFyc2lu
Z1V0aWxzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJNTc0RjU1RTEyMDRGM0IyMzAwMjk0OEM2IC8qIFdlYkF1dGhlbnRpY2F0aW9uQ29uc3RhbnRz
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NzRGNTVE
QzIwNEYzNzMyMDAyOTQ4QzYgLyogV2ViQXV0aGVudGljYXRpb25Db25zdGFudHMuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQk1NzUwQTk3NTFFNjhE
MDAwMDA3MDVDNEEgLyogQ3J5cHRvS2V5RUMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDU3NTBBOTczMUU2OEQwMDAwMDcwNUM0QSAvKiBDcnlwdG9LZXlF
Qy5oICovOyB9OworCQk1NzUwQTk3NTFFNjhEMDAwMDA3MDVDNEEgLyogQ3J5cHRvS2V5RUMuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3NTBBOTczMUU2
OEQwMDAwMDcwNUM0QSAvKiBDcnlwdG9LZXlFQy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCTU3NTBBOTdFMUU2QTEzRUYwMDcwNUM0QSAvKiBDcnlw
dG9BbGdvcml0aG1FY0tleVBhcmFtcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNTc1MEE5N0QxRTZBMTNFRjAwNzA1QzRBIC8qIENyeXB0b0FsZ29yaXRo
bUVjS2V5UGFyYW1zLmggKi87IH07CiAJCTU3NTBBOTgyMUU2QTE1MDgwMDcwNUM0QSAvKiBKU0Vj
S2V5UGFyYW1zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA1NzUwQTk4MDFFNkExNTA4MDA3MDVDNEEgLyogSlNFY0tleVBhcmFtcy5oICovOyB9OwotCQk1
NzUwQTk4NzFFNkEyMTY4MDA3MDVDNEEgLyogQ3J5cHRvQWxnb3JpdGhtRUNESC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTc1MEE5ODUxRTZBMjE2ODAw
NzA1QzRBIC8qIENyeXB0b0FsZ29yaXRobUVDREguaCAqLzsgfTsKKwkJNTc1MEE5ODcxRTZBMjE2
ODAwNzA1QzRBIC8qIENyeXB0b0FsZ29yaXRobUVDREguaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3NTBBOTg1MUU2QTIxNjgwMDcwNUM0QSAvKiBDcnlw
dG9BbGdvcml0aG1FQ0RILmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJNTc1NDcxOUYxRUNFNjI4MzAwREQ2M0IyIC8qIEpTUnNhUHNzUGFyYW1zLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NzU0NzE5OTFF
Q0U1RDJBMDBERDYzQjIgLyogSlNSc2FQc3NQYXJhbXMuaCAqLzsgfTsKIAkJNTc1ODU5NjEyMzlG
MTI0RDAwQzc0NTcyIC8qIEpTQXV0aGVudGljYXRpb25FeHRlbnNpb25zQ2xpZW50T3V0cHV0cy5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTc1ODU5NUUy
MzlGMTE3MzAwQzc0NTcyIC8qIEpTQXV0aGVudGljYXRpb25FeHRlbnNpb25zQ2xpZW50T3V0cHV0
cy5oICovOyB9OwogCQk1NzU4NTk2QzIzOUYzMjFDMDBDNzQ1NzIgLyogQXV0aGVudGljYXRpb25F
eHRlbnNpb25zQ2xpZW50T3V0cHV0cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNTc1ODU5NjUyMzlGMTRDQzAwQzc0NTcyIC8qIEF1dGhlbnRpY2F0aW9u
RXh0ZW5zaW9uc0NsaWVudE91dHB1dHMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OworCQk1NzU4NTk3QzIzQTFGQ0YzMDBDNzQ1NzIgLyogUGluLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NzU4NTk3OTIzQTFG
Q0YyMDBDNzQ1NzIgLyogUGluLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJNTc2MDgyNzIyMDIxNUE1NTAwMTE2Njc4IC8qIEF1dGhlbnRpY2F0b3JD
b29yZGluYXRvckNsaWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNTc2MDgyNzAyMDIxNTEzRjAwMTE2Njc4IC8qIEF1dGhlbnRpY2F0b3JDb29yZGlu
YXRvckNsaWVudC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCTU3NjgxNDJBMUU2Rjk5QzEwMEU3Nzc1NCAvKiBDcnlwdG9BbGdvcml0aG1FY2RoS2V5
RGVyaXZlUGFyYW1zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA1NzY4MTQyOTFFNkY5OUMxMDBFNzc3NTQgLyogQ3J5cHRvQWxnb3JpdGhtRWNkaEtleURl
cml2ZVBhcmFtcy5oICovOyB9OwogCQk1NzY4MTQ0MTFFNzA5RkE0MDBFNzc3NTQgLyogSlNFY2Ro
S2V5RGVyaXZlUGFyYW1zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA1NzY4MTQzRTFFNzA5QzM2MDBFNzc3NTQgLyogSlNFY2RoS2V5RGVyaXZlUGFyYW1z
LmggKi87IH07CkBAIC0xODM1LDggKzE4MzcsOCBAQAogCQk1N0UxRTVBRDFFOEREMDlCMDBFRTM3
QzkgLyogSlNBZXNDdHJQYXJhbXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDU3RTFFNUFCMUU4REQwOUIwMEVFMzdDOSAvKiBKU0Flc0N0clBhcmFtcy5o
ICovOyB9OwogCQk1N0UyMzM1QjFEQzdENUU1MDBGMjhEMDEgLyogSlNKc29uV2ViS2V5LmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1N0UyMzM1QTFEQzdE
NUU1MDBGMjhEMDEgLyogSlNKc29uV2ViS2V5LmggKi87IH07CiAJCTU3RTIzMzVEMURDN0Q2MDgw
MEYyOEQwMSAvKiBKU1JzYU90aGVyUHJpbWVzSW5mby5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTdFMjMzNUMxREM3RDYwODAwRjI4RDAxIC8qIEpTUnNh
T3RoZXJQcmltZXNJbmZvLmggKi87IH07Ci0JCTU3RTIzMzYzMURDN0RBMjQwMEYyOEQwMSAvKiBS
c2FPdGhlclByaW1lc0luZm8uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDU3RTIzMzYyMURDN0RBMjQwMEYyOEQwMSAvKiBSc2FPdGhlclByaW1lc0luZm8u
aCAqLzsgfTsKLQkJNTdFMjMzNjUxREM3REIxRjAwRjI4RDAxIC8qIEpzb25XZWJLZXkuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3RTIzMzY0MURDN0RC
MUYwMEYyOEQwMSAvKiBKc29uV2ViS2V5LmggKi87IH07CisJCTU3RTIzMzYzMURDN0RBMjQwMEYy
OEQwMSAvKiBSc2FPdGhlclByaW1lc0luZm8uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDU3RTIzMzYyMURDN0RBMjQwMEYyOEQwMSAvKiBSc2FPdGhlclBy
aW1lc0luZm8uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OworCQk1N0UyMzM2NTFEQzdEQjFGMDBGMjhEMDEgLyogSnNvbldlYktleS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTdFMjMzNjQxREM3REIxRjAwRjI4
RDAxIC8qIEpzb25XZWJLZXkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQk1N0UyMzM2NzFEQ0FCMjFDMDBGMjhEMDEgLyogSlNIbWFjS2V5UGFyYW1z
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1N0UyMzM2
NjFEQ0FCMjFDMDBGMjhEMDEgLyogSlNIbWFjS2V5UGFyYW1zLmggKi87IH07CiAJCTU3RTIzMzZF
MURDRDQzRkQwMEYyOEQwMSAvKiBDcnlwdG9BbGdvcml0aG1Sc2FIYXNoZWRJbXBvcnRQYXJhbXMu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3RTIzMzZE
MURDRDQzRkQwMEYyOEQwMSAvKiBDcnlwdG9BbGdvcml0aG1Sc2FIYXNoZWRJbXBvcnRQYXJhbXMu
aCAqLzsgfTsKIAkJNTdFMjMzNzExRENENDY4RjAwRjI4RDAxIC8qIEpTUnNhSGFzaGVkSW1wb3J0
UGFyYW1zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1
N0UyMzM3MDFEQ0Q0NjhGMDBGMjhEMDEgLyogSlNSc2FIYXNoZWRJbXBvcnRQYXJhbXMuaCAqLzsg
fTsKQEAgLTIyOTMsMTIgKzIyOTUsMTIgQEAKIAkJN0M4RTM0QzcxRTRBMzNCMDAwNTRDRTIzIC8q
IEpTRE9NQ29udmVydFhQYXRoTlNSZXNvbHZlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gN0M4RTM0QUMxRTRBMzM4RTAwNTRDRTIzIC8qIEpTRE9NQ29u
dmVydFhQYXRoTlNSZXNvbHZlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCTdDOTNGMzRBMUFBNkJBNUUwMEE5OEJBQiAvKiBDb21waWxlZENvbnRl
bnRFeHRlbnNpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDdDOTNGMzQ4MUFBNkJBNUUwMEE5OEJBQiAvKiBDb21waWxlZENvbnRlbnRFeHRlbnNpb24u
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3Qzkz
RjM0RTFBQTZCRjA3MDBBOThCQUIgLyogQ29udGVudEV4dGVuc2lvbkNvbXBpbGVyLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QzkzRjM0QzFBQTZCRjA3
MDBBOThCQUIgLyogQ29udGVudEV4dGVuc2lvbkNvbXBpbGVyLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJN0M5QUNBOTIxRjNDQzBBQTAwRjNBQTA5
IC8qIENyeXB0b0tleUFsZ29yaXRobS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gN0M5QUNBOEYxRjNDQzBBQTAwRjNBQTA5IC8qIENyeXB0b0tleUFsZ29y
aXRobS5oICovOyB9OwotCQk3QzlBQ0E5ODFGM0NDREFEMDBGM0FBMDkgLyogQ3J5cHRvQWVzS2V5
QWxnb3JpdGhtLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA3QzlBQ0E5NjFGM0NDREFEMDBGM0FBMDkgLyogQ3J5cHRvQWVzS2V5QWxnb3JpdGhtLmggKi87
IH07Ci0JCTdDOUFDQTlDMUYzQ0NERjIwMEYzQUEwOSAvKiBDcnlwdG9FY0tleUFsZ29yaXRobS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0M5QUNBOUEx
RjNDQ0RGMjAwRjNBQTA5IC8qIENyeXB0b0VjS2V5QWxnb3JpdGhtLmggKi87IH07Ci0JCTdDOUFD
QUEwMUYzQ0NFMzAwMEYzQUEwOSAvKiBDcnlwdG9IbWFjS2V5QWxnb3JpdGhtLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QzlBQ0E5RTFGM0NDRTMwMDBG
M0FBMDkgLyogQ3J5cHRvSG1hY0tleUFsZ29yaXRobS5oICovOyB9OwotCQk3QzlBQ0FBNDFGM0ND
RTY5MDBGM0FBMDkgLyogQ3J5cHRvUnNhS2V5QWxnb3JpdGhtLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QzlBQ0FBMjFGM0NDRTY5MDBGM0FBMDkgLyog
Q3J5cHRvUnNhS2V5QWxnb3JpdGhtLmggKi87IH07Ci0JCTdDOUFDQUE4MUYzQ0NFQjQwMEYzQUEw
OSAvKiBDcnlwdG9Sc2FIYXNoZWRLZXlBbGdvcml0aG0uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDOUFDQUE2MUYzQ0NFQjQwMEYzQUEwOSAvKiBDcnlw
dG9Sc2FIYXNoZWRLZXlBbGdvcml0aG0uaCAqLzsgfTsKKwkJN0M5QUNBOTIxRjNDQzBBQTAwRjNB
QTA5IC8qIENyeXB0b0tleUFsZ29yaXRobS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gN0M5QUNBOEYxRjNDQzBBQTAwRjNBQTA5IC8qIENyeXB0b0tleUFs
Z29yaXRobS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CisJCTdDOUFDQTk4MUYzQ0NEQUQwMEYzQUEwOSAvKiBDcnlwdG9BZXNLZXlBbGdvcml0aG0uaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDOUFDQTk2MUYz
Q0NEQUQwMEYzQUEwOSAvKiBDcnlwdG9BZXNLZXlBbGdvcml0aG0uaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk3QzlBQ0E5QzFGM0NDREYyMDBGM0FB
MDkgLyogQ3J5cHRvRWNLZXlBbGdvcml0aG0uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDdDOUFDQTlBMUYzQ0NERjIwMEYzQUEwOSAvKiBDcnlwdG9FY0tl
eUFsZ29yaXRobS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CisJCTdDOUFDQUEwMUYzQ0NFMzAwMEYzQUEwOSAvKiBDcnlwdG9IbWFjS2V5QWxnb3JpdGht
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QzlBQ0E5
RTFGM0NDRTMwMDBGM0FBMDkgLyogQ3J5cHRvSG1hY0tleUFsZ29yaXRobS5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTdDOUFDQUE0MUYzQ0NFNjkw
MEYzQUEwOSAvKiBDcnlwdG9Sc2FLZXlBbGdvcml0aG0uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDOUFDQUEyMUYzQ0NFNjkwMEYzQUEwOSAvKiBDcnlw
dG9Sc2FLZXlBbGdvcml0aG0uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OworCQk3QzlBQ0FBODFGM0NDRUI0MDBGM0FBMDkgLyogQ3J5cHRvUnNhSGFzaGVk
S2V5QWxnb3JpdGhtLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA3QzlBQ0FBNjFGM0NDRUI0MDBGM0FBMDkgLyogQ3J5cHRvUnNhSGFzaGVkS2V5QWxnb3Jp
dGhtLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
N0M5QUNBQjgxRjNDRjFBRTAwRjNBQTA5IC8qIEpTQ3J5cHRvQWVzS2V5QWxnb3JpdGhtLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QzlBQ0FBQTFGM0NE
QjYzMDBGM0FBMDkgLyogSlNDcnlwdG9BZXNLZXlBbGdvcml0aG0uaCAqLzsgfTsKIAkJN0M5QUNB
QkExRjNDRjFBRTAwRjNBQTA5IC8qIEpTQ3J5cHRvRWNLZXlBbGdvcml0aG0uaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDOUFDQUFDMUYzQ0RCOUQwMEYz
QUEwOSAvKiBKU0NyeXB0b0VjS2V5QWxnb3JpdGhtLmggKi87IH07CiAJCTdDOUFDQUJDMUYzQ0Yx
QUUwMEYzQUEwOSAvKiBKU0NyeXB0b0htYWNLZXlBbGdvcml0aG0uaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDOUFDQUFGMUYzQ0RCOUYwMEYzQUEwOSAv
KiBKU0NyeXB0b0htYWNLZXlBbGdvcml0aG0uaCAqLzsgfTsKQEAgLTQ2OTEsOSArNDY5Myw5IEBA
CiAJCUUxMjQ3NDg0MTBBQTE2MUQwMEI3OTQ5MyAvKiBBdXRoZW50aWNhdGlvbkNsaWVudC5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTEyNDc0ODMxMEFB
MTYxRDAwQjc5NDkzIC8qIEF1dGhlbnRpY2F0aW9uQ2xpZW50LmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTEyNUY4MkMxODIyQ0ZFQzAwRDg0Q0Q5
IC8qIENyeXB0b0FsZ29yaXRobVNIQTEuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEUxMjVGODJBMTgyMkNGRUMwMEQ4NENEOSAvKiBDcnlwdG9BbGdvcml0
aG1TSEExLmggKi87IH07CiAJCUUxMjVGODMyMTgyMkYxMUIwMEQ4NENEOSAvKiBDcnlwdG9BbGdv
cml0aG1ITUFDLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBFMTI1RjgzMDE4MjJGMTFCMDBEODRDRDkgLyogQ3J5cHRvQWxnb3JpdGhtSE1BQy5oICovOyB9
OwotCQlFMTI1RjgzNjE4MjJGMThBMDBEODRDRDkgLyogQ3J5cHRvS2V5SE1BQy5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTEyNUY4MzQxODIyRjE4QTAw
RDg0Q0Q5IC8qIENyeXB0b0tleUhNQUMuaCAqLzsgfTsKLQkJRTEyNUY4NDIxODI0MjUzQTAwRDg0
Q0Q5IC8qIENyeXB0b0FsZ29yaXRobUFFU19DQkMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxMjVGODQwMTgyNDI1M0EwMEQ4NENEOSAvKiBDcnlwdG9B
bGdvcml0aG1BRVNfQ0JDLmggKi87IH07Ci0JCUUxMjVGODRFMTgyNDI4OUQwMEQ4NENEOSAvKiBD
cnlwdG9LZXlBRVMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEUxMjVGODRDMTgyNDI4OUQwMEQ4NENEOSAvKiBDcnlwdG9LZXlBRVMuaCAqLzsgfTsKKwkJ
RTEyNUY4MzYxODIyRjE4QTAwRDg0Q0Q5IC8qIENyeXB0b0tleUhNQUMuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxMjVGODM0MTgyMkYxOEEwMEQ4NENE
OSAvKiBDcnlwdG9LZXlITUFDLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKKwkJRTEyNUY4NDIxODI0MjUzQTAwRDg0Q0Q5IC8qIENyeXB0b0FsZ29yaXRo
bUFFU19DQkMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEUxMjVGODQwMTgyNDI1M0EwMEQ4NENEOSAvKiBDcnlwdG9BbGdvcml0aG1BRVNfQ0JDLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJRTEyNUY4NEUx
ODI0Mjg5RDAwRDg0Q0Q5IC8qIENyeXB0b0tleUFFUy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTEyNUY4NEMxODI0Mjg5RDAwRDg0Q0Q5IC8qIENyeXB0
b0tleUFFUy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCUUxMjcxOUM3MEVFRUMxNjgwMEY2MTIxMyAvKiBOYXZpZ2F0b3JCYXNlLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMTI3MTlDNjBFRUVDMTY4MDBG
NjEyMTMgLyogTmF2aWdhdG9yQmFzZS5oICovOyB9OwogCQlFMTI3MUEwQjBFRUVDNzdBMDBGNjEy
MTMgLyogV29ya2VyTmF2aWdhdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBFMTI3MUEwQTBFRUVDNzdBMDBGNjEyMTMgLyogV29ya2VyTmF2aWdhdG9y
LmggKi87IH07CiAJCUUxMjcxQTU4MEVFRUNERTQwMEY2MTIxMyAvKiBKU1dvcmtlck5hdmlnYXRv
ci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTEyNzFB
NTYwRUVFQ0RFNDAwRjYxMjEzIC8qIEpTV29ya2VyTmF2aWdhdG9yLmggKi87IH07CkBAIC00NzA4
LDcgKzQ3MTAsNyBAQAogCQlFMTRGMUM0NTE0QjVEQUM2MDBFQTkwMDkgLyogSFRNTEZvcm1Db250
cm9sRWxlbWVudFdpdGhTdGF0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gRTE0RjFDNDMxNEI1REFDNjAwRUE5MDA5IC8qIEhUTUxGb3JtQ29udHJvbEVs
ZW1lbnRXaXRoU3RhdGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQlFMTUyNTUxNTE2RkQyMzUwMDAzRDdBREIgLyogV2ViQ29yZVJlc291cmNlSGFu
ZGxlQXNPcGVyYXRpb25RdWV1ZURlbGVnYXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBFMTUyNTUxMzE2RkQyMzRGMDAzRDdBREIgLyogV2ViQ29yZVJl
c291cmNlSGFuZGxlQXNPcGVyYXRpb25RdWV1ZURlbGVnYXRlLmggKi87IH07CiAJCUUxNTdBOEUx
MTgxNzMzMUMwMDlGODIxRCAvKiBKU0NyeXB0b0tleS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTE1N0E4REYxODE3MzMxQzAwOUY4MjFEIC8qIEpTQ3J5
cHRvS2V5LmggKi87IH07Ci0JCUUxNTdBOEU1MTgxNzNBM0EwMDlGODIxRCAvKiBDcnlwdG9LZXku
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxNTdBOEUz
MTgxNzNBM0EwMDlGODIxRCAvKiBDcnlwdG9LZXkuaCAqLzsgfTsKKwkJRTE1N0E4RTUxODE3M0Ez
QTAwOUY4MjFEIC8qIENyeXB0b0tleS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gRTE1N0E4RTMxODE3M0EzQTAwOUY4MjFEIC8qIENyeXB0b0tleS5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUUxNUEzNkQ3
MTEwNDU3MjAwMEI3QjYzOSAvKiBYTUxOU05hbWVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMTVBMzZENjExMDQ1NzIwMDBCN0I2MzkgLyogWE1MTlNO
YW1lcy5oICovOyB9OwogCQlFMTVBMzZEOTExMDQ1NzI3MDBCN0I2MzkgLyogWE1MTlNOYW1lcy5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMTVBMzZE
ODExMDQ1NzI3MDBCN0I2MzkgLyogWE1MTlNOYW1lcy5jcHAgKi87IH07CiAJCUUxNUZGN0Q1MThD
OTU1MzgwMEZFNEM4NyAvKiBLZXlwcmVzc0NvbW1hbmQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxNUZGN0Q0MThDOTU1MzgwMEZFNEM4NyAvKiBLZXlw
cmVzc0NvbW1hbmQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwpAQCAtNDcxNyw4ICs0NzE5LDggQEAKIAkJRTE2OTgyNTUxMTM0NjI5RDAwODk0MTE1IC8q
IE9iakNSdW50aW1lT2JqZWN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBFMTY5ODI1NDExMzQ2MjlEMDA4OTQxMTUgLyogT2JqQ1J1bnRpbWVPYmplY3Qu
aCAqLzsgfTsKIAkJRTE2OTgyNjAxMTM0NjM2QTAwODk0MTE1IC8qIE9iakNSdW50aW1lT2JqZWN0
Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTE2OTgy
NUYxMTM0NjM2QTAwODk0MTE1IC8qIE9iakNSdW50aW1lT2JqZWN0Lm1tICovOyB9OwogCQlFMTZB
ODRGQTE0Qzg1Q0NDMDAyOTc3REYgLyogQ1NTQm9yZGVySW1hZ2UuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxNkE4NEY4MTRDODVDQ0MwMDI5NzdERiAv
KiBDU1NCb3JkZXJJbWFnZS5oICovOyB9OwotCQlFMTcyQUY2RTE4MEYyNEM2MDBGQkFEQjkgLyog
Q3J5cHRvQWxnb3JpdGhtLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBFMTcyQUY2QzE4MEYyNEM2MDBGQkFEQjkgLyogQ3J5cHRvQWxnb3JpdGhtLmggKi87
IH07Ci0JCUUxNzJBRjcwMTgwRjI4OTUwMEZCQURCOSAvKiBDcnlwdG9LZXlVc2FnZS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTE3MkFGNkYxODBGMjg5
NTAwRkJBREI5IC8qIENyeXB0b0tleVVzYWdlLmggKi87IH07CisJCUUxNzJBRjZFMTgwRjI0QzYw
MEZCQURCOSAvKiBDcnlwdG9BbGdvcml0aG0uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEUxNzJBRjZDMTgwRjI0QzYwMEZCQURCOSAvKiBDcnlwdG9BbGdv
cml0aG0uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owor
CQlFMTcyQUY3MDE4MEYyODk1MDBGQkFEQjkgLyogQ3J5cHRvS2V5VXNhZ2UuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxNzJBRjZGMTgwRjI4OTUwMEZC
QURCOSAvKiBDcnlwdG9LZXlVc2FnZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCUUxNzJBRjkwMTgxMUJDMzcwMEZCQURCOSAvKiBKU0RPTVByb21p
c2VEZWZlcnJlZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRTE3MkFGOEUxODExQkMzNzAwRkJBREI5IC8qIEpTRE9NUHJvbWlzZURlZmVycmVkLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTE3OUYwREEx
Qjk3NzRGRTAwRUQwQTI3IC8qIEludGVybmFscy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxNzlGMEQ5MUI5Nzc0RkUwMEVEMEEyNyAvKiBJbnRlcm5h
bHMubW0gKi87IH07CiAJCUUxN0I0OTE2MTZBOUIwOTQwMDFDODgzOSAvKiBUcmFuc2l0aW9uRXZl
bnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxN0I0
OTE0MTZBOUIwOTMwMDFDODgzOSAvKiBUcmFuc2l0aW9uRXZlbnQuaCAqLzsgfTsKQEAgLTQ3MzEs
NyArNDczMyw3IEBACiAJCUUxODgyMzY2MjAzMUY1OTQwMEI0MkRGMyAvKiBWUlBsYXRmb3JtTWFu
YWdlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTE4
ODIzNjEyMDMxRjU1QjAwQjQyREYzIC8qIFZSUGxhdGZvcm1NYW5hZ2VyLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTE4QzM1NDQxRjcxOTcwQzAw
RkY2MzJEIC8qIFdlYkFyY2hpdmVSZXNvdXJjZVdlYlJlc291cmNlSGFuZGxlci5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTE4QzM1NDExRjcxOTZDRDAw
RkY2MzJEIC8qIFdlYkFyY2hpdmVSZXNvdXJjZVdlYlJlc291cmNlSGFuZGxlci5oICovOyB9Owog
CQlFMThERjMzNTE4QUFGMTJDMDA3NzNFNTkgLyogU2VyaWFsaXplZENyeXB0b0tleVdyYXAuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxOERGMzM0MThB
QUYxMkMwMDc3M0U1OSAvKiBTZXJpYWxpemVkQ3J5cHRvS2V5V3JhcC5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCUUxOTcyNzE2MTgyMDU0OUUwMDU5
MkQ1MSAvKiBDcnlwdG9LZXlUeXBlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBFMTk3MjcxNTE4MjA1NDlFMDA1OTJENTEgLyogQ3J5cHRvS2V5VHlwZS5o
ICovOyB9OworCQlFMTk3MjcxNjE4MjA1NDlFMDA1OTJENTEgLyogQ3J5cHRvS2V5VHlwZS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTE5NzI3MTUxODIw
NTQ5RTAwNTkyRDUxIC8qIENyeXB0b0tleVR5cGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFMTlBQzNFRjE4MjREQzc5MDAzNDk0MjYgLyogQ3J5
cHRvQWxnb3JpdGhtU0hBMjI0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBFMTlBQzNFNzE4MjREQzc5MDAzNDk0MjYgLyogQ3J5cHRvQWxnb3JpdGhtU0hB
MjI0LmggKi87IH07CiAJCUUxOUFDM0YxMTgyNERDNzkwMDM0OTQyNiAvKiBDcnlwdG9BbGdvcml0
aG1TSEEyNTYuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEUxOUFDM0U5MTgyNERDNzkwMDM0OTQyNiAvKiBDcnlwdG9BbGdvcml0aG1TSEEyNTYuaCAqLzsg
fTsKIAkJRTE5QUMzRjMxODI0REM3OTAwMzQ5NDI2IC8qIENyeXB0b0FsZ29yaXRobVNIQTM4NC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTE5QUMzRUIx
ODI0REM3OTAwMzQ5NDI2IC8qIENyeXB0b0FsZ29yaXRobVNIQTM4NC5oICovOyB9OwpAQCAtNDc1
NSw3ICs0NzU3LDcgQEAKIAkJRTFDNDE1REEwRjY1NUQ2RjAwOTJEMkZCIC8qIENyb3NzT3JpZ2lu
UHJlZmxpZ2h0UmVzdWx0Q2FjaGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEUxQzQxNUQ5MEY2NTVENkYwMDkyRDJGQiAvKiBDcm9zc09yaWdpblByZWZs
aWdodFJlc3VsdENhY2hlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJRTFDNDE2MTIwRjY1NjJGRDAwOTJEMkZCIC8qIENyb3NzT3JpZ2luQWNjZXNz
Q29udHJvbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RTFDNDE2MTEwRjY1NjJGRDAwOTJEMkZCIC8qIENyb3NzT3JpZ2luQWNjZXNzQ29udHJvbC5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUUxQzRERTY5
MEVBNzVDMUUwMDIzQ0NENiAvKiBBY3RpdmVET01PYmplY3QuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxQzRERTY4MEVBNzVDMUUwMDIzQ0NENiAvKiBB
Y3RpdmVET01PYmplY3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwotCQlFMUM2NTcyNTE4MTZFNjlEMDAyNTZDREQgLyogQ3J5cHRvQWxnb3JpdGhtSWRl
bnRpZmllci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RTFDNjU3MjQxODE2RTY5RDAwMjU2Q0REIC8qIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXIuaCAq
LzsgfTsKKwkJRTFDNjU3MjUxODE2RTY5RDAwMjU2Q0REIC8qIENyeXB0b0FsZ29yaXRobUlkZW50
aWZpZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUx
QzY1NzI0MTgxNkU2OUQwMDI1NkNERCAvKiBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTFDOTRBRjkx
OTEzMDNGMDAwRDVBODkzIC8qIEJsb2JQYXJ0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBFMUM5NEFGNzE5MTMwM0YwMDBENUE4OTMgLyogQmxvYlBhcnQu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFMUNB
QTVDNjBFOEJEMjM2MDBBNzNFQ0EgLyogSlNXb3JrZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxQ0FBNUM1MEU4QkQyMzYwMEE3M0VDQSAvKiBKU1dv
cmtlci5oICovOyB9OwogCQlFMUNERTkyMjE1MDE5MTY5MDA4NjJDQzUgLyogQXN5bmNGaWxlU3Ry
ZWFtLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMUNE
RTkyMTE1MDE5MTY5MDA4NjJDQzUgLyogQXN5bmNGaWxlU3RyZWFtLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTQ3NjgsNyArNDc3MCw3IEBACiAJ
CUUxRjgwQjg4MTgzMTcyNTIwMDc4ODVDMyAvKiBDcnlwdG9LZXlQYWlyLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMUY4MEI4NjE4MzE3MjUyMDA3ODg1
QzMgLyogQ3J5cHRvS2V5UGFpci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCUUxRjgwQjhFMTgzMTcyQjUwMDc4ODVDMyAvKiBKU0NyeXB0b0tleVBh
aXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxRjgw
QjhDMTgzMTcyQjUwMDc4ODVDMyAvKiBKU0NyeXB0b0tleVBhaXIuaCAqLzsgfTsKIAkJRTFGRTEz
NkIxODNGRTFBQjAwODkyRjEzIC8qIENyeXB0b0FsZ29yaXRobVJTQV9PQUVQLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMUZFMTM2OTE4M0ZFMUFCMDA4
OTJGMTMgLyogQ3J5cHRvQWxnb3JpdGhtUlNBX09BRVAuaCAqLzsgfTsKLQkJRTFGRTEzNzUxODQw
MkE2NzAwODkyRjEzIC8qIENvbW1vbkNyeXB0b1V0aWxpdGllcy5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTFGRTEzNzMxODQwMkE2NzAwODkyRjEzIC8q
IENvbW1vbkNyeXB0b1V0aWxpdGllcy5oICovOyB9OworCQlFMUZFMTM3NTE4NDAyQTY3MDA4OTJG
MTMgLyogQ29tbW9uQ3J5cHRvVXRpbGl0aWVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBFMUZFMTM3MzE4NDAyQTY3MDA4OTJGMTMgLyogQ29tbW9uQ3J5
cHRvVXRpbGl0aWVzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJRTFGRTEzN0IxODREMjFCQjAwODkyRjEzIC8qIENyeXB0b0FsZ29yaXRobUFFU19L
Vy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTFGRTEz
NzkxODREMjFCQjAwODkyRjEzIC8qIENyeXB0b0FsZ29yaXRobUFFU19LVy5oICovOyB9OwogCQlF
MUZGNTdBMzBGMDEyNTVCMDA4OTFFQkIgLyogVGhyZWFkR2xvYmFsRGF0YS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTFGRjU3QTIwRjAxMjU1QjAwODkx
RUJCIC8qIFRocmVhZEdsb2JhbERhdGEuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQlFMUZGOEY2RDE4MERCNUJFMDAxMzI2NzQgLyogQ3J5cHRvQWxn
b3JpdGhtUmVnaXN0cnkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEUxRkY4RjZCMTgwREI1QkUwMDEzMjY3NCAvKiBDcnlwdG9BbGdvcml0aG1SZWdpc3Ry
eS5oICovOyB9OwpAQCAtODc5MSw2ICs4NzkzLDggQEAKIAkJNTc1ODU5NjkyMzlGMUVDNzAwQzc0
NTcyIC8qIEF1dGhlbnRpY2F0b3JSZXNwb25zZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBdXRo
ZW50aWNhdG9yUmVzcG9uc2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1NzU4
NTk2QjIzOUYyODRCMDBDNzQ1NzIgLyogQXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9uc2Uu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9uc2Uu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1NzU4NTk2RTIzOUYzOTc5MDBDNzQ1
NzIgLyogQXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IEF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTU3NTg1OTc4MjNBMUZDRTYwMEM3NDU3MiAvKiBQaW4uY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUGluLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJNTc1ODU5NzkyM0ExRkNGMjAwQzc0NTcyIC8qIFBpbi5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBQaW4uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNTc2MDgyNEYyMDExOEQ4RDAwMTE2Njc4IC8qIEpTQmFzaWNDcmVkZW50aWFsQ3VzdG9tLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTQmFzaWNDcmVkZW50aWFsQ3VzdG9tLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTc2MDgyNTYyMDExQkUwMjAwMTE2Njc4IC8qIEpTQXV0
aGVudGljYXRvclJlc3BvbnNlQ3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTQXV0aGVu
dGljYXRvclJlc3BvbnNlQ3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NTc2MDgyNzAyMDIxNTEzRjAwMTE2Njc4IC8qIEF1dGhlbnRpY2F0b3JDb29yZGluYXRvckNsaWVu
dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JDbGllbnQuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE5OTgyLDYgKzE5OTg2LDggQEAKIAkJCQk1NzhB
NEMwQTIxNjdEMjk2MDBEMDhGMzQgLyogRmlkb0hpZFBhY2tldC5oICovLAogCQkJCTU3M0Y1MzM2
MjE2ODBEMTUwMDQ1NTg3QSAvKiBGaWRvUGFyc2luZ1V0aWxzLmNwcCAqLywKIAkJCQk1NzNGNTMz
NTIxNjgwRDE0MDA0NTU4N0EgLyogRmlkb1BhcnNpbmdVdGlscy5oICovLAorCQkJCTU3NTg1OTc4
MjNBMUZDRTYwMEM3NDU3MiAvKiBQaW4uY3BwICovLAorCQkJCTU3NTg1OTc5MjNBMUZDRjIwMEM3
NDU3MiAvKiBQaW4uaCAqLywKIAkJCQk1NzE1MkI2QTIxQ0Q5OTVDMDAwQzM3Q0EgLyogVTJmQ29t
bWFuZENvbnN0cnVjdG9yLmNwcCAqLywKIAkJCQk1NzE1MkI2QzIxQ0Q5OTVDMDAwQzM3Q0EgLyog
VTJmQ29tbWFuZENvbnN0cnVjdG9yLmggKi8sCiAJCQkJNTcxNTJCN0IyMUREOEJBMTAwMEMzN0NB
IC8qIFUyZlJlc3BvbnNlQ29udmVydGVyLmNwcCAqLywKQEAgLTI5NDAwLDYgKzI5NDA2LDcgQEAK
IAkJCQlFMTI1Rjg0RTE4MjQyODlEMDBEODRDRDkgLyogQ3J5cHRvS2V5QUVTLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk3QzlBQ0E5MjFGM0NDMEFBMDBGM0FBMDkgLyogQ3J5cHRvS2V5QWxnb3JpdGht
LmggaW4gSGVhZGVycyAqLywKIAkJCQk1NzUwQTk3NTFFNjhEMDAwMDA3MDVDNEEgLyogQ3J5cHRv
S2V5RUMuaCBpbiBIZWFkZXJzICovLAorCQkJCTU3MjU3NkQ2MjNBODg3MkIwMDkwOTU0MCAvKiBD
cnlwdG9LZXlGb3JtYXQuaCBpbiBIZWFkZXJzICovLAogCQkJCUUxMjVGODM2MTgyMkYxOEEwMEQ4
NENEOSAvKiBDcnlwdG9LZXlITUFDLmggaW4gSGVhZGVycyAqLywKIAkJCQlFMUY4MEI4ODE4MzE3
MjUyMDA3ODg1QzMgLyogQ3J5cHRvS2V5UGFpci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTdFNjU3
REYxRTcxMzczQTAwRjk0MUNBIC8qIENyeXB0b0tleVJhdy5oIGluIEhlYWRlcnMgKi8sCkBAIC0z
MTcwMSw2ICszMTcwOCw3IEBACiAJCQkJMURCQzFCNTYyMzQ3QjNEMjAwQjkwMUFGIC8qIFBpY3R1
cmVJblBpY3R1cmVPYnNlcnZlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUQyQzgyQjcyMzZBM0Y2
QTAwNTVENkM1IC8qIFBpY3R1cmVJblBpY3R1cmVTdXBwb3J0LmggaW4gSGVhZGVycyAqLywKIAkJ
CQkxRDJGOEUwNjIzNDQ3NTIzMDA5OTNCNjggLyogUGljdHVyZUluUGljdHVyZVdpbmRvdy5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJNTc1ODU5N0MyM0ExRkNGMzAwQzc0NTcyIC8qIFBpbi5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJRDBGRjJBNUUxMUY4QzQ1QTAwN0U3NEUwIC8qIFBpbmdMb2FkZXIuaCBp
biBIZWFkZXJzICovLAogCQkJCUNEN0QzMzQ0MUM3QTEyM0YwMDA0MTI5MyAvKiBQaXhlbEJ1ZmZl
ckNvbmZvcm1lckNWLmggaW4gSGVhZGVycyAqLywKIAkJCQlDREVGQTIyODFFNzY2OUU4MDAwQUU5
OUMgLyogUGxhdGZvcm1BdWRpb0RhdGEuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvY3J5cHRvL0NyeXB0b0FsZ29yaXRobS5oIGIvU291cmNlL1dlYkNvcmUvY3J5
cHRvL0NyeXB0b0FsZ29yaXRobS5oCmluZGV4IDhmNDUwNjMyNjAxMzI2M2MxZDM4M2IwNzIxYzQx
ZTAyYWU0NGQ5ODMuLmEyZTczYWQ1NWRlYjU4MDhjOWFjNzcyNTcyYWE2YjBiODk1NGZkYTggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9DcnlwdG9BbGdvcml0aG0uaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9jcnlwdG8vQ3J5cHRvQWxnb3JpdGhtLmgKQEAgLTMxLDcgKzMxLDYgQEAK
ICNpbmNsdWRlICJDcnlwdG9LZXlVc2FnZS5oIgogI2luY2x1ZGUgIkV4Y2VwdGlvbk9yLmgiCiAj
aW5jbHVkZSAiSnNvbldlYktleS5oIgotI2luY2x1ZGUgIlN1YnRsZUNyeXB0by5oIgogI2luY2x1
ZGUgPHd0Zi9GdW5jdGlvbi5oPgogI2luY2x1ZGUgPHd0Zi9UaHJlYWRTYWZlUmVmQ291bnRlZC5o
PgogI2luY2x1ZGUgPHd0Zi9WYXJpYW50Lmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9j
cnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1BRVNfQ0JDLmggYi9Tb3VyY2UvV2ViQ29y
ZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1BRVNfQ0JDLmgKaW5kZXggYjJiMDQz
ZGE2ZWExZDBiZmI0MGRkY2M0Mjg2NDI4MmFhNWIwNTQ5ZS4uZmQ5ODkxMmI3MGRjMGI1MWQxYjk4
NzkwNjY0ZDcyYjQ2ZTM0MjhmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2Fs
Z29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtQUVTX0NCQy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Ny
eXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobUFFU19DQkMuaApAQCAtNDAsNiArNDAsMTAg
QEAgcHVibGljOgogICAgIHN0YXRpYyBjb25zdGV4cHIgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmll
ciBzX2lkZW50aWZpZXIgPSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpBRVNfQ0JDOwogICAg
IHN0YXRpYyBSZWY8Q3J5cHRvQWxnb3JpdGhtPiBjcmVhdGUoKTsKIAorICAgIC8vIE9wZXJhdGlv
bnMgY2FuIGJlIHBlcmZvcm1lZCBkaXJlY3RseS4KKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMg
RXhjZXB0aW9uT3I8VmVjdG9yPHVpbnQ4X3Q+PiBwbGF0Zm9ybUVuY3J5cHQoY29uc3QgQ3J5cHRv
QWxnb3JpdGhtQWVzQ2JjQ2ZiUGFyYW1zJiwgY29uc3QgQ3J5cHRvS2V5QUVTJiwgY29uc3QgVmVj
dG9yPHVpbnQ4X3Q+Jik7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIEV4Y2VwdGlvbk9yPFZl
Y3Rvcjx1aW50OF90Pj4gcGxhdGZvcm1EZWNyeXB0KGNvbnN0IENyeXB0b0FsZ29yaXRobUFlc0Ni
Y0NmYlBhcmFtcyYsIGNvbnN0IENyeXB0b0tleUFFUyYsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYp
OworCiBwcml2YXRlOgogICAgIENyeXB0b0FsZ29yaXRobUFFU19DQkMoKSA9IGRlZmF1bHQ7CiAg
ICAgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllciBpZGVudGlmaWVyKCkgY29uc3QgZmluYWw7CkBA
IC01MCw5ICs1NCw2IEBAIHByaXZhdGU6CiAgICAgdm9pZCBpbXBvcnRLZXkoQ3J5cHRvS2V5Rm9y
bWF0LCBLZXlEYXRhJiYsIGNvbnN0IENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnMmLCBib29sIGV4
dHJhY3RhYmxlLCBDcnlwdG9LZXlVc2FnZUJpdG1hcCwgS2V5Q2FsbGJhY2smJiwgRXhjZXB0aW9u
Q2FsbGJhY2smJikgZmluYWw7CiAgICAgdm9pZCBleHBvcnRLZXkoQ3J5cHRvS2V5Rm9ybWF0LCBS
ZWY8Q3J5cHRvS2V5PiYmLCBLZXlEYXRhQ2FsbGJhY2smJiwgRXhjZXB0aW9uQ2FsbGJhY2smJikg
ZmluYWw7CiAgICAgRXhjZXB0aW9uT3I8c2l6ZV90PiBnZXRLZXlMZW5ndGgoY29uc3QgQ3J5cHRv
QWxnb3JpdGhtUGFyYW1ldGVycyYpIGZpbmFsOwotCi0gICAgc3RhdGljIEV4Y2VwdGlvbk9yPFZl
Y3Rvcjx1aW50OF90Pj4gcGxhdGZvcm1FbmNyeXB0KGNvbnN0IENyeXB0b0FsZ29yaXRobUFlc0Ni
Y0NmYlBhcmFtcyYsIGNvbnN0IENyeXB0b0tleUFFUyYsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYp
OwotICAgIHN0YXRpYyBFeGNlcHRpb25PcjxWZWN0b3I8dWludDhfdD4+IHBsYXRmb3JtRGVjcnlw
dChjb25zdCBDcnlwdG9BbGdvcml0aG1BZXNDYmNDZmJQYXJhbXMmLCBjb25zdCBDcnlwdG9LZXlB
RVMmLCBjb25zdCBWZWN0b3I8dWludDhfdD4mKTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0Fs
Z29yaXRobUVDREguaCBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0Fs
Z29yaXRobUVDREguaAppbmRleCA3ODM5MWM5MjdlOGE1MTUzYTBjMDkwMThjNjZjOWM3OGNlMDk5
ODIzLi4xNGUzNzI3YjdhNzAzOGRiMjQ0NGRkZjVmNzUyYTdiNDU2NDRkNjVhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1FQ0RILmgK
KysrIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtRUNE
SC5oCkBAIC0zOSw2ICszOSw5IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3RleHByIENyeXB0
b0FsZ29yaXRobUlkZW50aWZpZXIgc19pZGVudGlmaWVyID0gQ3J5cHRvQWxnb3JpdGhtSWRlbnRp
Zmllcjo6RUNESDsKICAgICBzdGF0aWMgUmVmPENyeXB0b0FsZ29yaXRobT4gY3JlYXRlKCk7CiAK
KyAgICAvLyBPcGVyYXRpb25zIGNhbiBiZSBwZXJmb3JtZWQgZGlyZWN0bHkuCisgICAgV0VCQ09S
RV9FWFBPUlQgc3RhdGljIE9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gcGxhdGZvcm1EZXJpdmVC
aXRzKGNvbnN0IENyeXB0b0tleUVDJiwgY29uc3QgQ3J5cHRvS2V5RUMmKTsKKwogcHJpdmF0ZToK
ICAgICBDcnlwdG9BbGdvcml0aG1FQ0RIKCkgPSBkZWZhdWx0OwogICAgIENyeXB0b0FsZ29yaXRo
bUlkZW50aWZpZXIgaWRlbnRpZmllcigpIGNvbnN0IGZpbmFsOwpAQCAtNDcsOCArNTAsNiBAQCBw
cml2YXRlOgogICAgIHZvaWQgZGVyaXZlQml0cyhjb25zdCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0
ZXJzJiwgUmVmPENyeXB0b0tleT4mJiwgc2l6ZV90IGxlbmd0aCwgVmVjdG9yQ2FsbGJhY2smJiwg
RXhjZXB0aW9uQ2FsbGJhY2smJiwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIFdvcmtRdWV1ZSYp
IGZpbmFsOwogICAgIHZvaWQgaW1wb3J0S2V5KENyeXB0b0tleUZvcm1hdCwgS2V5RGF0YSYmLCBj
b25zdCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzJiwgYm9vbCBleHRyYWN0YWJsZSwgQ3J5cHRv
S2V5VXNhZ2VCaXRtYXAsIEtleUNhbGxiYWNrJiYsIEV4Y2VwdGlvbkNhbGxiYWNrJiYpIGZpbmFs
OwogICAgIHZvaWQgZXhwb3J0S2V5KENyeXB0b0tleUZvcm1hdCwgUmVmPENyeXB0b0tleT4mJiwg
S2V5RGF0YUNhbGxiYWNrJiYsIEV4Y2VwdGlvbkNhbGxiYWNrJiYpIGZpbmFsOwotCi0gICAgc3Rh
dGljIE9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gcGxhdGZvcm1EZXJpdmVCaXRzKGNvbnN0IENy
eXB0b0tleUVDJiwgY29uc3QgQ3J5cHRvS2V5RUMmKTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0
b0FsZ29yaXRobUhNQUMuaCBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0
b0FsZ29yaXRobUhNQUMuaAppbmRleCBiYWI4OTljZjM0ZDFmNTA0ZThmOTc3YmZlMWE4MWM1OTI0
NGVhYWVmLi5mYThmMGFkZGNjZTEyOGYyNDcxNTE3M2ZhZmJmYTkyNzMyNTI1MGQzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1ITUFD
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGht
SE1BQy5oCkBAIC0zOSw2ICszOSwxMCBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGNvbnN0ZXhwciBD
cnlwdG9BbGdvcml0aG1JZGVudGlmaWVyIHNfaWRlbnRpZmllciA9IENyeXB0b0FsZ29yaXRobUlk
ZW50aWZpZXI6OkhNQUM7CiAgICAgc3RhdGljIFJlZjxDcnlwdG9BbGdvcml0aG0+IGNyZWF0ZSgp
OwogCisgICAgLy8gT3BlcmF0aW9ucyBjYW4gYmUgcGVyZm9ybWVkIGRpcmVjdGx5LgorICAgIHN0
YXRpYyBFeGNlcHRpb25PcjxWZWN0b3I8dWludDhfdD4+IHBsYXRmb3JtU2lnbihjb25zdCBDcnlw
dG9LZXlITUFDJiwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+Jik7CisgICAgc3RhdGljIEV4Y2VwdGlv
bk9yPGJvb2w+IHBsYXRmb3JtVmVyaWZ5KGNvbnN0IENyeXB0b0tleUhNQUMmLCBjb25zdCBWZWN0
b3I8dWludDhfdD4mLCBjb25zdCBWZWN0b3I8dWludDhfdD4mKTsKKwogcHJpdmF0ZToKICAgICBD
cnlwdG9BbGdvcml0aG1ITUFDKCkgPSBkZWZhdWx0OwogICAgIENyeXB0b0FsZ29yaXRobUlkZW50
aWZpZXIgaWRlbnRpZmllcigpIGNvbnN0IGZpbmFsOwpAQCAtNDksOSArNTMsNiBAQCBwcml2YXRl
OgogICAgIHZvaWQgaW1wb3J0S2V5KENyeXB0b0tleUZvcm1hdCwgS2V5RGF0YSYmLCBjb25zdCBD
cnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzJiwgYm9vbCBleHRyYWN0YWJsZSwgQ3J5cHRvS2V5VXNh
Z2VCaXRtYXAsIEtleUNhbGxiYWNrJiYsIEV4Y2VwdGlvbkNhbGxiYWNrJiYpIGZpbmFsOwogICAg
IHZvaWQgZXhwb3J0S2V5KENyeXB0b0tleUZvcm1hdCwgUmVmPENyeXB0b0tleT4mJiwgS2V5RGF0
YUNhbGxiYWNrJiYsIEV4Y2VwdGlvbkNhbGxiYWNrJiYpIGZpbmFsOwogICAgIEV4Y2VwdGlvbk9y
PHNpemVfdD4gZ2V0S2V5TGVuZ3RoKGNvbnN0IENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnMmKSBm
aW5hbDsKLQotICAgIHN0YXRpYyBFeGNlcHRpb25PcjxWZWN0b3I8dWludDhfdD4+IHBsYXRmb3Jt
U2lnbihjb25zdCBDcnlwdG9LZXlITUFDJiwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+Jik7Ci0gICAg
c3RhdGljIEV4Y2VwdGlvbk9yPGJvb2w+IHBsYXRmb3JtVmVyaWZ5KGNvbnN0IENyeXB0b0tleUhN
QUMmLCBjb25zdCBWZWN0b3I8dWludDhfdD4mLCBjb25zdCBWZWN0b3I8dWludDhfdD4mKTsKIH07
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Ny
eXB0by9rZXlzL0NyeXB0b0tleUFFUy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8va2V5cy9D
cnlwdG9LZXlBRVMuY3BwCmluZGV4IGVhNmU1MTNiNjc2N2Y2M2QwMTQ2OGY4MGQzYmY4MjdkYjlj
NjBhM2UuLjkxN2VlOWVmYWE4MmRhOTQzZTA5NTU5ZGY3ZTdiODU3YzcyNTNlMTUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9rZXlzL0NyeXB0b0tleUFFUy5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvY3J5cHRvL2tleXMvQ3J5cHRvS2V5QUVTLmNwcApAQCAtMjgsNiArMjgsNyBA
QAogCiAjaWYgRU5BQkxFKFdFQl9DUllQVE8pCiAKKyNpbmNsdWRlICJDcnlwdG9BZXNLZXlBbGdv
cml0aG0uaCIKICNpbmNsdWRlICJDcnlwdG9BbGdvcml0aG1BZXNLZXlQYXJhbXMuaCIKICNpbmNs
dWRlICJDcnlwdG9BbGdvcml0aG1SZWdpc3RyeS5oIgogI2luY2x1ZGUgIkV4Y2VwdGlvbk9yLmgi
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8va2V5cy9DcnlwdG9LZXlBRVMuaCBi
L1NvdXJjZS9XZWJDb3JlL2NyeXB0by9rZXlzL0NyeXB0b0tleUFFUy5oCmluZGV4IDEwN2M3OWJj
NGU4NjExN2M4OTBjYjkzMTg0ZTNlZWE5ZTZmMzA2ODEuLjM0MWNhNmJjN2E1ZDc5NzBiODM4Mzk4
NzFmOGMwNjg3MWFiOWMxNGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9rZXlz
L0NyeXB0b0tleUFFUy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9rZXlzL0NyeXB0b0tl
eUFFUy5oCkBAIC01NCw3ICs1NCw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgYm9vbCBpc1ZhbGlk
QUVTQWxnb3JpdGhtKENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXIpOwogCiAgICAgc3RhdGljIFJl
ZlB0cjxDcnlwdG9LZXlBRVM+IGdlbmVyYXRlKENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXIsIHNp
emVfdCBsZW5ndGhCaXRzLCBib29sIGV4dHJhY3RhYmxlLCBDcnlwdG9LZXlVc2FnZUJpdG1hcCk7
Ci0gICAgc3RhdGljIFJlZlB0cjxDcnlwdG9LZXlBRVM+IGltcG9ydFJhdyhDcnlwdG9BbGdvcml0
aG1JZGVudGlmaWVyLCBWZWN0b3I8dWludDhfdD4mJiBrZXlEYXRhLCBib29sIGV4dHJhY3RhYmxl
LCBDcnlwdG9LZXlVc2FnZUJpdG1hcCk7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZlB0
cjxDcnlwdG9LZXlBRVM+IGltcG9ydFJhdyhDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyLCBWZWN0
b3I8dWludDhfdD4mJiBrZXlEYXRhLCBib29sIGV4dHJhY3RhYmxlLCBDcnlwdG9LZXlVc2FnZUJp
dG1hcCk7CiAgICAgdXNpbmcgQ2hlY2tBbGdDYWxsYmFjayA9IEZ1bmN0aW9uPGJvb2woc2l6ZV90
LCBjb25zdCBTdHJpbmcmKT47CiAgICAgc3RhdGljIFJlZlB0cjxDcnlwdG9LZXlBRVM+IGltcG9y
dEp3ayhDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyLCBKc29uV2ViS2V5JiYsIGJvb2wgZXh0cmFj
dGFibGUsIENyeXB0b0tleVVzYWdlQml0bWFwLCBDaGVja0FsZ0NhbGxiYWNrJiYpOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8va2V5cy9DcnlwdG9LZXlFQy5oIGIvU291cmNl
L1dlYkNvcmUvY3J5cHRvL2tleXMvQ3J5cHRvS2V5RUMuaAppbmRleCAzNjQ3MTM0MDVjODllNTFi
NDMxMTdlYzkzYzNjNGM4NGVlZmM2ZTMyLi5jYWM3NDhhODQ4OGY2MmEzNTIyNDNlNGQ4NjMzZDNk
MDA5MmNmYTRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8va2V5cy9DcnlwdG9L
ZXlFQy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9rZXlzL0NyeXB0b0tleUVDLmgKQEAg
LTY5LDEzICs2OSwxMyBAQCBwdWJsaWM6CiAgICAgfQogICAgIHZpcnR1YWwgfkNyeXB0b0tleUVD
KCkgPSBkZWZhdWx0OwogCi0gICAgc3RhdGljIEV4Y2VwdGlvbk9yPENyeXB0b0tleVBhaXI+IGdl
bmVyYXRlUGFpcihDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGN1cnZl
LCBib29sIGV4dHJhY3RhYmxlLCBDcnlwdG9LZXlVc2FnZUJpdG1hcCk7Ci0gICAgc3RhdGljIFJl
ZlB0cjxDcnlwdG9LZXlFQz4gaW1wb3J0UmF3KENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXIsIGNv
bnN0IFN0cmluZyYgY3VydmUsIFZlY3Rvcjx1aW50OF90PiYmIGtleURhdGEsIGJvb2wgZXh0cmFj
dGFibGUsIENyeXB0b0tleVVzYWdlQml0bWFwKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMg
RXhjZXB0aW9uT3I8Q3J5cHRvS2V5UGFpcj4gZ2VuZXJhdGVQYWlyKENyeXB0b0FsZ29yaXRobUlk
ZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgY3VydmUsIGJvb2wgZXh0cmFjdGFibGUsIENyeXB0b0tl
eVVzYWdlQml0bWFwKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmUHRyPENyeXB0b0tl
eUVDPiBpbXBvcnRSYXcoQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBj
dXJ2ZSwgVmVjdG9yPHVpbnQ4X3Q+JiYga2V5RGF0YSwgYm9vbCBleHRyYWN0YWJsZSwgQ3J5cHRv
S2V5VXNhZ2VCaXRtYXApOwogICAgIHN0YXRpYyBSZWZQdHI8Q3J5cHRvS2V5RUM+IGltcG9ydEp3
ayhDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGN1cnZlLCBKc29uV2Vi
S2V5JiYsIGJvb2wgZXh0cmFjdGFibGUsIENyeXB0b0tleVVzYWdlQml0bWFwKTsKICAgICBzdGF0
aWMgUmVmUHRyPENyeXB0b0tleUVDPiBpbXBvcnRTcGtpKENyeXB0b0FsZ29yaXRobUlkZW50aWZp
ZXIsIGNvbnN0IFN0cmluZyYgY3VydmUsIFZlY3Rvcjx1aW50OF90PiYmIGtleURhdGEsIGJvb2wg
ZXh0cmFjdGFibGUsIENyeXB0b0tleVVzYWdlQml0bWFwKTsKICAgICBzdGF0aWMgUmVmUHRyPENy
eXB0b0tleUVDPiBpbXBvcnRQa2NzOChDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyLCBjb25zdCBT
dHJpbmcmIGN1cnZlLCBWZWN0b3I8dWludDhfdD4mJiBrZXlEYXRhLCBib29sIGV4dHJhY3RhYmxl
LCBDcnlwdG9LZXlVc2FnZUJpdG1hcCk7CiAKLSAgICBFeGNlcHRpb25PcjxWZWN0b3I8dWludDhf
dD4+IGV4cG9ydFJhdygpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIEV4Y2VwdGlvbk9yPFZl
Y3Rvcjx1aW50OF90Pj4gZXhwb3J0UmF3KCkgY29uc3Q7CiAgICAgRXhjZXB0aW9uT3I8SnNvbldl
YktleT4gZXhwb3J0SndrKCkgY29uc3Q7CiAgICAgRXhjZXB0aW9uT3I8VmVjdG9yPHVpbnQ4X3Q+
PiBleHBvcnRTcGtpKCkgY29uc3Q7CiAgICAgRXhjZXB0aW9uT3I8VmVjdG9yPHVpbnQ4X3Q+PiBl
eHBvcnRQa2NzOCgpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL21h
Yy9DcnlwdG9BbGdvcml0aG1BRVNfQ0JDTWFjLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9t
YWMvQ3J5cHRvQWxnb3JpdGhtQUVTX0NCQ01hYy5jcHAKaW5kZXggNGM4OTQwNzU0NTgyOTJjNDFi
OGZmZWYxZjIyNjMyMzg3YWMxNGM4MS4uNTE3Y2ZjODliOTczNzE0OWM0ODA3Yjg1YWQxZjIwZGZh
MGFhYzFkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL21hYy9DcnlwdG9BbGdv
cml0aG1BRVNfQ0JDTWFjLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vbWFjL0NyeXB0
b0FsZ29yaXRobUFFU19DQkNNYWMuY3BwCkBAIC02NCwxMyArNjQsMTMgQEAgc3RhdGljIEV4Y2Vw
dGlvbk9yPFZlY3Rvcjx1aW50OF90Pj4gdHJhbnNmb3JtQUVTX0NCQyhDQ09wZXJhdGlvbiBvcGVy
YXRpb24sIGNvbnMKIAogRXhjZXB0aW9uT3I8VmVjdG9yPHVpbnQ4X3Q+PiBDcnlwdG9BbGdvcml0
aG1BRVNfQ0JDOjpwbGF0Zm9ybUVuY3J5cHQoY29uc3QgQ3J5cHRvQWxnb3JpdGhtQWVzQ2JjQ2Zi
UGFyYW1zJiBwYXJhbWV0ZXJzLCBjb25zdCBDcnlwdG9LZXlBRVMmIGtleSwgY29uc3QgVmVjdG9y
PHVpbnQ4X3Q+JiBwbGFpblRleHQpCiB7Ci0gICAgQVNTRVJUKHBhcmFtZXRlcnMuaXZWZWN0b3Io
KS5zaXplKCkgPT0ga0NDQmxvY2tTaXplQUVTMTI4KTsKKyAgICBBU1NFUlQocGFyYW1ldGVycy5p
dlZlY3RvcigpLnNpemUoKSA9PSBrQ0NCbG9ja1NpemVBRVMxMjggfHwgcGFyYW1ldGVycy5pdlZl
Y3RvcigpLmlzRW1wdHkoKSk7CiAgICAgcmV0dXJuIHRyYW5zZm9ybUFFU19DQkMoa0NDRW5jcnlw
dCwgcGFyYW1ldGVycy5pdlZlY3RvcigpLCBrZXkua2V5KCksIHBsYWluVGV4dCk7CiB9CiAKIEV4
Y2VwdGlvbk9yPFZlY3Rvcjx1aW50OF90Pj4gQ3J5cHRvQWxnb3JpdGhtQUVTX0NCQzo6cGxhdGZv
cm1EZWNyeXB0KGNvbnN0IENyeXB0b0FsZ29yaXRobUFlc0NiY0NmYlBhcmFtcyYgcGFyYW1ldGVy
cywgY29uc3QgQ3J5cHRvS2V5QUVTJiBrZXksIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgY2lwaGVy
VGV4dCkKIHsKLSAgICBBU1NFUlQocGFyYW1ldGVycy5pdlZlY3RvcigpLnNpemUoKSA9PSBrQ0NC
bG9ja1NpemVBRVMxMjgpOworICAgIEFTU0VSVChwYXJhbWV0ZXJzLml2VmVjdG9yKCkuc2l6ZSgp
ID09IGtDQ0Jsb2NrU2l6ZUFFUzEyOCB8fCBwYXJhbWV0ZXJzLml2VmVjdG9yKCkuaXNFbXB0eSgp
KTsKICAgICByZXR1cm4gdHJhbnNmb3JtQUVTX0NCQyhrQ0NEZWNyeXB0LCBwYXJhbWV0ZXJzLml2
VmVjdG9yKCksIGtleS5rZXkoKSwgY2lwaGVyVGV4dCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2NyeXB0by9tYWMvQ3J5cHRvS2V5UlNBTWFjLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2NyeXB0by9tYWMvQ3J5cHRvS2V5UlNBTWFjLmNwcAppbmRleCAyNzU1ZTczNWZlNmRjODQ2YmI0
ZjFiZThkZGU1MmMxNDdiOWYwOTkyLi4yY2JiMGE3YzQyY2I0OWFjNjcyNTRhYjg5OWFkZDJhOTgy
NTVlZDQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vbWFjL0NyeXB0b0tleVJT
QU1hYy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL21hYy9DcnlwdG9LZXlSU0FNYWMu
Y3BwCkBAIC0yMDEsMTQgKzIwMSwxNCBAQCBhdXRvIENyeXB0b0tleVJTQTo6YWxnb3JpdGhtKCkg
Y29uc3QgLT4gS2V5QWxnb3JpdGhtCiAgICAgICAgIHJlc3VsdC5tb2R1bHVzTGVuZ3RoID0gbW9k
dWx1c0xlbmd0aDsKICAgICAgICAgcmVzdWx0LnB1YmxpY0V4cG9uZW50ID0gVWludDhBcnJheTo6
dHJ5Q3JlYXRlKHB1YmxpY0V4cG9uZW50LmRhdGEoKSwgcHVibGljRXhwb25lbnQuc2l6ZSgpKTsK
ICAgICAgICAgcmVzdWx0Lmhhc2gubmFtZSA9IENyeXB0b0FsZ29yaXRobVJlZ2lzdHJ5OjpzaW5n
bGV0b24oKS5uYW1lKG1faGFzaCk7Ci0gICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgICAgIHJl
dHVybiBXVEZNb3ZlKHJlc3VsdCk7CiAgICAgfQogICAgIAogICAgIENyeXB0b1JzYUtleUFsZ29y
aXRobSByZXN1bHQ7CiAgICAgcmVzdWx0Lm5hbWUgPSBDcnlwdG9BbGdvcml0aG1SZWdpc3RyeTo6
c2luZ2xldG9uKCkubmFtZShhbGdvcml0aG1JZGVudGlmaWVyKCkpOwogICAgIHJlc3VsdC5tb2R1
bHVzTGVuZ3RoID0gbW9kdWx1c0xlbmd0aDsKICAgICByZXN1bHQucHVibGljRXhwb25lbnQgPSBV
aW50OEFycmF5Ojp0cnlDcmVhdGUocHVibGljRXhwb25lbnQuZGF0YSgpLCBwdWJsaWNFeHBvbmVu
dC5zaXplKCkpOwotICAgIHJldHVybiByZXN1bHQ7CisgICAgcmV0dXJuIFdURk1vdmUocmVzdWx0
KTsKIH0KIAogc3RkOjp1bmlxdWVfcHRyPENyeXB0b0tleVJTQUNvbXBvbmVudHM+IENyeXB0b0tl
eVJTQTo6ZXhwb3J0RGF0YSgpIGNvbnN0CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9U
b29scy9DaGFuZ2VMb2cKaW5kZXggZDFmNWIyZjE3NThhNjQyNzFjNDU0MmMwMmRjOWNmNzg3ODBi
ZDQzMS4uMmQxNTUzM2UxODliYjk0OTNmZGUxMTI5NjljNWFlZDZkMDYxYWQyNCAxMDA2NDQKLS0t
IGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBA
CisyMDE5LTEyLTE3ICBKaWV3ZW4gVGFuICA8amlld2VuX3RhbkBhcHBsZS5jb20+CisKKyAgICAg
ICAgW1dlYkF1dGhuXSBJbXBsZW1lbnQgY29kZXJzIGZvciBDVEFQIENsaWVudFBJTiByZXF1ZXN0
cyBhbmQgcmVzcG9uc2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMDUzNzYKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzU4MDM0Mzk1PgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZHMgQVBJIHRlc3Rz
LgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2o6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0N0YXBQ
aW5UZXN0LmNwcDogQWRkZWQuCisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKToKKyAgICAg
ICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvQ3RhcFJlcXVlc3RUZXN0LmNwcDoKKyAg
ICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViQ29yZS9GaWRvVGVzdERhdGEuaDoKKwogMjAxOS0xMi0xMSAgSm9uYXRoYW4gQmVkYXJk
ICA8amJlZGFyZEBhcHBsZS5jb20+CiAKICAgICAgICAgUHl0aG9uIDM6IFN1cHBvcnQgc2VyaWFs
IFNlcnZlclByb2Nlc3MgdGVzdHMKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggODEzYjgxZmM1
OWM0MTc1ZmRiM2IzOWQ3NDMwZmMxYjZjNTM4ZGVhZi4uYTQ0MGEzYjcyMjZiZjliZjRlM2U4ZDIw
MzRlZWYxZWJkYjU5MmVmOSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2Vi
S2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTM0MSw2ICszNDEs
NyBAQAogCQk1NzMyNTVBNjIyMTM5QkM3MDAzOTZBRTggLyogbG9hZC13ZWItYXJjaGl2ZS0xLmh0
bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NTczMjU1QTIyMjEzOUI4RjAwMzk2QUU4IC8qIGxvYWQtd2ViLWFyY2hpdmUtMS5odG1sICovOyB9
OwogCQk1NzMyNTVBNzIyMTM5QkM3MDAzOTZBRTggLyogbG9hZC13ZWItYXJjaGl2ZS0yLmh0bWwg
aW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTcz
MjU1QTMyMjEzOUI5MDAwMzk2QUU4IC8qIGxvYWQtd2ViLWFyY2hpdmUtMi5odG1sICovOyB9Owog
CQk1NzRGNTVEMjIwNEQ0N0YwMDAyOTQ4QzYgLyogU2VjdXJpdHkuZnJhbWV3b3JrIGluIEZyYW1l
d29ya3MgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTc0RjU1RDAyMDRENDcx
QzAwMjk0OEM2IC8qIFNlY3VyaXR5LmZyYW1ld29yayAqLzsgfTsKKwkJNTc1ODU5N0YyM0EyNTI3
QTAwQzc0NTcyIC8qIEN0YXBQaW5UZXN0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDU3NTg1OTdFMjNBMjUyN0EwMEM3NDU3MiAvKiBDdGFwUGluVGVz
dC5jcHAgKi87IH07CiAJCTU3NTk5RTIxMUYwNzE5MTkwMEEzRkI4QyAvKiBJbmRleGVkREJTdHJ1
Y3R1cmVkQ2xvbmVCYWNrd2FyZENvbXBhdGliaWxpdHkubW0gaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NzU5OUUyMDFGMDcxOTE3MDBBM0ZCOEMgLyogSW5k
ZXhlZERCU3RydWN0dXJlZENsb25lQmFja3dhcmRDb21wYXRpYmlsaXR5Lm1tICovOyB9OwogCQk1
NzU5OUUyNzFGMDcxQUEwMDBBM0ZCOEMgLyogSW5kZXhlZERCU3RydWN0dXJlZENsb25lQmFja3dh
cmRDb21wYXRpYmlsaXR5LnNxbGl0ZTMgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNTc1OTlFMjQxRjA3MTkyQzAwQTNGQjhDIC8qIEluZGV4ZWRE
QlN0cnVjdHVyZWRDbG9uZUJhY2t3YXJkQ29tcGF0aWJpbGl0eS5zcWxpdGUzICovOyB9OwogCQk1
NzU5OUUyODFGMDcxQUEwMDBBM0ZCOEMgLyogSW5kZXhlZERCU3RydWN0dXJlZENsb25lQmFja3dh
cmRDb21wYXRpYmlsaXR5LnNxbGl0ZTMtc2htIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3NTk5RTI2MUYwNzE5MkMwMEEzRkI4QyAvKiBJbmRl
eGVkREJTdHJ1Y3R1cmVkQ2xvbmVCYWNrd2FyZENvbXBhdGliaWxpdHkuc3FsaXRlMy1zaG0gKi87
IH07CkBAIC0xOTAxLDYgKzE5MDIsOCBAQAogCQk1NzMyNTVBNDIyMTM5QjkwMDAzOTZBRTggLyog
aGVsbG93b3JsZC53ZWJhcmNoaXZlICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gZmlsZS5icGxpc3Q7IHBhdGggPSBoZWxsb3dvcmxkLndlYmFyY2hpdmU7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU3MzVGMDI1MUYzQTRFQTYwMDBFRTgwMSAv
KiBUZXN0V2ViS2l0QVBJLWlPUy5lbnRpdGxlbWVudHMgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnBsaXN0LmVudGl0bGVtZW50czsgcGF0aCA9
ICJUZXN0V2ViS2l0QVBJLWlPUy5lbnRpdGxlbWVudHMiOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk1NzRGNTVEMDIwNEQ0NzFDMDAyOTQ4QzYgLyogU2VjdXJpdHkuZnJhbWV3b3JrICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gd3JhcHBlci5m
cmFtZXdvcms7IG5hbWUgPSBTZWN1cml0eS5mcmFtZXdvcms7IHBhdGggPSBTeXN0ZW0vTGlicmFy
eS9GcmFtZXdvcmtzL1NlY3VyaXR5LmZyYW1ld29yazsgc291cmNlVHJlZSA9IFNES1JPT1Q7IH07
CisJCTU3NTg1OTdEMjNBMjUyN0EwMEM3NDU3MiAvKiBDdGFwUGluVGVzdC5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBDdGFwUGluVGVzdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1NzU4NTk3
RTIzQTI1MjdBMDBDNzQ1NzIgLyogQ3RhcFBpblRlc3QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
Q3RhcFBpblRlc3QuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1NzU5OUUyMDFG
MDcxOTE3MDBBM0ZCOEMgLyogSW5kZXhlZERCU3RydWN0dXJlZENsb25lQmFja3dhcmRDb21wYXRp
YmlsaXR5Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gSW5kZXhl
ZERCU3RydWN0dXJlZENsb25lQmFja3dhcmRDb21wYXRpYmlsaXR5Lm1tOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk1NzU5OUUyMzFGMDcxOTJDMDBBM0ZCOEMgLyogSW5kZXhlZERCU3Ry
dWN0dXJlZENsb25lQmFja3dhcmRDb21wYXRpYmlsaXR5V3JpdGUuaHRtbCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9IElu
ZGV4ZWREQlN0cnVjdHVyZWRDbG9uZUJhY2t3YXJkQ29tcGF0aWJpbGl0eVdyaXRlLmh0bWw7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU3NTk5RTI0MUYwNzE5MkMwMEEzRkI4QyAvKiBJ
bmRleGVkREJTdHJ1Y3R1cmVkQ2xvbmVCYWNrd2FyZENvbXBhdGliaWxpdHkuc3FsaXRlMyAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IGZpbGU7IHBhdGgg
PSBJbmRleGVkREJTdHJ1Y3R1cmVkQ2xvbmVCYWNrd2FyZENvbXBhdGliaWxpdHkuc3FsaXRlMzsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTMwOTIsNiArMzA5NSw4IEBACiAJCQkJMUM5
RUI4NDAxRTM4MERBMTAwNUM2NDQyIC8qIENvbXBsZXhUZXh0Q29udHJvbGxlci5jcHAgKi8sCiAJ
CQkJN0NCMTg0QzQxQUEzRjIxMDAwNjZFREZEIC8qIENvbnRlbnRFeHRlbnNpb25zLmNwcCAqLywK
IAkJCQlDRDU0NTFFOTE5RTQxRjlEMDAxNjkzNkYgLyogQ1NTUGFyc2VyLmNwcCAqLywKKwkJCQk1
NzU4NTk3RTIzQTI1MjdBMDBDNzQ1NzIgLyogQ3RhcFBpblRlc3QuY3BwICovLAorCQkJCTU3NTg1
OTdEMjNBMjUyN0EwMEM3NDU3MiAvKiBDdGFwUGluVGVzdC5oICovLAogCQkJCTU3MkI0MDMzMjE3
NjlBODgwMDBBRDQzRSAvKiBDdGFwUmVxdWVzdFRlc3QuY3BwICovLAogCQkJCTU3MkI0MDQzMjE3
ODFCNDIwMDBBRDQzRSAvKiBDdGFwUmVzcG9uc2VUZXN0LmNwcCAqLywKIAkJCQkyNjBCQTU3ODFC
MUQyRTdCMDA0RkEwN0MgLyogREZBQ29tYmluZXIuY3BwICovLApAQCAtNDU3NCw2ICs0NTc5LDcg
QEAKIAkJCQk3Q0NFN0VBQzFBNDExQTM0MDA0NDdDNEMgLyogQ291bnRlcnMuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJN0FFQUQ0N0YxRTIwMTE2QzAwNDE2RUZFIC8qIENyb3NzUGFydGl0aW9uRmls
ZVNjaGVtZUFjY2Vzcy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTdDQ0U3RURCMUE0MTFBOTIwMDQ0
N0M0QyAvKiBDU1NQYXJzZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNTc1ODU5N0YyM0EyNTI3
QTAwQzc0NTcyIC8qIEN0YXBQaW5UZXN0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTU3MkI0MDM0
MjE3NjlBODgwMDBBRDQzRSAvKiBDdGFwUmVxdWVzdFRlc3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJNTcyQjQwNDQyMTc4MUI0MzAwMEFENDNFIC8qIEN0YXBSZXNwb25zZVRlc3QuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJN0FDN0I1NzAyMEQ5QkE1QjAwMkMwOUEwIC8qIEN1c3RvbUJ1bmRsZU9i
amVjdC5tbSBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJDb3JlL0N0YXBQaW5UZXN0LmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViQ29yZS9DdGFwUGluVGVzdC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzdmMjJmMWE2MWNiYjg3YWU1YWFl
OThkZmY0YzY5NDcxMzJmMWZmZQotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViQ29yZS9DdGFwUGluVGVzdC5jcHAKQEAgLTAsMCArMSwyOTUgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBFTkFCTEUoV0VCX0FVVEhOKQorCisj
aW5jbHVkZSAiRmlkb1Rlc3REYXRhLmgiCisjaW5jbHVkZSAiUGxhdGZvcm1VdGlsaXRpZXMuaCIK
KyNpbmNsdWRlIDxXZWJDb3JlL0NCT1JSZWFkZXIuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0NCT1JW
YWx1ZS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvQ3J5cHRvQWxnb3JpdGhtQUVTX0NCQy5oPgorI2lu
Y2x1ZGUgPFdlYkNPcmUvQ3J5cHRvQWxnb3JpdGhtQWVzQ2JjQ2ZiUGFyYW1zLmg+CisjaW5jbHVk
ZSA8V2ViQ29yZS9DcnlwdG9BbGdvcml0aG1FQ0RILmg+CisjaW5jbHVkZSA8V2ViQ29yZS9Dcnlw
dG9LZXlBRVMuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0NyeXB0b0tleUVDLmg+CisjaW5jbHVkZSA8
V2ViQ29yZS9DcnlwdG9LZXlITUFDLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9GaWRvQ29uc3RhbnRz
Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9QaW4uaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1dlYkF1dGhl
bnRpY2F0aW9uQ29uc3RhbnRzLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9XZWJBdXRoZW50aWNhdGlv
blV0aWxzLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvQmFzZTY0Lmg+CisKK25hbWVzcGFjZSBUZXN0
V2ViS2l0QVBJIHsKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwordXNpbmcgbmFtZXNwYWNlIGNi
b3I7Cit1c2luZyBuYW1lc3BhY2UgZmlkbzsKK3VzaW5nIG5hbWVzcGFjZSBmaWRvOjpwaW47CisK
K1RFU1QoQ3RhcFBpblRlc3QsIFRlc3RWYWxpZGF0ZUFuZENvbnZlcnRUb1VURjgpCit7CisgICAg
Ly8gRmFpbHVyZSBjYXNlcworICAgIGF1dG8gcmVzdWx0ID0gdmFsaWRhdGVBbmRDb252ZXJ0VG9V
VEY4KCIxMjMiKTsKKyAgICBFWFBFQ1RfRkFMU0UocmVzdWx0KTsKKyAgICByZXN1bHQgPSB2YWxp
ZGF0ZUFuZENvbnZlcnRUb1VURjgoIiIpOworICAgIEVYUEVDVF9GQUxTRShyZXN1bHQpOworICAg
IHJlc3VsdCA9IHZhbGlkYXRlQW5kQ29udmVydFRvVVRGOCgiMTIzNDU2NzgxMjM0NTY3ODEyMzQ1
Njc4MTIzNDU2NzgxMjM0NTY3ODEyMzQ1Njc4MTIzNDU2NzgxMjM0NTY3OCIpOworICAgIEVYUEVD
VF9GQUxTRShyZXN1bHQpOworCisgICAgLy8gU3VjY2VzcyBjYXNlcworICAgIHJlc3VsdCA9IHZh
bGlkYXRlQW5kQ29udmVydFRvVVRGOCgiMTIzNCIpOworICAgIEVYUEVDVF9UUlVFKHJlc3VsdCk7
CisgICAgRVhQRUNUX0VRKHJlc3VsdC0+bGVuZ3RoKCksIDR1KTsKKyAgICBFWFBFQ1RfU1RSRVEo
cmVzdWx0LT5kYXRhKCksICIxMjM0Iik7CisKKyAgICByZXN1bHQgPSB2YWxpZGF0ZUFuZENvbnZl
cnRUb1VURjgoIjEyMzQ1Njc4MTIzNDU2NzgxMjM0NTY3ODEyMzQ1Njc4MTIzNDU2NzgxMjM0NTY3
ODEyMzQ1Njc4MTIzNDU2NyIpOworICAgIEVYUEVDVF9UUlVFKHJlc3VsdCk7CisgICAgRVhQRUNU
X0VRKHJlc3VsdC0+bGVuZ3RoKCksIDYzdSk7CisgICAgRVhQRUNUX1NUUkVRKHJlc3VsdC0+ZGF0
YSgpLCAiMTIzNDU2NzgxMjM0NTY3ODEyMzQ1Njc4MTIzNDU2NzgxMjM0NTY3ODEyMzQ1Njc4MTIz
NDU2NzgxMjM0NTY3Iik7Cit9CisKK1RFU1QoQ3RhcFBpblRlc3QsIFRlc3RSZXRyaWVzUmVxdWVz
dCkKK3sKKyAgICBhdXRvIHJlc3VsdCA9IGVuY29kZUFzQ0JPUihSZXRyaWVzUmVxdWVzdCB7IH0p
OworICAgIEVYUEVDVF9FUShyZXN1bHQuc2l6ZSgpLCBzaXplb2YoVGVzdERhdGE6OmtDdGFwQ2xp
ZW50UGluUmV0cmllcykpOworICAgIEVYUEVDVF9FUShtZW1jbXAocmVzdWx0LmRhdGEoKSwgVGVz
dERhdGE6OmtDdGFwQ2xpZW50UGluUmV0cmllcywgcmVzdWx0LnNpemUoKSksIDApOworfQorCitU
RVNUKEN0YXBQaW5UZXN0LCBUZXN0UmV0cmllc1Jlc3BvbnNlKQoreworICAgIC8vIEZhaWx1cmUg
Y2FzZXMKKyAgICBhdXRvIHJlc3VsdCA9IFJldHJpZXNSZXNwb25zZTo6cGFyc2UoeyB9KTsKKyAg
ICBFWFBFQ1RfRkFMU0UocmVzdWx0KTsKKworICAgIGNvbnN0IHVpbnQ4X3QgdGVzdERhdGExW10g
PSB7IDB4MDUgfTsgLy8gd3JvbmcgcmVzcG9uc2UgY29kZQorICAgIHJlc3VsdCA9IFJldHJpZXNS
ZXNwb25zZTo6cGFyc2UoY29udmVydEJ5dGVzVG9WZWN0b3IodGVzdERhdGExLCBzaXplb2YodGVz
dERhdGExKSkpOworICAgIEVYUEVDVF9GQUxTRShyZXN1bHQpOworCisgICAgY29uc3QgdWludDhf
dCB0ZXN0RGF0YTJbXSA9IHsgMHgwMCwgMHgwMCB9OyAvLyB3cm9uZyBDQk9SIG1hcAorICAgIHJl
c3VsdCA9IFJldHJpZXNSZXNwb25zZTo6cGFyc2UoY29udmVydEJ5dGVzVG9WZWN0b3IodGVzdERh
dGEyLCBzaXplb2YodGVzdERhdGEyKSkpOworICAgIEVYUEVDVF9GQUxTRShyZXN1bHQpOworCisg
ICAgcmVzdWx0ID0gUmV0cmllc1Jlc3BvbnNlOjpwYXJzZShjb252ZXJ0Qnl0ZXNUb1ZlY3RvcihU
ZXN0RGF0YTo6a0N0YXBDbGllbnRQaW5Ub2tlblJlc3BvbnNlLCBzaXplb2YoVGVzdERhdGE6OmtD
dGFwQ2xpZW50UGluVG9rZW5SZXNwb25zZSkpKTsgLy8gd3JvbmcgcmVzcG9uc2UKKyAgICBFWFBF
Q1RfRkFMU0UocmVzdWx0KTsKKworICAgIC8vIFN1Y2Nlc3MgY2FzZXMKKyAgICByZXN1bHQgPSBS
ZXRyaWVzUmVzcG9uc2U6OnBhcnNlKGNvbnZlcnRCeXRlc1RvVmVjdG9yKFRlc3REYXRhOjprQ3Rh
cENsaWVudFBpblJldHJpZXNSZXNwb25zZSwgc2l6ZW9mKFRlc3REYXRhOjprQ3RhcENsaWVudFBp
blJldHJpZXNSZXNwb25zZSkpKTsKKyAgICBFWFBFQ1RfVFJVRShyZXN1bHQpOworICAgIEVYUEVD
VF9FUShyZXN1bHQtPnJldHJpZXMsIDgpOworfQorCitURVNUKEN0YXBQaW5UZXN0LCBUZXN0S2V5
QWdyZWVtZW50UmVxdWVzdCkKK3sKKyAgICBhdXRvIHJlc3VsdCA9IGVuY29kZUFzQ0JPUihLZXlB
Z3JlZW1lbnRSZXF1ZXN0IHsgfSk7CisgICAgRVhQRUNUX0VRKHJlc3VsdC5zaXplKCksIHNpemVv
ZihUZXN0RGF0YTo6a0N0YXBDbGllbnRQaW5LZXlBZ3JlZW1lbnQpKTsKKyAgICBFWFBFQ1RfRVEo
bWVtY21wKHJlc3VsdC5kYXRhKCksIFRlc3REYXRhOjprQ3RhcENsaWVudFBpbktleUFncmVlbWVu
dCwgcmVzdWx0LnNpemUoKSksIDApOworfQorCitURVNUKEN0YXBQaW5UZXN0LCBUZXN0S2V5QWdy
ZWVtZW50UmVzcG9uc2UpCit7CisgICAgLy8gRmFpbHVyZSBjYXNlcworICAgIGF1dG8gcmVzdWx0
ID0gS2V5QWdyZWVtZW50UmVzcG9uc2U6OnBhcnNlKHsgfSk7CisgICAgRVhQRUNUX0ZBTFNFKHJl
c3VsdCk7CisKKyAgICBjb25zdCB1aW50OF90IHRlc3REYXRhMVtdID0geyAweDA1IH07IC8vIHdy
b25nIHJlc3BvbnNlIGNvZGUKKyAgICByZXN1bHQgPSBLZXlBZ3JlZW1lbnRSZXNwb25zZTo6cGFy
c2UoY29udmVydEJ5dGVzVG9WZWN0b3IodGVzdERhdGExLCBzaXplb2YodGVzdERhdGExKSkpOwor
ICAgIEVYUEVDVF9GQUxTRShyZXN1bHQpOworCisgICAgY29uc3QgdWludDhfdCB0ZXN0RGF0YTJb
XSA9IHsgMHgwMCwgMHgwMCB9OyAvLyB3cm9uZyBDQk9SIG1hcAorICAgIHJlc3VsdCA9IEtleUFn
cmVlbWVudFJlc3BvbnNlOjpwYXJzZShjb252ZXJ0Qnl0ZXNUb1ZlY3Rvcih0ZXN0RGF0YTIsIHNp
emVvZih0ZXN0RGF0YTIpKSk7CisgICAgRVhQRUNUX0ZBTFNFKHJlc3VsdCk7CisKKyAgICByZXN1
bHQgPSBLZXlBZ3JlZW1lbnRSZXNwb25zZTo6cGFyc2UoY29udmVydEJ5dGVzVG9WZWN0b3IoVGVz
dERhdGE6OmtDdGFwQ2xpZW50UGluVG9rZW5SZXNwb25zZSwgc2l6ZW9mKFRlc3REYXRhOjprQ3Rh
cENsaWVudFBpblRva2VuUmVzcG9uc2UpKSk7IC8vIHdyb25nIHJlc3BvbnNlCisgICAgRVhQRUNU
X0ZBTFNFKHJlc3VsdCk7CisKKyAgICAvLyBUZXN0IENPU0UKKyAgICBhdXRvIGNvc2VLZXkgPSBl
bmNvZGVDT1NFUHVibGljS2V5KFZlY3Rvcjx1aW50OF90Pig2NSkpOworICAgIGNvc2VLZXlbQ0JP
UlZhbHVlKENPU0U6Omt0eSldID0gQ0JPUlZhbHVlKDApOyAvLyB3cm9uZyBrdHkKKyAgICBhdXRv
IGNvc2VSZXN1bHQgPSBLZXlBZ3JlZW1lbnRSZXNwb25zZTo6cGFyc2VGcm9tQ09TRShjb3NlS2V5
KTsKKyAgICBFWFBFQ1RfRkFMU0UoY29zZVJlc3VsdCk7CisKKyAgICBjb3NlS2V5ID0gZW5jb2Rl
Q09TRVB1YmxpY0tleShWZWN0b3I8dWludDhfdD4oNjUpKTsKKyAgICBjb3NlS2V5W0NCT1JWYWx1
ZShDT1NFOjphbGcpXSA9IENCT1JWYWx1ZSgwKTsgLy8gd3JvbmcgYWxnCisgICAgY29zZVJlc3Vs
dCA9IEtleUFncmVlbWVudFJlc3BvbnNlOjpwYXJzZUZyb21DT1NFKGNvc2VLZXkpOworICAgIEVY
UEVDVF9GQUxTRShjb3NlUmVzdWx0KTsKKworICAgIGNvc2VLZXkgPSBlbmNvZGVDT1NFUHVibGlj
S2V5KFZlY3Rvcjx1aW50OF90Pig2NSkpOworICAgIGNvc2VLZXlbQ0JPUlZhbHVlKENPU0U6OmNy
dildID0gQ0JPUlZhbHVlKDApOyAvLyB3cm9uZyBjcnYKKyAgICBjb3NlUmVzdWx0ID0gS2V5QWdy
ZWVtZW50UmVzcG9uc2U6OnBhcnNlRnJvbUNPU0UoY29zZUtleSk7CisgICAgRVhQRUNUX0ZBTFNF
KGNvc2VSZXN1bHQpOworCisgICAgY29zZUtleSA9IGVuY29kZUNPU0VQdWJsaWNLZXkoVmVjdG9y
PHVpbnQ4X3Q+KDY1KSk7CisgICAgY29zZUtleVtDQk9SVmFsdWUoQ09TRTo6eCldID0gQ0JPUlZh
bHVlKDApOyAvLyB3cm9uZyBjcnYKKyAgICBjb3NlUmVzdWx0ID0gS2V5QWdyZWVtZW50UmVzcG9u
c2U6OnBhcnNlRnJvbUNPU0UoY29zZUtleSk7CisgICAgRVhQRUNUX0ZBTFNFKGNvc2VSZXN1bHQp
OworCisgICAgY29zZUtleSA9IGVuY29kZUNPU0VQdWJsaWNLZXkoVmVjdG9yPHVpbnQ4X3Q+KDY1
KSk7CisgICAgY29zZUtleVtDQk9SVmFsdWUoQ09TRTo6eSldID0gQ0JPUlZhbHVlKDApOyAvLyB3
cm9uZyBjcnYKKyAgICBjb3NlUmVzdWx0ID0gS2V5QWdyZWVtZW50UmVzcG9uc2U6OnBhcnNlRnJv
bUNPU0UoY29zZUtleSk7CisgICAgRVhQRUNUX0ZBTFNFKGNvc2VSZXN1bHQpOworCisgICAgLy8g
U3VjY2VzcyBjYXNlcworICAgIHJlc3VsdCA9IEtleUFncmVlbWVudFJlc3BvbnNlOjpwYXJzZShj
b252ZXJ0Qnl0ZXNUb1ZlY3RvcihUZXN0RGF0YTo6a0N0YXBDbGllbnRQaW5LZXlBZ3JlZW1lbnRS
ZXNwb25zZSwgc2l6ZW9mKFRlc3REYXRhOjprQ3RhcENsaWVudFBpbktleUFncmVlbWVudFJlc3Bv
bnNlKSkpOworICAgIEVYUEVDVF9UUlVFKHJlc3VsdCk7CisgICAgYXV0byBleHBvcnRlZFJhd0tl
eSA9IHJlc3VsdC0+cGVlcktleS0+ZXhwb3J0UmF3KCk7CisgICAgRVhQRUNUX0ZBTFNFKGV4cG9y
dGVkUmF3S2V5Lmhhc0V4Y2VwdGlvbigpKTsKKyAgICBWZWN0b3I8dWludDhfdD4gZXhwZWN0ZWRS
YXdLZXk7CisgICAgZXhwZWN0ZWRSYXdLZXkucmVzZXJ2ZUNhcGFjaXR5KDY1KTsKKyAgICBleHBl
Y3RlZFJhd0tleS5hcHBlbmQoMHgwNCk7CisgICAgZXhwZWN0ZWRSYXdLZXkuYXBwZW5kKFRlc3RE
YXRhOjprQ3RhcENsaWVudFBpbktleUFncmVlbWVudFJlc3BvbnNlICsgMTQsIDMyKTsgLy8gWAor
ICAgIGV4cGVjdGVkUmF3S2V5LmFwcGVuZChUZXN0RGF0YTo6a0N0YXBDbGllbnRQaW5LZXlBZ3Jl
ZW1lbnRSZXNwb25zZSArIDQ5LCAzMik7IC8vIFkKKyAgICBFWFBFQ1RfVFJVRShleHBvcnRlZFJh
d0tleS5yZXR1cm5WYWx1ZSgpID09IGV4cGVjdGVkUmF3S2V5KTsKK30KKworVEVTVChDdGFwUGlu
VGVzdCwgVGVzdFRva2VuUmVxdWVzdCkKK3sKKyAgICAvLyBHZW5lcmF0ZSBhbiBFQyBrZXkgcGFp
ciBhcyB0aGUgcGVlciBrZXkuCisgICAgYXV0byBrZXlQYWlyUmVzdWx0ID0gQ3J5cHRvS2V5RUM6
OmdlbmVyYXRlUGFpcihDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpFQ0RILCAiUC0yNTYiLCB0
cnVlLCBDcnlwdG9LZXlVc2FnZURlcml2ZUJpdHMpOworICAgIEFTU0VSVF9GQUxTRShrZXlQYWly
UmVzdWx0Lmhhc0V4Y2VwdGlvbigpKTsKKyAgICBhdXRvIGtleVBhaXIgPSBrZXlQYWlyUmVzdWx0
LnJlbGVhc2VSZXR1cm5WYWx1ZSgpOworCisgICAgQ1N0cmluZyBwaW4gPSAiMTIzNCI7CisKKyAg
ICBhdXRvIHRva2VuID0gVG9rZW5SZXF1ZXN0Ojp0cnlDcmVhdGUocGluLCBkb3duY2FzdDxDcnlw
dG9LZXlFQz4oKmtleVBhaXIucHVibGljS2V5KSk7CisgICAgRVhQRUNUX1RSVUUodG9rZW4pOwor
ICAgIGF1dG8gcmVzdWx0ID0gZW5jb2RlQXNDQk9SKCp0b2tlbik7CisgICAgRVhQRUNUX0VRKHJl
c3VsdC5zaXplKCksIDEyMHUpOworICAgIEVYUEVDVF9FUShyZXN1bHRbMF0sIHN0YXRpY19jYXN0
PHVpbnQ4X3Q+KEN0YXBSZXF1ZXN0Q29tbWFuZDo6a0F1dGhlbnRpY2F0b3JDbGllbnRQaW4pKTsK
KworICAgIC8vIERlY29kZSB0aGUgQ0JPUiBiaW5hcnkgdG8gY2hlY2sgaWYgZWFjaCBmaWVsZCBp
cyBlbmNvZGVkIGNvcnJlY3RseS4KKyAgICBWZWN0b3I8dWludDhfdD4gYnVmZmVyOworICAgIGJ1
ZmZlci5hcHBlbmQocmVzdWx0LmRhdGEoKSArIDEsIHJlc3VsdC5zaXplKCkgLSAxKTsKKyAgICBh
dXRvIGRlY29kZWRSZXNwb25zZSA9IGNib3I6OkNCT1JSZWFkZXI6OnJlYWQoYnVmZmVyKTsKKyAg
ICBFWFBFQ1RfVFJVRShkZWNvZGVkUmVzcG9uc2UpOworICAgIEVYUEVDVF9UUlVFKGRlY29kZWRS
ZXNwb25zZS0+aXNNYXAoKSk7CisgICAgY29uc3QgYXV0byYgcmVzcG9uc2VNYXAgPSBkZWNvZGVk
UmVzcG9uc2UtPmdldE1hcCgpOworCisgICAgY29uc3QgYXV0byYgaXQxID0gcmVzcG9uc2VNYXAu
ZmluZChDQk9SVmFsdWUoc3RhdGljX2Nhc3Q8dWludDhfdD4oUmVxdWVzdEtleTo6a1Byb3RvY29s
KSkpOworICAgIEVYUEVDVF9ORShpdDEsIHJlc3BvbnNlTWFwLmVuZCgpKTsKKyAgICBFWFBFQ1Rf
RVEoaXQxLT5zZWNvbmQuZ2V0SW50ZWdlcigpLCBrUHJvdG9jb2xWZXJzaW9uKTsKKworICAgIGNv
bnN0IGF1dG8mIGl0MiA9IHJlc3BvbnNlTWFwLmZpbmQoQ0JPUlZhbHVlKHN0YXRpY19jYXN0PHVp
bnQ4X3Q+KFJlcXVlc3RLZXk6OmtTdWJjb21tYW5kKSkpOworICAgIEVYUEVDVF9ORShpdDIsIHJl
c3BvbnNlTWFwLmVuZCgpKTsKKyAgICBFWFBFQ1RfRVEoaXQyLT5zZWNvbmQuZ2V0SW50ZWdlcigp
LCBzdGF0aWNfY2FzdDx1aW50OF90PihTdWJjb21tYW5kOjprR2V0UGluVG9rZW4pKTsKKworICAg
IC8vIENPU0UKKyAgICBhdXRvIGl0ID0gcmVzcG9uc2VNYXAuZmluZChDQk9SVmFsdWUoc3RhdGlj
X2Nhc3Q8aW50PihSZXF1ZXN0S2V5OjprS2V5QWdyZWVtZW50KSkpOworICAgIEVYUEVDVF9UUlVF
KGRlY29kZWRSZXNwb25zZSk7CisgICAgRVhQRUNUX1RSVUUoZGVjb2RlZFJlc3BvbnNlLT5pc01h
cCgpKTsKKyAgICBjb25zdCBhdXRvJiBjb3NlS2V5ID0gaXQtPnNlY29uZC5nZXRNYXAoKTsKKwor
ICAgIGNvbnN0IGF1dG8mIGl0MyA9IGNvc2VLZXkuZmluZChDQk9SVmFsdWUoQ09TRTo6a3R5KSk7
CisgICAgRVhQRUNUX05FKGl0MywgY29zZUtleS5lbmQoKSk7CisgICAgRVhQRUNUX0VRKGl0My0+
c2Vjb25kLmdldEludGVnZXIoKSwgQ09TRTo6RUMyKTsKKworICAgIGNvbnN0IGF1dG8mIGl0NCA9
IGNvc2VLZXkuZmluZChDQk9SVmFsdWUoQ09TRTo6YWxnKSk7CisgICAgRVhQRUNUX05FKGl0NCwg
Y29zZUtleS5lbmQoKSk7CisgICAgRVhQRUNUX0VRKGl0NC0+c2Vjb25kLmdldEludGVnZXIoKSwg
Q09TRTo6RUNESDI1Nik7CisKKyAgICBjb25zdCBhdXRvJiBpdDUgPSBjb3NlS2V5LmZpbmQoQ0JP
UlZhbHVlKENPU0U6OmNydikpOworICAgIEVYUEVDVF9ORShpdDUsIGNvc2VLZXkuZW5kKCkpOwor
ICAgIEVYUEVDVF9FUShpdDUtPnNlY29uZC5nZXRJbnRlZ2VyKCksIENPU0U6OlBfMjU2KTsKKwor
ICAgIC8vIENoZWNrIHRoZSBjb3NlIGtleS4KKyAgICBjb25zdCBhdXRvJiB4SXQgPSBjb3NlS2V5
LmZpbmQoQ0JPUlZhbHVlKC0yKSk7CisgICAgRVhQRUNUX05FKHhJdCwgY29zZUtleS5lbmQoKSk7
CisgICAgY29uc3QgYXV0byYgeUl0ID0gY29zZUtleS5maW5kKENCT1JWYWx1ZSgtMykpOworICAg
IEVYUEVDVF9ORSh5SXQsIGNvc2VLZXkuZW5kKCkpOworICAgIGF1dG8gY29zZVB1YmxpY0tleSA9
IENyeXB0b0tleUVDOjppbXBvcnRSYXcoQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6RUNESCwg
IlAtMjU2IiwgZW5jb2RlUmF3UHVibGljS2V5KHhJdC0+c2Vjb25kLmdldEJ5dGVTdHJpbmcoKSwg
eUl0LT5zZWNvbmQuZ2V0Qnl0ZVN0cmluZygpKSwgdHJ1ZSwgQ3J5cHRvS2V5VXNhZ2VEZXJpdmVC
aXRzKTsKKyAgICBFWFBFQ1RfVFJVRShjb3NlUHVibGljS2V5KTsKKworICAgIC8vIENoZWNrIHRo
ZSBlbmNyeXB0ZWQgUGluLgorICAgIGF1dG8gc2hhcmVkS2V5UmVzdWx0ID0gQ3J5cHRvQWxnb3Jp
dGhtRUNESDo6cGxhdGZvcm1EZXJpdmVCaXRzKGRvd25jYXN0PENyeXB0b0tleUVDPigqa2V5UGFp
ci5wcml2YXRlS2V5KSwgKmNvc2VQdWJsaWNLZXkpOworICAgIEVYUEVDVF9UUlVFKHNoYXJlZEtl
eVJlc3VsdCk7CisgICAgYXV0byBhZXNLZXkgPSBDcnlwdG9LZXlBRVM6OmltcG9ydFJhdyhDcnlw
dG9BbGdvcml0aG1JZGVudGlmaWVyOjpBRVNfQ0JDLCBXVEZNb3ZlKCpzaGFyZWRLZXlSZXN1bHQp
LCB0cnVlLCBDcnlwdG9LZXlVc2FnZURlY3J5cHQpOworICAgIEVYUEVDVF9UUlVFKGFlc0tleSk7
CisKKyAgICBjb25zdCBhdXRvJiBpdDYgPSByZXNwb25zZU1hcC5maW5kKENCT1JWYWx1ZShzdGF0
aWNfY2FzdDx1aW50OF90PihSZXF1ZXN0S2V5OjprUGluSGFzaEVuYykpKTsKKyAgICBFWFBFQ1Rf
TkUoaXQ2LCByZXNwb25zZU1hcC5lbmQoKSk7CisgICAgYXV0byBwaW5IYXNoUmVzdWx0ID0gQ3J5
cHRvQWxnb3JpdGhtQUVTX0NCQzo6cGxhdGZvcm1EZWNyeXB0KHsgfSwgKmFlc0tleSwgaXQ2LT5z
ZWNvbmQuZ2V0Qnl0ZVN0cmluZygpKTsKKyAgICBFWFBFQ1RfRkFMU0UocGluSGFzaFJlc3VsdC5o
YXNFeGNlcHRpb24oKSk7CisgICAgYXV0byBwaW5IYXNoID0gcGluSGFzaFJlc3VsdC5yZWxlYXNl
UmV0dXJuVmFsdWUoKTsKKyAgICBjb25zdCB1aW50OF90IGV4cGVjdGVkUGluSGFzaFtdID0geyAw
eDAzLCAweGFjLCAweDY3LCAweDQyLCAweDE2LCAweGYzLCAweGUxLCAweDVjLCAweDc2LCAweDFl
LCAweGUxLCAweGE1LCAweGUyLCAweDU1LCAweGYwLCAweDY3IH07CisgICAgRVhQRUNUX0VRKHBp
bkhhc2guc2l6ZSgpLCAxNnUpOworICAgIEVYUEVDVF9FUShtZW1jbXAocGluSGFzaC5kYXRhKCks
IGV4cGVjdGVkUGluSGFzaCwgcGluSGFzaC5zaXplKCkpLCAwKTsKK30KKworVEVTVChDdGFwUGlu
VGVzdCwgVGVzdFRva2VuUmVzcG9uc2UpCit7CisgICAgY29uc3QgdWludDhfdCBzaGFyZWRLZXlE
YXRhW10gPSB7CisgICAgICAgIDB4MDMsIDB4YWMsIDB4NjcsIDB4NDIsIDB4MTYsIDB4ZjMsIDB4
ZTEsIDB4NWMsCisgICAgICAgIDB4NzYsIDB4MWUsIDB4ZTEsIDB4YTUsIDB4ZTIsIDB4NTUsIDB4
ZjAsIDB4NjcsCisgICAgICAgIDB4OTUsIDB4MzYsIDB4MjMsIDB4YzgsIDB4YjMsIDB4ODgsIDB4
YjQsIDB4NDUsCisgICAgICAgIDB4OWUsIDB4MTMsIDB4ZjksIDB4NzgsIDB4ZDcsIDB4YzgsIDB4
NDYsIDB4ZjQsIH07CisgICAgYXV0byBzaGFyZWRLZXkgPSBDcnlwdG9LZXlBRVM6OmltcG9ydFJh
dyhDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpBRVNfQ0JDLCBjb252ZXJ0Qnl0ZXNUb1ZlY3Rv
cihzaGFyZWRLZXlEYXRhLCBzaXplb2Yoc2hhcmVkS2V5RGF0YSkpLCB0cnVlLCBDcnlwdG9LZXlV
c2FnZUVuY3J5cHQgfCBDcnlwdG9LZXlVc2FnZURlY3J5cHQpOworICAgIEFTU0VSVF9UUlVFKHNo
YXJlZEtleSk7CisKKyAgICAvLyBGYWlsdXJlIGNhc2VzCisgICAgYXV0byByZXN1bHQgPSBUb2tl
blJlc3BvbnNlOjpwYXJzZSgqc2hhcmVkS2V5LCB7IH0pOworICAgIEVYUEVDVF9GQUxTRShyZXN1
bHQpOworCisgICAgY29uc3QgdWludDhfdCB0ZXN0RGF0YTFbXSA9IHsgMHgwNSB9OyAvLyB3cm9u
ZyByZXNwb25zZSBjb2RlCisgICAgcmVzdWx0ID0gVG9rZW5SZXNwb25zZTo6cGFyc2UoKnNoYXJl
ZEtleSwgY29udmVydEJ5dGVzVG9WZWN0b3IodGVzdERhdGExLCBzaXplb2YodGVzdERhdGExKSkp
OworICAgIEVYUEVDVF9GQUxTRShyZXN1bHQpOworCisgICAgY29uc3QgdWludDhfdCB0ZXN0RGF0
YTJbXSA9IHsgMHgwMCwgMHgwMCB9OyAvLyB3cm9uZyBDQk9SIG1hcAorICAgIHJlc3VsdCA9IFRv
a2VuUmVzcG9uc2U6OnBhcnNlKCpzaGFyZWRLZXksIGNvbnZlcnRCeXRlc1RvVmVjdG9yKHRlc3RE
YXRhMiwgc2l6ZW9mKHRlc3REYXRhMikpKTsKKyAgICBFWFBFQ1RfRkFMU0UocmVzdWx0KTsKKwor
ICAgIHJlc3VsdCA9IFRva2VuUmVzcG9uc2U6OnBhcnNlKCpzaGFyZWRLZXksIGNvbnZlcnRCeXRl
c1RvVmVjdG9yKFRlc3REYXRhOjprQ3RhcENsaWVudFBpbktleUFncmVlbWVudFJlc3BvbnNlLCBz
aXplb2YoVGVzdERhdGE6OmtDdGFwQ2xpZW50UGluS2V5QWdyZWVtZW50UmVzcG9uc2UpKSk7IC8v
IHdyb25nIHJlc3BvbnNlCisgICAgRVhQRUNUX0ZBTFNFKHJlc3VsdCk7CisKKyAgICAvLyBTdWNj
ZXNzIGNhc2VzCisgICAgcmVzdWx0ID0gVG9rZW5SZXNwb25zZTo6cGFyc2UoKnNoYXJlZEtleSwg
Y29udmVydEJ5dGVzVG9WZWN0b3IoVGVzdERhdGE6OmtDdGFwQ2xpZW50UGluVG9rZW5SZXNwb25z
ZSwgc2l6ZW9mKFRlc3REYXRhOjprQ3RhcENsaWVudFBpblRva2VuUmVzcG9uc2UpKSk7CisgICAg
RVhQRUNUX1RSVUUocmVzdWx0KTsKKyAgICBjb25zdCB1aW50OF90IGV4cGVjdGVkVG9rZW5bXSA9
IHsgMHgwMywgMHhhYywgMHg2NywgMHg0MiwgMHgxNiwgMHhmMywgMHhlMSwgMHg1YywgMHg3Niwg
MHgxZSwgMHhlMSwgMHhhNSwgMHhlMiwgMHg1NSwgMHhmMCwgMHg2NyB9OworICAgIEVYUEVDVF9F
UShyZXN1bHQtPnRva2VuKCkuc2l6ZSgpLCAxNnUpOworICAgIEVYUEVDVF9FUShtZW1jbXAocmVz
dWx0LT50b2tlbigpLmRhdGEoKSwgZXhwZWN0ZWRUb2tlbiwgcmVzdWx0LT50b2tlbigpLnNpemUo
KSksIDApOworfQorCitURVNUKEN0YXBQaW5UZXN0LCBUZXN0UGluQXV0aCkKK3sKKyAgICAvLyAx
LiBHZW5lcmF0ZSB0aGUgdG9rZW4uCisgICAgY29uc3QgdWludDhfdCBzaGFyZWRLZXlEYXRhW10g
PSB7CisgICAgICAgIDB4MDMsIDB4YWMsIDB4NjcsIDB4NDIsIDB4MTYsIDB4ZjMsIDB4ZTEsIDB4
NWMsCisgICAgICAgIDB4NzYsIDB4MWUsIDB4ZTEsIDB4YTUsIDB4ZTIsIDB4NTUsIDB4ZjAsIDB4
NjcsCisgICAgICAgIDB4OTUsIDB4MzYsIDB4MjMsIDB4YzgsIDB4YjMsIDB4ODgsIDB4YjQsIDB4
NDUsCisgICAgICAgIDB4OWUsIDB4MTMsIDB4ZjksIDB4NzgsIDB4ZDcsIDB4YzgsIDB4NDYsIDB4
ZjQsIH07CisgICAgYXV0byBzaGFyZWRLZXkgPSBDcnlwdG9LZXlBRVM6OmltcG9ydFJhdyhDcnlw
dG9BbGdvcml0aG1JZGVudGlmaWVyOjpBRVNfQ0JDLCBjb252ZXJ0Qnl0ZXNUb1ZlY3RvcihzaGFy
ZWRLZXlEYXRhLCBzaXplb2Yoc2hhcmVkS2V5RGF0YSkpLCB0cnVlLCBDcnlwdG9LZXlVc2FnZUVu
Y3J5cHQgfCBDcnlwdG9LZXlVc2FnZURlY3J5cHQpOworICAgIEFTU0VSVF9UUlVFKHNoYXJlZEtl
eSk7CisgICAgYXV0byByZXN1bHQgPSBUb2tlblJlc3BvbnNlOjpwYXJzZSgqc2hhcmVkS2V5LCBj
b252ZXJ0Qnl0ZXNUb1ZlY3RvcihUZXN0RGF0YTo6a0N0YXBDbGllbnRQaW5Ub2tlblJlc3BvbnNl
LCBzaXplb2YoVGVzdERhdGE6OmtDdGFwQ2xpZW50UGluVG9rZW5SZXNwb25zZSkpKTsKKyAgICBB
U1NFUlRfVFJVRShyZXN1bHQpOworCisgICAgLy8gMi4gR2VuZXJhdGUgdGhlIHBpbkF1dGguCisg
ICAgYXV0byBwaW5BdXRoID0gcmVzdWx0LT5waW5BdXRoKGNvbnZlcnRCeXRlc1RvVmVjdG9yKHNo
YXJlZEtleURhdGEsIHNpemVvZihzaGFyZWRLZXlEYXRhKSkpOyAvLyBzaGFyZWRLZXlEYXRhIHBy
ZXRlbmRzIHRvIGJlIGNsaWVudERhdGFIYXNoCisgICAgY29uc3QgdWludDhfdCBleHBlY3RlZFBp
bkF1dGhbXSA9IHsgMHhiMywgMHhjMiwgMHg2NSwgMHgxYywgMHhmZCwgMHhjOCwgMHg0MiwgMHhi
NCwgMHg2MCwgMHgxNiwgMHhlZCwgMHgyMCwgMHg2NCwgMHg1MywgMHhhZiwgMHg4NCB9OworICAg
IEVYUEVDVF9FUShwaW5BdXRoLnNpemUoKSwgMTZ1KTsKKyAgICBFWFBFQ1RfRVEobWVtY21wKHBp
bkF1dGguZGF0YSgpLCBleHBlY3RlZFBpbkF1dGgsIHBpbkF1dGguc2l6ZSgpKSwgMCk7Cit9CisK
K30gLy8gbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkKKworI2VuZGlmIC8vIEVOQUJMRShXRUJfQVVU
SE4pCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvQ3RhcFJl
cXVlc3RUZXN0LmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9DdGFwUmVx
dWVzdFRlc3QuY3BwCmluZGV4IGQzZjAyZjZlOTBlMTE1NzllYzc2ZjdkODUxZjgwNzYwMzlmZGNi
M2MuLmRhMDc1YTBjM2JhNDY0OGJlZTk3YzYzYzE1YWI1MTg2N2ZhYzA3ZGQgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9DdGFwUmVxdWVzdFRlc3QuY3BwCisr
KyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9DdGFwUmVxdWVzdFRlc3QuY3Bw
CkBAIC0zMiw4ICszMiwxMCBAQAogI2lmIEVOQUJMRShXRUJfQVVUSE4pCiAKICNpbmNsdWRlICJG
aWRvVGVzdERhdGEuaCIKKyNpbmNsdWRlICJQbGF0Zm9ybVV0aWxpdGllcy5oIgogI2luY2x1ZGUg
PFdlYkNvcmUvRGV2aWNlUmVxdWVzdENvbnZlcnRlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRmlk
b0NvbnN0YW50cy5oPgorI2luY2x1ZGUgPFdlYkNvcmUvUGluLmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9QdWJsaWNLZXlDcmVkZW50aWFsQ3JlYXRpb25PcHRpb25zLmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9QdWJsaWNLZXlDcmVkZW50aWFsUmVxdWVzdE9wdGlvbnMuaD4KICNpbmNsdWRlIDx3dGYvdGV4
dC9CYXNlNjQuaD4KQEAgLTY3LDYgKzY5LDMzIEBAIFRFU1QoQ1RBUFJlcXVlc3RUZXN0LCBUZXN0
Q29uc3RydWN0TWFrZUNyZWRlbnRpYWxSZXF1ZXN0UGFyYW0pCiAgICAgRVhQRUNUX0VRKG1lbWNt
cChzZXJpYWxpemVkRGF0YS5kYXRhKCksIFRlc3REYXRhOjprQ3RhcE1ha2VDcmVkZW50aWFsUmVx
dWVzdCwgc2VyaWFsaXplZERhdGEuc2l6ZSgpKSwgMCk7CiB9CiAKK1RFU1QoQ1RBUFJlcXVlc3RU
ZXN0LCBUZXN0Q29uc3RydWN0TWFrZUNyZWRlbnRpYWxSZXF1ZXN0UGFyYW1XaXRoUGluKQorewor
ICAgIFB1YmxpY0tleUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnM6OlJwRW50aXR5IHJwOworICAg
IHJwLm5hbWUgPSAiQWNtZSI7CisgICAgcnAuaWQgPSAiYWNtZS5jb20iOworCisgICAgUHVibGlj
S2V5Q3JlZGVudGlhbENyZWF0aW9uT3B0aW9uczo6VXNlckVudGl0eSB1c2VyOworICAgIHVzZXIu
bmFtZSA9ICJqb2hucHNtaXRoQGV4YW1wbGUuY29tIjsKKyAgICB1c2VyLmljb24gPSAiaHR0cHM6
Ly9waWNzLmFjbWUuY29tLzAwL3AvYUJqampwcVBiLnBuZyI7CisgICAgdXNlci5pZFZlY3Rvci5h
cHBlbmQoVGVzdERhdGE6OmtVc2VySWQsIHNpemVvZihUZXN0RGF0YTo6a1VzZXJJZCkpOworICAg
IHVzZXIuZGlzcGxheU5hbWUgPSAiSm9obiBQLiBTbWl0aCI7CisKKyAgICBWZWN0b3I8UHVibGlj
S2V5Q3JlZGVudGlhbENyZWF0aW9uT3B0aW9uczo6UGFyYW1ldGVycz4gcGFyYW1zIHsgeyBQdWJs
aWNLZXlDcmVkZW50aWFsVHlwZTo6UHVibGljS2V5LCA3IH0sIHsgUHVibGljS2V5Q3JlZGVudGlh
bFR5cGU6OlB1YmxpY0tleSwgMjU3IH0gfTsKKyAgICBQdWJsaWNLZXlDcmVkZW50aWFsQ3JlYXRp
b25PcHRpb25zOjpBdXRoZW50aWNhdG9yU2VsZWN0aW9uQ3JpdGVyaWEgc2VsZWN0aW9uIHsgUHVi
bGljS2V5Q3JlZGVudGlhbENyZWF0aW9uT3B0aW9uczo6QXV0aGVudGljYXRvckF0dGFjaG1lbnQ6
OlBsYXRmb3JtLCB0cnVlLCBVc2VyVmVyaWZpY2F0aW9uUmVxdWlyZW1lbnQ6OlByZWZlcnJlZCB9
OworCisgICAgUGluUGFyYW1ldGVycyBwaW47CisgICAgcGluLnByb3RvY29sID0gcGluOjprUHJv
dG9jb2xWZXJzaW9uOworICAgIHBpbi5hdXRoLmFwcGVuZChUZXN0RGF0YTo6a0N0YXAyUGluQXV0
aCwgc2l6ZW9mKFRlc3REYXRhOjprQ3RhcDJQaW5BdXRoKSk7CisKKyAgICBQdWJsaWNLZXlDcmVk
ZW50aWFsQ3JlYXRpb25PcHRpb25zIG9wdGlvbnMgeyBycCwgdXNlciwgeyB9LCBwYXJhbXMsIFdU
Rjo6bnVsbG9wdCwgeyB9LCBzZWxlY3Rpb24sIEF0dGVzdGF0aW9uQ29udmV5YW5jZVByZWZlcmVu
Y2U6Ok5vbmUsIFdURjo6bnVsbG9wdCB9OworICAgIFZlY3Rvcjx1aW50OF90PiBoYXNoOworICAg
IGhhc2guYXBwZW5kKFRlc3REYXRhOjprQ2xpZW50RGF0YUhhc2gsIHNpemVvZihUZXN0RGF0YTo6
a0NsaWVudERhdGFIYXNoKSk7CisgICAgYXV0byBzZXJpYWxpemVkRGF0YSA9IGVuY29kZU1ha2VD
cmVkZW5pdGFsUmVxdWVzdEFzQ0JPUihoYXNoLCBvcHRpb25zLCBBdXRoZW50aWNhdG9yU3VwcG9y
dGVkT3B0aW9uczo6VXNlclZlcmlmaWNhdGlvbkF2YWlsYWJpbGl0eTo6a1N1cHBvcnRlZEJ1dE5v
dENvbmZpZ3VyZWQsIHBpbik7CisgICAgRVhQRUNUX0VRKHNlcmlhbGl6ZWREYXRhLnNpemUoKSwg
c2l6ZW9mKFRlc3REYXRhOjprQ3RhcE1ha2VDcmVkZW50aWFsUmVxdWVzdFdpdGhQaW4pKTsKKyAg
ICBFWFBFQ1RfRVEobWVtY21wKHNlcmlhbGl6ZWREYXRhLmRhdGEoKSwgVGVzdERhdGE6OmtDdGFw
TWFrZUNyZWRlbnRpYWxSZXF1ZXN0V2l0aFBpbiwgc2VyaWFsaXplZERhdGEuc2l6ZSgpKSwgMCk7
Cit9CisKIFRFU1QoQ1RBUFJlcXVlc3RUZXN0LCBUZXN0Q29uc3RydWN0R2V0QXNzZXJ0aW9uUmVx
dWVzdCkKIHsKICAgICBQdWJsaWNLZXlDcmVkZW50aWFsUmVxdWVzdE9wdGlvbnMgb3B0aW9uczsK
QEAgLTEwNCw2ICsxMzMsNDcgQEAgVEVTVChDVEFQUmVxdWVzdFRlc3QsIFRlc3RDb25zdHJ1Y3RH
ZXRBc3NlcnRpb25SZXF1ZXN0KQogICAgIEVYUEVDVF9FUShtZW1jbXAoc2VyaWFsaXplZERhdGEu
ZGF0YSgpLCBUZXN0RGF0YTo6a1Rlc3RDb21wbGV4Q3RhcEdldEFzc2VydGlvblJlcXVlc3QsIHNl
cmlhbGl6ZWREYXRhLnNpemUoKSksIDApOwogfQogCitURVNUKENUQVBSZXF1ZXN0VGVzdCwgVGVz
dENvbnN0cnVjdEdldEFzc2VydGlvblJlcXVlc3RXaXRoUGluKQoreworICAgIFB1YmxpY0tleUNy
ZWRlbnRpYWxSZXF1ZXN0T3B0aW9ucyBvcHRpb25zOworICAgIG9wdGlvbnMucnBJZCA9ICJhY21l
LmNvbSI7CisKKyAgICBQdWJsaWNLZXlDcmVkZW50aWFsRGVzY3JpcHRvciBkZXNjcmlwdG9yMTsK
KyAgICBkZXNjcmlwdG9yMS50eXBlID0gUHVibGljS2V5Q3JlZGVudGlhbFR5cGU6OlB1YmxpY0tl
eTsKKyAgICBjb25zdCB1aW50OF90IGlkMVtdID0geworICAgICAgICAweGYyLCAweDIwLCAweDA2
LCAweGRlLCAweDRmLCAweDkwLCAweDVhLCAweGY2LCAweDhhLCAweDQzLCAweDk0LAorICAgICAg
ICAweDJmLCAweDAyLCAweDRmLCAweDJhLCAweDVlLCAweGNlLCAweDYwLCAweDNkLCAweDljLCAw
eDZkLCAweDRiLAorICAgICAgICAweDNkLCAweGY4LCAweGJlLCAweDA4LCAweGVkLCAweDAxLCAw
eGZjLCAweDQ0LCAweDI2LCAweDQ2LCAweGQwLAorICAgICAgICAweDM0LCAweDg1LCAweDhhLCAw
eGM3LCAweDViLCAweGVkLCAweDNmLCAweGQ1LCAweDgwLCAweGJmLCAweDk4LAorICAgICAgICAw
eDA4LCAweGQ5LCAweDRmLCAweGNiLCAweGVlLCAweDgyLCAweGI5LCAweGIyLCAweGVmLCAweDY2
LCAweDc3LAorICAgICAgICAweGFmLCAweDBhLCAweGRjLCAweGMzLCAweDU4LCAweDUyLCAweGVh
LCAweDZiLCAweDllIH07CisgICAgZGVzY3JpcHRvcjEuaWRWZWN0b3IuYXBwZW5kKGlkMSwgc2l6
ZW9mKGlkMSkpOworICAgIG9wdGlvbnMuYWxsb3dDcmVkZW50aWFscy5hcHBlbmQoZGVzY3JpcHRv
cjEpOworCisgICAgUHVibGljS2V5Q3JlZGVudGlhbERlc2NyaXB0b3IgZGVzY3JpcHRvcjI7Cisg
ICAgZGVzY3JpcHRvcjIudHlwZSA9IFB1YmxpY0tleUNyZWRlbnRpYWxUeXBlOjpQdWJsaWNLZXk7
CisgICAgY29uc3QgdWludDhfdCBpZDJbXSA9IHsKKyAgICAgICAgMHgwMywgMHgwMywgMHgwMywg
MHgwMywgMHgwMywgMHgwMywgMHgwMywgMHgwMywgMHgwMywgMHgwMywKKyAgICAgICAgMHgwMywg
MHgwMywgMHgwMywgMHgwMywgMHgwMywgMHgwMywgMHgwMywgMHgwMywgMHgwMywgMHgwMywKKyAg
ICAgICAgMHgwMywgMHgwMywgMHgwMywgMHgwMywgMHgwMywgMHgwMywgMHgwMywgMHgwMywgMHgw
MywgMHgwMywKKyAgICAgICAgMHgwMywgMHgwMywgMHgwMywgMHgwMywgMHgwMywgMHgwMywgMHgw
MywgMHgwMywgMHgwMywgMHgwMywKKyAgICAgICAgMHgwMywgMHgwMywgMHgwMywgMHgwMywgMHgw
MywgMHgwMywgMHgwMywgMHgwMywgMHgwMywgMHgwMyB9OworICAgIGRlc2NyaXB0b3IyLmlkVmVj
dG9yLmFwcGVuZChpZDIsIHNpemVvZihpZDIpKTsKKyAgICBvcHRpb25zLmFsbG93Q3JlZGVudGlh
bHMuYXBwZW5kKGRlc2NyaXB0b3IyKTsKKworICAgIG9wdGlvbnMudXNlclZlcmlmaWNhdGlvbiA9
IFVzZXJWZXJpZmljYXRpb25SZXF1aXJlbWVudDo6UmVxdWlyZWQ7CisKKyAgICBQaW5QYXJhbWV0
ZXJzIHBpbjsKKyAgICBwaW4ucHJvdG9jb2wgPSBwaW46OmtQcm90b2NvbFZlcnNpb247CisgICAg
cGluLmF1dGguYXBwZW5kKFRlc3REYXRhOjprQ3RhcDJQaW5BdXRoLCBzaXplb2YoVGVzdERhdGE6
OmtDdGFwMlBpbkF1dGgpKTsKKworICAgIFZlY3Rvcjx1aW50OF90PiBoYXNoOworICAgIGhhc2gu
YXBwZW5kKFRlc3REYXRhOjprQ2xpZW50RGF0YUhhc2gsIHNpemVvZihUZXN0RGF0YTo6a0NsaWVu
dERhdGFIYXNoKSk7CisgICAgYXV0byBzZXJpYWxpemVkRGF0YSA9IGVuY29kZUdldEFzc2VydGlv
blJlcXVlc3RBc0NCT1IoaGFzaCwgb3B0aW9ucywgQXV0aGVudGljYXRvclN1cHBvcnRlZE9wdGlv
bnM6OlVzZXJWZXJpZmljYXRpb25BdmFpbGFiaWxpdHk6OmtTdXBwb3J0ZWRCdXROb3RDb25maWd1
cmVkLCBwaW4pOworICAgIEVYUEVDVF9FUShzZXJpYWxpemVkRGF0YS5zaXplKCksIHNpemVvZihU
ZXN0RGF0YTo6a1Rlc3RDb21wbGV4Q3RhcEdldEFzc2VydGlvblJlcXVlc3RXaXRoUGluKSk7Cisg
ICAgRVhQRUNUX0VRKG1lbWNtcChzZXJpYWxpemVkRGF0YS5kYXRhKCksIFRlc3REYXRhOjprVGVz
dENvbXBsZXhDdGFwR2V0QXNzZXJ0aW9uUmVxdWVzdFdpdGhQaW4sIHNlcmlhbGl6ZWREYXRhLnNp
emUoKSksIDApOworfQorCiBURVNUKENUQVBSZXF1ZXN0VGVzdCwgVGVzdENvbnN0cnVjdEN0YXBB
dXRoZW50aWNhdG9yUmVxdWVzdFBhcmFtKQogewogICAgIHN0YXRpYyBjb25zdGV4cHIgdWludDhf
dCBrU2VyaWFsaXplZEdldEluZm9DbWQgPSAweDA0OwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJDb3JlL0ZpZG9UZXN0RGF0YS5oIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJDb3JlL0ZpZG9UZXN0RGF0YS5oCmluZGV4IGQ4ZmRkMGY3ZjUxMWQ4YTQ4Y2Uw
NjNkMjFhZDc0NTc0ZWYyZGI0YjQuLjNjMjMwMmIwYTg4YjcyMTlkOWVjNmFkY2QxM2FkN2Q3Yjdm
ZWRjNjEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9GaWRv
VGVzdERhdGEuaAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvRmlkb1Rl
c3REYXRhLmgKQEAgLTUyNSw3ICs1MjUsMTAzIEBAIGNvbnN0ZXhwciB1aW50OF90IGtDdGFwTWFr
ZUNyZWRlbnRpYWxSZXF1ZXN0W10gPSB7CiAgICAgLy8ga2V5IC0gInV2IgogICAgIDB4NjIsIDB4
NzUsIDB4NzYsCiAgICAgLy8gVHJ1ZSgyMSkKLSAgICAweGY1fTsKKyAgICAweGY1Cit9OworCitj
b25zdGV4cHIgdWludDhfdCBrQ3RhcE1ha2VDcmVkZW50aWFsUmVxdWVzdFdpdGhQaW5bXSA9IHsK
KyAgICAvLyBhdXRoZW50aWNhdG9yTWFrZUNyZWRlbnRpYWwgY29tbWFuZAorICAgIDB4MDEsCisg
ICAgLy8gbWFwKDcpCisgICAgMHhhNywKKyAgICAvLyBrZXkoMSkgLSBjbGllbnREYXRhSGFzaAor
ICAgIDB4MDEsCisgICAgLy8gYnl0ZXMoMzIpCisgICAgMHg1OCwgMHgyMCwgMHg2OCwgMHg3MSwg
MHgzNCwgMHg5NiwgMHg4MiwgMHgyMiwgMHhlYywgMHgxNywgMHgyMCwgMHgyZSwKKyAgICAweDQy
LCAweDUwLCAweDVmLCAweDhlLCAweGQyLCAweGIxLCAweDZhLCAweGUyLCAweDJmLCAweDE2LCAw
eGJiLCAweDA1LAorICAgIDB4YjgsIDB4OGMsIDB4MjUsIDB4ZGIsIDB4OWUsIDB4NjAsIDB4MjYs
IDB4NDUsIDB4ZjEsIDB4NDEsCisgICAgLy8ga2V5KDIpIC0gcnAKKyAgICAweDAyLAorICAgIC8v
IG1hcCgyKQorICAgIDB4YTIsCisgICAgLy8ga2V5IC0gImlkIgorICAgIDB4NjIsIDB4NjksIDB4
NjQsCisgICAgLy8gdmFsdWUgLSAiYWNtZS5jb20iCisgICAgMHg2OCwgMHg2MSwgMHg2MywgMHg2
ZCwgMHg2NSwgMHgyZSwgMHg2MywgMHg2ZiwgMHg2ZCwKKyAgICAvLyBrZXkgLSAgIm5hbWUiCisg
ICAgMHg2NCwgMHg2ZSwgMHg2MSwgMHg2ZCwgMHg2NSwKKyAgICAvLyB2YWx1ZSAtICJBY21lIgor
ICAgIDB4NjQsIDB4NDEsIDB4NjMsIDB4NmQsIDB4NjUsCisgICAgLy8ga2V5KDMpIC0gdXNlcgor
ICAgIDB4MDMsCisgICAgLy8gbWFwKDQpCisgICAgMHhhNCwKKyAgICAvLyBrZXkgLSAiaWQiCisg
ICAgMHg2MiwgMHg2OSwgMHg2NCwKKyAgICAvLyB2YWx1ZSAtIHVzZXIgaWQKKyAgICAweDQ4LCAw
eDEwLCAweDk4LCAweDIzLCAweDcyLCAweDM1LCAweDQwLCAweDk4LCAweDcyLAorICAgIC8vIGtl
eSAtICJpY29uIgorICAgIDB4NjQsIDB4NjksIDB4NjMsIDB4NmYsIDB4NmUsCisgICAgLy8gdmFs
dWUgLSAiaHR0cHM6Ly9waWNzLmFjbWUuY29tLzAwL3AvYUJqampwcVBiLnBuZyIKKyAgICAweDc4
LCAweDI4LCAweDY4LCAweDc0LCAweDc0LCAweDcwLCAweDczLCAweDNhLCAweDJmLCAweDJmLCAw
eDcwLCAweDY5LAorICAgIDB4NjMsIDB4NzMsIDB4MmUsIDB4NjEsIDB4NjMsIDB4NmQsIDB4NjUs
IDB4MmUsIDB4NjMsIDB4NmYsIDB4NmQsIDB4MmYsCisgICAgMHgzMCwgMHgzMCwgMHgyZiwgMHg3
MCwgMHgyZiwgMHg2MSwgMHg0MiwgMHg2YSwgMHg2YSwgMHg2YSwgMHg3MCwgMHg3MSwKKyAgICAw
eDUwLCAweDYyLCAweDJlLCAweDcwLCAweDZlLCAweDY3LAorICAgIC8vIGtleSAtICJuYW1lIgor
ICAgIDB4NjQsIDB4NmUsIDB4NjEsIDB4NmQsIDB4NjUsCisgICAgLy8gdmFsdWUgLSAiam9obnBz
bWl0aEBleGFtcGxlLmNvbSIKKyAgICAweDc2LCAweDZhLCAweDZmLCAweDY4LCAweDZlLCAweDcw
LCAweDczLCAweDZkLCAweDY5LCAweDc0LCAweDY4LCAweDQwLAorICAgIDB4NjUsIDB4NzgsIDB4
NjEsIDB4NmQsIDB4NzAsIDB4NmMsIDB4NjUsIDB4MmUsIDB4NjMsIDB4NmYsIDB4NmQsCisgICAg
Ly8ga2V5IC0gImRpc3BsYXlOYW1lIgorICAgIDB4NmIsIDB4NjQsIDB4NjksIDB4NzMsIDB4NzAs
IDB4NmMsIDB4NjEsIDB4NzksIDB4NGUsIDB4NjEsIDB4NmQsIDB4NjUsCisgICAgLy8gdmFsdWUg
LSAiSm9obiBQLiBTbWl0aCIKKyAgICAweDZkLCAweDRhLCAweDZmLCAweDY4LCAweDZlLCAweDIw
LCAweDUwLCAweDJlLCAweDIwLCAweDUzLCAweDZkLCAweDY5LAorICAgIDB4NzQsIDB4NjgsCisg
ICAgLy8ga2V5KDQpIC0gcHViS2V5Q3JlZFBhcmFtcworICAgIDB4MDQsCisgICAgLy8gYXJyYXko
MikKKyAgICAweDgyLAorICAgIC8vIG1hcCgyKQorICAgIDB4YTIsCisgICAgLy8ga2V5IC0gImFs
ZyIKKyAgICAweDYzLCAweDYxLCAweDZjLCAweDY3LAorICAgIC8vIHZhbHVlIC0gNworICAgIDB4
MDcsCisgICAgLy8ga2V5IC0gInR5cGUiCisgICAgMHg2NCwgMHg3NCwgMHg3OSwgMHg3MCwgMHg2
NSwKKyAgICAvLyB2YWx1ZSAtICJwdWJsaWMta2V5IgorICAgIDB4NmEsIDB4NzAsIDB4NzUsIDB4
NjIsIDB4NkMsIDB4NjksIDB4NjMsIDB4MkQsIDB4NkIsIDB4NjUsIDB4NzksCisgICAgLy8gbWFw
KDIpCisgICAgMHhhMiwKKyAgICAvLyBrZXkgLSAiYWxnIgorICAgIDB4NjMsIDB4NjEsIDB4NmMs
IDB4NjcsCisgICAgLy8gdmFsdWUgLSAyNTcKKyAgICAweDE5LCAweDAxLCAweDAxLAorICAgIC8v
IGtleSAtICJ0eXBlIgorICAgIDB4NjQsIDB4NzQsIDB4NzksIDB4NzAsIDB4NjUsIC8vICJ0eXBl
IgorICAgIC8vIHZhbHVlIC0gInB1YmxpYy1rZXkiCisgICAgMHg2YSwgMHg3MCwgMHg3NSwgMHg2
MiwgMHg2QywgMHg2OSwgMHg2MywgMHgyRCwgMHg2QiwgMHg2NSwgMHg3OSwKKyAgICAvLyBrZXko
NykgLSBvcHRpb25zCisgICAgMHgwNywKKyAgICAvLyBtYXAoMikKKyAgICAweGEyLAorICAgIC8v
IGtleSAtICJyayIKKyAgICAweDYyLCAweDcyLCAweDZiLAorICAgIC8vIFRydWUoMjEpCisgICAg
MHhmNSwKKyAgICAvLyBrZXkgLSAidXYiCisgICAgMHg2MiwgMHg3NSwgMHg3NiwKKyAgICAvLyBU
cnVlKDIxKQorICAgIDB4ZjUsCisgICAgLy8ga2V5KDgpIC0gcGluUHJvdG9jb2wKKyAgICAweDA4
LAorICAgIC8vIHZhbHVlIC0gMQorICAgIDB4MDEsCisgICAgLy8ga2V5KDkpIC0gcGluQXV0aAor
ICAgIDB4MDksCisgICAgLy8gYnl0ZXMoMTYpCisgICAgMHg1MCwgMHgwMCwgMHgwMSwgMHgwMiwg
MHgwMywgMHgwNCwgMHgwNSwgMHgwNiwgMHgwNywgMHgwOCwgMHgwOSwgMHgwYSwKKyAgICAweDBi
LCAweDBjLCAweDBkLCAweDBlLCAweDBmCit9OwogCiBjb25zdGV4cHIgdWludDhfdCBrVGVzdENv
bXBsZXhDdGFwR2V0QXNzZXJ0aW9uUmVxdWVzdFtdID0gewogICAgIC8vIGF1dGhlbnRpY2F0b3JH
ZXRBc3NlcnRpb24gY29tbWFuZApAQCAtNTg5LDYgKzY4NSw3NyBAQCBjb25zdGV4cHIgdWludDhf
dCBrVGVzdENvbXBsZXhDdGFwR2V0QXNzZXJ0aW9uUmVxdWVzdFtdID0gewogICAgIDB4ZjUsCiB9
OwogCitjb25zdGV4cHIgdWludDhfdCBrVGVzdENvbXBsZXhDdGFwR2V0QXNzZXJ0aW9uUmVxdWVz
dFdpdGhQaW5bXSA9IHsKKyAgICAvLyBhdXRoZW50aWNhdG9yR2V0QXNzZXJ0aW9uIGNvbW1hbmQK
KyAgICAweDAyLAorICAgIC8vIG1hcCg2KQorICAgIDB4YTYsCisgICAgLy8ga2V5KDAxKSAtcnBJ
ZAorICAgIDB4MDEsCisgICAgLy8gdmFsdWUgLSAiYWNtZS5jb20iCisgICAgMHg2OCwgMHg2MSwg
MHg2MywgMHg2ZCwgMHg2NSwgMHgyZSwgMHg2MywgMHg2ZiwgMHg2ZCwKKyAgICAvLyBrZXkoMDIp
IC0gY2xpZW50IGRhdGEgaGFzaAorICAgIDB4MDIsCisgICAgLy8gdmFsdWUgLSBieXRlcygzMikK
KyAgICAweDU4LCAweDIwLCAweDY4LCAweDcxLCAweDM0LCAweDk2LCAweDgyLCAweDIyLCAweGVj
LCAweDE3LCAweDIwLCAweDJlLAorICAgIDB4NDIsIDB4NTAsIDB4NWYsIDB4OGUsIDB4ZDIsIDB4
YjEsIDB4NmEsIDB4ZTIsIDB4MmYsIDB4MTYsIDB4YmIsIDB4MDUsCisgICAgMHhiOCwgMHg4Yywg
MHgyNSwgMHhkYiwgMHg5ZSwgMHg2MCwgMHgyNiwgMHg0NSwgMHhmMSwgMHg0MSwKKyAgICAvLyBr
ZXkoMDMpIC0gYWxsb3cgbGlzdAorICAgIDB4MDMsCisgICAgLy8gdmFsdWUgLSBhcnJheSgyKQor
ICAgIDB4ODIsCisgICAgLy8gbWFwKDIpCisgICAgMHhhMiwKKyAgICAvLyBrZXkgLSAiaWQiCisg
ICAgMHg2MiwgMHg2OSwgMHg2NCwKKyAgICAvLyB2YWx1ZSAtIGNyZWRlbnRpYWwgSUQKKyAgICAw
eDU4LCAweDQwLCAweGYyLCAweDIwLCAweDA2LCAweGRlLCAweDRmLCAweDkwLCAweDVhLCAweGY2
LCAweDhhLCAweDQzLAorICAgIDB4OTQsIDB4MmYsIDB4MDIsIDB4NGYsIDB4MmEsIDB4NWUsIDB4
Y2UsIDB4NjAsIDB4M2QsIDB4OWMsIDB4NmQsIDB4NGIsCisgICAgMHgzZCwgMHhmOCwgMHhiZSwg
MHgwOCwgMHhlZCwgMHgwMSwgMHhmYywgMHg0NCwgMHgyNiwgMHg0NiwgMHhkMCwgMHgzNCwKKyAg
ICAweDg1LCAweDhhLCAweGM3LCAweDViLCAweGVkLCAweDNmLCAweGQ1LCAweDgwLCAweGJmLCAw
eDk4LCAweDA4LCAweGQ5LAorICAgIDB4NGYsIDB4Y2IsIDB4ZWUsIDB4ODIsIDB4YjksIDB4YjIs
IDB4ZWYsIDB4NjYsIDB4NzcsIDB4YWYsIDB4MGEsIDB4ZGMsCisgICAgMHhjMywgMHg1OCwgMHg1
MiwgMHhlYSwgMHg2YiwgMHg5ZSwKKyAgICAvLyBrZXkgLSAidHlwZSIKKyAgICAweDY0LCAweDc0
LCAweDc5LCAweDcwLCAweDY1LAorICAgIC8vIHZhbHVlIC0gInB1YmxpYy1rZXkiCisgICAgMHg2
YSwgMHg3MCwgMHg3NSwgMHg2MiwgMHg2QywgMHg2OSwgMHg2MywgMHgyRCwgMHg2QiwgMHg2NSwg
MHg3OSwKKyAgICAvLyBtYXAoMikKKyAgICAweGEyLAorICAgIC8vIGtleSAtICJpZCIKKyAgICAw
eDYyLCAweDY5LCAweDY0LAorICAgIC8vIHZhbHVlIC0gY3JlZGVudGlhbCBJRAorICAgIDB4NTgs
IDB4MzIsIDB4MDMsIDB4MDMsIDB4MDMsIDB4MDMsIDB4MDMsIDB4MDMsIDB4MDMsIDB4MDMsIDB4
MDMsIDB4MDMsCisgICAgMHgwMywgMHgwMywgMHgwMywgMHgwMywgMHgwMywgMHgwMywgMHgwMywg
MHgwMywgMHgwMywgMHgwMywgMHgwMywgMHgwMywKKyAgICAweDAzLCAweDAzLCAweDAzLCAweDAz
LCAweDAzLCAweDAzLCAweDAzLCAweDAzLCAweDAzLCAweDAzLCAweDAzLCAweDAzLAorICAgIDB4
MDMsIDB4MDMsIDB4MDMsIDB4MDMsIDB4MDMsIDB4MDMsIDB4MDMsIDB4MDMsIDB4MDMsIDB4MDMs
IDB4MDMsIDB4MDMsCisgICAgMHgwMywgMHgwMywgMHgwMywgMHgwMywKKyAgICAvLyBrZXkgLSAi
dHlwZSIKKyAgICAweDY0LCAweDc0LCAweDc5LCAweDcwLCAweDY1LAorICAgIC8vIHZhbHVlIC0g
InB1YmxpYy1rZXkiCisgICAgMHg2YSwgMHg3MCwgMHg3NSwgMHg2MiwgMHg2QywgMHg2OSwgMHg2
MywgMHgyRCwgMHg2QiwgMHg2NSwgMHg3OSwKKyAgICAvLyB1bnNpZ25lZCg1KSAtIG9wdGlvbnMK
KyAgICAweDA1LAorICAgIC8vIG1hcCgyKQorICAgIDB4YTIsCisgICAgLy8ga2V5IC0idXAiCisg
ICAgMHg2MiwgMHg3NSwgMHg3MCwKKyAgICAvLyB2YWx1ZSAtIFRydWUoMjEpCisgICAgMHhmNSwK
KyAgICAvLyBrZXkgLSAidXYiCisgICAgMHg2MiwgMHg3NSwgMHg3NiwKKyAgICAvLyB2YWx1ZSAt
IFRydWUoMjEpCisgICAgMHhmNSwKKyAgICAvLyBrZXkoOCkgLSBwaW5Qcm90b2NvbAorICAgIDB4
MDgsCisgICAgLy8gdmFsdWUgLSAxCisgICAgMHgwMSwKKyAgICAvLyBrZXkoOSkgLSBwaW5BdXRo
CisgICAgMHgwOSwKKyAgICAvLyBieXRlcygxNikKKyAgICAweDUwLCAweDAwLCAweDAxLCAweDAy
LCAweDAzLCAweDA0LCAweDA1LCAweDA2LCAweDA3LCAweDA4LCAweDA5LCAweDBhLAorICAgIDB4
MGIsIDB4MGMsIDB4MGQsIDB4MGUsIDB4MGYKK307CisKIC8vIENUQVAgcmVzcG9uc2VzIC0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
CiAKIC8vIEEgc2FtcGxlIHdlbGwgZm9ybWVkIHJlc3BvbnNlIHRvIENUQVAgQXV0aGVudGljYXRv
ckdldEluZm8gcmVxdWVzdC4gQ3Jvc3MKQEAgLTg5Miw2ICsxMDU5LDEwMiBAQCBjb25zdGV4cHIg
dWludDhfdCBrRGV2aWNlR2V0QXNzZXJ0aW9uUmVzcG9uc2VbXSA9IHsKICAgICAweDAxLAogfTsK
IAorLy8gQ1RBUCBQSU4KKworY29uc3RleHByIHVpbnQ4X3Qga0N0YXAyUGluQXV0aFtdID0gewor
ICAgIDB4MDAsIDB4MDEsIDB4MDIsIDB4MDMsIDB4MDQsIDB4MDUsIDB4MDYsIDB4MDcsCisgICAg
MHgwOCwgMHgwOSwgMHgwYSwgMHgwYiwgMHgwYywgMHgwZCwgMHgwZSwgMHgwZiwKK307CisKK2Nv
bnN0ZXhwciB1aW50OF90IGtDdGFwQ2xpZW50UGluUmV0cmllc1tdID0geworICAgIC8vIGF1dGhl
bnRpY2F0b3JDbGllbnRQSU4gY29tbWFuZAorICAgIDB4MDYsCisgICAgLy8gbWFwKDIpCisgICAg
MHhhMiwKKyAgICAvLyBrZXkoMSkgLSBwaW5Qcm90b2NvbAorICAgIDB4MDEsCisgICAgLy8gdmFs
dWUgLSAxCisgICAgMHgwMSwKKyAgICAvLyBrZXkoMikgLSBzdWJDb21tYW5kCisgICAgMHgwMiwK
KyAgICAvLyB2YWx1ZSAtIDEoZ2V0UmV0cmllcykKKyAgICAweDAxLAorfTsKKworY29uc3RleHBy
IHVpbnQ4X3Qga0N0YXBDbGllbnRQaW5LZXlBZ3JlZW1lbnRbXSA9IHsKKyAgICAvLyBhdXRoZW50
aWNhdG9yQ2xpZW50UElOIGNvbW1hbmQKKyAgICAweDA2LAorICAgIC8vIG1hcCgyKQorICAgIDB4
YTIsCisgICAgLy8ga2V5KDEpIC0gcGluUHJvdG9jb2wKKyAgICAweDAxLAorICAgIC8vIHZhbHVl
IC0gMQorICAgIDB4MDEsCisgICAgLy8ga2V5KDIpIC0gc3ViQ29tbWFuZAorICAgIDB4MDIsCisg
ICAgLy8gdmFsdWUgLSAyKGdldEtleUFncmVlbWVudCkKKyAgICAweDAyLAorfTsKKworY29uc3Rl
eHByIHVpbnQ4X3Qga0N0YXBDbGllbnRQaW5Ub2tlblJlc3BvbnNlW10gPSB7CisgICAgLy8gU3Vj
Y2VzcworICAgIDB4MDAsCisgICAgLy8gbWFwKDEpCisgICAgMHhhMSwKKyAgICAvLyBrZXkoMikg
LSBwaW5Ub2tlbgorICAgIDB4MDIsCisgICAgLy8gYnl0ZXMoMzIpCisgICAgMHg1OCwgMHgyMCwK
KyAgICAvLyBlbmNyeXB0ZWQgdG9rZW4KKyAgICAweDQ4LCAweGI5LCAweDVkLCAweDNkLCAweDll
LCAweGVlLCAweGU1LCAweDAwLCAweGFiLCAweDUxLCAweDEzLCAweDJiLAorICAgIDB4MzUsIDB4
NzcsIDB4NjYsIDB4NWMsIDB4NDEsIDB4N2EsIDB4NTYsIDB4M2UsIDB4YjMsIDB4ZTIsIDB4M2Ms
IDB4YjcsCisgICAgMHg2YSwgMHgzNywgMHhiMywgMHhkZSwgMHg1NywgMHgyYiwgMHhjYSwgMHhh
YSwKK307CisKK2NvbnN0ZXhwciB1aW50OF90IGtDdGFwQ2xpZW50UGluS2V5QWdyZWVtZW50UmVz
cG9uc2VbXSA9IHsKKyAgICAvLyBTdWNjZXNzCisgICAgMHgwMCwKKyAgICAvLyBtYXAoMSkKKyAg
ICAweEExLAorICAgIC8vIGtleSgxKSAtIGtleUFncmVlbWVudAorICAgIDB4MDEsCisgICAgLy8g
TWFwKDUpCisgICAgMHhBNSwKKyAgICAvLyBrdHk6IEVDIGtleSB0eXBlCisgICAgMHgwMSwgMHgw
MiwKKyAgICAvLyBhbGc6IEVDREgyNTYgc2lnbmF0dXJlIGFsZ29yaXRobQorICAgIDB4MDMsIDB4
MzgsIDB4MTgsCisgICAgLy8gY3J2OiBQLTI1NiBjdXJ2ZQorICAgIDB4MjAsIDB4MDEsCisgICAg
Ly8geC1jb29yZGluYXRlCisgICAgMHgyMSwKKyAgICAvLyBCeXRlcygzMikKKyAgICAweDU4LCAw
eDIwLAorICAgIC8vIEJ5dGUgYXJyYXkgY29udGVudAorICAgIDB4RTgsIDB4NzYsIDB4MjUsIDB4
ODksIDB4NkUsIDB4RTQsIDB4RTQsIDB4NkQsIDB4QzAsIDB4MzIsIDB4NzYsIDB4NkUsCisgICAg
MHg4MCwgMHg4NywgMHg5NiwgMHgyRiwgMHgzNiwgMHhERiwgMHg5RCwgMHhGRSwgMHg4QiwgMHg1
NiwgMHg3RiwgMHgzNywKKyAgICAweDYzLCAweDAxLCAweDVCLCAweDE5LCAweDkwLCAweEE2LCAw
eDBFLCAweDE0LAorICAgIC8vIHktY29vcmRpbmF0ZQorICAgIDB4MjIsCisgICAgLy8gQnl0ZXMo
MzIpCisgICAgMHg1OCwgMHgyMCwKKyAgICAvLyBCeXRlIGFycmF5IGNvbnRlbnQKKyAgICAweDI3
LCAweERFLCAweDYxLCAweDJELCAweDY2LCAweDQxLCAweDhCLCAweERBLCAweDE5LCAweDUwLCAw
eDU4LCAweDFFLAorICAgIDB4QkMsIDB4NUMsIDB4OEMsIDB4MUQsIDB4QUQsIDB4NzEsIDB4MEMs
IDB4QjEsIDB4NEMsIDB4MjIsIDB4RjgsIDB4QzksCisgICAgMHg3MCwgMHg0NSwgMHhGNCwgMHg2
MSwgMHgyRiwgMHhCMiwgMHgwQywgMHg5MSwKK307CisKK2NvbnN0ZXhwciB1aW50OF90IGtDdGFw
Q2xpZW50UGluUmV0cmllc1Jlc3BvbnNlW10gPSB7CisgICAgLy8gU3VjY2VzcworICAgIDB4MDAs
CisgICAgLy8gbWFwKDEpCisgICAgMHhhMSwKKyAgICAvLyBrZXkoMykgLSByZXRyaWVzCisgICAg
MHgwMywKKyAgICAvLyB2YWx1ZSAtIDgKKyAgICAweDA4LAorfTsKKwogfSAvLyBuYW1lc3BhY2Ug
VGVzdERhdGEKIAogfSAvLyBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>385972</attachid>
            <date>2019-12-18 07:45:02 -0800</date>
            <delta_ts>2019-12-19 18:33:52 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-205376-20191218234453.patch</filename>
            <type>text/plain</type>
            <size>98537</size>
            <attacher name="Jiewen Tan">jiewen_tan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUzNDI1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjVkMTQzM2ZhNWExZjdh
ZDY3YTQ0M2Q3ZmRjOTMxYjk5NmIzMmI0MS4uYjU3ZmFkYWY2OGIwNTIwNTdhMTJiM2QwMGI5YTRj
ZTM3MzFjYTY5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc4IEBACisyMDE5LTEyLTE3ICBKaWV3
ZW4gVGFuICA8amlld2VuX3RhbkBhcHBsZS5jb20+CisKKyAgICAgICAgW1dlYkF1dGhuXSBJbXBs
ZW1lbnQgY29kZXJzIGZvciBDVEFQIENsaWVudFBJTiByZXF1ZXN0cyBhbmQgcmVzcG9uc2VzCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDUzNzYKKyAg
ICAgICAgPHJkYXI6Ly9wcm9ibGVtLzU4MDM0Mzk1PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2ggaW1wbGVtZW50cyBjb2RlcnMgZm9y
IGF1dGhlbnRpY2F0b3JDbGllbnRQSU4gcmVxdWVzdHMgYW5kIHJlc3BvbnNlcworICAgICAgICBm
b2xsb3dpbmcgdGhlIHNwZWM6CisgICAgICAgIGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9zcGVj
cy9maWRvLXYyLjAtcHMtMjAxOTAxMzAvZmlkby1jbGllbnQtdG8tYXV0aGVudGljYXRvci1wcm90
b2NvbC12Mi4wLXBzLTIwMTkwMTMwLmh0bWwjYXV0aGVudGljYXRvckNsaWVudFBJTgorCisgICAg
ICAgIFNwZWNpZmljYWxseSwgaXQKKyAgICAgICAgaSkgaW1wbGVtZW50cyBhdXRoZW50aWNhdG9y
Q2xpZW50UElOIHN1YkNvbW1hbmQ6IGdldFJldHJpZXMsIGdldEtleUFncmVlbWVudCBhbmQgZ2V0
UElOVG9rZW47CisgICAgICAgIGlpKSBhZGRzIHBpbkF1dGgvcGluUHJvdG9jb2wgdG8gYXV0aGVu
dGljYXRvck1ha2VDcmVkZW50aWFsL2F1dGhlbnRpY2F0b3JHZXRBc3NlcnRpb24uCisKKyAgICAg
ICAgRm9yIHRoZSBmaXJzdCBwYXJ0LCBpdCByZWZlcnMgYSBDaHJvbWl1bSBwYXRjaDoKKyAgICAg
ICAgaHR0cHM6Ly9jaHJvbWl1bS1yZXZpZXcuZ29vZ2xlc291cmNlLmNvbS9jL2Nocm9taXVtL3Ny
Yy8rLzE0NTcwMDQKKyAgICAgICAgU3BlY2lmaWNhbGx5LCBpdCB0YWtlcyB0aGUgaW50ZXJmYWNl
cyBmcm9tIHRoYXQgcGF0Y2guIEdpdmVuIGF1dGhlbnRpY2F0b3JDbGllbnRQSU4gbGFyZ2VseQor
ICAgICAgICBkZXBlbmRzIG9uIGNyeXB0byB0byBmdW5jdGlvbiwgdGhpcyBwYXRjaCByZXdyaXRl
cyBhbGwgY3J5cHRvIHBhcnQgb2YgdGhlIENocm9taXVtIHBhdGNoCisgICAgICAgIHdoaWNoIGJh
c2VzIG9uIEJvcmluZ1NTTCBieSB1c2luZyBXZWJDb3JlJ3MgV2ViQ3J5cHRvIGltcGxlbWVudGF0
aW9uLiBUaGlzIGFsbG93cyB1cyB0bworICAgICAgICBmb2N1cyBvbiBoaWdoIGxldmVsIGNyeXB0
byBpbnRlcmZhY2VzLCBhbmQgbGV0IFdlYkNyeXB0byBoYW5kbGVzIHRoZSB1bmRlcm5lYXRoIGNy
eXB0byBsaWJyYXJ5LgorICAgICAgICBBbHNvLCB0aGUgb3JpZ2luYWwgcGF0Y2ggZG9lc24ndCBo
YXZlIGFueSB0ZXN0cywgdGhpcyBwYXRjaCBhbHNvIGludHJvZHVjZXMgYSBsYXJnZSBzZXQKKyAg
ICAgICAgb2YgQVBJIHRlc3RzLgorCisgICAgICAgIFRvIGFsbG93IFdlYkNyeXB0byB0byBiZSB1
c2VkIGluIGJvdGggdGhlIGltcGxlbWVudGF0aW9uIGFuZCB0aGUgQVBJIHRlc3RzLCBwYXJ0IG9m
IGl0IHRoYXQKKyAgICAgICAgaW5jbHVkZXMgQUVTIENCQywgRUNESCwgYW5kIEhNQUMgaGFzIG1v
dmVkIHBsYXRmb3JtKiBvcGVyYXRpb25zIHRvIHB1YmxpYyBzdWNoIHRoYXQgY2FsbGVycworICAg
ICAgICBjYW4gdXNlIHRob3NlIHN0YXRpYyBtZXRob2RzIGRpcmVjdGx5IHdpdGhvdXQgcm91bmR0
cmlwcyB0byBXZWJDcnlwdG8ncyB3ZWIgaW50ZXJmYWNlcywgYW5kCisgICAgICAgIG1hZGUgaGVh
ZGVycyBwcml2YXRlIGZvciBUZXN0V2ViS2l0QVBJLgorCisgICAgICAgIENvdmVyZWQgYnkgQVBJ
IHRlc3RzLgorCisgICAgICAgICogTW9kdWxlcy93ZWJhdXRobi9XZWJBdXRoZW50aWNhdGlvbkNv
bnN0YW50cy5oOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXV0aG4vY2Jvci9DQk9SUmVhZGVyLmNw
cDoKKyAgICAgICAgKGNib3I6OkNCT1JSZWFkZXI6OnJlYWRDQk9STWFwKToKKyAgICAgICAgTGV0
IENCT1JSZWFkZXIgcmVjb2duaXplIG5lZ2F0aXZlIG1hcCBrZXlzLgorICAgICAgICAqIE1vZHVs
ZXMvd2ViYXV0aG4vZmlkby9EZXZpY2VSZXF1ZXN0Q29udmVydGVyLmNwcDoKKyAgICAgICAgKGZp
ZG86OmVuY29kZU1ha2VDcmVkZW5pdGFsUmVxdWVzdEFzQ0JPUik6CisgICAgICAgIChmaWRvOjpl
bmNvZGVHZXRBc3NlcnRpb25SZXF1ZXN0QXNDQk9SKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1
dGhuL2ZpZG8vRGV2aWNlUmVxdWVzdENvbnZlcnRlci5oOgorICAgICAgICAqIE1vZHVsZXMvd2Vi
YXV0aG4vZmlkby9QaW4uY3BwOiBBZGRlZC4KKyAgICAgICAgKGZpZG86OnBpbjo6aGFzQXRMZWFz
dEZvdXJDb2RlcG9pbnRzKToKKyAgICAgICAgKGZpZG86OnBpbjo6bWFrZVBpbkF1dGgpOgorICAg
ICAgICAoZmlkbzo6cGluOjplbmNvZGVSYXdQdWJsaWNLZXkpOgorICAgICAgICAoZmlkbzo6cGlu
Ojp2YWxpZGF0ZUFuZENvbnZlcnRUb1VURjgpOgorICAgICAgICAoZmlkbzo6cGluOjplbmNvZGVQ
aW5Db21tYW5kKToKKyAgICAgICAgKGZpZG86OnBpbjo6UmV0cmllc1Jlc3BvbnNlOjpwYXJzZSk6
CisgICAgICAgIChmaWRvOjpwaW46OktleUFncmVlbWVudFJlc3BvbnNlOjpLZXlBZ3JlZW1lbnRS
ZXNwb25zZSk6CisgICAgICAgIChmaWRvOjpwaW46OktleUFncmVlbWVudFJlc3BvbnNlOjpwYXJz
ZSk6CisgICAgICAgIChmaWRvOjpwaW46OktleUFncmVlbWVudFJlc3BvbnNlOjpwYXJzZUZyb21D
T1NFKToKKyAgICAgICAgKGZpZG86OnBpbjo6ZW5jb2RlQ09TRVB1YmxpY0tleSk6CisgICAgICAg
IChmaWRvOjpwaW46OlRva2VuUmVzcG9uc2U6OlRva2VuUmVzcG9uc2UpOgorICAgICAgICAoZmlk
bzo6cGluOjpUb2tlblJlc3BvbnNlOjpwYXJzZSk6CisgICAgICAgIChmaWRvOjpwaW46OlRva2Vu
UmVzcG9uc2U6OnBpbkF1dGggY29uc3QpOgorICAgICAgICAoZmlkbzo6cGluOjpUb2tlblJlc3Bv
bnNlOjp0b2tlbiBjb25zdCk6CisgICAgICAgIChmaWRvOjpwaW46OmVuY29kZUFzQ0JPUik6Cisg
ICAgICAgIChmaWRvOjpwaW46OlRva2VuUmVxdWVzdDo6dHJ5Q3JlYXRlKToKKyAgICAgICAgKGZp
ZG86OnBpbjo6VG9rZW5SZXF1ZXN0OjpUb2tlblJlcXVlc3QpOgorICAgICAgICAoZmlkbzo6cGlu
OjpUb2tlblJlcXVlc3Q6OnNoYXJlZEtleSBjb25zdCk6CisgICAgICAgICogTW9kdWxlcy93ZWJh
dXRobi9maWRvL1Bpbi5oOiBBZGRlZC4KKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAg
KiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogY3J5cHRvL0Ny
eXB0b0FsZ29yaXRobS5oOgorICAgICAgICAqIGNyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29y
aXRobUFFU19DQkMuaDoKKyAgICAgICAgKiBjcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0
aG1FQ0RILmg6CisgICAgICAgICogY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtSE1B
Qy5oOgorICAgICAgICAqIGNyeXB0by9rZXlzL0NyeXB0b0tleUFFUy5jcHA6CisgICAgICAgICog
Y3J5cHRvL2tleXMvQ3J5cHRvS2V5QUVTLmg6CisgICAgICAgICogY3J5cHRvL2tleXMvQ3J5cHRv
S2V5RUMuaDoKKyAgICAgICAgKiBjcnlwdG8vbWFjL0NyeXB0b0FsZ29yaXRobUFFU19DQkNNYWMu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvQWxnb3JpdGhtQUVTX0NCQzo6cGxhdGZvcm1F
bmNyeXB0KToKKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0FsZ29yaXRobUFFU19DQkM6OnBsYXRm
b3JtRGVjcnlwdCk6CisgICAgICAgICogY3J5cHRvL21hYy9DcnlwdG9LZXlSU0FNYWMuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvS2V5UlNBOjphbGdvcml0aG0gY29uc3QpOgorCiAyMDE5
LTEyLTEyICB5b3Vlbm4gZmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW1v
dmUgZGVidWcgQVNTRVJUIGluIFBlZXJDb25uZWN0aW9uQmFja2VuZApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9XZWJBdXRoZW50aWNhdGlvbkNvbnN0YW50cy5o
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9XZWJBdXRoZW50aWNhdGlvbkNvbnN0
YW50cy5oCmluZGV4IDE4MmUyZWEwNjA0NWQ4YTUzZDg0ZTk4ZGQ1OTQ1Zjc0YTlkYzE4NDMuLjY4
MzMxZjVhN2IxNzg3ZjE1ZDYwYzQxMWQ0ZTJlZTZiYjZhYWJmNTAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vV2ViQXV0aGVudGljYXRpb25Db25zdGFudHMuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL1dlYkF1dGhlbnRpY2F0aW9uQ29u
c3RhbnRzLmgKQEAgLTM4LDYgKzM4LDcgQEAgY29uc3QgaW50NjRfdCB5ID0gLTM7CiAvLyBWYWx1
ZXMKIGNvbnN0IGludDY0X3QgRUMyID0gMjsKIGNvbnN0IGludDY0X3QgRVMyNTYgPSAtNzsKK2Nv
bnN0IGludDY0X3QgRUNESDI1NiA9IC0yNTsKIGNvbnN0IGludDY0X3QgUF8yNTYgPSAxOwogCiB9
IC8vIG5hbWVzcGFjZSBDT1NFCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmF1dGhuL2Nib3IvQ0JPUlJlYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
dGhuL2Nib3IvQ0JPUlJlYWRlci5jcHAKaW5kZXggYWY1YjEwM2M2ZTU5YmUzMDAxZWYxYjY3MDNm
MzYzZDAxNmYzZTFkMS4uY2UyZjBjMjcxNDFiMDBjZjIzZDZkZWU2ZmMyZDliNTNhOGViMWU1MCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9jYm9yL0NCT1JSZWFk
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vY2Jvci9DQk9SUmVh
ZGVyLmNwcApAQCAtMjY5LDcgKzI2OSw3IEBAIE9wdGlvbmFsPENCT1JWYWx1ZT4gQ0JPUlJlYWRl
cjo6cmVhZENCT1JNYXAodWludDY0X3QgbGVuZ3RoLCBpbnQgbWF4TmVzdGluZ0xldmVsCiAgICAg
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogCiAgICAgICAgIC8vIE9ubHkgQ0JPUiBtYXBz
IHdpdGggaW50ZWdlciBvciBzdHJpbmcgdHlwZSBrZXlzIGFyZSBhbGxvd2VkLgotICAgICAgICBp
ZiAoa2V5LnZhbHVlKCkudHlwZSgpICE9IENCT1JWYWx1ZTo6VHlwZTo6U3RyaW5nICYmIGtleS52
YWx1ZSgpLnR5cGUoKSAhPSBDQk9SVmFsdWU6OlR5cGU6OlVuc2lnbmVkKSB7CisgICAgICAgIGlm
IChrZXktPmlzU3RyaW5nKCkgJiYga2V5LT5pc0ludGVnZXIoKSkgewogICAgICAgICAgICAgbV9l
cnJvckNvZGUgPSBEZWNvZGVyRXJyb3I6OkluY29ycmVjdE1hcEtleVR5cGU7CiAgICAgICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmF1dGhuL2ZpZG8vRGV2aWNlUmVxdWVzdENvbnZlcnRlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL2ZpZG8vRGV2aWNlUmVxdWVzdENvbnZlcnRl
ci5jcHAKaW5kZXggZWJkYjE5MjUzYjJlZmJhNmFhNDU2MDUxNjM2MWFjNzJkMTVhYTg1MS4uYjk2
ZGFiYjU5ODY5YzQyNWJkYmJhNDdlOTNmNWQzMDA5OGFhOWQ4OSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9maWRvL0RldmljZVJlcXVlc3RDb252ZXJ0ZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vZmlkby9EZXZpY2VSZXF1ZXN0
Q29udmVydGVyLmNwcApAQCAtODcsNyArODcsNyBAQCBzdGF0aWMgQ0JPUlZhbHVlIGNvbnZlcnRE
ZXNjcmlwdG9yVG9DQk9SKGNvbnN0IFB1YmxpY0tleUNyZWRlbnRpYWxEZXNjcmlwdG9yJiBkZQog
ICAgIHJldHVybiBDQk9SVmFsdWUoV1RGTW92ZShjYm9yRGVzY3JpcHRvck1hcCkpOwogfQogCi1W
ZWN0b3I8dWludDhfdD4gZW5jb2RlTWFrZUNyZWRlbml0YWxSZXF1ZXN0QXNDQk9SKGNvbnN0IFZl
Y3Rvcjx1aW50OF90PiYgaGFzaCwgY29uc3QgUHVibGljS2V5Q3JlZGVudGlhbENyZWF0aW9uT3B0
aW9ucyYgb3B0aW9ucywgVVZBdmFpbGFiaWxpdHkgdXZDYXBhYmlsaXR5KQorVmVjdG9yPHVpbnQ4
X3Q+IGVuY29kZU1ha2VDcmVkZW5pdGFsUmVxdWVzdEFzQ0JPUihjb25zdCBWZWN0b3I8dWludDhf
dD4mIGhhc2gsIGNvbnN0IFB1YmxpY0tleUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnMmIG9wdGlv
bnMsIFVWQXZhaWxhYmlsaXR5IHV2Q2FwYWJpbGl0eSwgT3B0aW9uYWw8UGluUGFyYW1ldGVycz4g
cGluKQogewogICAgIENCT1JWYWx1ZTo6TWFwVmFsdWUgY2Jvck1hcDsKICAgICBjYm9yTWFwW0NC
T1JWYWx1ZSgxKV0gPSBDQk9SVmFsdWUoaGFzaCk7CkBAIC0xMjQsNiArMTI0LDEyIEBAIFZlY3Rv
cjx1aW50OF90PiBlbmNvZGVNYWtlQ3JlZGVuaXRhbFJlcXVlc3RBc0NCT1IoY29uc3QgVmVjdG9y
PHVpbnQ4X3Q+JiBoYXNoLCBjCiAgICAgaWYgKCFvcHRpb25NYXAuZW1wdHkoKSkKICAgICAgICAg
Y2Jvck1hcFtDQk9SVmFsdWUoNyldID0gQ0JPUlZhbHVlKFdURk1vdmUob3B0aW9uTWFwKSk7CiAK
KyAgICBpZiAocGluKSB7CisgICAgICAgIEFTU0VSVChwaW4tPnByb3RvY29sID49IDApOworICAg
ICAgICBjYm9yTWFwW0NCT1JWYWx1ZSg4KV0gPSBDQk9SVmFsdWUocGluLT5wcm90b2NvbCk7Cisg
ICAgICAgIGNib3JNYXBbQ0JPUlZhbHVlKDkpXSA9IENCT1JWYWx1ZShXVEZNb3ZlKHBpbi0+YXV0
aCkpOworICAgIH0KKwogICAgIGF1dG8gc2VyaWFsaXplZFBhcmFtID0gQ0JPUldyaXRlcjo6d3Jp
dGUoQ0JPUlZhbHVlKFdURk1vdmUoY2Jvck1hcCkpKTsKICAgICBBU1NFUlQoc2VyaWFsaXplZFBh
cmFtKTsKIApAQCAtMTMyLDcgKzEzOCw3IEBAIFZlY3Rvcjx1aW50OF90PiBlbmNvZGVNYWtlQ3Jl
ZGVuaXRhbFJlcXVlc3RBc0NCT1IoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBoYXNoLCBjCiAgICAg
cmV0dXJuIGNib3JSZXF1ZXN0OwogfQogCi1WZWN0b3I8dWludDhfdD4gZW5jb2RlR2V0QXNzZXJ0
aW9uUmVxdWVzdEFzQ0JPUihjb25zdCBWZWN0b3I8dWludDhfdD4mIGhhc2gsIGNvbnN0IFB1Ymxp
Y0tleUNyZWRlbnRpYWxSZXF1ZXN0T3B0aW9ucyYgb3B0aW9ucywgVVZBdmFpbGFiaWxpdHkgdXZD
YXBhYmlsaXR5KQorVmVjdG9yPHVpbnQ4X3Q+IGVuY29kZUdldEFzc2VydGlvblJlcXVlc3RBc0NC
T1IoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBoYXNoLCBjb25zdCBQdWJsaWNLZXlDcmVkZW50aWFs
UmVxdWVzdE9wdGlvbnMmIG9wdGlvbnMsIFVWQXZhaWxhYmlsaXR5IHV2Q2FwYWJpbGl0eSwgT3B0
aW9uYWw8UGluUGFyYW1ldGVycz4gcGluKQogewogICAgIENCT1JWYWx1ZTo6TWFwVmFsdWUgY2Jv
ck1hcDsKICAgICBjYm9yTWFwW0NCT1JWYWx1ZSgxKV0gPSBDQk9SVmFsdWUob3B0aW9ucy5ycElk
KTsKQEAgLTE2NCw2ICsxNzAsMTIgQEAgVmVjdG9yPHVpbnQ4X3Q+IGVuY29kZUdldEFzc2VydGlv
blJlcXVlc3RBc0NCT1IoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBoYXNoLCBjb24KICAgICBpZiAo
IW9wdGlvbk1hcC5lbXB0eSgpKQogICAgICAgICBjYm9yTWFwW0NCT1JWYWx1ZSg1KV0gPSBDQk9S
VmFsdWUoV1RGTW92ZShvcHRpb25NYXApKTsKIAorICAgIGlmIChwaW4pIHsKKyAgICAgICAgQVNT
RVJUKHBpbi0+cHJvdG9jb2wgPj0gMCk7CisgICAgICAgIGNib3JNYXBbQ0JPUlZhbHVlKDgpXSA9
IENCT1JWYWx1ZShwaW4tPnByb3RvY29sKTsKKyAgICAgICAgY2Jvck1hcFtDQk9SVmFsdWUoOSld
ID0gQ0JPUlZhbHVlKFdURk1vdmUocGluLT5hdXRoKSk7CisgICAgfQorCiAgICAgYXV0byBzZXJp
YWxpemVkUGFyYW0gPSBDQk9SV3JpdGVyOjp3cml0ZShDQk9SVmFsdWUoV1RGTW92ZShjYm9yTWFw
KSkpOwogICAgIEFTU0VSVChzZXJpYWxpemVkUGFyYW0pOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL2ZpZG8vRGV2aWNlUmVxdWVzdENvbnZlcnRlci5oIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9maWRvL0RldmljZVJlcXVlc3RDb252ZXJ0
ZXIuaAppbmRleCA3ODExNGZhZWI3YjdkMzlmY2I2NjllYmIyOGEwOGU4MWU3ZjVlYWQ4Li5hODk3
NmUwYzkwNDhjM2JhMzgyMWJjZmRjY2QyZTY0NTIwOWU2ZDc4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL2ZpZG8vRGV2aWNlUmVxdWVzdENvbnZlcnRlci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vZmlkby9EZXZpY2VSZXF1ZXN0Q29u
dmVydGVyLmgKQEAgLTQyLDE1ICs0MiwyMCBAQCBzdHJ1Y3QgUHVibGljS2V5Q3JlZGVudGlhbFJl
cXVlc3RPcHRpb25zOwogCiBuYW1lc3BhY2UgZmlkbyB7CiAKK3N0cnVjdCBQaW5QYXJhbWV0ZXJz
IHsKKyAgICBpbnQgcHJvdG9jb2w7CisgICAgVmVjdG9yPHVpbnQ4X3Q+IGF1dGg7Cit9OworCiAv
LyBTZXJpYWxpemVzIE1ha2VDcmVkZW50aWFsIHJlcXVlc3QgcGFyYW1ldGVyIGludG8gQ0JPUiBl
bmNvZGVkIG1hcCB3aXRoCiAvLyBpbnRlZ2VyIGtleXMgYW5kIENCT1IgZW5jb2RlZCB2YWx1ZXMg
YXMgZGVmaW5lZCBieSB0aGUgQ1RBUCBzcGVjLgogLy8gaHR0cHM6Ly9maWRvYWxsaWFuY2Uub3Jn
L3NwZWNzL2ZpZG8tdjIuMC1wcy0yMDE3MDkyNy9maWRvLWNsaWVudC10by1hdXRoZW50aWNhdG9y
LXByb3RvY29sLXYyLjAtcHMtMjAxNzA5MjcuaHRtbCNhdXRoZW50aWNhdG9yTWFrZUNyZWRlbnRp
YWwKLVdFQkNPUkVfRVhQT1JUIFZlY3Rvcjx1aW50OF90PiBlbmNvZGVNYWtlQ3JlZGVuaXRhbFJl
cXVlc3RBc0NCT1IoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBoYXNoLCBjb25zdCBXZWJDb3JlOjpQ
dWJsaWNLZXlDcmVkZW50aWFsQ3JlYXRpb25PcHRpb25zJiwgQXV0aGVudGljYXRvclN1cHBvcnRl
ZE9wdGlvbnM6OlVzZXJWZXJpZmljYXRpb25BdmFpbGFiaWxpdHkpOworV0VCQ09SRV9FWFBPUlQg
VmVjdG9yPHVpbnQ4X3Q+IGVuY29kZU1ha2VDcmVkZW5pdGFsUmVxdWVzdEFzQ0JPUihjb25zdCBW
ZWN0b3I8dWludDhfdD4mIGhhc2gsIGNvbnN0IFdlYkNvcmU6OlB1YmxpY0tleUNyZWRlbnRpYWxD
cmVhdGlvbk9wdGlvbnMmLCBBdXRoZW50aWNhdG9yU3VwcG9ydGVkT3B0aW9uczo6VXNlclZlcmlm
aWNhdGlvbkF2YWlsYWJpbGl0eSwgT3B0aW9uYWw8UGluUGFyYW1ldGVycz4gcGluID0gV1RGOjpu
dWxsb3B0KTsKIAogLy8gU2VyaWFsaXplcyBHZXRBc3NlcnRpb24gcmVxdWVzdCBwYXJhbWV0ZXIg
aW50byBDQk9SIGVuY29kZWQgbWFwIHdpdGgKIC8vIGludGVnZXIga2V5cyBhbmQgQ0JPUiBlbmNv
ZGVkIHZhbHVlcyBhcyBkZWZpbmVkIGJ5IHRoZSBDVEFQIHNwZWMuCiAvLyBodHRwczovL2ZpZG9h
bGxpYW5jZS5vcmcvc3BlY3MvZmlkby12Mi4wLXBzLTIwMTcwOTI3L2ZpZG8tY2xpZW50LXRvLWF1
dGhlbnRpY2F0b3ItcHJvdG9jb2wtdjIuMC1wcy0yMDE3MDkyNy5odG1sI2F1dGhlbnRpY2F0b3JH
ZXRBc3NlcnRpb24KLVdFQkNPUkVfRVhQT1JUIFZlY3Rvcjx1aW50OF90PiBlbmNvZGVHZXRBc3Nl
cnRpb25SZXF1ZXN0QXNDQk9SKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgaGFzaCwgY29uc3QgV2Vi
Q29yZTo6UHVibGljS2V5Q3JlZGVudGlhbFJlcXVlc3RPcHRpb25zJiwgQXV0aGVudGljYXRvclN1
cHBvcnRlZE9wdGlvbnM6OlVzZXJWZXJpZmljYXRpb25BdmFpbGFiaWxpdHkpOworV0VCQ09SRV9F
WFBPUlQgVmVjdG9yPHVpbnQ4X3Q+IGVuY29kZUdldEFzc2VydGlvblJlcXVlc3RBc0NCT1IoY29u
c3QgVmVjdG9yPHVpbnQ4X3Q+JiBoYXNoLCBjb25zdCBXZWJDb3JlOjpQdWJsaWNLZXlDcmVkZW50
aWFsUmVxdWVzdE9wdGlvbnMmLCBBdXRoZW50aWNhdG9yU3VwcG9ydGVkT3B0aW9uczo6VXNlclZl
cmlmaWNhdGlvbkF2YWlsYWJpbGl0eSwgT3B0aW9uYWw8UGluUGFyYW1ldGVycz4gcGluID0gV1RG
OjpudWxsb3B0KTsKIAogLy8gUmVwcmVzZW50cyBDVEFQIHJlcXVlc3RzIHdpdGggZW1wdHkgcGFy
YW1ldGVycywgaW5jbHVkaW5nCiAvLyBBdXRoZW50aWNhdG9yR2V0SW5mbywgQXV0aGVudGljYXRv
clJlc2V0IGFuZCBBdXRoZW50aWNhdG9yR2V0TmV4dEFzc2VydGlvbiBjb21tYW5kcy4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vZmlkby9QaW4uY3BwIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9maWRvL1Bpbi5jcHAKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTFm
NmYxOGEyMGYxOWQyMDhjZTA3ODc3Njk5NzhhNzNhZTg5MDZlNgotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vZmlkby9QaW4uY3BwCkBAIC0wLDAgKzEs
MzIzIEBACisvLyBDb3B5cmlnaHQgMjAxOSBUaGUgQ2hyb21pdW0gQXV0aG9ycy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKy8vIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisvLworLy8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisvLyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisvLyBtZXQ6Cisv
LworLy8gICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorLy8gbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorLy8gICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisvLyBjb3B5cmlnaHQgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisvLyBp
biB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlCisvLyBkaXN0cmlidXRpb24uCisvLyAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xl
IEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKy8vIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0
byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisvLyB0aGlzIHNvZnR3
YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorLy8KKy8vIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05U
UklCVVRPUlMKKy8vICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKy8vIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisv
LyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwKKy8vIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorLy8gREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZCisvLyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisvLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKy8vIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKyNp
bmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJQaW4uaCIKKworI2lmIEVOQUJMRShXRUJfQVVU
SE4pCisKKyNpbmNsdWRlICJDQk9SUmVhZGVyLmgiCisjaW5jbHVkZSAiQ0JPUldyaXRlci5oIgor
I2luY2x1ZGUgIkNyeXB0b0FsZ29yaXRobUFFU19DQkMuaCIKKyNpbmNsdWRlICJDcnlwdG9BbGdv
cml0aG1BZXNDYmNDZmJQYXJhbXMuaCIKKyNpbmNsdWRlICJDcnlwdG9BbGdvcml0aG1FQ0RILmgi
CisjaW5jbHVkZSAiQ3J5cHRvQWxnb3JpdGhtSE1BQy5oIgorI2luY2x1ZGUgIkNyeXB0b0tleUFF
Uy5oIgorI2luY2x1ZGUgIkNyeXB0b0tleUVDLmgiCisjaW5jbHVkZSAiQ3J5cHRvS2V5SE1BQy5o
IgorI2luY2x1ZGUgPHBhbC9jcnlwdG8vQ3J5cHRvRGlnZXN0Lmg+CisKK25hbWVzcGFjZSBmaWRv
IHsKK25hbWVzcGFjZSBwaW4gewordXNpbmcgbmFtZXNwYWNlIGNib3I7CisKKy8vIGhhc0F0TGVh
c3RGb3VyQ29kZXBvaW50cyByZXR1cm5zIHRydWUgaWYgfHBpbnwgY29udGFpbnMKKy8vIGZvdXIg
b3IgbW9yZSBjb2RlIHBvaW50cy4gVGhpcyByZWZsZWN0cyB0aGUgIjQgVW5pY29kZSBjaGFyYWN0
ZXJzIgorLy8gcmVxdWlyZW1lbnQgaW4gQ1RBUDIuCitzdGF0aWMgYm9vbCBoYXNBdExlYXN0Rm91
ckNvZGVwb2ludHMoY29uc3QgU3RyaW5nJiBwaW4pCit7CisgICAgcmV0dXJuIHBpbi5sZW5ndGgo
KSA+PSA0OworfQorCisvLyBtYWtlUGluQXV0aCByZXR1cm5zIGBMRUZUKEhNQUMtU0hBLTI1Nihz
ZWNyZXQsIGRhdGEpLCAxNilgLgorc3RhdGljIFZlY3Rvcjx1aW50OF90PiBtYWtlUGluQXV0aChj
b25zdCBDcnlwdG9LZXlITUFDJiBrZXksIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgZGF0YSkKK3sK
KyAgICBhdXRvIHJlc3VsdCA9IENyeXB0b0FsZ29yaXRobUhNQUM6OnBsYXRmb3JtU2lnbihrZXks
IGRhdGEpOworICAgIEFTU0VSVCghcmVzdWx0Lmhhc0V4Y2VwdGlvbigpKTsKKyAgICBhdXRvIHBp
bkF1dGggPSByZXN1bHQucmVsZWFzZVJldHVyblZhbHVlKCk7CisgICAgcGluQXV0aC5zaHJpbmso
MTYpOworICAgIHJldHVybiBwaW5BdXRoOworfQorCitWZWN0b3I8dWludDhfdD4gZW5jb2RlUmF3
UHVibGljS2V5KGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgeCwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+
JiB5KQoreworICAgIFZlY3Rvcjx1aW50OF90PiByYXdLZXk7CisgICAgcmF3S2V5LnJlc2VydmVD
YXBhY2l0eSgxICsgeC5zaXplKCkgKyB5LnNpemUoKSk7CisgICAgcmF3S2V5LmFwcGVuZCgweDA0
KTsKKyAgICByYXdLZXkuYXBwZW5kVmVjdG9yKHgpOworICAgIHJhd0tleS5hcHBlbmRWZWN0b3Io
eSk7CisgICAgcmV0dXJuIHJhd0tleTsKK30KKworT3B0aW9uYWw8Q1N0cmluZz4gdmFsaWRhdGVB
bmRDb252ZXJ0VG9VVEY4KGNvbnN0IFN0cmluZyYgcGluKQoreworICAgIGlmICghaGFzQXRMZWFz
dEZvdXJDb2RlcG9pbnRzKHBpbikpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAg
YXV0byByZXN1bHQgPSBwaW4udXRmOCgpOworICAgIGlmIChyZXN1bHQubGVuZ3RoKCkgPCBrTWlu
Qnl0ZXMgfHwgcmVzdWx0Lmxlbmd0aCgpID4ga01heEJ5dGVzKQorICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworICAgIHJldHVybiByZXN1bHQ7Cit9CisKKy8vIGVuY29kZVBJTkNvbW1hbmQg
cmV0dXJucyBhIENUQVAyIFBJTiBjb21tYW5kIGZvciB0aGUgb3BlcmF0aW9uIHxzdWJjb21tYW5k
fC4KKy8vIEFkZGl0aW9uYWwgZWxlbWVudHMgb2YgdGhlIHRvcC1sZXZlbCBDQk9SIG1hcCBjYW4g
YmUgYWRkZWQgd2l0aCB0aGUgb3B0aW9uYWwKKy8vIHxhZGRBZGRpdGlvbmFsfCBjYWxsYmFjay4K
K3N0YXRpYyBWZWN0b3I8dWludDhfdD4gZW5jb2RlUGluQ29tbWFuZChTdWJjb21tYW5kIHN1YmNv
bW1hbmQsIEZ1bmN0aW9uPHZvaWQoQ0JPUlZhbHVlOjpNYXBWYWx1ZSopPiBhZGRBZGRpdGlvbmFs
ID0gbnVsbHB0cikKK3sKKyAgICBDQk9SVmFsdWU6Ok1hcFZhbHVlIG1hcDsKKyAgICBtYXAuZW1w
bGFjZShzdGF0aWNfY2FzdDxpbnQ+KFJlcXVlc3RLZXk6OmtQcm90b2NvbCksIGtQcm90b2NvbFZl
cnNpb24pOworICAgIG1hcC5lbXBsYWNlKHN0YXRpY19jYXN0PGludD4oUmVxdWVzdEtleTo6a1N1
YmNvbW1hbmQpLCBzdGF0aWNfY2FzdDxpbnQ+KHN1YmNvbW1hbmQpKTsKKworICAgIGlmIChhZGRB
ZGRpdGlvbmFsKQorICAgICAgICBhZGRBZGRpdGlvbmFsKCZtYXApOworCisgICAgLy8gRklYTUUo
MjA1Mzc1KQorICAgIGF1dG8gc2VyaWFsaXplZFBhcmFtID0gQ0JPUldyaXRlcjo6d3JpdGUoQ0JP
UlZhbHVlKFdURk1vdmUobWFwKSkpOworICAgIEFTU0VSVChzZXJpYWxpemVkUGFyYW0pOworCisg
ICAgVmVjdG9yPHVpbnQ4X3Q+IGNib3JSZXF1ZXN0KHsgc3RhdGljX2Nhc3Q8dWludDhfdD4oQ3Rh
cFJlcXVlc3RDb21tYW5kOjprQXV0aGVudGljYXRvckNsaWVudFBpbikgfSk7CisgICAgY2JvclJl
cXVlc3QuYXBwZW5kVmVjdG9yKCpzZXJpYWxpemVkUGFyYW0pOworICAgIHJldHVybiBjYm9yUmVx
dWVzdDsKK30KKworUmV0cmllc1Jlc3BvbnNlOjpSZXRyaWVzUmVzcG9uc2UoKSA9IGRlZmF1bHQ7
CisKKy8vIHN0YXRpYworT3B0aW9uYWw8UmV0cmllc1Jlc3BvbnNlPiBSZXRyaWVzUmVzcG9uc2U6
OnBhcnNlKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgaW5CdWZmZXIpCit7CisgICAgLy8gRklYTUUo
MjA1Mzc1KQorICAgIGlmIChpbkJ1ZmZlci5zaXplKCkgPD0ga1Jlc3BvbnNlQ29kZUxlbmd0aCB8
fCBnZXRSZXNwb25zZUNvZGUoaW5CdWZmZXIpICE9IEN0YXBEZXZpY2VSZXNwb25zZUNvZGU6OmtT
dWNjZXNzKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgVmVjdG9yPHVpbnQ4
X3Q+IGJ1ZmZlcjsKKyAgICBidWZmZXIuYXBwZW5kKGluQnVmZmVyLmRhdGEoKSArIDEsIGluQnVm
ZmVyLnNpemUoKSAtIDEpOworICAgIE9wdGlvbmFsPENCT1I+IGRlY29kZWRSZXNwb25zZSA9IGNi
b3I6OkNCT1JSZWFkZXI6OnJlYWQoYnVmZmVyKTsKKyAgICBpZiAoIWRlY29kZWRSZXNwb25zZSB8
fCAhZGVjb2RlZFJlc3BvbnNlLT5pc01hcCgpKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworICAgIGNvbnN0IGF1dG8mIHJlc3BvbnNlTWFwID0gZGVjb2RlZFJlc3BvbnNlLT5nZXRNYXAo
KTsKKworICAgIGF1dG8gaXQgPSByZXNwb25zZU1hcC5maW5kKENCT1JWYWx1ZShzdGF0aWNfY2Fz
dDxpbnQ+KFJlc3BvbnNlS2V5OjprUmV0cmllcykpKTsKKyAgICBpZiAoaXQgPT0gcmVzcG9uc2VN
YXAuZW5kKCkgfHwgIWl0LT5zZWNvbmQuaXNVbnNpZ25lZCgpKQorICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworCisgICAgUmV0cmllc1Jlc3BvbnNlIHJldDsKKyAgICByZXQucmV0cmllcyA9
IHN0YXRpY19jYXN0PGludD4oaXQtPnNlY29uZC5nZXRVbnNpZ25lZCgpKTsKKyAgICByZXR1cm4g
cmV0OworfQorCitLZXlBZ3JlZW1lbnRSZXNwb25zZTo6S2V5QWdyZWVtZW50UmVzcG9uc2UoUmVm
PENyeXB0b0tleUVDPiYmIHBlZXJLZXkpCisgICAgOiBwZWVyS2V5KFdURk1vdmUocGVlcktleSkp
Cit7Cit9CisKKy8vIHN0YXRpYworT3B0aW9uYWw8S2V5QWdyZWVtZW50UmVzcG9uc2U+IEtleUFn
cmVlbWVudFJlc3BvbnNlOjpwYXJzZShjb25zdCBWZWN0b3I8dWludDhfdD4mIGluQnVmZmVyKQor
eworICAgIC8vIEZJWE1FKDIwNTM3NSkKKyAgICBpZiAoaW5CdWZmZXIuc2l6ZSgpIDw9IGtSZXNw
b25zZUNvZGVMZW5ndGggfHwgZ2V0UmVzcG9uc2VDb2RlKGluQnVmZmVyKSAhPSBDdGFwRGV2aWNl
UmVzcG9uc2VDb2RlOjprU3VjY2VzcykKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKwor
ICAgIFZlY3Rvcjx1aW50OF90PiBidWZmZXI7CisgICAgYnVmZmVyLmFwcGVuZChpbkJ1ZmZlci5k
YXRhKCkgKyAxLCBpbkJ1ZmZlci5zaXplKCkgLSAxKTsKKyAgICBhdXRvIGRlY29kZWRSZXNwb25z
ZSA9IGNib3I6OkNCT1JSZWFkZXI6OnJlYWQoYnVmZmVyKTsKKyAgICBpZiAoIWRlY29kZWRSZXNw
b25zZSB8fCAhZGVjb2RlZFJlc3BvbnNlLT5pc01hcCgpKQorICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworICAgIGNvbnN0IGF1dG8mIHJlc3BvbnNlTWFwID0gZGVjb2RlZFJlc3BvbnNlLT5n
ZXRNYXAoKTsKKworICAgIC8vIFRoZSBlcGhlbWVyYWwga2V5IGlzIGVuY29kZWQgYXMgYSBDT1NF
IHN0cnVjdHVyZS4KKyAgICBhdXRvIGl0ID0gcmVzcG9uc2VNYXAuZmluZChDQk9SVmFsdWUoc3Rh
dGljX2Nhc3Q8aW50PihSZXNwb25zZUtleTo6a0tleUFncmVlbWVudCkpKTsKKyAgICBpZiAoaXQg
PT0gcmVzcG9uc2VNYXAuZW5kKCkgfHwgIWl0LT5zZWNvbmQuaXNNYXAoKSkKKyAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKyAgICBjb25zdCBhdXRvJiBjb3NlS2V5ID0gaXQtPnNlY29uZC5n
ZXRNYXAoKTsKKworICAgIHJldHVybiBwYXJzZUZyb21DT1NFKGNvc2VLZXkpOworfQorCisvLyBz
dGF0aWMKK09wdGlvbmFsPEtleUFncmVlbWVudFJlc3BvbnNlPiBLZXlBZ3JlZW1lbnRSZXNwb25z
ZTo6cGFyc2VGcm9tQ09TRShjb25zdCBDQk9SVmFsdWU6Ok1hcFZhbHVlJiBjb3NlS2V5KQorewor
ICAgIC8vIFRoZSBDT1NFIGtleSBtdXN0IGJlIGEgUC0yNTYgcG9pbnQuIFNlZQorICAgIC8vIGh0
dHBzOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmM4MTUyI3NlY3Rpb24tNy4xCisgICAgZm9yIChj
b25zdCBhdXRvJiBwYWlyIDogVmVjdG9yPHN0ZDo6cGFpcjxpbnQsIGludD4+KHsKKyAgICAgICAg
ezEgLyoga2V5IHR5cGUgKi8sIDIgLyogZWxsaXB0aWMgY3VydmUsIHVuY29tcHJlc3NlZCAqL30s
CisgICAgICAgIHszIC8qIGFsZ29yaXRobSAqLywgLTI1IC8qIEVDREgsIGVwaGVtZXJhbOKAk3N0
YXRpYywgSEtERi1TSEEtMjU2ICovfSwKKyAgICAgICAgey0xIC8qIGN1cnZlICovLCAxIC8qIFAt
MjU2ICovfSwKKyAgICB9KSkgeworICAgICAgICBhdXRvIGl0ID0gY29zZUtleS5maW5kKENCT1JW
YWx1ZShwYWlyLmZpcnN0KSk7CisgICAgICAgIGlmIChpdCA9PSBjb3NlS2V5LmVuZCgpIHx8ICFp
dC0+c2Vjb25kLmlzSW50ZWdlcigpIHx8IGl0LT5zZWNvbmQuZ2V0SW50ZWdlcigpICE9IHBhaXIu
c2Vjb25kKQorICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICB9CisKKyAgICAv
LyBTZWUgaHR0cHM6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzgxNTIjc2VjdGlvbi0xMy4xLjEK
KyAgICBjb25zdCBhdXRvJiB4SXQgPSBjb3NlS2V5LmZpbmQoQ0JPUlZhbHVlKC0yKSk7CisgICAg
Y29uc3QgYXV0byYgeUl0ID0gY29zZUtleS5maW5kKENCT1JWYWx1ZSgtMykpOworICAgIGlmICh4
SXQgPT0gY29zZUtleS5lbmQoKSB8fCB5SXQgPT0gY29zZUtleS5lbmQoKSB8fCAheEl0LT5zZWNv
bmQuaXNCeXRlU3RyaW5nKCkgfHwgIXlJdC0+c2Vjb25kLmlzQnl0ZVN0cmluZygpKQorICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgY29uc3QgYXV0byYgeCA9IHhJdC0+c2Vjb25k
LmdldEJ5dGVTdHJpbmcoKTsKKyAgICBjb25zdCBhdXRvJiB5ID0geUl0LT5zZWNvbmQuZ2V0Qnl0
ZVN0cmluZygpOworICAgIGF1dG8gcGVlcktleSA9IENyeXB0b0tleUVDOjppbXBvcnRSYXcoQ3J5
cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6RUNESCwgIlAtMjU2IiwgZW5jb2RlUmF3UHVibGljS2V5
KHgsIHkpLCB0cnVlLCBDcnlwdG9LZXlVc2FnZURlcml2ZUJpdHMpOworICAgIGlmICghcGVlcktl
eSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgIHJldHVybiBLZXlBZ3JlZW1l
bnRSZXNwb25zZShwZWVyS2V5LnJlbGVhc2VOb25OdWxsKCkpOworfQorCitjYm9yOjpDQk9SVmFs
dWU6Ok1hcFZhbHVlIGVuY29kZUNPU0VQdWJsaWNLZXkoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBy
YXdQdWJsaWNLZXkpCit7CisgICAgQVNTRVJUKHJhd1B1YmxpY0tleS5zaXplKCkgPT0gNjUpOwor
ICAgIFZlY3Rvcjx1aW50OF90PiB4OworICAgIHguYXBwZW5kKHJhd1B1YmxpY0tleS5kYXRhKCkg
KyAxLCBFUzI1NkZpZWxkRWxlbWVudExlbmd0aCk7CisgICAgVmVjdG9yPHVpbnQ4X3Q+IHk7Cisg
ICAgeS5hcHBlbmQocmF3UHVibGljS2V5LmRhdGEoKSArIDEgKyBFUzI1NkZpZWxkRWxlbWVudExl
bmd0aCwgRVMyNTZGaWVsZEVsZW1lbnRMZW5ndGgpOworCisgICAgY2Jvcjo6Q0JPUlZhbHVlOjpN
YXBWYWx1ZSBwdWJsaWNLZXlNYXA7CisgICAgcHVibGljS2V5TWFwW2Nib3I6OkNCT1JWYWx1ZShD
T1NFOjprdHkpXSA9IGNib3I6OkNCT1JWYWx1ZShDT1NFOjpFQzIpOworICAgIHB1YmxpY0tleU1h
cFtjYm9yOjpDQk9SVmFsdWUoQ09TRTo6YWxnKV0gPSBjYm9yOjpDQk9SVmFsdWUoQ09TRTo6RUNE
SDI1Nik7CisgICAgcHVibGljS2V5TWFwW2Nib3I6OkNCT1JWYWx1ZShDT1NFOjpjcnYpXSA9IGNi
b3I6OkNCT1JWYWx1ZShDT1NFOjpQXzI1Nik7CisgICAgcHVibGljS2V5TWFwW2Nib3I6OkNCT1JW
YWx1ZShDT1NFOjp4KV0gPSBjYm9yOjpDQk9SVmFsdWUoV1RGTW92ZSh4KSk7CisgICAgcHVibGlj
S2V5TWFwW2Nib3I6OkNCT1JWYWx1ZShDT1NFOjp5KV0gPSBjYm9yOjpDQk9SVmFsdWUoV1RGTW92
ZSh5KSk7CisKKyAgICByZXR1cm4gcHVibGljS2V5TWFwOworfQorCitUb2tlblJlc3BvbnNlOjpU
b2tlblJlc3BvbnNlKFJlZjxXZWJDb3JlOjpDcnlwdG9LZXlITUFDPiYmIHRva2VuKQorICAgIDog
bV90b2tlbihXVEZNb3ZlKHRva2VuKSkKK3sKK30KKworT3B0aW9uYWw8VG9rZW5SZXNwb25zZT4g
VG9rZW5SZXNwb25zZTo6cGFyc2UoY29uc3QgV2ViQ29yZTo6Q3J5cHRvS2V5QUVTJiBzaGFyZWRL
ZXksIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgaW5CdWZmZXIpCit7CisgICAgLy8gRklYTUUoMjA1
Mzc1KQorICAgIGlmIChpbkJ1ZmZlci5zaXplKCkgPD0ga1Jlc3BvbnNlQ29kZUxlbmd0aCB8fCBn
ZXRSZXNwb25zZUNvZGUoaW5CdWZmZXIpICE9IEN0YXBEZXZpY2VSZXNwb25zZUNvZGU6OmtTdWNj
ZXNzKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgVmVjdG9yPHVpbnQ4X3Q+
IGJ1ZmZlcjsKKyAgICBidWZmZXIuYXBwZW5kKGluQnVmZmVyLmRhdGEoKSArIDEsIGluQnVmZmVy
LnNpemUoKSAtIDEpOworICAgIGF1dG8gZGVjb2RlZFJlc3BvbnNlID0gY2Jvcjo6Q0JPUlJlYWRl
cjo6cmVhZChidWZmZXIpOworICAgIGlmICghZGVjb2RlZFJlc3BvbnNlIHx8ICFkZWNvZGVkUmVz
cG9uc2UtPmlzTWFwKCkpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgY29uc3Qg
YXV0byYgcmVzcG9uc2VNYXAgPSBkZWNvZGVkUmVzcG9uc2UtPmdldE1hcCgpOworCisgICAgYXV0
byBpdCA9IHJlc3BvbnNlTWFwLmZpbmQoQ0JPUlZhbHVlKHN0YXRpY19jYXN0PGludD4oUmVzcG9u
c2VLZXk6OmtQaW5Ub2tlbikpKTsKKyAgICBpZiAoaXQgPT0gcmVzcG9uc2VNYXAuZW5kKCkgfHwg
IWl0LT5zZWNvbmQuaXNCeXRlU3RyaW5nKCkpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CisgICAgY29uc3QgYXV0byYgZW5jcnlwdGVkVG9rZW4gPSBpdC0+c2Vjb25kLmdldEJ5dGVTdHJp
bmcoKTsKKworICAgIGF1dG8gdG9rZW5SZXN1bHQgPSBDcnlwdG9BbGdvcml0aG1BRVNfQ0JDOjpw
bGF0Zm9ybURlY3J5cHQoeyB9LCBzaGFyZWRLZXksIGVuY3J5cHRlZFRva2VuKTsKKyAgICBpZiAo
dG9rZW5SZXN1bHQuaGFzRXhjZXB0aW9uKCkpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CisgICAgYXV0byB0b2tlbiA9IHRva2VuUmVzdWx0LnJlbGVhc2VSZXR1cm5WYWx1ZSgpOworCisg
ICAgYXV0byB0b2tlbktleSA9IENyeXB0b0tleUhNQUM6OmltcG9ydFJhdyh0b2tlbi5zaXplKCkg
KiA4LCBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpTSEFfMjU2LCBXVEZNb3ZlKHRva2VuKSwg
dHJ1ZSwgQ3J5cHRvS2V5VXNhZ2VTaWduKTsKKyAgICBBU1NFUlQodG9rZW5LZXkpOworCisgICAg
cmV0dXJuIFRva2VuUmVzcG9uc2UodG9rZW5LZXkucmVsZWFzZU5vbk51bGwoKSk7Cit9CisKK1Zl
Y3Rvcjx1aW50OF90PiBUb2tlblJlc3BvbnNlOjpwaW5BdXRoKGNvbnN0IFZlY3Rvcjx1aW50OF90
PiYgY2xpZW50RGF0YUhhc2gpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1ha2VQaW5BdXRoKG1fdG9r
ZW4sIGNsaWVudERhdGFIYXNoKTsKK30KKworY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBUb2tlblJl
c3BvbnNlOjp0b2tlbigpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fdG9rZW4tPmtleSgpOworfQor
CisvLyBzdGF0aWMKK1ZlY3Rvcjx1aW50OF90PiBlbmNvZGVBc0NCT1IoY29uc3QgUmV0cmllc1Jl
cXVlc3QmKQoreworICAgIHJldHVybiBlbmNvZGVQaW5Db21tYW5kKFN1YmNvbW1hbmQ6OmtHZXRS
ZXRyaWVzKTsKK30KKworLy8gc3RhdGljCitWZWN0b3I8dWludDhfdD4gZW5jb2RlQXNDQk9SKGNv
bnN0IEtleUFncmVlbWVudFJlcXVlc3QmKQoreworICAgIHJldHVybiBlbmNvZGVQaW5Db21tYW5k
KFN1YmNvbW1hbmQ6OmtHZXRLZXlBZ3JlZW1lbnQpOworfQorCitPcHRpb25hbDxUb2tlblJlcXVl
c3Q+IFRva2VuUmVxdWVzdDo6dHJ5Q3JlYXRlKGNvbnN0IENTdHJpbmcmIHBpbiwgY29uc3QgQ3J5
cHRvS2V5RUMmIHBlZXJLZXkpCit7CisgICAgLy8gVGhlIGZvbGxvd2luZyBpbXBsZW1lbnRzIFNl
Y3Rpb24gNS41LjQgR2V0dGluZyBzaGFyZWRTZWNyZXQgZnJvbSBBdXRoZW50aWNhdG9yLgorICAg
IC8vIGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9zcGVjcy9maWRvLXYyLjAtcHMtMjAxOTAxMzAv
Zmlkby1jbGllbnQtdG8tYXV0aGVudGljYXRvci1wcm90b2NvbC12Mi4wLXBzLTIwMTkwMTMwLmh0
bWwjZ2V0dGluZ1NoYXJlZFNlY3JldAorICAgIC8vIDEuIEdlbmVyYXRlIGEgUDI1NiBrZXkgcGFp
ci4KKyAgICBhdXRvIGtleVBhaXJSZXN1bHQgPSBDcnlwdG9LZXlFQzo6Z2VuZXJhdGVQYWlyKENy
eXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OkVDREgsICJQLTI1NiIsIHRydWUsIENyeXB0b0tleVVz
YWdlRGVyaXZlQml0cyk7CisgICAgQVNTRVJUKCFrZXlQYWlyUmVzdWx0Lmhhc0V4Y2VwdGlvbigp
KTsKKyAgICBhdXRvIGtleVBhaXIgPSBrZXlQYWlyUmVzdWx0LnJlbGVhc2VSZXR1cm5WYWx1ZSgp
OworCisgICAgLy8gMi4gVXNlIEVDREggdG8gY29tcHV0ZSB0aGUgc2hhcmVkIEFFUy1DQkMga2V5
LgorICAgIGF1dG8gc2hhcmVkS2V5UmVzdWx0ID0gQ3J5cHRvQWxnb3JpdGhtRUNESDo6cGxhdGZv
cm1EZXJpdmVCaXRzKGRvd25jYXN0PENyeXB0b0tleUVDPigqa2V5UGFpci5wcml2YXRlS2V5KSwg
cGVlcktleSk7CisgICAgaWYgKCFzaGFyZWRLZXlSZXN1bHQpCisgICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisgICAgYXV0byBzaGFyZWRLZXkgPSBDcnlwdG9LZXlBRVM6OmltcG9ydFJhdyhD
cnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpBRVNfQ0JDLCBXVEZNb3ZlKCpzaGFyZWRLZXlSZXN1
bHQpLCB0cnVlLCBDcnlwdG9LZXlVc2FnZUVuY3J5cHQgfCBDcnlwdG9LZXlVc2FnZURlY3J5cHQp
OworICAgIEFTU0VSVChzaGFyZWRLZXkpOworCisgICAgLy8gVGhlIGZvbGxvd2luZyBlbmNvZGVz
IHRoZSBwdWJsaWMga2V5IG9mIHRoZSBhYm92ZSBrZXkgcGFpciBpbnRvIENPU0UgZm9ybWF0Lgor
ICAgIGF1dG8gcmF3UHVibGljS2V5UmVzdWx0ID0gZG93bmNhc3Q8Q3J5cHRvS2V5RUM+KCprZXlQ
YWlyLnB1YmxpY0tleSkuZXhwb3J0UmF3KCk7CisgICAgQVNTRVJUKCFyYXdQdWJsaWNLZXlSZXN1
bHQuaGFzRXhjZXB0aW9uKCkpOworICAgIGF1dG8gY29zZUtleSA9IGVuY29kZUNPU0VQdWJsaWNL
ZXkocmF3UHVibGljS2V5UmVzdWx0LnJldHVyblZhbHVlKCkpOworCisgICAgLy8gVGhlIGZvbGxv
d2luZyBjYWxjdWxhdGVzIGEgU0hBLTI1NiBkaWdlc3Qgb2YgdGhlIFBJTiwgYW5kIHNocmluayB0
byB0aGUgbGVmdCAxNiBieXRlcy4KKyAgICBhdXRvIGNyeXB0byA9IFBBTDo6Q3J5cHRvRGlnZXN0
OjpjcmVhdGUoUEFMOjpDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzI1Nik7CisgICAgY3J5
cHRvLT5hZGRCeXRlcyhwaW4uZGF0YSgpLCBwaW4ubGVuZ3RoKCkpOworICAgIGF1dG8gcGluSGFz
aCA9IGNyeXB0by0+Y29tcHV0ZUhhc2goKTsKKyAgICBwaW5IYXNoLnNocmluaygxNik7CisKKyAg
ICByZXR1cm4gVG9rZW5SZXF1ZXN0KHNoYXJlZEtleS5yZWxlYXNlTm9uTnVsbCgpLCBXVEZNb3Zl
KGNvc2VLZXkpLCBXVEZNb3ZlKHBpbkhhc2gpKTsKK30KKworVG9rZW5SZXF1ZXN0OjpUb2tlblJl
cXVlc3QoUmVmPFdlYkNvcmU6OkNyeXB0b0tleUFFUz4mJiBzaGFyZWRLZXksIGNib3I6OkNCT1JW
YWx1ZTo6TWFwVmFsdWUmJiBjb3NlS2V5LCBWZWN0b3I8dWludDhfdD4mJiBwaW5IYXNoKQorICAg
IDogbV9zaGFyZWRLZXkoV1RGTW92ZShzaGFyZWRLZXkpKQorICAgICwgbV9jb3NlS2V5KFdURk1v
dmUoY29zZUtleSkpCisgICAgLCBtX3Bpbkhhc2goV1RGTW92ZShwaW5IYXNoKSkKK3sKK30KKwor
Y29uc3QgQ3J5cHRvS2V5QUVTJiBUb2tlblJlcXVlc3Q6OnNoYXJlZEtleSgpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIG1fc2hhcmVkS2V5OworfQorCisvLyBzdGF0aWMKK1ZlY3Rvcjx1aW50OF90PiBl
bmNvZGVBc0NCT1IoY29uc3QgVG9rZW5SZXF1ZXN0JiByZXF1ZXN0KQoreworICAgIGF1dG8gcmVz
dWx0ID0gQ3J5cHRvQWxnb3JpdGhtQUVTX0NCQzo6cGxhdGZvcm1FbmNyeXB0KHsgfSwgcmVxdWVz
dC5zaGFyZWRLZXkoKSwgcmVxdWVzdC5tX3Bpbkhhc2gpOworICAgIEFTU0VSVCghcmVzdWx0Lmhh
c0V4Y2VwdGlvbigpKTsKKworICAgIHJldHVybiBlbmNvZGVQaW5Db21tYW5kKFN1YmNvbW1hbmQ6
OmtHZXRQaW5Ub2tlbiwgW2Nvc2VLZXkgPSBXVEZNb3ZlKHJlcXVlc3QubV9jb3NlS2V5KSwgZW5j
cnlwdGVkUGluID0gcmVzdWx0LnJlbGVhc2VSZXR1cm5WYWx1ZSgpXSAoQ0JPUlZhbHVlOjpNYXBW
YWx1ZSogbWFwKSBtdXRhYmxlIHsKKyAgICAgICAgbWFwLT5lbXBsYWNlKHN0YXRpY19jYXN0PGlu
dD4oUmVxdWVzdEtleTo6a0tleUFncmVlbWVudCksIFdURk1vdmUoY29zZUtleSkpOworICAgICAg
ICBtYXAtPmVtcGxhY2Uoc3RhdGljX2Nhc3Q8aW50PihSZXF1ZXN0S2V5OjprUGluSGFzaEVuYyks
IFdURk1vdmUoZW5jcnlwdGVkUGluKSk7CisgICAgfSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIHBp
bgorfSAvLyBuYW1lc3BhY2UgZmlkbworCisjZW5kaWYgLy8gRU5BQkxFKFdFQl9BVVRITikKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vZmlkby9QaW4uaCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vZmlkby9QaW4uaApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45NGFh
NTY0NDQ2MmZlNjM0MTU1ODM2ZDMwYjc2MTM2OTM3MzM1ZmE1Ci0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9maWRvL1Bpbi5oCkBAIC0wLDAgKzEsMTg3
IEBACisvLyBDb3B5cmlnaHQgMjAxOSBUaGUgQ2hyb21pdW0gQXV0aG9ycy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKy8vIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisvLworLy8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisvLyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisvLyBtZXQ6CisvLwor
Ly8gICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorLy8gbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorLy8gICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisvLyBjb3B5cmlnaHQgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisvLyBpbiB0
aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
CisvLyBkaXN0cmlidXRpb24uCisvLyAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIElu
Yy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKy8vIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBl
bmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisvLyB0aGlzIHNvZnR3YXJl
IHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorLy8KKy8vIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklC
VVRPUlMKKy8vICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKy8vIEEgUEFSVElDVUxBUiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisvLyBP
V05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwKKy8vIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorLy8gREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
CisvLyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisvLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKy8vIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKy8vIFRo
aXMgZmlsZSBjb250YWlucyBzdHJ1Y3R1cmVzIHRvIGltcGxlbWVudCB0aGUgQ1RBUDIgUElOIHBy
b3RvY29sLCB2ZXJzaW9uCisvLyBvbmUuIFNlZQorLy8gaHR0cHM6Ly9maWRvYWxsaWFuY2Uub3Jn
L3NwZWNzL2ZpZG8tdjIuMC1yZC0yMDE4MDcwMi9maWRvLWNsaWVudC10by1hdXRoZW50aWNhdG9y
LXByb3RvY29sLXYyLjAtcmQtMjAxODA3MDIuaHRtbCNhdXRoZW50aWNhdG9yQ2xpZW50UElOCisK
KyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKFdFQl9BVVRITikKKworI2luY2x1ZGUgIkNCT1JW
YWx1ZS5oIgorI2luY2x1ZGUgIkZpZG9Db25zdGFudHMuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUg
eworY2xhc3MgQ3J5cHRvS2V5QUVTOworY2xhc3MgQ3J5cHRvS2V5RUM7CitjbGFzcyBDcnlwdG9L
ZXlITUFDOworfQorCituYW1lc3BhY2UgZmlkbyB7CituYW1lc3BhY2UgcGluIHsKKworLy8gU3Vi
Y29tbWFuZCBlbnVtZXJhdGVzIHRoZSBzdWJjb21tYW5kcyB0byB0aGUgbWFpbiB8YXV0aGVudGlj
YXRvckNsaWVudFBJTnwKKy8vIGNvbW1hbmQuIFNlZQorLy8gaHR0cHM6Ly9maWRvYWxsaWFuY2Uu
b3JnL3NwZWNzL2ZpZG8tdjIuMC1yZC0yMDE4MDcwMi9maWRvLWNsaWVudC10by1hdXRoZW50aWNh
dG9yLXByb3RvY29sLXYyLjAtcmQtMjAxODA3MDIuaHRtbCNhdXRoZW50aWNhdG9yQ2xpZW50UElO
CitlbnVtIGNsYXNzIFN1YmNvbW1hbmQgOiB1aW50OF90IHsKKyAgICBrR2V0UmV0cmllcyA9IDB4
MDEsCisgICAga0dldEtleUFncmVlbWVudCA9IDB4MDIsCisgICAga1NldFBpbiA9IDB4MDMsCisg
ICAga0NoYW5nZVBpbiA9IDB4MDQsCisgICAga0dldFBpblRva2VuID0gMHgwNSwKK307CisKKy8v
IFJlcXVlc3RLZXkgZW51bWVyYXRlcyB0aGUga2V5cyBpbiB0aGUgdG9wLWxldmVsIENCT1IgbWFw
IGZvciBhbGwgUElOCisvLyBjb21tYW5kcy4KK2VudW0gY2xhc3MgUmVxdWVzdEtleSA6IGludCB7
CisgICAga1Byb3RvY29sID0gMSwKKyAgICBrU3ViY29tbWFuZCA9IDIsCisgICAga0tleUFncmVl
bWVudCA9IDMsCisgICAga1BpbkF1dGggPSA0LAorICAgIGtOZXdQaW5FbmMgPSA1LAorICAgIGtQ
aW5IYXNoRW5jID0gNiwKK307CisKKy8vIFJlc3BvbnNlS2V5IGVudW1lcmF0ZXMgdGhlIGtleXMg
aW4gdGhlIHRvcC1sZXZlbCBDQk9SIG1hcCBmb3IgYWxsIFBJTgorLy8gcmVzcG9uc2VzLgorZW51
bSBjbGFzcyBSZXNwb25zZUtleSA6IGludCB7CisgICAga0tleUFncmVlbWVudCA9IDEsCisgICAg
a1BpblRva2VuID0gMiwKKyAgICBrUmV0cmllcyA9IDMsCit9OworCisvLyBrUHJvdG9jb2xWZXJz
aW9uIGlzIHRoZSB2ZXJzaW9uIG9mIHRoZSBQSU4gcHJvdG9jb2wgdGhhdCB0aGlzIGNvZGUKKy8v
IGltcGxlbWVudHMuCitjb25zdGV4cHIgaW50IGtQcm90b2NvbFZlcnNpb24gPSAxOworCisvLyBl
bmNvZGVDT1NFUHVibGljS2V5IHRha2VzIGEgcmF3IEVDREgyNTYgcHVibGljIGtleSBhbmQgcmV0
dXJucyBpdCBhcyBhIENPU0Ugc3RydWN0dXJlLgorV0VCQ09SRV9FWFBPUlQgY2Jvcjo6Q0JPUlZh
bHVlOjpNYXBWYWx1ZSBlbmNvZGVDT1NFUHVibGljS2V5KGNvbnN0IFZlY3Rvcjx1aW50OF90PiYg
a2V5KTsKKworLy8gZW5jb2RlUmF3UHVibGljS2V5IHRha2VzIFggJiBZIGFuZCByZXR1cm5zIHRo
ZW0gYXMgYSAweDA0IHx8IFggfHwgWSBieXRlIGFycmF5LgorV0VCQ09SRV9FWFBPUlQgVmVjdG9y
PHVpbnQ4X3Q+IGVuY29kZVJhd1B1YmxpY0tleShjb25zdCBWZWN0b3I8dWludDhfdD4mIFgsIGNv
bnN0IFZlY3Rvcjx1aW50OF90PiYgWSk7CisKKy8vIHZhbGlkYXRlQW5kQ29udmVydFRvVVRGOCBj
b252ZXJ0IHRoZSBpbnB1dCB0byBhIFVURjggQ1N0cmluZyBpZiBpdCBpcyBhIHN5bnRhY3RpY2Fs
bHkgdmFsaWQgUElOLgorV0VCQ09SRV9FWFBPUlQgT3B0aW9uYWw8Q1N0cmluZz4gdmFsaWRhdGVB
bmRDb252ZXJ0VG9VVEY4KGNvbnN0IFN0cmluZyYgcGluKTsKKworLy8ga01pbkJ5dGVzIGlzIHRo
ZSBtaW5pbXVtIG51bWJlciBvZiAqYnl0ZXMqIG9mIFBJTiBkYXRhIHRoYXQgYSBDVEFQMiBkZXZp
Y2UKKy8vIHdpbGwgYWNjZXB0LiBTaW5jZSB0aGUgUElOIGlzIFVURi04IGVuY29kZWQsIHRoaXMg
Y291bGQgYmUgYSBzaW5nbGUgY29kZQorLy8gcG9pbnQuIEhvd2V2ZXIsIHRoZSBwbGF0Zm9ybSBp
cyBzdXBwb3NlZCB0byBhZGRpdGlvbmFsbHkgZW5mb3JjZSBhIDQKKy8vICpjaGFyYWN0ZXIqIG1p
bmltdW0KK2NvbnN0ZXhwciBzaXplX3Qga01pbkJ5dGVzID0gNDsKKy8vIGtNYXhCeXRlcyBpcyB0
aGUgbWF4aW11bSBudW1iZXIgb2YgYnl0ZXMgb2YgUElOIGRhdGEgdGhhdCBhIENUQVAyIGRldmlj
ZSB3aWxsCisvLyBhY2NlcHQuCitjb25zdGV4cHIgc2l6ZV90IGtNYXhCeXRlcyA9IDYzOworCisv
LyBSZXRyaWVzUmVxdWVzdCBhc2tzIGFuIGF1dGhlbnRpY2F0b3IgZm9yIHRoZSBudW1iZXIgb2Yg
cmVtYWluaW5nIFBJTiBhdHRlbXB0cworLy8gYmVmb3JlIHRoZSBkZXZpY2UgaXMgbG9ja2VkLgor
c3RydWN0IFJldHJpZXNSZXF1ZXN0IHsKK307CisKKy8vIFJldHJpZXNSZXNwb25zZSByZWZsZWN0
cyBhbiBhdXRoZW50aWNhdG9yJ3MgcmVzcG9uc2UgdG8gYSB8UmV0cmllc1JlcXVlc3R8Lgorc3Ry
dWN0IFJldHJpZXNSZXNwb25zZSB7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIE9wdGlvbmFs
PFJldHJpZXNSZXNwb25zZT4gcGFyc2UoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+Jik7CisKKyAgICAv
LyByZXRyaWVzIGlzIHRoZSBudW1iZXIgb2YgUElOIGF0dGVtcHRzIHJlbWFpbmluZyBiZWZvcmUg
dGhlIGF1dGhlbnRpY2F0b3IKKyAgICAvLyBsb2Nrcy4KKyAgICBpbnQgcmV0cmllczsKKworcHJp
dmF0ZToKKyAgICBSZXRyaWVzUmVzcG9uc2UoKTsKK307CisKKy8vIEtleUFncmVlbWVudFJlcXVl
c3QgYXNrcyBhbiBhdXRoZW50aWNhdG9yIGZvciBhbiBlcGhlbWVyYWwgRUNESCBrZXkgZm9yCisv
LyBlbmNyeXB0aW5nIFBJTiBtYXRlcmlhbCBpbiBmdXR1cmUgcmVxdWVzdHMuCitzdHJ1Y3QgS2V5
QWdyZWVtZW50UmVxdWVzdCB7Cit9OworCisvLyBLZXlBZ3JlZW1lbnRSZXNwb25zZSByZWZsZWN0
cyBhbiBhdXRoZW50aWNhdG9yJ3MgcmVzcG9uc2UgdG8gYQorLy8gfEtleUFncmVlbWVudFJlcXVl
c3R8IGFuZCBpcyBhbHNvIHVzZWQgYXMgcmVwcmVzZW50YXRpb24gb2YgdGhlCisvLyBhdXRoZW50
aWNhdG9yJ3MgZXBoZW1lcmFsIGtleS4KK3N0cnVjdCBLZXlBZ3JlZW1lbnRSZXNwb25zZSB7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIE9wdGlvbmFsPEtleUFncmVlbWVudFJlc3BvbnNlPiBw
YXJzZShjb25zdCBWZWN0b3I8dWludDhfdD4mKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMg
T3B0aW9uYWw8S2V5QWdyZWVtZW50UmVzcG9uc2U+IHBhcnNlRnJvbUNPU0UoY29uc3QgY2Jvcjo6
Q0JPUlZhbHVlOjpNYXBWYWx1ZSYpOworCisgICAgUmVmPFdlYkNvcmU6OkNyeXB0b0tleUVDPiBw
ZWVyS2V5OworCitwcml2YXRlOgorICAgIGV4cGxpY2l0IEtleUFncmVlbWVudFJlc3BvbnNlKFJl
ZjxXZWJDb3JlOjpDcnlwdG9LZXlFQz4mJik7Cit9OworCisvLyBUb2tlblJlcXVlc3QgcmVxdWVz
dHMgYSBwaW4tdG9rZW4gZnJvbSBhbiBhdXRoZW50aWNhdG9yLiBUaGVzZSB0b2tlbnMgY2FuIGJl
CisvLyB1c2VkIHRvIHNob3cgdXNlci12ZXJpZmljYXRpb24gaW4gb3RoZXIgb3BlcmF0aW9ucywg
ZS5nLiB3aGVuIGdldHRpbmcgYW4KKy8vIGFzc2VydGlvbi4KK2NsYXNzIFRva2VuUmVxdWVzdCB7
CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoVG9rZW5SZXF1ZXN0KTsKK3B1YmxpYzoKKyAgICBX
RUJDT1JFX0VYUE9SVCBzdGF0aWMgT3B0aW9uYWw8VG9rZW5SZXF1ZXN0PiB0cnlDcmVhdGUoY29u
c3QgQ1N0cmluZyYgcGluLCBjb25zdCBXZWJDb3JlOjpDcnlwdG9LZXlFQyYpOworICAgIFRva2Vu
UmVxdWVzdChUb2tlblJlcXVlc3QmJikgPSBkZWZhdWx0OworCisgICAgLy8gc2hhcmVkS2V5IHJl
dHVybnMgdGhlIHNoYXJlZCBFQ0RIIGtleSB0aGF0IHdhcyB1c2VkIHRvIGVuY3J5cHQgdGhlIFBJ
Ti4KKyAgICAvLyBUaGlzIGlzIG5lZWRlZCB0byBkZWNyeXB0IHRoZSByZXNwb25zZS4KKyAgICBj
b25zdCBXZWJDb3JlOjpDcnlwdG9LZXlBRVMmIHNoYXJlZEtleSgpIGNvbnN0OworCisgICAgZnJp
ZW5kIFZlY3Rvcjx1aW50OF90PiBlbmNvZGVBc0NCT1IoY29uc3QgVG9rZW5SZXF1ZXN0Jik7CisK
K3ByaXZhdGU6CisgICAgVG9rZW5SZXF1ZXN0KFJlZjxXZWJDb3JlOjpDcnlwdG9LZXlBRVM+JiYg
c2hhcmVkS2V5LCBjYm9yOjpDQk9SVmFsdWU6Ok1hcFZhbHVlJiYgY29zZUtleSwgVmVjdG9yPHVp
bnQ4X3Q+JiYgcGluSGFzaCk7CisKKyAgICBSZWY8V2ViQ29yZTo6Q3J5cHRvS2V5QUVTPiBtX3No
YXJlZEtleTsKKyAgICBtdXRhYmxlIGNib3I6OkNCT1JWYWx1ZTo6TWFwVmFsdWUgbV9jb3NlS2V5
OworICAgIFZlY3Rvcjx1aW50OF90PiBtX3Bpbkhhc2g7IC8vIE9ubHkgdGhlIGxlZnQgMTYgYnl0
ZXMgYXJlIGtlcHQuCit9OworCisvLyBUb2tlblJlc3BvbnNlIHJlcHJlc2VudHMgdGhlIHJlc3Bv
bnNlIHRvIGEgcGluLXRva2VuIHJlcXVlc3QuIEluIG9yZGVyIHRvCisvLyBkZWNyeXB0IGEgcmVz
cG9uc2UsIHRoZSBzaGFyZWQga2V5IGZyb20gdGhlIHJlcXVlc3QgaXMgbmVlZGVkLiBPbmNlIGEg
cGluLQorLy8gdG9rZW4gaGFzIGJlZW4gZGVjcnlwdGVkLCBpdCBjYW4gYmUgdXNlZCB0byBjYWxj
dWxhdGUgdGhlIHBpbkF1dGggcGFyYW1ldGVycworLy8gbmVlZGVkIHRvIHNob3cgdXNlci12ZXJp
ZmljYXRpb24gaW4gZnV0dXJlIG9wZXJhdGlvbnMuCitjbGFzcyBUb2tlblJlc3BvbnNlIHsKK3B1
YmxpYzoKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgT3B0aW9uYWw8VG9rZW5SZXNwb25zZT4g
cGFyc2UoY29uc3QgV2ViQ29yZTo6Q3J5cHRvS2V5QUVTJiBzaGFyZWRLZXksIGNvbnN0IFZlY3Rv
cjx1aW50OF90PiYgaW5CdWZmZXIpOworCisgICAgLy8gcGluQXV0aCByZXR1cm5zIGEgcGluQXV0
aCBwYXJhbWV0ZXIgZm9yIGEgcmVxdWVzdCB0aGF0IHdpbGwgdXNlIHRoZSBnaXZlbgorICAgIC8v
IGNsaWVudC1kYXRhIGhhc2guCisgICAgV0VCQ09SRV9FWFBPUlQgVmVjdG9yPHVpbnQ4X3Q+IHBp
bkF1dGgoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBjbGllbnREYXRhSGFzaCkgY29uc3Q7CisKKyAg
ICBXRUJDT1JFX0VYUE9SVCBjb25zdCBWZWN0b3I8dWludDhfdD4mIHRva2VuKCkgY29uc3Q7CisK
K3ByaXZhdGU6CisgICAgZXhwbGljaXQgVG9rZW5SZXNwb25zZShSZWY8V2ViQ29yZTo6Q3J5cHRv
S2V5SE1BQz4mJik7CisKKyAgICBSZWY8V2ViQ29yZTo6Q3J5cHRvS2V5SE1BQz4gbV90b2tlbjsK
K307CisKK1dFQkNPUkVfRVhQT1JUIFZlY3Rvcjx1aW50OF90PiBlbmNvZGVBc0NCT1IoY29uc3Qg
UmV0cmllc1JlcXVlc3QmKTsKK1dFQkNPUkVfRVhQT1JUIFZlY3Rvcjx1aW50OF90PiBlbmNvZGVB
c0NCT1IoY29uc3QgS2V5QWdyZWVtZW50UmVxdWVzdCYpOworV0VCQ09SRV9FWFBPUlQgVmVjdG9y
PHVpbnQ4X3Q+IGVuY29kZUFzQ0JPUihjb25zdCBUb2tlblJlcXVlc3QmKTsKKworfSAvLyBuYW1l
c3BhY2UgcGluCit9IC8vIG5hbWVzcGFjZSBmaWRvCisKKyNlbmRpZiAvLyBFTkFCTEUoV0VCX0FV
VEhOKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQgYi9Tb3VyY2UvV2Vi
Q29yZS9Tb3VyY2VzLnR4dAppbmRleCBlN2ExOGIzMDg3YzA1MjhiZTU5ZWI2ODYwZTg5M2NhZjBi
Nzg3MDdiLi4wYjY1MTNhN2NlODEzYmU1OWE5ODI4OGVhZGUxNGQyZTQ2ZjBiYjIxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Tb3Vy
Y2VzLnR4dApAQCAtMjg2LDYgKzI4Niw3IEBAIE1vZHVsZXMvd2ViYXV0aG4vZmlkby9GaWRvQ29u
c3RhbnRzLmNwcAogTW9kdWxlcy93ZWJhdXRobi9maWRvL0ZpZG9IaWRNZXNzYWdlLmNwcAogTW9k
dWxlcy93ZWJhdXRobi9maWRvL0ZpZG9IaWRQYWNrZXQuY3BwCiBNb2R1bGVzL3dlYmF1dGhuL2Zp
ZG8vRmlkb1BhcnNpbmdVdGlscy5jcHAKK01vZHVsZXMvd2ViYXV0aG4vZmlkby9QaW4uY3BwCiBN
b2R1bGVzL3dlYmF1dGhuL2ZpZG8vVTJmQ29tbWFuZENvbnN0cnVjdG9yLmNwcAogTW9kdWxlcy93
ZWJhdXRobi9maWRvL1UyZlJlc3BvbnNlQ29udmVydGVyLmNwcAogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggZmZkNWU1NzY0NjUw
YWVmMzYwNWVhMGQ0ZjkxNzMwYTEyMTdkZGQzYi4uM2Q4YTQ3ZDRiNTU1NWNjMmQ0MmFjMDVkZTY2
MWQ5ODA0Yzk5MmRkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagpAQCAtMTc1OSw5ICsxNzU5LDEwIEBACiAJCTU3MTU2MTE0MjM0QzdG
RDYwMDhGQzdBQiAvKiBKU01vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24uY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTcxNTYxMTEyMzRD
N0ZCQzAwOEZDN0FCIC8qIEpTTW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbi5jcHAg
Ki87IH07CiAJCTU3MTU2MTE1MjM0QzdGREMwMDhGQzdBQiAvKiBKU01vY2tXZWJBdXRoZW50aWNh
dGlvbkNvbmZpZ3VyYXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDU3MTU2MTEwMjM0QzdGQkMwMDhGQzdBQiAvKiBKU01vY2tXZWJBdXRoZW50aWNh
dGlvbkNvbmZpZ3VyYXRpb24uaCAqLzsgfTsKIAkJNTcxRjIxODkxREE1N0M1NDAwNUM5RUZEIC8q
IEpTU3VidGxlQ3J5cHRvLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA1NzFGMjE4ODFEQTU3QzU0MDA1QzlFRkQgLyogSlNTdWJ0bGVDcnlwdG8uaCAqLzsg
fTsKLQkJNTcyMDkzRDMxRERDRUI5QTAwMzEwQUIwIC8qIENyeXB0b0FsZ29yaXRobUFlc0NiY0Nm
YlBhcmFtcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NTcyMDkzRDIxRERDRUI5QTAwMzEwQUIwIC8qIENyeXB0b0FsZ29yaXRobUFlc0NiY0NmYlBhcmFt
cy5oICovOyB9OworCQk1NzIwOTNEMzFERENFQjlBMDAzMTBBQjAgLyogQ3J5cHRvQWxnb3JpdGht
QWVzQ2JjQ2ZiUGFyYW1zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA1NzIwOTNEMjFERENFQjlBMDAzMTBBQjAgLyogQ3J5cHRvQWxnb3JpdGhtQWVzQ2Jj
Q2ZiUGFyYW1zLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJNTcyMUE5ODcxRUNFNTNCMTAwODEyOTVBIC8qIENyeXB0b0RpZ2VzdEFsZ29yaXRobS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTcyMUE5ODYx
RUNFNTNCMTAwODEyOTVBIC8qIENyeXB0b0RpZ2VzdEFsZ29yaXRobS5oICovOyB9OwogCQk1NzIx
QTk4QjFFQ0U1NzA0MDA4MTI5NUEgLyogQ3J5cHRvQWxnb3JpdGhtUnNhUHNzUGFyYW1zLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NzIxQTk4ODFFQ0U1
NzA0MDA4MTI5NUEgLyogQ3J5cHRvQWxnb3JpdGhtUnNhUHNzUGFyYW1zLmggKi87IH07CisJCTU3
MjU3NkQ2MjNBODg3MkIwMDkwOTU0MCAvKiBDcnlwdG9LZXlGb3JtYXQuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDOUFDQUM5MUY0MEI5NkEwMEYzQUEw
OSAvKiBDcnlwdG9LZXlGb3JtYXQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQk1NzJBN0YyMTFDNkU1NzE5MDA5QzYxNDkgLyogU2ltdWxhdGVkQ2xp
Y2suaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3MkE3
RjIwMUM2RTU3MTkwMDlDNjE0OSAvKiBTaW11bGF0ZWRDbGljay5oICovOyB9OwogCQk1NzJCNDAx
RjIxNzU3QTY0MDAwQUQ0M0UgLyogRGV2aWNlUmVxdWVzdENvbnZlcnRlci5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTcyQjQwMUQyMTc1N0E2NDAwMEFE
NDNFIC8qIERldmljZVJlcXVlc3RDb252ZXJ0ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1NzJCNDAyQzIxNzY5MDIwMDAwQUQ0M0UgLyogSlNV
c2VyVmVyaWZpY2F0aW9uUmVxdWlyZW1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDU3MkI0MDJBMjE3NjkwMUYwMDBBRDQzRSAvKiBKU1VzZXJWZXJp
ZmljYXRpb25SZXF1aXJlbWVudC5oICovOyB9OwpAQCAtMTc4OCwxOCArMTc4OSwxOSBAQAogCQk1
NzMwM0MyQzIwMDlCNEE4MDAzNTU5NjUgLyogQXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNl
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NzMwM0My
NzIwMDlCMkZDMDAzNTU5NjUgLyogQXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTczMDNDMkYy
MDA5QjdFMTAwMzU1OTY1IC8qIEpTQXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NzMwM0MyRDIwMDlC
N0Q5MDAzNTU5NjUgLyogSlNBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2UuaCAqLzsgfTsK
IAkJNTczMDNDNDYyMDEwNUQyRjAwMzU1OTY1IC8qIEF1dGhlbnRpY2F0b3JDb29yZGluYXRvci5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTczMDNDNDMy
MDEwNUIzRDAwMzU1OTY1IC8qIEF1dGhlbnRpY2F0b3JDb29yZGluYXRvci5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCTU3MzQ4OTM5MURBQzZCNkUw
MERDMDY2NyAvKiBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NzM0ODkzODFEQUM2QjZEMDBEQzA2NjcgLyog
Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycy5oICovOyB9OworCQk1NzM0ODkzOTFEQUM2QjZFMDBE
QzA2NjcgLyogQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycy5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTczNDg5MzgxREFDNkI2RDAwREMwNjY3IC8qIENy
eXB0b0FsZ29yaXRobVBhcmFtZXRlcnMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQk1NzM5RTEyRjFEQUM3Rjc4MDBFMTQzODMgLyogSlNDcnlwdG9B
bGdvcml0aG1QYXJhbWV0ZXJzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA1NzM5RTEyRTFEQUM3Rjc4MDBFMTQzODMgLyogSlNDcnlwdG9BbGdvcml0aG1Q
YXJhbWV0ZXJzLmggKi87IH07CiAJCTU3M0Y1MzMyMjE2ODA2RTEwMDQ1NTg3QSAvKiBGaWRvSGlk
TWVzc2FnZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NTdCQUYyOEEyMTY3RDMwMzAwOEU5NTRFIC8qIEZpZG9IaWRNZXNzYWdlLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTczRjUzMzcyMTY4MEQxNTAw
NDU1ODdBIC8qIEZpZG9QYXJzaW5nVXRpbHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDU3M0Y1MzM1MjE2ODBEMTQwMDQ1NTg3QSAvKiBGaWRvUGFyc2lu
Z1V0aWxzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJNTc0RjU1RTEyMDRGM0IyMzAwMjk0OEM2IC8qIFdlYkF1dGhlbnRpY2F0aW9uQ29uc3RhbnRz
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NzRGNTVE
QzIwNEYzNzMyMDAyOTQ4QzYgLyogV2ViQXV0aGVudGljYXRpb25Db25zdGFudHMuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQk1NzUwQTk3NTFFNjhE
MDAwMDA3MDVDNEEgLyogQ3J5cHRvS2V5RUMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDU3NTBBOTczMUU2OEQwMDAwMDcwNUM0QSAvKiBDcnlwdG9LZXlF
Qy5oICovOyB9OworCQk1NzUwQTk3NTFFNjhEMDAwMDA3MDVDNEEgLyogQ3J5cHRvS2V5RUMuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3NTBBOTczMUU2
OEQwMDAwMDcwNUM0QSAvKiBDcnlwdG9LZXlFQy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCTU3NTBBOTdFMUU2QTEzRUYwMDcwNUM0QSAvKiBDcnlw
dG9BbGdvcml0aG1FY0tleVBhcmFtcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNTc1MEE5N0QxRTZBMTNFRjAwNzA1QzRBIC8qIENyeXB0b0FsZ29yaXRo
bUVjS2V5UGFyYW1zLmggKi87IH07CiAJCTU3NTBBOTgyMUU2QTE1MDgwMDcwNUM0QSAvKiBKU0Vj
S2V5UGFyYW1zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA1NzUwQTk4MDFFNkExNTA4MDA3MDVDNEEgLyogSlNFY0tleVBhcmFtcy5oICovOyB9OwotCQk1
NzUwQTk4NzFFNkEyMTY4MDA3MDVDNEEgLyogQ3J5cHRvQWxnb3JpdGhtRUNESC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTc1MEE5ODUxRTZBMjE2ODAw
NzA1QzRBIC8qIENyeXB0b0FsZ29yaXRobUVDREguaCAqLzsgfTsKKwkJNTc1MEE5ODcxRTZBMjE2
ODAwNzA1QzRBIC8qIENyeXB0b0FsZ29yaXRobUVDREguaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3NTBBOTg1MUU2QTIxNjgwMDcwNUM0QSAvKiBDcnlw
dG9BbGdvcml0aG1FQ0RILmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJNTc1NDcxOUYxRUNFNjI4MzAwREQ2M0IyIC8qIEpTUnNhUHNzUGFyYW1zLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NzU0NzE5OTFF
Q0U1RDJBMDBERDYzQjIgLyogSlNSc2FQc3NQYXJhbXMuaCAqLzsgfTsKIAkJNTc1ODU5NjEyMzlG
MTI0RDAwQzc0NTcyIC8qIEpTQXV0aGVudGljYXRpb25FeHRlbnNpb25zQ2xpZW50T3V0cHV0cy5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTc1ODU5NUUy
MzlGMTE3MzAwQzc0NTcyIC8qIEpTQXV0aGVudGljYXRpb25FeHRlbnNpb25zQ2xpZW50T3V0cHV0
cy5oICovOyB9OwogCQk1NzU4NTk2QzIzOUYzMjFDMDBDNzQ1NzIgLyogQXV0aGVudGljYXRpb25F
eHRlbnNpb25zQ2xpZW50T3V0cHV0cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNTc1ODU5NjUyMzlGMTRDQzAwQzc0NTcyIC8qIEF1dGhlbnRpY2F0aW9u
RXh0ZW5zaW9uc0NsaWVudE91dHB1dHMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OworCQk1NzU4NTk3QzIzQTFGQ0YzMDBDNzQ1NzIgLyogUGluLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NzU4NTk3OTIzQTFG
Q0YyMDBDNzQ1NzIgLyogUGluLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJNTc2MDgyNzIyMDIxNUE1NTAwMTE2Njc4IC8qIEF1dGhlbnRpY2F0b3JD
b29yZGluYXRvckNsaWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNTc2MDgyNzAyMDIxNTEzRjAwMTE2Njc4IC8qIEF1dGhlbnRpY2F0b3JDb29yZGlu
YXRvckNsaWVudC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCTU3NjgxNDJBMUU2Rjk5QzEwMEU3Nzc1NCAvKiBDcnlwdG9BbGdvcml0aG1FY2RoS2V5
RGVyaXZlUGFyYW1zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA1NzY4MTQyOTFFNkY5OUMxMDBFNzc3NTQgLyogQ3J5cHRvQWxnb3JpdGhtRWNkaEtleURl
cml2ZVBhcmFtcy5oICovOyB9OwogCQk1NzY4MTQ0MTFFNzA5RkE0MDBFNzc3NTQgLyogSlNFY2Ro
S2V5RGVyaXZlUGFyYW1zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA1NzY4MTQzRTFFNzA5QzM2MDBFNzc3NTQgLyogSlNFY2RoS2V5RGVyaXZlUGFyYW1z
LmggKi87IH07CkBAIC0xODM1LDggKzE4MzcsOCBAQAogCQk1N0UxRTVBRDFFOEREMDlCMDBFRTM3
QzkgLyogSlNBZXNDdHJQYXJhbXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDU3RTFFNUFCMUU4REQwOUIwMEVFMzdDOSAvKiBKU0Flc0N0clBhcmFtcy5o
ICovOyB9OwogCQk1N0UyMzM1QjFEQzdENUU1MDBGMjhEMDEgLyogSlNKc29uV2ViS2V5LmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1N0UyMzM1QTFEQzdE
NUU1MDBGMjhEMDEgLyogSlNKc29uV2ViS2V5LmggKi87IH07CiAJCTU3RTIzMzVEMURDN0Q2MDgw
MEYyOEQwMSAvKiBKU1JzYU90aGVyUHJpbWVzSW5mby5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTdFMjMzNUMxREM3RDYwODAwRjI4RDAxIC8qIEpTUnNh
T3RoZXJQcmltZXNJbmZvLmggKi87IH07Ci0JCTU3RTIzMzYzMURDN0RBMjQwMEYyOEQwMSAvKiBS
c2FPdGhlclByaW1lc0luZm8uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDU3RTIzMzYyMURDN0RBMjQwMEYyOEQwMSAvKiBSc2FPdGhlclByaW1lc0luZm8u
aCAqLzsgfTsKLQkJNTdFMjMzNjUxREM3REIxRjAwRjI4RDAxIC8qIEpzb25XZWJLZXkuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3RTIzMzY0MURDN0RC
MUYwMEYyOEQwMSAvKiBKc29uV2ViS2V5LmggKi87IH07CisJCTU3RTIzMzYzMURDN0RBMjQwMEYy
OEQwMSAvKiBSc2FPdGhlclByaW1lc0luZm8uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDU3RTIzMzYyMURDN0RBMjQwMEYyOEQwMSAvKiBSc2FPdGhlclBy
aW1lc0luZm8uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OworCQk1N0UyMzM2NTFEQzdEQjFGMDBGMjhEMDEgLyogSnNvbldlYktleS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTdFMjMzNjQxREM3REIxRjAwRjI4
RDAxIC8qIEpzb25XZWJLZXkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQk1N0UyMzM2NzFEQ0FCMjFDMDBGMjhEMDEgLyogSlNIbWFjS2V5UGFyYW1z
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1N0UyMzM2
NjFEQ0FCMjFDMDBGMjhEMDEgLyogSlNIbWFjS2V5UGFyYW1zLmggKi87IH07CiAJCTU3RTIzMzZF
MURDRDQzRkQwMEYyOEQwMSAvKiBDcnlwdG9BbGdvcml0aG1Sc2FIYXNoZWRJbXBvcnRQYXJhbXMu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3RTIzMzZE
MURDRDQzRkQwMEYyOEQwMSAvKiBDcnlwdG9BbGdvcml0aG1Sc2FIYXNoZWRJbXBvcnRQYXJhbXMu
aCAqLzsgfTsKIAkJNTdFMjMzNzExRENENDY4RjAwRjI4RDAxIC8qIEpTUnNhSGFzaGVkSW1wb3J0
UGFyYW1zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1
N0UyMzM3MDFEQ0Q0NjhGMDBGMjhEMDEgLyogSlNSc2FIYXNoZWRJbXBvcnRQYXJhbXMuaCAqLzsg
fTsKQEAgLTIyOTMsMTIgKzIyOTUsMTIgQEAKIAkJN0M4RTM0QzcxRTRBMzNCMDAwNTRDRTIzIC8q
IEpTRE9NQ29udmVydFhQYXRoTlNSZXNvbHZlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gN0M4RTM0QUMxRTRBMzM4RTAwNTRDRTIzIC8qIEpTRE9NQ29u
dmVydFhQYXRoTlNSZXNvbHZlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCTdDOTNGMzRBMUFBNkJBNUUwMEE5OEJBQiAvKiBDb21waWxlZENvbnRl
bnRFeHRlbnNpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDdDOTNGMzQ4MUFBNkJBNUUwMEE5OEJBQiAvKiBDb21waWxlZENvbnRlbnRFeHRlbnNpb24u
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3Qzkz
RjM0RTFBQTZCRjA3MDBBOThCQUIgLyogQ29udGVudEV4dGVuc2lvbkNvbXBpbGVyLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QzkzRjM0QzFBQTZCRjA3
MDBBOThCQUIgLyogQ29udGVudEV4dGVuc2lvbkNvbXBpbGVyLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJN0M5QUNBOTIxRjNDQzBBQTAwRjNBQTA5
IC8qIENyeXB0b0tleUFsZ29yaXRobS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gN0M5QUNBOEYxRjNDQzBBQTAwRjNBQTA5IC8qIENyeXB0b0tleUFsZ29y
aXRobS5oICovOyB9OwotCQk3QzlBQ0E5ODFGM0NDREFEMDBGM0FBMDkgLyogQ3J5cHRvQWVzS2V5
QWxnb3JpdGhtLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA3QzlBQ0E5NjFGM0NDREFEMDBGM0FBMDkgLyogQ3J5cHRvQWVzS2V5QWxnb3JpdGhtLmggKi87
IH07Ci0JCTdDOUFDQTlDMUYzQ0NERjIwMEYzQUEwOSAvKiBDcnlwdG9FY0tleUFsZ29yaXRobS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0M5QUNBOUEx
RjNDQ0RGMjAwRjNBQTA5IC8qIENyeXB0b0VjS2V5QWxnb3JpdGhtLmggKi87IH07Ci0JCTdDOUFD
QUEwMUYzQ0NFMzAwMEYzQUEwOSAvKiBDcnlwdG9IbWFjS2V5QWxnb3JpdGhtLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QzlBQ0E5RTFGM0NDRTMwMDBG
M0FBMDkgLyogQ3J5cHRvSG1hY0tleUFsZ29yaXRobS5oICovOyB9OwotCQk3QzlBQ0FBNDFGM0ND
RTY5MDBGM0FBMDkgLyogQ3J5cHRvUnNhS2V5QWxnb3JpdGhtLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QzlBQ0FBMjFGM0NDRTY5MDBGM0FBMDkgLyog
Q3J5cHRvUnNhS2V5QWxnb3JpdGhtLmggKi87IH07Ci0JCTdDOUFDQUE4MUYzQ0NFQjQwMEYzQUEw
OSAvKiBDcnlwdG9Sc2FIYXNoZWRLZXlBbGdvcml0aG0uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDOUFDQUE2MUYzQ0NFQjQwMEYzQUEwOSAvKiBDcnlw
dG9Sc2FIYXNoZWRLZXlBbGdvcml0aG0uaCAqLzsgfTsKKwkJN0M5QUNBOTIxRjNDQzBBQTAwRjNB
QTA5IC8qIENyeXB0b0tleUFsZ29yaXRobS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gN0M5QUNBOEYxRjNDQzBBQTAwRjNBQTA5IC8qIENyeXB0b0tleUFs
Z29yaXRobS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CisJCTdDOUFDQTk4MUYzQ0NEQUQwMEYzQUEwOSAvKiBDcnlwdG9BZXNLZXlBbGdvcml0aG0uaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDOUFDQTk2MUYz
Q0NEQUQwMEYzQUEwOSAvKiBDcnlwdG9BZXNLZXlBbGdvcml0aG0uaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk3QzlBQ0E5QzFGM0NDREYyMDBGM0FB
MDkgLyogQ3J5cHRvRWNLZXlBbGdvcml0aG0uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDdDOUFDQTlBMUYzQ0NERjIwMEYzQUEwOSAvKiBDcnlwdG9FY0tl
eUFsZ29yaXRobS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CisJCTdDOUFDQUEwMUYzQ0NFMzAwMEYzQUEwOSAvKiBDcnlwdG9IbWFjS2V5QWxnb3JpdGht
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QzlBQ0E5
RTFGM0NDRTMwMDBGM0FBMDkgLyogQ3J5cHRvSG1hY0tleUFsZ29yaXRobS5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTdDOUFDQUE0MUYzQ0NFNjkw
MEYzQUEwOSAvKiBDcnlwdG9Sc2FLZXlBbGdvcml0aG0uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDOUFDQUEyMUYzQ0NFNjkwMEYzQUEwOSAvKiBDcnlw
dG9Sc2FLZXlBbGdvcml0aG0uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OworCQk3QzlBQ0FBODFGM0NDRUI0MDBGM0FBMDkgLyogQ3J5cHRvUnNhSGFzaGVk
S2V5QWxnb3JpdGhtLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA3QzlBQ0FBNjFGM0NDRUI0MDBGM0FBMDkgLyogQ3J5cHRvUnNhSGFzaGVkS2V5QWxnb3Jp
dGhtLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
N0M5QUNBQjgxRjNDRjFBRTAwRjNBQTA5IC8qIEpTQ3J5cHRvQWVzS2V5QWxnb3JpdGhtLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QzlBQ0FBQTFGM0NE
QjYzMDBGM0FBMDkgLyogSlNDcnlwdG9BZXNLZXlBbGdvcml0aG0uaCAqLzsgfTsKIAkJN0M5QUNB
QkExRjNDRjFBRTAwRjNBQTA5IC8qIEpTQ3J5cHRvRWNLZXlBbGdvcml0aG0uaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDOUFDQUFDMUYzQ0RCOUQwMEYz
QUEwOSAvKiBKU0NyeXB0b0VjS2V5QWxnb3JpdGhtLmggKi87IH07CiAJCTdDOUFDQUJDMUYzQ0Yx
QUUwMEYzQUEwOSAvKiBKU0NyeXB0b0htYWNLZXlBbGdvcml0aG0uaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDOUFDQUFGMUYzQ0RCOUYwMEYzQUEwOSAv
KiBKU0NyeXB0b0htYWNLZXlBbGdvcml0aG0uaCAqLzsgfTsKQEAgLTQ2OTEsOSArNDY5Myw5IEBA
CiAJCUUxMjQ3NDg0MTBBQTE2MUQwMEI3OTQ5MyAvKiBBdXRoZW50aWNhdGlvbkNsaWVudC5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTEyNDc0ODMxMEFB
MTYxRDAwQjc5NDkzIC8qIEF1dGhlbnRpY2F0aW9uQ2xpZW50LmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTEyNUY4MkMxODIyQ0ZFQzAwRDg0Q0Q5
IC8qIENyeXB0b0FsZ29yaXRobVNIQTEuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEUxMjVGODJBMTgyMkNGRUMwMEQ4NENEOSAvKiBDcnlwdG9BbGdvcml0
aG1TSEExLmggKi87IH07CiAJCUUxMjVGODMyMTgyMkYxMUIwMEQ4NENEOSAvKiBDcnlwdG9BbGdv
cml0aG1ITUFDLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBFMTI1RjgzMDE4MjJGMTFCMDBEODRDRDkgLyogQ3J5cHRvQWxnb3JpdGhtSE1BQy5oICovOyB9
OwotCQlFMTI1RjgzNjE4MjJGMThBMDBEODRDRDkgLyogQ3J5cHRvS2V5SE1BQy5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTEyNUY4MzQxODIyRjE4QTAw
RDg0Q0Q5IC8qIENyeXB0b0tleUhNQUMuaCAqLzsgfTsKLQkJRTEyNUY4NDIxODI0MjUzQTAwRDg0
Q0Q5IC8qIENyeXB0b0FsZ29yaXRobUFFU19DQkMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxMjVGODQwMTgyNDI1M0EwMEQ4NENEOSAvKiBDcnlwdG9B
bGdvcml0aG1BRVNfQ0JDLmggKi87IH07Ci0JCUUxMjVGODRFMTgyNDI4OUQwMEQ4NENEOSAvKiBD
cnlwdG9LZXlBRVMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEUxMjVGODRDMTgyNDI4OUQwMEQ4NENEOSAvKiBDcnlwdG9LZXlBRVMuaCAqLzsgfTsKKwkJ
RTEyNUY4MzYxODIyRjE4QTAwRDg0Q0Q5IC8qIENyeXB0b0tleUhNQUMuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxMjVGODM0MTgyMkYxOEEwMEQ4NENE
OSAvKiBDcnlwdG9LZXlITUFDLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKKwkJRTEyNUY4NDIxODI0MjUzQTAwRDg0Q0Q5IC8qIENyeXB0b0FsZ29yaXRo
bUFFU19DQkMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEUxMjVGODQwMTgyNDI1M0EwMEQ4NENEOSAvKiBDcnlwdG9BbGdvcml0aG1BRVNfQ0JDLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJRTEyNUY4NEUx
ODI0Mjg5RDAwRDg0Q0Q5IC8qIENyeXB0b0tleUFFUy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTEyNUY4NEMxODI0Mjg5RDAwRDg0Q0Q5IC8qIENyeXB0
b0tleUFFUy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCUUxMjcxOUM3MEVFRUMxNjgwMEY2MTIxMyAvKiBOYXZpZ2F0b3JCYXNlLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMTI3MTlDNjBFRUVDMTY4MDBG
NjEyMTMgLyogTmF2aWdhdG9yQmFzZS5oICovOyB9OwogCQlFMTI3MUEwQjBFRUVDNzdBMDBGNjEy
MTMgLyogV29ya2VyTmF2aWdhdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBFMTI3MUEwQTBFRUVDNzdBMDBGNjEyMTMgLyogV29ya2VyTmF2aWdhdG9y
LmggKi87IH07CiAJCUUxMjcxQTU4MEVFRUNERTQwMEY2MTIxMyAvKiBKU1dvcmtlck5hdmlnYXRv
ci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTEyNzFB
NTYwRUVFQ0RFNDAwRjYxMjEzIC8qIEpTV29ya2VyTmF2aWdhdG9yLmggKi87IH07CkBAIC00NzA4
LDcgKzQ3MTAsNyBAQAogCQlFMTRGMUM0NTE0QjVEQUM2MDBFQTkwMDkgLyogSFRNTEZvcm1Db250
cm9sRWxlbWVudFdpdGhTdGF0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gRTE0RjFDNDMxNEI1REFDNjAwRUE5MDA5IC8qIEhUTUxGb3JtQ29udHJvbEVs
ZW1lbnRXaXRoU3RhdGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQlFMTUyNTUxNTE2RkQyMzUwMDAzRDdBREIgLyogV2ViQ29yZVJlc291cmNlSGFu
ZGxlQXNPcGVyYXRpb25RdWV1ZURlbGVnYXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBFMTUyNTUxMzE2RkQyMzRGMDAzRDdBREIgLyogV2ViQ29yZVJl
c291cmNlSGFuZGxlQXNPcGVyYXRpb25RdWV1ZURlbGVnYXRlLmggKi87IH07CiAJCUUxNTdBOEUx
MTgxNzMzMUMwMDlGODIxRCAvKiBKU0NyeXB0b0tleS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTE1N0E4REYxODE3MzMxQzAwOUY4MjFEIC8qIEpTQ3J5
cHRvS2V5LmggKi87IH07Ci0JCUUxNTdBOEU1MTgxNzNBM0EwMDlGODIxRCAvKiBDcnlwdG9LZXku
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxNTdBOEUz
MTgxNzNBM0EwMDlGODIxRCAvKiBDcnlwdG9LZXkuaCAqLzsgfTsKKwkJRTE1N0E4RTUxODE3M0Ez
QTAwOUY4MjFEIC8qIENyeXB0b0tleS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gRTE1N0E4RTMxODE3M0EzQTAwOUY4MjFEIC8qIENyeXB0b0tleS5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUUxNUEzNkQ3
MTEwNDU3MjAwMEI3QjYzOSAvKiBYTUxOU05hbWVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMTVBMzZENjExMDQ1NzIwMDBCN0I2MzkgLyogWE1MTlNO
YW1lcy5oICovOyB9OwogCQlFMTVBMzZEOTExMDQ1NzI3MDBCN0I2MzkgLyogWE1MTlNOYW1lcy5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMTVBMzZE
ODExMDQ1NzI3MDBCN0I2MzkgLyogWE1MTlNOYW1lcy5jcHAgKi87IH07CiAJCUUxNUZGN0Q1MThD
OTU1MzgwMEZFNEM4NyAvKiBLZXlwcmVzc0NvbW1hbmQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxNUZGN0Q0MThDOTU1MzgwMEZFNEM4NyAvKiBLZXlw
cmVzc0NvbW1hbmQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwpAQCAtNDcxNyw4ICs0NzE5LDggQEAKIAkJRTE2OTgyNTUxMTM0NjI5RDAwODk0MTE1IC8q
IE9iakNSdW50aW1lT2JqZWN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBFMTY5ODI1NDExMzQ2MjlEMDA4OTQxMTUgLyogT2JqQ1J1bnRpbWVPYmplY3Qu
aCAqLzsgfTsKIAkJRTE2OTgyNjAxMTM0NjM2QTAwODk0MTE1IC8qIE9iakNSdW50aW1lT2JqZWN0
Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTE2OTgy
NUYxMTM0NjM2QTAwODk0MTE1IC8qIE9iakNSdW50aW1lT2JqZWN0Lm1tICovOyB9OwogCQlFMTZB
ODRGQTE0Qzg1Q0NDMDAyOTc3REYgLyogQ1NTQm9yZGVySW1hZ2UuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxNkE4NEY4MTRDODVDQ0MwMDI5NzdERiAv
KiBDU1NCb3JkZXJJbWFnZS5oICovOyB9OwotCQlFMTcyQUY2RTE4MEYyNEM2MDBGQkFEQjkgLyog
Q3J5cHRvQWxnb3JpdGhtLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBFMTcyQUY2QzE4MEYyNEM2MDBGQkFEQjkgLyogQ3J5cHRvQWxnb3JpdGhtLmggKi87
IH07Ci0JCUUxNzJBRjcwMTgwRjI4OTUwMEZCQURCOSAvKiBDcnlwdG9LZXlVc2FnZS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTE3MkFGNkYxODBGMjg5
NTAwRkJBREI5IC8qIENyeXB0b0tleVVzYWdlLmggKi87IH07CisJCUUxNzJBRjZFMTgwRjI0QzYw
MEZCQURCOSAvKiBDcnlwdG9BbGdvcml0aG0uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEUxNzJBRjZDMTgwRjI0QzYwMEZCQURCOSAvKiBDcnlwdG9BbGdv
cml0aG0uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owor
CQlFMTcyQUY3MDE4MEYyODk1MDBGQkFEQjkgLyogQ3J5cHRvS2V5VXNhZ2UuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxNzJBRjZGMTgwRjI4OTUwMEZC
QURCOSAvKiBDcnlwdG9LZXlVc2FnZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCUUxNzJBRjkwMTgxMUJDMzcwMEZCQURCOSAvKiBKU0RPTVByb21p
c2VEZWZlcnJlZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRTE3MkFGOEUxODExQkMzNzAwRkJBREI5IC8qIEpTRE9NUHJvbWlzZURlZmVycmVkLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTE3OUYwREEx
Qjk3NzRGRTAwRUQwQTI3IC8qIEludGVybmFscy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxNzlGMEQ5MUI5Nzc0RkUwMEVEMEEyNyAvKiBJbnRlcm5h
bHMubW0gKi87IH07CiAJCUUxN0I0OTE2MTZBOUIwOTQwMDFDODgzOSAvKiBUcmFuc2l0aW9uRXZl
bnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxN0I0
OTE0MTZBOUIwOTMwMDFDODgzOSAvKiBUcmFuc2l0aW9uRXZlbnQuaCAqLzsgfTsKQEAgLTQ3MzEs
NyArNDczMyw3IEBACiAJCUUxODgyMzY2MjAzMUY1OTQwMEI0MkRGMyAvKiBWUlBsYXRmb3JtTWFu
YWdlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTE4
ODIzNjEyMDMxRjU1QjAwQjQyREYzIC8qIFZSUGxhdGZvcm1NYW5hZ2VyLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTE4QzM1NDQxRjcxOTcwQzAw
RkY2MzJEIC8qIFdlYkFyY2hpdmVSZXNvdXJjZVdlYlJlc291cmNlSGFuZGxlci5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTE4QzM1NDExRjcxOTZDRDAw
RkY2MzJEIC8qIFdlYkFyY2hpdmVSZXNvdXJjZVdlYlJlc291cmNlSGFuZGxlci5oICovOyB9Owog
CQlFMThERjMzNTE4QUFGMTJDMDA3NzNFNTkgLyogU2VyaWFsaXplZENyeXB0b0tleVdyYXAuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxOERGMzM0MThB
QUYxMkMwMDc3M0U1OSAvKiBTZXJpYWxpemVkQ3J5cHRvS2V5V3JhcC5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCUUxOTcyNzE2MTgyMDU0OUUwMDU5
MkQ1MSAvKiBDcnlwdG9LZXlUeXBlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBFMTk3MjcxNTE4MjA1NDlFMDA1OTJENTEgLyogQ3J5cHRvS2V5VHlwZS5o
ICovOyB9OworCQlFMTk3MjcxNjE4MjA1NDlFMDA1OTJENTEgLyogQ3J5cHRvS2V5VHlwZS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTE5NzI3MTUxODIw
NTQ5RTAwNTkyRDUxIC8qIENyeXB0b0tleVR5cGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFMTlBQzNFRjE4MjREQzc5MDAzNDk0MjYgLyogQ3J5
cHRvQWxnb3JpdGhtU0hBMjI0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBFMTlBQzNFNzE4MjREQzc5MDAzNDk0MjYgLyogQ3J5cHRvQWxnb3JpdGhtU0hB
MjI0LmggKi87IH07CiAJCUUxOUFDM0YxMTgyNERDNzkwMDM0OTQyNiAvKiBDcnlwdG9BbGdvcml0
aG1TSEEyNTYuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEUxOUFDM0U5MTgyNERDNzkwMDM0OTQyNiAvKiBDcnlwdG9BbGdvcml0aG1TSEEyNTYuaCAqLzsg
fTsKIAkJRTE5QUMzRjMxODI0REM3OTAwMzQ5NDI2IC8qIENyeXB0b0FsZ29yaXRobVNIQTM4NC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTE5QUMzRUIx
ODI0REM3OTAwMzQ5NDI2IC8qIENyeXB0b0FsZ29yaXRobVNIQTM4NC5oICovOyB9OwpAQCAtNDc1
NSw3ICs0NzU3LDcgQEAKIAkJRTFDNDE1REEwRjY1NUQ2RjAwOTJEMkZCIC8qIENyb3NzT3JpZ2lu
UHJlZmxpZ2h0UmVzdWx0Q2FjaGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEUxQzQxNUQ5MEY2NTVENkYwMDkyRDJGQiAvKiBDcm9zc09yaWdpblByZWZs
aWdodFJlc3VsdENhY2hlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJRTFDNDE2MTIwRjY1NjJGRDAwOTJEMkZCIC8qIENyb3NzT3JpZ2luQWNjZXNz
Q29udHJvbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RTFDNDE2MTEwRjY1NjJGRDAwOTJEMkZCIC8qIENyb3NzT3JpZ2luQWNjZXNzQ29udHJvbC5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUUxQzRERTY5
MEVBNzVDMUUwMDIzQ0NENiAvKiBBY3RpdmVET01PYmplY3QuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxQzRERTY4MEVBNzVDMUUwMDIzQ0NENiAvKiBB
Y3RpdmVET01PYmplY3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwotCQlFMUM2NTcyNTE4MTZFNjlEMDAyNTZDREQgLyogQ3J5cHRvQWxnb3JpdGhtSWRl
bnRpZmllci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RTFDNjU3MjQxODE2RTY5RDAwMjU2Q0REIC8qIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXIuaCAq
LzsgfTsKKwkJRTFDNjU3MjUxODE2RTY5RDAwMjU2Q0REIC8qIENyeXB0b0FsZ29yaXRobUlkZW50
aWZpZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUx
QzY1NzI0MTgxNkU2OUQwMDI1NkNERCAvKiBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTFDOTRBRjkx
OTEzMDNGMDAwRDVBODkzIC8qIEJsb2JQYXJ0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBFMUM5NEFGNzE5MTMwM0YwMDBENUE4OTMgLyogQmxvYlBhcnQu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFMUNB
QTVDNjBFOEJEMjM2MDBBNzNFQ0EgLyogSlNXb3JrZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxQ0FBNUM1MEU4QkQyMzYwMEE3M0VDQSAvKiBKU1dv
cmtlci5oICovOyB9OwogCQlFMUNERTkyMjE1MDE5MTY5MDA4NjJDQzUgLyogQXN5bmNGaWxlU3Ry
ZWFtLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMUNE
RTkyMTE1MDE5MTY5MDA4NjJDQzUgLyogQXN5bmNGaWxlU3RyZWFtLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTQ3NjgsNyArNDc3MCw3IEBACiAJ
CUUxRjgwQjg4MTgzMTcyNTIwMDc4ODVDMyAvKiBDcnlwdG9LZXlQYWlyLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMUY4MEI4NjE4MzE3MjUyMDA3ODg1
QzMgLyogQ3J5cHRvS2V5UGFpci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCUUxRjgwQjhFMTgzMTcyQjUwMDc4ODVDMyAvKiBKU0NyeXB0b0tleVBh
aXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxRjgw
QjhDMTgzMTcyQjUwMDc4ODVDMyAvKiBKU0NyeXB0b0tleVBhaXIuaCAqLzsgfTsKIAkJRTFGRTEz
NkIxODNGRTFBQjAwODkyRjEzIC8qIENyeXB0b0FsZ29yaXRobVJTQV9PQUVQLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMUZFMTM2OTE4M0ZFMUFCMDA4
OTJGMTMgLyogQ3J5cHRvQWxnb3JpdGhtUlNBX09BRVAuaCAqLzsgfTsKLQkJRTFGRTEzNzUxODQw
MkE2NzAwODkyRjEzIC8qIENvbW1vbkNyeXB0b1V0aWxpdGllcy5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTFGRTEzNzMxODQwMkE2NzAwODkyRjEzIC8q
IENvbW1vbkNyeXB0b1V0aWxpdGllcy5oICovOyB9OworCQlFMUZFMTM3NTE4NDAyQTY3MDA4OTJG
MTMgLyogQ29tbW9uQ3J5cHRvVXRpbGl0aWVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBFMUZFMTM3MzE4NDAyQTY3MDA4OTJGMTMgLyogQ29tbW9uQ3J5
cHRvVXRpbGl0aWVzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJRTFGRTEzN0IxODREMjFCQjAwODkyRjEzIC8qIENyeXB0b0FsZ29yaXRobUFFU19L
Vy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTFGRTEz
NzkxODREMjFCQjAwODkyRjEzIC8qIENyeXB0b0FsZ29yaXRobUFFU19LVy5oICovOyB9OwogCQlF
MUZGNTdBMzBGMDEyNTVCMDA4OTFFQkIgLyogVGhyZWFkR2xvYmFsRGF0YS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTFGRjU3QTIwRjAxMjU1QjAwODkx
RUJCIC8qIFRocmVhZEdsb2JhbERhdGEuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQlFMUZGOEY2RDE4MERCNUJFMDAxMzI2NzQgLyogQ3J5cHRvQWxn
b3JpdGhtUmVnaXN0cnkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEUxRkY4RjZCMTgwREI1QkUwMDEzMjY3NCAvKiBDcnlwdG9BbGdvcml0aG1SZWdpc3Ry
eS5oICovOyB9OwpAQCAtODc5MSw2ICs4NzkzLDggQEAKIAkJNTc1ODU5NjkyMzlGMUVDNzAwQzc0
NTcyIC8qIEF1dGhlbnRpY2F0b3JSZXNwb25zZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBdXRo
ZW50aWNhdG9yUmVzcG9uc2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1NzU4
NTk2QjIzOUYyODRCMDBDNzQ1NzIgLyogQXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9uc2Uu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9uc2Uu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1NzU4NTk2RTIzOUYzOTc5MDBDNzQ1
NzIgLyogQXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IEF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTU3NTg1OTc4MjNBMUZDRTYwMEM3NDU3MiAvKiBQaW4uY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUGluLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJNTc1ODU5NzkyM0ExRkNGMjAwQzc0NTcyIC8qIFBpbi5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBQaW4uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNTc2MDgyNEYyMDExOEQ4RDAwMTE2Njc4IC8qIEpTQmFzaWNDcmVkZW50aWFsQ3VzdG9tLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTQmFzaWNDcmVkZW50aWFsQ3VzdG9tLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTc2MDgyNTYyMDExQkUwMjAwMTE2Njc4IC8qIEpTQXV0
aGVudGljYXRvclJlc3BvbnNlQ3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTQXV0aGVu
dGljYXRvclJlc3BvbnNlQ3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NTc2MDgyNzAyMDIxNTEzRjAwMTE2Njc4IC8qIEF1dGhlbnRpY2F0b3JDb29yZGluYXRvckNsaWVu
dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JDbGllbnQuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE5OTgyLDYgKzE5OTg2LDggQEAKIAkJCQk1NzhB
NEMwQTIxNjdEMjk2MDBEMDhGMzQgLyogRmlkb0hpZFBhY2tldC5oICovLAogCQkJCTU3M0Y1MzM2
MjE2ODBEMTUwMDQ1NTg3QSAvKiBGaWRvUGFyc2luZ1V0aWxzLmNwcCAqLywKIAkJCQk1NzNGNTMz
NTIxNjgwRDE0MDA0NTU4N0EgLyogRmlkb1BhcnNpbmdVdGlscy5oICovLAorCQkJCTU3NTg1OTc4
MjNBMUZDRTYwMEM3NDU3MiAvKiBQaW4uY3BwICovLAorCQkJCTU3NTg1OTc5MjNBMUZDRjIwMEM3
NDU3MiAvKiBQaW4uaCAqLywKIAkJCQk1NzE1MkI2QTIxQ0Q5OTVDMDAwQzM3Q0EgLyogVTJmQ29t
bWFuZENvbnN0cnVjdG9yLmNwcCAqLywKIAkJCQk1NzE1MkI2QzIxQ0Q5OTVDMDAwQzM3Q0EgLyog
VTJmQ29tbWFuZENvbnN0cnVjdG9yLmggKi8sCiAJCQkJNTcxNTJCN0IyMUREOEJBMTAwMEMzN0NB
IC8qIFUyZlJlc3BvbnNlQ29udmVydGVyLmNwcCAqLywKQEAgLTI5NDAwLDYgKzI5NDA2LDcgQEAK
IAkJCQlFMTI1Rjg0RTE4MjQyODlEMDBEODRDRDkgLyogQ3J5cHRvS2V5QUVTLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk3QzlBQ0E5MjFGM0NDMEFBMDBGM0FBMDkgLyogQ3J5cHRvS2V5QWxnb3JpdGht
LmggaW4gSGVhZGVycyAqLywKIAkJCQk1NzUwQTk3NTFFNjhEMDAwMDA3MDVDNEEgLyogQ3J5cHRv
S2V5RUMuaCBpbiBIZWFkZXJzICovLAorCQkJCTU3MjU3NkQ2MjNBODg3MkIwMDkwOTU0MCAvKiBD
cnlwdG9LZXlGb3JtYXQuaCBpbiBIZWFkZXJzICovLAogCQkJCUUxMjVGODM2MTgyMkYxOEEwMEQ4
NENEOSAvKiBDcnlwdG9LZXlITUFDLmggaW4gSGVhZGVycyAqLywKIAkJCQlFMUY4MEI4ODE4MzE3
MjUyMDA3ODg1QzMgLyogQ3J5cHRvS2V5UGFpci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTdFNjU3
REYxRTcxMzczQTAwRjk0MUNBIC8qIENyeXB0b0tleVJhdy5oIGluIEhlYWRlcnMgKi8sCkBAIC0z
MTcwMSw2ICszMTcwOCw3IEBACiAJCQkJMURCQzFCNTYyMzQ3QjNEMjAwQjkwMUFGIC8qIFBpY3R1
cmVJblBpY3R1cmVPYnNlcnZlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUQyQzgyQjcyMzZBM0Y2
QTAwNTVENkM1IC8qIFBpY3R1cmVJblBpY3R1cmVTdXBwb3J0LmggaW4gSGVhZGVycyAqLywKIAkJ
CQkxRDJGOEUwNjIzNDQ3NTIzMDA5OTNCNjggLyogUGljdHVyZUluUGljdHVyZVdpbmRvdy5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJNTc1ODU5N0MyM0ExRkNGMzAwQzc0NTcyIC8qIFBpbi5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJRDBGRjJBNUUxMUY4QzQ1QTAwN0U3NEUwIC8qIFBpbmdMb2FkZXIuaCBp
biBIZWFkZXJzICovLAogCQkJCUNEN0QzMzQ0MUM3QTEyM0YwMDA0MTI5MyAvKiBQaXhlbEJ1ZmZl
ckNvbmZvcm1lckNWLmggaW4gSGVhZGVycyAqLywKIAkJCQlDREVGQTIyODFFNzY2OUU4MDAwQUU5
OUMgLyogUGxhdGZvcm1BdWRpb0RhdGEuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvY3J5cHRvL0NyeXB0b0FsZ29yaXRobS5oIGIvU291cmNlL1dlYkNvcmUvY3J5
cHRvL0NyeXB0b0FsZ29yaXRobS5oCmluZGV4IDhmNDUwNjMyNjAxMzI2M2MxZDM4M2IwNzIxYzQx
ZTAyYWU0NGQ5ODMuLmEyZTczYWQ1NWRlYjU4MDhjOWFjNzcyNTcyYWE2YjBiODk1NGZkYTggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9DcnlwdG9BbGdvcml0aG0uaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9jcnlwdG8vQ3J5cHRvQWxnb3JpdGhtLmgKQEAgLTMxLDcgKzMxLDYgQEAK
ICNpbmNsdWRlICJDcnlwdG9LZXlVc2FnZS5oIgogI2luY2x1ZGUgIkV4Y2VwdGlvbk9yLmgiCiAj
aW5jbHVkZSAiSnNvbldlYktleS5oIgotI2luY2x1ZGUgIlN1YnRsZUNyeXB0by5oIgogI2luY2x1
ZGUgPHd0Zi9GdW5jdGlvbi5oPgogI2luY2x1ZGUgPHd0Zi9UaHJlYWRTYWZlUmVmQ291bnRlZC5o
PgogI2luY2x1ZGUgPHd0Zi9WYXJpYW50Lmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9j
cnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1BRVNfQ0JDLmggYi9Tb3VyY2UvV2ViQ29y
ZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1BRVNfQ0JDLmgKaW5kZXggYjJiMDQz
ZGE2ZWExZDBiZmI0MGRkY2M0Mjg2NDI4MmFhNWIwNTQ5ZS4uZmQ5ODkxMmI3MGRjMGI1MWQxYjk4
NzkwNjY0ZDcyYjQ2ZTM0MjhmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2Fs
Z29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtQUVTX0NCQy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Ny
eXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobUFFU19DQkMuaApAQCAtNDAsNiArNDAsMTAg
QEAgcHVibGljOgogICAgIHN0YXRpYyBjb25zdGV4cHIgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmll
ciBzX2lkZW50aWZpZXIgPSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpBRVNfQ0JDOwogICAg
IHN0YXRpYyBSZWY8Q3J5cHRvQWxnb3JpdGhtPiBjcmVhdGUoKTsKIAorICAgIC8vIE9wZXJhdGlv
bnMgY2FuIGJlIHBlcmZvcm1lZCBkaXJlY3RseS4KKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMg
RXhjZXB0aW9uT3I8VmVjdG9yPHVpbnQ4X3Q+PiBwbGF0Zm9ybUVuY3J5cHQoY29uc3QgQ3J5cHRv
QWxnb3JpdGhtQWVzQ2JjQ2ZiUGFyYW1zJiwgY29uc3QgQ3J5cHRvS2V5QUVTJiwgY29uc3QgVmVj
dG9yPHVpbnQ4X3Q+Jik7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIEV4Y2VwdGlvbk9yPFZl
Y3Rvcjx1aW50OF90Pj4gcGxhdGZvcm1EZWNyeXB0KGNvbnN0IENyeXB0b0FsZ29yaXRobUFlc0Ni
Y0NmYlBhcmFtcyYsIGNvbnN0IENyeXB0b0tleUFFUyYsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYp
OworCiBwcml2YXRlOgogICAgIENyeXB0b0FsZ29yaXRobUFFU19DQkMoKSA9IGRlZmF1bHQ7CiAg
ICAgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllciBpZGVudGlmaWVyKCkgY29uc3QgZmluYWw7CkBA
IC01MCw5ICs1NCw2IEBAIHByaXZhdGU6CiAgICAgdm9pZCBpbXBvcnRLZXkoQ3J5cHRvS2V5Rm9y
bWF0LCBLZXlEYXRhJiYsIGNvbnN0IENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnMmLCBib29sIGV4
dHJhY3RhYmxlLCBDcnlwdG9LZXlVc2FnZUJpdG1hcCwgS2V5Q2FsbGJhY2smJiwgRXhjZXB0aW9u
Q2FsbGJhY2smJikgZmluYWw7CiAgICAgdm9pZCBleHBvcnRLZXkoQ3J5cHRvS2V5Rm9ybWF0LCBS
ZWY8Q3J5cHRvS2V5PiYmLCBLZXlEYXRhQ2FsbGJhY2smJiwgRXhjZXB0aW9uQ2FsbGJhY2smJikg
ZmluYWw7CiAgICAgRXhjZXB0aW9uT3I8c2l6ZV90PiBnZXRLZXlMZW5ndGgoY29uc3QgQ3J5cHRv
QWxnb3JpdGhtUGFyYW1ldGVycyYpIGZpbmFsOwotCi0gICAgc3RhdGljIEV4Y2VwdGlvbk9yPFZl
Y3Rvcjx1aW50OF90Pj4gcGxhdGZvcm1FbmNyeXB0KGNvbnN0IENyeXB0b0FsZ29yaXRobUFlc0Ni
Y0NmYlBhcmFtcyYsIGNvbnN0IENyeXB0b0tleUFFUyYsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYp
OwotICAgIHN0YXRpYyBFeGNlcHRpb25PcjxWZWN0b3I8dWludDhfdD4+IHBsYXRmb3JtRGVjcnlw
dChjb25zdCBDcnlwdG9BbGdvcml0aG1BZXNDYmNDZmJQYXJhbXMmLCBjb25zdCBDcnlwdG9LZXlB
RVMmLCBjb25zdCBWZWN0b3I8dWludDhfdD4mKTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0Fs
Z29yaXRobUVDREguaCBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0Fs
Z29yaXRobUVDREguaAppbmRleCA3ODM5MWM5MjdlOGE1MTUzYTBjMDkwMThjNjZjOWM3OGNlMDk5
ODIzLi4xNGUzNzI3YjdhNzAzOGRiMjQ0NGRkZjVmNzUyYTdiNDU2NDRkNjVhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1FQ0RILmgK
KysrIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtRUNE
SC5oCkBAIC0zOSw2ICszOSw5IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3RleHByIENyeXB0
b0FsZ29yaXRobUlkZW50aWZpZXIgc19pZGVudGlmaWVyID0gQ3J5cHRvQWxnb3JpdGhtSWRlbnRp
Zmllcjo6RUNESDsKICAgICBzdGF0aWMgUmVmPENyeXB0b0FsZ29yaXRobT4gY3JlYXRlKCk7CiAK
KyAgICAvLyBPcGVyYXRpb25zIGNhbiBiZSBwZXJmb3JtZWQgZGlyZWN0bHkuCisgICAgV0VCQ09S
RV9FWFBPUlQgc3RhdGljIE9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gcGxhdGZvcm1EZXJpdmVC
aXRzKGNvbnN0IENyeXB0b0tleUVDJiwgY29uc3QgQ3J5cHRvS2V5RUMmKTsKKwogcHJpdmF0ZToK
ICAgICBDcnlwdG9BbGdvcml0aG1FQ0RIKCkgPSBkZWZhdWx0OwogICAgIENyeXB0b0FsZ29yaXRo
bUlkZW50aWZpZXIgaWRlbnRpZmllcigpIGNvbnN0IGZpbmFsOwpAQCAtNDcsOCArNTAsNiBAQCBw
cml2YXRlOgogICAgIHZvaWQgZGVyaXZlQml0cyhjb25zdCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0
ZXJzJiwgUmVmPENyeXB0b0tleT4mJiwgc2l6ZV90IGxlbmd0aCwgVmVjdG9yQ2FsbGJhY2smJiwg
RXhjZXB0aW9uQ2FsbGJhY2smJiwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIFdvcmtRdWV1ZSYp
IGZpbmFsOwogICAgIHZvaWQgaW1wb3J0S2V5KENyeXB0b0tleUZvcm1hdCwgS2V5RGF0YSYmLCBj
b25zdCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzJiwgYm9vbCBleHRyYWN0YWJsZSwgQ3J5cHRv
S2V5VXNhZ2VCaXRtYXAsIEtleUNhbGxiYWNrJiYsIEV4Y2VwdGlvbkNhbGxiYWNrJiYpIGZpbmFs
OwogICAgIHZvaWQgZXhwb3J0S2V5KENyeXB0b0tleUZvcm1hdCwgUmVmPENyeXB0b0tleT4mJiwg
S2V5RGF0YUNhbGxiYWNrJiYsIEV4Y2VwdGlvbkNhbGxiYWNrJiYpIGZpbmFsOwotCi0gICAgc3Rh
dGljIE9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gcGxhdGZvcm1EZXJpdmVCaXRzKGNvbnN0IENy
eXB0b0tleUVDJiwgY29uc3QgQ3J5cHRvS2V5RUMmKTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0
b0FsZ29yaXRobUhNQUMuaCBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0
b0FsZ29yaXRobUhNQUMuaAppbmRleCBiYWI4OTljZjM0ZDFmNTA0ZThmOTc3YmZlMWE4MWM1OTI0
NGVhYWVmLi5mYThmMGFkZGNjZTEyOGYyNDcxNTE3M2ZhZmJmYTkyNzMyNTI1MGQzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1ITUFD
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGht
SE1BQy5oCkBAIC0zOSw2ICszOSwxMCBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGNvbnN0ZXhwciBD
cnlwdG9BbGdvcml0aG1JZGVudGlmaWVyIHNfaWRlbnRpZmllciA9IENyeXB0b0FsZ29yaXRobUlk
ZW50aWZpZXI6OkhNQUM7CiAgICAgc3RhdGljIFJlZjxDcnlwdG9BbGdvcml0aG0+IGNyZWF0ZSgp
OwogCisgICAgLy8gT3BlcmF0aW9ucyBjYW4gYmUgcGVyZm9ybWVkIGRpcmVjdGx5LgorICAgIHN0
YXRpYyBFeGNlcHRpb25PcjxWZWN0b3I8dWludDhfdD4+IHBsYXRmb3JtU2lnbihjb25zdCBDcnlw
dG9LZXlITUFDJiwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+Jik7CisgICAgc3RhdGljIEV4Y2VwdGlv
bk9yPGJvb2w+IHBsYXRmb3JtVmVyaWZ5KGNvbnN0IENyeXB0b0tleUhNQUMmLCBjb25zdCBWZWN0
b3I8dWludDhfdD4mLCBjb25zdCBWZWN0b3I8dWludDhfdD4mKTsKKwogcHJpdmF0ZToKICAgICBD
cnlwdG9BbGdvcml0aG1ITUFDKCkgPSBkZWZhdWx0OwogICAgIENyeXB0b0FsZ29yaXRobUlkZW50
aWZpZXIgaWRlbnRpZmllcigpIGNvbnN0IGZpbmFsOwpAQCAtNDksOSArNTMsNiBAQCBwcml2YXRl
OgogICAgIHZvaWQgaW1wb3J0S2V5KENyeXB0b0tleUZvcm1hdCwgS2V5RGF0YSYmLCBjb25zdCBD
cnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzJiwgYm9vbCBleHRyYWN0YWJsZSwgQ3J5cHRvS2V5VXNh
Z2VCaXRtYXAsIEtleUNhbGxiYWNrJiYsIEV4Y2VwdGlvbkNhbGxiYWNrJiYpIGZpbmFsOwogICAg
IHZvaWQgZXhwb3J0S2V5KENyeXB0b0tleUZvcm1hdCwgUmVmPENyeXB0b0tleT4mJiwgS2V5RGF0
YUNhbGxiYWNrJiYsIEV4Y2VwdGlvbkNhbGxiYWNrJiYpIGZpbmFsOwogICAgIEV4Y2VwdGlvbk9y
PHNpemVfdD4gZ2V0S2V5TGVuZ3RoKGNvbnN0IENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnMmKSBm
aW5hbDsKLQotICAgIHN0YXRpYyBFeGNlcHRpb25PcjxWZWN0b3I8dWludDhfdD4+IHBsYXRmb3Jt
U2lnbihjb25zdCBDcnlwdG9LZXlITUFDJiwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+Jik7Ci0gICAg
c3RhdGljIEV4Y2VwdGlvbk9yPGJvb2w+IHBsYXRmb3JtVmVyaWZ5KGNvbnN0IENyeXB0b0tleUhN
QUMmLCBjb25zdCBWZWN0b3I8dWludDhfdD4mLCBjb25zdCBWZWN0b3I8dWludDhfdD4mKTsKIH07
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Ny
eXB0by9rZXlzL0NyeXB0b0tleUFFUy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8va2V5cy9D
cnlwdG9LZXlBRVMuY3BwCmluZGV4IGVhNmU1MTNiNjc2N2Y2M2QwMTQ2OGY4MGQzYmY4MjdkYjlj
NjBhM2UuLjkxN2VlOWVmYWE4MmRhOTQzZTA5NTU5ZGY3ZTdiODU3YzcyNTNlMTUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9rZXlzL0NyeXB0b0tleUFFUy5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvY3J5cHRvL2tleXMvQ3J5cHRvS2V5QUVTLmNwcApAQCAtMjgsNiArMjgsNyBA
QAogCiAjaWYgRU5BQkxFKFdFQl9DUllQVE8pCiAKKyNpbmNsdWRlICJDcnlwdG9BZXNLZXlBbGdv
cml0aG0uaCIKICNpbmNsdWRlICJDcnlwdG9BbGdvcml0aG1BZXNLZXlQYXJhbXMuaCIKICNpbmNs
dWRlICJDcnlwdG9BbGdvcml0aG1SZWdpc3RyeS5oIgogI2luY2x1ZGUgIkV4Y2VwdGlvbk9yLmgi
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8va2V5cy9DcnlwdG9LZXlBRVMuaCBi
L1NvdXJjZS9XZWJDb3JlL2NyeXB0by9rZXlzL0NyeXB0b0tleUFFUy5oCmluZGV4IDEwN2M3OWJj
NGU4NjExN2M4OTBjYjkzMTg0ZTNlZWE5ZTZmMzA2ODEuLjM0MWNhNmJjN2E1ZDc5NzBiODM4Mzk4
NzFmOGMwNjg3MWFiOWMxNGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9rZXlz
L0NyeXB0b0tleUFFUy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9rZXlzL0NyeXB0b0tl
eUFFUy5oCkBAIC01NCw3ICs1NCw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgYm9vbCBpc1ZhbGlk
QUVTQWxnb3JpdGhtKENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXIpOwogCiAgICAgc3RhdGljIFJl
ZlB0cjxDcnlwdG9LZXlBRVM+IGdlbmVyYXRlKENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXIsIHNp
emVfdCBsZW5ndGhCaXRzLCBib29sIGV4dHJhY3RhYmxlLCBDcnlwdG9LZXlVc2FnZUJpdG1hcCk7
Ci0gICAgc3RhdGljIFJlZlB0cjxDcnlwdG9LZXlBRVM+IGltcG9ydFJhdyhDcnlwdG9BbGdvcml0
aG1JZGVudGlmaWVyLCBWZWN0b3I8dWludDhfdD4mJiBrZXlEYXRhLCBib29sIGV4dHJhY3RhYmxl
LCBDcnlwdG9LZXlVc2FnZUJpdG1hcCk7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZlB0
cjxDcnlwdG9LZXlBRVM+IGltcG9ydFJhdyhDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyLCBWZWN0
b3I8dWludDhfdD4mJiBrZXlEYXRhLCBib29sIGV4dHJhY3RhYmxlLCBDcnlwdG9LZXlVc2FnZUJp
dG1hcCk7CiAgICAgdXNpbmcgQ2hlY2tBbGdDYWxsYmFjayA9IEZ1bmN0aW9uPGJvb2woc2l6ZV90
LCBjb25zdCBTdHJpbmcmKT47CiAgICAgc3RhdGljIFJlZlB0cjxDcnlwdG9LZXlBRVM+IGltcG9y
dEp3ayhDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyLCBKc29uV2ViS2V5JiYsIGJvb2wgZXh0cmFj
dGFibGUsIENyeXB0b0tleVVzYWdlQml0bWFwLCBDaGVja0FsZ0NhbGxiYWNrJiYpOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8va2V5cy9DcnlwdG9LZXlFQy5oIGIvU291cmNl
L1dlYkNvcmUvY3J5cHRvL2tleXMvQ3J5cHRvS2V5RUMuaAppbmRleCAzNjQ3MTM0MDVjODllNTFi
NDMxMTdlYzkzYzNjNGM4NGVlZmM2ZTMyLi5jYWM3NDhhODQ4OGY2MmEzNTIyNDNlNGQ4NjMzZDNk
MDA5MmNmYTRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8va2V5cy9DcnlwdG9L
ZXlFQy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9rZXlzL0NyeXB0b0tleUVDLmgKQEAg
LTY5LDEzICs2OSwxMyBAQCBwdWJsaWM6CiAgICAgfQogICAgIHZpcnR1YWwgfkNyeXB0b0tleUVD
KCkgPSBkZWZhdWx0OwogCi0gICAgc3RhdGljIEV4Y2VwdGlvbk9yPENyeXB0b0tleVBhaXI+IGdl
bmVyYXRlUGFpcihDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGN1cnZl
LCBib29sIGV4dHJhY3RhYmxlLCBDcnlwdG9LZXlVc2FnZUJpdG1hcCk7Ci0gICAgc3RhdGljIFJl
ZlB0cjxDcnlwdG9LZXlFQz4gaW1wb3J0UmF3KENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXIsIGNv
bnN0IFN0cmluZyYgY3VydmUsIFZlY3Rvcjx1aW50OF90PiYmIGtleURhdGEsIGJvb2wgZXh0cmFj
dGFibGUsIENyeXB0b0tleVVzYWdlQml0bWFwKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMg
RXhjZXB0aW9uT3I8Q3J5cHRvS2V5UGFpcj4gZ2VuZXJhdGVQYWlyKENyeXB0b0FsZ29yaXRobUlk
ZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgY3VydmUsIGJvb2wgZXh0cmFjdGFibGUsIENyeXB0b0tl
eVVzYWdlQml0bWFwKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmUHRyPENyeXB0b0tl
eUVDPiBpbXBvcnRSYXcoQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBj
dXJ2ZSwgVmVjdG9yPHVpbnQ4X3Q+JiYga2V5RGF0YSwgYm9vbCBleHRyYWN0YWJsZSwgQ3J5cHRv
S2V5VXNhZ2VCaXRtYXApOwogICAgIHN0YXRpYyBSZWZQdHI8Q3J5cHRvS2V5RUM+IGltcG9ydEp3
ayhDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGN1cnZlLCBKc29uV2Vi
S2V5JiYsIGJvb2wgZXh0cmFjdGFibGUsIENyeXB0b0tleVVzYWdlQml0bWFwKTsKICAgICBzdGF0
aWMgUmVmUHRyPENyeXB0b0tleUVDPiBpbXBvcnRTcGtpKENyeXB0b0FsZ29yaXRobUlkZW50aWZp
ZXIsIGNvbnN0IFN0cmluZyYgY3VydmUsIFZlY3Rvcjx1aW50OF90PiYmIGtleURhdGEsIGJvb2wg
ZXh0cmFjdGFibGUsIENyeXB0b0tleVVzYWdlQml0bWFwKTsKICAgICBzdGF0aWMgUmVmUHRyPENy
eXB0b0tleUVDPiBpbXBvcnRQa2NzOChDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyLCBjb25zdCBT
dHJpbmcmIGN1cnZlLCBWZWN0b3I8dWludDhfdD4mJiBrZXlEYXRhLCBib29sIGV4dHJhY3RhYmxl
LCBDcnlwdG9LZXlVc2FnZUJpdG1hcCk7CiAKLSAgICBFeGNlcHRpb25PcjxWZWN0b3I8dWludDhf
dD4+IGV4cG9ydFJhdygpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIEV4Y2VwdGlvbk9yPFZl
Y3Rvcjx1aW50OF90Pj4gZXhwb3J0UmF3KCkgY29uc3Q7CiAgICAgRXhjZXB0aW9uT3I8SnNvbldl
YktleT4gZXhwb3J0SndrKCkgY29uc3Q7CiAgICAgRXhjZXB0aW9uT3I8VmVjdG9yPHVpbnQ4X3Q+
PiBleHBvcnRTcGtpKCkgY29uc3Q7CiAgICAgRXhjZXB0aW9uT3I8VmVjdG9yPHVpbnQ4X3Q+PiBl
eHBvcnRQa2NzOCgpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL21h
Yy9DcnlwdG9BbGdvcml0aG1BRVNfQ0JDTWFjLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9t
YWMvQ3J5cHRvQWxnb3JpdGhtQUVTX0NCQ01hYy5jcHAKaW5kZXggNGM4OTQwNzU0NTgyOTJjNDFi
OGZmZWYxZjIyNjMyMzg3YWMxNGM4MS4uNTE3Y2ZjODliOTczNzE0OWM0ODA3Yjg1YWQxZjIwZGZh
MGFhYzFkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL21hYy9DcnlwdG9BbGdv
cml0aG1BRVNfQ0JDTWFjLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vbWFjL0NyeXB0
b0FsZ29yaXRobUFFU19DQkNNYWMuY3BwCkBAIC02NCwxMyArNjQsMTMgQEAgc3RhdGljIEV4Y2Vw
dGlvbk9yPFZlY3Rvcjx1aW50OF90Pj4gdHJhbnNmb3JtQUVTX0NCQyhDQ09wZXJhdGlvbiBvcGVy
YXRpb24sIGNvbnMKIAogRXhjZXB0aW9uT3I8VmVjdG9yPHVpbnQ4X3Q+PiBDcnlwdG9BbGdvcml0
aG1BRVNfQ0JDOjpwbGF0Zm9ybUVuY3J5cHQoY29uc3QgQ3J5cHRvQWxnb3JpdGhtQWVzQ2JjQ2Zi
UGFyYW1zJiBwYXJhbWV0ZXJzLCBjb25zdCBDcnlwdG9LZXlBRVMmIGtleSwgY29uc3QgVmVjdG9y
PHVpbnQ4X3Q+JiBwbGFpblRleHQpCiB7Ci0gICAgQVNTRVJUKHBhcmFtZXRlcnMuaXZWZWN0b3Io
KS5zaXplKCkgPT0ga0NDQmxvY2tTaXplQUVTMTI4KTsKKyAgICBBU1NFUlQocGFyYW1ldGVycy5p
dlZlY3RvcigpLnNpemUoKSA9PSBrQ0NCbG9ja1NpemVBRVMxMjggfHwgcGFyYW1ldGVycy5pdlZl
Y3RvcigpLmlzRW1wdHkoKSk7CiAgICAgcmV0dXJuIHRyYW5zZm9ybUFFU19DQkMoa0NDRW5jcnlw
dCwgcGFyYW1ldGVycy5pdlZlY3RvcigpLCBrZXkua2V5KCksIHBsYWluVGV4dCk7CiB9CiAKIEV4
Y2VwdGlvbk9yPFZlY3Rvcjx1aW50OF90Pj4gQ3J5cHRvQWxnb3JpdGhtQUVTX0NCQzo6cGxhdGZv
cm1EZWNyeXB0KGNvbnN0IENyeXB0b0FsZ29yaXRobUFlc0NiY0NmYlBhcmFtcyYgcGFyYW1ldGVy
cywgY29uc3QgQ3J5cHRvS2V5QUVTJiBrZXksIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgY2lwaGVy
VGV4dCkKIHsKLSAgICBBU1NFUlQocGFyYW1ldGVycy5pdlZlY3RvcigpLnNpemUoKSA9PSBrQ0NC
bG9ja1NpemVBRVMxMjgpOworICAgIEFTU0VSVChwYXJhbWV0ZXJzLml2VmVjdG9yKCkuc2l6ZSgp
ID09IGtDQ0Jsb2NrU2l6ZUFFUzEyOCB8fCBwYXJhbWV0ZXJzLml2VmVjdG9yKCkuaXNFbXB0eSgp
KTsKICAgICByZXR1cm4gdHJhbnNmb3JtQUVTX0NCQyhrQ0NEZWNyeXB0LCBwYXJhbWV0ZXJzLml2
VmVjdG9yKCksIGtleS5rZXkoKSwgY2lwaGVyVGV4dCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2NyeXB0by9tYWMvQ3J5cHRvS2V5UlNBTWFjLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2NyeXB0by9tYWMvQ3J5cHRvS2V5UlNBTWFjLmNwcAppbmRleCAyNzU1ZTczNWZlNmRjODQ2YmI0
ZjFiZThkZGU1MmMxNDdiOWYwOTkyLi4yY2JiMGE3YzQyY2I0OWFjNjcyNTRhYjg5OWFkZDJhOTgy
NTVlZDQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vbWFjL0NyeXB0b0tleVJT
QU1hYy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL21hYy9DcnlwdG9LZXlSU0FNYWMu
Y3BwCkBAIC0yMDEsMTQgKzIwMSwxNCBAQCBhdXRvIENyeXB0b0tleVJTQTo6YWxnb3JpdGhtKCkg
Y29uc3QgLT4gS2V5QWxnb3JpdGhtCiAgICAgICAgIHJlc3VsdC5tb2R1bHVzTGVuZ3RoID0gbW9k
dWx1c0xlbmd0aDsKICAgICAgICAgcmVzdWx0LnB1YmxpY0V4cG9uZW50ID0gVWludDhBcnJheTo6
dHJ5Q3JlYXRlKHB1YmxpY0V4cG9uZW50LmRhdGEoKSwgcHVibGljRXhwb25lbnQuc2l6ZSgpKTsK
ICAgICAgICAgcmVzdWx0Lmhhc2gubmFtZSA9IENyeXB0b0FsZ29yaXRobVJlZ2lzdHJ5OjpzaW5n
bGV0b24oKS5uYW1lKG1faGFzaCk7Ci0gICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgICAgIHJl
dHVybiBXVEZNb3ZlKHJlc3VsdCk7CiAgICAgfQogICAgIAogICAgIENyeXB0b1JzYUtleUFsZ29y
aXRobSByZXN1bHQ7CiAgICAgcmVzdWx0Lm5hbWUgPSBDcnlwdG9BbGdvcml0aG1SZWdpc3RyeTo6
c2luZ2xldG9uKCkubmFtZShhbGdvcml0aG1JZGVudGlmaWVyKCkpOwogICAgIHJlc3VsdC5tb2R1
bHVzTGVuZ3RoID0gbW9kdWx1c0xlbmd0aDsKICAgICByZXN1bHQucHVibGljRXhwb25lbnQgPSBV
aW50OEFycmF5Ojp0cnlDcmVhdGUocHVibGljRXhwb25lbnQuZGF0YSgpLCBwdWJsaWNFeHBvbmVu
dC5zaXplKCkpOwotICAgIHJldHVybiByZXN1bHQ7CisgICAgcmV0dXJuIFdURk1vdmUocmVzdWx0
KTsKIH0KIAogc3RkOjp1bmlxdWVfcHRyPENyeXB0b0tleVJTQUNvbXBvbmVudHM+IENyeXB0b0tl
eVJTQTo6ZXhwb3J0RGF0YSgpIGNvbnN0CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9U
b29scy9DaGFuZ2VMb2cKaW5kZXggZDFmNWIyZjE3NThhNjQyNzFjNDU0MmMwMmRjOWNmNzg3ODBi
ZDQzMS4uMmQxNTUzM2UxODliYjk0OTNmZGUxMTI5NjljNWFlZDZkMDYxYWQyNCAxMDA2NDQKLS0t
IGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBA
CisyMDE5LTEyLTE3ICBKaWV3ZW4gVGFuICA8amlld2VuX3RhbkBhcHBsZS5jb20+CisKKyAgICAg
ICAgW1dlYkF1dGhuXSBJbXBsZW1lbnQgY29kZXJzIGZvciBDVEFQIENsaWVudFBJTiByZXF1ZXN0
cyBhbmQgcmVzcG9uc2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMDUzNzYKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzU4MDM0Mzk1PgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZHMgQVBJIHRlc3Rz
LgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2o6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0N0YXBQ
aW5UZXN0LmNwcDogQWRkZWQuCisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKToKKyAgICAg
ICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvQ3RhcFJlcXVlc3RUZXN0LmNwcDoKKyAg
ICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViQ29yZS9GaWRvVGVzdERhdGEuaDoKKwogMjAxOS0xMi0xMSAgSm9uYXRoYW4gQmVkYXJk
ICA8amJlZGFyZEBhcHBsZS5jb20+CiAKICAgICAgICAgUHl0aG9uIDM6IFN1cHBvcnQgc2VyaWFs
IFNlcnZlclByb2Nlc3MgdGVzdHMKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggODEzYjgxZmM1
OWM0MTc1ZmRiM2IzOWQ3NDMwZmMxYjZjNTM4ZGVhZi4uYTQ0MGEzYjcyMjZiZjliZjRlM2U4ZDIw
MzRlZWYxZWJkYjU5MmVmOSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2Vi
S2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTM0MSw2ICszNDEs
NyBAQAogCQk1NzMyNTVBNjIyMTM5QkM3MDAzOTZBRTggLyogbG9hZC13ZWItYXJjaGl2ZS0xLmh0
bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NTczMjU1QTIyMjEzOUI4RjAwMzk2QUU4IC8qIGxvYWQtd2ViLWFyY2hpdmUtMS5odG1sICovOyB9
OwogCQk1NzMyNTVBNzIyMTM5QkM3MDAzOTZBRTggLyogbG9hZC13ZWItYXJjaGl2ZS0yLmh0bWwg
aW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTcz
MjU1QTMyMjEzOUI5MDAwMzk2QUU4IC8qIGxvYWQtd2ViLWFyY2hpdmUtMi5odG1sICovOyB9Owog
CQk1NzRGNTVEMjIwNEQ0N0YwMDAyOTQ4QzYgLyogU2VjdXJpdHkuZnJhbWV3b3JrIGluIEZyYW1l
d29ya3MgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTc0RjU1RDAyMDRENDcx
QzAwMjk0OEM2IC8qIFNlY3VyaXR5LmZyYW1ld29yayAqLzsgfTsKKwkJNTc1ODU5N0YyM0EyNTI3
QTAwQzc0NTcyIC8qIEN0YXBQaW5UZXN0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDU3NTg1OTdFMjNBMjUyN0EwMEM3NDU3MiAvKiBDdGFwUGluVGVz
dC5jcHAgKi87IH07CiAJCTU3NTk5RTIxMUYwNzE5MTkwMEEzRkI4QyAvKiBJbmRleGVkREJTdHJ1
Y3R1cmVkQ2xvbmVCYWNrd2FyZENvbXBhdGliaWxpdHkubW0gaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NzU5OUUyMDFGMDcxOTE3MDBBM0ZCOEMgLyogSW5k
ZXhlZERCU3RydWN0dXJlZENsb25lQmFja3dhcmRDb21wYXRpYmlsaXR5Lm1tICovOyB9OwogCQk1
NzU5OUUyNzFGMDcxQUEwMDBBM0ZCOEMgLyogSW5kZXhlZERCU3RydWN0dXJlZENsb25lQmFja3dh
cmRDb21wYXRpYmlsaXR5LnNxbGl0ZTMgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNTc1OTlFMjQxRjA3MTkyQzAwQTNGQjhDIC8qIEluZGV4ZWRE
QlN0cnVjdHVyZWRDbG9uZUJhY2t3YXJkQ29tcGF0aWJpbGl0eS5zcWxpdGUzICovOyB9OwogCQk1
NzU5OUUyODFGMDcxQUEwMDBBM0ZCOEMgLyogSW5kZXhlZERCU3RydWN0dXJlZENsb25lQmFja3dh
cmRDb21wYXRpYmlsaXR5LnNxbGl0ZTMtc2htIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3NTk5RTI2MUYwNzE5MkMwMEEzRkI4QyAvKiBJbmRl
eGVkREJTdHJ1Y3R1cmVkQ2xvbmVCYWNrd2FyZENvbXBhdGliaWxpdHkuc3FsaXRlMy1zaG0gKi87
IH07CkBAIC0xOTAxLDYgKzE5MDIsOCBAQAogCQk1NzMyNTVBNDIyMTM5QjkwMDAzOTZBRTggLyog
aGVsbG93b3JsZC53ZWJhcmNoaXZlICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gZmlsZS5icGxpc3Q7IHBhdGggPSBoZWxsb3dvcmxkLndlYmFyY2hpdmU7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU3MzVGMDI1MUYzQTRFQTYwMDBFRTgwMSAv
KiBUZXN0V2ViS2l0QVBJLWlPUy5lbnRpdGxlbWVudHMgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnBsaXN0LmVudGl0bGVtZW50czsgcGF0aCA9
ICJUZXN0V2ViS2l0QVBJLWlPUy5lbnRpdGxlbWVudHMiOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk1NzRGNTVEMDIwNEQ0NzFDMDAyOTQ4QzYgLyogU2VjdXJpdHkuZnJhbWV3b3JrICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gd3JhcHBlci5m
cmFtZXdvcms7IG5hbWUgPSBTZWN1cml0eS5mcmFtZXdvcms7IHBhdGggPSBTeXN0ZW0vTGlicmFy
eS9GcmFtZXdvcmtzL1NlY3VyaXR5LmZyYW1ld29yazsgc291cmNlVHJlZSA9IFNES1JPT1Q7IH07
CisJCTU3NTg1OTdEMjNBMjUyN0EwMEM3NDU3MiAvKiBDdGFwUGluVGVzdC5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBDdGFwUGluVGVzdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1NzU4NTk3
RTIzQTI1MjdBMDBDNzQ1NzIgLyogQ3RhcFBpblRlc3QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
Q3RhcFBpblRlc3QuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1NzU5OUUyMDFG
MDcxOTE3MDBBM0ZCOEMgLyogSW5kZXhlZERCU3RydWN0dXJlZENsb25lQmFja3dhcmRDb21wYXRp
YmlsaXR5Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gSW5kZXhl
ZERCU3RydWN0dXJlZENsb25lQmFja3dhcmRDb21wYXRpYmlsaXR5Lm1tOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk1NzU5OUUyMzFGMDcxOTJDMDBBM0ZCOEMgLyogSW5kZXhlZERCU3Ry
dWN0dXJlZENsb25lQmFja3dhcmRDb21wYXRpYmlsaXR5V3JpdGUuaHRtbCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9IElu
ZGV4ZWREQlN0cnVjdHVyZWRDbG9uZUJhY2t3YXJkQ29tcGF0aWJpbGl0eVdyaXRlLmh0bWw7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU3NTk5RTI0MUYwNzE5MkMwMEEzRkI4QyAvKiBJ
bmRleGVkREJTdHJ1Y3R1cmVkQ2xvbmVCYWNrd2FyZENvbXBhdGliaWxpdHkuc3FsaXRlMyAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IGZpbGU7IHBhdGgg
PSBJbmRleGVkREJTdHJ1Y3R1cmVkQ2xvbmVCYWNrd2FyZENvbXBhdGliaWxpdHkuc3FsaXRlMzsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTMwOTIsNiArMzA5NSw4IEBACiAJCQkJMUM5
RUI4NDAxRTM4MERBMTAwNUM2NDQyIC8qIENvbXBsZXhUZXh0Q29udHJvbGxlci5jcHAgKi8sCiAJ
CQkJN0NCMTg0QzQxQUEzRjIxMDAwNjZFREZEIC8qIENvbnRlbnRFeHRlbnNpb25zLmNwcCAqLywK
IAkJCQlDRDU0NTFFOTE5RTQxRjlEMDAxNjkzNkYgLyogQ1NTUGFyc2VyLmNwcCAqLywKKwkJCQk1
NzU4NTk3RTIzQTI1MjdBMDBDNzQ1NzIgLyogQ3RhcFBpblRlc3QuY3BwICovLAorCQkJCTU3NTg1
OTdEMjNBMjUyN0EwMEM3NDU3MiAvKiBDdGFwUGluVGVzdC5oICovLAogCQkJCTU3MkI0MDMzMjE3
NjlBODgwMDBBRDQzRSAvKiBDdGFwUmVxdWVzdFRlc3QuY3BwICovLAogCQkJCTU3MkI0MDQzMjE3
ODFCNDIwMDBBRDQzRSAvKiBDdGFwUmVzcG9uc2VUZXN0LmNwcCAqLywKIAkJCQkyNjBCQTU3ODFC
MUQyRTdCMDA0RkEwN0MgLyogREZBQ29tYmluZXIuY3BwICovLApAQCAtNDU3NCw2ICs0NTc5LDcg
QEAKIAkJCQk3Q0NFN0VBQzFBNDExQTM0MDA0NDdDNEMgLyogQ291bnRlcnMuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJN0FFQUQ0N0YxRTIwMTE2QzAwNDE2RUZFIC8qIENyb3NzUGFydGl0aW9uRmls
ZVNjaGVtZUFjY2Vzcy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTdDQ0U3RURCMUE0MTFBOTIwMDQ0
N0M0QyAvKiBDU1NQYXJzZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNTc1ODU5N0YyM0EyNTI3
QTAwQzc0NTcyIC8qIEN0YXBQaW5UZXN0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTU3MkI0MDM0
MjE3NjlBODgwMDBBRDQzRSAvKiBDdGFwUmVxdWVzdFRlc3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJNTcyQjQwNDQyMTc4MUI0MzAwMEFENDNFIC8qIEN0YXBSZXNwb25zZVRlc3QuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJN0FDN0I1NzAyMEQ5QkE1QjAwMkMwOUEwIC8qIEN1c3RvbUJ1bmRsZU9i
amVjdC5tbSBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJDb3JlL0N0YXBQaW5UZXN0LmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViQ29yZS9DdGFwUGluVGVzdC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzJhMWIyNDI0MzJmODNlOGJlYWVl
NTUzNDJmZWYzOWFmZjAxYTIyMQotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViQ29yZS9DdGFwUGluVGVzdC5jcHAKQEAgLTAsMCArMSwyOTUgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBFTkFCTEUoV0VCX0FVVEhOKQorCisj
aW5jbHVkZSAiRmlkb1Rlc3REYXRhLmgiCisjaW5jbHVkZSAiUGxhdGZvcm1VdGlsaXRpZXMuaCIK
KyNpbmNsdWRlIDxXZWJDb3JlL0NCT1JSZWFkZXIuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0NCT1JW
YWx1ZS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvQ3J5cHRvQWxnb3JpdGhtQUVTX0NCQy5oPgorI2lu
Y2x1ZGUgPFdlYkNvcmUvQ3J5cHRvQWxnb3JpdGhtQWVzQ2JjQ2ZiUGFyYW1zLmg+CisjaW5jbHVk
ZSA8V2ViQ29yZS9DcnlwdG9BbGdvcml0aG1FQ0RILmg+CisjaW5jbHVkZSA8V2ViQ29yZS9Dcnlw
dG9LZXlBRVMuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0NyeXB0b0tleUVDLmg+CisjaW5jbHVkZSA8
V2ViQ29yZS9DcnlwdG9LZXlITUFDLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9GaWRvQ29uc3RhbnRz
Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9QaW4uaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1dlYkF1dGhl
bnRpY2F0aW9uQ29uc3RhbnRzLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9XZWJBdXRoZW50aWNhdGlv
blV0aWxzLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvQmFzZTY0Lmg+CisKK25hbWVzcGFjZSBUZXN0
V2ViS2l0QVBJIHsKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwordXNpbmcgbmFtZXNwYWNlIGNi
b3I7Cit1c2luZyBuYW1lc3BhY2UgZmlkbzsKK3VzaW5nIG5hbWVzcGFjZSBmaWRvOjpwaW47CisK
K1RFU1QoQ3RhcFBpblRlc3QsIFRlc3RWYWxpZGF0ZUFuZENvbnZlcnRUb1VURjgpCit7CisgICAg
Ly8gRmFpbHVyZSBjYXNlcworICAgIGF1dG8gcmVzdWx0ID0gdmFsaWRhdGVBbmRDb252ZXJ0VG9V
VEY4KCIxMjMiKTsKKyAgICBFWFBFQ1RfRkFMU0UocmVzdWx0KTsKKyAgICByZXN1bHQgPSB2YWxp
ZGF0ZUFuZENvbnZlcnRUb1VURjgoIiIpOworICAgIEVYUEVDVF9GQUxTRShyZXN1bHQpOworICAg
IHJlc3VsdCA9IHZhbGlkYXRlQW5kQ29udmVydFRvVVRGOCgiMTIzNDU2NzgxMjM0NTY3ODEyMzQ1
Njc4MTIzNDU2NzgxMjM0NTY3ODEyMzQ1Njc4MTIzNDU2NzgxMjM0NTY3OCIpOworICAgIEVYUEVD
VF9GQUxTRShyZXN1bHQpOworCisgICAgLy8gU3VjY2VzcyBjYXNlcworICAgIHJlc3VsdCA9IHZh
bGlkYXRlQW5kQ29udmVydFRvVVRGOCgiMTIzNCIpOworICAgIEVYUEVDVF9UUlVFKHJlc3VsdCk7
CisgICAgRVhQRUNUX0VRKHJlc3VsdC0+bGVuZ3RoKCksIDR1KTsKKyAgICBFWFBFQ1RfU1RSRVEo
cmVzdWx0LT5kYXRhKCksICIxMjM0Iik7CisKKyAgICByZXN1bHQgPSB2YWxpZGF0ZUFuZENvbnZl
cnRUb1VURjgoIjEyMzQ1Njc4MTIzNDU2NzgxMjM0NTY3ODEyMzQ1Njc4MTIzNDU2NzgxMjM0NTY3
ODEyMzQ1Njc4MTIzNDU2NyIpOworICAgIEVYUEVDVF9UUlVFKHJlc3VsdCk7CisgICAgRVhQRUNU
X0VRKHJlc3VsdC0+bGVuZ3RoKCksIDYzdSk7CisgICAgRVhQRUNUX1NUUkVRKHJlc3VsdC0+ZGF0
YSgpLCAiMTIzNDU2NzgxMjM0NTY3ODEyMzQ1Njc4MTIzNDU2NzgxMjM0NTY3ODEyMzQ1Njc4MTIz
NDU2NzgxMjM0NTY3Iik7Cit9CisKK1RFU1QoQ3RhcFBpblRlc3QsIFRlc3RSZXRyaWVzUmVxdWVz
dCkKK3sKKyAgICBhdXRvIHJlc3VsdCA9IGVuY29kZUFzQ0JPUihSZXRyaWVzUmVxdWVzdCB7IH0p
OworICAgIEVYUEVDVF9FUShyZXN1bHQuc2l6ZSgpLCBzaXplb2YoVGVzdERhdGE6OmtDdGFwQ2xp
ZW50UGluUmV0cmllcykpOworICAgIEVYUEVDVF9FUShtZW1jbXAocmVzdWx0LmRhdGEoKSwgVGVz
dERhdGE6OmtDdGFwQ2xpZW50UGluUmV0cmllcywgcmVzdWx0LnNpemUoKSksIDApOworfQorCitU
RVNUKEN0YXBQaW5UZXN0LCBUZXN0UmV0cmllc1Jlc3BvbnNlKQoreworICAgIC8vIEZhaWx1cmUg
Y2FzZXMKKyAgICBhdXRvIHJlc3VsdCA9IFJldHJpZXNSZXNwb25zZTo6cGFyc2UoeyB9KTsKKyAg
ICBFWFBFQ1RfRkFMU0UocmVzdWx0KTsKKworICAgIGNvbnN0IHVpbnQ4X3QgdGVzdERhdGExW10g
PSB7IDB4MDUgfTsgLy8gd3JvbmcgcmVzcG9uc2UgY29kZQorICAgIHJlc3VsdCA9IFJldHJpZXNS
ZXNwb25zZTo6cGFyc2UoY29udmVydEJ5dGVzVG9WZWN0b3IodGVzdERhdGExLCBzaXplb2YodGVz
dERhdGExKSkpOworICAgIEVYUEVDVF9GQUxTRShyZXN1bHQpOworCisgICAgY29uc3QgdWludDhf
dCB0ZXN0RGF0YTJbXSA9IHsgMHgwMCwgMHgwMCB9OyAvLyB3cm9uZyBDQk9SIG1hcAorICAgIHJl
c3VsdCA9IFJldHJpZXNSZXNwb25zZTo6cGFyc2UoY29udmVydEJ5dGVzVG9WZWN0b3IodGVzdERh
dGEyLCBzaXplb2YodGVzdERhdGEyKSkpOworICAgIEVYUEVDVF9GQUxTRShyZXN1bHQpOworCisg
ICAgcmVzdWx0ID0gUmV0cmllc1Jlc3BvbnNlOjpwYXJzZShjb252ZXJ0Qnl0ZXNUb1ZlY3RvcihU
ZXN0RGF0YTo6a0N0YXBDbGllbnRQaW5Ub2tlblJlc3BvbnNlLCBzaXplb2YoVGVzdERhdGE6OmtD
dGFwQ2xpZW50UGluVG9rZW5SZXNwb25zZSkpKTsgLy8gd3JvbmcgcmVzcG9uc2UKKyAgICBFWFBF
Q1RfRkFMU0UocmVzdWx0KTsKKworICAgIC8vIFN1Y2Nlc3MgY2FzZXMKKyAgICByZXN1bHQgPSBS
ZXRyaWVzUmVzcG9uc2U6OnBhcnNlKGNvbnZlcnRCeXRlc1RvVmVjdG9yKFRlc3REYXRhOjprQ3Rh
cENsaWVudFBpblJldHJpZXNSZXNwb25zZSwgc2l6ZW9mKFRlc3REYXRhOjprQ3RhcENsaWVudFBp
blJldHJpZXNSZXNwb25zZSkpKTsKKyAgICBFWFBFQ1RfVFJVRShyZXN1bHQpOworICAgIEVYUEVD
VF9FUShyZXN1bHQtPnJldHJpZXMsIDgpOworfQorCitURVNUKEN0YXBQaW5UZXN0LCBUZXN0S2V5
QWdyZWVtZW50UmVxdWVzdCkKK3sKKyAgICBhdXRvIHJlc3VsdCA9IGVuY29kZUFzQ0JPUihLZXlB
Z3JlZW1lbnRSZXF1ZXN0IHsgfSk7CisgICAgRVhQRUNUX0VRKHJlc3VsdC5zaXplKCksIHNpemVv
ZihUZXN0RGF0YTo6a0N0YXBDbGllbnRQaW5LZXlBZ3JlZW1lbnQpKTsKKyAgICBFWFBFQ1RfRVEo
bWVtY21wKHJlc3VsdC5kYXRhKCksIFRlc3REYXRhOjprQ3RhcENsaWVudFBpbktleUFncmVlbWVu
dCwgcmVzdWx0LnNpemUoKSksIDApOworfQorCitURVNUKEN0YXBQaW5UZXN0LCBUZXN0S2V5QWdy
ZWVtZW50UmVzcG9uc2UpCit7CisgICAgLy8gRmFpbHVyZSBjYXNlcworICAgIGF1dG8gcmVzdWx0
ID0gS2V5QWdyZWVtZW50UmVzcG9uc2U6OnBhcnNlKHsgfSk7CisgICAgRVhQRUNUX0ZBTFNFKHJl
c3VsdCk7CisKKyAgICBjb25zdCB1aW50OF90IHRlc3REYXRhMVtdID0geyAweDA1IH07IC8vIHdy
b25nIHJlc3BvbnNlIGNvZGUKKyAgICByZXN1bHQgPSBLZXlBZ3JlZW1lbnRSZXNwb25zZTo6cGFy
c2UoY29udmVydEJ5dGVzVG9WZWN0b3IodGVzdERhdGExLCBzaXplb2YodGVzdERhdGExKSkpOwor
ICAgIEVYUEVDVF9GQUxTRShyZXN1bHQpOworCisgICAgY29uc3QgdWludDhfdCB0ZXN0RGF0YTJb
XSA9IHsgMHgwMCwgMHgwMCB9OyAvLyB3cm9uZyBDQk9SIG1hcAorICAgIHJlc3VsdCA9IEtleUFn
cmVlbWVudFJlc3BvbnNlOjpwYXJzZShjb252ZXJ0Qnl0ZXNUb1ZlY3Rvcih0ZXN0RGF0YTIsIHNp
emVvZih0ZXN0RGF0YTIpKSk7CisgICAgRVhQRUNUX0ZBTFNFKHJlc3VsdCk7CisKKyAgICByZXN1
bHQgPSBLZXlBZ3JlZW1lbnRSZXNwb25zZTo6cGFyc2UoY29udmVydEJ5dGVzVG9WZWN0b3IoVGVz
dERhdGE6OmtDdGFwQ2xpZW50UGluVG9rZW5SZXNwb25zZSwgc2l6ZW9mKFRlc3REYXRhOjprQ3Rh
cENsaWVudFBpblRva2VuUmVzcG9uc2UpKSk7IC8vIHdyb25nIHJlc3BvbnNlCisgICAgRVhQRUNU
X0ZBTFNFKHJlc3VsdCk7CisKKyAgICAvLyBUZXN0IENPU0UKKyAgICBhdXRvIGNvc2VLZXkgPSBl
bmNvZGVDT1NFUHVibGljS2V5KFZlY3Rvcjx1aW50OF90Pig2NSkpOworICAgIGNvc2VLZXlbQ0JP
UlZhbHVlKENPU0U6Omt0eSldID0gQ0JPUlZhbHVlKDApOyAvLyB3cm9uZyBrdHkKKyAgICBhdXRv
IGNvc2VSZXN1bHQgPSBLZXlBZ3JlZW1lbnRSZXNwb25zZTo6cGFyc2VGcm9tQ09TRShjb3NlS2V5
KTsKKyAgICBFWFBFQ1RfRkFMU0UoY29zZVJlc3VsdCk7CisKKyAgICBjb3NlS2V5ID0gZW5jb2Rl
Q09TRVB1YmxpY0tleShWZWN0b3I8dWludDhfdD4oNjUpKTsKKyAgICBjb3NlS2V5W0NCT1JWYWx1
ZShDT1NFOjphbGcpXSA9IENCT1JWYWx1ZSgwKTsgLy8gd3JvbmcgYWxnCisgICAgY29zZVJlc3Vs
dCA9IEtleUFncmVlbWVudFJlc3BvbnNlOjpwYXJzZUZyb21DT1NFKGNvc2VLZXkpOworICAgIEVY
UEVDVF9GQUxTRShjb3NlUmVzdWx0KTsKKworICAgIGNvc2VLZXkgPSBlbmNvZGVDT1NFUHVibGlj
S2V5KFZlY3Rvcjx1aW50OF90Pig2NSkpOworICAgIGNvc2VLZXlbQ0JPUlZhbHVlKENPU0U6OmNy
dildID0gQ0JPUlZhbHVlKDApOyAvLyB3cm9uZyBjcnYKKyAgICBjb3NlUmVzdWx0ID0gS2V5QWdy
ZWVtZW50UmVzcG9uc2U6OnBhcnNlRnJvbUNPU0UoY29zZUtleSk7CisgICAgRVhQRUNUX0ZBTFNF
KGNvc2VSZXN1bHQpOworCisgICAgY29zZUtleSA9IGVuY29kZUNPU0VQdWJsaWNLZXkoVmVjdG9y
PHVpbnQ4X3Q+KDY1KSk7CisgICAgY29zZUtleVtDQk9SVmFsdWUoQ09TRTo6eCldID0gQ0JPUlZh
bHVlKDApOyAvLyB3cm9uZyBjcnYKKyAgICBjb3NlUmVzdWx0ID0gS2V5QWdyZWVtZW50UmVzcG9u
c2U6OnBhcnNlRnJvbUNPU0UoY29zZUtleSk7CisgICAgRVhQRUNUX0ZBTFNFKGNvc2VSZXN1bHQp
OworCisgICAgY29zZUtleSA9IGVuY29kZUNPU0VQdWJsaWNLZXkoVmVjdG9yPHVpbnQ4X3Q+KDY1
KSk7CisgICAgY29zZUtleVtDQk9SVmFsdWUoQ09TRTo6eSldID0gQ0JPUlZhbHVlKDApOyAvLyB3
cm9uZyBjcnYKKyAgICBjb3NlUmVzdWx0ID0gS2V5QWdyZWVtZW50UmVzcG9uc2U6OnBhcnNlRnJv
bUNPU0UoY29zZUtleSk7CisgICAgRVhQRUNUX0ZBTFNFKGNvc2VSZXN1bHQpOworCisgICAgLy8g
U3VjY2VzcyBjYXNlcworICAgIHJlc3VsdCA9IEtleUFncmVlbWVudFJlc3BvbnNlOjpwYXJzZShj
b252ZXJ0Qnl0ZXNUb1ZlY3RvcihUZXN0RGF0YTo6a0N0YXBDbGllbnRQaW5LZXlBZ3JlZW1lbnRS
ZXNwb25zZSwgc2l6ZW9mKFRlc3REYXRhOjprQ3RhcENsaWVudFBpbktleUFncmVlbWVudFJlc3Bv
bnNlKSkpOworICAgIEVYUEVDVF9UUlVFKHJlc3VsdCk7CisgICAgYXV0byBleHBvcnRlZFJhd0tl
eSA9IHJlc3VsdC0+cGVlcktleS0+ZXhwb3J0UmF3KCk7CisgICAgRVhQRUNUX0ZBTFNFKGV4cG9y
dGVkUmF3S2V5Lmhhc0V4Y2VwdGlvbigpKTsKKyAgICBWZWN0b3I8dWludDhfdD4gZXhwZWN0ZWRS
YXdLZXk7CisgICAgZXhwZWN0ZWRSYXdLZXkucmVzZXJ2ZUNhcGFjaXR5KDY1KTsKKyAgICBleHBl
Y3RlZFJhd0tleS5hcHBlbmQoMHgwNCk7CisgICAgZXhwZWN0ZWRSYXdLZXkuYXBwZW5kKFRlc3RE
YXRhOjprQ3RhcENsaWVudFBpbktleUFncmVlbWVudFJlc3BvbnNlICsgMTQsIDMyKTsgLy8gWAor
ICAgIGV4cGVjdGVkUmF3S2V5LmFwcGVuZChUZXN0RGF0YTo6a0N0YXBDbGllbnRQaW5LZXlBZ3Jl
ZW1lbnRSZXNwb25zZSArIDQ5LCAzMik7IC8vIFkKKyAgICBFWFBFQ1RfVFJVRShleHBvcnRlZFJh
d0tleS5yZXR1cm5WYWx1ZSgpID09IGV4cGVjdGVkUmF3S2V5KTsKK30KKworVEVTVChDdGFwUGlu
VGVzdCwgVGVzdFRva2VuUmVxdWVzdCkKK3sKKyAgICAvLyBHZW5lcmF0ZSBhbiBFQyBrZXkgcGFp
ciBhcyB0aGUgcGVlciBrZXkuCisgICAgYXV0byBrZXlQYWlyUmVzdWx0ID0gQ3J5cHRvS2V5RUM6
OmdlbmVyYXRlUGFpcihDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpFQ0RILCAiUC0yNTYiLCB0
cnVlLCBDcnlwdG9LZXlVc2FnZURlcml2ZUJpdHMpOworICAgIEFTU0VSVF9GQUxTRShrZXlQYWly
UmVzdWx0Lmhhc0V4Y2VwdGlvbigpKTsKKyAgICBhdXRvIGtleVBhaXIgPSBrZXlQYWlyUmVzdWx0
LnJlbGVhc2VSZXR1cm5WYWx1ZSgpOworCisgICAgQ1N0cmluZyBwaW4gPSAiMTIzNCI7CisKKyAg
ICBhdXRvIHRva2VuID0gVG9rZW5SZXF1ZXN0Ojp0cnlDcmVhdGUocGluLCBkb3duY2FzdDxDcnlw
dG9LZXlFQz4oKmtleVBhaXIucHVibGljS2V5KSk7CisgICAgRVhQRUNUX1RSVUUodG9rZW4pOwor
ICAgIGF1dG8gcmVzdWx0ID0gZW5jb2RlQXNDQk9SKCp0b2tlbik7CisgICAgRVhQRUNUX0VRKHJl
c3VsdC5zaXplKCksIDEyMHUpOworICAgIEVYUEVDVF9FUShyZXN1bHRbMF0sIHN0YXRpY19jYXN0
PHVpbnQ4X3Q+KEN0YXBSZXF1ZXN0Q29tbWFuZDo6a0F1dGhlbnRpY2F0b3JDbGllbnRQaW4pKTsK
KworICAgIC8vIERlY29kZSB0aGUgQ0JPUiBiaW5hcnkgdG8gY2hlY2sgaWYgZWFjaCBmaWVsZCBp
cyBlbmNvZGVkIGNvcnJlY3RseS4KKyAgICBWZWN0b3I8dWludDhfdD4gYnVmZmVyOworICAgIGJ1
ZmZlci5hcHBlbmQocmVzdWx0LmRhdGEoKSArIDEsIHJlc3VsdC5zaXplKCkgLSAxKTsKKyAgICBh
dXRvIGRlY29kZWRSZXNwb25zZSA9IGNib3I6OkNCT1JSZWFkZXI6OnJlYWQoYnVmZmVyKTsKKyAg
ICBFWFBFQ1RfVFJVRShkZWNvZGVkUmVzcG9uc2UpOworICAgIEVYUEVDVF9UUlVFKGRlY29kZWRS
ZXNwb25zZS0+aXNNYXAoKSk7CisgICAgY29uc3QgYXV0byYgcmVzcG9uc2VNYXAgPSBkZWNvZGVk
UmVzcG9uc2UtPmdldE1hcCgpOworCisgICAgY29uc3QgYXV0byYgaXQxID0gcmVzcG9uc2VNYXAu
ZmluZChDQk9SVmFsdWUoc3RhdGljX2Nhc3Q8dWludDhfdD4oUmVxdWVzdEtleTo6a1Byb3RvY29s
KSkpOworICAgIEVYUEVDVF9ORShpdDEsIHJlc3BvbnNlTWFwLmVuZCgpKTsKKyAgICBFWFBFQ1Rf
RVEoaXQxLT5zZWNvbmQuZ2V0SW50ZWdlcigpLCBrUHJvdG9jb2xWZXJzaW9uKTsKKworICAgIGNv
bnN0IGF1dG8mIGl0MiA9IHJlc3BvbnNlTWFwLmZpbmQoQ0JPUlZhbHVlKHN0YXRpY19jYXN0PHVp
bnQ4X3Q+KFJlcXVlc3RLZXk6OmtTdWJjb21tYW5kKSkpOworICAgIEVYUEVDVF9ORShpdDIsIHJl
c3BvbnNlTWFwLmVuZCgpKTsKKyAgICBFWFBFQ1RfRVEoaXQyLT5zZWNvbmQuZ2V0SW50ZWdlcigp
LCBzdGF0aWNfY2FzdDx1aW50OF90PihTdWJjb21tYW5kOjprR2V0UGluVG9rZW4pKTsKKworICAg
IC8vIENPU0UKKyAgICBhdXRvIGl0ID0gcmVzcG9uc2VNYXAuZmluZChDQk9SVmFsdWUoc3RhdGlj
X2Nhc3Q8aW50PihSZXF1ZXN0S2V5OjprS2V5QWdyZWVtZW50KSkpOworICAgIEVYUEVDVF9UUlVF
KGRlY29kZWRSZXNwb25zZSk7CisgICAgRVhQRUNUX1RSVUUoZGVjb2RlZFJlc3BvbnNlLT5pc01h
cCgpKTsKKyAgICBjb25zdCBhdXRvJiBjb3NlS2V5ID0gaXQtPnNlY29uZC5nZXRNYXAoKTsKKwor
ICAgIGNvbnN0IGF1dG8mIGl0MyA9IGNvc2VLZXkuZmluZChDQk9SVmFsdWUoQ09TRTo6a3R5KSk7
CisgICAgRVhQRUNUX05FKGl0MywgY29zZUtleS5lbmQoKSk7CisgICAgRVhQRUNUX0VRKGl0My0+
c2Vjb25kLmdldEludGVnZXIoKSwgQ09TRTo6RUMyKTsKKworICAgIGNvbnN0IGF1dG8mIGl0NCA9
IGNvc2VLZXkuZmluZChDQk9SVmFsdWUoQ09TRTo6YWxnKSk7CisgICAgRVhQRUNUX05FKGl0NCwg
Y29zZUtleS5lbmQoKSk7CisgICAgRVhQRUNUX0VRKGl0NC0+c2Vjb25kLmdldEludGVnZXIoKSwg
Q09TRTo6RUNESDI1Nik7CisKKyAgICBjb25zdCBhdXRvJiBpdDUgPSBjb3NlS2V5LmZpbmQoQ0JP
UlZhbHVlKENPU0U6OmNydikpOworICAgIEVYUEVDVF9ORShpdDUsIGNvc2VLZXkuZW5kKCkpOwor
ICAgIEVYUEVDVF9FUShpdDUtPnNlY29uZC5nZXRJbnRlZ2VyKCksIENPU0U6OlBfMjU2KTsKKwor
ICAgIC8vIENoZWNrIHRoZSBjb3NlIGtleS4KKyAgICBjb25zdCBhdXRvJiB4SXQgPSBjb3NlS2V5
LmZpbmQoQ0JPUlZhbHVlKC0yKSk7CisgICAgRVhQRUNUX05FKHhJdCwgY29zZUtleS5lbmQoKSk7
CisgICAgY29uc3QgYXV0byYgeUl0ID0gY29zZUtleS5maW5kKENCT1JWYWx1ZSgtMykpOworICAg
IEVYUEVDVF9ORSh5SXQsIGNvc2VLZXkuZW5kKCkpOworICAgIGF1dG8gY29zZVB1YmxpY0tleSA9
IENyeXB0b0tleUVDOjppbXBvcnRSYXcoQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6RUNESCwg
IlAtMjU2IiwgZW5jb2RlUmF3UHVibGljS2V5KHhJdC0+c2Vjb25kLmdldEJ5dGVTdHJpbmcoKSwg
eUl0LT5zZWNvbmQuZ2V0Qnl0ZVN0cmluZygpKSwgdHJ1ZSwgQ3J5cHRvS2V5VXNhZ2VEZXJpdmVC
aXRzKTsKKyAgICBFWFBFQ1RfVFJVRShjb3NlUHVibGljS2V5KTsKKworICAgIC8vIENoZWNrIHRo
ZSBlbmNyeXB0ZWQgUGluLgorICAgIGF1dG8gc2hhcmVkS2V5UmVzdWx0ID0gQ3J5cHRvQWxnb3Jp
dGhtRUNESDo6cGxhdGZvcm1EZXJpdmVCaXRzKGRvd25jYXN0PENyeXB0b0tleUVDPigqa2V5UGFp
ci5wcml2YXRlS2V5KSwgKmNvc2VQdWJsaWNLZXkpOworICAgIEVYUEVDVF9UUlVFKHNoYXJlZEtl
eVJlc3VsdCk7CisgICAgYXV0byBhZXNLZXkgPSBDcnlwdG9LZXlBRVM6OmltcG9ydFJhdyhDcnlw
dG9BbGdvcml0aG1JZGVudGlmaWVyOjpBRVNfQ0JDLCBXVEZNb3ZlKCpzaGFyZWRLZXlSZXN1bHQp
LCB0cnVlLCBDcnlwdG9LZXlVc2FnZURlY3J5cHQpOworICAgIEVYUEVDVF9UUlVFKGFlc0tleSk7
CisKKyAgICBjb25zdCBhdXRvJiBpdDYgPSByZXNwb25zZU1hcC5maW5kKENCT1JWYWx1ZShzdGF0
aWNfY2FzdDx1aW50OF90PihSZXF1ZXN0S2V5OjprUGluSGFzaEVuYykpKTsKKyAgICBFWFBFQ1Rf
TkUoaXQ2LCByZXNwb25zZU1hcC5lbmQoKSk7CisgICAgYXV0byBwaW5IYXNoUmVzdWx0ID0gQ3J5
cHRvQWxnb3JpdGhtQUVTX0NCQzo6cGxhdGZvcm1EZWNyeXB0KHsgfSwgKmFlc0tleSwgaXQ2LT5z
ZWNvbmQuZ2V0Qnl0ZVN0cmluZygpKTsKKyAgICBFWFBFQ1RfRkFMU0UocGluSGFzaFJlc3VsdC5o
YXNFeGNlcHRpb24oKSk7CisgICAgYXV0byBwaW5IYXNoID0gcGluSGFzaFJlc3VsdC5yZWxlYXNl
UmV0dXJuVmFsdWUoKTsKKyAgICBjb25zdCB1aW50OF90IGV4cGVjdGVkUGluSGFzaFtdID0geyAw
eDAzLCAweGFjLCAweDY3LCAweDQyLCAweDE2LCAweGYzLCAweGUxLCAweDVjLCAweDc2LCAweDFl
LCAweGUxLCAweGE1LCAweGUyLCAweDU1LCAweGYwLCAweDY3IH07CisgICAgRVhQRUNUX0VRKHBp
bkhhc2guc2l6ZSgpLCAxNnUpOworICAgIEVYUEVDVF9FUShtZW1jbXAocGluSGFzaC5kYXRhKCks
IGV4cGVjdGVkUGluSGFzaCwgcGluSGFzaC5zaXplKCkpLCAwKTsKK30KKworVEVTVChDdGFwUGlu
VGVzdCwgVGVzdFRva2VuUmVzcG9uc2UpCit7CisgICAgY29uc3QgdWludDhfdCBzaGFyZWRLZXlE
YXRhW10gPSB7CisgICAgICAgIDB4MDMsIDB4YWMsIDB4NjcsIDB4NDIsIDB4MTYsIDB4ZjMsIDB4
ZTEsIDB4NWMsCisgICAgICAgIDB4NzYsIDB4MWUsIDB4ZTEsIDB4YTUsIDB4ZTIsIDB4NTUsIDB4
ZjAsIDB4NjcsCisgICAgICAgIDB4OTUsIDB4MzYsIDB4MjMsIDB4YzgsIDB4YjMsIDB4ODgsIDB4
YjQsIDB4NDUsCisgICAgICAgIDB4OWUsIDB4MTMsIDB4ZjksIDB4NzgsIDB4ZDcsIDB4YzgsIDB4
NDYsIDB4ZjQsIH07CisgICAgYXV0byBzaGFyZWRLZXkgPSBDcnlwdG9LZXlBRVM6OmltcG9ydFJh
dyhDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpBRVNfQ0JDLCBjb252ZXJ0Qnl0ZXNUb1ZlY3Rv
cihzaGFyZWRLZXlEYXRhLCBzaXplb2Yoc2hhcmVkS2V5RGF0YSkpLCB0cnVlLCBDcnlwdG9LZXlV
c2FnZUVuY3J5cHQgfCBDcnlwdG9LZXlVc2FnZURlY3J5cHQpOworICAgIEFTU0VSVF9UUlVFKHNo
YXJlZEtleSk7CisKKyAgICAvLyBGYWlsdXJlIGNhc2VzCisgICAgYXV0byByZXN1bHQgPSBUb2tl
blJlc3BvbnNlOjpwYXJzZSgqc2hhcmVkS2V5LCB7IH0pOworICAgIEVYUEVDVF9GQUxTRShyZXN1
bHQpOworCisgICAgY29uc3QgdWludDhfdCB0ZXN0RGF0YTFbXSA9IHsgMHgwNSB9OyAvLyB3cm9u
ZyByZXNwb25zZSBjb2RlCisgICAgcmVzdWx0ID0gVG9rZW5SZXNwb25zZTo6cGFyc2UoKnNoYXJl
ZEtleSwgY29udmVydEJ5dGVzVG9WZWN0b3IodGVzdERhdGExLCBzaXplb2YodGVzdERhdGExKSkp
OworICAgIEVYUEVDVF9GQUxTRShyZXN1bHQpOworCisgICAgY29uc3QgdWludDhfdCB0ZXN0RGF0
YTJbXSA9IHsgMHgwMCwgMHgwMCB9OyAvLyB3cm9uZyBDQk9SIG1hcAorICAgIHJlc3VsdCA9IFRv
a2VuUmVzcG9uc2U6OnBhcnNlKCpzaGFyZWRLZXksIGNvbnZlcnRCeXRlc1RvVmVjdG9yKHRlc3RE
YXRhMiwgc2l6ZW9mKHRlc3REYXRhMikpKTsKKyAgICBFWFBFQ1RfRkFMU0UocmVzdWx0KTsKKwor
ICAgIHJlc3VsdCA9IFRva2VuUmVzcG9uc2U6OnBhcnNlKCpzaGFyZWRLZXksIGNvbnZlcnRCeXRl
c1RvVmVjdG9yKFRlc3REYXRhOjprQ3RhcENsaWVudFBpbktleUFncmVlbWVudFJlc3BvbnNlLCBz
aXplb2YoVGVzdERhdGE6OmtDdGFwQ2xpZW50UGluS2V5QWdyZWVtZW50UmVzcG9uc2UpKSk7IC8v
IHdyb25nIHJlc3BvbnNlCisgICAgRVhQRUNUX0ZBTFNFKHJlc3VsdCk7CisKKyAgICAvLyBTdWNj
ZXNzIGNhc2VzCisgICAgcmVzdWx0ID0gVG9rZW5SZXNwb25zZTo6cGFyc2UoKnNoYXJlZEtleSwg
Y29udmVydEJ5dGVzVG9WZWN0b3IoVGVzdERhdGE6OmtDdGFwQ2xpZW50UGluVG9rZW5SZXNwb25z
ZSwgc2l6ZW9mKFRlc3REYXRhOjprQ3RhcENsaWVudFBpblRva2VuUmVzcG9uc2UpKSk7CisgICAg
RVhQRUNUX1RSVUUocmVzdWx0KTsKKyAgICBjb25zdCB1aW50OF90IGV4cGVjdGVkVG9rZW5bXSA9
IHsgMHgwMywgMHhhYywgMHg2NywgMHg0MiwgMHgxNiwgMHhmMywgMHhlMSwgMHg1YywgMHg3Niwg
MHgxZSwgMHhlMSwgMHhhNSwgMHhlMiwgMHg1NSwgMHhmMCwgMHg2NyB9OworICAgIEVYUEVDVF9F
UShyZXN1bHQtPnRva2VuKCkuc2l6ZSgpLCAxNnUpOworICAgIEVYUEVDVF9FUShtZW1jbXAocmVz
dWx0LT50b2tlbigpLmRhdGEoKSwgZXhwZWN0ZWRUb2tlbiwgcmVzdWx0LT50b2tlbigpLnNpemUo
KSksIDApOworfQorCitURVNUKEN0YXBQaW5UZXN0LCBUZXN0UGluQXV0aCkKK3sKKyAgICAvLyAx
LiBHZW5lcmF0ZSB0aGUgdG9rZW4uCisgICAgY29uc3QgdWludDhfdCBzaGFyZWRLZXlEYXRhW10g
PSB7CisgICAgICAgIDB4MDMsIDB4YWMsIDB4NjcsIDB4NDIsIDB4MTYsIDB4ZjMsIDB4ZTEsIDB4
NWMsCisgICAgICAgIDB4NzYsIDB4MWUsIDB4ZTEsIDB4YTUsIDB4ZTIsIDB4NTUsIDB4ZjAsIDB4
NjcsCisgICAgICAgIDB4OTUsIDB4MzYsIDB4MjMsIDB4YzgsIDB4YjMsIDB4ODgsIDB4YjQsIDB4
NDUsCisgICAgICAgIDB4OWUsIDB4MTMsIDB4ZjksIDB4NzgsIDB4ZDcsIDB4YzgsIDB4NDYsIDB4
ZjQsIH07CisgICAgYXV0byBzaGFyZWRLZXkgPSBDcnlwdG9LZXlBRVM6OmltcG9ydFJhdyhDcnlw
dG9BbGdvcml0aG1JZGVudGlmaWVyOjpBRVNfQ0JDLCBjb252ZXJ0Qnl0ZXNUb1ZlY3RvcihzaGFy
ZWRLZXlEYXRhLCBzaXplb2Yoc2hhcmVkS2V5RGF0YSkpLCB0cnVlLCBDcnlwdG9LZXlVc2FnZUVu
Y3J5cHQgfCBDcnlwdG9LZXlVc2FnZURlY3J5cHQpOworICAgIEFTU0VSVF9UUlVFKHNoYXJlZEtl
eSk7CisgICAgYXV0byByZXN1bHQgPSBUb2tlblJlc3BvbnNlOjpwYXJzZSgqc2hhcmVkS2V5LCBj
b252ZXJ0Qnl0ZXNUb1ZlY3RvcihUZXN0RGF0YTo6a0N0YXBDbGllbnRQaW5Ub2tlblJlc3BvbnNl
LCBzaXplb2YoVGVzdERhdGE6OmtDdGFwQ2xpZW50UGluVG9rZW5SZXNwb25zZSkpKTsKKyAgICBB
U1NFUlRfVFJVRShyZXN1bHQpOworCisgICAgLy8gMi4gR2VuZXJhdGUgdGhlIHBpbkF1dGguCisg
ICAgYXV0byBwaW5BdXRoID0gcmVzdWx0LT5waW5BdXRoKGNvbnZlcnRCeXRlc1RvVmVjdG9yKHNo
YXJlZEtleURhdGEsIHNpemVvZihzaGFyZWRLZXlEYXRhKSkpOyAvLyBzaGFyZWRLZXlEYXRhIHBy
ZXRlbmRzIHRvIGJlIGNsaWVudERhdGFIYXNoCisgICAgY29uc3QgdWludDhfdCBleHBlY3RlZFBp
bkF1dGhbXSA9IHsgMHhiMywgMHhjMiwgMHg2NSwgMHgxYywgMHhmZCwgMHhjOCwgMHg0MiwgMHhi
NCwgMHg2MCwgMHgxNiwgMHhlZCwgMHgyMCwgMHg2NCwgMHg1MywgMHhhZiwgMHg4NCB9OworICAg
IEVYUEVDVF9FUShwaW5BdXRoLnNpemUoKSwgMTZ1KTsKKyAgICBFWFBFQ1RfRVEobWVtY21wKHBp
bkF1dGguZGF0YSgpLCBleHBlY3RlZFBpbkF1dGgsIHBpbkF1dGguc2l6ZSgpKSwgMCk7Cit9CisK
K30gLy8gbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkKKworI2VuZGlmIC8vIEVOQUJMRShXRUJfQVVU
SE4pCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvQ3RhcFJl
cXVlc3RUZXN0LmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9DdGFwUmVx
dWVzdFRlc3QuY3BwCmluZGV4IGQzZjAyZjZlOTBlMTE1NzllYzc2ZjdkODUxZjgwNzYwMzlmZGNi
M2MuLmRhMDc1YTBjM2JhNDY0OGJlZTk3YzYzYzE1YWI1MTg2N2ZhYzA3ZGQgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9DdGFwUmVxdWVzdFRlc3QuY3BwCisr
KyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9DdGFwUmVxdWVzdFRlc3QuY3Bw
CkBAIC0zMiw4ICszMiwxMCBAQAogI2lmIEVOQUJMRShXRUJfQVVUSE4pCiAKICNpbmNsdWRlICJG
aWRvVGVzdERhdGEuaCIKKyNpbmNsdWRlICJQbGF0Zm9ybVV0aWxpdGllcy5oIgogI2luY2x1ZGUg
PFdlYkNvcmUvRGV2aWNlUmVxdWVzdENvbnZlcnRlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRmlk
b0NvbnN0YW50cy5oPgorI2luY2x1ZGUgPFdlYkNvcmUvUGluLmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9QdWJsaWNLZXlDcmVkZW50aWFsQ3JlYXRpb25PcHRpb25zLmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9QdWJsaWNLZXlDcmVkZW50aWFsUmVxdWVzdE9wdGlvbnMuaD4KICNpbmNsdWRlIDx3dGYvdGV4
dC9CYXNlNjQuaD4KQEAgLTY3LDYgKzY5LDMzIEBAIFRFU1QoQ1RBUFJlcXVlc3RUZXN0LCBUZXN0
Q29uc3RydWN0TWFrZUNyZWRlbnRpYWxSZXF1ZXN0UGFyYW0pCiAgICAgRVhQRUNUX0VRKG1lbWNt
cChzZXJpYWxpemVkRGF0YS5kYXRhKCksIFRlc3REYXRhOjprQ3RhcE1ha2VDcmVkZW50aWFsUmVx
dWVzdCwgc2VyaWFsaXplZERhdGEuc2l6ZSgpKSwgMCk7CiB9CiAKK1RFU1QoQ1RBUFJlcXVlc3RU
ZXN0LCBUZXN0Q29uc3RydWN0TWFrZUNyZWRlbnRpYWxSZXF1ZXN0UGFyYW1XaXRoUGluKQorewor
ICAgIFB1YmxpY0tleUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnM6OlJwRW50aXR5IHJwOworICAg
IHJwLm5hbWUgPSAiQWNtZSI7CisgICAgcnAuaWQgPSAiYWNtZS5jb20iOworCisgICAgUHVibGlj
S2V5Q3JlZGVudGlhbENyZWF0aW9uT3B0aW9uczo6VXNlckVudGl0eSB1c2VyOworICAgIHVzZXIu
bmFtZSA9ICJqb2hucHNtaXRoQGV4YW1wbGUuY29tIjsKKyAgICB1c2VyLmljb24gPSAiaHR0cHM6
Ly9waWNzLmFjbWUuY29tLzAwL3AvYUJqampwcVBiLnBuZyI7CisgICAgdXNlci5pZFZlY3Rvci5h
cHBlbmQoVGVzdERhdGE6OmtVc2VySWQsIHNpemVvZihUZXN0RGF0YTo6a1VzZXJJZCkpOworICAg
IHVzZXIuZGlzcGxheU5hbWUgPSAiSm9obiBQLiBTbWl0aCI7CisKKyAgICBWZWN0b3I8UHVibGlj
S2V5Q3JlZGVudGlhbENyZWF0aW9uT3B0aW9uczo6UGFyYW1ldGVycz4gcGFyYW1zIHsgeyBQdWJs
aWNLZXlDcmVkZW50aWFsVHlwZTo6UHVibGljS2V5LCA3IH0sIHsgUHVibGljS2V5Q3JlZGVudGlh
bFR5cGU6OlB1YmxpY0tleSwgMjU3IH0gfTsKKyAgICBQdWJsaWNLZXlDcmVkZW50aWFsQ3JlYXRp
b25PcHRpb25zOjpBdXRoZW50aWNhdG9yU2VsZWN0aW9uQ3JpdGVyaWEgc2VsZWN0aW9uIHsgUHVi
bGljS2V5Q3JlZGVudGlhbENyZWF0aW9uT3B0aW9uczo6QXV0aGVudGljYXRvckF0dGFjaG1lbnQ6
OlBsYXRmb3JtLCB0cnVlLCBVc2VyVmVyaWZpY2F0aW9uUmVxdWlyZW1lbnQ6OlByZWZlcnJlZCB9
OworCisgICAgUGluUGFyYW1ldGVycyBwaW47CisgICAgcGluLnByb3RvY29sID0gcGluOjprUHJv
dG9jb2xWZXJzaW9uOworICAgIHBpbi5hdXRoLmFwcGVuZChUZXN0RGF0YTo6a0N0YXAyUGluQXV0
aCwgc2l6ZW9mKFRlc3REYXRhOjprQ3RhcDJQaW5BdXRoKSk7CisKKyAgICBQdWJsaWNLZXlDcmVk
ZW50aWFsQ3JlYXRpb25PcHRpb25zIG9wdGlvbnMgeyBycCwgdXNlciwgeyB9LCBwYXJhbXMsIFdU
Rjo6bnVsbG9wdCwgeyB9LCBzZWxlY3Rpb24sIEF0dGVzdGF0aW9uQ29udmV5YW5jZVByZWZlcmVu
Y2U6Ok5vbmUsIFdURjo6bnVsbG9wdCB9OworICAgIFZlY3Rvcjx1aW50OF90PiBoYXNoOworICAg
IGhhc2guYXBwZW5kKFRlc3REYXRhOjprQ2xpZW50RGF0YUhhc2gsIHNpemVvZihUZXN0RGF0YTo6
a0NsaWVudERhdGFIYXNoKSk7CisgICAgYXV0byBzZXJpYWxpemVkRGF0YSA9IGVuY29kZU1ha2VD
cmVkZW5pdGFsUmVxdWVzdEFzQ0JPUihoYXNoLCBvcHRpb25zLCBBdXRoZW50aWNhdG9yU3VwcG9y
dGVkT3B0aW9uczo6VXNlclZlcmlmaWNhdGlvbkF2YWlsYWJpbGl0eTo6a1N1cHBvcnRlZEJ1dE5v
dENvbmZpZ3VyZWQsIHBpbik7CisgICAgRVhQRUNUX0VRKHNlcmlhbGl6ZWREYXRhLnNpemUoKSwg
c2l6ZW9mKFRlc3REYXRhOjprQ3RhcE1ha2VDcmVkZW50aWFsUmVxdWVzdFdpdGhQaW4pKTsKKyAg
ICBFWFBFQ1RfRVEobWVtY21wKHNlcmlhbGl6ZWREYXRhLmRhdGEoKSwgVGVzdERhdGE6OmtDdGFw
TWFrZUNyZWRlbnRpYWxSZXF1ZXN0V2l0aFBpbiwgc2VyaWFsaXplZERhdGEuc2l6ZSgpKSwgMCk7
Cit9CisKIFRFU1QoQ1RBUFJlcXVlc3RUZXN0LCBUZXN0Q29uc3RydWN0R2V0QXNzZXJ0aW9uUmVx
dWVzdCkKIHsKICAgICBQdWJsaWNLZXlDcmVkZW50aWFsUmVxdWVzdE9wdGlvbnMgb3B0aW9uczsK
QEAgLTEwNCw2ICsxMzMsNDcgQEAgVEVTVChDVEFQUmVxdWVzdFRlc3QsIFRlc3RDb25zdHJ1Y3RH
ZXRBc3NlcnRpb25SZXF1ZXN0KQogICAgIEVYUEVDVF9FUShtZW1jbXAoc2VyaWFsaXplZERhdGEu
ZGF0YSgpLCBUZXN0RGF0YTo6a1Rlc3RDb21wbGV4Q3RhcEdldEFzc2VydGlvblJlcXVlc3QsIHNl
cmlhbGl6ZWREYXRhLnNpemUoKSksIDApOwogfQogCitURVNUKENUQVBSZXF1ZXN0VGVzdCwgVGVz
dENvbnN0cnVjdEdldEFzc2VydGlvblJlcXVlc3RXaXRoUGluKQoreworICAgIFB1YmxpY0tleUNy
ZWRlbnRpYWxSZXF1ZXN0T3B0aW9ucyBvcHRpb25zOworICAgIG9wdGlvbnMucnBJZCA9ICJhY21l
LmNvbSI7CisKKyAgICBQdWJsaWNLZXlDcmVkZW50aWFsRGVzY3JpcHRvciBkZXNjcmlwdG9yMTsK
KyAgICBkZXNjcmlwdG9yMS50eXBlID0gUHVibGljS2V5Q3JlZGVudGlhbFR5cGU6OlB1YmxpY0tl
eTsKKyAgICBjb25zdCB1aW50OF90IGlkMVtdID0geworICAgICAgICAweGYyLCAweDIwLCAweDA2
LCAweGRlLCAweDRmLCAweDkwLCAweDVhLCAweGY2LCAweDhhLCAweDQzLCAweDk0LAorICAgICAg
ICAweDJmLCAweDAyLCAweDRmLCAweDJhLCAweDVlLCAweGNlLCAweDYwLCAweDNkLCAweDljLCAw
eDZkLCAweDRiLAorICAgICAgICAweDNkLCAweGY4LCAweGJlLCAweDA4LCAweGVkLCAweDAxLCAw
eGZjLCAweDQ0LCAweDI2LCAweDQ2LCAweGQwLAorICAgICAgICAweDM0LCAweDg1LCAweDhhLCAw
eGM3LCAweDViLCAweGVkLCAweDNmLCAweGQ1LCAweDgwLCAweGJmLCAweDk4LAorICAgICAgICAw
eDA4LCAweGQ5LCAweDRmLCAweGNiLCAweGVlLCAweDgyLCAweGI5LCAweGIyLCAweGVmLCAweDY2
LCAweDc3LAorICAgICAgICAweGFmLCAweDBhLCAweGRjLCAweGMzLCAweDU4LCAweDUyLCAweGVh
LCAweDZiLCAweDllIH07CisgICAgZGVzY3JpcHRvcjEuaWRWZWN0b3IuYXBwZW5kKGlkMSwgc2l6
ZW9mKGlkMSkpOworICAgIG9wdGlvbnMuYWxsb3dDcmVkZW50aWFscy5hcHBlbmQoZGVzY3JpcHRv
cjEpOworCisgICAgUHVibGljS2V5Q3JlZGVudGlhbERlc2NyaXB0b3IgZGVzY3JpcHRvcjI7Cisg
ICAgZGVzY3JpcHRvcjIudHlwZSA9IFB1YmxpY0tleUNyZWRlbnRpYWxUeXBlOjpQdWJsaWNLZXk7
CisgICAgY29uc3QgdWludDhfdCBpZDJbXSA9IHsKKyAgICAgICAgMHgwMywgMHgwMywgMHgwMywg
MHgwMywgMHgwMywgMHgwMywgMHgwMywgMHgwMywgMHgwMywgMHgwMywKKyAgICAgICAgMHgwMywg
MHgwMywgMHgwMywgMHgwMywgMHgwMywgMHgwMywgMHgwMywgMHgwMywgMHgwMywgMHgwMywKKyAg
ICAgICAgMHgwMywgMHgwMywgMHgwMywgMHgwMywgMHgwMywgMHgwMywgMHgwMywgMHgwMywgMHgw
MywgMHgwMywKKyAgICAgICAgMHgwMywgMHgwMywgMHgwMywgMHgwMywgMHgwMywgMHgwMywgMHgw
MywgMHgwMywgMHgwMywgMHgwMywKKyAgICAgICAgMHgwMywgMHgwMywgMHgwMywgMHgwMywgMHgw
MywgMHgwMywgMHgwMywgMHgwMywgMHgwMywgMHgwMyB9OworICAgIGRlc2NyaXB0b3IyLmlkVmVj
dG9yLmFwcGVuZChpZDIsIHNpemVvZihpZDIpKTsKKyAgICBvcHRpb25zLmFsbG93Q3JlZGVudGlh
bHMuYXBwZW5kKGRlc2NyaXB0b3IyKTsKKworICAgIG9wdGlvbnMudXNlclZlcmlmaWNhdGlvbiA9
IFVzZXJWZXJpZmljYXRpb25SZXF1aXJlbWVudDo6UmVxdWlyZWQ7CisKKyAgICBQaW5QYXJhbWV0
ZXJzIHBpbjsKKyAgICBwaW4ucHJvdG9jb2wgPSBwaW46OmtQcm90b2NvbFZlcnNpb247CisgICAg
cGluLmF1dGguYXBwZW5kKFRlc3REYXRhOjprQ3RhcDJQaW5BdXRoLCBzaXplb2YoVGVzdERhdGE6
OmtDdGFwMlBpbkF1dGgpKTsKKworICAgIFZlY3Rvcjx1aW50OF90PiBoYXNoOworICAgIGhhc2gu
YXBwZW5kKFRlc3REYXRhOjprQ2xpZW50RGF0YUhhc2gsIHNpemVvZihUZXN0RGF0YTo6a0NsaWVu
dERhdGFIYXNoKSk7CisgICAgYXV0byBzZXJpYWxpemVkRGF0YSA9IGVuY29kZUdldEFzc2VydGlv
blJlcXVlc3RBc0NCT1IoaGFzaCwgb3B0aW9ucywgQXV0aGVudGljYXRvclN1cHBvcnRlZE9wdGlv
bnM6OlVzZXJWZXJpZmljYXRpb25BdmFpbGFiaWxpdHk6OmtTdXBwb3J0ZWRCdXROb3RDb25maWd1
cmVkLCBwaW4pOworICAgIEVYUEVDVF9FUShzZXJpYWxpemVkRGF0YS5zaXplKCksIHNpemVvZihU
ZXN0RGF0YTo6a1Rlc3RDb21wbGV4Q3RhcEdldEFzc2VydGlvblJlcXVlc3RXaXRoUGluKSk7Cisg
ICAgRVhQRUNUX0VRKG1lbWNtcChzZXJpYWxpemVkRGF0YS5kYXRhKCksIFRlc3REYXRhOjprVGVz
dENvbXBsZXhDdGFwR2V0QXNzZXJ0aW9uUmVxdWVzdFdpdGhQaW4sIHNlcmlhbGl6ZWREYXRhLnNp
emUoKSksIDApOworfQorCiBURVNUKENUQVBSZXF1ZXN0VGVzdCwgVGVzdENvbnN0cnVjdEN0YXBB
dXRoZW50aWNhdG9yUmVxdWVzdFBhcmFtKQogewogICAgIHN0YXRpYyBjb25zdGV4cHIgdWludDhf
dCBrU2VyaWFsaXplZEdldEluZm9DbWQgPSAweDA0OwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJDb3JlL0ZpZG9UZXN0RGF0YS5oIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJDb3JlL0ZpZG9UZXN0RGF0YS5oCmluZGV4IGQ4ZmRkMGY3ZjUxMWQ4YTQ4Y2Uw
NjNkMjFhZDc0NTc0ZWYyZGI0YjQuLjNjMjMwMmIwYTg4YjcyMTlkOWVjNmFkY2QxM2FkN2Q3Yjdm
ZWRjNjEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9GaWRv
VGVzdERhdGEuaAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvRmlkb1Rl
c3REYXRhLmgKQEAgLTUyNSw3ICs1MjUsMTAzIEBAIGNvbnN0ZXhwciB1aW50OF90IGtDdGFwTWFr
ZUNyZWRlbnRpYWxSZXF1ZXN0W10gPSB7CiAgICAgLy8ga2V5IC0gInV2IgogICAgIDB4NjIsIDB4
NzUsIDB4NzYsCiAgICAgLy8gVHJ1ZSgyMSkKLSAgICAweGY1fTsKKyAgICAweGY1Cit9OworCitj
b25zdGV4cHIgdWludDhfdCBrQ3RhcE1ha2VDcmVkZW50aWFsUmVxdWVzdFdpdGhQaW5bXSA9IHsK
KyAgICAvLyBhdXRoZW50aWNhdG9yTWFrZUNyZWRlbnRpYWwgY29tbWFuZAorICAgIDB4MDEsCisg
ICAgLy8gbWFwKDcpCisgICAgMHhhNywKKyAgICAvLyBrZXkoMSkgLSBjbGllbnREYXRhSGFzaAor
ICAgIDB4MDEsCisgICAgLy8gYnl0ZXMoMzIpCisgICAgMHg1OCwgMHgyMCwgMHg2OCwgMHg3MSwg
MHgzNCwgMHg5NiwgMHg4MiwgMHgyMiwgMHhlYywgMHgxNywgMHgyMCwgMHgyZSwKKyAgICAweDQy
LCAweDUwLCAweDVmLCAweDhlLCAweGQyLCAweGIxLCAweDZhLCAweGUyLCAweDJmLCAweDE2LCAw
eGJiLCAweDA1LAorICAgIDB4YjgsIDB4OGMsIDB4MjUsIDB4ZGIsIDB4OWUsIDB4NjAsIDB4MjYs
IDB4NDUsIDB4ZjEsIDB4NDEsCisgICAgLy8ga2V5KDIpIC0gcnAKKyAgICAweDAyLAorICAgIC8v
IG1hcCgyKQorICAgIDB4YTIsCisgICAgLy8ga2V5IC0gImlkIgorICAgIDB4NjIsIDB4NjksIDB4
NjQsCisgICAgLy8gdmFsdWUgLSAiYWNtZS5jb20iCisgICAgMHg2OCwgMHg2MSwgMHg2MywgMHg2
ZCwgMHg2NSwgMHgyZSwgMHg2MywgMHg2ZiwgMHg2ZCwKKyAgICAvLyBrZXkgLSAgIm5hbWUiCisg
ICAgMHg2NCwgMHg2ZSwgMHg2MSwgMHg2ZCwgMHg2NSwKKyAgICAvLyB2YWx1ZSAtICJBY21lIgor
ICAgIDB4NjQsIDB4NDEsIDB4NjMsIDB4NmQsIDB4NjUsCisgICAgLy8ga2V5KDMpIC0gdXNlcgor
ICAgIDB4MDMsCisgICAgLy8gbWFwKDQpCisgICAgMHhhNCwKKyAgICAvLyBrZXkgLSAiaWQiCisg
ICAgMHg2MiwgMHg2OSwgMHg2NCwKKyAgICAvLyB2YWx1ZSAtIHVzZXIgaWQKKyAgICAweDQ4LCAw
eDEwLCAweDk4LCAweDIzLCAweDcyLCAweDM1LCAweDQwLCAweDk4LCAweDcyLAorICAgIC8vIGtl
eSAtICJpY29uIgorICAgIDB4NjQsIDB4NjksIDB4NjMsIDB4NmYsIDB4NmUsCisgICAgLy8gdmFs
dWUgLSAiaHR0cHM6Ly9waWNzLmFjbWUuY29tLzAwL3AvYUJqampwcVBiLnBuZyIKKyAgICAweDc4
LCAweDI4LCAweDY4LCAweDc0LCAweDc0LCAweDcwLCAweDczLCAweDNhLCAweDJmLCAweDJmLCAw
eDcwLCAweDY5LAorICAgIDB4NjMsIDB4NzMsIDB4MmUsIDB4NjEsIDB4NjMsIDB4NmQsIDB4NjUs
IDB4MmUsIDB4NjMsIDB4NmYsIDB4NmQsIDB4MmYsCisgICAgMHgzMCwgMHgzMCwgMHgyZiwgMHg3
MCwgMHgyZiwgMHg2MSwgMHg0MiwgMHg2YSwgMHg2YSwgMHg2YSwgMHg3MCwgMHg3MSwKKyAgICAw
eDUwLCAweDYyLCAweDJlLCAweDcwLCAweDZlLCAweDY3LAorICAgIC8vIGtleSAtICJuYW1lIgor
ICAgIDB4NjQsIDB4NmUsIDB4NjEsIDB4NmQsIDB4NjUsCisgICAgLy8gdmFsdWUgLSAiam9obnBz
bWl0aEBleGFtcGxlLmNvbSIKKyAgICAweDc2LCAweDZhLCAweDZmLCAweDY4LCAweDZlLCAweDcw
LCAweDczLCAweDZkLCAweDY5LCAweDc0LCAweDY4LCAweDQwLAorICAgIDB4NjUsIDB4NzgsIDB4
NjEsIDB4NmQsIDB4NzAsIDB4NmMsIDB4NjUsIDB4MmUsIDB4NjMsIDB4NmYsIDB4NmQsCisgICAg
Ly8ga2V5IC0gImRpc3BsYXlOYW1lIgorICAgIDB4NmIsIDB4NjQsIDB4NjksIDB4NzMsIDB4NzAs
IDB4NmMsIDB4NjEsIDB4NzksIDB4NGUsIDB4NjEsIDB4NmQsIDB4NjUsCisgICAgLy8gdmFsdWUg
LSAiSm9obiBQLiBTbWl0aCIKKyAgICAweDZkLCAweDRhLCAweDZmLCAweDY4LCAweDZlLCAweDIw
LCAweDUwLCAweDJlLCAweDIwLCAweDUzLCAweDZkLCAweDY5LAorICAgIDB4NzQsIDB4NjgsCisg
ICAgLy8ga2V5KDQpIC0gcHViS2V5Q3JlZFBhcmFtcworICAgIDB4MDQsCisgICAgLy8gYXJyYXko
MikKKyAgICAweDgyLAorICAgIC8vIG1hcCgyKQorICAgIDB4YTIsCisgICAgLy8ga2V5IC0gImFs
ZyIKKyAgICAweDYzLCAweDYxLCAweDZjLCAweDY3LAorICAgIC8vIHZhbHVlIC0gNworICAgIDB4
MDcsCisgICAgLy8ga2V5IC0gInR5cGUiCisgICAgMHg2NCwgMHg3NCwgMHg3OSwgMHg3MCwgMHg2
NSwKKyAgICAvLyB2YWx1ZSAtICJwdWJsaWMta2V5IgorICAgIDB4NmEsIDB4NzAsIDB4NzUsIDB4
NjIsIDB4NkMsIDB4NjksIDB4NjMsIDB4MkQsIDB4NkIsIDB4NjUsIDB4NzksCisgICAgLy8gbWFw
KDIpCisgICAgMHhhMiwKKyAgICAvLyBrZXkgLSAiYWxnIgorICAgIDB4NjMsIDB4NjEsIDB4NmMs
IDB4NjcsCisgICAgLy8gdmFsdWUgLSAyNTcKKyAgICAweDE5LCAweDAxLCAweDAxLAorICAgIC8v
IGtleSAtICJ0eXBlIgorICAgIDB4NjQsIDB4NzQsIDB4NzksIDB4NzAsIDB4NjUsIC8vICJ0eXBl
IgorICAgIC8vIHZhbHVlIC0gInB1YmxpYy1rZXkiCisgICAgMHg2YSwgMHg3MCwgMHg3NSwgMHg2
MiwgMHg2QywgMHg2OSwgMHg2MywgMHgyRCwgMHg2QiwgMHg2NSwgMHg3OSwKKyAgICAvLyBrZXko
NykgLSBvcHRpb25zCisgICAgMHgwNywKKyAgICAvLyBtYXAoMikKKyAgICAweGEyLAorICAgIC8v
IGtleSAtICJyayIKKyAgICAweDYyLCAweDcyLCAweDZiLAorICAgIC8vIFRydWUoMjEpCisgICAg
MHhmNSwKKyAgICAvLyBrZXkgLSAidXYiCisgICAgMHg2MiwgMHg3NSwgMHg3NiwKKyAgICAvLyBU
cnVlKDIxKQorICAgIDB4ZjUsCisgICAgLy8ga2V5KDgpIC0gcGluUHJvdG9jb2wKKyAgICAweDA4
LAorICAgIC8vIHZhbHVlIC0gMQorICAgIDB4MDEsCisgICAgLy8ga2V5KDkpIC0gcGluQXV0aAor
ICAgIDB4MDksCisgICAgLy8gYnl0ZXMoMTYpCisgICAgMHg1MCwgMHgwMCwgMHgwMSwgMHgwMiwg
MHgwMywgMHgwNCwgMHgwNSwgMHgwNiwgMHgwNywgMHgwOCwgMHgwOSwgMHgwYSwKKyAgICAweDBi
LCAweDBjLCAweDBkLCAweDBlLCAweDBmCit9OwogCiBjb25zdGV4cHIgdWludDhfdCBrVGVzdENv
bXBsZXhDdGFwR2V0QXNzZXJ0aW9uUmVxdWVzdFtdID0gewogICAgIC8vIGF1dGhlbnRpY2F0b3JH
ZXRBc3NlcnRpb24gY29tbWFuZApAQCAtNTg5LDYgKzY4NSw3NyBAQCBjb25zdGV4cHIgdWludDhf
dCBrVGVzdENvbXBsZXhDdGFwR2V0QXNzZXJ0aW9uUmVxdWVzdFtdID0gewogICAgIDB4ZjUsCiB9
OwogCitjb25zdGV4cHIgdWludDhfdCBrVGVzdENvbXBsZXhDdGFwR2V0QXNzZXJ0aW9uUmVxdWVz
dFdpdGhQaW5bXSA9IHsKKyAgICAvLyBhdXRoZW50aWNhdG9yR2V0QXNzZXJ0aW9uIGNvbW1hbmQK
KyAgICAweDAyLAorICAgIC8vIG1hcCg2KQorICAgIDB4YTYsCisgICAgLy8ga2V5KDAxKSAtcnBJ
ZAorICAgIDB4MDEsCisgICAgLy8gdmFsdWUgLSAiYWNtZS5jb20iCisgICAgMHg2OCwgMHg2MSwg
MHg2MywgMHg2ZCwgMHg2NSwgMHgyZSwgMHg2MywgMHg2ZiwgMHg2ZCwKKyAgICAvLyBrZXkoMDIp
IC0gY2xpZW50IGRhdGEgaGFzaAorICAgIDB4MDIsCisgICAgLy8gdmFsdWUgLSBieXRlcygzMikK
KyAgICAweDU4LCAweDIwLCAweDY4LCAweDcxLCAweDM0LCAweDk2LCAweDgyLCAweDIyLCAweGVj
LCAweDE3LCAweDIwLCAweDJlLAorICAgIDB4NDIsIDB4NTAsIDB4NWYsIDB4OGUsIDB4ZDIsIDB4
YjEsIDB4NmEsIDB4ZTIsIDB4MmYsIDB4MTYsIDB4YmIsIDB4MDUsCisgICAgMHhiOCwgMHg4Yywg
MHgyNSwgMHhkYiwgMHg5ZSwgMHg2MCwgMHgyNiwgMHg0NSwgMHhmMSwgMHg0MSwKKyAgICAvLyBr
ZXkoMDMpIC0gYWxsb3cgbGlzdAorICAgIDB4MDMsCisgICAgLy8gdmFsdWUgLSBhcnJheSgyKQor
ICAgIDB4ODIsCisgICAgLy8gbWFwKDIpCisgICAgMHhhMiwKKyAgICAvLyBrZXkgLSAiaWQiCisg
ICAgMHg2MiwgMHg2OSwgMHg2NCwKKyAgICAvLyB2YWx1ZSAtIGNyZWRlbnRpYWwgSUQKKyAgICAw
eDU4LCAweDQwLCAweGYyLCAweDIwLCAweDA2LCAweGRlLCAweDRmLCAweDkwLCAweDVhLCAweGY2
LCAweDhhLCAweDQzLAorICAgIDB4OTQsIDB4MmYsIDB4MDIsIDB4NGYsIDB4MmEsIDB4NWUsIDB4
Y2UsIDB4NjAsIDB4M2QsIDB4OWMsIDB4NmQsIDB4NGIsCisgICAgMHgzZCwgMHhmOCwgMHhiZSwg
MHgwOCwgMHhlZCwgMHgwMSwgMHhmYywgMHg0NCwgMHgyNiwgMHg0NiwgMHhkMCwgMHgzNCwKKyAg
ICAweDg1LCAweDhhLCAweGM3LCAweDViLCAweGVkLCAweDNmLCAweGQ1LCAweDgwLCAweGJmLCAw
eDk4LCAweDA4LCAweGQ5LAorICAgIDB4NGYsIDB4Y2IsIDB4ZWUsIDB4ODIsIDB4YjksIDB4YjIs
IDB4ZWYsIDB4NjYsIDB4NzcsIDB4YWYsIDB4MGEsIDB4ZGMsCisgICAgMHhjMywgMHg1OCwgMHg1
MiwgMHhlYSwgMHg2YiwgMHg5ZSwKKyAgICAvLyBrZXkgLSAidHlwZSIKKyAgICAweDY0LCAweDc0
LCAweDc5LCAweDcwLCAweDY1LAorICAgIC8vIHZhbHVlIC0gInB1YmxpYy1rZXkiCisgICAgMHg2
YSwgMHg3MCwgMHg3NSwgMHg2MiwgMHg2QywgMHg2OSwgMHg2MywgMHgyRCwgMHg2QiwgMHg2NSwg
MHg3OSwKKyAgICAvLyBtYXAoMikKKyAgICAweGEyLAorICAgIC8vIGtleSAtICJpZCIKKyAgICAw
eDYyLCAweDY5LCAweDY0LAorICAgIC8vIHZhbHVlIC0gY3JlZGVudGlhbCBJRAorICAgIDB4NTgs
IDB4MzIsIDB4MDMsIDB4MDMsIDB4MDMsIDB4MDMsIDB4MDMsIDB4MDMsIDB4MDMsIDB4MDMsIDB4
MDMsIDB4MDMsCisgICAgMHgwMywgMHgwMywgMHgwMywgMHgwMywgMHgwMywgMHgwMywgMHgwMywg
MHgwMywgMHgwMywgMHgwMywgMHgwMywgMHgwMywKKyAgICAweDAzLCAweDAzLCAweDAzLCAweDAz
LCAweDAzLCAweDAzLCAweDAzLCAweDAzLCAweDAzLCAweDAzLCAweDAzLCAweDAzLAorICAgIDB4
MDMsIDB4MDMsIDB4MDMsIDB4MDMsIDB4MDMsIDB4MDMsIDB4MDMsIDB4MDMsIDB4MDMsIDB4MDMs
IDB4MDMsIDB4MDMsCisgICAgMHgwMywgMHgwMywgMHgwMywgMHgwMywKKyAgICAvLyBrZXkgLSAi
dHlwZSIKKyAgICAweDY0LCAweDc0LCAweDc5LCAweDcwLCAweDY1LAorICAgIC8vIHZhbHVlIC0g
InB1YmxpYy1rZXkiCisgICAgMHg2YSwgMHg3MCwgMHg3NSwgMHg2MiwgMHg2QywgMHg2OSwgMHg2
MywgMHgyRCwgMHg2QiwgMHg2NSwgMHg3OSwKKyAgICAvLyB1bnNpZ25lZCg1KSAtIG9wdGlvbnMK
KyAgICAweDA1LAorICAgIC8vIG1hcCgyKQorICAgIDB4YTIsCisgICAgLy8ga2V5IC0idXAiCisg
ICAgMHg2MiwgMHg3NSwgMHg3MCwKKyAgICAvLyB2YWx1ZSAtIFRydWUoMjEpCisgICAgMHhmNSwK
KyAgICAvLyBrZXkgLSAidXYiCisgICAgMHg2MiwgMHg3NSwgMHg3NiwKKyAgICAvLyB2YWx1ZSAt
IFRydWUoMjEpCisgICAgMHhmNSwKKyAgICAvLyBrZXkoOCkgLSBwaW5Qcm90b2NvbAorICAgIDB4
MDgsCisgICAgLy8gdmFsdWUgLSAxCisgICAgMHgwMSwKKyAgICAvLyBrZXkoOSkgLSBwaW5BdXRo
CisgICAgMHgwOSwKKyAgICAvLyBieXRlcygxNikKKyAgICAweDUwLCAweDAwLCAweDAxLCAweDAy
LCAweDAzLCAweDA0LCAweDA1LCAweDA2LCAweDA3LCAweDA4LCAweDA5LCAweDBhLAorICAgIDB4
MGIsIDB4MGMsIDB4MGQsIDB4MGUsIDB4MGYKK307CisKIC8vIENUQVAgcmVzcG9uc2VzIC0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
CiAKIC8vIEEgc2FtcGxlIHdlbGwgZm9ybWVkIHJlc3BvbnNlIHRvIENUQVAgQXV0aGVudGljYXRv
ckdldEluZm8gcmVxdWVzdC4gQ3Jvc3MKQEAgLTg5Miw2ICsxMDU5LDEwMiBAQCBjb25zdGV4cHIg
dWludDhfdCBrRGV2aWNlR2V0QXNzZXJ0aW9uUmVzcG9uc2VbXSA9IHsKICAgICAweDAxLAogfTsK
IAorLy8gQ1RBUCBQSU4KKworY29uc3RleHByIHVpbnQ4X3Qga0N0YXAyUGluQXV0aFtdID0gewor
ICAgIDB4MDAsIDB4MDEsIDB4MDIsIDB4MDMsIDB4MDQsIDB4MDUsIDB4MDYsIDB4MDcsCisgICAg
MHgwOCwgMHgwOSwgMHgwYSwgMHgwYiwgMHgwYywgMHgwZCwgMHgwZSwgMHgwZiwKK307CisKK2Nv
bnN0ZXhwciB1aW50OF90IGtDdGFwQ2xpZW50UGluUmV0cmllc1tdID0geworICAgIC8vIGF1dGhl
bnRpY2F0b3JDbGllbnRQSU4gY29tbWFuZAorICAgIDB4MDYsCisgICAgLy8gbWFwKDIpCisgICAg
MHhhMiwKKyAgICAvLyBrZXkoMSkgLSBwaW5Qcm90b2NvbAorICAgIDB4MDEsCisgICAgLy8gdmFs
dWUgLSAxCisgICAgMHgwMSwKKyAgICAvLyBrZXkoMikgLSBzdWJDb21tYW5kCisgICAgMHgwMiwK
KyAgICAvLyB2YWx1ZSAtIDEoZ2V0UmV0cmllcykKKyAgICAweDAxLAorfTsKKworY29uc3RleHBy
IHVpbnQ4X3Qga0N0YXBDbGllbnRQaW5LZXlBZ3JlZW1lbnRbXSA9IHsKKyAgICAvLyBhdXRoZW50
aWNhdG9yQ2xpZW50UElOIGNvbW1hbmQKKyAgICAweDA2LAorICAgIC8vIG1hcCgyKQorICAgIDB4
YTIsCisgICAgLy8ga2V5KDEpIC0gcGluUHJvdG9jb2wKKyAgICAweDAxLAorICAgIC8vIHZhbHVl
IC0gMQorICAgIDB4MDEsCisgICAgLy8ga2V5KDIpIC0gc3ViQ29tbWFuZAorICAgIDB4MDIsCisg
ICAgLy8gdmFsdWUgLSAyKGdldEtleUFncmVlbWVudCkKKyAgICAweDAyLAorfTsKKworY29uc3Rl
eHByIHVpbnQ4X3Qga0N0YXBDbGllbnRQaW5Ub2tlblJlc3BvbnNlW10gPSB7CisgICAgLy8gU3Vj
Y2VzcworICAgIDB4MDAsCisgICAgLy8gbWFwKDEpCisgICAgMHhhMSwKKyAgICAvLyBrZXkoMikg
LSBwaW5Ub2tlbgorICAgIDB4MDIsCisgICAgLy8gYnl0ZXMoMzIpCisgICAgMHg1OCwgMHgyMCwK
KyAgICAvLyBlbmNyeXB0ZWQgdG9rZW4KKyAgICAweDQ4LCAweGI5LCAweDVkLCAweDNkLCAweDll
LCAweGVlLCAweGU1LCAweDAwLCAweGFiLCAweDUxLCAweDEzLCAweDJiLAorICAgIDB4MzUsIDB4
NzcsIDB4NjYsIDB4NWMsIDB4NDEsIDB4N2EsIDB4NTYsIDB4M2UsIDB4YjMsIDB4ZTIsIDB4M2Ms
IDB4YjcsCisgICAgMHg2YSwgMHgzNywgMHhiMywgMHhkZSwgMHg1NywgMHgyYiwgMHhjYSwgMHhh
YSwKK307CisKK2NvbnN0ZXhwciB1aW50OF90IGtDdGFwQ2xpZW50UGluS2V5QWdyZWVtZW50UmVz
cG9uc2VbXSA9IHsKKyAgICAvLyBTdWNjZXNzCisgICAgMHgwMCwKKyAgICAvLyBtYXAoMSkKKyAg
ICAweEExLAorICAgIC8vIGtleSgxKSAtIGtleUFncmVlbWVudAorICAgIDB4MDEsCisgICAgLy8g
TWFwKDUpCisgICAgMHhBNSwKKyAgICAvLyBrdHk6IEVDIGtleSB0eXBlCisgICAgMHgwMSwgMHgw
MiwKKyAgICAvLyBhbGc6IEVDREgyNTYgc2lnbmF0dXJlIGFsZ29yaXRobQorICAgIDB4MDMsIDB4
MzgsIDB4MTgsCisgICAgLy8gY3J2OiBQLTI1NiBjdXJ2ZQorICAgIDB4MjAsIDB4MDEsCisgICAg
Ly8geC1jb29yZGluYXRlCisgICAgMHgyMSwKKyAgICAvLyBCeXRlcygzMikKKyAgICAweDU4LCAw
eDIwLAorICAgIC8vIEJ5dGUgYXJyYXkgY29udGVudAorICAgIDB4RTgsIDB4NzYsIDB4MjUsIDB4
ODksIDB4NkUsIDB4RTQsIDB4RTQsIDB4NkQsIDB4QzAsIDB4MzIsIDB4NzYsIDB4NkUsCisgICAg
MHg4MCwgMHg4NywgMHg5NiwgMHgyRiwgMHgzNiwgMHhERiwgMHg5RCwgMHhGRSwgMHg4QiwgMHg1
NiwgMHg3RiwgMHgzNywKKyAgICAweDYzLCAweDAxLCAweDVCLCAweDE5LCAweDkwLCAweEE2LCAw
eDBFLCAweDE0LAorICAgIC8vIHktY29vcmRpbmF0ZQorICAgIDB4MjIsCisgICAgLy8gQnl0ZXMo
MzIpCisgICAgMHg1OCwgMHgyMCwKKyAgICAvLyBCeXRlIGFycmF5IGNvbnRlbnQKKyAgICAweDI3
LCAweERFLCAweDYxLCAweDJELCAweDY2LCAweDQxLCAweDhCLCAweERBLCAweDE5LCAweDUwLCAw
eDU4LCAweDFFLAorICAgIDB4QkMsIDB4NUMsIDB4OEMsIDB4MUQsIDB4QUQsIDB4NzEsIDB4MEMs
IDB4QjEsIDB4NEMsIDB4MjIsIDB4RjgsIDB4QzksCisgICAgMHg3MCwgMHg0NSwgMHhGNCwgMHg2
MSwgMHgyRiwgMHhCMiwgMHgwQywgMHg5MSwKK307CisKK2NvbnN0ZXhwciB1aW50OF90IGtDdGFw
Q2xpZW50UGluUmV0cmllc1Jlc3BvbnNlW10gPSB7CisgICAgLy8gU3VjY2VzcworICAgIDB4MDAs
CisgICAgLy8gbWFwKDEpCisgICAgMHhhMSwKKyAgICAvLyBrZXkoMykgLSByZXRyaWVzCisgICAg
MHgwMywKKyAgICAvLyB2YWx1ZSAtIDgKKyAgICAweDA4LAorfTsKKwogfSAvLyBuYW1lc3BhY2Ug
VGVzdERhdGEKIAogfSAvLyBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>386172</attachid>
            <date>2019-12-19 18:34:00 -0800</date>
            <delta_ts>2019-12-20 02:31:11 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-205376-20191220103354.patch</filename>
            <type>text/plain</type>
            <size>97321</size>
            <attacher name="Jiewen Tan">jiewen_tan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUzNDI1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjVkMTQzM2ZhNWExZjdh
ZDY3YTQ0M2Q3ZmRjOTMxYjk5NmIzMmI0MS4uZTFmMGJiZGIxNGM2NGExYTg1ZjlhMzlmZjkyNWU4
YmZjYTU2NDdjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc0IEBACisyMDE5LTEyLTE3ICBKaWV3
ZW4gVGFuICA8amlld2VuX3RhbkBhcHBsZS5jb20+CisKKyAgICAgICAgW1dlYkF1dGhuXSBJbXBs
ZW1lbnQgY29kZXJzIGZvciBDVEFQIENsaWVudFBJTiByZXF1ZXN0cyBhbmQgcmVzcG9uc2VzCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDUzNzYKKyAg
ICAgICAgPHJkYXI6Ly9wcm9ibGVtLzU4MDM0Mzk1PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2ggaW1wbGVtZW50cyBjb2RlcnMgZm9y
IGF1dGhlbnRpY2F0b3JDbGllbnRQSU4gcmVxdWVzdHMgYW5kIHJlc3BvbnNlcworICAgICAgICBm
b2xsb3dpbmcgdGhlIHNwZWM6CisgICAgICAgIGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9zcGVj
cy9maWRvLXYyLjAtcHMtMjAxOTAxMzAvZmlkby1jbGllbnQtdG8tYXV0aGVudGljYXRvci1wcm90
b2NvbC12Mi4wLXBzLTIwMTkwMTMwLmh0bWwjYXV0aGVudGljYXRvckNsaWVudFBJTgorCisgICAg
ICAgIFNwZWNpZmljYWxseSwgaXQKKyAgICAgICAgaSkgaW1wbGVtZW50cyBhdXRoZW50aWNhdG9y
Q2xpZW50UElOIHN1YkNvbW1hbmQ6IGdldFJldHJpZXMsIGdldEtleUFncmVlbWVudCBhbmQgZ2V0
UElOVG9rZW47CisgICAgICAgIGlpKSBhZGRzIHBpbkF1dGgvcGluUHJvdG9jb2wgdG8gYXV0aGVu
dGljYXRvck1ha2VDcmVkZW50aWFsL2F1dGhlbnRpY2F0b3JHZXRBc3NlcnRpb24uCisKKyAgICAg
ICAgVGhlIGF1dGhlbnRpY2F0b3JDbGllbnRQSU4gc3ViQ29tbWFuZHMgYXJlIGJhc2VkIG9uIGEg
Q2hyb21pdW0gcGF0Y2g6CisgICAgICAgIGh0dHBzOi8vY2hyb21pdW0tcmV2aWV3Lmdvb2dsZXNv
dXJjZS5jb20vYy9jaHJvbWl1bS9zcmMvKy8xNDU3MDA0IFNwZWNpZmljYWxseSwgaXQgYWRvcHRz
IHRoZQorICAgICAgICBpbnRlcmZhY2VzIGZyb20gdGhhdCBwYXRjaCwgYnV0IHJld3JpdGVzIHRo
ZSBCb3JpbmdTU0wtYmFzZWQgY3J5cHRvIGZlYXR1cmVzIHVzaW5nIFdlYkNvcmUncworICAgICAg
ICBXZWJDcnlwdG8gaW1wbGVtZW50YXRpb24uIFRoaXMgYWxsb3dzIHVzIHRvIGZvY3VzIG9uIGhp
Z2ggbGV2ZWwgY3J5cHRvIGludGVyZmFjZXMsIGFuZCBsZXRzCisgICAgICAgIFdlYkNyeXB0byBo
YW5kbGUgdGhlIHVuZGVybHlpbmcgY3J5cHRvIGxpYnJhcnkuIEFsc28sIHRoZSBvcmlnaW5hbCBD
aHJvbWl1bSBwYXRjaCBsYWNrcyB0ZXN0cy4KKyAgICAgICAgV2UgaW50cm9kdWNlIGEgbGFyZ2Ug
c2V0IG9mIEFQSSB0ZXN0cyB0byBjb25maXJtIHByb3BlciBmdW5jdGlvbi4KKworICAgICAgICBU
aGlzIHBhdGNoIGFsc28gbWFrZXMgdGhlIEFFUyBDQkMsIEVEQ0gsIGFuZCBITUFDIHBsYXRmb3Jt
KiBpbXBsZW1lbnRhdGlvbnMgcHVibGljLCBzbyB0aGF0CisgICAgICAgIHRoZXNlIGltcGxlbWVu
dGF0aW9ucyBjYW4gYmUgc2hhcmVkIGJ5IFdlYkF1dGhlbnRpY2F0aW9uIGFuZCB0ZXN0IGluZnJh
c3RydWN0dXJlLgorCisgICAgICAgIENvdmVyZWQgYnkgQVBJIHRlc3RzLgorCisgICAgICAgICog
TW9kdWxlcy93ZWJhdXRobi9XZWJBdXRoZW50aWNhdGlvbkNvbnN0YW50cy5oOgorICAgICAgICAq
IE1vZHVsZXMvd2ViYXV0aG4vY2Jvci9DQk9SUmVhZGVyLmNwcDoKKyAgICAgICAgKGNib3I6OkNC
T1JSZWFkZXI6OnJlYWRDQk9STWFwKToKKyAgICAgICAgTGV0IENCT1JSZWFkZXIgcmVjb2duaXpl
IG5lZ2F0aXZlIG1hcCBrZXlzLgorICAgICAgICAqIE1vZHVsZXMvd2ViYXV0aG4vZmlkby9EZXZp
Y2VSZXF1ZXN0Q29udmVydGVyLmNwcDoKKyAgICAgICAgKGZpZG86OmVuY29kZU1ha2VDcmVkZW5p
dGFsUmVxdWVzdEFzQ0JPUik6CisgICAgICAgIChmaWRvOjplbmNvZGVHZXRBc3NlcnRpb25SZXF1
ZXN0QXNDQk9SKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1dGhuL2ZpZG8vRGV2aWNlUmVxdWVz
dENvbnZlcnRlci5oOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXV0aG4vZmlkby9QaW4uY3BwOiBB
ZGRlZC4KKyAgICAgICAgKGZpZG86OnBpbjo6aGFzQXRMZWFzdEZvdXJDb2RlcG9pbnRzKToKKyAg
ICAgICAgKGZpZG86OnBpbjo6bWFrZVBpbkF1dGgpOgorICAgICAgICAoZmlkbzo6cGluOjplbmNv
ZGVSYXdQdWJsaWNLZXkpOgorICAgICAgICAoZmlkbzo6cGluOjp2YWxpZGF0ZUFuZENvbnZlcnRU
b1VURjgpOgorICAgICAgICAoZmlkbzo6cGluOjplbmNvZGVQaW5Db21tYW5kKToKKyAgICAgICAg
KGZpZG86OnBpbjo6UmV0cmllc1Jlc3BvbnNlOjpwYXJzZSk6CisgICAgICAgIChmaWRvOjpwaW46
OktleUFncmVlbWVudFJlc3BvbnNlOjpLZXlBZ3JlZW1lbnRSZXNwb25zZSk6CisgICAgICAgIChm
aWRvOjpwaW46OktleUFncmVlbWVudFJlc3BvbnNlOjpwYXJzZSk6CisgICAgICAgIChmaWRvOjpw
aW46OktleUFncmVlbWVudFJlc3BvbnNlOjpwYXJzZUZyb21DT1NFKToKKyAgICAgICAgKGZpZG86
OnBpbjo6ZW5jb2RlQ09TRVB1YmxpY0tleSk6CisgICAgICAgIChmaWRvOjpwaW46OlRva2VuUmVz
cG9uc2U6OlRva2VuUmVzcG9uc2UpOgorICAgICAgICAoZmlkbzo6cGluOjpUb2tlblJlc3BvbnNl
OjpwYXJzZSk6CisgICAgICAgIChmaWRvOjpwaW46OlRva2VuUmVzcG9uc2U6OnBpbkF1dGggY29u
c3QpOgorICAgICAgICAoZmlkbzo6cGluOjpUb2tlblJlc3BvbnNlOjp0b2tlbiBjb25zdCk6Cisg
ICAgICAgIChmaWRvOjpwaW46OmVuY29kZUFzQ0JPUik6CisgICAgICAgIChmaWRvOjpwaW46OlRv
a2VuUmVxdWVzdDo6dHJ5Q3JlYXRlKToKKyAgICAgICAgKGZpZG86OnBpbjo6VG9rZW5SZXF1ZXN0
OjpUb2tlblJlcXVlc3QpOgorICAgICAgICAoZmlkbzo6cGluOjpUb2tlblJlcXVlc3Q6OnNoYXJl
ZEtleSBjb25zdCk6CisgICAgICAgICogTW9kdWxlcy93ZWJhdXRobi9maWRvL1Bpbi5oOiBBZGRl
ZC4KKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2o6CisgICAgICAgICogY3J5cHRvL0NyeXB0b0FsZ29yaXRobS5oOgorICAg
ICAgICAqIGNyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobUFFU19DQkMuaDoKKyAgICAg
ICAgKiBjcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1FQ0RILmg6CisgICAgICAgICog
Y3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtSE1BQy5oOgorICAgICAgICAqIGNyeXB0
by9rZXlzL0NyeXB0b0tleUFFUy5jcHA6CisgICAgICAgICogY3J5cHRvL2tleXMvQ3J5cHRvS2V5
QUVTLmg6CisgICAgICAgICogY3J5cHRvL2tleXMvQ3J5cHRvS2V5RUMuaDoKKyAgICAgICAgKiBj
cnlwdG8vbWFjL0NyeXB0b0FsZ29yaXRobUFFU19DQkNNYWMuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Q3J5cHRvQWxnb3JpdGhtQUVTX0NCQzo6cGxhdGZvcm1FbmNyeXB0KToKKyAgICAgICAgKFdl
YkNvcmU6OkNyeXB0b0FsZ29yaXRobUFFU19DQkM6OnBsYXRmb3JtRGVjcnlwdCk6CisgICAgICAg
ICogY3J5cHRvL21hYy9DcnlwdG9LZXlSU0FNYWMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3J5
cHRvS2V5UlNBOjphbGdvcml0aG0gY29uc3QpOgorCiAyMDE5LTEyLTEyICB5b3Vlbm4gZmFibGV0
ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW1vdmUgZGVidWcgQVNTRVJUIGluIFBl
ZXJDb25uZWN0aW9uQmFja2VuZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdXRobi9XZWJBdXRoZW50aWNhdGlvbkNvbnN0YW50cy5oIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJhdXRobi9XZWJBdXRoZW50aWNhdGlvbkNvbnN0YW50cy5oCmluZGV4IDE4MmUyZWEw
NjA0NWQ4YTUzZDg0ZTk4ZGQ1OTQ1Zjc0YTlkYzE4NDMuLjY4MzMxZjVhN2IxNzg3ZjE1ZDYwYzQx
MWQ0ZTJlZTZiYjZhYWJmNTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXV0aG4vV2ViQXV0aGVudGljYXRpb25Db25zdGFudHMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmF1dGhuL1dlYkF1dGhlbnRpY2F0aW9uQ29uc3RhbnRzLmgKQEAgLTM4LDYgKzM4
LDcgQEAgY29uc3QgaW50NjRfdCB5ID0gLTM7CiAvLyBWYWx1ZXMKIGNvbnN0IGludDY0X3QgRUMy
ID0gMjsKIGNvbnN0IGludDY0X3QgRVMyNTYgPSAtNzsKK2NvbnN0IGludDY0X3QgRUNESDI1NiA9
IC0yNTsKIGNvbnN0IGludDY0X3QgUF8yNTYgPSAxOwogCiB9IC8vIG5hbWVzcGFjZSBDT1NFCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL2Nib3IvQ0JPUlJlYWRl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL2Nib3IvQ0JPUlJlYWRlci5j
cHAKaW5kZXggYWY1YjEwM2M2ZTU5YmUzMDAxZWYxYjY3MDNmMzYzZDAxNmYzZTFkMS4uNTlkNmM0
MjExMTI0YmE0OGZlZDIzODExOTViOGFmMTNmMmUyODY4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJhdXRobi9jYm9yL0NCT1JSZWFkZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vY2Jvci9DQk9SUmVhZGVyLmNwcApAQCAtMjY5LDcgKzI2
OSw3IEBAIE9wdGlvbmFsPENCT1JWYWx1ZT4gQ0JPUlJlYWRlcjo6cmVhZENCT1JNYXAodWludDY0
X3QgbGVuZ3RoLCBpbnQgbWF4TmVzdGluZ0xldmVsCiAgICAgICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OwogCiAgICAgICAgIC8vIE9ubHkgQ0JPUiBtYXBzIHdpdGggaW50ZWdlciBvciBzdHJp
bmcgdHlwZSBrZXlzIGFyZSBhbGxvd2VkLgotICAgICAgICBpZiAoa2V5LnZhbHVlKCkudHlwZSgp
ICE9IENCT1JWYWx1ZTo6VHlwZTo6U3RyaW5nICYmIGtleS52YWx1ZSgpLnR5cGUoKSAhPSBDQk9S
VmFsdWU6OlR5cGU6OlVuc2lnbmVkKSB7CisgICAgICAgIGlmICgha2V5LT5pc1N0cmluZygpICYm
ICFrZXktPmlzSW50ZWdlcigpKSB7CiAgICAgICAgICAgICBtX2Vycm9yQ29kZSA9IERlY29kZXJF
cnJvcjo6SW5jb3JyZWN0TWFwS2V5VHlwZTsKICAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0
aG4vZmlkby9EZXZpY2VSZXF1ZXN0Q29udmVydGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXV0aG4vZmlkby9EZXZpY2VSZXF1ZXN0Q29udmVydGVyLmNwcAppbmRleCBlYmRiMTky
NTNiMmVmYmE2YWE0NTYwNTE2MzYxYWM3MmQxNWFhODUxLi5iOTZkYWJiNTk4NjljNDI1YmRiYmE0
N2U5M2Y1ZDMwMDk4YWE5ZDg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmF1dGhuL2ZpZG8vRGV2aWNlUmVxdWVzdENvbnZlcnRlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJhdXRobi9maWRvL0RldmljZVJlcXVlc3RDb252ZXJ0ZXIuY3BwCkBAIC04
Nyw3ICs4Nyw3IEBAIHN0YXRpYyBDQk9SVmFsdWUgY29udmVydERlc2NyaXB0b3JUb0NCT1IoY29u
c3QgUHVibGljS2V5Q3JlZGVudGlhbERlc2NyaXB0b3ImIGRlCiAgICAgcmV0dXJuIENCT1JWYWx1
ZShXVEZNb3ZlKGNib3JEZXNjcmlwdG9yTWFwKSk7CiB9CiAKLVZlY3Rvcjx1aW50OF90PiBlbmNv
ZGVNYWtlQ3JlZGVuaXRhbFJlcXVlc3RBc0NCT1IoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBoYXNo
LCBjb25zdCBQdWJsaWNLZXlDcmVkZW50aWFsQ3JlYXRpb25PcHRpb25zJiBvcHRpb25zLCBVVkF2
YWlsYWJpbGl0eSB1dkNhcGFiaWxpdHkpCitWZWN0b3I8dWludDhfdD4gZW5jb2RlTWFrZUNyZWRl
bml0YWxSZXF1ZXN0QXNDQk9SKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgaGFzaCwgY29uc3QgUHVi
bGljS2V5Q3JlZGVudGlhbENyZWF0aW9uT3B0aW9ucyYgb3B0aW9ucywgVVZBdmFpbGFiaWxpdHkg
dXZDYXBhYmlsaXR5LCBPcHRpb25hbDxQaW5QYXJhbWV0ZXJzPiBwaW4pCiB7CiAgICAgQ0JPUlZh
bHVlOjpNYXBWYWx1ZSBjYm9yTWFwOwogICAgIGNib3JNYXBbQ0JPUlZhbHVlKDEpXSA9IENCT1JW
YWx1ZShoYXNoKTsKQEAgLTEyNCw2ICsxMjQsMTIgQEAgVmVjdG9yPHVpbnQ4X3Q+IGVuY29kZU1h
a2VDcmVkZW5pdGFsUmVxdWVzdEFzQ0JPUihjb25zdCBWZWN0b3I8dWludDhfdD4mIGhhc2gsIGMK
ICAgICBpZiAoIW9wdGlvbk1hcC5lbXB0eSgpKQogICAgICAgICBjYm9yTWFwW0NCT1JWYWx1ZSg3
KV0gPSBDQk9SVmFsdWUoV1RGTW92ZShvcHRpb25NYXApKTsKIAorICAgIGlmIChwaW4pIHsKKyAg
ICAgICAgQVNTRVJUKHBpbi0+cHJvdG9jb2wgPj0gMCk7CisgICAgICAgIGNib3JNYXBbQ0JPUlZh
bHVlKDgpXSA9IENCT1JWYWx1ZShwaW4tPnByb3RvY29sKTsKKyAgICAgICAgY2Jvck1hcFtDQk9S
VmFsdWUoOSldID0gQ0JPUlZhbHVlKFdURk1vdmUocGluLT5hdXRoKSk7CisgICAgfQorCiAgICAg
YXV0byBzZXJpYWxpemVkUGFyYW0gPSBDQk9SV3JpdGVyOjp3cml0ZShDQk9SVmFsdWUoV1RGTW92
ZShjYm9yTWFwKSkpOwogICAgIEFTU0VSVChzZXJpYWxpemVkUGFyYW0pOwogCkBAIC0xMzIsNyAr
MTM4LDcgQEAgVmVjdG9yPHVpbnQ4X3Q+IGVuY29kZU1ha2VDcmVkZW5pdGFsUmVxdWVzdEFzQ0JP
Uihjb25zdCBWZWN0b3I8dWludDhfdD4mIGhhc2gsIGMKICAgICByZXR1cm4gY2JvclJlcXVlc3Q7
CiB9CiAKLVZlY3Rvcjx1aW50OF90PiBlbmNvZGVHZXRBc3NlcnRpb25SZXF1ZXN0QXNDQk9SKGNv
bnN0IFZlY3Rvcjx1aW50OF90PiYgaGFzaCwgY29uc3QgUHVibGljS2V5Q3JlZGVudGlhbFJlcXVl
c3RPcHRpb25zJiBvcHRpb25zLCBVVkF2YWlsYWJpbGl0eSB1dkNhcGFiaWxpdHkpCitWZWN0b3I8
dWludDhfdD4gZW5jb2RlR2V0QXNzZXJ0aW9uUmVxdWVzdEFzQ0JPUihjb25zdCBWZWN0b3I8dWlu
dDhfdD4mIGhhc2gsIGNvbnN0IFB1YmxpY0tleUNyZWRlbnRpYWxSZXF1ZXN0T3B0aW9ucyYgb3B0
aW9ucywgVVZBdmFpbGFiaWxpdHkgdXZDYXBhYmlsaXR5LCBPcHRpb25hbDxQaW5QYXJhbWV0ZXJz
PiBwaW4pCiB7CiAgICAgQ0JPUlZhbHVlOjpNYXBWYWx1ZSBjYm9yTWFwOwogICAgIGNib3JNYXBb
Q0JPUlZhbHVlKDEpXSA9IENCT1JWYWx1ZShvcHRpb25zLnJwSWQpOwpAQCAtMTY0LDYgKzE3MCwx
MiBAQCBWZWN0b3I8dWludDhfdD4gZW5jb2RlR2V0QXNzZXJ0aW9uUmVxdWVzdEFzQ0JPUihjb25z
dCBWZWN0b3I8dWludDhfdD4mIGhhc2gsIGNvbgogICAgIGlmICghb3B0aW9uTWFwLmVtcHR5KCkp
CiAgICAgICAgIGNib3JNYXBbQ0JPUlZhbHVlKDUpXSA9IENCT1JWYWx1ZShXVEZNb3ZlKG9wdGlv
bk1hcCkpOwogCisgICAgaWYgKHBpbikgeworICAgICAgICBBU1NFUlQocGluLT5wcm90b2NvbCA+
PSAwKTsKKyAgICAgICAgY2Jvck1hcFtDQk9SVmFsdWUoOCldID0gQ0JPUlZhbHVlKHBpbi0+cHJv
dG9jb2wpOworICAgICAgICBjYm9yTWFwW0NCT1JWYWx1ZSg5KV0gPSBDQk9SVmFsdWUoV1RGTW92
ZShwaW4tPmF1dGgpKTsKKyAgICB9CisKICAgICBhdXRvIHNlcmlhbGl6ZWRQYXJhbSA9IENCT1JX
cml0ZXI6OndyaXRlKENCT1JWYWx1ZShXVEZNb3ZlKGNib3JNYXApKSk7CiAgICAgQVNTRVJUKHNl
cmlhbGl6ZWRQYXJhbSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXV0aG4vZmlkby9EZXZpY2VSZXF1ZXN0Q29udmVydGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmF1dGhuL2ZpZG8vRGV2aWNlUmVxdWVzdENvbnZlcnRlci5oCmluZGV4IDc4MTE0ZmFl
YjdiN2QzOWZjYjY2OWViYjI4YTA4ZTgxZTdmNWVhZDguLmE4OTc2ZTBjOTA0OGMzYmEzODIxYmNm
ZGNjZDJlNjQ1MjA5ZTZkNzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXV0aG4vZmlkby9EZXZpY2VSZXF1ZXN0Q29udmVydGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdXRobi9maWRvL0RldmljZVJlcXVlc3RDb252ZXJ0ZXIuaApAQCAtNDIsMTUg
KzQyLDIwIEBAIHN0cnVjdCBQdWJsaWNLZXlDcmVkZW50aWFsUmVxdWVzdE9wdGlvbnM7CiAKIG5h
bWVzcGFjZSBmaWRvIHsKIAorc3RydWN0IFBpblBhcmFtZXRlcnMgeworICAgIGludCBwcm90b2Nv
bDsKKyAgICBWZWN0b3I8dWludDhfdD4gYXV0aDsKK307CisKIC8vIFNlcmlhbGl6ZXMgTWFrZUNy
ZWRlbnRpYWwgcmVxdWVzdCBwYXJhbWV0ZXIgaW50byBDQk9SIGVuY29kZWQgbWFwIHdpdGgKIC8v
IGludGVnZXIga2V5cyBhbmQgQ0JPUiBlbmNvZGVkIHZhbHVlcyBhcyBkZWZpbmVkIGJ5IHRoZSBD
VEFQIHNwZWMuCiAvLyBodHRwczovL2ZpZG9hbGxpYW5jZS5vcmcvc3BlY3MvZmlkby12Mi4wLXBz
LTIwMTcwOTI3L2ZpZG8tY2xpZW50LXRvLWF1dGhlbnRpY2F0b3ItcHJvdG9jb2wtdjIuMC1wcy0y
MDE3MDkyNy5odG1sI2F1dGhlbnRpY2F0b3JNYWtlQ3JlZGVudGlhbAotV0VCQ09SRV9FWFBPUlQg
VmVjdG9yPHVpbnQ4X3Q+IGVuY29kZU1ha2VDcmVkZW5pdGFsUmVxdWVzdEFzQ0JPUihjb25zdCBW
ZWN0b3I8dWludDhfdD4mIGhhc2gsIGNvbnN0IFdlYkNvcmU6OlB1YmxpY0tleUNyZWRlbnRpYWxD
cmVhdGlvbk9wdGlvbnMmLCBBdXRoZW50aWNhdG9yU3VwcG9ydGVkT3B0aW9uczo6VXNlclZlcmlm
aWNhdGlvbkF2YWlsYWJpbGl0eSk7CitXRUJDT1JFX0VYUE9SVCBWZWN0b3I8dWludDhfdD4gZW5j
b2RlTWFrZUNyZWRlbml0YWxSZXF1ZXN0QXNDQk9SKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgaGFz
aCwgY29uc3QgV2ViQ29yZTo6UHVibGljS2V5Q3JlZGVudGlhbENyZWF0aW9uT3B0aW9ucyYsIEF1
dGhlbnRpY2F0b3JTdXBwb3J0ZWRPcHRpb25zOjpVc2VyVmVyaWZpY2F0aW9uQXZhaWxhYmlsaXR5
LCBPcHRpb25hbDxQaW5QYXJhbWV0ZXJzPiBwaW4gPSBXVEY6Om51bGxvcHQpOwogCiAvLyBTZXJp
YWxpemVzIEdldEFzc2VydGlvbiByZXF1ZXN0IHBhcmFtZXRlciBpbnRvIENCT1IgZW5jb2RlZCBt
YXAgd2l0aAogLy8gaW50ZWdlciBrZXlzIGFuZCBDQk9SIGVuY29kZWQgdmFsdWVzIGFzIGRlZmlu
ZWQgYnkgdGhlIENUQVAgc3BlYy4KIC8vIGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9zcGVjcy9m
aWRvLXYyLjAtcHMtMjAxNzA5MjcvZmlkby1jbGllbnQtdG8tYXV0aGVudGljYXRvci1wcm90b2Nv
bC12Mi4wLXBzLTIwMTcwOTI3Lmh0bWwjYXV0aGVudGljYXRvckdldEFzc2VydGlvbgotV0VCQ09S
RV9FWFBPUlQgVmVjdG9yPHVpbnQ4X3Q+IGVuY29kZUdldEFzc2VydGlvblJlcXVlc3RBc0NCT1Io
Y29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBoYXNoLCBjb25zdCBXZWJDb3JlOjpQdWJsaWNLZXlDcmVk
ZW50aWFsUmVxdWVzdE9wdGlvbnMmLCBBdXRoZW50aWNhdG9yU3VwcG9ydGVkT3B0aW9uczo6VXNl
clZlcmlmaWNhdGlvbkF2YWlsYWJpbGl0eSk7CitXRUJDT1JFX0VYUE9SVCBWZWN0b3I8dWludDhf
dD4gZW5jb2RlR2V0QXNzZXJ0aW9uUmVxdWVzdEFzQ0JPUihjb25zdCBWZWN0b3I8dWludDhfdD4m
IGhhc2gsIGNvbnN0IFdlYkNvcmU6OlB1YmxpY0tleUNyZWRlbnRpYWxSZXF1ZXN0T3B0aW9ucyYs
IEF1dGhlbnRpY2F0b3JTdXBwb3J0ZWRPcHRpb25zOjpVc2VyVmVyaWZpY2F0aW9uQXZhaWxhYmls
aXR5LCBPcHRpb25hbDxQaW5QYXJhbWV0ZXJzPiBwaW4gPSBXVEY6Om51bGxvcHQpOwogCiAvLyBS
ZXByZXNlbnRzIENUQVAgcmVxdWVzdHMgd2l0aCBlbXB0eSBwYXJhbWV0ZXJzLCBpbmNsdWRpbmcK
IC8vIEF1dGhlbnRpY2F0b3JHZXRJbmZvLCBBdXRoZW50aWNhdG9yUmVzZXQgYW5kIEF1dGhlbnRp
Y2F0b3JHZXROZXh0QXNzZXJ0aW9uIGNvbW1hbmRzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJhdXRobi9maWRvL1Bpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmF1dGhuL2ZpZG8vUGluLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43ZjBjNjU5ZDg0ZDFiZDI3ZDJhNTZi
ODRiZWU5MThlZjU4MzI2YTM4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJhdXRobi9maWRvL1Bpbi5jcHAKQEAgLTAsMCArMSwzMTcgQEAKKy8vIENvcHlyaWdo
dCAyMDE5IFRoZSBDaHJvbWl1bSBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gQ29w
eXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vCisvLyBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKy8vIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKy8vIG1ldDoKKy8vCisvLyAgICAqIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisv
LyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisvLyAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUKKy8vIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKy8vIGluIHRoZSBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKy8vIGRpc3RyaWJ1dGlv
bi4KKy8vICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVz
IG9mIGl0cworLy8gY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90
ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKy8vIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZp
YyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisvLworLy8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworLy8gIkFTIElT
IiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QKKy8vIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUgorLy8gQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKy8vIE9XTkVSIE9SIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorLy8g
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVAorLy8gTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisvLyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKy8vIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
Ky8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworI2luY2x1ZGUgImNvbmZpZy5oIgor
I2luY2x1ZGUgIlBpbi5oIgorCisjaWYgRU5BQkxFKFdFQl9BVVRITikKKworI2luY2x1ZGUgIkNC
T1JSZWFkZXIuaCIKKyNpbmNsdWRlICJDQk9SV3JpdGVyLmgiCisjaW5jbHVkZSAiQ3J5cHRvQWxn
b3JpdGhtQUVTX0NCQy5oIgorI2luY2x1ZGUgIkNyeXB0b0FsZ29yaXRobUFlc0NiY0NmYlBhcmFt
cy5oIgorI2luY2x1ZGUgIkNyeXB0b0FsZ29yaXRobUVDREguaCIKKyNpbmNsdWRlICJDcnlwdG9B
bGdvcml0aG1ITUFDLmgiCisjaW5jbHVkZSAiQ3J5cHRvS2V5QUVTLmgiCisjaW5jbHVkZSAiQ3J5
cHRvS2V5RUMuaCIKKyNpbmNsdWRlICJDcnlwdG9LZXlITUFDLmgiCisjaW5jbHVkZSA8cGFsL2Ny
eXB0by9DcnlwdG9EaWdlc3QuaD4KKworbmFtZXNwYWNlIGZpZG8geworbmFtZXNwYWNlIHBpbiB7
Cit1c2luZyBuYW1lc3BhY2UgY2JvcjsKKworLy8gaGFzQXRMZWFzdEZvdXJDb2RlcG9pbnRzIHJl
dHVybnMgdHJ1ZSBpZiB8cGlufCBjb250YWlucworLy8gZm91ciBvciBtb3JlIGNvZGUgcG9pbnRz
LiBUaGlzIHJlZmxlY3RzIHRoZSAiNCBVbmljb2RlIGNoYXJhY3RlcnMiCisvLyByZXF1aXJlbWVu
dCBpbiBDVEFQMi4KK3N0YXRpYyBib29sIGhhc0F0TGVhc3RGb3VyQ29kZXBvaW50cyhjb25zdCBT
dHJpbmcmIHBpbikKK3sKKyAgICByZXR1cm4gcGluLmxlbmd0aCgpID49IDQ7Cit9CisKKy8vIG1h
a2VQaW5BdXRoIHJldHVybnMgYExFRlQoSE1BQy1TSEEtMjU2KHNlY3JldCwgZGF0YSksIDE2KWAu
CitzdGF0aWMgVmVjdG9yPHVpbnQ4X3Q+IG1ha2VQaW5BdXRoKGNvbnN0IENyeXB0b0tleUhNQUMm
IGtleSwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBkYXRhKQoreworICAgIGF1dG8gcmVzdWx0ID0g
Q3J5cHRvQWxnb3JpdGhtSE1BQzo6cGxhdGZvcm1TaWduKGtleSwgZGF0YSk7CisgICAgQVNTRVJU
KCFyZXN1bHQuaGFzRXhjZXB0aW9uKCkpOworICAgIGF1dG8gcGluQXV0aCA9IHJlc3VsdC5yZWxl
YXNlUmV0dXJuVmFsdWUoKTsKKyAgICBwaW5BdXRoLnNocmluaygxNik7CisgICAgcmV0dXJuIHBp
bkF1dGg7Cit9CisKK1ZlY3Rvcjx1aW50OF90PiBlbmNvZGVSYXdQdWJsaWNLZXkoY29uc3QgVmVj
dG9yPHVpbnQ4X3Q+JiB4LCBjb25zdCBWZWN0b3I8dWludDhfdD4mIHkpCit7CisgICAgVmVjdG9y
PHVpbnQ4X3Q+IHJhd0tleTsKKyAgICByYXdLZXkucmVzZXJ2ZUNhcGFjaXR5KDEgKyB4LnNpemUo
KSArIHkuc2l6ZSgpKTsKKyAgICByYXdLZXkuYXBwZW5kKDB4MDQpOworICAgIHJhd0tleS5hcHBl
bmRWZWN0b3IoeCk7CisgICAgcmF3S2V5LmFwcGVuZFZlY3Rvcih5KTsKKyAgICByZXR1cm4gcmF3
S2V5OworfQorCitPcHRpb25hbDxDU3RyaW5nPiB2YWxpZGF0ZUFuZENvbnZlcnRUb1VURjgoY29u
c3QgU3RyaW5nJiBwaW4pCit7CisgICAgaWYgKCFoYXNBdExlYXN0Rm91ckNvZGVwb2ludHMocGlu
KSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICBhdXRvIHJlc3VsdCA9IHBpbi51
dGY4KCk7CisgICAgaWYgKHJlc3VsdC5sZW5ndGgoKSA8IGtNaW5CeXRlcyB8fCByZXN1bHQubGVu
Z3RoKCkgPiBrTWF4Qnl0ZXMpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmV0
dXJuIHJlc3VsdDsKK30KKworLy8gZW5jb2RlUElOQ29tbWFuZCByZXR1cm5zIGEgQ1RBUDIgUElO
IGNvbW1hbmQgZm9yIHRoZSBvcGVyYXRpb24gfHN1YmNvbW1hbmR8LgorLy8gQWRkaXRpb25hbCBl
bGVtZW50cyBvZiB0aGUgdG9wLWxldmVsIENCT1IgbWFwIGNhbiBiZSBhZGRlZCB3aXRoIHRoZSBv
cHRpb25hbAorLy8gfGFkZEFkZGl0aW9uYWx8IGNhbGxiYWNrLgorc3RhdGljIFZlY3Rvcjx1aW50
OF90PiBlbmNvZGVQaW5Db21tYW5kKFN1YmNvbW1hbmQgc3ViY29tbWFuZCwgRnVuY3Rpb248dm9p
ZChDQk9SVmFsdWU6Ok1hcFZhbHVlKik+IGFkZEFkZGl0aW9uYWwgPSBudWxscHRyKQoreworICAg
IENCT1JWYWx1ZTo6TWFwVmFsdWUgbWFwOworICAgIG1hcC5lbXBsYWNlKHN0YXRpY19jYXN0PGlu
dDY0X3Q+KFJlcXVlc3RLZXk6OmtQcm90b2NvbCksIGtQcm90b2NvbFZlcnNpb24pOworICAgIG1h
cC5lbXBsYWNlKHN0YXRpY19jYXN0PGludDY0X3Q+KFJlcXVlc3RLZXk6OmtTdWJjb21tYW5kKSwg
c3RhdGljX2Nhc3Q8aW50NjRfdD4oc3ViY29tbWFuZCkpOworCisgICAgaWYgKGFkZEFkZGl0aW9u
YWwpCisgICAgICAgIGFkZEFkZGl0aW9uYWwoJm1hcCk7CisKKyAgICAvLyBGSVhNRSgyMDUzNzUp
CisgICAgYXV0byBzZXJpYWxpemVkUGFyYW0gPSBDQk9SV3JpdGVyOjp3cml0ZShDQk9SVmFsdWUo
V1RGTW92ZShtYXApKSk7CisgICAgQVNTRVJUKHNlcmlhbGl6ZWRQYXJhbSk7CisKKyAgICBWZWN0
b3I8dWludDhfdD4gY2JvclJlcXVlc3QoeyBzdGF0aWNfY2FzdDx1aW50OF90PihDdGFwUmVxdWVz
dENvbW1hbmQ6OmtBdXRoZW50aWNhdG9yQ2xpZW50UGluKSB9KTsKKyAgICBjYm9yUmVxdWVzdC5h
cHBlbmRWZWN0b3IoKnNlcmlhbGl6ZWRQYXJhbSk7CisgICAgcmV0dXJuIGNib3JSZXF1ZXN0Owor
fQorCitSZXRyaWVzUmVzcG9uc2U6OlJldHJpZXNSZXNwb25zZSgpID0gZGVmYXVsdDsKKworT3B0
aW9uYWw8UmV0cmllc1Jlc3BvbnNlPiBSZXRyaWVzUmVzcG9uc2U6OnBhcnNlKGNvbnN0IFZlY3Rv
cjx1aW50OF90PiYgaW5CdWZmZXIpCit7CisgICAgLy8gRklYTUUoMjA1Mzc1KQorICAgIGlmIChp
bkJ1ZmZlci5zaXplKCkgPD0ga1Jlc3BvbnNlQ29kZUxlbmd0aCB8fCBnZXRSZXNwb25zZUNvZGUo
aW5CdWZmZXIpICE9IEN0YXBEZXZpY2VSZXNwb25zZUNvZGU6OmtTdWNjZXNzKQorICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgVmVjdG9yPHVpbnQ4X3Q+IGJ1ZmZlcjsKKyAgICBi
dWZmZXIuYXBwZW5kKGluQnVmZmVyLmRhdGEoKSArIDEsIGluQnVmZmVyLnNpemUoKSAtIDEpOwor
ICAgIE9wdGlvbmFsPENCT1I+IGRlY29kZWRSZXNwb25zZSA9IGNib3I6OkNCT1JSZWFkZXI6OnJl
YWQoYnVmZmVyKTsKKyAgICBpZiAoIWRlY29kZWRSZXNwb25zZSB8fCAhZGVjb2RlZFJlc3BvbnNl
LT5pc01hcCgpKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIGNvbnN0IGF1dG8m
IHJlc3BvbnNlTWFwID0gZGVjb2RlZFJlc3BvbnNlLT5nZXRNYXAoKTsKKworICAgIGF1dG8gaXQg
PSByZXNwb25zZU1hcC5maW5kKENCT1JWYWx1ZShzdGF0aWNfY2FzdDxpbnQ2NF90PihSZXNwb25z
ZUtleTo6a1JldHJpZXMpKSk7CisgICAgaWYgKGl0ID09IHJlc3BvbnNlTWFwLmVuZCgpIHx8ICFp
dC0+c2Vjb25kLmlzVW5zaWduZWQoKSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKwor
ICAgIFJldHJpZXNSZXNwb25zZSByZXQ7CisgICAgcmV0LnJldHJpZXMgPSBzdGF0aWNfY2FzdDxp
bnQ2NF90PihpdC0+c2Vjb25kLmdldFVuc2lnbmVkKCkpOworICAgIHJldHVybiByZXQ7Cit9CisK
K0tleUFncmVlbWVudFJlc3BvbnNlOjpLZXlBZ3JlZW1lbnRSZXNwb25zZShSZWY8Q3J5cHRvS2V5
RUM+JiYgcGVlcktleSkKKyAgICA6IHBlZXJLZXkoV1RGTW92ZShwZWVyS2V5KSkKK3sKK30KKwor
T3B0aW9uYWw8S2V5QWdyZWVtZW50UmVzcG9uc2U+IEtleUFncmVlbWVudFJlc3BvbnNlOjpwYXJz
ZShjb25zdCBWZWN0b3I8dWludDhfdD4mIGluQnVmZmVyKQoreworICAgIC8vIEZJWE1FKDIwNTM3
NSkKKyAgICBpZiAoaW5CdWZmZXIuc2l6ZSgpIDw9IGtSZXNwb25zZUNvZGVMZW5ndGggfHwgZ2V0
UmVzcG9uc2VDb2RlKGluQnVmZmVyKSAhPSBDdGFwRGV2aWNlUmVzcG9uc2VDb2RlOjprU3VjY2Vz
cykKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgIFZlY3Rvcjx1aW50OF90PiBi
dWZmZXI7CisgICAgYnVmZmVyLmFwcGVuZChpbkJ1ZmZlci5kYXRhKCkgKyAxLCBpbkJ1ZmZlci5z
aXplKCkgLSAxKTsKKyAgICBhdXRvIGRlY29kZWRSZXNwb25zZSA9IGNib3I6OkNCT1JSZWFkZXI6
OnJlYWQoYnVmZmVyKTsKKyAgICBpZiAoIWRlY29kZWRSZXNwb25zZSB8fCAhZGVjb2RlZFJlc3Bv
bnNlLT5pc01hcCgpKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIGNvbnN0IGF1
dG8mIHJlc3BvbnNlTWFwID0gZGVjb2RlZFJlc3BvbnNlLT5nZXRNYXAoKTsKKworICAgIC8vIFRo
ZSBlcGhlbWVyYWwga2V5IGlzIGVuY29kZWQgYXMgYSBDT1NFIHN0cnVjdHVyZS4KKyAgICBhdXRv
IGl0ID0gcmVzcG9uc2VNYXAuZmluZChDQk9SVmFsdWUoc3RhdGljX2Nhc3Q8aW50NjRfdD4oUmVz
cG9uc2VLZXk6OmtLZXlBZ3JlZW1lbnQpKSk7CisgICAgaWYgKGl0ID09IHJlc3BvbnNlTWFwLmVu
ZCgpIHx8ICFpdC0+c2Vjb25kLmlzTWFwKCkpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CisgICAgY29uc3QgYXV0byYgY29zZUtleSA9IGl0LT5zZWNvbmQuZ2V0TWFwKCk7CisKKyAgICBy
ZXR1cm4gcGFyc2VGcm9tQ09TRShjb3NlS2V5KTsKK30KKworT3B0aW9uYWw8S2V5QWdyZWVtZW50
UmVzcG9uc2U+IEtleUFncmVlbWVudFJlc3BvbnNlOjpwYXJzZUZyb21DT1NFKGNvbnN0IENCT1JW
YWx1ZTo6TWFwVmFsdWUmIGNvc2VLZXkpCit7CisgICAgLy8gVGhlIENPU0Uga2V5IG11c3QgYmUg
YSBQLTI1NiBwb2ludC4gU2VlCisgICAgLy8gaHR0cHM6Ly90b29scy5pZXRmLm9yZy9odG1sL3Jm
YzgxNTIjc2VjdGlvbi03LjEKKyAgICBmb3IgKGNvbnN0IGF1dG8mIHBhaXIgOiBWZWN0b3I8c3Rk
OjpwYWlyPGludDY0X3QsIGludDY0X3Q+Pih7CisgICAgICAgIHsgc3RhdGljX2Nhc3Q8aW50NjRf
dD4oQ09TRTo6a3R5KSwgc3RhdGljX2Nhc3Q8aW50NjRfdD4oQ09TRTo6RUMyKSB9LAorICAgICAg
ICB7IHN0YXRpY19jYXN0PGludDY0X3Q+KENPU0U6OmFsZyksIHN0YXRpY19jYXN0PGludDY0X3Q+
KENPU0U6OkVDREgyNTYpIH0sCisgICAgICAgIHsgc3RhdGljX2Nhc3Q8aW50NjRfdD4oQ09TRTo6
Y3J2KSwgc3RhdGljX2Nhc3Q8aW50NjRfdD4oQ09TRTo6UF8yNTYpIH0sCisgICAgfSkpIHsKKyAg
ICAgICAgYXV0byBpdCA9IGNvc2VLZXkuZmluZChDQk9SVmFsdWUocGFpci5maXJzdCkpOworICAg
ICAgICBpZiAoaXQgPT0gY29zZUtleS5lbmQoKSB8fCAhaXQtPnNlY29uZC5pc0ludGVnZXIoKSB8
fCBpdC0+c2Vjb25kLmdldEludGVnZXIoKSAhPSBwYWlyLnNlY29uZCkKKyAgICAgICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisgICAgfQorCisgICAgLy8gU2VlIGh0dHBzOi8vdG9vbHMuaWV0
Zi5vcmcvaHRtbC9yZmM4MTUyI3NlY3Rpb24tMTMuMS4xCisgICAgY29uc3QgYXV0byYgeEl0ID0g
Y29zZUtleS5maW5kKENCT1JWYWx1ZShzdGF0aWNfY2FzdDxpbnQ2NF90PihDT1NFOjp4KSkpOwor
ICAgIGNvbnN0IGF1dG8mIHlJdCA9IGNvc2VLZXkuZmluZChDQk9SVmFsdWUoc3RhdGljX2Nhc3Q8
aW50NjRfdD4oQ09TRTo6eSkpKTsKKyAgICBpZiAoeEl0ID09IGNvc2VLZXkuZW5kKCkgfHwgeUl0
ID09IGNvc2VLZXkuZW5kKCkgfHwgIXhJdC0+c2Vjb25kLmlzQnl0ZVN0cmluZygpIHx8ICF5SXQt
PnNlY29uZC5pc0J5dGVTdHJpbmcoKSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKwor
ICAgIGNvbnN0IGF1dG8mIHggPSB4SXQtPnNlY29uZC5nZXRCeXRlU3RyaW5nKCk7CisgICAgY29u
c3QgYXV0byYgeSA9IHlJdC0+c2Vjb25kLmdldEJ5dGVTdHJpbmcoKTsKKyAgICBhdXRvIHBlZXJL
ZXkgPSBDcnlwdG9LZXlFQzo6aW1wb3J0UmF3KENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OkVD
REgsICJQLTI1NiIsIGVuY29kZVJhd1B1YmxpY0tleSh4LCB5KSwgdHJ1ZSwgQ3J5cHRvS2V5VXNh
Z2VEZXJpdmVCaXRzKTsKKyAgICBpZiAoIXBlZXJLZXkpCisgICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisKKyAgICByZXR1cm4gS2V5QWdyZWVtZW50UmVzcG9uc2UocGVlcktleS5yZWxlYXNl
Tm9uTnVsbCgpKTsKK30KKworY2Jvcjo6Q0JPUlZhbHVlOjpNYXBWYWx1ZSBlbmNvZGVDT1NFUHVi
bGljS2V5KGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgcmF3UHVibGljS2V5KQoreworICAgIEFTU0VS
VChyYXdQdWJsaWNLZXkuc2l6ZSgpID09IDY1KTsKKyAgICBWZWN0b3I8dWludDhfdD4geDsKKyAg
ICB4LmFwcGVuZChyYXdQdWJsaWNLZXkuZGF0YSgpICsgMSwgRVMyNTZGaWVsZEVsZW1lbnRMZW5n
dGgpOworICAgIFZlY3Rvcjx1aW50OF90PiB5OworICAgIHkuYXBwZW5kKHJhd1B1YmxpY0tleS5k
YXRhKCkgKyAxICsgRVMyNTZGaWVsZEVsZW1lbnRMZW5ndGgsIEVTMjU2RmllbGRFbGVtZW50TGVu
Z3RoKTsKKworICAgIGNib3I6OkNCT1JWYWx1ZTo6TWFwVmFsdWUgcHVibGljS2V5TWFwOworICAg
IHB1YmxpY0tleU1hcFtjYm9yOjpDQk9SVmFsdWUoQ09TRTo6a3R5KV0gPSBjYm9yOjpDQk9SVmFs
dWUoQ09TRTo6RUMyKTsKKyAgICBwdWJsaWNLZXlNYXBbY2Jvcjo6Q0JPUlZhbHVlKENPU0U6OmFs
ZyldID0gY2Jvcjo6Q0JPUlZhbHVlKENPU0U6OkVDREgyNTYpOworICAgIHB1YmxpY0tleU1hcFtj
Ym9yOjpDQk9SVmFsdWUoQ09TRTo6Y3J2KV0gPSBjYm9yOjpDQk9SVmFsdWUoQ09TRTo6UF8yNTYp
OworICAgIHB1YmxpY0tleU1hcFtjYm9yOjpDQk9SVmFsdWUoQ09TRTo6eCldID0gY2Jvcjo6Q0JP
UlZhbHVlKFdURk1vdmUoeCkpOworICAgIHB1YmxpY0tleU1hcFtjYm9yOjpDQk9SVmFsdWUoQ09T
RTo6eSldID0gY2Jvcjo6Q0JPUlZhbHVlKFdURk1vdmUoeSkpOworCisgICAgcmV0dXJuIHB1Ymxp
Y0tleU1hcDsKK30KKworVG9rZW5SZXNwb25zZTo6VG9rZW5SZXNwb25zZShSZWY8V2ViQ29yZTo6
Q3J5cHRvS2V5SE1BQz4mJiB0b2tlbikKKyAgICA6IG1fdG9rZW4oV1RGTW92ZSh0b2tlbikpCit7
Cit9CisKK09wdGlvbmFsPFRva2VuUmVzcG9uc2U+IFRva2VuUmVzcG9uc2U6OnBhcnNlKGNvbnN0
IFdlYkNvcmU6OkNyeXB0b0tleUFFUyYgc2hhcmVkS2V5LCBjb25zdCBWZWN0b3I8dWludDhfdD4m
IGluQnVmZmVyKQoreworICAgIC8vIEZJWE1FKDIwNTM3NSkKKyAgICBpZiAoaW5CdWZmZXIuc2l6
ZSgpIDw9IGtSZXNwb25zZUNvZGVMZW5ndGggfHwgZ2V0UmVzcG9uc2VDb2RlKGluQnVmZmVyKSAh
PSBDdGFwRGV2aWNlUmVzcG9uc2VDb2RlOjprU3VjY2VzcykKKyAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKworICAgIFZlY3Rvcjx1aW50OF90PiBidWZmZXI7CisgICAgYnVmZmVyLmFwcGVu
ZChpbkJ1ZmZlci5kYXRhKCkgKyAxLCBpbkJ1ZmZlci5zaXplKCkgLSAxKTsKKyAgICBhdXRvIGRl
Y29kZWRSZXNwb25zZSA9IGNib3I6OkNCT1JSZWFkZXI6OnJlYWQoYnVmZmVyKTsKKyAgICBpZiAo
IWRlY29kZWRSZXNwb25zZSB8fCAhZGVjb2RlZFJlc3BvbnNlLT5pc01hcCgpKQorICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworICAgIGNvbnN0IGF1dG8mIHJlc3BvbnNlTWFwID0gZGVjb2Rl
ZFJlc3BvbnNlLT5nZXRNYXAoKTsKKworICAgIGF1dG8gaXQgPSByZXNwb25zZU1hcC5maW5kKENC
T1JWYWx1ZShzdGF0aWNfY2FzdDxpbnQ2NF90PihSZXNwb25zZUtleTo6a1BpblRva2VuKSkpOwor
ICAgIGlmIChpdCA9PSByZXNwb25zZU1hcC5lbmQoKSB8fCAhaXQtPnNlY29uZC5pc0J5dGVTdHJp
bmcoKSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICBjb25zdCBhdXRvJiBlbmNy
eXB0ZWRUb2tlbiA9IGl0LT5zZWNvbmQuZ2V0Qnl0ZVN0cmluZygpOworCisgICAgYXV0byB0b2tl
blJlc3VsdCA9IENyeXB0b0FsZ29yaXRobUFFU19DQkM6OnBsYXRmb3JtRGVjcnlwdCh7IH0sIHNo
YXJlZEtleSwgZW5jcnlwdGVkVG9rZW4pOworICAgIGlmICh0b2tlblJlc3VsdC5oYXNFeGNlcHRp
b24oKSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICBhdXRvIHRva2VuID0gdG9r
ZW5SZXN1bHQucmVsZWFzZVJldHVyblZhbHVlKCk7CisKKyAgICBhdXRvIHRva2VuS2V5ID0gQ3J5
cHRvS2V5SE1BQzo6aW1wb3J0UmF3KHRva2VuLnNpemUoKSAqIDgsIENyeXB0b0FsZ29yaXRobUlk
ZW50aWZpZXI6OlNIQV8yNTYsIFdURk1vdmUodG9rZW4pLCB0cnVlLCBDcnlwdG9LZXlVc2FnZVNp
Z24pOworICAgIEFTU0VSVCh0b2tlbktleSk7CisKKyAgICByZXR1cm4gVG9rZW5SZXNwb25zZSh0
b2tlbktleS5yZWxlYXNlTm9uTnVsbCgpKTsKK30KKworVmVjdG9yPHVpbnQ4X3Q+IFRva2VuUmVz
cG9uc2U6OnBpbkF1dGgoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBjbGllbnREYXRhSGFzaCkgY29u
c3QKK3sKKyAgICByZXR1cm4gbWFrZVBpbkF1dGgobV90b2tlbiwgY2xpZW50RGF0YUhhc2gpOwor
fQorCitjb25zdCBWZWN0b3I8dWludDhfdD4mIFRva2VuUmVzcG9uc2U6OnRva2VuKCkgY29uc3QK
K3sKKyAgICByZXR1cm4gbV90b2tlbi0+a2V5KCk7Cit9CisKK1ZlY3Rvcjx1aW50OF90PiBlbmNv
ZGVBc0NCT1IoY29uc3QgUmV0cmllc1JlcXVlc3QmKQoreworICAgIHJldHVybiBlbmNvZGVQaW5D
b21tYW5kKFN1YmNvbW1hbmQ6OmtHZXRSZXRyaWVzKTsKK30KKworVmVjdG9yPHVpbnQ4X3Q+IGVu
Y29kZUFzQ0JPUihjb25zdCBLZXlBZ3JlZW1lbnRSZXF1ZXN0JikKK3sKKyAgICByZXR1cm4gZW5j
b2RlUGluQ29tbWFuZChTdWJjb21tYW5kOjprR2V0S2V5QWdyZWVtZW50KTsKK30KKworT3B0aW9u
YWw8VG9rZW5SZXF1ZXN0PiBUb2tlblJlcXVlc3Q6OnRyeUNyZWF0ZShjb25zdCBDU3RyaW5nJiBw
aW4sIGNvbnN0IENyeXB0b0tleUVDJiBwZWVyS2V5KQoreworICAgIC8vIFRoZSBmb2xsb3dpbmcg
aW1wbGVtZW50cyBTZWN0aW9uIDUuNS40IEdldHRpbmcgc2hhcmVkU2VjcmV0IGZyb20gQXV0aGVu
dGljYXRvci4KKyAgICAvLyBodHRwczovL2ZpZG9hbGxpYW5jZS5vcmcvc3BlY3MvZmlkby12Mi4w
LXBzLTIwMTkwMTMwL2ZpZG8tY2xpZW50LXRvLWF1dGhlbnRpY2F0b3ItcHJvdG9jb2wtdjIuMC1w
cy0yMDE5MDEzMC5odG1sI2dldHRpbmdTaGFyZWRTZWNyZXQKKyAgICAvLyAxLiBHZW5lcmF0ZSBh
IFAyNTYga2V5IHBhaXIuCisgICAgYXV0byBrZXlQYWlyUmVzdWx0ID0gQ3J5cHRvS2V5RUM6Omdl
bmVyYXRlUGFpcihDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpFQ0RILCAiUC0yNTYiLCB0cnVl
LCBDcnlwdG9LZXlVc2FnZURlcml2ZUJpdHMpOworICAgIEFTU0VSVCgha2V5UGFpclJlc3VsdC5o
YXNFeGNlcHRpb24oKSk7CisgICAgYXV0byBrZXlQYWlyID0ga2V5UGFpclJlc3VsdC5yZWxlYXNl
UmV0dXJuVmFsdWUoKTsKKworICAgIC8vIDIuIFVzZSBFQ0RIIHRvIGNvbXB1dGUgdGhlIHNoYXJl
ZCBBRVMtQ0JDIGtleS4KKyAgICBhdXRvIHNoYXJlZEtleVJlc3VsdCA9IENyeXB0b0FsZ29yaXRo
bUVDREg6OnBsYXRmb3JtRGVyaXZlQml0cyhkb3duY2FzdDxDcnlwdG9LZXlFQz4oKmtleVBhaXIu
cHJpdmF0ZUtleSksIHBlZXJLZXkpOworICAgIGlmICghc2hhcmVkS2V5UmVzdWx0KQorICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIGF1dG8gc2hhcmVkS2V5ID0gQ3J5cHRvS2V5QUVT
OjppbXBvcnRSYXcoQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6QUVTX0NCQywgV1RGTW92ZSgq
c2hhcmVkS2V5UmVzdWx0KSwgdHJ1ZSwgQ3J5cHRvS2V5VXNhZ2VFbmNyeXB0IHwgQ3J5cHRvS2V5
VXNhZ2VEZWNyeXB0KTsKKyAgICBBU1NFUlQoc2hhcmVkS2V5KTsKKworICAgIC8vIFRoZSBmb2xs
b3dpbmcgZW5jb2RlcyB0aGUgcHVibGljIGtleSBvZiB0aGUgYWJvdmUga2V5IHBhaXIgaW50byBD
T1NFIGZvcm1hdC4KKyAgICBhdXRvIHJhd1B1YmxpY0tleVJlc3VsdCA9IGRvd25jYXN0PENyeXB0
b0tleUVDPigqa2V5UGFpci5wdWJsaWNLZXkpLmV4cG9ydFJhdygpOworICAgIEFTU0VSVCghcmF3
UHVibGljS2V5UmVzdWx0Lmhhc0V4Y2VwdGlvbigpKTsKKyAgICBhdXRvIGNvc2VLZXkgPSBlbmNv
ZGVDT1NFUHVibGljS2V5KHJhd1B1YmxpY0tleVJlc3VsdC5yZXR1cm5WYWx1ZSgpKTsKKworICAg
IC8vIFRoZSBmb2xsb3dpbmcgY2FsY3VsYXRlcyBhIFNIQS0yNTYgZGlnZXN0IG9mIHRoZSBQSU4s
IGFuZCBzaHJpbmsgdG8gdGhlIGxlZnQgMTYgYnl0ZXMuCisgICAgYXV0byBjcnlwdG8gPSBQQUw6
OkNyeXB0b0RpZ2VzdDo6Y3JlYXRlKFBBTDo6Q3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8y
NTYpOworICAgIGNyeXB0by0+YWRkQnl0ZXMocGluLmRhdGEoKSwgcGluLmxlbmd0aCgpKTsKKyAg
ICBhdXRvIHBpbkhhc2ggPSBjcnlwdG8tPmNvbXB1dGVIYXNoKCk7CisgICAgcGluSGFzaC5zaHJp
bmsoMTYpOworCisgICAgcmV0dXJuIFRva2VuUmVxdWVzdChzaGFyZWRLZXkucmVsZWFzZU5vbk51
bGwoKSwgV1RGTW92ZShjb3NlS2V5KSwgV1RGTW92ZShwaW5IYXNoKSk7Cit9CisKK1Rva2VuUmVx
dWVzdDo6VG9rZW5SZXF1ZXN0KFJlZjxXZWJDb3JlOjpDcnlwdG9LZXlBRVM+JiYgc2hhcmVkS2V5
LCBjYm9yOjpDQk9SVmFsdWU6Ok1hcFZhbHVlJiYgY29zZUtleSwgVmVjdG9yPHVpbnQ4X3Q+JiYg
cGluSGFzaCkKKyAgICA6IG1fc2hhcmVkS2V5KFdURk1vdmUoc2hhcmVkS2V5KSkKKyAgICAsIG1f
Y29zZUtleShXVEZNb3ZlKGNvc2VLZXkpKQorICAgICwgbV9waW5IYXNoKFdURk1vdmUocGluSGFz
aCkpCit7Cit9CisKK2NvbnN0IENyeXB0b0tleUFFUyYgVG9rZW5SZXF1ZXN0OjpzaGFyZWRLZXko
KSBjb25zdAoreworICAgIHJldHVybiBtX3NoYXJlZEtleTsKK30KKworVmVjdG9yPHVpbnQ4X3Q+
IGVuY29kZUFzQ0JPUihjb25zdCBUb2tlblJlcXVlc3QmIHJlcXVlc3QpCit7CisgICAgYXV0byBy
ZXN1bHQgPSBDcnlwdG9BbGdvcml0aG1BRVNfQ0JDOjpwbGF0Zm9ybUVuY3J5cHQoeyB9LCByZXF1
ZXN0LnNoYXJlZEtleSgpLCByZXF1ZXN0Lm1fcGluSGFzaCk7CisgICAgQVNTRVJUKCFyZXN1bHQu
aGFzRXhjZXB0aW9uKCkpOworCisgICAgcmV0dXJuIGVuY29kZVBpbkNvbW1hbmQoU3ViY29tbWFu
ZDo6a0dldFBpblRva2VuLCBbY29zZUtleSA9IFdURk1vdmUocmVxdWVzdC5tX2Nvc2VLZXkpLCBl
bmNyeXB0ZWRQaW4gPSByZXN1bHQucmVsZWFzZVJldHVyblZhbHVlKCldIChDQk9SVmFsdWU6Ok1h
cFZhbHVlKiBtYXApIG11dGFibGUgeworICAgICAgICBtYXAtPmVtcGxhY2Uoc3RhdGljX2Nhc3Q8
aW50NjRfdD4oUmVxdWVzdEtleTo6a0tleUFncmVlbWVudCksIFdURk1vdmUoY29zZUtleSkpOwor
ICAgICAgICBtYXAtPmVtcGxhY2Uoc3RhdGljX2Nhc3Q8aW50NjRfdD4oUmVxdWVzdEtleTo6a1Bp
bkhhc2hFbmMpLCBXVEZNb3ZlKGVuY3J5cHRlZFBpbikpOworICAgIH0pOworfQorCit9IC8vIG5h
bWVzcGFjZSBwaW4KK30gLy8gbmFtZXNwYWNlIGZpZG8KKworI2VuZGlmIC8vIEVOQUJMRShXRUJf
QVVUSE4pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL2ZpZG8v
UGluLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL2ZpZG8vUGluLmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uMzU3NDNhMDAzMDdkY2ZiZDllNDg4ZDk1ZDBiZTBiMjc0ODBlNTk2YgotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vZmlkby9QaW4uaApAQCAt
MCwwICsxLDE4NyBAQAorLy8gQ29weXJpZ2h0IDIwMTkgVGhlIENocm9taXVtIEF1dGhvcnMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisvLyBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorLy8KKy8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorLy8gbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorLy8g
bWV0OgorLy8KKy8vICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKy8vIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKy8vICAgICogUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorLy8gY29weXJpZ2h0IG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
cgorLy8gaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZQorLy8gZGlzdHJpYnV0aW9uLgorLy8gICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9m
IEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisvLyBjb250cmlidXRvcnMgbWF5IGJl
IHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorLy8gdGhp
cyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKy8v
CisvLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBB
TkQgQ09OVFJJQlVUT1JTCisvLyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRFRCBUTywgVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisvLyBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlS
SUdIVAorLy8gT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsCisvLyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKy8vIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWQorLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisvLyBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorCisvLyBUaGlzIGZpbGUgY29udGFpbnMgc3RydWN0dXJlcyB0byBpbXBsZW1lbnQgdGhlIENU
QVAyIFBJTiBwcm90b2NvbCwgdmVyc2lvbgorLy8gb25lLiBTZWUKKy8vIGh0dHBzOi8vZmlkb2Fs
bGlhbmNlLm9yZy9zcGVjcy9maWRvLXYyLjAtcmQtMjAxODA3MDIvZmlkby1jbGllbnQtdG8tYXV0
aGVudGljYXRvci1wcm90b2NvbC12Mi4wLXJkLTIwMTgwNzAyLmh0bWwjYXV0aGVudGljYXRvckNs
aWVudFBJTgorCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShXRUJfQVVUSE4pCisKKyNpbmNs
dWRlICJDQk9SVmFsdWUuaCIKKyNpbmNsdWRlICJGaWRvQ29uc3RhbnRzLmgiCisKK25hbWVzcGFj
ZSBXZWJDb3JlIHsKK2NsYXNzIENyeXB0b0tleUFFUzsKK2NsYXNzIENyeXB0b0tleUVDOworY2xh
c3MgQ3J5cHRvS2V5SE1BQzsKK30KKworbmFtZXNwYWNlIGZpZG8geworbmFtZXNwYWNlIHBpbiB7
CisKKy8vIFN1YmNvbW1hbmQgZW51bWVyYXRlcyB0aGUgc3ViY29tbWFuZHMgdG8gdGhlIG1haW4g
fGF1dGhlbnRpY2F0b3JDbGllbnRQSU58CisvLyBjb21tYW5kLiBTZWUKKy8vIGh0dHBzOi8vZmlk
b2FsbGlhbmNlLm9yZy9zcGVjcy9maWRvLXYyLjAtcmQtMjAxODA3MDIvZmlkby1jbGllbnQtdG8t
YXV0aGVudGljYXRvci1wcm90b2NvbC12Mi4wLXJkLTIwMTgwNzAyLmh0bWwjYXV0aGVudGljYXRv
ckNsaWVudFBJTgorZW51bSBjbGFzcyBTdWJjb21tYW5kIDogdWludDhfdCB7CisgICAga0dldFJl
dHJpZXMgPSAweDAxLAorICAgIGtHZXRLZXlBZ3JlZW1lbnQgPSAweDAyLAorICAgIGtTZXRQaW4g
PSAweDAzLAorICAgIGtDaGFuZ2VQaW4gPSAweDA0LAorICAgIGtHZXRQaW5Ub2tlbiA9IDB4MDUs
Cit9OworCisvLyBSZXF1ZXN0S2V5IGVudW1lcmF0ZXMgdGhlIGtleXMgaW4gdGhlIHRvcC1sZXZl
bCBDQk9SIG1hcCBmb3IgYWxsIFBJTgorLy8gY29tbWFuZHMuCitlbnVtIGNsYXNzIFJlcXVlc3RL
ZXkgOiB1aW50OF90IHsKKyAgICBrUHJvdG9jb2wgPSAxLAorICAgIGtTdWJjb21tYW5kID0gMiwK
KyAgICBrS2V5QWdyZWVtZW50ID0gMywKKyAgICBrUGluQXV0aCA9IDQsCisgICAga05ld1BpbkVu
YyA9IDUsCisgICAga1Bpbkhhc2hFbmMgPSA2LAorfTsKKworLy8gUmVzcG9uc2VLZXkgZW51bWVy
YXRlcyB0aGUga2V5cyBpbiB0aGUgdG9wLWxldmVsIENCT1IgbWFwIGZvciBhbGwgUElOCisvLyBy
ZXNwb25zZXMuCitlbnVtIGNsYXNzIFJlc3BvbnNlS2V5IDogdWludDhfdCB7CisgICAga0tleUFn
cmVlbWVudCA9IDEsCisgICAga1BpblRva2VuID0gMiwKKyAgICBrUmV0cmllcyA9IDMsCit9Owor
CisvLyBrUHJvdG9jb2xWZXJzaW9uIGlzIHRoZSB2ZXJzaW9uIG9mIHRoZSBQSU4gcHJvdG9jb2wg
dGhhdCB0aGlzIGNvZGUKKy8vIGltcGxlbWVudHMuCitjb25zdGV4cHIgaW50IGtQcm90b2NvbFZl
cnNpb24gPSAxOworCisvLyBlbmNvZGVDT1NFUHVibGljS2V5IHRha2VzIGEgcmF3IEVDREgyNTYg
cHVibGljIGtleSBhbmQgcmV0dXJucyBpdCBhcyBhIENPU0Ugc3RydWN0dXJlLgorV0VCQ09SRV9F
WFBPUlQgY2Jvcjo6Q0JPUlZhbHVlOjpNYXBWYWx1ZSBlbmNvZGVDT1NFUHVibGljS2V5KGNvbnN0
IFZlY3Rvcjx1aW50OF90PiYga2V5KTsKKworLy8gZW5jb2RlUmF3UHVibGljS2V5IHRha2VzIFgg
JiBZIGFuZCByZXR1cm5zIHRoZW0gYXMgYSAweDA0IHx8IFggfHwgWSBieXRlIGFycmF5LgorV0VC
Q09SRV9FWFBPUlQgVmVjdG9yPHVpbnQ4X3Q+IGVuY29kZVJhd1B1YmxpY0tleShjb25zdCBWZWN0
b3I8dWludDhfdD4mIFgsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgWSk7CisKKy8vIHZhbGlkYXRl
QW5kQ29udmVydFRvVVRGOCBjb252ZXJ0IHRoZSBpbnB1dCB0byBhIFVURjggQ1N0cmluZyBpZiBp
dCBpcyBhIHN5bnRhY3RpY2FsbHkgdmFsaWQgUElOLgorV0VCQ09SRV9FWFBPUlQgT3B0aW9uYWw8
Q1N0cmluZz4gdmFsaWRhdGVBbmRDb252ZXJ0VG9VVEY4KGNvbnN0IFN0cmluZyYgcGluKTsKKwor
Ly8ga01pbkJ5dGVzIGlzIHRoZSBtaW5pbXVtIG51bWJlciBvZiAqYnl0ZXMqIG9mIFBJTiBkYXRh
IHRoYXQgYSBDVEFQMiBkZXZpY2UKKy8vIHdpbGwgYWNjZXB0LiBTaW5jZSB0aGUgUElOIGlzIFVU
Ri04IGVuY29kZWQsIHRoaXMgY291bGQgYmUgYSBzaW5nbGUgY29kZQorLy8gcG9pbnQuIEhvd2V2
ZXIsIHRoZSBwbGF0Zm9ybSBpcyBzdXBwb3NlZCB0byBhZGRpdGlvbmFsbHkgZW5mb3JjZSBhIDQK
Ky8vICpjaGFyYWN0ZXIqIG1pbmltdW0KK2NvbnN0ZXhwciBzaXplX3Qga01pbkJ5dGVzID0gNDsK
Ky8vIGtNYXhCeXRlcyBpcyB0aGUgbWF4aW11bSBudW1iZXIgb2YgYnl0ZXMgb2YgUElOIGRhdGEg
dGhhdCBhIENUQVAyIGRldmljZSB3aWxsCisvLyBhY2NlcHQuCitjb25zdGV4cHIgc2l6ZV90IGtN
YXhCeXRlcyA9IDYzOworCisvLyBSZXRyaWVzUmVxdWVzdCBhc2tzIGFuIGF1dGhlbnRpY2F0b3Ig
Zm9yIHRoZSBudW1iZXIgb2YgcmVtYWluaW5nIFBJTiBhdHRlbXB0cworLy8gYmVmb3JlIHRoZSBk
ZXZpY2UgaXMgbG9ja2VkLgorc3RydWN0IFJldHJpZXNSZXF1ZXN0IHsKK307CisKKy8vIFJldHJp
ZXNSZXNwb25zZSByZWZsZWN0cyBhbiBhdXRoZW50aWNhdG9yJ3MgcmVzcG9uc2UgdG8gYSB8UmV0
cmllc1JlcXVlc3R8Lgorc3RydWN0IFJldHJpZXNSZXNwb25zZSB7CisgICAgV0VCQ09SRV9FWFBP
UlQgc3RhdGljIE9wdGlvbmFsPFJldHJpZXNSZXNwb25zZT4gcGFyc2UoY29uc3QgVmVjdG9yPHVp
bnQ4X3Q+Jik7CisKKyAgICAvLyByZXRyaWVzIGlzIHRoZSBudW1iZXIgb2YgUElOIGF0dGVtcHRz
IHJlbWFpbmluZyBiZWZvcmUgdGhlIGF1dGhlbnRpY2F0b3IKKyAgICAvLyBsb2Nrcy4KKyAgICBp
bnQgcmV0cmllczsKKworcHJpdmF0ZToKKyAgICBSZXRyaWVzUmVzcG9uc2UoKTsKK307CisKKy8v
IEtleUFncmVlbWVudFJlcXVlc3QgYXNrcyBhbiBhdXRoZW50aWNhdG9yIGZvciBhbiBlcGhlbWVy
YWwgRUNESCBrZXkgZm9yCisvLyBlbmNyeXB0aW5nIFBJTiBtYXRlcmlhbCBpbiBmdXR1cmUgcmVx
dWVzdHMuCitzdHJ1Y3QgS2V5QWdyZWVtZW50UmVxdWVzdCB7Cit9OworCisvLyBLZXlBZ3JlZW1l
bnRSZXNwb25zZSByZWZsZWN0cyBhbiBhdXRoZW50aWNhdG9yJ3MgcmVzcG9uc2UgdG8gYQorLy8g
fEtleUFncmVlbWVudFJlcXVlc3R8IGFuZCBpcyBhbHNvIHVzZWQgYXMgcmVwcmVzZW50YXRpb24g
b2YgdGhlCisvLyBhdXRoZW50aWNhdG9yJ3MgZXBoZW1lcmFsIGtleS4KK3N0cnVjdCBLZXlBZ3Jl
ZW1lbnRSZXNwb25zZSB7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIE9wdGlvbmFsPEtleUFn
cmVlbWVudFJlc3BvbnNlPiBwYXJzZShjb25zdCBWZWN0b3I8dWludDhfdD4mKTsKKyAgICBXRUJD
T1JFX0VYUE9SVCBzdGF0aWMgT3B0aW9uYWw8S2V5QWdyZWVtZW50UmVzcG9uc2U+IHBhcnNlRnJv
bUNPU0UoY29uc3QgY2Jvcjo6Q0JPUlZhbHVlOjpNYXBWYWx1ZSYpOworCisgICAgUmVmPFdlYkNv
cmU6OkNyeXB0b0tleUVDPiBwZWVyS2V5OworCitwcml2YXRlOgorICAgIGV4cGxpY2l0IEtleUFn
cmVlbWVudFJlc3BvbnNlKFJlZjxXZWJDb3JlOjpDcnlwdG9LZXlFQz4mJik7Cit9OworCisvLyBU
b2tlblJlcXVlc3QgcmVxdWVzdHMgYSBwaW4tdG9rZW4gZnJvbSBhbiBhdXRoZW50aWNhdG9yLiBU
aGVzZSB0b2tlbnMgY2FuIGJlCisvLyB1c2VkIHRvIHNob3cgdXNlci12ZXJpZmljYXRpb24gaW4g
b3RoZXIgb3BlcmF0aW9ucywgZS5nLiB3aGVuIGdldHRpbmcgYW4KKy8vIGFzc2VydGlvbi4KK2Ns
YXNzIFRva2VuUmVxdWVzdCB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoVG9rZW5SZXF1ZXN0
KTsKK3B1YmxpYzoKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgT3B0aW9uYWw8VG9rZW5SZXF1
ZXN0PiB0cnlDcmVhdGUoY29uc3QgQ1N0cmluZyYgcGluLCBjb25zdCBXZWJDb3JlOjpDcnlwdG9L
ZXlFQyYpOworICAgIFRva2VuUmVxdWVzdChUb2tlblJlcXVlc3QmJikgPSBkZWZhdWx0OworCisg
ICAgLy8gc2hhcmVkS2V5IHJldHVybnMgdGhlIHNoYXJlZCBFQ0RIIGtleSB0aGF0IHdhcyB1c2Vk
IHRvIGVuY3J5cHQgdGhlIFBJTi4KKyAgICAvLyBUaGlzIGlzIG5lZWRlZCB0byBkZWNyeXB0IHRo
ZSByZXNwb25zZS4KKyAgICBjb25zdCBXZWJDb3JlOjpDcnlwdG9LZXlBRVMmIHNoYXJlZEtleSgp
IGNvbnN0OworCisgICAgZnJpZW5kIFZlY3Rvcjx1aW50OF90PiBlbmNvZGVBc0NCT1IoY29uc3Qg
VG9rZW5SZXF1ZXN0Jik7CisKK3ByaXZhdGU6CisgICAgVG9rZW5SZXF1ZXN0KFJlZjxXZWJDb3Jl
OjpDcnlwdG9LZXlBRVM+JiYgc2hhcmVkS2V5LCBjYm9yOjpDQk9SVmFsdWU6Ok1hcFZhbHVlJiYg
Y29zZUtleSwgVmVjdG9yPHVpbnQ4X3Q+JiYgcGluSGFzaCk7CisKKyAgICBSZWY8V2ViQ29yZTo6
Q3J5cHRvS2V5QUVTPiBtX3NoYXJlZEtleTsKKyAgICBtdXRhYmxlIGNib3I6OkNCT1JWYWx1ZTo6
TWFwVmFsdWUgbV9jb3NlS2V5OworICAgIFZlY3Rvcjx1aW50OF90PiBtX3Bpbkhhc2g7IC8vIE9u
bHkgdGhlIGxlZnQgMTYgYnl0ZXMgYXJlIGtlcHQuCit9OworCisvLyBUb2tlblJlc3BvbnNlIHJl
cHJlc2VudHMgdGhlIHJlc3BvbnNlIHRvIGEgcGluLXRva2VuIHJlcXVlc3QuIEluIG9yZGVyIHRv
CisvLyBkZWNyeXB0IGEgcmVzcG9uc2UsIHRoZSBzaGFyZWQga2V5IGZyb20gdGhlIHJlcXVlc3Qg
aXMgbmVlZGVkLiBPbmNlIGEgcGluLQorLy8gdG9rZW4gaGFzIGJlZW4gZGVjcnlwdGVkLCBpdCBj
YW4gYmUgdXNlZCB0byBjYWxjdWxhdGUgdGhlIHBpbkF1dGggcGFyYW1ldGVycworLy8gbmVlZGVk
IHRvIHNob3cgdXNlci12ZXJpZmljYXRpb24gaW4gZnV0dXJlIG9wZXJhdGlvbnMuCitjbGFzcyBU
b2tlblJlc3BvbnNlIHsKK3B1YmxpYzoKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgT3B0aW9u
YWw8VG9rZW5SZXNwb25zZT4gcGFyc2UoY29uc3QgV2ViQ29yZTo6Q3J5cHRvS2V5QUVTJiBzaGFy
ZWRLZXksIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgaW5CdWZmZXIpOworCisgICAgLy8gcGluQXV0
aCByZXR1cm5zIGEgcGluQXV0aCBwYXJhbWV0ZXIgZm9yIGEgcmVxdWVzdCB0aGF0IHdpbGwgdXNl
IHRoZSBnaXZlbgorICAgIC8vIGNsaWVudC1kYXRhIGhhc2guCisgICAgV0VCQ09SRV9FWFBPUlQg
VmVjdG9yPHVpbnQ4X3Q+IHBpbkF1dGgoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBjbGllbnREYXRh
SGFzaCkgY29uc3Q7CisKKyAgICBXRUJDT1JFX0VYUE9SVCBjb25zdCBWZWN0b3I8dWludDhfdD4m
IHRva2VuKCkgY29uc3Q7CisKK3ByaXZhdGU6CisgICAgZXhwbGljaXQgVG9rZW5SZXNwb25zZShS
ZWY8V2ViQ29yZTo6Q3J5cHRvS2V5SE1BQz4mJik7CisKKyAgICBSZWY8V2ViQ29yZTo6Q3J5cHRv
S2V5SE1BQz4gbV90b2tlbjsKK307CisKK1dFQkNPUkVfRVhQT1JUIFZlY3Rvcjx1aW50OF90PiBl
bmNvZGVBc0NCT1IoY29uc3QgUmV0cmllc1JlcXVlc3QmKTsKK1dFQkNPUkVfRVhQT1JUIFZlY3Rv
cjx1aW50OF90PiBlbmNvZGVBc0NCT1IoY29uc3QgS2V5QWdyZWVtZW50UmVxdWVzdCYpOworV0VC
Q09SRV9FWFBPUlQgVmVjdG9yPHVpbnQ4X3Q+IGVuY29kZUFzQ0JPUihjb25zdCBUb2tlblJlcXVl
c3QmKTsKKworfSAvLyBuYW1lc3BhY2UgcGluCit9IC8vIG5hbWVzcGFjZSBmaWRvCisKKyNlbmRp
ZiAvLyBFTkFCTEUoV0VCX0FVVEhOKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvU291cmNl
cy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAppbmRleCBlN2ExOGIzMDg3YzA1Mjhi
ZTU5ZWI2ODYwZTg5M2NhZjBiNzg3MDdiLi4wYjY1MTNhN2NlODEzYmU1OWE5ODI4OGVhZGUxNGQy
ZTQ2ZjBiYjIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dApAQCAtMjg2LDYgKzI4Niw3IEBAIE1vZHVsZXMvd2Vi
YXV0aG4vZmlkby9GaWRvQ29uc3RhbnRzLmNwcAogTW9kdWxlcy93ZWJhdXRobi9maWRvL0ZpZG9I
aWRNZXNzYWdlLmNwcAogTW9kdWxlcy93ZWJhdXRobi9maWRvL0ZpZG9IaWRQYWNrZXQuY3BwCiBN
b2R1bGVzL3dlYmF1dGhuL2ZpZG8vRmlkb1BhcnNpbmdVdGlscy5jcHAKK01vZHVsZXMvd2ViYXV0
aG4vZmlkby9QaW4uY3BwCiBNb2R1bGVzL3dlYmF1dGhuL2ZpZG8vVTJmQ29tbWFuZENvbnN0cnVj
dG9yLmNwcAogTW9kdWxlcy93ZWJhdXRobi9maWRvL1UyZlJlc3BvbnNlQ29udmVydGVyLmNwcAog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
aW5kZXggZmZkNWU1NzY0NjUwYWVmMzYwNWVhMGQ0ZjkxNzMwYTEyMTdkZGQzYi4uM2Q4YTQ3ZDRi
NTU1NWNjMmQ0MmFjMDVkZTY2MWQ5ODA0Yzk5MmRkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTc1OSw5ICsxNzU5LDEwIEBA
CiAJCTU3MTU2MTE0MjM0QzdGRDYwMDhGQzdBQiAvKiBKU01vY2tXZWJBdXRoZW50aWNhdGlvbkNv
bmZpZ3VyYXRpb24uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNTcxNTYxMTEyMzRDN0ZCQzAwOEZDN0FCIC8qIEpTTW9ja1dlYkF1dGhlbnRpY2F0aW9u
Q29uZmlndXJhdGlvbi5jcHAgKi87IH07CiAJCTU3MTU2MTE1MjM0QzdGREMwMDhGQzdBQiAvKiBK
U01vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3MTU2MTEwMjM0QzdGQkMwMDhGQzdBQiAvKiBK
U01vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24uaCAqLzsgfTsKIAkJNTcxRjIxODkx
REE1N0M1NDAwNUM5RUZEIC8qIEpTU3VidGxlQ3J5cHRvLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NzFGMjE4ODFEQTU3QzU0MDA1QzlFRkQgLyogSlNT
dWJ0bGVDcnlwdG8uaCAqLzsgfTsKLQkJNTcyMDkzRDMxRERDRUI5QTAwMzEwQUIwIC8qIENyeXB0
b0FsZ29yaXRobUFlc0NiY0NmYlBhcmFtcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNTcyMDkzRDIxRERDRUI5QTAwMzEwQUIwIC8qIENyeXB0b0FsZ29y
aXRobUFlc0NiY0NmYlBhcmFtcy5oICovOyB9OworCQk1NzIwOTNEMzFERENFQjlBMDAzMTBBQjAg
LyogQ3J5cHRvQWxnb3JpdGhtQWVzQ2JjQ2ZiUGFyYW1zLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NzIwOTNEMjFERENFQjlBMDAzMTBBQjAgLyogQ3J5
cHRvQWxnb3JpdGhtQWVzQ2JjQ2ZiUGFyYW1zLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTcyMUE5ODcxRUNFNTNCMTAwODEyOTVBIC8qIENyeXB0
b0RpZ2VzdEFsZ29yaXRobS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNTcyMUE5ODYxRUNFNTNCMTAwODEyOTVBIC8qIENyeXB0b0RpZ2VzdEFsZ29yaXRo
bS5oICovOyB9OwogCQk1NzIxQTk4QjFFQ0U1NzA0MDA4MTI5NUEgLyogQ3J5cHRvQWxnb3JpdGht
UnNhUHNzUGFyYW1zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA1NzIxQTk4ODFFQ0U1NzA0MDA4MTI5NUEgLyogQ3J5cHRvQWxnb3JpdGhtUnNhUHNzUGFy
YW1zLmggKi87IH07CisJCTU3MjU3NkQ2MjNBODg3MkIwMDkwOTU0MCAvKiBDcnlwdG9LZXlGb3Jt
YXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDOUFD
QUM5MUY0MEI5NkEwMEYzQUEwOSAvKiBDcnlwdG9LZXlGb3JtYXQuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1NzJBN0YyMTFDNkU1NzE5MDA5QzYx
NDkgLyogU2ltdWxhdGVkQ2xpY2suaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDU3MkE3RjIwMUM2RTU3MTkwMDlDNjE0OSAvKiBTaW11bGF0ZWRDbGljay5o
ICovOyB9OwogCQk1NzJCNDAxRjIxNzU3QTY0MDAwQUQ0M0UgLyogRGV2aWNlUmVxdWVzdENvbnZl
cnRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTcy
QjQwMUQyMTc1N0E2NDAwMEFENDNFIC8qIERldmljZVJlcXVlc3RDb252ZXJ0ZXIuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1NzJCNDAyQzIxNzY5
MDIwMDAwQUQ0M0UgLyogSlNVc2VyVmVyaWZpY2F0aW9uUmVxdWlyZW1lbnQuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3MkI0MDJBMjE3NjkwMUYwMDBB
RDQzRSAvKiBKU1VzZXJWZXJpZmljYXRpb25SZXF1aXJlbWVudC5oICovOyB9OwpAQCAtMTc4OCwx
OCArMTc4OSwxOSBAQAogCQk1NzMwM0MyQzIwMDlCNEE4MDAzNTU5NjUgLyogQXV0aGVudGljYXRv
ckFzc2VydGlvblJlc3BvbnNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA1NzMwM0MyNzIwMDlCMkZDMDAzNTU5NjUgLyogQXV0aGVudGljYXRvckFzc2Vy
dGlvblJlc3BvbnNlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJNTczMDNDMkYyMDA5QjdFMTAwMzU1OTY1IC8qIEpTQXV0aGVudGljYXRvckFzc2Vy
dGlvblJlc3BvbnNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA1NzMwM0MyRDIwMDlCN0Q5MDAzNTU5NjUgLyogSlNBdXRoZW50aWNhdG9yQXNzZXJ0aW9u
UmVzcG9uc2UuaCAqLzsgfTsKIAkJNTczMDNDNDYyMDEwNUQyRjAwMzU1OTY1IC8qIEF1dGhlbnRp
Y2F0b3JDb29yZGluYXRvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNTczMDNDNDMyMDEwNUIzRDAwMzU1OTY1IC8qIEF1dGhlbnRpY2F0b3JDb29yZGlu
YXRvci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0J
CTU3MzQ4OTM5MURBQzZCNkUwMERDMDY2NyAvKiBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NzM0ODkzODFE
QUM2QjZEMDBEQzA2NjcgLyogQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycy5oICovOyB9OworCQk1
NzM0ODkzOTFEQUM2QjZFMDBEQzA2NjcgLyogQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycy5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTczNDg5MzgxREFD
NkI2RDAwREMwNjY3IC8qIENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnMuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1NzM5RTEyRjFEQUM3Rjc4MDBF
MTQzODMgLyogSlNDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NzM5RTEyRTFEQUM3Rjc4MDBFMTQzODMgLyog
SlNDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzLmggKi87IH07CiAJCTU3M0Y1MzMyMjE2ODA2RTEw
MDQ1NTg3QSAvKiBGaWRvSGlkTWVzc2FnZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNTdCQUYyOEEyMTY3RDMwMzAwOEU5NTRFIC8qIEZpZG9IaWRNZXNz
YWdlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
NTczRjUzMzcyMTY4MEQxNTAwNDU1ODdBIC8qIEZpZG9QYXJzaW5nVXRpbHMuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3M0Y1MzM1MjE2ODBEMTQwMDQ1
NTg3QSAvKiBGaWRvUGFyc2luZ1V0aWxzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTc0RjU1RTEyMDRGM0IyMzAwMjk0OEM2IC8qIFdlYkF1dGhl
bnRpY2F0aW9uQ29uc3RhbnRzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA1NzRGNTVEQzIwNEYzNzMyMDAyOTQ4QzYgLyogV2ViQXV0aGVudGljYXRpb25D
b25zdGFudHMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwotCQk1NzUwQTk3NTFFNjhEMDAwMDA3MDVDNEEgLyogQ3J5cHRvS2V5RUMuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3NTBBOTczMUU2OEQwMDAwMDcw
NUM0QSAvKiBDcnlwdG9LZXlFQy5oICovOyB9OworCQk1NzUwQTk3NTFFNjhEMDAwMDA3MDVDNEEg
LyogQ3J5cHRvS2V5RUMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDU3NTBBOTczMUU2OEQwMDAwMDcwNUM0QSAvKiBDcnlwdG9LZXlFQy5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTU3NTBBOTdFMUU2QTEz
RUYwMDcwNUM0QSAvKiBDcnlwdG9BbGdvcml0aG1FY0tleVBhcmFtcy5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTc1MEE5N0QxRTZBMTNFRjAwNzA1QzRB
IC8qIENyeXB0b0FsZ29yaXRobUVjS2V5UGFyYW1zLmggKi87IH07CiAJCTU3NTBBOTgyMUU2QTE1
MDgwMDcwNUM0QSAvKiBKU0VjS2V5UGFyYW1zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA1NzUwQTk4MDFFNkExNTA4MDA3MDVDNEEgLyogSlNFY0tleVBh
cmFtcy5oICovOyB9OwotCQk1NzUwQTk4NzFFNkEyMTY4MDA3MDVDNEEgLyogQ3J5cHRvQWxnb3Jp
dGhtRUNESC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NTc1MEE5ODUxRTZBMjE2ODAwNzA1QzRBIC8qIENyeXB0b0FsZ29yaXRobUVDREguaCAqLzsgfTsK
KwkJNTc1MEE5ODcxRTZBMjE2ODAwNzA1QzRBIC8qIENyeXB0b0FsZ29yaXRobUVDREguaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3NTBBOTg1MUU2QTIx
NjgwMDcwNUM0QSAvKiBDcnlwdG9BbGdvcml0aG1FQ0RILmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTc1NDcxOUYxRUNFNjI4MzAwREQ2M0IyIC8q
IEpTUnNhUHNzUGFyYW1zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA1NzU0NzE5OTFFQ0U1RDJBMDBERDYzQjIgLyogSlNSc2FQc3NQYXJhbXMuaCAqLzsg
fTsKIAkJNTc1ODU5NjEyMzlGMTI0RDAwQzc0NTcyIC8qIEpTQXV0aGVudGljYXRpb25FeHRlbnNp
b25zQ2xpZW50T3V0cHV0cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNTc1ODU5NUUyMzlGMTE3MzAwQzc0NTcyIC8qIEpTQXV0aGVudGljYXRpb25FeHRl
bnNpb25zQ2xpZW50T3V0cHV0cy5oICovOyB9OwogCQk1NzU4NTk2QzIzOUYzMjFDMDBDNzQ1NzIg
LyogQXV0aGVudGljYXRpb25FeHRlbnNpb25zQ2xpZW50T3V0cHV0cy5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTc1ODU5NjUyMzlGMTRDQzAwQzc0NTcy
IC8qIEF1dGhlbnRpY2F0aW9uRXh0ZW5zaW9uc0NsaWVudE91dHB1dHMuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk1NzU4NTk3QzIzQTFGQ0YzMDBD
NzQ1NzIgLyogUGluLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA1NzU4NTk3OTIzQTFGQ0YyMDBDNzQ1NzIgLyogUGluLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTc2MDgyNzIyMDIxNUE1NTAwMTE2Njc4
IC8qIEF1dGhlbnRpY2F0b3JDb29yZGluYXRvckNsaWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTc2MDgyNzAyMDIxNTEzRjAwMTE2Njc4IC8qIEF1
dGhlbnRpY2F0b3JDb29yZGluYXRvckNsaWVudC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCTU3NjgxNDJBMUU2Rjk5QzEwMEU3Nzc1NCAvKiBDcnlw
dG9BbGdvcml0aG1FY2RoS2V5RGVyaXZlUGFyYW1zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NzY4MTQyOTFFNkY5OUMxMDBFNzc3NTQgLyogQ3J5cHRv
QWxnb3JpdGhtRWNkaEtleURlcml2ZVBhcmFtcy5oICovOyB9OwogCQk1NzY4MTQ0MTFFNzA5RkE0
MDBFNzc3NTQgLyogSlNFY2RoS2V5RGVyaXZlUGFyYW1zLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NzY4MTQzRTFFNzA5QzM2MDBFNzc3NTQgLyogSlNF
Y2RoS2V5RGVyaXZlUGFyYW1zLmggKi87IH07CkBAIC0xODM1LDggKzE4MzcsOCBAQAogCQk1N0Ux
RTVBRDFFOEREMDlCMDBFRTM3QzkgLyogSlNBZXNDdHJQYXJhbXMuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3RTFFNUFCMUU4REQwOUIwMEVFMzdDOSAv
KiBKU0Flc0N0clBhcmFtcy5oICovOyB9OwogCQk1N0UyMzM1QjFEQzdENUU1MDBGMjhEMDEgLyog
SlNKc29uV2ViS2V5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA1N0UyMzM1QTFEQzdENUU1MDBGMjhEMDEgLyogSlNKc29uV2ViS2V5LmggKi87IH07CiAJ
CTU3RTIzMzVEMURDN0Q2MDgwMEYyOEQwMSAvKiBKU1JzYU90aGVyUHJpbWVzSW5mby5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTdFMjMzNUMxREM3RDYw
ODAwRjI4RDAxIC8qIEpTUnNhT3RoZXJQcmltZXNJbmZvLmggKi87IH07Ci0JCTU3RTIzMzYzMURD
N0RBMjQwMEYyOEQwMSAvKiBSc2FPdGhlclByaW1lc0luZm8uaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3RTIzMzYyMURDN0RBMjQwMEYyOEQwMSAvKiBS
c2FPdGhlclByaW1lc0luZm8uaCAqLzsgfTsKLQkJNTdFMjMzNjUxREM3REIxRjAwRjI4RDAxIC8q
IEpzb25XZWJLZXkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDU3RTIzMzY0MURDN0RCMUYwMEYyOEQwMSAvKiBKc29uV2ViS2V5LmggKi87IH07CisJCTU3
RTIzMzYzMURDN0RBMjQwMEYyOEQwMSAvKiBSc2FPdGhlclByaW1lc0luZm8uaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3RTIzMzYyMURDN0RBMjQwMEYy
OEQwMSAvKiBSc2FPdGhlclByaW1lc0luZm8uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OworCQk1N0UyMzM2NTFEQzdEQjFGMDBGMjhEMDEgLyogSnNvbldl
YktleS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTdF
MjMzNjQxREM3REIxRjAwRjI4RDAxIC8qIEpzb25XZWJLZXkuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1N0UyMzM2NzFEQ0FCMjFDMDBGMjhEMDEg
LyogSlNIbWFjS2V5UGFyYW1zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA1N0UyMzM2NjFEQ0FCMjFDMDBGMjhEMDEgLyogSlNIbWFjS2V5UGFyYW1zLmgg
Ki87IH07CiAJCTU3RTIzMzZFMURDRDQzRkQwMEYyOEQwMSAvKiBDcnlwdG9BbGdvcml0aG1Sc2FI
YXNoZWRJbXBvcnRQYXJhbXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDU3RTIzMzZEMURDRDQzRkQwMEYyOEQwMSAvKiBDcnlwdG9BbGdvcml0aG1Sc2FI
YXNoZWRJbXBvcnRQYXJhbXMuaCAqLzsgfTsKIAkJNTdFMjMzNzExRENENDY4RjAwRjI4RDAxIC8q
IEpTUnNhSGFzaGVkSW1wb3J0UGFyYW1zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA1N0UyMzM3MDFEQ0Q0NjhGMDBGMjhEMDEgLyogSlNSc2FIYXNoZWRJ
bXBvcnRQYXJhbXMuaCAqLzsgfTsKQEAgLTIyOTMsMTIgKzIyOTUsMTIgQEAKIAkJN0M4RTM0Qzcx
RTRBMzNCMDAwNTRDRTIzIC8qIEpTRE9NQ29udmVydFhQYXRoTlNSZXNvbHZlci5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0M4RTM0QUMxRTRBMzM4RTAw
NTRDRTIzIC8qIEpTRE9NQ29udmVydFhQYXRoTlNSZXNvbHZlci5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTdDOTNGMzRBMUFBNkJBNUUwMEE5OEJB
QiAvKiBDb21waWxlZENvbnRlbnRFeHRlbnNpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDOTNGMzQ4MUFBNkJBNUUwMEE5OEJBQiAvKiBDb21waWxl
ZENvbnRlbnRFeHRlbnNpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQk3QzkzRjM0RTFBQTZCRjA3MDBBOThCQUIgLyogQ29udGVudEV4dGVuc2lv
bkNvbXBpbGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA3QzkzRjM0QzFBQTZCRjA3MDBBOThCQUIgLyogQ29udGVudEV4dGVuc2lvbkNvbXBpbGVyLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJN0M5QUNB
OTIxRjNDQzBBQTAwRjNBQTA5IC8qIENyeXB0b0tleUFsZ29yaXRobS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0M5QUNBOEYxRjNDQzBBQTAwRjNBQTA5
IC8qIENyeXB0b0tleUFsZ29yaXRobS5oICovOyB9OwotCQk3QzlBQ0E5ODFGM0NDREFEMDBGM0FB
MDkgLyogQ3J5cHRvQWVzS2V5QWxnb3JpdGhtLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA3QzlBQ0E5NjFGM0NDREFEMDBGM0FBMDkgLyogQ3J5cHRvQWVz
S2V5QWxnb3JpdGhtLmggKi87IH07Ci0JCTdDOUFDQTlDMUYzQ0NERjIwMEYzQUEwOSAvKiBDcnlw
dG9FY0tleUFsZ29yaXRobS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gN0M5QUNBOUExRjNDQ0RGMjAwRjNBQTA5IC8qIENyeXB0b0VjS2V5QWxnb3JpdGht
LmggKi87IH07Ci0JCTdDOUFDQUEwMUYzQ0NFMzAwMEYzQUEwOSAvKiBDcnlwdG9IbWFjS2V5QWxn
b3JpdGhtLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3
QzlBQ0E5RTFGM0NDRTMwMDBGM0FBMDkgLyogQ3J5cHRvSG1hY0tleUFsZ29yaXRobS5oICovOyB9
OwotCQk3QzlBQ0FBNDFGM0NDRTY5MDBGM0FBMDkgLyogQ3J5cHRvUnNhS2V5QWxnb3JpdGhtLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QzlBQ0FBMjFG
M0NDRTY5MDBGM0FBMDkgLyogQ3J5cHRvUnNhS2V5QWxnb3JpdGhtLmggKi87IH07Ci0JCTdDOUFD
QUE4MUYzQ0NFQjQwMEYzQUEwOSAvKiBDcnlwdG9Sc2FIYXNoZWRLZXlBbGdvcml0aG0uaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDOUFDQUE2MUYzQ0NF
QjQwMEYzQUEwOSAvKiBDcnlwdG9Sc2FIYXNoZWRLZXlBbGdvcml0aG0uaCAqLzsgfTsKKwkJN0M5
QUNBOTIxRjNDQzBBQTAwRjNBQTA5IC8qIENyeXB0b0tleUFsZ29yaXRobS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0M5QUNBOEYxRjNDQzBBQTAwRjNB
QTA5IC8qIENyeXB0b0tleUFsZ29yaXRobS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CisJCTdDOUFDQTk4MUYzQ0NEQUQwMEYzQUEwOSAvKiBDcnlwdG9B
ZXNLZXlBbGdvcml0aG0uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDdDOUFDQTk2MUYzQ0NEQUQwMEYzQUEwOSAvKiBDcnlwdG9BZXNLZXlBbGdvcml0aG0u
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk3QzlB
Q0E5QzFGM0NDREYyMDBGM0FBMDkgLyogQ3J5cHRvRWNLZXlBbGdvcml0aG0uaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDOUFDQTlBMUYzQ0NERjIwMEYz
QUEwOSAvKiBDcnlwdG9FY0tleUFsZ29yaXRobS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CisJCTdDOUFDQUEwMUYzQ0NFMzAwMEYzQUEwOSAvKiBDcnlw
dG9IbWFjS2V5QWxnb3JpdGhtLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA3QzlBQ0E5RTFGM0NDRTMwMDBGM0FBMDkgLyogQ3J5cHRvSG1hY0tleUFsZ29y
aXRobS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJ
CTdDOUFDQUE0MUYzQ0NFNjkwMEYzQUEwOSAvKiBDcnlwdG9Sc2FLZXlBbGdvcml0aG0uaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDOUFDQUEyMUYzQ0NF
NjkwMEYzQUEwOSAvKiBDcnlwdG9Sc2FLZXlBbGdvcml0aG0uaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk3QzlBQ0FBODFGM0NDRUI0MDBGM0FBMDkg
LyogQ3J5cHRvUnNhSGFzaGVkS2V5QWxnb3JpdGhtLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QzlBQ0FBNjFGM0NDRUI0MDBGM0FBMDkgLyogQ3J5cHRv
UnNhSGFzaGVkS2V5QWxnb3JpdGhtLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJN0M5QUNBQjgxRjNDRjFBRTAwRjNBQTA5IC8qIEpTQ3J5cHRvQWVz
S2V5QWxnb3JpdGhtLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA3QzlBQ0FBQTFGM0NEQjYzMDBGM0FBMDkgLyogSlNDcnlwdG9BZXNLZXlBbGdvcml0aG0u
aCAqLzsgfTsKIAkJN0M5QUNBQkExRjNDRjFBRTAwRjNBQTA5IC8qIEpTQ3J5cHRvRWNLZXlBbGdv
cml0aG0uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdD
OUFDQUFDMUYzQ0RCOUQwMEYzQUEwOSAvKiBKU0NyeXB0b0VjS2V5QWxnb3JpdGhtLmggKi87IH07
CiAJCTdDOUFDQUJDMUYzQ0YxQUUwMEYzQUEwOSAvKiBKU0NyeXB0b0htYWNLZXlBbGdvcml0aG0u
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDOUFDQUFG
MUYzQ0RCOUYwMEYzQUEwOSAvKiBKU0NyeXB0b0htYWNLZXlBbGdvcml0aG0uaCAqLzsgfTsKQEAg
LTQ2OTEsOSArNDY5Myw5IEBACiAJCUUxMjQ3NDg0MTBBQTE2MUQwMEI3OTQ5MyAvKiBBdXRoZW50
aWNhdGlvbkNsaWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gRTEyNDc0ODMxMEFBMTYxRDAwQjc5NDkzIC8qIEF1dGhlbnRpY2F0aW9uQ2xpZW50Lmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTEyNUY4
MkMxODIyQ0ZFQzAwRDg0Q0Q5IC8qIENyeXB0b0FsZ29yaXRobVNIQTEuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxMjVGODJBMTgyMkNGRUMwMEQ4NENE
OSAvKiBDcnlwdG9BbGdvcml0aG1TSEExLmggKi87IH07CiAJCUUxMjVGODMyMTgyMkYxMUIwMEQ4
NENEOSAvKiBDcnlwdG9BbGdvcml0aG1ITUFDLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBFMTI1RjgzMDE4MjJGMTFCMDBEODRDRDkgLyogQ3J5cHRvQWxn
b3JpdGhtSE1BQy5oICovOyB9OwotCQlFMTI1RjgzNjE4MjJGMThBMDBEODRDRDkgLyogQ3J5cHRv
S2V5SE1BQy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RTEyNUY4MzQxODIyRjE4QTAwRDg0Q0Q5IC8qIENyeXB0b0tleUhNQUMuaCAqLzsgfTsKLQkJRTEy
NUY4NDIxODI0MjUzQTAwRDg0Q0Q5IC8qIENyeXB0b0FsZ29yaXRobUFFU19DQkMuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxMjVGODQwMTgyNDI1M0Ew
MEQ4NENEOSAvKiBDcnlwdG9BbGdvcml0aG1BRVNfQ0JDLmggKi87IH07Ci0JCUUxMjVGODRFMTgy
NDI4OUQwMEQ4NENEOSAvKiBDcnlwdG9LZXlBRVMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxMjVGODRDMTgyNDI4OUQwMEQ4NENEOSAvKiBDcnlwdG9L
ZXlBRVMuaCAqLzsgfTsKKwkJRTEyNUY4MzYxODIyRjE4QTAwRDg0Q0Q5IC8qIENyeXB0b0tleUhN
QUMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxMjVG
ODM0MTgyMkYxOEEwMEQ4NENEOSAvKiBDcnlwdG9LZXlITUFDLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJRTEyNUY4NDIxODI0MjUzQTAwRDg0Q0Q5
IC8qIENyeXB0b0FsZ29yaXRobUFFU19DQkMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEUxMjVGODQwMTgyNDI1M0EwMEQ4NENEOSAvKiBDcnlwdG9BbGdv
cml0aG1BRVNfQ0JDLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKKwkJRTEyNUY4NEUxODI0Mjg5RDAwRDg0Q0Q5IC8qIENyeXB0b0tleUFFUy5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTEyNUY4NEMxODI0Mjg5
RDAwRDg0Q0Q5IC8qIENyeXB0b0tleUFFUy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCUUxMjcxOUM3MEVFRUMxNjgwMEY2MTIxMyAvKiBOYXZpZ2F0
b3JCYXNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBF
MTI3MTlDNjBFRUVDMTY4MDBGNjEyMTMgLyogTmF2aWdhdG9yQmFzZS5oICovOyB9OwogCQlFMTI3
MUEwQjBFRUVDNzdBMDBGNjEyMTMgLyogV29ya2VyTmF2aWdhdG9yLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMTI3MUEwQTBFRUVDNzdBMDBGNjEyMTMg
LyogV29ya2VyTmF2aWdhdG9yLmggKi87IH07CiAJCUUxMjcxQTU4MEVFRUNERTQwMEY2MTIxMyAv
KiBKU1dvcmtlck5hdmlnYXRvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gRTEyNzFBNTYwRUVFQ0RFNDAwRjYxMjEzIC8qIEpTV29ya2VyTmF2aWdhdG9y
LmggKi87IH07CkBAIC00NzA4LDcgKzQ3MTAsNyBAQAogCQlFMTRGMUM0NTE0QjVEQUM2MDBFQTkw
MDkgLyogSFRNTEZvcm1Db250cm9sRWxlbWVudFdpdGhTdGF0ZS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTE0RjFDNDMxNEI1REFDNjAwRUE5MDA5IC8q
IEhUTUxGb3JtQ29udHJvbEVsZW1lbnRXaXRoU3RhdGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFMTUyNTUxNTE2RkQyMzUwMDAzRDdBREIgLyog
V2ViQ29yZVJlc291cmNlSGFuZGxlQXNPcGVyYXRpb25RdWV1ZURlbGVnYXRlLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMTUyNTUxMzE2RkQyMzRGMDAz
RDdBREIgLyogV2ViQ29yZVJlc291cmNlSGFuZGxlQXNPcGVyYXRpb25RdWV1ZURlbGVnYXRlLmgg
Ki87IH07CiAJCUUxNTdBOEUxMTgxNzMzMUMwMDlGODIxRCAvKiBKU0NyeXB0b0tleS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTE1N0E4REYxODE3MzMx
QzAwOUY4MjFEIC8qIEpTQ3J5cHRvS2V5LmggKi87IH07Ci0JCUUxNTdBOEU1MTgxNzNBM0EwMDlG
ODIxRCAvKiBDcnlwdG9LZXkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEUxNTdBOEUzMTgxNzNBM0EwMDlGODIxRCAvKiBDcnlwdG9LZXkuaCAqLzsgfTsK
KwkJRTE1N0E4RTUxODE3M0EzQTAwOUY4MjFEIC8qIENyeXB0b0tleS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTE1N0E4RTMxODE3M0EzQTAwOUY4MjFE
IC8qIENyeXB0b0tleS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCUUxNUEzNkQ3MTEwNDU3MjAwMEI3QjYzOSAvKiBYTUxOU05hbWVzLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMTVBMzZENjExMDQ1NzIw
MDBCN0I2MzkgLyogWE1MTlNOYW1lcy5oICovOyB9OwogCQlFMTVBMzZEOTExMDQ1NzI3MDBCN0I2
MzkgLyogWE1MTlNOYW1lcy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBFMTVBMzZEODExMDQ1NzI3MDBCN0I2MzkgLyogWE1MTlNOYW1lcy5jcHAgKi87
IH07CiAJCUUxNUZGN0Q1MThDOTU1MzgwMEZFNEM4NyAvKiBLZXlwcmVzc0NvbW1hbmQuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxNUZGN0Q0MThDOTU1
MzgwMEZFNEM4NyAvKiBLZXlwcmVzc0NvbW1hbmQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtNDcxNyw4ICs0NzE5LDggQEAKIAkJRTE2OTgyNTUx
MTM0NjI5RDAwODk0MTE1IC8qIE9iakNSdW50aW1lT2JqZWN0LmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMTY5ODI1NDExMzQ2MjlEMDA4OTQxMTUgLyog
T2JqQ1J1bnRpbWVPYmplY3QuaCAqLzsgfTsKIAkJRTE2OTgyNjAxMTM0NjM2QTAwODk0MTE1IC8q
IE9iakNSdW50aW1lT2JqZWN0Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gRTE2OTgyNUYxMTM0NjM2QTAwODk0MTE1IC8qIE9iakNSdW50aW1lT2JqZWN0
Lm1tICovOyB9OwogCQlFMTZBODRGQTE0Qzg1Q0NDMDAyOTc3REYgLyogQ1NTQm9yZGVySW1hZ2Uu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxNkE4NEY4
MTRDODVDQ0MwMDI5NzdERiAvKiBDU1NCb3JkZXJJbWFnZS5oICovOyB9OwotCQlFMTcyQUY2RTE4
MEYyNEM2MDBGQkFEQjkgLyogQ3J5cHRvQWxnb3JpdGhtLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMTcyQUY2QzE4MEYyNEM2MDBGQkFEQjkgLyogQ3J5
cHRvQWxnb3JpdGhtLmggKi87IH07Ci0JCUUxNzJBRjcwMTgwRjI4OTUwMEZCQURCOSAvKiBDcnlw
dG9LZXlVc2FnZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRTE3MkFGNkYxODBGMjg5NTAwRkJBREI5IC8qIENyeXB0b0tleVVzYWdlLmggKi87IH07CisJ
CUUxNzJBRjZFMTgwRjI0QzYwMEZCQURCOSAvKiBDcnlwdG9BbGdvcml0aG0uaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxNzJBRjZDMTgwRjI0QzYwMEZC
QURCOSAvKiBDcnlwdG9BbGdvcml0aG0uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OworCQlFMTcyQUY3MDE4MEYyODk1MDBGQkFEQjkgLyogQ3J5cHRvS2V5
VXNhZ2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUx
NzJBRjZGMTgwRjI4OTUwMEZCQURCOSAvKiBDcnlwdG9LZXlVc2FnZS5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUUxNzJBRjkwMTgxMUJDMzcwMEZC
QURCOSAvKiBKU0RPTVByb21pc2VEZWZlcnJlZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gRTE3MkFGOEUxODExQkMzNzAwRkJBREI5IC8qIEpTRE9NUHJv
bWlzZURlZmVycmVkLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJRTE3OUYwREExQjk3NzRGRTAwRUQwQTI3IC8qIEludGVybmFscy5tbSBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxNzlGMEQ5MUI5Nzc0RkUw
MEVEMEEyNyAvKiBJbnRlcm5hbHMubW0gKi87IH07CiAJCUUxN0I0OTE2MTZBOUIwOTQwMDFDODgz
OSAvKiBUcmFuc2l0aW9uRXZlbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEUxN0I0OTE0MTZBOUIwOTMwMDFDODgzOSAvKiBUcmFuc2l0aW9uRXZlbnQu
aCAqLzsgfTsKQEAgLTQ3MzEsNyArNDczMyw3IEBACiAJCUUxODgyMzY2MjAzMUY1OTQwMEI0MkRG
MyAvKiBWUlBsYXRmb3JtTWFuYWdlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gRTE4ODIzNjEyMDMxRjU1QjAwQjQyREYzIC8qIFZSUGxhdGZvcm1NYW5h
Z2VyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
RTE4QzM1NDQxRjcxOTcwQzAwRkY2MzJEIC8qIFdlYkFyY2hpdmVSZXNvdXJjZVdlYlJlc291cmNl
SGFuZGxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RTE4QzM1NDExRjcxOTZDRDAwRkY2MzJEIC8qIFdlYkFyY2hpdmVSZXNvdXJjZVdlYlJlc291cmNl
SGFuZGxlci5oICovOyB9OwogCQlFMThERjMzNTE4QUFGMTJDMDA3NzNFNTkgLyogU2VyaWFsaXpl
ZENyeXB0b0tleVdyYXAuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEUxOERGMzM0MThBQUYxMkMwMDc3M0U1OSAvKiBTZXJpYWxpemVkQ3J5cHRvS2V5V3Jh
cC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCUUx
OTcyNzE2MTgyMDU0OUUwMDU5MkQ1MSAvKiBDcnlwdG9LZXlUeXBlLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMTk3MjcxNTE4MjA1NDlFMDA1OTJENTEg
LyogQ3J5cHRvS2V5VHlwZS5oICovOyB9OworCQlFMTk3MjcxNjE4MjA1NDlFMDA1OTJENTEgLyog
Q3J5cHRvS2V5VHlwZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gRTE5NzI3MTUxODIwNTQ5RTAwNTkyRDUxIC8qIENyeXB0b0tleVR5cGUuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFMTlBQzNFRjE4MjRE
Qzc5MDAzNDk0MjYgLyogQ3J5cHRvQWxnb3JpdGhtU0hBMjI0LmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMTlBQzNFNzE4MjREQzc5MDAzNDk0MjYgLyog
Q3J5cHRvQWxnb3JpdGhtU0hBMjI0LmggKi87IH07CiAJCUUxOUFDM0YxMTgyNERDNzkwMDM0OTQy
NiAvKiBDcnlwdG9BbGdvcml0aG1TSEEyNTYuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEUxOUFDM0U5MTgyNERDNzkwMDM0OTQyNiAvKiBDcnlwdG9BbGdv
cml0aG1TSEEyNTYuaCAqLzsgfTsKIAkJRTE5QUMzRjMxODI0REM3OTAwMzQ5NDI2IC8qIENyeXB0
b0FsZ29yaXRobVNIQTM4NC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gRTE5QUMzRUIxODI0REM3OTAwMzQ5NDI2IC8qIENyeXB0b0FsZ29yaXRobVNIQTM4
NC5oICovOyB9OwpAQCAtNDc1NSw3ICs0NzU3LDcgQEAKIAkJRTFDNDE1REEwRjY1NUQ2RjAwOTJE
MkZCIC8qIENyb3NzT3JpZ2luUHJlZmxpZ2h0UmVzdWx0Q2FjaGUuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxQzQxNUQ5MEY2NTVENkYwMDkyRDJGQiAv
KiBDcm9zc09yaWdpblByZWZsaWdodFJlc3VsdENhY2hlLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTFDNDE2MTIwRjY1NjJGRDAwOTJEMkZCIC8q
IENyb3NzT3JpZ2luQWNjZXNzQ29udHJvbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRTFDNDE2MTEwRjY1NjJGRDAwOTJEMkZCIC8qIENyb3NzT3JpZ2lu
QWNjZXNzQ29udHJvbC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCUUxQzRERTY5MEVBNzVDMUUwMDIzQ0NENiAvKiBBY3RpdmVET01PYmplY3QuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxQzRERTY4MEVB
NzVDMUUwMDIzQ0NENiAvKiBBY3RpdmVET01PYmplY3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQlFMUM2NTcyNTE4MTZFNjlEMDAyNTZDREQgLyog
Q3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRTFDNjU3MjQxODE2RTY5RDAwMjU2Q0REIC8qIENyeXB0b0FsZ29y
aXRobUlkZW50aWZpZXIuaCAqLzsgfTsKKwkJRTFDNjU3MjUxODE2RTY5RDAwMjU2Q0REIC8qIENy
eXB0b0FsZ29yaXRobUlkZW50aWZpZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEUxQzY1NzI0MTgxNkU2OUQwMDI1NkNERCAvKiBDcnlwdG9BbGdvcml0
aG1JZGVudGlmaWVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJRTFDOTRBRjkxOTEzMDNGMDAwRDVBODkzIC8qIEJsb2JQYXJ0LmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMUM5NEFGNzE5MTMwM0YwMDBE
NUE4OTMgLyogQmxvYlBhcnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQlFMUNBQTVDNjBFOEJEMjM2MDBBNzNFQ0EgLyogSlNXb3JrZXIuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxQ0FBNUM1MEU4QkQy
MzYwMEE3M0VDQSAvKiBKU1dvcmtlci5oICovOyB9OwogCQlFMUNERTkyMjE1MDE5MTY5MDA4NjJD
QzUgLyogQXN5bmNGaWxlU3RyZWFtLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBFMUNERTkyMTE1MDE5MTY5MDA4NjJDQzUgLyogQXN5bmNGaWxlU3RyZWFt
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTQ3
NjgsNyArNDc3MCw3IEBACiAJCUUxRjgwQjg4MTgzMTcyNTIwMDc4ODVDMyAvKiBDcnlwdG9LZXlQ
YWlyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMUY4
MEI4NjE4MzE3MjUyMDA3ODg1QzMgLyogQ3J5cHRvS2V5UGFpci5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUUxRjgwQjhFMTgzMTcyQjUwMDc4ODVD
MyAvKiBKU0NyeXB0b0tleVBhaXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEUxRjgwQjhDMTgzMTcyQjUwMDc4ODVDMyAvKiBKU0NyeXB0b0tleVBhaXIu
aCAqLzsgfTsKIAkJRTFGRTEzNkIxODNGRTFBQjAwODkyRjEzIC8qIENyeXB0b0FsZ29yaXRobVJT
QV9PQUVQLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBF
MUZFMTM2OTE4M0ZFMUFCMDA4OTJGMTMgLyogQ3J5cHRvQWxnb3JpdGhtUlNBX09BRVAuaCAqLzsg
fTsKLQkJRTFGRTEzNzUxODQwMkE2NzAwODkyRjEzIC8qIENvbW1vbkNyeXB0b1V0aWxpdGllcy5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTFGRTEzNzMx
ODQwMkE2NzAwODkyRjEzIC8qIENvbW1vbkNyeXB0b1V0aWxpdGllcy5oICovOyB9OworCQlFMUZF
MTM3NTE4NDAyQTY3MDA4OTJGMTMgLyogQ29tbW9uQ3J5cHRvVXRpbGl0aWVzLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMUZFMTM3MzE4NDAyQTY3MDA4
OTJGMTMgLyogQ29tbW9uQ3J5cHRvVXRpbGl0aWVzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTFGRTEzN0IxODREMjFCQjAwODkyRjEzIC8qIENy
eXB0b0FsZ29yaXRobUFFU19LVy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gRTFGRTEzNzkxODREMjFCQjAwODkyRjEzIC8qIENyeXB0b0FsZ29yaXRobUFF
U19LVy5oICovOyB9OwogCQlFMUZGNTdBMzBGMDEyNTVCMDA4OTFFQkIgLyogVGhyZWFkR2xvYmFs
RGF0YS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTFG
RjU3QTIwRjAxMjU1QjAwODkxRUJCIC8qIFRocmVhZEdsb2JhbERhdGEuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFMUZGOEY2RDE4MERCNUJFMDAx
MzI2NzQgLyogQ3J5cHRvQWxnb3JpdGhtUmVnaXN0cnkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxRkY4RjZCMTgwREI1QkUwMDEzMjY3NCAvKiBDcnlw
dG9BbGdvcml0aG1SZWdpc3RyeS5oICovOyB9OwpAQCAtODc5MSw2ICs4NzkzLDggQEAKIAkJNTc1
ODU5NjkyMzlGMUVDNzAwQzc0NTcyIC8qIEF1dGhlbnRpY2F0b3JSZXNwb25zZS5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBBdXRoZW50aWNhdG9yUmVzcG9uc2UuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk1NzU4NTk2QjIzOUYyODRCMDBDNzQ1NzIgLyogQXV0aGVudGljYXRvckF0
dGVzdGF0aW9uUmVzcG9uc2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQXV0aGVudGljYXRvckF0
dGVzdGF0aW9uUmVzcG9uc2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1NzU4
NTk2RTIzOUYzOTc5MDBDNzQ1NzIgLyogQXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZS5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTU3NTg1OTc4MjNBMUZDRTYwMEM3NDU3MiAv
KiBQaW4uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUGluLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTc1ODU5NzkyM0ExRkNGMjAwQzc0NTcyIC8q
IFBpbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQaW4uaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTc2MDgyNEYyMDExOEQ4RDAwMTE2Njc4IC8qIEpTQmFzaWND
cmVkZW50aWFsQ3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTQmFzaWNDcmVkZW50aWFs
Q3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTc2MDgyNTYyMDExQkUw
MjAwMTE2Njc4IC8qIEpTQXV0aGVudGljYXRvclJlc3BvbnNlQ3VzdG9tLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IEpTQXV0aGVudGljYXRvclJlc3BvbnNlQ3VzdG9tLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNTc2MDgyNzAyMDIxNTEzRjAwMTE2Njc4IC8qIEF1dGhlbnRpY2F0
b3JDb29yZGluYXRvckNsaWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBdXRoZW50aWNhdG9yQ29vcmRp
bmF0b3JDbGllbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE5OTgyLDYgKzE5
OTg2LDggQEAKIAkJCQk1NzhBNEMwQTIxNjdEMjk2MDBEMDhGMzQgLyogRmlkb0hpZFBhY2tldC5o
ICovLAogCQkJCTU3M0Y1MzM2MjE2ODBEMTUwMDQ1NTg3QSAvKiBGaWRvUGFyc2luZ1V0aWxzLmNw
cCAqLywKIAkJCQk1NzNGNTMzNTIxNjgwRDE0MDA0NTU4N0EgLyogRmlkb1BhcnNpbmdVdGlscy5o
ICovLAorCQkJCTU3NTg1OTc4MjNBMUZDRTYwMEM3NDU3MiAvKiBQaW4uY3BwICovLAorCQkJCTU3
NTg1OTc5MjNBMUZDRjIwMEM3NDU3MiAvKiBQaW4uaCAqLywKIAkJCQk1NzE1MkI2QTIxQ0Q5OTVD
MDAwQzM3Q0EgLyogVTJmQ29tbWFuZENvbnN0cnVjdG9yLmNwcCAqLywKIAkJCQk1NzE1MkI2QzIx
Q0Q5OTVDMDAwQzM3Q0EgLyogVTJmQ29tbWFuZENvbnN0cnVjdG9yLmggKi8sCiAJCQkJNTcxNTJC
N0IyMUREOEJBMTAwMEMzN0NBIC8qIFUyZlJlc3BvbnNlQ29udmVydGVyLmNwcCAqLywKQEAgLTI5
NDAwLDYgKzI5NDA2LDcgQEAKIAkJCQlFMTI1Rjg0RTE4MjQyODlEMDBEODRDRDkgLyogQ3J5cHRv
S2V5QUVTLmggaW4gSGVhZGVycyAqLywKIAkJCQk3QzlBQ0E5MjFGM0NDMEFBMDBGM0FBMDkgLyog
Q3J5cHRvS2V5QWxnb3JpdGhtLmggaW4gSGVhZGVycyAqLywKIAkJCQk1NzUwQTk3NTFFNjhEMDAw
MDA3MDVDNEEgLyogQ3J5cHRvS2V5RUMuaCBpbiBIZWFkZXJzICovLAorCQkJCTU3MjU3NkQ2MjNB
ODg3MkIwMDkwOTU0MCAvKiBDcnlwdG9LZXlGb3JtYXQuaCBpbiBIZWFkZXJzICovLAogCQkJCUUx
MjVGODM2MTgyMkYxOEEwMEQ4NENEOSAvKiBDcnlwdG9LZXlITUFDLmggaW4gSGVhZGVycyAqLywK
IAkJCQlFMUY4MEI4ODE4MzE3MjUyMDA3ODg1QzMgLyogQ3J5cHRvS2V5UGFpci5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJNTdFNjU3REYxRTcxMzczQTAwRjk0MUNBIC8qIENyeXB0b0tleVJhdy5oIGlu
IEhlYWRlcnMgKi8sCkBAIC0zMTcwMSw2ICszMTcwOCw3IEBACiAJCQkJMURCQzFCNTYyMzQ3QjNE
MjAwQjkwMUFGIC8qIFBpY3R1cmVJblBpY3R1cmVPYnNlcnZlci5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMUQyQzgyQjcyMzZBM0Y2QTAwNTVENkM1IC8qIFBpY3R1cmVJblBpY3R1cmVTdXBwb3J0Lmgg
aW4gSGVhZGVycyAqLywKIAkJCQkxRDJGOEUwNjIzNDQ3NTIzMDA5OTNCNjggLyogUGljdHVyZUlu
UGljdHVyZVdpbmRvdy5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTc1ODU5N0MyM0ExRkNGMzAwQzc0
NTcyIC8qIFBpbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRDBGRjJBNUUxMUY4QzQ1QTAwN0U3NEUw
IC8qIFBpbmdMb2FkZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUNEN0QzMzQ0MUM3QTEyM0YwMDA0
MTI5MyAvKiBQaXhlbEJ1ZmZlckNvbmZvcm1lckNWLmggaW4gSGVhZGVycyAqLywKIAkJCQlDREVG
QTIyODFFNzY2OUU4MDAwQUU5OUMgLyogUGxhdGZvcm1BdWRpb0RhdGEuaCBpbiBIZWFkZXJzICov
LApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL0NyeXB0b0FsZ29yaXRobS5oIGIv
U291cmNlL1dlYkNvcmUvY3J5cHRvL0NyeXB0b0FsZ29yaXRobS5oCmluZGV4IDhmNDUwNjMyNjAx
MzI2M2MxZDM4M2IwNzIxYzQxZTAyYWU0NGQ5ODMuLmEyZTczYWQ1NWRlYjU4MDhjOWFjNzcyNTcy
YWE2YjBiODk1NGZkYTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9DcnlwdG9B
bGdvcml0aG0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vQ3J5cHRvQWxnb3JpdGhtLmgK
QEAgLTMxLDcgKzMxLDYgQEAKICNpbmNsdWRlICJDcnlwdG9LZXlVc2FnZS5oIgogI2luY2x1ZGUg
IkV4Y2VwdGlvbk9yLmgiCiAjaW5jbHVkZSAiSnNvbldlYktleS5oIgotI2luY2x1ZGUgIlN1YnRs
ZUNyeXB0by5oIgogI2luY2x1ZGUgPHd0Zi9GdW5jdGlvbi5oPgogI2luY2x1ZGUgPHd0Zi9UaHJl
YWRTYWZlUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9WYXJpYW50Lmg+CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1BRVNfQ0JD
LmggYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1BRVNf
Q0JDLmgKaW5kZXggYjJiMDQzZGE2ZWExZDBiZmI0MGRkY2M0Mjg2NDI4MmFhNWIwNTQ5ZS4uZmQ5
ODkxMmI3MGRjMGI1MWQxYjk4NzkwNjY0ZDcyYjQ2ZTM0MjhmZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtQUVTX0NCQy5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobUFFU19DQkMu
aApAQCAtNDAsNiArNDAsMTAgQEAgcHVibGljOgogICAgIHN0YXRpYyBjb25zdGV4cHIgQ3J5cHRv
QWxnb3JpdGhtSWRlbnRpZmllciBzX2lkZW50aWZpZXIgPSBDcnlwdG9BbGdvcml0aG1JZGVudGlm
aWVyOjpBRVNfQ0JDOwogICAgIHN0YXRpYyBSZWY8Q3J5cHRvQWxnb3JpdGhtPiBjcmVhdGUoKTsK
IAorICAgIC8vIE9wZXJhdGlvbnMgY2FuIGJlIHBlcmZvcm1lZCBkaXJlY3RseS4KKyAgICBXRUJD
T1JFX0VYUE9SVCBzdGF0aWMgRXhjZXB0aW9uT3I8VmVjdG9yPHVpbnQ4X3Q+PiBwbGF0Zm9ybUVu
Y3J5cHQoY29uc3QgQ3J5cHRvQWxnb3JpdGhtQWVzQ2JjQ2ZiUGFyYW1zJiwgY29uc3QgQ3J5cHRv
S2V5QUVTJiwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+Jik7CisgICAgV0VCQ09SRV9FWFBPUlQgc3Rh
dGljIEV4Y2VwdGlvbk9yPFZlY3Rvcjx1aW50OF90Pj4gcGxhdGZvcm1EZWNyeXB0KGNvbnN0IENy
eXB0b0FsZ29yaXRobUFlc0NiY0NmYlBhcmFtcyYsIGNvbnN0IENyeXB0b0tleUFFUyYsIGNvbnN0
IFZlY3Rvcjx1aW50OF90PiYpOworCiBwcml2YXRlOgogICAgIENyeXB0b0FsZ29yaXRobUFFU19D
QkMoKSA9IGRlZmF1bHQ7CiAgICAgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllciBpZGVudGlmaWVy
KCkgY29uc3QgZmluYWw7CkBAIC01MCw5ICs1NCw2IEBAIHByaXZhdGU6CiAgICAgdm9pZCBpbXBv
cnRLZXkoQ3J5cHRvS2V5Rm9ybWF0LCBLZXlEYXRhJiYsIGNvbnN0IENyeXB0b0FsZ29yaXRobVBh
cmFtZXRlcnMmLCBib29sIGV4dHJhY3RhYmxlLCBDcnlwdG9LZXlVc2FnZUJpdG1hcCwgS2V5Q2Fs
bGJhY2smJiwgRXhjZXB0aW9uQ2FsbGJhY2smJikgZmluYWw7CiAgICAgdm9pZCBleHBvcnRLZXko
Q3J5cHRvS2V5Rm9ybWF0LCBSZWY8Q3J5cHRvS2V5PiYmLCBLZXlEYXRhQ2FsbGJhY2smJiwgRXhj
ZXB0aW9uQ2FsbGJhY2smJikgZmluYWw7CiAgICAgRXhjZXB0aW9uT3I8c2l6ZV90PiBnZXRLZXlM
ZW5ndGgoY29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycyYpIGZpbmFsOwotCi0gICAgc3Rh
dGljIEV4Y2VwdGlvbk9yPFZlY3Rvcjx1aW50OF90Pj4gcGxhdGZvcm1FbmNyeXB0KGNvbnN0IENy
eXB0b0FsZ29yaXRobUFlc0NiY0NmYlBhcmFtcyYsIGNvbnN0IENyeXB0b0tleUFFUyYsIGNvbnN0
IFZlY3Rvcjx1aW50OF90PiYpOwotICAgIHN0YXRpYyBFeGNlcHRpb25PcjxWZWN0b3I8dWludDhf
dD4+IHBsYXRmb3JtRGVjcnlwdChjb25zdCBDcnlwdG9BbGdvcml0aG1BZXNDYmNDZmJQYXJhbXMm
LCBjb25zdCBDcnlwdG9LZXlBRVMmLCBjb25zdCBWZWN0b3I8dWludDhfdD4mKTsKIH07CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9h
bGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobUVDREguaCBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9h
bGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobUVDREguaAppbmRleCA3ODM5MWM5MjdlOGE1MTUzYTBj
MDkwMThjNjZjOWM3OGNlMDk5ODIzLi4xNGUzNzI3YjdhNzAzOGRiMjQ0NGRkZjVmNzUyYTdiNDU2
NDRkNjVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9Dcnlw
dG9BbGdvcml0aG1FQ0RILmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMv
Q3J5cHRvQWxnb3JpdGhtRUNESC5oCkBAIC0zOSw2ICszOSw5IEBAIHB1YmxpYzoKICAgICBzdGF0
aWMgY29uc3RleHByIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXIgc19pZGVudGlmaWVyID0gQ3J5
cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6RUNESDsKICAgICBzdGF0aWMgUmVmPENyeXB0b0FsZ29y
aXRobT4gY3JlYXRlKCk7CiAKKyAgICAvLyBPcGVyYXRpb25zIGNhbiBiZSBwZXJmb3JtZWQgZGly
ZWN0bHkuCisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIE9wdGlvbmFsPFZlY3Rvcjx1aW50OF90
Pj4gcGxhdGZvcm1EZXJpdmVCaXRzKGNvbnN0IENyeXB0b0tleUVDJiwgY29uc3QgQ3J5cHRvS2V5
RUMmKTsKKwogcHJpdmF0ZToKICAgICBDcnlwdG9BbGdvcml0aG1FQ0RIKCkgPSBkZWZhdWx0Owog
ICAgIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXIgaWRlbnRpZmllcigpIGNvbnN0IGZpbmFsOwpA
QCAtNDcsOCArNTAsNiBAQCBwcml2YXRlOgogICAgIHZvaWQgZGVyaXZlQml0cyhjb25zdCBDcnlw
dG9BbGdvcml0aG1QYXJhbWV0ZXJzJiwgUmVmPENyeXB0b0tleT4mJiwgc2l6ZV90IGxlbmd0aCwg
VmVjdG9yQ2FsbGJhY2smJiwgRXhjZXB0aW9uQ2FsbGJhY2smJiwgU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCYsIFdvcmtRdWV1ZSYpIGZpbmFsOwogICAgIHZvaWQgaW1wb3J0S2V5KENyeXB0b0tleUZv
cm1hdCwgS2V5RGF0YSYmLCBjb25zdCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzJiwgYm9vbCBl
eHRyYWN0YWJsZSwgQ3J5cHRvS2V5VXNhZ2VCaXRtYXAsIEtleUNhbGxiYWNrJiYsIEV4Y2VwdGlv
bkNhbGxiYWNrJiYpIGZpbmFsOwogICAgIHZvaWQgZXhwb3J0S2V5KENyeXB0b0tleUZvcm1hdCwg
UmVmPENyeXB0b0tleT4mJiwgS2V5RGF0YUNhbGxiYWNrJiYsIEV4Y2VwdGlvbkNhbGxiYWNrJiYp
IGZpbmFsOwotCi0gICAgc3RhdGljIE9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gcGxhdGZvcm1E
ZXJpdmVCaXRzKGNvbnN0IENyeXB0b0tleUVDJiwgY29uc3QgQ3J5cHRvS2V5RUMmKTsKIH07CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0
by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobUhNQUMuaCBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0
by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobUhNQUMuaAppbmRleCBiYWI4OTljZjM0ZDFmNTA0
ZThmOTc3YmZlMWE4MWM1OTI0NGVhYWVmLi5mYThmMGFkZGNjZTEyOGYyNDcxNTE3M2ZhZmJmYTky
NzMyNTI1MGQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9D
cnlwdG9BbGdvcml0aG1ITUFDLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRo
bXMvQ3J5cHRvQWxnb3JpdGhtSE1BQy5oCkBAIC0zOSw2ICszOSwxMCBAQCBwdWJsaWM6CiAgICAg
c3RhdGljIGNvbnN0ZXhwciBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyIHNfaWRlbnRpZmllciA9
IENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OkhNQUM7CiAgICAgc3RhdGljIFJlZjxDcnlwdG9B
bGdvcml0aG0+IGNyZWF0ZSgpOwogCisgICAgLy8gT3BlcmF0aW9ucyBjYW4gYmUgcGVyZm9ybWVk
IGRpcmVjdGx5LgorICAgIHN0YXRpYyBFeGNlcHRpb25PcjxWZWN0b3I8dWludDhfdD4+IHBsYXRm
b3JtU2lnbihjb25zdCBDcnlwdG9LZXlITUFDJiwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+Jik7Cisg
ICAgc3RhdGljIEV4Y2VwdGlvbk9yPGJvb2w+IHBsYXRmb3JtVmVyaWZ5KGNvbnN0IENyeXB0b0tl
eUhNQUMmLCBjb25zdCBWZWN0b3I8dWludDhfdD4mLCBjb25zdCBWZWN0b3I8dWludDhfdD4mKTsK
KwogcHJpdmF0ZToKICAgICBDcnlwdG9BbGdvcml0aG1ITUFDKCkgPSBkZWZhdWx0OwogICAgIENy
eXB0b0FsZ29yaXRobUlkZW50aWZpZXIgaWRlbnRpZmllcigpIGNvbnN0IGZpbmFsOwpAQCAtNDks
OSArNTMsNiBAQCBwcml2YXRlOgogICAgIHZvaWQgaW1wb3J0S2V5KENyeXB0b0tleUZvcm1hdCwg
S2V5RGF0YSYmLCBjb25zdCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzJiwgYm9vbCBleHRyYWN0
YWJsZSwgQ3J5cHRvS2V5VXNhZ2VCaXRtYXAsIEtleUNhbGxiYWNrJiYsIEV4Y2VwdGlvbkNhbGxi
YWNrJiYpIGZpbmFsOwogICAgIHZvaWQgZXhwb3J0S2V5KENyeXB0b0tleUZvcm1hdCwgUmVmPENy
eXB0b0tleT4mJiwgS2V5RGF0YUNhbGxiYWNrJiYsIEV4Y2VwdGlvbkNhbGxiYWNrJiYpIGZpbmFs
OwogICAgIEV4Y2VwdGlvbk9yPHNpemVfdD4gZ2V0S2V5TGVuZ3RoKGNvbnN0IENyeXB0b0FsZ29y
aXRobVBhcmFtZXRlcnMmKSBmaW5hbDsKLQotICAgIHN0YXRpYyBFeGNlcHRpb25PcjxWZWN0b3I8
dWludDhfdD4+IHBsYXRmb3JtU2lnbihjb25zdCBDcnlwdG9LZXlITUFDJiwgY29uc3QgVmVjdG9y
PHVpbnQ4X3Q+Jik7Ci0gICAgc3RhdGljIEV4Y2VwdGlvbk9yPGJvb2w+IHBsYXRmb3JtVmVyaWZ5
KGNvbnN0IENyeXB0b0tleUhNQUMmLCBjb25zdCBWZWN0b3I8dWludDhfdD4mLCBjb25zdCBWZWN0
b3I8dWludDhfdD4mKTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2NyeXB0by9rZXlzL0NyeXB0b0tleUFFUy5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9jcnlwdG8va2V5cy9DcnlwdG9LZXlBRVMuY3BwCmluZGV4IGVhNmU1MTNiNjc2N2Y2M2Qw
MTQ2OGY4MGQzYmY4MjdkYjljNjBhM2UuLjkxN2VlOWVmYWE4MmRhOTQzZTA5NTU5ZGY3ZTdiODU3
YzcyNTNlMTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9rZXlzL0NyeXB0b0tl
eUFFUy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2tleXMvQ3J5cHRvS2V5QUVTLmNw
cApAQCAtMjgsNiArMjgsNyBAQAogCiAjaWYgRU5BQkxFKFdFQl9DUllQVE8pCiAKKyNpbmNsdWRl
ICJDcnlwdG9BZXNLZXlBbGdvcml0aG0uaCIKICNpbmNsdWRlICJDcnlwdG9BbGdvcml0aG1BZXNL
ZXlQYXJhbXMuaCIKICNpbmNsdWRlICJDcnlwdG9BbGdvcml0aG1SZWdpc3RyeS5oIgogI2luY2x1
ZGUgIkV4Y2VwdGlvbk9yLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8va2V5
cy9DcnlwdG9LZXlBRVMuaCBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9rZXlzL0NyeXB0b0tleUFF
Uy5oCmluZGV4IDEwN2M3OWJjNGU4NjExN2M4OTBjYjkzMTg0ZTNlZWE5ZTZmMzA2ODEuLjM0MWNh
NmJjN2E1ZDc5NzBiODM4Mzk4NzFmOGMwNjg3MWFiOWMxNGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2NyeXB0by9rZXlzL0NyeXB0b0tleUFFUy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Ny
eXB0by9rZXlzL0NyeXB0b0tleUFFUy5oCkBAIC01NCw3ICs1NCw3IEBAIHB1YmxpYzoKICAgICBz
dGF0aWMgYm9vbCBpc1ZhbGlkQUVTQWxnb3JpdGhtKENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXIp
OwogCiAgICAgc3RhdGljIFJlZlB0cjxDcnlwdG9LZXlBRVM+IGdlbmVyYXRlKENyeXB0b0FsZ29y
aXRobUlkZW50aWZpZXIsIHNpemVfdCBsZW5ndGhCaXRzLCBib29sIGV4dHJhY3RhYmxlLCBDcnlw
dG9LZXlVc2FnZUJpdG1hcCk7Ci0gICAgc3RhdGljIFJlZlB0cjxDcnlwdG9LZXlBRVM+IGltcG9y
dFJhdyhDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyLCBWZWN0b3I8dWludDhfdD4mJiBrZXlEYXRh
LCBib29sIGV4dHJhY3RhYmxlLCBDcnlwdG9LZXlVc2FnZUJpdG1hcCk7CisgICAgV0VCQ09SRV9F
WFBPUlQgc3RhdGljIFJlZlB0cjxDcnlwdG9LZXlBRVM+IGltcG9ydFJhdyhDcnlwdG9BbGdvcml0
aG1JZGVudGlmaWVyLCBWZWN0b3I8dWludDhfdD4mJiBrZXlEYXRhLCBib29sIGV4dHJhY3RhYmxl
LCBDcnlwdG9LZXlVc2FnZUJpdG1hcCk7CiAgICAgdXNpbmcgQ2hlY2tBbGdDYWxsYmFjayA9IEZ1
bmN0aW9uPGJvb2woc2l6ZV90LCBjb25zdCBTdHJpbmcmKT47CiAgICAgc3RhdGljIFJlZlB0cjxD
cnlwdG9LZXlBRVM+IGltcG9ydEp3ayhDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyLCBKc29uV2Vi
S2V5JiYsIGJvb2wgZXh0cmFjdGFibGUsIENyeXB0b0tleVVzYWdlQml0bWFwLCBDaGVja0FsZ0Nh
bGxiYWNrJiYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8va2V5cy9Dcnlw
dG9LZXlFQy5oIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2tleXMvQ3J5cHRvS2V5RUMuaAppbmRl
eCAzNjQ3MTM0MDVjODllNTFiNDMxMTdlYzkzYzNjNGM4NGVlZmM2ZTMyLi5jYWM3NDhhODQ4OGY2
MmEzNTIyNDNlNGQ4NjMzZDNkMDA5MmNmYTRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9j
cnlwdG8va2V5cy9DcnlwdG9LZXlFQy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9rZXlz
L0NyeXB0b0tleUVDLmgKQEAgLTY5LDEzICs2OSwxMyBAQCBwdWJsaWM6CiAgICAgfQogICAgIHZp
cnR1YWwgfkNyeXB0b0tleUVDKCkgPSBkZWZhdWx0OwogCi0gICAgc3RhdGljIEV4Y2VwdGlvbk9y
PENyeXB0b0tleVBhaXI+IGdlbmVyYXRlUGFpcihDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyLCBj
b25zdCBTdHJpbmcmIGN1cnZlLCBib29sIGV4dHJhY3RhYmxlLCBDcnlwdG9LZXlVc2FnZUJpdG1h
cCk7Ci0gICAgc3RhdGljIFJlZlB0cjxDcnlwdG9LZXlFQz4gaW1wb3J0UmF3KENyeXB0b0FsZ29y
aXRobUlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgY3VydmUsIFZlY3Rvcjx1aW50OF90PiYmIGtl
eURhdGEsIGJvb2wgZXh0cmFjdGFibGUsIENyeXB0b0tleVVzYWdlQml0bWFwKTsKKyAgICBXRUJD
T1JFX0VYUE9SVCBzdGF0aWMgRXhjZXB0aW9uT3I8Q3J5cHRvS2V5UGFpcj4gZ2VuZXJhdGVQYWly
KENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgY3VydmUsIGJvb2wgZXh0
cmFjdGFibGUsIENyeXB0b0tleVVzYWdlQml0bWFwKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0
aWMgUmVmUHRyPENyeXB0b0tleUVDPiBpbXBvcnRSYXcoQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmll
ciwgY29uc3QgU3RyaW5nJiBjdXJ2ZSwgVmVjdG9yPHVpbnQ4X3Q+JiYga2V5RGF0YSwgYm9vbCBl
eHRyYWN0YWJsZSwgQ3J5cHRvS2V5VXNhZ2VCaXRtYXApOwogICAgIHN0YXRpYyBSZWZQdHI8Q3J5
cHRvS2V5RUM+IGltcG9ydEp3ayhDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyLCBjb25zdCBTdHJp
bmcmIGN1cnZlLCBKc29uV2ViS2V5JiYsIGJvb2wgZXh0cmFjdGFibGUsIENyeXB0b0tleVVzYWdl
Qml0bWFwKTsKICAgICBzdGF0aWMgUmVmUHRyPENyeXB0b0tleUVDPiBpbXBvcnRTcGtpKENyeXB0
b0FsZ29yaXRobUlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgY3VydmUsIFZlY3Rvcjx1aW50OF90
PiYmIGtleURhdGEsIGJvb2wgZXh0cmFjdGFibGUsIENyeXB0b0tleVVzYWdlQml0bWFwKTsKICAg
ICBzdGF0aWMgUmVmUHRyPENyeXB0b0tleUVDPiBpbXBvcnRQa2NzOChDcnlwdG9BbGdvcml0aG1J
ZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGN1cnZlLCBWZWN0b3I8dWludDhfdD4mJiBrZXlEYXRh
LCBib29sIGV4dHJhY3RhYmxlLCBDcnlwdG9LZXlVc2FnZUJpdG1hcCk7CiAKLSAgICBFeGNlcHRp
b25PcjxWZWN0b3I8dWludDhfdD4+IGV4cG9ydFJhdygpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQ
T1JUIEV4Y2VwdGlvbk9yPFZlY3Rvcjx1aW50OF90Pj4gZXhwb3J0UmF3KCkgY29uc3Q7CiAgICAg
RXhjZXB0aW9uT3I8SnNvbldlYktleT4gZXhwb3J0SndrKCkgY29uc3Q7CiAgICAgRXhjZXB0aW9u
T3I8VmVjdG9yPHVpbnQ4X3Q+PiBleHBvcnRTcGtpKCkgY29uc3Q7CiAgICAgRXhjZXB0aW9uT3I8
VmVjdG9yPHVpbnQ4X3Q+PiBleHBvcnRQa2NzOCgpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvY3J5cHRvL21hYy9DcnlwdG9BbGdvcml0aG1BRVNfQ0JDTWFjLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2NyeXB0by9tYWMvQ3J5cHRvQWxnb3JpdGhtQUVTX0NCQ01hYy5jcHAKaW5kZXgg
NGM4OTQwNzU0NTgyOTJjNDFiOGZmZWYxZjIyNjMyMzg3YWMxNGM4MS4uNTE3Y2ZjODliOTczNzE0
OWM0ODA3Yjg1YWQxZjIwZGZhMGFhYzFkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3J5
cHRvL21hYy9DcnlwdG9BbGdvcml0aG1BRVNfQ0JDTWFjLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9jcnlwdG8vbWFjL0NyeXB0b0FsZ29yaXRobUFFU19DQkNNYWMuY3BwCkBAIC02NCwxMyArNjQs
MTMgQEAgc3RhdGljIEV4Y2VwdGlvbk9yPFZlY3Rvcjx1aW50OF90Pj4gdHJhbnNmb3JtQUVTX0NC
QyhDQ09wZXJhdGlvbiBvcGVyYXRpb24sIGNvbnMKIAogRXhjZXB0aW9uT3I8VmVjdG9yPHVpbnQ4
X3Q+PiBDcnlwdG9BbGdvcml0aG1BRVNfQ0JDOjpwbGF0Zm9ybUVuY3J5cHQoY29uc3QgQ3J5cHRv
QWxnb3JpdGhtQWVzQ2JjQ2ZiUGFyYW1zJiBwYXJhbWV0ZXJzLCBjb25zdCBDcnlwdG9LZXlBRVMm
IGtleSwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBwbGFpblRleHQpCiB7Ci0gICAgQVNTRVJUKHBh
cmFtZXRlcnMuaXZWZWN0b3IoKS5zaXplKCkgPT0ga0NDQmxvY2tTaXplQUVTMTI4KTsKKyAgICBB
U1NFUlQocGFyYW1ldGVycy5pdlZlY3RvcigpLnNpemUoKSA9PSBrQ0NCbG9ja1NpemVBRVMxMjgg
fHwgcGFyYW1ldGVycy5pdlZlY3RvcigpLmlzRW1wdHkoKSk7CiAgICAgcmV0dXJuIHRyYW5zZm9y
bUFFU19DQkMoa0NDRW5jcnlwdCwgcGFyYW1ldGVycy5pdlZlY3RvcigpLCBrZXkua2V5KCksIHBs
YWluVGV4dCk7CiB9CiAKIEV4Y2VwdGlvbk9yPFZlY3Rvcjx1aW50OF90Pj4gQ3J5cHRvQWxnb3Jp
dGhtQUVTX0NCQzo6cGxhdGZvcm1EZWNyeXB0KGNvbnN0IENyeXB0b0FsZ29yaXRobUFlc0NiY0Nm
YlBhcmFtcyYgcGFyYW1ldGVycywgY29uc3QgQ3J5cHRvS2V5QUVTJiBrZXksIGNvbnN0IFZlY3Rv
cjx1aW50OF90PiYgY2lwaGVyVGV4dCkKIHsKLSAgICBBU1NFUlQocGFyYW1ldGVycy5pdlZlY3Rv
cigpLnNpemUoKSA9PSBrQ0NCbG9ja1NpemVBRVMxMjgpOworICAgIEFTU0VSVChwYXJhbWV0ZXJz
Lml2VmVjdG9yKCkuc2l6ZSgpID09IGtDQ0Jsb2NrU2l6ZUFFUzEyOCB8fCBwYXJhbWV0ZXJzLml2
VmVjdG9yKCkuaXNFbXB0eSgpKTsKICAgICByZXR1cm4gdHJhbnNmb3JtQUVTX0NCQyhrQ0NEZWNy
eXB0LCBwYXJhbWV0ZXJzLml2VmVjdG9yKCksIGtleS5rZXkoKSwgY2lwaGVyVGV4dCk7CiB9CiAK
ZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBkMWY1
YjJmMTc1OGE2NDI3MWM0NTQyYzAyZGM5Y2Y3ODc4MGJkNDMxLi4yZDE1NTMzZTE4OWJiOTQ5M2Zk
ZTExMjk2OWM1YWVkNmQwNjFhZDI0IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIv
VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjAgQEAKKzIwMTktMTItMTcgIEppZXdlbiBUYW4g
IDxqaWV3ZW5fdGFuQGFwcGxlLmNvbT4KKworICAgICAgICBbV2ViQXV0aG5dIEltcGxlbWVudCBj
b2RlcnMgZm9yIENUQVAgQ2xpZW50UElOIHJlcXVlc3RzIGFuZCByZXNwb25zZXMKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNTM3NgorICAgICAgICA8
cmRhcjovL3Byb2JsZW0vNTgwMzQzOTU+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgQWRkcyBBUEkgdGVzdHMuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0
QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBU
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvQ3RhcFBpblRlc3QuY3BwOiBBZGRlZC4KKyAgICAg
ICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViQ29yZS9DdGFwUmVxdWVzdFRlc3QuY3BwOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVT
VCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0ZpZG9UZXN0RGF0YS5o
OgorCiAyMDE5LTEyLTExICBKb25hdGhhbiBCZWRhcmQgIDxqYmVkYXJkQGFwcGxlLmNvbT4KIAog
ICAgICAgICBQeXRob24gMzogU3VwcG9ydCBzZXJpYWwgU2VydmVyUHJvY2VzcyB0ZXN0cwpkaWZm
IC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2ogYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagppbmRleCA4MTNiODFmYzU5YzQxNzVmZGIzYjM5ZDc0MzBmYzFiNmM1
MzhkZWFmLi5hNDQwYTNiNzIyNmJmOWJmNGUzZThkMjAzNGVlZjFlYmRiNTkyZWY5IDEwMDY0NAot
LS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagpAQCAtMzQxLDYgKzM0MSw3IEBACiAJCTU3MzI1NUE2MjIxMzlCQzcw
MDM5NkFFOCAvKiBsb2FkLXdlYi1hcmNoaXZlLTEuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NzMyNTVBMjIyMTM5QjhGMDAzOTZBRTgg
LyogbG9hZC13ZWItYXJjaGl2ZS0xLmh0bWwgKi87IH07CiAJCTU3MzI1NUE3MjIxMzlCQzcwMDM5
NkFFOCAvKiBsb2FkLXdlYi1hcmNoaXZlLTIuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NzMyNTVBMzIyMTM5QjkwMDAzOTZBRTggLyog
bG9hZC13ZWItYXJjaGl2ZS0yLmh0bWwgKi87IH07CiAJCTU3NEY1NUQyMjA0RDQ3RjAwMDI5NDhD
NiAvKiBTZWN1cml0eS5mcmFtZXdvcmsgaW4gRnJhbWV3b3JrcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA1NzRGNTVEMDIwNEQ0NzFDMDAyOTQ4QzYgLyogU2VjdXJpdHkuZnJh
bWV3b3JrICovOyB9OworCQk1NzU4NTk3RjIzQTI1MjdBMDBDNzQ1NzIgLyogQ3RhcFBpblRlc3Qu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTc1ODU5
N0UyM0EyNTI3QTAwQzc0NTcyIC8qIEN0YXBQaW5UZXN0LmNwcCAqLzsgfTsKIAkJNTc1OTlFMjEx
RjA3MTkxOTAwQTNGQjhDIC8qIEluZGV4ZWREQlN0cnVjdHVyZWRDbG9uZUJhY2t3YXJkQ29tcGF0
aWJpbGl0eS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDU3NTk5RTIwMUYwNzE5MTcwMEEzRkI4QyAvKiBJbmRleGVkREJTdHJ1Y3R1cmVkQ2xvbmVCYWNr
d2FyZENvbXBhdGliaWxpdHkubW0gKi87IH07CiAJCTU3NTk5RTI3MUYwNzFBQTAwMEEzRkI4QyAv
KiBJbmRleGVkREJTdHJ1Y3R1cmVkQ2xvbmVCYWNrd2FyZENvbXBhdGliaWxpdHkuc3FsaXRlMyBp
biBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NzU5
OUUyNDFGMDcxOTJDMDBBM0ZCOEMgLyogSW5kZXhlZERCU3RydWN0dXJlZENsb25lQmFja3dhcmRD
b21wYXRpYmlsaXR5LnNxbGl0ZTMgKi87IH07CiAJCTU3NTk5RTI4MUYwNzFBQTAwMEEzRkI4QyAv
KiBJbmRleGVkREJTdHJ1Y3R1cmVkQ2xvbmVCYWNrd2FyZENvbXBhdGliaWxpdHkuc3FsaXRlMy1z
aG0gaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NTc1OTlFMjYxRjA3MTkyQzAwQTNGQjhDIC8qIEluZGV4ZWREQlN0cnVjdHVyZWRDbG9uZUJhY2t3
YXJkQ29tcGF0aWJpbGl0eS5zcWxpdGUzLXNobSAqLzsgfTsKQEAgLTE5MDEsNiArMTkwMiw4IEBA
CiAJCTU3MzI1NUE0MjIxMzlCOTAwMDM5NkFFOCAvKiBoZWxsb3dvcmxkLndlYmFyY2hpdmUgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBmaWxlLmJwbGlz
dDsgcGF0aCA9IGhlbGxvd29ybGQud2ViYXJjaGl2ZTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNTczNUYwMjUxRjNBNEVBNjAwMEVFODAxIC8qIFRlc3RXZWJLaXRBUEktaU9TLmVudGl0
bGVtZW50cyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHRleHQucGxpc3QuZW50aXRsZW1lbnRzOyBwYXRoID0gIlRlc3RXZWJLaXRBUEktaU9TLmVudGl0
bGVtZW50cyI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU3NEY1NUQwMjA0RDQ3MUMw
MDI5NDhDNiAvKiBTZWN1cml0eS5mcmFtZXdvcmsgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSB3cmFwcGVyLmZyYW1ld29yazsgbmFtZSA9IFNlY3VyaXR5
LmZyYW1ld29yazsgcGF0aCA9IFN5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvU2VjdXJpdHkuZnJh
bWV3b3JrOyBzb3VyY2VUcmVlID0gU0RLUk9PVDsgfTsKKwkJNTc1ODU5N0QyM0EyNTI3QTAwQzc0
NTcyIC8qIEN0YXBQaW5UZXN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEN0YXBQaW5UZXN0Lmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTU3NTg1OTdFMjNBMjUyN0EwMEM3NDU3MiAvKiBDdGFw
UGluVGVzdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDdGFwUGluVGVzdC5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU3NTk5RTIwMUYwNzE5MTcwMEEzRkI4QyAvKiBJbmRleGVk
REJTdHJ1Y3R1cmVkQ2xvbmVCYWNrd2FyZENvbXBhdGliaWxpdHkubW0gKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBJbmRleGVkREJTdHJ1Y3R1cmVkQ2xvbmVCYWNrd2Fy
ZENvbXBhdGliaWxpdHkubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU3NTk5RTIz
MUYwNzE5MkMwMEEzRkI4QyAvKiBJbmRleGVkREJTdHJ1Y3R1cmVkQ2xvbmVCYWNrd2FyZENvbXBh
dGliaWxpdHlXcml0ZS5odG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gdGV4dC5odG1sOyBwYXRoID0gSW5kZXhlZERCU3RydWN0dXJlZENsb25lQmFj
a3dhcmRDb21wYXRpYmlsaXR5V3JpdGUuaHRtbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNTc1OTlFMjQxRjA3MTkyQzAwQTNGQjhDIC8qIEluZGV4ZWREQlN0cnVjdHVyZWRDbG9uZUJh
Y2t3YXJkQ29tcGF0aWJpbGl0eS5zcWxpdGUzICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gZmlsZTsgcGF0aCA9IEluZGV4ZWREQlN0cnVjdHVyZWRDbG9u
ZUJhY2t3YXJkQ29tcGF0aWJpbGl0eS5zcWxpdGUzOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwpAQCAtMzA5Miw2ICszMDk1LDggQEAKIAkJCQkxQzlFQjg0MDFFMzgwREExMDA1QzY0NDIgLyog
Q29tcGxleFRleHRDb250cm9sbGVyLmNwcCAqLywKIAkJCQk3Q0IxODRDNDFBQTNGMjEwMDA2NkVE
RkQgLyogQ29udGVudEV4dGVuc2lvbnMuY3BwICovLAogCQkJCUNENTQ1MUU5MTlFNDFGOUQwMDE2
OTM2RiAvKiBDU1NQYXJzZXIuY3BwICovLAorCQkJCTU3NTg1OTdFMjNBMjUyN0EwMEM3NDU3MiAv
KiBDdGFwUGluVGVzdC5jcHAgKi8sCisJCQkJNTc1ODU5N0QyM0EyNTI3QTAwQzc0NTcyIC8qIEN0
YXBQaW5UZXN0LmggKi8sCiAJCQkJNTcyQjQwMzMyMTc2OUE4ODAwMEFENDNFIC8qIEN0YXBSZXF1
ZXN0VGVzdC5jcHAgKi8sCiAJCQkJNTcyQjQwNDMyMTc4MUI0MjAwMEFENDNFIC8qIEN0YXBSZXNw
b25zZVRlc3QuY3BwICovLAogCQkJCTI2MEJBNTc4MUIxRDJFN0IwMDRGQTA3QyAvKiBERkFDb21i
aW5lci5jcHAgKi8sCkBAIC00NTc0LDYgKzQ1NzksNyBAQAogCQkJCTdDQ0U3RUFDMUE0MTFBMzQw
MDQ0N0M0QyAvKiBDb3VudGVycy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3QUVBRDQ3RjFFMjAx
MTZDMDA0MTZFRkUgLyogQ3Jvc3NQYXJ0aXRpb25GaWxlU2NoZW1lQWNjZXNzLm1tIGluIFNvdXJj
ZXMgKi8sCiAJCQkJN0NDRTdFREIxQTQxMUE5MjAwNDQ3QzRDIC8qIENTU1BhcnNlci5jcHAgaW4g
U291cmNlcyAqLywKKwkJCQk1NzU4NTk3RjIzQTI1MjdBMDBDNzQ1NzIgLyogQ3RhcFBpblRlc3Qu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTcyQjQwMzQyMTc2OUE4ODAwMEFENDNFIC8qIEN0YXBS
ZXF1ZXN0VGVzdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1NzJCNDA0NDIxNzgxQjQzMDAwQUQ0
M0UgLyogQ3RhcFJlc3BvbnNlVGVzdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3QUM3QjU3MDIw
RDlCQTVCMDAyQzA5QTAgLyogQ3VzdG9tQnVuZGxlT2JqZWN0Lm1tIGluIFNvdXJjZXMgKi8sCmRp
ZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvQ3RhcFBpblRlc3Qu
Y3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0N0YXBQaW5UZXN0LmNwcApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5hNjNhYTY2OTk1OWI1NWJjZDE0N2Q3MzI1ZDNlZmZhODU1ZTRlODU3Ci0tLSAv
ZGV2L251bGwKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0N0YXBQaW5U
ZXN0LmNwcApAQCAtMCwwICsxLDI5NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
KyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcu
aCIKKworI2lmIEVOQUJMRShXRUJfQVVUSE4pCisKKyNpbmNsdWRlICJGaWRvVGVzdERhdGEuaCIK
KyNpbmNsdWRlICJQbGF0Zm9ybVV0aWxpdGllcy5oIgorI2luY2x1ZGUgPFdlYkNvcmUvQ0JPUlJl
YWRlci5oPgorI2luY2x1ZGUgPFdlYkNvcmUvQ0JPUlZhbHVlLmg+CisjaW5jbHVkZSA8V2ViQ29y
ZS9DcnlwdG9BbGdvcml0aG1BRVNfQ0JDLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9DcnlwdG9BbGdv
cml0aG1BZXNDYmNDZmJQYXJhbXMuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0NyeXB0b0FsZ29yaXRo
bUVDREguaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0NyeXB0b0tleUFFUy5oPgorI2luY2x1ZGUgPFdl
YkNvcmUvQ3J5cHRvS2V5RUMuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0NyeXB0b0tleUhNQUMuaD4K
KyNpbmNsdWRlIDxXZWJDb3JlL0ZpZG9Db25zdGFudHMuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1Bp
bi5oPgorI2luY2x1ZGUgPFdlYkNvcmUvV2ViQXV0aGVudGljYXRpb25Db25zdGFudHMuaD4KKyNp
bmNsdWRlIDxXZWJDb3JlL1dlYkF1dGhlbnRpY2F0aW9uVXRpbHMuaD4KKyNpbmNsdWRlIDx3dGYv
dGV4dC9CYXNlNjQuaD4KKworbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgewordXNpbmcgbmFtZXNw
YWNlIFdlYkNvcmU7Cit1c2luZyBuYW1lc3BhY2UgY2JvcjsKK3VzaW5nIG5hbWVzcGFjZSBmaWRv
OwordXNpbmcgbmFtZXNwYWNlIGZpZG86OnBpbjsKKworVEVTVChDdGFwUGluVGVzdCwgVGVzdFZh
bGlkYXRlQW5kQ29udmVydFRvVVRGOCkKK3sKKyAgICAvLyBGYWlsdXJlIGNhc2VzCisgICAgYXV0
byByZXN1bHQgPSB2YWxpZGF0ZUFuZENvbnZlcnRUb1VURjgoIjEyMyIpOworICAgIEVYUEVDVF9G
QUxTRShyZXN1bHQpOworICAgIHJlc3VsdCA9IHZhbGlkYXRlQW5kQ29udmVydFRvVVRGOCgiIik7
CisgICAgRVhQRUNUX0ZBTFNFKHJlc3VsdCk7CisgICAgcmVzdWx0ID0gdmFsaWRhdGVBbmRDb252
ZXJ0VG9VVEY4KCIxMjM0NTY3ODEyMzQ1Njc4MTIzNDU2NzgxMjM0NTY3ODEyMzQ1Njc4MTIzNDU2
NzgxMjM0NTY3ODEyMzQ1Njc4Iik7CisgICAgRVhQRUNUX0ZBTFNFKHJlc3VsdCk7CisKKyAgICAv
LyBTdWNjZXNzIGNhc2VzCisgICAgcmVzdWx0ID0gdmFsaWRhdGVBbmRDb252ZXJ0VG9VVEY4KCIx
MjM0Iik7CisgICAgRVhQRUNUX1RSVUUocmVzdWx0KTsKKyAgICBFWFBFQ1RfRVEocmVzdWx0LT5s
ZW5ndGgoKSwgNHUpOworICAgIEVYUEVDVF9TVFJFUShyZXN1bHQtPmRhdGEoKSwgIjEyMzQiKTsK
KworICAgIHJlc3VsdCA9IHZhbGlkYXRlQW5kQ29udmVydFRvVVRGOCgiMTIzNDU2NzgxMjM0NTY3
ODEyMzQ1Njc4MTIzNDU2NzgxMjM0NTY3ODEyMzQ1Njc4MTIzNDU2NzgxMjM0NTY3Iik7CisgICAg
RVhQRUNUX1RSVUUocmVzdWx0KTsKKyAgICBFWFBFQ1RfRVEocmVzdWx0LT5sZW5ndGgoKSwgNjN1
KTsKKyAgICBFWFBFQ1RfU1RSRVEocmVzdWx0LT5kYXRhKCksICIxMjM0NTY3ODEyMzQ1Njc4MTIz
NDU2NzgxMjM0NTY3ODEyMzQ1Njc4MTIzNDU2NzgxMjM0NTY3ODEyMzQ1NjciKTsKK30KKworVEVT
VChDdGFwUGluVGVzdCwgVGVzdFJldHJpZXNSZXF1ZXN0KQoreworICAgIGF1dG8gcmVzdWx0ID0g
ZW5jb2RlQXNDQk9SKFJldHJpZXNSZXF1ZXN0IHsgfSk7CisgICAgRVhQRUNUX0VRKHJlc3VsdC5z
aXplKCksIHNpemVvZihUZXN0RGF0YTo6a0N0YXBDbGllbnRQaW5SZXRyaWVzKSk7CisgICAgRVhQ
RUNUX0VRKG1lbWNtcChyZXN1bHQuZGF0YSgpLCBUZXN0RGF0YTo6a0N0YXBDbGllbnRQaW5SZXRy
aWVzLCByZXN1bHQuc2l6ZSgpKSwgMCk7Cit9CisKK1RFU1QoQ3RhcFBpblRlc3QsIFRlc3RSZXRy
aWVzUmVzcG9uc2UpCit7CisgICAgLy8gRmFpbHVyZSBjYXNlcworICAgIGF1dG8gcmVzdWx0ID0g
UmV0cmllc1Jlc3BvbnNlOjpwYXJzZSh7IH0pOworICAgIEVYUEVDVF9GQUxTRShyZXN1bHQpOwor
CisgICAgY29uc3QgdWludDhfdCB0ZXN0RGF0YTFbXSA9IHsgMHgwNSB9OyAvLyB3cm9uZyByZXNw
b25zZSBjb2RlCisgICAgcmVzdWx0ID0gUmV0cmllc1Jlc3BvbnNlOjpwYXJzZShjb252ZXJ0Qnl0
ZXNUb1ZlY3Rvcih0ZXN0RGF0YTEsIHNpemVvZih0ZXN0RGF0YTEpKSk7CisgICAgRVhQRUNUX0ZB
TFNFKHJlc3VsdCk7CisKKyAgICBjb25zdCB1aW50OF90IHRlc3REYXRhMltdID0geyAweDAwLCAw
eDAwIH07IC8vIHdyb25nIENCT1IgbWFwCisgICAgcmVzdWx0ID0gUmV0cmllc1Jlc3BvbnNlOjpw
YXJzZShjb252ZXJ0Qnl0ZXNUb1ZlY3Rvcih0ZXN0RGF0YTIsIHNpemVvZih0ZXN0RGF0YTIpKSk7
CisgICAgRVhQRUNUX0ZBTFNFKHJlc3VsdCk7CisKKyAgICByZXN1bHQgPSBSZXRyaWVzUmVzcG9u
c2U6OnBhcnNlKGNvbnZlcnRCeXRlc1RvVmVjdG9yKFRlc3REYXRhOjprQ3RhcENsaWVudFBpblRv
a2VuUmVzcG9uc2UsIHNpemVvZihUZXN0RGF0YTo6a0N0YXBDbGllbnRQaW5Ub2tlblJlc3BvbnNl
KSkpOyAvLyB3cm9uZyByZXNwb25zZQorICAgIEVYUEVDVF9GQUxTRShyZXN1bHQpOworCisgICAg
Ly8gU3VjY2VzcyBjYXNlcworICAgIHJlc3VsdCA9IFJldHJpZXNSZXNwb25zZTo6cGFyc2UoY29u
dmVydEJ5dGVzVG9WZWN0b3IoVGVzdERhdGE6OmtDdGFwQ2xpZW50UGluUmV0cmllc1Jlc3BvbnNl
LCBzaXplb2YoVGVzdERhdGE6OmtDdGFwQ2xpZW50UGluUmV0cmllc1Jlc3BvbnNlKSkpOworICAg
IEVYUEVDVF9UUlVFKHJlc3VsdCk7CisgICAgRVhQRUNUX0VRKHJlc3VsdC0+cmV0cmllcywgOCk7
Cit9CisKK1RFU1QoQ3RhcFBpblRlc3QsIFRlc3RLZXlBZ3JlZW1lbnRSZXF1ZXN0KQoreworICAg
IGF1dG8gcmVzdWx0ID0gZW5jb2RlQXNDQk9SKEtleUFncmVlbWVudFJlcXVlc3QgeyB9KTsKKyAg
ICBFWFBFQ1RfRVEocmVzdWx0LnNpemUoKSwgc2l6ZW9mKFRlc3REYXRhOjprQ3RhcENsaWVudFBp
bktleUFncmVlbWVudCkpOworICAgIEVYUEVDVF9FUShtZW1jbXAocmVzdWx0LmRhdGEoKSwgVGVz
dERhdGE6OmtDdGFwQ2xpZW50UGluS2V5QWdyZWVtZW50LCByZXN1bHQuc2l6ZSgpKSwgMCk7Cit9
CisKK1RFU1QoQ3RhcFBpblRlc3QsIFRlc3RLZXlBZ3JlZW1lbnRSZXNwb25zZSkKK3sKKyAgICAv
LyBGYWlsdXJlIGNhc2VzCisgICAgYXV0byByZXN1bHQgPSBLZXlBZ3JlZW1lbnRSZXNwb25zZTo6
cGFyc2UoeyB9KTsKKyAgICBFWFBFQ1RfRkFMU0UocmVzdWx0KTsKKworICAgIGNvbnN0IHVpbnQ4
X3QgdGVzdERhdGExW10gPSB7IDB4MDUgfTsgLy8gd3JvbmcgcmVzcG9uc2UgY29kZQorICAgIHJl
c3VsdCA9IEtleUFncmVlbWVudFJlc3BvbnNlOjpwYXJzZShjb252ZXJ0Qnl0ZXNUb1ZlY3Rvcih0
ZXN0RGF0YTEsIHNpemVvZih0ZXN0RGF0YTEpKSk7CisgICAgRVhQRUNUX0ZBTFNFKHJlc3VsdCk7
CisKKyAgICBjb25zdCB1aW50OF90IHRlc3REYXRhMltdID0geyAweDAwLCAweDAwIH07IC8vIHdy
b25nIENCT1IgbWFwCisgICAgcmVzdWx0ID0gS2V5QWdyZWVtZW50UmVzcG9uc2U6OnBhcnNlKGNv
bnZlcnRCeXRlc1RvVmVjdG9yKHRlc3REYXRhMiwgc2l6ZW9mKHRlc3REYXRhMikpKTsKKyAgICBF
WFBFQ1RfRkFMU0UocmVzdWx0KTsKKworICAgIHJlc3VsdCA9IEtleUFncmVlbWVudFJlc3BvbnNl
OjpwYXJzZShjb252ZXJ0Qnl0ZXNUb1ZlY3RvcihUZXN0RGF0YTo6a0N0YXBDbGllbnRQaW5Ub2tl
blJlc3BvbnNlLCBzaXplb2YoVGVzdERhdGE6OmtDdGFwQ2xpZW50UGluVG9rZW5SZXNwb25zZSkp
KTsgLy8gd3JvbmcgcmVzcG9uc2UKKyAgICBFWFBFQ1RfRkFMU0UocmVzdWx0KTsKKworICAgIC8v
IFRlc3QgQ09TRQorICAgIGF1dG8gY29zZUtleSA9IGVuY29kZUNPU0VQdWJsaWNLZXkoVmVjdG9y
PHVpbnQ4X3Q+KDY1KSk7CisgICAgY29zZUtleVtDQk9SVmFsdWUoQ09TRTo6a3R5KV0gPSBDQk9S
VmFsdWUoMCk7IC8vIHdyb25nIGt0eQorICAgIGF1dG8gY29zZVJlc3VsdCA9IEtleUFncmVlbWVu
dFJlc3BvbnNlOjpwYXJzZUZyb21DT1NFKGNvc2VLZXkpOworICAgIEVYUEVDVF9GQUxTRShjb3Nl
UmVzdWx0KTsKKworICAgIGNvc2VLZXkgPSBlbmNvZGVDT1NFUHVibGljS2V5KFZlY3Rvcjx1aW50
OF90Pig2NSkpOworICAgIGNvc2VLZXlbQ0JPUlZhbHVlKENPU0U6OmFsZyldID0gQ0JPUlZhbHVl
KDApOyAvLyB3cm9uZyBhbGcKKyAgICBjb3NlUmVzdWx0ID0gS2V5QWdyZWVtZW50UmVzcG9uc2U6
OnBhcnNlRnJvbUNPU0UoY29zZUtleSk7CisgICAgRVhQRUNUX0ZBTFNFKGNvc2VSZXN1bHQpOwor
CisgICAgY29zZUtleSA9IGVuY29kZUNPU0VQdWJsaWNLZXkoVmVjdG9yPHVpbnQ4X3Q+KDY1KSk7
CisgICAgY29zZUtleVtDQk9SVmFsdWUoQ09TRTo6Y3J2KV0gPSBDQk9SVmFsdWUoMCk7IC8vIHdy
b25nIGNydgorICAgIGNvc2VSZXN1bHQgPSBLZXlBZ3JlZW1lbnRSZXNwb25zZTo6cGFyc2VGcm9t
Q09TRShjb3NlS2V5KTsKKyAgICBFWFBFQ1RfRkFMU0UoY29zZVJlc3VsdCk7CisKKyAgICBjb3Nl
S2V5ID0gZW5jb2RlQ09TRVB1YmxpY0tleShWZWN0b3I8dWludDhfdD4oNjUpKTsKKyAgICBjb3Nl
S2V5W0NCT1JWYWx1ZShDT1NFOjp4KV0gPSBDQk9SVmFsdWUoMCk7IC8vIHdyb25nIHgKKyAgICBj
b3NlUmVzdWx0ID0gS2V5QWdyZWVtZW50UmVzcG9uc2U6OnBhcnNlRnJvbUNPU0UoY29zZUtleSk7
CisgICAgRVhQRUNUX0ZBTFNFKGNvc2VSZXN1bHQpOworCisgICAgY29zZUtleSA9IGVuY29kZUNP
U0VQdWJsaWNLZXkoVmVjdG9yPHVpbnQ4X3Q+KDY1KSk7CisgICAgY29zZUtleVtDQk9SVmFsdWUo
Q09TRTo6eSldID0gQ0JPUlZhbHVlKDApOyAvLyB3cm9uZyB5CisgICAgY29zZVJlc3VsdCA9IEtl
eUFncmVlbWVudFJlc3BvbnNlOjpwYXJzZUZyb21DT1NFKGNvc2VLZXkpOworICAgIEVYUEVDVF9G
QUxTRShjb3NlUmVzdWx0KTsKKworICAgIC8vIFN1Y2Nlc3MgY2FzZXMKKyAgICByZXN1bHQgPSBL
ZXlBZ3JlZW1lbnRSZXNwb25zZTo6cGFyc2UoY29udmVydEJ5dGVzVG9WZWN0b3IoVGVzdERhdGE6
OmtDdGFwQ2xpZW50UGluS2V5QWdyZWVtZW50UmVzcG9uc2UsIHNpemVvZihUZXN0RGF0YTo6a0N0
YXBDbGllbnRQaW5LZXlBZ3JlZW1lbnRSZXNwb25zZSkpKTsKKyAgICBFWFBFQ1RfVFJVRShyZXN1
bHQpOworICAgIGF1dG8gZXhwb3J0ZWRSYXdLZXkgPSByZXN1bHQtPnBlZXJLZXktPmV4cG9ydFJh
dygpOworICAgIEVYUEVDVF9GQUxTRShleHBvcnRlZFJhd0tleS5oYXNFeGNlcHRpb24oKSk7Cisg
ICAgVmVjdG9yPHVpbnQ4X3Q+IGV4cGVjdGVkUmF3S2V5OworICAgIGV4cGVjdGVkUmF3S2V5LnJl
c2VydmVDYXBhY2l0eSg2NSk7CisgICAgZXhwZWN0ZWRSYXdLZXkuYXBwZW5kKDB4MDQpOworICAg
IGV4cGVjdGVkUmF3S2V5LmFwcGVuZChUZXN0RGF0YTo6a0N0YXBDbGllbnRQaW5LZXlBZ3JlZW1l
bnRSZXNwb25zZSArIDE0LCAzMik7IC8vIFgKKyAgICBleHBlY3RlZFJhd0tleS5hcHBlbmQoVGVz
dERhdGE6OmtDdGFwQ2xpZW50UGluS2V5QWdyZWVtZW50UmVzcG9uc2UgKyA0OSwgMzIpOyAvLyBZ
CisgICAgRVhQRUNUX1RSVUUoZXhwb3J0ZWRSYXdLZXkucmV0dXJuVmFsdWUoKSA9PSBleHBlY3Rl
ZFJhd0tleSk7Cit9CisKK1RFU1QoQ3RhcFBpblRlc3QsIFRlc3RUb2tlblJlcXVlc3QpCit7Cisg
ICAgLy8gR2VuZXJhdGUgYW4gRUMga2V5IHBhaXIgYXMgdGhlIHBlZXIga2V5LgorICAgIGF1dG8g
a2V5UGFpclJlc3VsdCA9IENyeXB0b0tleUVDOjpnZW5lcmF0ZVBhaXIoQ3J5cHRvQWxnb3JpdGht
SWRlbnRpZmllcjo6RUNESCwgIlAtMjU2IiwgdHJ1ZSwgQ3J5cHRvS2V5VXNhZ2VEZXJpdmVCaXRz
KTsKKyAgICBBU1NFUlRfRkFMU0Uoa2V5UGFpclJlc3VsdC5oYXNFeGNlcHRpb24oKSk7CisgICAg
YXV0byBrZXlQYWlyID0ga2V5UGFpclJlc3VsdC5yZWxlYXNlUmV0dXJuVmFsdWUoKTsKKworICAg
IENTdHJpbmcgcGluID0gIjEyMzQiOworCisgICAgYXV0byB0b2tlbiA9IFRva2VuUmVxdWVzdDo6
dHJ5Q3JlYXRlKHBpbiwgZG93bmNhc3Q8Q3J5cHRvS2V5RUM+KCprZXlQYWlyLnB1YmxpY0tleSkp
OworICAgIEVYUEVDVF9UUlVFKHRva2VuKTsKKyAgICBhdXRvIHJlc3VsdCA9IGVuY29kZUFzQ0JP
UigqdG9rZW4pOworICAgIEVYUEVDVF9FUShyZXN1bHQuc2l6ZSgpLCAxMjB1KTsKKyAgICBFWFBF
Q1RfRVEocmVzdWx0WzBdLCBzdGF0aWNfY2FzdDx1aW50OF90PihDdGFwUmVxdWVzdENvbW1hbmQ6
OmtBdXRoZW50aWNhdG9yQ2xpZW50UGluKSk7CisKKyAgICAvLyBEZWNvZGUgdGhlIENCT1IgYmlu
YXJ5IHRvIGNoZWNrIGlmIGVhY2ggZmllbGQgaXMgZW5jb2RlZCBjb3JyZWN0bHkuCisgICAgVmVj
dG9yPHVpbnQ4X3Q+IGJ1ZmZlcjsKKyAgICBidWZmZXIuYXBwZW5kKHJlc3VsdC5kYXRhKCkgKyAx
LCByZXN1bHQuc2l6ZSgpIC0gMSk7CisgICAgYXV0byBkZWNvZGVkUmVzcG9uc2UgPSBjYm9yOjpD
Qk9SUmVhZGVyOjpyZWFkKGJ1ZmZlcik7CisgICAgRVhQRUNUX1RSVUUoZGVjb2RlZFJlc3BvbnNl
KTsKKyAgICBFWFBFQ1RfVFJVRShkZWNvZGVkUmVzcG9uc2UtPmlzTWFwKCkpOworICAgIGNvbnN0
IGF1dG8mIHJlc3BvbnNlTWFwID0gZGVjb2RlZFJlc3BvbnNlLT5nZXRNYXAoKTsKKworICAgIGNv
bnN0IGF1dG8mIGl0MSA9IHJlc3BvbnNlTWFwLmZpbmQoQ0JPUlZhbHVlKHN0YXRpY19jYXN0PHVp
bnQ4X3Q+KFJlcXVlc3RLZXk6OmtQcm90b2NvbCkpKTsKKyAgICBFWFBFQ1RfTkUoaXQxLCByZXNw
b25zZU1hcC5lbmQoKSk7CisgICAgRVhQRUNUX0VRKGl0MS0+c2Vjb25kLmdldEludGVnZXIoKSwg
a1Byb3RvY29sVmVyc2lvbik7CisKKyAgICBjb25zdCBhdXRvJiBpdDIgPSByZXNwb25zZU1hcC5m
aW5kKENCT1JWYWx1ZShzdGF0aWNfY2FzdDx1aW50OF90PihSZXF1ZXN0S2V5OjprU3ViY29tbWFu
ZCkpKTsKKyAgICBFWFBFQ1RfTkUoaXQyLCByZXNwb25zZU1hcC5lbmQoKSk7CisgICAgRVhQRUNU
X0VRKGl0Mi0+c2Vjb25kLmdldEludGVnZXIoKSwgc3RhdGljX2Nhc3Q8dWludDhfdD4oU3ViY29t
bWFuZDo6a0dldFBpblRva2VuKSk7CisKKyAgICAvLyBDT1NFCisgICAgYXV0byBpdCA9IHJlc3Bv
bnNlTWFwLmZpbmQoQ0JPUlZhbHVlKHN0YXRpY19jYXN0PGludD4oUmVxdWVzdEtleTo6a0tleUFn
cmVlbWVudCkpKTsKKyAgICBFWFBFQ1RfVFJVRShkZWNvZGVkUmVzcG9uc2UpOworICAgIEVYUEVD
VF9UUlVFKGRlY29kZWRSZXNwb25zZS0+aXNNYXAoKSk7CisgICAgY29uc3QgYXV0byYgY29zZUtl
eSA9IGl0LT5zZWNvbmQuZ2V0TWFwKCk7CisKKyAgICBjb25zdCBhdXRvJiBpdDMgPSBjb3NlS2V5
LmZpbmQoQ0JPUlZhbHVlKENPU0U6Omt0eSkpOworICAgIEVYUEVDVF9ORShpdDMsIGNvc2VLZXku
ZW5kKCkpOworICAgIEVYUEVDVF9FUShpdDMtPnNlY29uZC5nZXRJbnRlZ2VyKCksIENPU0U6OkVD
Mik7CisKKyAgICBjb25zdCBhdXRvJiBpdDQgPSBjb3NlS2V5LmZpbmQoQ0JPUlZhbHVlKENPU0U6
OmFsZykpOworICAgIEVYUEVDVF9ORShpdDQsIGNvc2VLZXkuZW5kKCkpOworICAgIEVYUEVDVF9F
UShpdDQtPnNlY29uZC5nZXRJbnRlZ2VyKCksIENPU0U6OkVDREgyNTYpOworCisgICAgY29uc3Qg
YXV0byYgaXQ1ID0gY29zZUtleS5maW5kKENCT1JWYWx1ZShDT1NFOjpjcnYpKTsKKyAgICBFWFBF
Q1RfTkUoaXQ1LCBjb3NlS2V5LmVuZCgpKTsKKyAgICBFWFBFQ1RfRVEoaXQ1LT5zZWNvbmQuZ2V0
SW50ZWdlcigpLCBDT1NFOjpQXzI1Nik7CisKKyAgICAvLyBDaGVjayB0aGUgY29zZSBrZXkuCisg
ICAgY29uc3QgYXV0byYgeEl0ID0gY29zZUtleS5maW5kKENCT1JWYWx1ZShDT1NFOjp4KSk7Cisg
ICAgRVhQRUNUX05FKHhJdCwgY29zZUtleS5lbmQoKSk7CisgICAgY29uc3QgYXV0byYgeUl0ID0g
Y29zZUtleS5maW5kKENCT1JWYWx1ZShDT1NFOjp5KSk7CisgICAgRVhQRUNUX05FKHlJdCwgY29z
ZUtleS5lbmQoKSk7CisgICAgYXV0byBjb3NlUHVibGljS2V5ID0gQ3J5cHRvS2V5RUM6OmltcG9y
dFJhdyhDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpFQ0RILCAiUC0yNTYiLCBlbmNvZGVSYXdQ
dWJsaWNLZXkoeEl0LT5zZWNvbmQuZ2V0Qnl0ZVN0cmluZygpLCB5SXQtPnNlY29uZC5nZXRCeXRl
U3RyaW5nKCkpLCB0cnVlLCBDcnlwdG9LZXlVc2FnZURlcml2ZUJpdHMpOworICAgIEVYUEVDVF9U
UlVFKGNvc2VQdWJsaWNLZXkpOworCisgICAgLy8gQ2hlY2sgdGhlIGVuY3J5cHRlZCBQaW4uCisg
ICAgYXV0byBzaGFyZWRLZXlSZXN1bHQgPSBDcnlwdG9BbGdvcml0aG1FQ0RIOjpwbGF0Zm9ybURl
cml2ZUJpdHMoZG93bmNhc3Q8Q3J5cHRvS2V5RUM+KCprZXlQYWlyLnByaXZhdGVLZXkpLCAqY29z
ZVB1YmxpY0tleSk7CisgICAgRVhQRUNUX1RSVUUoc2hhcmVkS2V5UmVzdWx0KTsKKyAgICBhdXRv
IGFlc0tleSA9IENyeXB0b0tleUFFUzo6aW1wb3J0UmF3KENyeXB0b0FsZ29yaXRobUlkZW50aWZp
ZXI6OkFFU19DQkMsIFdURk1vdmUoKnNoYXJlZEtleVJlc3VsdCksIHRydWUsIENyeXB0b0tleVVz
YWdlRGVjcnlwdCk7CisgICAgRVhQRUNUX1RSVUUoYWVzS2V5KTsKKworICAgIGNvbnN0IGF1dG8m
IGl0NiA9IHJlc3BvbnNlTWFwLmZpbmQoQ0JPUlZhbHVlKHN0YXRpY19jYXN0PHVpbnQ4X3Q+KFJl
cXVlc3RLZXk6OmtQaW5IYXNoRW5jKSkpOworICAgIEVYUEVDVF9ORShpdDYsIHJlc3BvbnNlTWFw
LmVuZCgpKTsKKyAgICBhdXRvIHBpbkhhc2hSZXN1bHQgPSBDcnlwdG9BbGdvcml0aG1BRVNfQ0JD
OjpwbGF0Zm9ybURlY3J5cHQoeyB9LCAqYWVzS2V5LCBpdDYtPnNlY29uZC5nZXRCeXRlU3RyaW5n
KCkpOworICAgIEVYUEVDVF9GQUxTRShwaW5IYXNoUmVzdWx0Lmhhc0V4Y2VwdGlvbigpKTsKKyAg
ICBhdXRvIHBpbkhhc2ggPSBwaW5IYXNoUmVzdWx0LnJlbGVhc2VSZXR1cm5WYWx1ZSgpOworICAg
IGNvbnN0IHVpbnQ4X3QgZXhwZWN0ZWRQaW5IYXNoW10gPSB7IDB4MDMsIDB4YWMsIDB4NjcsIDB4
NDIsIDB4MTYsIDB4ZjMsIDB4ZTEsIDB4NWMsIDB4NzYsIDB4MWUsIDB4ZTEsIDB4YTUsIDB4ZTIs
IDB4NTUsIDB4ZjAsIDB4NjcgfTsKKyAgICBFWFBFQ1RfRVEocGluSGFzaC5zaXplKCksIDE2dSk7
CisgICAgRVhQRUNUX0VRKG1lbWNtcChwaW5IYXNoLmRhdGEoKSwgZXhwZWN0ZWRQaW5IYXNoLCBw
aW5IYXNoLnNpemUoKSksIDApOworfQorCitURVNUKEN0YXBQaW5UZXN0LCBUZXN0VG9rZW5SZXNw
b25zZSkKK3sKKyAgICBjb25zdCB1aW50OF90IHNoYXJlZEtleURhdGFbXSA9IHsKKyAgICAgICAg
MHgwMywgMHhhYywgMHg2NywgMHg0MiwgMHgxNiwgMHhmMywgMHhlMSwgMHg1YywKKyAgICAgICAg
MHg3NiwgMHgxZSwgMHhlMSwgMHhhNSwgMHhlMiwgMHg1NSwgMHhmMCwgMHg2NywKKyAgICAgICAg
MHg5NSwgMHgzNiwgMHgyMywgMHhjOCwgMHhiMywgMHg4OCwgMHhiNCwgMHg0NSwKKyAgICAgICAg
MHg5ZSwgMHgxMywgMHhmOSwgMHg3OCwgMHhkNywgMHhjOCwgMHg0NiwgMHhmNCwgfTsKKyAgICBh
dXRvIHNoYXJlZEtleSA9IENyeXB0b0tleUFFUzo6aW1wb3J0UmF3KENyeXB0b0FsZ29yaXRobUlk
ZW50aWZpZXI6OkFFU19DQkMsIGNvbnZlcnRCeXRlc1RvVmVjdG9yKHNoYXJlZEtleURhdGEsIHNp
emVvZihzaGFyZWRLZXlEYXRhKSksIHRydWUsIENyeXB0b0tleVVzYWdlRW5jcnlwdCB8IENyeXB0
b0tleVVzYWdlRGVjcnlwdCk7CisgICAgQVNTRVJUX1RSVUUoc2hhcmVkS2V5KTsKKworICAgIC8v
IEZhaWx1cmUgY2FzZXMKKyAgICBhdXRvIHJlc3VsdCA9IFRva2VuUmVzcG9uc2U6OnBhcnNlKCpz
aGFyZWRLZXksIHsgfSk7CisgICAgRVhQRUNUX0ZBTFNFKHJlc3VsdCk7CisKKyAgICBjb25zdCB1
aW50OF90IHRlc3REYXRhMVtdID0geyAweDA1IH07IC8vIHdyb25nIHJlc3BvbnNlIGNvZGUKKyAg
ICByZXN1bHQgPSBUb2tlblJlc3BvbnNlOjpwYXJzZSgqc2hhcmVkS2V5LCBjb252ZXJ0Qnl0ZXNU
b1ZlY3Rvcih0ZXN0RGF0YTEsIHNpemVvZih0ZXN0RGF0YTEpKSk7CisgICAgRVhQRUNUX0ZBTFNF
KHJlc3VsdCk7CisKKyAgICBjb25zdCB1aW50OF90IHRlc3REYXRhMltdID0geyAweDAwLCAweDAw
IH07IC8vIHdyb25nIENCT1IgbWFwCisgICAgcmVzdWx0ID0gVG9rZW5SZXNwb25zZTo6cGFyc2Uo
KnNoYXJlZEtleSwgY29udmVydEJ5dGVzVG9WZWN0b3IodGVzdERhdGEyLCBzaXplb2YodGVzdERh
dGEyKSkpOworICAgIEVYUEVDVF9GQUxTRShyZXN1bHQpOworCisgICAgcmVzdWx0ID0gVG9rZW5S
ZXNwb25zZTo6cGFyc2UoKnNoYXJlZEtleSwgY29udmVydEJ5dGVzVG9WZWN0b3IoVGVzdERhdGE6
OmtDdGFwQ2xpZW50UGluS2V5QWdyZWVtZW50UmVzcG9uc2UsIHNpemVvZihUZXN0RGF0YTo6a0N0
YXBDbGllbnRQaW5LZXlBZ3JlZW1lbnRSZXNwb25zZSkpKTsgLy8gd3JvbmcgcmVzcG9uc2UKKyAg
ICBFWFBFQ1RfRkFMU0UocmVzdWx0KTsKKworICAgIC8vIFN1Y2Nlc3MgY2FzZXMKKyAgICByZXN1
bHQgPSBUb2tlblJlc3BvbnNlOjpwYXJzZSgqc2hhcmVkS2V5LCBjb252ZXJ0Qnl0ZXNUb1ZlY3Rv
cihUZXN0RGF0YTo6a0N0YXBDbGllbnRQaW5Ub2tlblJlc3BvbnNlLCBzaXplb2YoVGVzdERhdGE6
OmtDdGFwQ2xpZW50UGluVG9rZW5SZXNwb25zZSkpKTsKKyAgICBFWFBFQ1RfVFJVRShyZXN1bHQp
OworICAgIGNvbnN0IHVpbnQ4X3QgZXhwZWN0ZWRUb2tlbltdID0geyAweDAzLCAweGFjLCAweDY3
LCAweDQyLCAweDE2LCAweGYzLCAweGUxLCAweDVjLCAweDc2LCAweDFlLCAweGUxLCAweGE1LCAw
eGUyLCAweDU1LCAweGYwLCAweDY3IH07CisgICAgRVhQRUNUX0VRKHJlc3VsdC0+dG9rZW4oKS5z
aXplKCksIDE2dSk7CisgICAgRVhQRUNUX0VRKG1lbWNtcChyZXN1bHQtPnRva2VuKCkuZGF0YSgp
LCBleHBlY3RlZFRva2VuLCByZXN1bHQtPnRva2VuKCkuc2l6ZSgpKSwgMCk7Cit9CisKK1RFU1Qo
Q3RhcFBpblRlc3QsIFRlc3RQaW5BdXRoKQoreworICAgIC8vIDEuIEdlbmVyYXRlIHRoZSB0b2tl
bi4KKyAgICBjb25zdCB1aW50OF90IHNoYXJlZEtleURhdGFbXSA9IHsKKyAgICAgICAgMHgwMywg
MHhhYywgMHg2NywgMHg0MiwgMHgxNiwgMHhmMywgMHhlMSwgMHg1YywKKyAgICAgICAgMHg3Niwg
MHgxZSwgMHhlMSwgMHhhNSwgMHhlMiwgMHg1NSwgMHhmMCwgMHg2NywKKyAgICAgICAgMHg5NSwg
MHgzNiwgMHgyMywgMHhjOCwgMHhiMywgMHg4OCwgMHhiNCwgMHg0NSwKKyAgICAgICAgMHg5ZSwg
MHgxMywgMHhmOSwgMHg3OCwgMHhkNywgMHhjOCwgMHg0NiwgMHhmNCwgfTsKKyAgICBhdXRvIHNo
YXJlZEtleSA9IENyeXB0b0tleUFFUzo6aW1wb3J0UmF3KENyeXB0b0FsZ29yaXRobUlkZW50aWZp
ZXI6OkFFU19DQkMsIGNvbnZlcnRCeXRlc1RvVmVjdG9yKHNoYXJlZEtleURhdGEsIHNpemVvZihz
aGFyZWRLZXlEYXRhKSksIHRydWUsIENyeXB0b0tleVVzYWdlRW5jcnlwdCB8IENyeXB0b0tleVVz
YWdlRGVjcnlwdCk7CisgICAgQVNTRVJUX1RSVUUoc2hhcmVkS2V5KTsKKyAgICBhdXRvIHJlc3Vs
dCA9IFRva2VuUmVzcG9uc2U6OnBhcnNlKCpzaGFyZWRLZXksIGNvbnZlcnRCeXRlc1RvVmVjdG9y
KFRlc3REYXRhOjprQ3RhcENsaWVudFBpblRva2VuUmVzcG9uc2UsIHNpemVvZihUZXN0RGF0YTo6
a0N0YXBDbGllbnRQaW5Ub2tlblJlc3BvbnNlKSkpOworICAgIEFTU0VSVF9UUlVFKHJlc3VsdCk7
CisKKyAgICAvLyAyLiBHZW5lcmF0ZSB0aGUgcGluQXV0aC4KKyAgICBhdXRvIHBpbkF1dGggPSBy
ZXN1bHQtPnBpbkF1dGgoY29udmVydEJ5dGVzVG9WZWN0b3Ioc2hhcmVkS2V5RGF0YSwgc2l6ZW9m
KHNoYXJlZEtleURhdGEpKSk7IC8vIHNoYXJlZEtleURhdGEgcHJldGVuZHMgdG8gYmUgY2xpZW50
RGF0YUhhc2gKKyAgICBjb25zdCB1aW50OF90IGV4cGVjdGVkUGluQXV0aFtdID0geyAweGIzLCAw
eGMyLCAweDY1LCAweDFjLCAweGZkLCAweGM4LCAweDQyLCAweGI0LCAweDYwLCAweDE2LCAweGVk
LCAweDIwLCAweDY0LCAweDUzLCAweGFmLCAweDg0IH07CisgICAgRVhQRUNUX0VRKHBpbkF1dGgu
c2l6ZSgpLCAxNnUpOworICAgIEVYUEVDVF9FUShtZW1jbXAocGluQXV0aC5kYXRhKCksIGV4cGVj
dGVkUGluQXV0aCwgcGluQXV0aC5zaXplKCkpLCAwKTsKK30KKworfSAvLyBuYW1lc3BhY2UgVGVz
dFdlYktpdEFQSQorCisjZW5kaWYgLy8gRU5BQkxFKFdFQl9BVVRITikKZGlmZiAtLWdpdCBhL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9DdGFwUmVxdWVzdFRlc3QuY3BwIGIvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0N0YXBSZXF1ZXN0VGVzdC5jcHAKaW5kZXgg
ZDNmMDJmNmU5MGUxMTU3OWVjNzZmN2Q4NTFmODA3NjAzOWZkY2IzYy4uZGEwNzVhMGMzYmE0NjQ4
YmVlOTdjNjNjMTVhYjUxODY3ZmFjMDdkZCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJDb3JlL0N0YXBSZXF1ZXN0VGVzdC5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJDb3JlL0N0YXBSZXF1ZXN0VGVzdC5jcHAKQEAgLTMyLDggKzMyLDEwIEBA
CiAjaWYgRU5BQkxFKFdFQl9BVVRITikKIAogI2luY2x1ZGUgIkZpZG9UZXN0RGF0YS5oIgorI2lu
Y2x1ZGUgIlBsYXRmb3JtVXRpbGl0aWVzLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9EZXZpY2VSZXF1
ZXN0Q29udmVydGVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9GaWRvQ29uc3RhbnRzLmg+CisjaW5j
bHVkZSA8V2ViQ29yZS9QaW4uaD4KICNpbmNsdWRlIDxXZWJDb3JlL1B1YmxpY0tleUNyZWRlbnRp
YWxDcmVhdGlvbk9wdGlvbnMuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1B1YmxpY0tleUNyZWRlbnRp
YWxSZXF1ZXN0T3B0aW9ucy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0Jhc2U2NC5oPgpAQCAtNjcs
NiArNjksMzMgQEAgVEVTVChDVEFQUmVxdWVzdFRlc3QsIFRlc3RDb25zdHJ1Y3RNYWtlQ3JlZGVu
dGlhbFJlcXVlc3RQYXJhbSkKICAgICBFWFBFQ1RfRVEobWVtY21wKHNlcmlhbGl6ZWREYXRhLmRh
dGEoKSwgVGVzdERhdGE6OmtDdGFwTWFrZUNyZWRlbnRpYWxSZXF1ZXN0LCBzZXJpYWxpemVkRGF0
YS5zaXplKCkpLCAwKTsKIH0KIAorVEVTVChDVEFQUmVxdWVzdFRlc3QsIFRlc3RDb25zdHJ1Y3RN
YWtlQ3JlZGVudGlhbFJlcXVlc3RQYXJhbVdpdGhQaW4pCit7CisgICAgUHVibGljS2V5Q3JlZGVu
dGlhbENyZWF0aW9uT3B0aW9uczo6UnBFbnRpdHkgcnA7CisgICAgcnAubmFtZSA9ICJBY21lIjsK
KyAgICBycC5pZCA9ICJhY21lLmNvbSI7CisKKyAgICBQdWJsaWNLZXlDcmVkZW50aWFsQ3JlYXRp
b25PcHRpb25zOjpVc2VyRW50aXR5IHVzZXI7CisgICAgdXNlci5uYW1lID0gImpvaG5wc21pdGhA
ZXhhbXBsZS5jb20iOworICAgIHVzZXIuaWNvbiA9ICJodHRwczovL3BpY3MuYWNtZS5jb20vMDAv
cC9hQmpqanBxUGIucG5nIjsKKyAgICB1c2VyLmlkVmVjdG9yLmFwcGVuZChUZXN0RGF0YTo6a1Vz
ZXJJZCwgc2l6ZW9mKFRlc3REYXRhOjprVXNlcklkKSk7CisgICAgdXNlci5kaXNwbGF5TmFtZSA9
ICJKb2huIFAuIFNtaXRoIjsKKworICAgIFZlY3RvcjxQdWJsaWNLZXlDcmVkZW50aWFsQ3JlYXRp
b25PcHRpb25zOjpQYXJhbWV0ZXJzPiBwYXJhbXMgeyB7IFB1YmxpY0tleUNyZWRlbnRpYWxUeXBl
OjpQdWJsaWNLZXksIDcgfSwgeyBQdWJsaWNLZXlDcmVkZW50aWFsVHlwZTo6UHVibGljS2V5LCAy
NTcgfSB9OworICAgIFB1YmxpY0tleUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnM6OkF1dGhlbnRp
Y2F0b3JTZWxlY3Rpb25Dcml0ZXJpYSBzZWxlY3Rpb24geyBQdWJsaWNLZXlDcmVkZW50aWFsQ3Jl
YXRpb25PcHRpb25zOjpBdXRoZW50aWNhdG9yQXR0YWNobWVudDo6UGxhdGZvcm0sIHRydWUsIFVz
ZXJWZXJpZmljYXRpb25SZXF1aXJlbWVudDo6UHJlZmVycmVkIH07CisKKyAgICBQaW5QYXJhbWV0
ZXJzIHBpbjsKKyAgICBwaW4ucHJvdG9jb2wgPSBwaW46OmtQcm90b2NvbFZlcnNpb247CisgICAg
cGluLmF1dGguYXBwZW5kKFRlc3REYXRhOjprQ3RhcDJQaW5BdXRoLCBzaXplb2YoVGVzdERhdGE6
OmtDdGFwMlBpbkF1dGgpKTsKKworICAgIFB1YmxpY0tleUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlv
bnMgb3B0aW9ucyB7IHJwLCB1c2VyLCB7IH0sIHBhcmFtcywgV1RGOjpudWxsb3B0LCB7IH0sIHNl
bGVjdGlvbiwgQXR0ZXN0YXRpb25Db252ZXlhbmNlUHJlZmVyZW5jZTo6Tm9uZSwgV1RGOjpudWxs
b3B0IH07CisgICAgVmVjdG9yPHVpbnQ4X3Q+IGhhc2g7CisgICAgaGFzaC5hcHBlbmQoVGVzdERh
dGE6OmtDbGllbnREYXRhSGFzaCwgc2l6ZW9mKFRlc3REYXRhOjprQ2xpZW50RGF0YUhhc2gpKTsK
KyAgICBhdXRvIHNlcmlhbGl6ZWREYXRhID0gZW5jb2RlTWFrZUNyZWRlbml0YWxSZXF1ZXN0QXND
Qk9SKGhhc2gsIG9wdGlvbnMsIEF1dGhlbnRpY2F0b3JTdXBwb3J0ZWRPcHRpb25zOjpVc2VyVmVy
aWZpY2F0aW9uQXZhaWxhYmlsaXR5OjprU3VwcG9ydGVkQnV0Tm90Q29uZmlndXJlZCwgcGluKTsK
KyAgICBFWFBFQ1RfRVEoc2VyaWFsaXplZERhdGEuc2l6ZSgpLCBzaXplb2YoVGVzdERhdGE6OmtD
dGFwTWFrZUNyZWRlbnRpYWxSZXF1ZXN0V2l0aFBpbikpOworICAgIEVYUEVDVF9FUShtZW1jbXAo
c2VyaWFsaXplZERhdGEuZGF0YSgpLCBUZXN0RGF0YTo6a0N0YXBNYWtlQ3JlZGVudGlhbFJlcXVl
c3RXaXRoUGluLCBzZXJpYWxpemVkRGF0YS5zaXplKCkpLCAwKTsKK30KKwogVEVTVChDVEFQUmVx
dWVzdFRlc3QsIFRlc3RDb25zdHJ1Y3RHZXRBc3NlcnRpb25SZXF1ZXN0KQogewogICAgIFB1Ymxp
Y0tleUNyZWRlbnRpYWxSZXF1ZXN0T3B0aW9ucyBvcHRpb25zOwpAQCAtMTA0LDYgKzEzMyw0NyBA
QCBURVNUKENUQVBSZXF1ZXN0VGVzdCwgVGVzdENvbnN0cnVjdEdldEFzc2VydGlvblJlcXVlc3Qp
CiAgICAgRVhQRUNUX0VRKG1lbWNtcChzZXJpYWxpemVkRGF0YS5kYXRhKCksIFRlc3REYXRhOjpr
VGVzdENvbXBsZXhDdGFwR2V0QXNzZXJ0aW9uUmVxdWVzdCwgc2VyaWFsaXplZERhdGEuc2l6ZSgp
KSwgMCk7CiB9CiAKK1RFU1QoQ1RBUFJlcXVlc3RUZXN0LCBUZXN0Q29uc3RydWN0R2V0QXNzZXJ0
aW9uUmVxdWVzdFdpdGhQaW4pCit7CisgICAgUHVibGljS2V5Q3JlZGVudGlhbFJlcXVlc3RPcHRp
b25zIG9wdGlvbnM7CisgICAgb3B0aW9ucy5ycElkID0gImFjbWUuY29tIjsKKworICAgIFB1Ymxp
Y0tleUNyZWRlbnRpYWxEZXNjcmlwdG9yIGRlc2NyaXB0b3IxOworICAgIGRlc2NyaXB0b3IxLnR5
cGUgPSBQdWJsaWNLZXlDcmVkZW50aWFsVHlwZTo6UHVibGljS2V5OworICAgIGNvbnN0IHVpbnQ4
X3QgaWQxW10gPSB7CisgICAgICAgIDB4ZjIsIDB4MjAsIDB4MDYsIDB4ZGUsIDB4NGYsIDB4OTAs
IDB4NWEsIDB4ZjYsIDB4OGEsIDB4NDMsIDB4OTQsCisgICAgICAgIDB4MmYsIDB4MDIsIDB4NGYs
IDB4MmEsIDB4NWUsIDB4Y2UsIDB4NjAsIDB4M2QsIDB4OWMsIDB4NmQsIDB4NGIsCisgICAgICAg
IDB4M2QsIDB4ZjgsIDB4YmUsIDB4MDgsIDB4ZWQsIDB4MDEsIDB4ZmMsIDB4NDQsIDB4MjYsIDB4
NDYsIDB4ZDAsCisgICAgICAgIDB4MzQsIDB4ODUsIDB4OGEsIDB4YzcsIDB4NWIsIDB4ZWQsIDB4
M2YsIDB4ZDUsIDB4ODAsIDB4YmYsIDB4OTgsCisgICAgICAgIDB4MDgsIDB4ZDksIDB4NGYsIDB4
Y2IsIDB4ZWUsIDB4ODIsIDB4YjksIDB4YjIsIDB4ZWYsIDB4NjYsIDB4NzcsCisgICAgICAgIDB4
YWYsIDB4MGEsIDB4ZGMsIDB4YzMsIDB4NTgsIDB4NTIsIDB4ZWEsIDB4NmIsIDB4OWUgfTsKKyAg
ICBkZXNjcmlwdG9yMS5pZFZlY3Rvci5hcHBlbmQoaWQxLCBzaXplb2YoaWQxKSk7CisgICAgb3B0
aW9ucy5hbGxvd0NyZWRlbnRpYWxzLmFwcGVuZChkZXNjcmlwdG9yMSk7CisKKyAgICBQdWJsaWNL
ZXlDcmVkZW50aWFsRGVzY3JpcHRvciBkZXNjcmlwdG9yMjsKKyAgICBkZXNjcmlwdG9yMi50eXBl
ID0gUHVibGljS2V5Q3JlZGVudGlhbFR5cGU6OlB1YmxpY0tleTsKKyAgICBjb25zdCB1aW50OF90
IGlkMltdID0geworICAgICAgICAweDAzLCAweDAzLCAweDAzLCAweDAzLCAweDAzLCAweDAzLCAw
eDAzLCAweDAzLCAweDAzLCAweDAzLAorICAgICAgICAweDAzLCAweDAzLCAweDAzLCAweDAzLCAw
eDAzLCAweDAzLCAweDAzLCAweDAzLCAweDAzLCAweDAzLAorICAgICAgICAweDAzLCAweDAzLCAw
eDAzLCAweDAzLCAweDAzLCAweDAzLCAweDAzLCAweDAzLCAweDAzLCAweDAzLAorICAgICAgICAw
eDAzLCAweDAzLCAweDAzLCAweDAzLCAweDAzLCAweDAzLCAweDAzLCAweDAzLCAweDAzLCAweDAz
LAorICAgICAgICAweDAzLCAweDAzLCAweDAzLCAweDAzLCAweDAzLCAweDAzLCAweDAzLCAweDAz
LCAweDAzLCAweDAzIH07CisgICAgZGVzY3JpcHRvcjIuaWRWZWN0b3IuYXBwZW5kKGlkMiwgc2l6
ZW9mKGlkMikpOworICAgIG9wdGlvbnMuYWxsb3dDcmVkZW50aWFscy5hcHBlbmQoZGVzY3JpcHRv
cjIpOworCisgICAgb3B0aW9ucy51c2VyVmVyaWZpY2F0aW9uID0gVXNlclZlcmlmaWNhdGlvblJl
cXVpcmVtZW50OjpSZXF1aXJlZDsKKworICAgIFBpblBhcmFtZXRlcnMgcGluOworICAgIHBpbi5w
cm90b2NvbCA9IHBpbjo6a1Byb3RvY29sVmVyc2lvbjsKKyAgICBwaW4uYXV0aC5hcHBlbmQoVGVz
dERhdGE6OmtDdGFwMlBpbkF1dGgsIHNpemVvZihUZXN0RGF0YTo6a0N0YXAyUGluQXV0aCkpOwor
CisgICAgVmVjdG9yPHVpbnQ4X3Q+IGhhc2g7CisgICAgaGFzaC5hcHBlbmQoVGVzdERhdGE6OmtD
bGllbnREYXRhSGFzaCwgc2l6ZW9mKFRlc3REYXRhOjprQ2xpZW50RGF0YUhhc2gpKTsKKyAgICBh
dXRvIHNlcmlhbGl6ZWREYXRhID0gZW5jb2RlR2V0QXNzZXJ0aW9uUmVxdWVzdEFzQ0JPUihoYXNo
LCBvcHRpb25zLCBBdXRoZW50aWNhdG9yU3VwcG9ydGVkT3B0aW9uczo6VXNlclZlcmlmaWNhdGlv
bkF2YWlsYWJpbGl0eTo6a1N1cHBvcnRlZEJ1dE5vdENvbmZpZ3VyZWQsIHBpbik7CisgICAgRVhQ
RUNUX0VRKHNlcmlhbGl6ZWREYXRhLnNpemUoKSwgc2l6ZW9mKFRlc3REYXRhOjprVGVzdENvbXBs
ZXhDdGFwR2V0QXNzZXJ0aW9uUmVxdWVzdFdpdGhQaW4pKTsKKyAgICBFWFBFQ1RfRVEobWVtY21w
KHNlcmlhbGl6ZWREYXRhLmRhdGEoKSwgVGVzdERhdGE6OmtUZXN0Q29tcGxleEN0YXBHZXRBc3Nl
cnRpb25SZXF1ZXN0V2l0aFBpbiwgc2VyaWFsaXplZERhdGEuc2l6ZSgpKSwgMCk7Cit9CisKIFRF
U1QoQ1RBUFJlcXVlc3RUZXN0LCBUZXN0Q29uc3RydWN0Q3RhcEF1dGhlbnRpY2F0b3JSZXF1ZXN0
UGFyYW0pCiB7CiAgICAgc3RhdGljIGNvbnN0ZXhwciB1aW50OF90IGtTZXJpYWxpemVkR2V0SW5m
b0NtZCA9IDB4MDQ7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNv
cmUvRmlkb1Rlc3REYXRhLmggYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvRmlk
b1Rlc3REYXRhLmgKaW5kZXggZDhmZGQwZjdmNTExZDhhNDhjZTA2M2QyMWFkNzQ1NzRlZjJkYjRi
NC4uM2MyMzAyYjBhODhiNzIxOWQ5ZWM2YWRjZDEzYWQ3ZDdiN2ZlZGM2MSAxMDA2NDQKLS0tIGEv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0ZpZG9UZXN0RGF0YS5oCisrKyBiL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9GaWRvVGVzdERhdGEuaApAQCAtNTI1LDcg
KzUyNSwxMDMgQEAgY29uc3RleHByIHVpbnQ4X3Qga0N0YXBNYWtlQ3JlZGVudGlhbFJlcXVlc3Rb
XSA9IHsKICAgICAvLyBrZXkgLSAidXYiCiAgICAgMHg2MiwgMHg3NSwgMHg3NiwKICAgICAvLyBU
cnVlKDIxKQotICAgIDB4ZjV9OworICAgIDB4ZjUKK307CisKK2NvbnN0ZXhwciB1aW50OF90IGtD
dGFwTWFrZUNyZWRlbnRpYWxSZXF1ZXN0V2l0aFBpbltdID0geworICAgIC8vIGF1dGhlbnRpY2F0
b3JNYWtlQ3JlZGVudGlhbCBjb21tYW5kCisgICAgMHgwMSwKKyAgICAvLyBtYXAoNykKKyAgICAw
eGE3LAorICAgIC8vIGtleSgxKSAtIGNsaWVudERhdGFIYXNoCisgICAgMHgwMSwKKyAgICAvLyBi
eXRlcygzMikKKyAgICAweDU4LCAweDIwLCAweDY4LCAweDcxLCAweDM0LCAweDk2LCAweDgyLCAw
eDIyLCAweGVjLCAweDE3LCAweDIwLCAweDJlLAorICAgIDB4NDIsIDB4NTAsIDB4NWYsIDB4OGUs
IDB4ZDIsIDB4YjEsIDB4NmEsIDB4ZTIsIDB4MmYsIDB4MTYsIDB4YmIsIDB4MDUsCisgICAgMHhi
OCwgMHg4YywgMHgyNSwgMHhkYiwgMHg5ZSwgMHg2MCwgMHgyNiwgMHg0NSwgMHhmMSwgMHg0MSwK
KyAgICAvLyBrZXkoMikgLSBycAorICAgIDB4MDIsCisgICAgLy8gbWFwKDIpCisgICAgMHhhMiwK
KyAgICAvLyBrZXkgLSAiaWQiCisgICAgMHg2MiwgMHg2OSwgMHg2NCwKKyAgICAvLyB2YWx1ZSAt
ICJhY21lLmNvbSIKKyAgICAweDY4LCAweDYxLCAweDYzLCAweDZkLCAweDY1LCAweDJlLCAweDYz
LCAweDZmLCAweDZkLAorICAgIC8vIGtleSAtICAibmFtZSIKKyAgICAweDY0LCAweDZlLCAweDYx
LCAweDZkLCAweDY1LAorICAgIC8vIHZhbHVlIC0gIkFjbWUiCisgICAgMHg2NCwgMHg0MSwgMHg2
MywgMHg2ZCwgMHg2NSwKKyAgICAvLyBrZXkoMykgLSB1c2VyCisgICAgMHgwMywKKyAgICAvLyBt
YXAoNCkKKyAgICAweGE0LAorICAgIC8vIGtleSAtICJpZCIKKyAgICAweDYyLCAweDY5LCAweDY0
LAorICAgIC8vIHZhbHVlIC0gdXNlciBpZAorICAgIDB4NDgsIDB4MTAsIDB4OTgsIDB4MjMsIDB4
NzIsIDB4MzUsIDB4NDAsIDB4OTgsIDB4NzIsCisgICAgLy8ga2V5IC0gImljb24iCisgICAgMHg2
NCwgMHg2OSwgMHg2MywgMHg2ZiwgMHg2ZSwKKyAgICAvLyB2YWx1ZSAtICJodHRwczovL3BpY3Mu
YWNtZS5jb20vMDAvcC9hQmpqanBxUGIucG5nIgorICAgIDB4NzgsIDB4MjgsIDB4NjgsIDB4NzQs
IDB4NzQsIDB4NzAsIDB4NzMsIDB4M2EsIDB4MmYsIDB4MmYsIDB4NzAsIDB4NjksCisgICAgMHg2
MywgMHg3MywgMHgyZSwgMHg2MSwgMHg2MywgMHg2ZCwgMHg2NSwgMHgyZSwgMHg2MywgMHg2Ziwg
MHg2ZCwgMHgyZiwKKyAgICAweDMwLCAweDMwLCAweDJmLCAweDcwLCAweDJmLCAweDYxLCAweDQy
LCAweDZhLCAweDZhLCAweDZhLCAweDcwLCAweDcxLAorICAgIDB4NTAsIDB4NjIsIDB4MmUsIDB4
NzAsIDB4NmUsIDB4NjcsCisgICAgLy8ga2V5IC0gIm5hbWUiCisgICAgMHg2NCwgMHg2ZSwgMHg2
MSwgMHg2ZCwgMHg2NSwKKyAgICAvLyB2YWx1ZSAtICJqb2hucHNtaXRoQGV4YW1wbGUuY29tIgor
ICAgIDB4NzYsIDB4NmEsIDB4NmYsIDB4NjgsIDB4NmUsIDB4NzAsIDB4NzMsIDB4NmQsIDB4Njks
IDB4NzQsIDB4NjgsIDB4NDAsCisgICAgMHg2NSwgMHg3OCwgMHg2MSwgMHg2ZCwgMHg3MCwgMHg2
YywgMHg2NSwgMHgyZSwgMHg2MywgMHg2ZiwgMHg2ZCwKKyAgICAvLyBrZXkgLSAiZGlzcGxheU5h
bWUiCisgICAgMHg2YiwgMHg2NCwgMHg2OSwgMHg3MywgMHg3MCwgMHg2YywgMHg2MSwgMHg3OSwg
MHg0ZSwgMHg2MSwgMHg2ZCwgMHg2NSwKKyAgICAvLyB2YWx1ZSAtICJKb2huIFAuIFNtaXRoIgor
ICAgIDB4NmQsIDB4NGEsIDB4NmYsIDB4NjgsIDB4NmUsIDB4MjAsIDB4NTAsIDB4MmUsIDB4MjAs
IDB4NTMsIDB4NmQsIDB4NjksCisgICAgMHg3NCwgMHg2OCwKKyAgICAvLyBrZXkoNCkgLSBwdWJL
ZXlDcmVkUGFyYW1zCisgICAgMHgwNCwKKyAgICAvLyBhcnJheSgyKQorICAgIDB4ODIsCisgICAg
Ly8gbWFwKDIpCisgICAgMHhhMiwKKyAgICAvLyBrZXkgLSAiYWxnIgorICAgIDB4NjMsIDB4NjEs
IDB4NmMsIDB4NjcsCisgICAgLy8gdmFsdWUgLSA3CisgICAgMHgwNywKKyAgICAvLyBrZXkgLSAi
dHlwZSIKKyAgICAweDY0LCAweDc0LCAweDc5LCAweDcwLCAweDY1LAorICAgIC8vIHZhbHVlIC0g
InB1YmxpYy1rZXkiCisgICAgMHg2YSwgMHg3MCwgMHg3NSwgMHg2MiwgMHg2QywgMHg2OSwgMHg2
MywgMHgyRCwgMHg2QiwgMHg2NSwgMHg3OSwKKyAgICAvLyBtYXAoMikKKyAgICAweGEyLAorICAg
IC8vIGtleSAtICJhbGciCisgICAgMHg2MywgMHg2MSwgMHg2YywgMHg2NywKKyAgICAvLyB2YWx1
ZSAtIDI1NworICAgIDB4MTksIDB4MDEsIDB4MDEsCisgICAgLy8ga2V5IC0gInR5cGUiCisgICAg
MHg2NCwgMHg3NCwgMHg3OSwgMHg3MCwgMHg2NSwgLy8gInR5cGUiCisgICAgLy8gdmFsdWUgLSAi
cHVibGljLWtleSIKKyAgICAweDZhLCAweDcwLCAweDc1LCAweDYyLCAweDZDLCAweDY5LCAweDYz
LCAweDJELCAweDZCLCAweDY1LCAweDc5LAorICAgIC8vIGtleSg3KSAtIG9wdGlvbnMKKyAgICAw
eDA3LAorICAgIC8vIG1hcCgyKQorICAgIDB4YTIsCisgICAgLy8ga2V5IC0gInJrIgorICAgIDB4
NjIsIDB4NzIsIDB4NmIsCisgICAgLy8gVHJ1ZSgyMSkKKyAgICAweGY1LAorICAgIC8vIGtleSAt
ICJ1diIKKyAgICAweDYyLCAweDc1LCAweDc2LAorICAgIC8vIFRydWUoMjEpCisgICAgMHhmNSwK
KyAgICAvLyBrZXkoOCkgLSBwaW5Qcm90b2NvbAorICAgIDB4MDgsCisgICAgLy8gdmFsdWUgLSAx
CisgICAgMHgwMSwKKyAgICAvLyBrZXkoOSkgLSBwaW5BdXRoCisgICAgMHgwOSwKKyAgICAvLyBi
eXRlcygxNikKKyAgICAweDUwLCAweDAwLCAweDAxLCAweDAyLCAweDAzLCAweDA0LCAweDA1LCAw
eDA2LCAweDA3LCAweDA4LCAweDA5LCAweDBhLAorICAgIDB4MGIsIDB4MGMsIDB4MGQsIDB4MGUs
IDB4MGYKK307CiAKIGNvbnN0ZXhwciB1aW50OF90IGtUZXN0Q29tcGxleEN0YXBHZXRBc3NlcnRp
b25SZXF1ZXN0W10gPSB7CiAgICAgLy8gYXV0aGVudGljYXRvckdldEFzc2VydGlvbiBjb21tYW5k
CkBAIC01ODksNiArNjg1LDc3IEBAIGNvbnN0ZXhwciB1aW50OF90IGtUZXN0Q29tcGxleEN0YXBH
ZXRBc3NlcnRpb25SZXF1ZXN0W10gPSB7CiAgICAgMHhmNSwKIH07CiAKK2NvbnN0ZXhwciB1aW50
OF90IGtUZXN0Q29tcGxleEN0YXBHZXRBc3NlcnRpb25SZXF1ZXN0V2l0aFBpbltdID0geworICAg
IC8vIGF1dGhlbnRpY2F0b3JHZXRBc3NlcnRpb24gY29tbWFuZAorICAgIDB4MDIsCisgICAgLy8g
bWFwKDYpCisgICAgMHhhNiwKKyAgICAvLyBrZXkoMDEpIC1ycElkCisgICAgMHgwMSwKKyAgICAv
LyB2YWx1ZSAtICJhY21lLmNvbSIKKyAgICAweDY4LCAweDYxLCAweDYzLCAweDZkLCAweDY1LCAw
eDJlLCAweDYzLCAweDZmLCAweDZkLAorICAgIC8vIGtleSgwMikgLSBjbGllbnQgZGF0YSBoYXNo
CisgICAgMHgwMiwKKyAgICAvLyB2YWx1ZSAtIGJ5dGVzKDMyKQorICAgIDB4NTgsIDB4MjAsIDB4
NjgsIDB4NzEsIDB4MzQsIDB4OTYsIDB4ODIsIDB4MjIsIDB4ZWMsIDB4MTcsIDB4MjAsIDB4MmUs
CisgICAgMHg0MiwgMHg1MCwgMHg1ZiwgMHg4ZSwgMHhkMiwgMHhiMSwgMHg2YSwgMHhlMiwgMHgy
ZiwgMHgxNiwgMHhiYiwgMHgwNSwKKyAgICAweGI4LCAweDhjLCAweDI1LCAweGRiLCAweDllLCAw
eDYwLCAweDI2LCAweDQ1LCAweGYxLCAweDQxLAorICAgIC8vIGtleSgwMykgLSBhbGxvdyBsaXN0
CisgICAgMHgwMywKKyAgICAvLyB2YWx1ZSAtIGFycmF5KDIpCisgICAgMHg4MiwKKyAgICAvLyBt
YXAoMikKKyAgICAweGEyLAorICAgIC8vIGtleSAtICJpZCIKKyAgICAweDYyLCAweDY5LCAweDY0
LAorICAgIC8vIHZhbHVlIC0gY3JlZGVudGlhbCBJRAorICAgIDB4NTgsIDB4NDAsIDB4ZjIsIDB4
MjAsIDB4MDYsIDB4ZGUsIDB4NGYsIDB4OTAsIDB4NWEsIDB4ZjYsIDB4OGEsIDB4NDMsCisgICAg
MHg5NCwgMHgyZiwgMHgwMiwgMHg0ZiwgMHgyYSwgMHg1ZSwgMHhjZSwgMHg2MCwgMHgzZCwgMHg5
YywgMHg2ZCwgMHg0YiwKKyAgICAweDNkLCAweGY4LCAweGJlLCAweDA4LCAweGVkLCAweDAxLCAw
eGZjLCAweDQ0LCAweDI2LCAweDQ2LCAweGQwLCAweDM0LAorICAgIDB4ODUsIDB4OGEsIDB4Yzcs
IDB4NWIsIDB4ZWQsIDB4M2YsIDB4ZDUsIDB4ODAsIDB4YmYsIDB4OTgsIDB4MDgsIDB4ZDksCisg
ICAgMHg0ZiwgMHhjYiwgMHhlZSwgMHg4MiwgMHhiOSwgMHhiMiwgMHhlZiwgMHg2NiwgMHg3Nywg
MHhhZiwgMHgwYSwgMHhkYywKKyAgICAweGMzLCAweDU4LCAweDUyLCAweGVhLCAweDZiLCAweDll
LAorICAgIC8vIGtleSAtICJ0eXBlIgorICAgIDB4NjQsIDB4NzQsIDB4NzksIDB4NzAsIDB4NjUs
CisgICAgLy8gdmFsdWUgLSAicHVibGljLWtleSIKKyAgICAweDZhLCAweDcwLCAweDc1LCAweDYy
LCAweDZDLCAweDY5LCAweDYzLCAweDJELCAweDZCLCAweDY1LCAweDc5LAorICAgIC8vIG1hcCgy
KQorICAgIDB4YTIsCisgICAgLy8ga2V5IC0gImlkIgorICAgIDB4NjIsIDB4NjksIDB4NjQsCisg
ICAgLy8gdmFsdWUgLSBjcmVkZW50aWFsIElECisgICAgMHg1OCwgMHgzMiwgMHgwMywgMHgwMywg
MHgwMywgMHgwMywgMHgwMywgMHgwMywgMHgwMywgMHgwMywgMHgwMywgMHgwMywKKyAgICAweDAz
LCAweDAzLCAweDAzLCAweDAzLCAweDAzLCAweDAzLCAweDAzLCAweDAzLCAweDAzLCAweDAzLCAw
eDAzLCAweDAzLAorICAgIDB4MDMsIDB4MDMsIDB4MDMsIDB4MDMsIDB4MDMsIDB4MDMsIDB4MDMs
IDB4MDMsIDB4MDMsIDB4MDMsIDB4MDMsIDB4MDMsCisgICAgMHgwMywgMHgwMywgMHgwMywgMHgw
MywgMHgwMywgMHgwMywgMHgwMywgMHgwMywgMHgwMywgMHgwMywgMHgwMywgMHgwMywKKyAgICAw
eDAzLCAweDAzLCAweDAzLCAweDAzLAorICAgIC8vIGtleSAtICJ0eXBlIgorICAgIDB4NjQsIDB4
NzQsIDB4NzksIDB4NzAsIDB4NjUsCisgICAgLy8gdmFsdWUgLSAicHVibGljLWtleSIKKyAgICAw
eDZhLCAweDcwLCAweDc1LCAweDYyLCAweDZDLCAweDY5LCAweDYzLCAweDJELCAweDZCLCAweDY1
LCAweDc5LAorICAgIC8vIHVuc2lnbmVkKDUpIC0gb3B0aW9ucworICAgIDB4MDUsCisgICAgLy8g
bWFwKDIpCisgICAgMHhhMiwKKyAgICAvLyBrZXkgLSJ1cCIKKyAgICAweDYyLCAweDc1LCAweDcw
LAorICAgIC8vIHZhbHVlIC0gVHJ1ZSgyMSkKKyAgICAweGY1LAorICAgIC8vIGtleSAtICJ1diIK
KyAgICAweDYyLCAweDc1LCAweDc2LAorICAgIC8vIHZhbHVlIC0gVHJ1ZSgyMSkKKyAgICAweGY1
LAorICAgIC8vIGtleSg4KSAtIHBpblByb3RvY29sCisgICAgMHgwOCwKKyAgICAvLyB2YWx1ZSAt
IDEKKyAgICAweDAxLAorICAgIC8vIGtleSg5KSAtIHBpbkF1dGgKKyAgICAweDA5LAorICAgIC8v
IGJ5dGVzKDE2KQorICAgIDB4NTAsIDB4MDAsIDB4MDEsIDB4MDIsIDB4MDMsIDB4MDQsIDB4MDUs
IDB4MDYsIDB4MDcsIDB4MDgsIDB4MDksIDB4MGEsCisgICAgMHgwYiwgMHgwYywgMHgwZCwgMHgw
ZSwgMHgwZgorfTsKKwogLy8gQ1RBUCByZXNwb25zZXMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAogLy8gQSBzYW1wbGUgd2Vs
bCBmb3JtZWQgcmVzcG9uc2UgdG8gQ1RBUCBBdXRoZW50aWNhdG9yR2V0SW5mbyByZXF1ZXN0LiBD
cm9zcwpAQCAtODkyLDYgKzEwNTksMTAyIEBAIGNvbnN0ZXhwciB1aW50OF90IGtEZXZpY2VHZXRB
c3NlcnRpb25SZXNwb25zZVtdID0gewogICAgIDB4MDEsCiB9OwogCisvLyBDVEFQIFBJTgorCitj
b25zdGV4cHIgdWludDhfdCBrQ3RhcDJQaW5BdXRoW10gPSB7CisgICAgMHgwMCwgMHgwMSwgMHgw
MiwgMHgwMywgMHgwNCwgMHgwNSwgMHgwNiwgMHgwNywKKyAgICAweDA4LCAweDA5LCAweDBhLCAw
eDBiLCAweDBjLCAweDBkLCAweDBlLCAweDBmLAorfTsKKworY29uc3RleHByIHVpbnQ4X3Qga0N0
YXBDbGllbnRQaW5SZXRyaWVzW10gPSB7CisgICAgLy8gYXV0aGVudGljYXRvckNsaWVudFBJTiBj
b21tYW5kCisgICAgMHgwNiwKKyAgICAvLyBtYXAoMikKKyAgICAweGEyLAorICAgIC8vIGtleSgx
KSAtIHBpblByb3RvY29sCisgICAgMHgwMSwKKyAgICAvLyB2YWx1ZSAtIDEKKyAgICAweDAxLAor
ICAgIC8vIGtleSgyKSAtIHN1YkNvbW1hbmQKKyAgICAweDAyLAorICAgIC8vIHZhbHVlIC0gMShn
ZXRSZXRyaWVzKQorICAgIDB4MDEsCit9OworCitjb25zdGV4cHIgdWludDhfdCBrQ3RhcENsaWVu
dFBpbktleUFncmVlbWVudFtdID0geworICAgIC8vIGF1dGhlbnRpY2F0b3JDbGllbnRQSU4gY29t
bWFuZAorICAgIDB4MDYsCisgICAgLy8gbWFwKDIpCisgICAgMHhhMiwKKyAgICAvLyBrZXkoMSkg
LSBwaW5Qcm90b2NvbAorICAgIDB4MDEsCisgICAgLy8gdmFsdWUgLSAxCisgICAgMHgwMSwKKyAg
ICAvLyBrZXkoMikgLSBzdWJDb21tYW5kCisgICAgMHgwMiwKKyAgICAvLyB2YWx1ZSAtIDIoZ2V0
S2V5QWdyZWVtZW50KQorICAgIDB4MDIsCit9OworCitjb25zdGV4cHIgdWludDhfdCBrQ3RhcENs
aWVudFBpblRva2VuUmVzcG9uc2VbXSA9IHsKKyAgICAvLyBTdWNjZXNzCisgICAgMHgwMCwKKyAg
ICAvLyBtYXAoMSkKKyAgICAweGExLAorICAgIC8vIGtleSgyKSAtIHBpblRva2VuCisgICAgMHgw
MiwKKyAgICAvLyBieXRlcygzMikKKyAgICAweDU4LCAweDIwLAorICAgIC8vIGVuY3J5cHRlZCB0
b2tlbgorICAgIDB4NDgsIDB4YjksIDB4NWQsIDB4M2QsIDB4OWUsIDB4ZWUsIDB4ZTUsIDB4MDAs
IDB4YWIsIDB4NTEsIDB4MTMsIDB4MmIsCisgICAgMHgzNSwgMHg3NywgMHg2NiwgMHg1YywgMHg0
MSwgMHg3YSwgMHg1NiwgMHgzZSwgMHhiMywgMHhlMiwgMHgzYywgMHhiNywKKyAgICAweDZhLCAw
eDM3LCAweGIzLCAweGRlLCAweDU3LCAweDJiLCAweGNhLCAweGFhLAorfTsKKworY29uc3RleHBy
IHVpbnQ4X3Qga0N0YXBDbGllbnRQaW5LZXlBZ3JlZW1lbnRSZXNwb25zZVtdID0geworICAgIC8v
IFN1Y2Nlc3MKKyAgICAweDAwLAorICAgIC8vIG1hcCgxKQorICAgIDB4QTEsCisgICAgLy8ga2V5
KDEpIC0ga2V5QWdyZWVtZW50CisgICAgMHgwMSwKKyAgICAvLyBNYXAoNSkKKyAgICAweEE1LAor
ICAgIC8vIGt0eTogRUMga2V5IHR5cGUKKyAgICAweDAxLCAweDAyLAorICAgIC8vIGFsZzogRUNE
SDI1NiBzaWduYXR1cmUgYWxnb3JpdGhtCisgICAgMHgwMywgMHgzOCwgMHgxOCwKKyAgICAvLyBj
cnY6IFAtMjU2IGN1cnZlCisgICAgMHgyMCwgMHgwMSwKKyAgICAvLyB4LWNvb3JkaW5hdGUKKyAg
ICAweDIxLAorICAgIC8vIEJ5dGVzKDMyKQorICAgIDB4NTgsIDB4MjAsCisgICAgLy8gQnl0ZSBh
cnJheSBjb250ZW50CisgICAgMHhFOCwgMHg3NiwgMHgyNSwgMHg4OSwgMHg2RSwgMHhFNCwgMHhF
NCwgMHg2RCwgMHhDMCwgMHgzMiwgMHg3NiwgMHg2RSwKKyAgICAweDgwLCAweDg3LCAweDk2LCAw
eDJGLCAweDM2LCAweERGLCAweDlELCAweEZFLCAweDhCLCAweDU2LCAweDdGLCAweDM3LAorICAg
IDB4NjMsIDB4MDEsIDB4NUIsIDB4MTksIDB4OTAsIDB4QTYsIDB4MEUsIDB4MTQsCisgICAgLy8g
eS1jb29yZGluYXRlCisgICAgMHgyMiwKKyAgICAvLyBCeXRlcygzMikKKyAgICAweDU4LCAweDIw
LAorICAgIC8vIEJ5dGUgYXJyYXkgY29udGVudAorICAgIDB4MjcsIDB4REUsIDB4NjEsIDB4MkQs
IDB4NjYsIDB4NDEsIDB4OEIsIDB4REEsIDB4MTksIDB4NTAsIDB4NTgsIDB4MUUsCisgICAgMHhC
QywgMHg1QywgMHg4QywgMHgxRCwgMHhBRCwgMHg3MSwgMHgwQywgMHhCMSwgMHg0QywgMHgyMiwg
MHhGOCwgMHhDOSwKKyAgICAweDcwLCAweDQ1LCAweEY0LCAweDYxLCAweDJGLCAweEIyLCAweDBD
LCAweDkxLAorfTsKKworY29uc3RleHByIHVpbnQ4X3Qga0N0YXBDbGllbnRQaW5SZXRyaWVzUmVz
cG9uc2VbXSA9IHsKKyAgICAvLyBTdWNjZXNzCisgICAgMHgwMCwKKyAgICAvLyBtYXAoMSkKKyAg
ICAweGExLAorICAgIC8vIGtleSgzKSAtIHJldHJpZXMKKyAgICAweDAzLAorICAgIC8vIHZhbHVl
IC0gOAorICAgIDB4MDgsCit9OworCiB9IC8vIG5hbWVzcGFjZSBUZXN0RGF0YQogCiB9IC8vIG5h
bWVzcGFjZSBUZXN0V2ViS2l0QVBJCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>