<?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>163541</bug_id>
          
          <creation_ts>2016-10-17 05:32:58 -0700</creation_ts>
          <short_desc>[WebIDL] Support BufferSource</short_desc>
          <delta_ts>2016-10-18 11:01:25 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Zan Dobersek">zan</reporter>
          <assigned_to name="Zan Dobersek">zan</assigned_to>
          <cc>ap</cc>
    
    <cc>commit-queue</cc>
    
    <cc>jiewen_tan</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1240938</commentid>
    <comment_count>0</comment_count>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2016-10-17 05:32:58 -0700</bug_when>
    <thetext>[WebIDL] Support BufferSource</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1240939</commentid>
    <comment_count>1</comment_count>
      <attachid>291812</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2016-10-17 05:34:29 -0700</bug_when>
    <thetext>Created attachment 291812
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1240940</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-10-17 05:39:12 -0700</bug_when>
    <thetext>Attachment 291812 did not pass style-queue:


ERROR: Source/WebCore/crypto/algorithms/CryptoAlgorithmRSA_OAEP.cpp:72:  CryptoAlgorithmRSA_OAEP::encrypt is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/crypto/algorithms/CryptoAlgorithmRSA_OAEP.cpp:84:  CryptoAlgorithmRSA_OAEP::decrypt is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/crypto/gnutls/CryptoAlgorithmAES_CBCGnuTLS.cpp:38:  CryptoAlgorithmAES_CBC::platformEncrypt is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/crypto/gnutls/CryptoAlgorithmAES_CBCGnuTLS.cpp:50:  CryptoAlgorithmAES_CBC::platformDecrypt is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/crypto/mac/CryptoAlgorithmRSASSA_PKCS1_v1_5Mac.cpp:62:  CryptoAlgorithmRSASSA_PKCS1_v1_5::platformSign is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/crypto/mac/CryptoAlgorithmRSASSA_PKCS1_v1_5Mac.cpp:99:  CryptoAlgorithmRSASSA_PKCS1_v1_5::platformVerify is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/crypto/gnutls/CryptoAlgorithmRSA_OAEPGnuTLS.cpp:38:  CryptoAlgorithmRSA_OAEP::platformEncrypt is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/crypto/gnutls/CryptoAlgorithmRSA_OAEPGnuTLS.cpp:50:  CryptoAlgorithmRSA_OAEP::platformDecrypt is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/crypto/mac/CryptoAlgorithmRSA_OAEPMac.cpp:38:  CryptoAlgorithmRSA_OAEP::platformEncrypt is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/crypto/mac/CryptoAlgorithmRSA_OAEPMac.cpp:59:  CryptoAlgorithmRSA_OAEP::platformDecrypt is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/crypto/mac/CryptoAlgorithmAES_CBCMac.cpp:38:  transformAES_CBC is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/crypto/mac/CryptoAlgorithmAES_CBCMac.cpp:85:  CryptoAlgorithmAES_CBC::platformEncrypt is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/crypto/mac/CryptoAlgorithmAES_CBCMac.cpp:90:  CryptoAlgorithmAES_CBC::platformDecrypt is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/crypto/gnutls/CryptoAlgorithmAES_KWGnuTLS.cpp:37:  CryptoAlgorithmAES_KW::platformEncrypt is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/crypto/gnutls/CryptoAlgorithmAES_KWGnuTLS.cpp:48:  CryptoAlgorithmAES_KW::platformDecrypt is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/crypto/algorithms/CryptoAlgorithmAES_CBC.cpp:68:  CryptoAlgorithmAES_CBC::encrypt is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/crypto/algorithms/CryptoAlgorithmAES_CBC.cpp:80:  CryptoAlgorithmAES_CBC::decrypt is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/crypto/mac/CryptoAlgorithmRSAES_PKCS1_v1_5Mac.cpp:36:  CryptoAlgorithmRSAES_PKCS1_v1_5::platformEncrypt is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/crypto/mac/CryptoAlgorithmRSAES_PKCS1_v1_5Mac.cpp:50:  CryptoAlgorithmRSAES_PKCS1_v1_5::platformDecrypt is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/crypto/algorithms/CryptoAlgorithmAES_KW.cpp:67:  CryptoAlgorithmAES_KW::encryptForWrapKey is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/crypto/algorithms/CryptoAlgorithmAES_KW.cpp:77:  CryptoAlgorithmAES_KW::decryptForUnwrapKey is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/crypto/algorithms/CryptoAlgorithmRSASSA_PKCS1_v1_5.cpp:72:  CryptoAlgorithmRSASSA_PKCS1_v1_5::sign is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/crypto/algorithms/CryptoAlgorithmRSASSA_PKCS1_v1_5.cpp:84:  CryptoAlgorithmRSASSA_PKCS1_v1_5::verify is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/crypto/algorithms/CryptoAlgorithmRSAES_PKCS1_v1_5.cpp:68:  CryptoAlgorithmRSAES_PKCS1_v1_5::encrypt is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/crypto/algorithms/CryptoAlgorithmRSAES_PKCS1_v1_5.cpp:78:  CryptoAlgorithmRSAES_PKCS1_v1_5::decrypt is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/crypto/gnutls/CryptoAlgorithmRSASSA_PKCS1_v1_5GnuTLS.cpp:38:  CryptoAlgorithmRSASSA_PKCS1_v1_5::platformSign is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/crypto/gnutls/CryptoAlgorithmRSASSA_PKCS1_v1_5GnuTLS.cpp:50:  CryptoAlgorithmRSASSA_PKCS1_v1_5::platformVerify is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/ChangeLog:8:  You should remove the &apos;No new tests&apos; and either add and list tests, or explain why no new tests were possible.  [changelog/nonewtests] [5]
ERROR: Source/WebCore/crypto/gnutls/CryptoAlgorithmRSAES_PKCS1_v1_5GnuTLS.cpp:37:  CryptoAlgorithmRSAES_PKCS1_v1_5::platformEncrypt is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/crypto/gnutls/CryptoAlgorithmRSAES_PKCS1_v1_5GnuTLS.cpp:48:  CryptoAlgorithmRSAES_PKCS1_v1_5::platformDecrypt is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/crypto/mac/CryptoAlgorithmAES_KWMac.cpp:37:  CryptoAlgorithmAES_KW::platformEncrypt is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/crypto/mac/CryptoAlgorithmAES_KWMac.cpp:57:  CryptoAlgorithmAES_KW::platformDecrypt is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/bindings/js/JSWebKitSubtleCryptoCustom.cpp:673:  Missing space before {  [whitespace/braces] [5]
ERROR: Source/WebCore/bindings/js/JSWebKitSubtleCryptoCustom.cpp:774:  Missing space before {  [whitespace/braces] [5]
Total errors found: 34 in 50 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1240945</commentid>
    <comment_count>3</comment_count>
      <attachid>291812</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2016-10-17 07:02:17 -0700</bug_when>
    <thetext>Comment on attachment 291812
WIP

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

&gt; Source/WebCore/bindings/js/JSDOMConvert.h:657
&gt; +        throwTypeError(&amp;state, scope);

I would add an error message explaining the reason of the error.

&gt; Source/WebCore/bindings/js/JSWebKitSubtleCryptoCustom.cpp:-169
&gt; -    auto success = cryptoOperationDataFromJSValue(&amp;state, state.uncheckedArgument(2), data);

Can we remove Source/WebCore/bindings/js/JSCryptoAlgorithmDictionary.cpp as well?

&gt; Source/WebCore/crypto/WebKitSubtleCrypto.idl:-35
&gt; -    [Custom] Promise digest(AlgorithmIdentifier algorithm, sequence&lt;CryptoOperationData&gt; data);

This is a legacy API and is not supposed to be changed.
But at the same time, all of these methods are custom so it is probably fine.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1240946</commentid>
    <comment_count>4</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2016-10-17 07:03:29 -0700</bug_when>
    <thetext>&gt; Can we remove Source/WebCore/bindings/js/JSCryptoAlgorithmDictionary.cpp as
&gt; well?
Would bad copy-paste..
I was meaning &quot;Can we remove cryptoOperationDataFromJSValue function&quot;...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1240957</commentid>
    <comment_count>5</comment_count>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2016-10-17 08:21:33 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; &gt; Can we remove Source/WebCore/bindings/js/JSCryptoAlgorithmDictionary.cpp as
&gt; &gt; well?
&gt; Would bad copy-paste..
&gt; I was meaning &quot;Can we remove cryptoOperationDataFromJSValue function&quot;...

The two uses of cryptoOperationDataFromJSValue() in JSCryptoAlgorithmDictionary.cpp can be replaced with BufferSource as well. That would enable removing the JSCryptoOperationData files.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1240977</commentid>
    <comment_count>6</comment_count>
      <attachid>291824</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2016-10-17 09:37:43 -0700</bug_when>
    <thetext>Created attachment 291824
WIP

Need to fix xcode builds.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1241009</commentid>
    <comment_count>7</comment_count>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2016-10-17 10:43:33 -0700</bug_when>
    <thetext>Hi Youenn and Zan,

Thank you for making the support for BufferSource. I would definitely like to use the BufferSource in my new WebCrypto API once it is ready. However, my opinion of the old interface remains the same: keep it intact. I am not quite sure why there is a must to change the old CryptoOperationData to BufferSource. Even though this change probably wouldn&apos;t break anything, I just don&apos;t see a must for replacing CryptoOperationData with BufferSource.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1241018</commentid>
    <comment_count>8</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2016-10-17 10:54:59 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; Hi Youenn and Zan,
&gt; 
&gt; Thank you for making the support for BufferSource. I would definitely like
&gt; to use the BufferSource in my new WebCrypto API once it is ready. However,
&gt; my opinion of the old interface remains the same: keep it intact. I am not
&gt; quite sure why there is a must to change the old CryptoOperationData to
&gt; BufferSource. Even though this change probably wouldn&apos;t break anything, I
&gt; just don&apos;t see a must for replacing CryptoOperationData with BufferSource.

From the legacy crypto API point of view, AFAICS, it is just renaming the cryptoOperationDataFromJSValue function. I think it is good to do that since the function is more generic than crypto and we do not want twice the same method in our code base.

The change to WebKit legacy crypto IDL is not actually needed, it does not change anything since all methods are custom I think. But it clarifies things since the custom binding is not supporting sequence&lt;&gt; parameters.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1241021</commentid>
    <comment_count>9</comment_count>
      <attachid>291833</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2016-10-17 10:57:07 -0700</bug_when>
    <thetext>Created attachment 291833
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1241025</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-10-17 11:01:07 -0700</bug_when>
    <thetext>Attachment 291833 did not pass style-queue:


ERROR: Source/WebCore/crypto/algorithms/CryptoAlgorithmRSA_OAEP.cpp:72:  CryptoAlgorithmRSA_OAEP::encrypt is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/crypto/algorithms/CryptoAlgorithmRSA_OAEP.cpp:84:  CryptoAlgorithmRSA_OAEP::decrypt is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/crypto/gnutls/CryptoAlgorithmAES_CBCGnuTLS.cpp:38:  CryptoAlgorithmAES_CBC::platformEncrypt is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/crypto/gnutls/CryptoAlgorithmAES_CBCGnuTLS.cpp:50:  CryptoAlgorithmAES_CBC::platformDecrypt is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/crypto/mac/CryptoAlgorithmRSASSA_PKCS1_v1_5Mac.cpp:62:  CryptoAlgorithmRSASSA_PKCS1_v1_5::platformSign is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/crypto/mac/CryptoAlgorithmRSASSA_PKCS1_v1_5Mac.cpp:99:  CryptoAlgorithmRSASSA_PKCS1_v1_5::platformVerify is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/crypto/mac/CryptoAlgorithmRSA_OAEPMac.cpp:38:  CryptoAlgorithmRSA_OAEP::platformEncrypt is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/crypto/mac/CryptoAlgorithmRSA_OAEPMac.cpp:59:  CryptoAlgorithmRSA_OAEP::platformDecrypt is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/crypto/mac/CryptoAlgorithmAES_CBCMac.cpp:38:  transformAES_CBC is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/crypto/mac/CryptoAlgorithmAES_CBCMac.cpp:85:  CryptoAlgorithmAES_CBC::platformEncrypt is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/crypto/mac/CryptoAlgorithmAES_CBCMac.cpp:90:  CryptoAlgorithmAES_CBC::platformDecrypt is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/crypto/gnutls/CryptoAlgorithmAES_KWGnuTLS.cpp:37:  CryptoAlgorithmAES_KW::platformEncrypt is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/crypto/gnutls/CryptoAlgorithmAES_KWGnuTLS.cpp:48:  CryptoAlgorithmAES_KW::platformDecrypt is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/crypto/algorithms/CryptoAlgorithmAES_CBC.cpp:68:  CryptoAlgorithmAES_CBC::encrypt is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/crypto/algorithms/CryptoAlgorithmAES_CBC.cpp:80:  CryptoAlgorithmAES_CBC::decrypt is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/crypto/mac/CryptoAlgorithmRSAES_PKCS1_v1_5Mac.cpp:36:  CryptoAlgorithmRSAES_PKCS1_v1_5::platformEncrypt is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/crypto/mac/CryptoAlgorithmRSAES_PKCS1_v1_5Mac.cpp:50:  CryptoAlgorithmRSAES_PKCS1_v1_5::platformDecrypt is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/crypto/algorithms/CryptoAlgorithmAES_KW.cpp:67:  CryptoAlgorithmAES_KW::encryptForWrapKey is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/crypto/algorithms/CryptoAlgorithmAES_KW.cpp:77:  CryptoAlgorithmAES_KW::decryptForUnwrapKey is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/crypto/algorithms/CryptoAlgorithmRSASSA_PKCS1_v1_5.cpp:72:  CryptoAlgorithmRSASSA_PKCS1_v1_5::sign is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/crypto/algorithms/CryptoAlgorithmRSASSA_PKCS1_v1_5.cpp:84:  CryptoAlgorithmRSASSA_PKCS1_v1_5::verify is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/crypto/gnutls/CryptoAlgorithmRSA_OAEPGnuTLS.cpp:38:  CryptoAlgorithmRSA_OAEP::platformEncrypt is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/crypto/gnutls/CryptoAlgorithmRSA_OAEPGnuTLS.cpp:50:  CryptoAlgorithmRSA_OAEP::platformDecrypt is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/crypto/algorithms/CryptoAlgorithmRSAES_PKCS1_v1_5.cpp:68:  CryptoAlgorithmRSAES_PKCS1_v1_5::encrypt is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/crypto/algorithms/CryptoAlgorithmRSAES_PKCS1_v1_5.cpp:78:  CryptoAlgorithmRSAES_PKCS1_v1_5::decrypt is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/crypto/gnutls/CryptoAlgorithmRSASSA_PKCS1_v1_5GnuTLS.cpp:38:  CryptoAlgorithmRSASSA_PKCS1_v1_5::platformSign is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/crypto/gnutls/CryptoAlgorithmRSASSA_PKCS1_v1_5GnuTLS.cpp:50:  CryptoAlgorithmRSASSA_PKCS1_v1_5::platformVerify is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/ChangeLog:8:  You should remove the &apos;No new tests&apos; and either add and list tests, or explain why no new tests were possible.  [changelog/nonewtests] [5]
ERROR: Source/WebCore/crypto/gnutls/CryptoAlgorithmRSAES_PKCS1_v1_5GnuTLS.cpp:37:  CryptoAlgorithmRSAES_PKCS1_v1_5::platformEncrypt is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/crypto/gnutls/CryptoAlgorithmRSAES_PKCS1_v1_5GnuTLS.cpp:48:  CryptoAlgorithmRSAES_PKCS1_v1_5::platformDecrypt is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/crypto/mac/CryptoAlgorithmAES_KWMac.cpp:37:  CryptoAlgorithmAES_KW::platformEncrypt is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/crypto/mac/CryptoAlgorithmAES_KWMac.cpp:57:  CryptoAlgorithmAES_KW::platformDecrypt is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/bindings/js/JSWebKitSubtleCryptoCustom.cpp:673:  Missing space before {  [whitespace/braces] [5]
ERROR: Source/WebCore/bindings/js/JSWebKitSubtleCryptoCustom.cpp:774:  Missing space before {  [whitespace/braces] [5]
Total errors found: 34 in 52 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1241036</commentid>
    <comment_count>11</comment_count>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2016-10-17 11:05:43 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; Hi Youenn and Zan,
&gt; 
&gt; Thank you for making the support for BufferSource. I would definitely like
&gt; to use the BufferSource in my new WebCrypto API once it is ready. However,
&gt; my opinion of the old interface remains the same: keep it intact. I am not
&gt; quite sure why there is a must to change the old CryptoOperationData to
&gt; BufferSource. Even though this change probably wouldn&apos;t break anything, I
&gt; just don&apos;t see a must for replacing CryptoOperationData with BufferSource.

FWIW I&apos;m totally fine reverting any changes to the crypto interfaces. I started with those because that&apos;s where I spotted BufferSource first, but later also found it could be used on the SourceBuffer interface.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1241047</commentid>
    <comment_count>12</comment_count>
      <attachid>291840</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2016-10-17 11:25:41 -0700</bug_when>
    <thetext>Created attachment 291840
WIP

Loses the crypto changes, should build everywhere, needs a bindings test.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1241049</commentid>
    <comment_count>13</comment_count>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2016-10-17 11:27:00 -0700</bug_when>
    <thetext>(In reply to comment #11)
&gt; (In reply to comment #7)
&gt; &gt; Hi Youenn and Zan,
&gt; &gt; 
&gt; &gt; Thank you for making the support for BufferSource. I would definitely like
&gt; &gt; to use the BufferSource in my new WebCrypto API once it is ready. However,
&gt; &gt; my opinion of the old interface remains the same: keep it intact. I am not
&gt; &gt; quite sure why there is a must to change the old CryptoOperationData to
&gt; &gt; BufferSource. Even though this change probably wouldn&apos;t break anything, I
&gt; &gt; just don&apos;t see a must for replacing CryptoOperationData with BufferSource.
&gt; 
&gt; FWIW I&apos;m totally fine reverting any changes to the crypto interfaces. I
&gt; started with those because that&apos;s where I spotted BufferSource first, but
&gt; later also found it could be used on the SourceBuffer interface.

Thank you. Actually the old spec the old interface is built against doesn&apos;t use BufferSource. So I will really appreciate it if you can revert your changes against to the crypto interfaces.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1241054</commentid>
    <comment_count>14</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-10-17 11:30:11 -0700</bug_when>
    <thetext>Attachment 291840 did not pass style-queue:


ERROR: Source/WebCore/ChangeLog:8:  You should remove the &apos;No new tests&apos; and either add and list tests, or explain why no new tests were possible.  [changelog/nonewtests] [5]
Total errors found: 1 in 11 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1241055</commentid>
    <comment_count>15</comment_count>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2016-10-17 11:30:30 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; (In reply to comment #7)
&gt; &gt; Hi Youenn and Zan,
&gt; &gt; 
&gt; &gt; Thank you for making the support for BufferSource. I would definitely like
&gt; &gt; to use the BufferSource in my new WebCrypto API once it is ready. However,
&gt; &gt; my opinion of the old interface remains the same: keep it intact. I am not
&gt; &gt; quite sure why there is a must to change the old CryptoOperationData to
&gt; &gt; BufferSource. Even though this change probably wouldn&apos;t break anything, I
&gt; &gt; just don&apos;t see a must for replacing CryptoOperationData with BufferSource.
&gt; 
&gt; From the legacy crypto API point of view, AFAICS, it is just renaming the
&gt; cryptoOperationDataFromJSValue function. I think it is good to do that since
&gt; the function is more generic than crypto and we do not want twice the same
&gt; method in our code base.
&gt; 
&gt; The change to WebKit legacy crypto IDL is not actually needed, it does not
&gt; change anything since all methods are custom I think. But it clarifies
&gt; things since the custom binding is not supporting sequence&lt;&gt; parameters.

I don&apos;t quite get why cryptoOperationDataFromJSValue is more generic than crypto. Besides the old WebCrypto interface, I don&apos;t see any other places that use it. In my new implementation, I don&apos;t have any plan to use this function at least at this point.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1241347</commentid>
    <comment_count>16</comment_count>
      <attachid>291921</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2016-10-17 23:22:29 -0700</bug_when>
    <thetext>Created attachment 291921
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1241366</commentid>
    <comment_count>17</comment_count>
      <attachid>291921</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2016-10-18 00:54:24 -0700</bug_when>
    <thetext>Comment on attachment 291921
Patch

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

&gt; Source/WebCore/bindings/js/JSDOMBinding.h:26
&gt; +#include &quot;BufferSource.h&quot;

Can we do without this include here?

&gt; Source/WebCore/bindings/js/JSDOMConvert.h:645
&gt; +    using ReturnType = BufferSource;

Not sure this adds much?

&gt; Source/WebCore/bindings/scripts/CodeGenerator.pm:575
&gt; +sub IsBufferSourceType

Not sure this function is really needed.

&gt; Source/WebCore/bindings/scripts/CodeGenerator.pm:878
&gt; +    return 0 if $object-&gt;IsTypedArrayType($type) || $object-&gt;IsBufferSourceType($type);

If we remove IsBufferSourceType, we could write return 0 if $type eq &quot;BufferSource&quot; instead which sounds good enough.

&gt; Source/WebCore/bindings/scripts/CodeGeneratorJS.pm:322
&gt; +    return if $codeGenerator-&gt;IsTypedArrayType($interfaceName) || $codeGenerator-&gt;IsBufferSourceType($interfaceName);

Maybe do the three checks in the same way: the first is separated from IsTypedArrayType and the next twos are combined.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1241368</commentid>
    <comment_count>18</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2016-10-18 01:00:20 -0700</bug_when>
    <thetext>&gt; I don&apos;t quite get why cryptoOperationDataFromJSValue is more generic than
&gt; crypto. Besides the old WebCrypto interface, I don&apos;t see any other places
&gt; that use it. In my new implementation, I don&apos;t have any plan to use this
&gt; function at least at this point.

There is no crypto-specific bits in cryptoOperationDataFromJSValue, it is just converting a BufferSource in a struct that can be used more easily by WebCore.

In general, the fact that the Crypto API is legacy and its functionality should be kept the same does not prevent us to do some refactoring to improve the code base (removing duplicate code).

I agree this could be fixed as a follow-up patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1241397</commentid>
    <comment_count>19</comment_count>
      <attachid>291935</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2016-10-18 03:39:16 -0700</bug_when>
    <thetext>Created attachment 291935
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1241427</commentid>
    <comment_count>20</comment_count>
      <attachid>291935</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2016-10-18 06:18:25 -0700</bug_when>
    <thetext>Comment on attachment 291935
Patch for landing

Clearing flags on attachment: 291935

Committed r207462: &lt;http://trac.webkit.org/changeset/207462&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1241428</commentid>
    <comment_count>21</comment_count>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2016-10-18 06:18:36 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1241503</commentid>
    <comment_count>22</comment_count>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2016-10-18 11:01:25 -0700</bug_when>
    <thetext>(In reply to comment #18)
&gt; &gt; I don&apos;t quite get why cryptoOperationDataFromJSValue is more generic than
&gt; &gt; crypto. Besides the old WebCrypto interface, I don&apos;t see any other places
&gt; &gt; that use it. In my new implementation, I don&apos;t have any plan to use this
&gt; &gt; function at least at this point.
&gt; 
&gt; There is no crypto-specific bits in cryptoOperationDataFromJSValue, it is
&gt; just converting a BufferSource in a struct that can be used more easily by
&gt; WebCore.
&gt; 
&gt; In general, the fact that the Crypto API is legacy and its functionality
&gt; should be kept the same does not prevent us to do some refactoring to
&gt; improve the code base (removing duplicate code).
&gt; 
&gt; I agree this could be fixed as a follow-up patch.

I see. We could remove this function or the file together when we deprecate the whole WebkitSubtleCrypto thing.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>291812</attachid>
            <date>2016-10-17 05:34:29 -0700</date>
            <delta_ts>2016-10-17 09:37:36 -0700</delta_ts>
            <desc>WIP</desc>
            <filename>bug-163541-20161017053055.patch</filename>
            <type>text/plain</type>
            <size>103635</size>
            <attacher name="Zan Dobersek">zan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA3NDAyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDg5ZWZmMWIzNThkNDY3
Y2ZkYWQ0NjY4YWEyNWRkNDgyZTc1M2U3MC4uY2IzNDY4NzkwODc1N2IzNTgyOGQ4NDdmNDIxNDAw
N2NiOWQ2MmI2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzMyBAQAorMjAxNi0xMC0xNyAgWmFu
IERvYmVyc2VrICA8emRvYmVyc2VrQGlnYWxpYS5jb20+CisKKyAgICAgICAgW1dlYklETF0gU3Vw
cG9ydCBCdWZmZXJTb3VyY2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE2MzU0MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIE5vIG5ldyB0ZXN0cyAoT09QUyEpLgorCisgICAgICAgICogTW9kdWxlcy9tZWRp
YXNvdXJjZS9Tb3VyY2VCdWZmZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVy
OjphcHBlbmRCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyOjphcHBlbmRC
dWZmZXJJbnRlcm5hbCk6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXNvdXJjZS9Tb3VyY2VCdWZm
ZXIuaDoKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc291cmNlL1NvdXJjZUJ1ZmZlci5pZGw6Cisg
ICAgICAgICogYmluZGluZ3MvZ2VuZXJpYy9JRExUeXBlcy5oOgorICAgICAgICAqIGJpbmRpbmdz
L2pzL0J1ZmZlclNvdXJjZS5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxn
b3JpdGhtcy9DcnlwdG9BbGdvcml0aG1TSEExLmguCisgICAgICAgICogYmluZGluZ3MvanMvSlNE
T01CaW5kaW5nLmg6CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01Db252ZXJ0Lmg6CisgICAg
ICAgIChXZWJDb3JlOjpDb252ZXJ0ZXI8SURMQnVmZmVyU291cmNlPjo6Y29udmVydCk6CisgICAg
ICAgICogYmluZGluZ3MvanMvSlNXZWJLaXRTdWJ0bGVDcnlwdG9DdXN0b20uY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SlNXZWJLaXRTdWJ0bGVDcnlwdG86OmVuY3J5cHQpOgorICAgICAgICAoV2Vi
Q29yZTo6SlNXZWJLaXRTdWJ0bGVDcnlwdG86OmRlY3J5cHQpOgorICAgICAgICAoV2ViQ29yZTo6
SlNXZWJLaXRTdWJ0bGVDcnlwdG86OnNpZ24pOgorICAgICAgICAoV2ViQ29yZTo6SlNXZWJLaXRT
dWJ0bGVDcnlwdG86OnZlcmlmeSk6CisgICAgICAgIChXZWJDb3JlOjpKU1dlYktpdFN1YnRsZUNy
eXB0bzo6ZGlnZXN0KToKKyAgICAgICAgKFdlYkNvcmU6OmltcG9ydEtleSk6CisgICAgICAgIChX
ZWJDb3JlOjpKU1dlYktpdFN1YnRsZUNyeXB0bzo6aW1wb3J0S2V5KToKKyAgICAgICAgKFdlYkNv
cmU6OkpTV2ViS2l0U3VidGxlQ3J5cHRvOjp3cmFwS2V5KToKKyAgICAgICAgKFdlYkNvcmU6OkpT
V2ViS2l0U3VidGxlQ3J5cHRvOjp1bndyYXBLZXkpOgorICAgICAgICAqIGJpbmRpbmdzL3Njcmlw
dHMvQ29kZUdlbmVyYXRvci5wbToKKyAgICAgICAgKFNraXBJbmNsdWRlSGVhZGVyKToKKyAgICAg
ICAgKElzQnVmZmVyU291cmNlVHlwZSk6CisgICAgICAgIChJc1dyYXBwZXJUeXBlKToKKyAgICAg
ICAgKiBiaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbToKKyAgICAgICAgKEFkZENs
YXNzRm9yd2FyZElmTmVlZGVkKToKKyAgICAgICAgKEdldEJhc2VJRExUeXBlKToKKyAgICAgICAg
KElzSGFuZGxlZEJ5RE9NQ29udmVydCk6CisgICAgICAgICogY3J5cHRvL0NyeXB0b0FsZ29yaXRo
bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9BbGdvcml0aG06OmVuY3J5cHQpOgorICAg
ICAgICAoV2ViQ29yZTo6Q3J5cHRvQWxnb3JpdGhtOjpkZWNyeXB0KToKKyAgICAgICAgKFdlYkNv
cmU6OkNyeXB0b0FsZ29yaXRobTo6c2lnbik6CisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9BbGdv
cml0aG06OnZlcmlmeSk6CisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9BbGdvcml0aG06OmRpZ2Vz
dCk6CisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9BbGdvcml0aG06OmVuY3J5cHRGb3JXcmFwS2V5
KToKKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0FsZ29yaXRobTo6ZGVjcnlwdEZvclVud3JhcEtl
eSk6CisgICAgICAgICogY3J5cHRvL0NyeXB0b0FsZ29yaXRobS5oOgorICAgICAgICAqIGNyeXB0
by9DcnlwdG9LZXlTZXJpYWxpemF0aW9uLmg6CisgICAgICAgICogY3J5cHRvL1dlYktpdFN1YnRs
ZUNyeXB0by5pZGw6CisgICAgICAgICogY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGht
QUVTX0NCQy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9BbGdvcml0aG1BRVNfQ0JDOjpl
bmNyeXB0KToKKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0FsZ29yaXRobUFFU19DQkM6OmRlY3J5
cHQpOgorICAgICAgICAqIGNyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobUFFU19DQkMu
aDoKKyAgICAgICAgKiBjcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1BRVNfS1cuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvQWxnb3JpdGhtQUVTX0tXOjplbmNyeXB0Rm9yV3Jh
cEtleSk6CisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9BbGdvcml0aG1BRVNfS1c6OmRlY3J5cHRG
b3JVbndyYXBLZXkpOgorICAgICAgICAqIGNyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRo
bUFFU19LVy5oOgorICAgICAgICAqIGNyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobUhN
QUMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvQWxnb3JpdGhtSE1BQzo6c2lnbik6Cisg
ICAgICAgIChXZWJDb3JlOjpDcnlwdG9BbGdvcml0aG1ITUFDOjp2ZXJpZnkpOgorICAgICAgICAq
IGNyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobUhNQUMuaDoKKyAgICAgICAgKiBjcnlw
dG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1SU0FFU19QS0NTMV92MV81LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkNyeXB0b0FsZ29yaXRobVJTQUVTX1BLQ1MxX3YxXzU6OmVuY3J5cHQpOgor
ICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvQWxnb3JpdGhtUlNBRVNfUEtDUzFfdjFfNTo6ZGVjcnlw
dCk6CisgICAgICAgICogY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtUlNBRVNfUEtD
UzFfdjFfNS5oOgorICAgICAgICAqIGNyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVJT
QVNTQV9QS0NTMV92MV81LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0FsZ29yaXRobVJT
QVNTQV9QS0NTMV92MV81OjpzaWduKToKKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0FsZ29yaXRo
bVJTQVNTQV9QS0NTMV92MV81Ojp2ZXJpZnkpOgorICAgICAgICAqIGNyeXB0by9hbGdvcml0aG1z
L0NyeXB0b0FsZ29yaXRobVJTQVNTQV9QS0NTMV92MV81Lmg6CisgICAgICAgICogY3J5cHRvL2Fs
Z29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtUlNBX09BRVAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Q3J5cHRvQWxnb3JpdGhtUlNBX09BRVA6OmVuY3J5cHQpOgorICAgICAgICAoV2ViQ29yZTo6Q3J5
cHRvQWxnb3JpdGhtUlNBX09BRVA6OmRlY3J5cHQpOgorICAgICAgICAqIGNyeXB0by9hbGdvcml0
aG1zL0NyeXB0b0FsZ29yaXRobVJTQV9PQUVQLmg6CisgICAgICAgICogY3J5cHRvL2FsZ29yaXRo
bXMvQ3J5cHRvQWxnb3JpdGhtU0hBMS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9BbGdv
cml0aG1TSEExOjpkaWdlc3QpOgorICAgICAgICAqIGNyeXB0by9hbGdvcml0aG1zL0NyeXB0b0Fs
Z29yaXRobVNIQTEuaDoKKyAgICAgICAgKiBjcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0
aG1TSEEyMjQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvQWxnb3JpdGhtU0hBMjI0Ojpk
aWdlc3QpOgorICAgICAgICAqIGNyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVNIQTIy
NC5oOgorICAgICAgICAqIGNyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVNIQTI1Ni5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9BbGdvcml0aG1TSEEyNTY6OmRpZ2VzdCk6Cisg
ICAgICAgICogY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtU0hBMjU2Lmg6CisgICAg
ICAgICogY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtU0hBMzg0LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkNyeXB0b0FsZ29yaXRobVNIQTM4NDo6ZGlnZXN0KToKKyAgICAgICAgKiBj
cnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1TSEEzODQuaDoKKyAgICAgICAgKiBjcnlw
dG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1TSEE1MTIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Q3J5cHRvQWxnb3JpdGhtU0hBNTEyOjpkaWdlc3QpOgorICAgICAgICAqIGNyeXB0by9hbGdv
cml0aG1zL0NyeXB0b0FsZ29yaXRobVNIQTUxMi5oOgorICAgICAgICAqIGNyeXB0by9nbnV0bHMv
Q3J5cHRvQWxnb3JpdGhtQUVTX0NCQ0dudVRMUy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDcnlw
dG9BbGdvcml0aG1BRVNfQ0JDOjpwbGF0Zm9ybUVuY3J5cHQpOgorICAgICAgICAoV2ViQ29yZTo6
Q3J5cHRvQWxnb3JpdGhtQUVTX0NCQzo6cGxhdGZvcm1EZWNyeXB0KToKKyAgICAgICAgKiBjcnlw
dG8vZ251dGxzL0NyeXB0b0FsZ29yaXRobUFFU19LV0dudVRMUy5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpDcnlwdG9BbGdvcml0aG1BRVNfS1c6OnBsYXRmb3JtRW5jcnlwdCk6CisgICAgICAgIChX
ZWJDb3JlOjpDcnlwdG9BbGdvcml0aG1BRVNfS1c6OnBsYXRmb3JtRGVjcnlwdCk6CisgICAgICAg
ICogY3J5cHRvL2dudXRscy9DcnlwdG9BbGdvcml0aG1ITUFDR251VExTLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OmNhbGN1bGF0ZVNpZ25hdHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9B
bGdvcml0aG1ITUFDOjpwbGF0Zm9ybVNpZ24pOgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvQWxn
b3JpdGhtSE1BQzo6cGxhdGZvcm1WZXJpZnkpOgorICAgICAgICAqIGNyeXB0by9nbnV0bHMvQ3J5
cHRvQWxnb3JpdGhtUlNBRVNfUEtDUzFfdjFfNUdudVRMUy5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpDcnlwdG9BbGdvcml0aG1SU0FFU19QS0NTMV92MV81OjpwbGF0Zm9ybUVuY3J5cHQpOgorICAg
ICAgICAoV2ViQ29yZTo6Q3J5cHRvQWxnb3JpdGhtUlNBRVNfUEtDUzFfdjFfNTo6cGxhdGZvcm1E
ZWNyeXB0KToKKyAgICAgICAgKiBjcnlwdG8vZ251dGxzL0NyeXB0b0FsZ29yaXRobVJTQVNTQV9Q
S0NTMV92MV81R251VExTLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0FsZ29yaXRobVJT
QVNTQV9QS0NTMV92MV81OjpwbGF0Zm9ybVNpZ24pOgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRv
QWxnb3JpdGhtUlNBU1NBX1BLQ1MxX3YxXzU6OnBsYXRmb3JtVmVyaWZ5KToKKyAgICAgICAgKiBj
cnlwdG8vZ251dGxzL0NyeXB0b0FsZ29yaXRobVJTQV9PQUVQR251VExTLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkNyeXB0b0FsZ29yaXRobVJTQV9PQUVQOjpwbGF0Zm9ybUVuY3J5cHQpOgorICAg
ICAgICAoV2ViQ29yZTo6Q3J5cHRvQWxnb3JpdGhtUlNBX09BRVA6OnBsYXRmb3JtRGVjcnlwdCk6
CisgICAgICAgICogY3J5cHRvL2tleXMvQ3J5cHRvS2V5U2VyaWFsaXphdGlvblJhdy5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpDcnlwdG9LZXlTZXJpYWxpemF0aW9uUmF3OjpDcnlwdG9LZXlTZXJp
YWxpemF0aW9uUmF3KToKKyAgICAgICAgKiBjcnlwdG8va2V5cy9DcnlwdG9LZXlTZXJpYWxpemF0
aW9uUmF3Lmg6CisgICAgICAgICogY3J5cHRvL21hYy9DcnlwdG9BbGdvcml0aG1BRVNfQ0JDTWFj
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnRyYW5zZm9ybUFFU19DQkMpOgorICAgICAgICAoV2Vi
Q29yZTo6Q3J5cHRvQWxnb3JpdGhtQUVTX0NCQzo6cGxhdGZvcm1FbmNyeXB0KToKKyAgICAgICAg
KFdlYkNvcmU6OkNyeXB0b0FsZ29yaXRobUFFU19DQkM6OnBsYXRmb3JtRGVjcnlwdCk6CisgICAg
ICAgICogY3J5cHRvL21hYy9DcnlwdG9BbGdvcml0aG1BRVNfS1dNYWMuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Q3J5cHRvQWxnb3JpdGhtQUVTX0tXOjpwbGF0Zm9ybUVuY3J5cHQpOgorICAgICAg
ICAoV2ViQ29yZTo6Q3J5cHRvQWxnb3JpdGhtQUVTX0tXOjpwbGF0Zm9ybURlY3J5cHQpOgorICAg
ICAgICAqIGNyeXB0by9tYWMvQ3J5cHRvQWxnb3JpdGhtSE1BQ01hYy5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpjYWxjdWxhdGVTaWduYXR1cmUpOgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvQWxn
b3JpdGhtSE1BQzo6cGxhdGZvcm1TaWduKToKKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0FsZ29y
aXRobUhNQUM6OnBsYXRmb3JtVmVyaWZ5KToKKyAgICAgICAgKiBjcnlwdG8vbWFjL0NyeXB0b0Fs
Z29yaXRobVJTQUVTX1BLQ1MxX3YxXzVNYWMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRv
QWxnb3JpdGhtUlNBRVNfUEtDUzFfdjFfNTo6cGxhdGZvcm1FbmNyeXB0KToKKyAgICAgICAgKFdl
YkNvcmU6OkNyeXB0b0FsZ29yaXRobVJTQUVTX1BLQ1MxX3YxXzU6OnBsYXRmb3JtRGVjcnlwdCk6
CisgICAgICAgICogY3J5cHRvL21hYy9DcnlwdG9BbGdvcml0aG1SU0FTU0FfUEtDUzFfdjFfNU1h
Yy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9BbGdvcml0aG1SU0FTU0FfUEtDUzFfdjFf
NTo6cGxhdGZvcm1TaWduKToKKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0FsZ29yaXRobVJTQVNT
QV9QS0NTMV92MV81OjpwbGF0Zm9ybVZlcmlmeSk6CisgICAgICAgICogY3J5cHRvL21hYy9Dcnlw
dG9BbGdvcml0aG1SU0FfT0FFUE1hYy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9BbGdv
cml0aG1SU0FfT0FFUDo6cGxhdGZvcm1FbmNyeXB0KToKKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0
b0FsZ29yaXRobVJTQV9PQUVQOjpwbGF0Zm9ybURlY3J5cHQpOgorCiAyMDE2LTEwLTE2ICBOYW4g
V2FuZyAgPG5fd2FuZ0BhcHBsZS5jb20+CiAKICAgICAgICAgQVg6IFtNYWNdIHJvbGVEZXNjcmlw
dGlvbiBmb3IgQVhUZXh0RmllbGQgaW5wdXQgdHlwZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvU291cmNlQnVmZmVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFzb3VyY2UvU291cmNlQnVmZmVyLmNwcAppbmRleCAwYmQxZDVkYzYwNWU5
NTVjOGMwYmFjYWUxNDBhOGJlYWYwNWQ0YTBjLi42MWQ3NDcxY2YwOTdmMDEwNzhmNmYxN2U0MWRl
MWY1ODdjNzkzMWMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291
cmNlL1NvdXJjZUJ1ZmZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNv
dXJjZS9Tb3VyY2VCdWZmZXIuY3BwCkBAIC0zNSw2ICszNSw3IEBACiAjaWYgRU5BQkxFKE1FRElB
X1NPVVJDRSkKIAogI2luY2x1ZGUgIkF1ZGlvVHJhY2tMaXN0LmgiCisjaW5jbHVkZSAiQnVmZmVy
U291cmNlLmgiCiAjaW5jbHVkZSAiRXZlbnQuaCIKICNpbmNsdWRlICJFdmVudE5hbWVzLmgiCiAj
aW5jbHVkZSAiRXhjZXB0aW9uQ29kZVBsYWNlaG9sZGVyLmgiCkBAIC0yMzEsMTUgKzIzMiw5IEBA
IEV4Y2VwdGlvbk9yPHZvaWQ+IFNvdXJjZUJ1ZmZlcjo6c2V0QXBwZW5kV2luZG93RW5kKGRvdWJs
ZSBuZXdWYWx1ZSkKICAgICByZXR1cm4geyB9OwogfQogCi0KLUV4Y2VwdGlvbk9yPHZvaWQ+IFNv
dXJjZUJ1ZmZlcjo6YXBwZW5kQnVmZmVyKEFycmF5QnVmZmVyJiBkYXRhKQotewotICAgIHJldHVy
biBhcHBlbmRCdWZmZXJJbnRlcm5hbChzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyKj4oZGF0YS5k
YXRhKCkpLCBkYXRhLmJ5dGVMZW5ndGgoKSk7Ci19Ci0KLUV4Y2VwdGlvbk9yPHZvaWQ+IFNvdXJj
ZUJ1ZmZlcjo6YXBwZW5kQnVmZmVyKEFycmF5QnVmZmVyVmlldyYgZGF0YSkKK0V4Y2VwdGlvbk9y
PHZvaWQ+IFNvdXJjZUJ1ZmZlcjo6YXBwZW5kQnVmZmVyKGNvbnN0IEJ1ZmZlclNvdXJjZSYgZGF0
YSkKIHsKLSAgICByZXR1cm4gYXBwZW5kQnVmZmVySW50ZXJuYWwoc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQgY2hhcio+KGRhdGEuYmFzZUFkZHJlc3MoKSksIGRhdGEuYnl0ZUxlbmd0aCgpKTsKKyAgICBy
ZXR1cm4gYXBwZW5kQnVmZmVySW50ZXJuYWwoc3RhdGljX2Nhc3Q8Y29uc3QgdW5zaWduZWQgY2hh
cio+KGRhdGEuZGF0YSksIGRhdGEubGVuZ3RoKTsKIH0KIAogdm9pZCBTb3VyY2VCdWZmZXI6OnJl
c2V0UGFyc2VyU3RhdGUoKQpAQCAtNDk2LDcgKzQ5MSw3IEBAIHZvaWQgU291cmNlQnVmZmVyOjpz
Y2hlZHVsZUV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnROYW1lKQogICAgIG1fYXN5bmNF
dmVudFF1ZXVlLmVucXVldWVFdmVudChXVEZNb3ZlKGV2ZW50KSk7CiB9CiAKLUV4Y2VwdGlvbk9y
PHZvaWQ+IFNvdXJjZUJ1ZmZlcjo6YXBwZW5kQnVmZmVySW50ZXJuYWwodW5zaWduZWQgY2hhciog
ZGF0YSwgdW5zaWduZWQgc2l6ZSkKK0V4Y2VwdGlvbk9yPHZvaWQ+IFNvdXJjZUJ1ZmZlcjo6YXBw
ZW5kQnVmZmVySW50ZXJuYWwoY29uc3QgdW5zaWduZWQgY2hhciogZGF0YSwgdW5zaWduZWQgc2l6
ZSkKIHsKICAgICAvLyBTZWN0aW9uIDMuMiBhcHBlbmRCdWZmZXIoKQogICAgIC8vIGh0dHBzOi8v
ZHZjcy53My5vcmcvaGcvaHRtbC1tZWRpYS9yYXctZmlsZS9kZWZhdWx0L21lZGlhLXNvdXJjZS9t
ZWRpYS1zb3VyY2UuaHRtbCN3aWRsLVNvdXJjZUJ1ZmZlci1hcHBlbmRCdWZmZXItdm9pZC1BcnJh
eUJ1ZmZlclZpZXctZGF0YQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRp
YXNvdXJjZS9Tb3VyY2VCdWZmZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3Vy
Y2UvU291cmNlQnVmZmVyLmgKaW5kZXggMWNkODU0M2M1N2VlMDNiMDcwMmFhZDg3OGE2YjhjMDZj
NjhjZjQwZS4uMGNkZGYyODFmZmY3Y2JjMzNkMzIyNTFhYTNmY2Q4NzU0MWE2MjBlOCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9Tb3VyY2VCdWZmZXIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL1NvdXJjZUJ1ZmZlci5oCkBA
IC00Nyw2ICs0Nyw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEF1ZGlvVHJhY2tM
aXN0OworY2xhc3MgQnVmZmVyU291cmNlOwogY2xhc3MgTWVkaWFTb3VyY2U7CiBjbGFzcyBQbGF0
Zm9ybVRpbWVSYW5nZXM7CiBjbGFzcyBUZXh0VHJhY2tMaXN0OwpAQCAtNzQsOCArNzUsNyBAQCBw
dWJsaWM6CiAgICAgZG91YmxlIGFwcGVuZFdpbmRvd0VuZCgpIGNvbnN0OwogICAgIEV4Y2VwdGlv
bk9yPHZvaWQ+IHNldEFwcGVuZFdpbmRvd0VuZChkb3VibGUpOwogCi0gICAgRXhjZXB0aW9uT3I8
dm9pZD4gYXBwZW5kQnVmZmVyKEFycmF5QnVmZmVyJik7Ci0gICAgRXhjZXB0aW9uT3I8dm9pZD4g
YXBwZW5kQnVmZmVyKEFycmF5QnVmZmVyVmlldyYpOworICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IGFw
cGVuZEJ1ZmZlcihjb25zdCBCdWZmZXJTb3VyY2UmKTsKICAgICBFeGNlcHRpb25Pcjx2b2lkPiBh
Ym9ydCgpOwogICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IHJlbW92ZShkb3VibGUgc3RhcnQsIGRvdWJs
ZSBlbmQpOwogICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IHJlbW92ZShjb25zdCBNZWRpYVRpbWUmLCBj
b25zdCBNZWRpYVRpbWUmKTsKQEAgLTE1MCw3ICsxNTAsNyBAQCBwcml2YXRlOgogICAgIGJvb2wg
aXNSZW1vdmVkKCkgY29uc3Q7CiAgICAgdm9pZCBzY2hlZHVsZUV2ZW50KGNvbnN0IEF0b21pY1N0
cmluZyYgZXZlbnROYW1lKTsKIAotICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IGFwcGVuZEJ1ZmZlcklu
dGVybmFsKHVuc2lnbmVkIGNoYXIqLCB1bnNpZ25lZCk7CisgICAgRXhjZXB0aW9uT3I8dm9pZD4g
YXBwZW5kQnVmZmVySW50ZXJuYWwoY29uc3QgdW5zaWduZWQgY2hhciosIHVuc2lnbmVkKTsKICAg
ICB2b2lkIGFwcGVuZEJ1ZmZlclRpbWVyRmlyZWQoKTsKICAgICB2b2lkIHJlc2V0UGFyc2VyU3Rh
dGUoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9T
b3VyY2VCdWZmZXIuaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9Tb3Vy
Y2VCdWZmZXIuaWRsCmluZGV4IGNmZjFiYjVhY2U5ZTk5N2NlYzUxMzYwZmRhODc0ZTNlMGYwYjgw
MjQuLjljODQ3YzcyYTk0NGIxNWNjMzY5MGI0NTQ4YTU0NmE0ZTBlMjBkZmEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvU291cmNlQnVmZmVyLmlkbAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL1NvdXJjZUJ1ZmZlci5pZGwKQEAg
LTU3LDggKzU3LDcgQEAKICAgICBbU2V0dGVyTWF5VGhyb3dFeGNlcHRpb25dIGF0dHJpYnV0ZSB1
bnJlc3RyaWN0ZWQgZG91YmxlIGFwcGVuZFdpbmRvd0VuZDsKIAogICAgIC8vIEFwcGVuZCBzZWdt
ZW50IGRhdGEuCi0gICAgW01heVRocm93RXhjZXB0aW9uXSB2b2lkIGFwcGVuZEJ1ZmZlcihBcnJh
eUJ1ZmZlciBkYXRhKTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHZvaWQgYXBwZW5kQnVmZmVy
KEFycmF5QnVmZmVyVmlldyBkYXRhKTsKKyAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHZvaWQgYXBw
ZW5kQnVmZmVyKEJ1ZmZlclNvdXJjZSBkYXRhKTsKIAogICAgIC8vIEFib3J0IHRoZSBjdXJyZW50
IHNlZ21lbnQgYXBwZW5kIHNlcXVlbmNlLgogICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdm9pZCBh
Ym9ydCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvZ2VuZXJpYy9JRExU
eXBlcy5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvZ2VuZXJpYy9JRExUeXBlcy5oCmluZGV4
IGJlODgyNmVjODI0N2U5NmMyYTE4ODE1YjM3M2Y0ZTU3OWMzOTk4NmIuLjFmZTE2OWZlMTJkY2Iy
MWU2MjE3YmYyOGRkNzJhMWZhOTY4ZjBjMTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2dlbmVyaWMvSURMVHlwZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9n
ZW5lcmljL0lETFR5cGVzLmgKQEAgLTM1LDYgKzM1LDcgQEAgY2xhc3MgSlNWYWx1ZTsKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBCdWZmZXJTb3VyY2U7CiB0ZW1wbGF0ZSA8dHlwZW5h
bWUgVmFsdWU+IGNsYXNzIERPTVByb21pc2U7CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CkBAIC0x
MTgsNiArMTE5LDcgQEAgc3RydWN0IElETFVuaW9uIDogSURMVHlwZTxzdGQ6OmV4cGVyaW1lbnRh
bDo6dmFyaWFudDx0eXBlbmFtZSBUczo6SW1wbGVtZW50YXRpb24KICAgICB1c2luZyBUeXBlTGlz
dCA9IGJyaWdhbmQ6Omxpc3Q8VHMuLi4+OwogfTsKIAorc3RydWN0IElETEJ1ZmZlclNvdXJjZSA6
IElETFR5cGU8QnVmZmVyU291cmNlPiB7IH07CiAKIC8vIEhlbHBlciBwcmVkaWNhdGVzCiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0J1ZmZlclNvdXJjZS5oIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvQnVmZmVyU291cmNlLmgKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjEzNTVl
M2ZiZTIzMmNiNDIzZTFmNmFlYjI3ODQ1NjEzNTU0OTI0NwotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0J1ZmZlclNvdXJjZS5oCkBAIC0wLDAgKzEsMzYgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgSWdhbGlhIFMuTC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdt
YSBvbmNlCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgQnVmZmVyU291cmNlIHsKK3B1
YmxpYzoKKyAgICBjb25zdCB1aW50OF90KiBkYXRhOworICAgIHNpemVfdCBsZW5ndGg7Cit9Owor
Cit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0RPTUJpbmRpbmcuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9N
QmluZGluZy5oCmluZGV4IGZlM2NhNTY0ZWFmM2NkY2M3ODg0MWI5ODlkZWQ0MmM5YTZjMjFkYzMu
LjA4ZDU0ZDAyOGYxMjViY2ExNGQwYThlYjIwMWNiODRkNzkwNzdiNDEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5oCkBAIC0yMyw2ICsyMyw3IEBACiAKICNwcmFn
bWEgb25jZQogCisjaW5jbHVkZSAiQnVmZmVyU291cmNlLmgiCiAjaW5jbHVkZSAiRE9NV3JhcHBl
cldvcmxkLmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgogI2luY2x1ZGUgIkV4Y2VwdGlv
bk9yLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUNvbnZl
cnQuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQ29udmVydC5oCmluZGV4IDJh
NDcyODhlZjc3MGViMTNlYjQ2MmM4YWQ4MWZmMTkzZjAwMWRkN2YuLmJkOTBmMmJkNGFkYzgwYjcz
NDY0NGExNTQ2ZmQ4OTNlYWY4OGIzOGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTRE9NQ29udmVydC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
RE9NQ29udmVydC5oCkBAIC02MzgsNCArNjM4LDI1IEBAIHRlbXBsYXRlPHR5cGVuYW1lIElETFR5
cGU+IHR5cGVuYW1lIERldGFpbDo6VmFyaWFkaWNDb252ZXJ0ZXI8SURMVHlwZT46OlJlc3VsdCBj
CiAgICAgcmV0dXJuIHsgbGVuZ3RoLCBXVEZNb3ZlKHJlc3VsdCkgfTsKIH0KIAorLy8gTUFSSzog
LQorLy8gTUFSSzogQnVmZmVyU291cmNlIHR5cGUKKwordGVtcGxhdGU8PiBzdHJ1Y3QgQ29udmVy
dGVyPElETEJ1ZmZlclNvdXJjZT4gOiBEZWZhdWx0Q29udmVydGVyPElETEJ1ZmZlclNvdXJjZT4g
eworICAgIHVzaW5nIFJldHVyblR5cGUgPSBCdWZmZXJTb3VyY2U7CisKKyAgICBzdGF0aWMgUmV0
dXJuVHlwZSBjb252ZXJ0KEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwgSlNDOjpKU1ZhbHVlIHZhbHVl
KQorICAgIHsKKyAgICAgICAgSlNDOjpWTSYgdm0gPSBzdGF0ZS52bSgpOworICAgICAgICBhdXRv
IHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICAgICAgaWYgKEpTQzo6QXJy
YXlCdWZmZXIqIGJ1ZmZlciA9IEpTQzo6dG9BcnJheUJ1ZmZlcih2YWx1ZSkpCisgICAgICAgICAg
ICByZXR1cm4geyBzdGF0aWNfY2FzdDx1aW50OF90Kj4oYnVmZmVyLT5kYXRhKCkpLCBidWZmZXIt
PmJ5dGVMZW5ndGgoKSB9OworICAgICAgICBpZiAoUmVmUHRyPEpTQzo6QXJyYXlCdWZmZXJWaWV3
PiBidWZmZXJWaWV3ID0gdG9BcnJheUJ1ZmZlclZpZXcodmFsdWUpKQorICAgICAgICAgICAgcmV0
dXJuIHsgc3RhdGljX2Nhc3Q8dWludDhfdCo+KGJ1ZmZlclZpZXctPmJhc2VBZGRyZXNzKCkpLCBi
dWZmZXJWaWV3LT5ieXRlTGVuZ3RoKCkgfTsKKworICAgICAgICB0aHJvd1R5cGVFcnJvcigmc3Rh
dGUsIHNjb3BlKTsKKyAgICAgICAgcmV0dXJuIHsgbnVsbHB0ciwgMCB9OworICAgIH0KK307CisK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTV2ViS2l0U3VidGxlQ3J5cHRvQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTV2ViS2l0U3VidGxlQ3J5cHRvQ3VzdG9tLmNwcAppbmRleCA3ZDgwYTg2MWVk
N2M4ZTk0YTBkZjRhZGFlMTJiNzNlZmQxMDQ2NTE5Li5lMjhiNDc0NmI1MTQ3MTY1MTE1MWI5ZDYy
MWQzNWVhODc1NDBlZWQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U1dlYktpdFN1YnRsZUNyeXB0b0N1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNXZWJLaXRTdWJ0bGVDcnlwdG9DdXN0b20uY3BwCkBAIC0zOSw3ICszOSw3IEBACiAj
aW5jbHVkZSAiSlNDcnlwdG9LZXkuaCIKICNpbmNsdWRlICJKU0NyeXB0b0tleVBhaXIuaCIKICNp
bmNsdWRlICJKU0NyeXB0b0tleVNlcmlhbGl6YXRpb25KV0suaCIKLSNpbmNsdWRlICJKU0NyeXB0
b09wZXJhdGlvbkRhdGEuaCIKKyNpbmNsdWRlICJKU0RPTUNvbnZlcnQuaCIKICNpbmNsdWRlICJK
U0RPTVByb21pc2UuaCIKICNpbmNsdWRlIDxydW50aW1lL0Vycm9yLmg+CiAKQEAgLTE2NSwxMSAr
MTY1LDggQEAgSlNWYWx1ZSBKU1dlYktpdFN1YnRsZUNyeXB0bzo6ZW5jcnlwdChFeGVjU3RhdGUm
IHN0YXRlKQogICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKICAgICB9CiAKLSAgICBDcnlw
dG9PcGVyYXRpb25EYXRhIGRhdGE7Ci0gICAgYXV0byBzdWNjZXNzID0gY3J5cHRvT3BlcmF0aW9u
RGF0YUZyb21KU1ZhbHVlKCZzdGF0ZSwgc3RhdGUudW5jaGVja2VkQXJndW1lbnQoMiksIGRhdGEp
OwotICAgIEFTU0VSVChzY29wZS5leGNlcHRpb24oKSB8fCBzdWNjZXNzKTsKLSAgICBpZiAoIXN1
Y2Nlc3MpCi0gICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOworICAgIGF1dG8gZGF0YSA9IGNv
bnZlcnQ8SURMQnVmZmVyU291cmNlPihzdGF0ZSwgc3RhdGUudW5jaGVja2VkQXJndW1lbnQoMikp
OworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGpzVW5kZWZpbmVkKCkpOwogCiAgICAg
UmVmUHRyPERlZmVycmVkUHJvbWlzZT4gd3JhcHBlciA9IGNyZWF0ZURlZmVycmVkUHJvbWlzZShz
dGF0ZSwgZG9tV2luZG93KCkpOwogICAgIGF1dG8gcHJvbWlzZSA9IHdyYXBwZXItPnByb21pc2Uo
KTsKQEAgLTIxOCwxMSArMjE1LDggQEAgSlNWYWx1ZSBKU1dlYktpdFN1YnRsZUNyeXB0bzo6ZGVj
cnlwdChFeGVjU3RhdGUmIHN0YXRlKQogICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKICAg
ICB9CiAKLSAgICBDcnlwdG9PcGVyYXRpb25EYXRhIGRhdGE7Ci0gICAgYXV0byBzdWNjZXNzID0g
Y3J5cHRvT3BlcmF0aW9uRGF0YUZyb21KU1ZhbHVlKCZzdGF0ZSwgc3RhdGUudW5jaGVja2VkQXJn
dW1lbnQoMiksIGRhdGEpOwotICAgIEFTU0VSVChzY29wZS5leGNlcHRpb24oKSB8fCBzdWNjZXNz
KTsKLSAgICBpZiAoIXN1Y2Nlc3MpCi0gICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOworICAg
IGF1dG8gZGF0YSA9IGNvbnZlcnQ8SURMQnVmZmVyU291cmNlPihzdGF0ZSwgc3RhdGUudW5jaGVj
a2VkQXJndW1lbnQoMikpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGpzVW5kZWZp
bmVkKCkpOwogCiAgICAgUmVmUHRyPERlZmVycmVkUHJvbWlzZT4gd3JhcHBlciA9IGNyZWF0ZURl
ZmVycmVkUHJvbWlzZShzdGF0ZSwgZG9tV2luZG93KCkpOwogICAgIGF1dG8gcHJvbWlzZSA9IHdy
YXBwZXItPnByb21pc2UoKTsKQEAgLTI3MSwxMSArMjY1LDggQEAgSlNWYWx1ZSBKU1dlYktpdFN1
YnRsZUNyeXB0bzo6c2lnbihFeGVjU3RhdGUmIHN0YXRlKQogICAgICAgICByZXR1cm4ganNVbmRl
ZmluZWQoKTsKICAgICB9CiAKLSAgICBDcnlwdG9PcGVyYXRpb25EYXRhIGRhdGE7Ci0gICAgYXV0
byBzdWNjZXNzID0gY3J5cHRvT3BlcmF0aW9uRGF0YUZyb21KU1ZhbHVlKCZzdGF0ZSwgc3RhdGUu
dW5jaGVja2VkQXJndW1lbnQoMiksIGRhdGEpOwotICAgIEFTU0VSVChzY29wZS5leGNlcHRpb24o
KSB8fCBzdWNjZXNzKTsKLSAgICBpZiAoIXN1Y2Nlc3MpCi0gICAgICAgIHJldHVybiBqc1VuZGVm
aW5lZCgpOworICAgIGF1dG8gZGF0YSA9IGNvbnZlcnQ8SURMQnVmZmVyU291cmNlPihzdGF0ZSwg
c3RhdGUudW5jaGVja2VkQXJndW1lbnQoMikpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2Nv
cGUsIGpzVW5kZWZpbmVkKCkpOwogCiAgICAgUmVmUHRyPERlZmVycmVkUHJvbWlzZT4gd3JhcHBl
ciA9IGNyZWF0ZURlZmVycmVkUHJvbWlzZShzdGF0ZSwgZG9tV2luZG93KCkpOwogICAgIGF1dG8g
cHJvbWlzZSA9IHdyYXBwZXItPnByb21pc2UoKTsKQEAgLTMyNCwxNyArMzE1LDExIEBAIEpTVmFs
dWUgSlNXZWJLaXRTdWJ0bGVDcnlwdG86OnZlcmlmeShFeGVjU3RhdGUmIHN0YXRlKQogICAgICAg
ICByZXR1cm4ganNVbmRlZmluZWQoKTsKICAgICB9CiAKLSAgICBDcnlwdG9PcGVyYXRpb25EYXRh
IHNpZ25hdHVyZTsKLSAgICBhdXRvIHN1Y2Nlc3MgPSBjcnlwdG9PcGVyYXRpb25EYXRhRnJvbUpT
VmFsdWUoJnN0YXRlLCBzdGF0ZS51bmNoZWNrZWRBcmd1bWVudCgyKSwgc2lnbmF0dXJlKTsKLSAg
ICBBU1NFUlQoc2NvcGUuZXhjZXB0aW9uKCkgfHwgc3VjY2Vzcyk7Ci0gICAgaWYgKCFzdWNjZXNz
KQotICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKKyAgICBhdXRvIHNpZ25hdHVyZSA9IGNv
bnZlcnQ8SURMQnVmZmVyU291cmNlPihzdGF0ZSwgc3RhdGUudW5jaGVja2VkQXJndW1lbnQoMSkp
OworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGpzVW5kZWZpbmVkKCkpOwogCi0gICAg
Q3J5cHRvT3BlcmF0aW9uRGF0YSBkYXRhOwotICAgIHN1Y2Nlc3MgPSBjcnlwdG9PcGVyYXRpb25E
YXRhRnJvbUpTVmFsdWUoJnN0YXRlLCBzdGF0ZS51bmNoZWNrZWRBcmd1bWVudCgzKSwgZGF0YSk7
Ci0gICAgQVNTRVJUKHNjb3BlLmV4Y2VwdGlvbigpIHx8IHN1Y2Nlc3MpOwotICAgIGlmICghc3Vj
Y2VzcykKLSAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CisgICAgYXV0byBkYXRhID0gY29u
dmVydDxJRExCdWZmZXJTb3VyY2U+KHN0YXRlLCBzdGF0ZS51bmNoZWNrZWRBcmd1bWVudCgzKSk7
CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwganNVbmRlZmluZWQoKSk7CiAKICAgICBS
ZWZQdHI8RGVmZXJyZWRQcm9taXNlPiB3cmFwcGVyID0gY3JlYXRlRGVmZXJyZWRQcm9taXNlKHN0
YXRlLCBkb21XaW5kb3coKSk7CiAgICAgYXV0byBwcm9taXNlID0gd3JhcHBlci0+cHJvbWlzZSgp
OwpAQCAtMzczLDExICszNTgsOCBAQCBKU1ZhbHVlIEpTV2ViS2l0U3VidGxlQ3J5cHRvOjpkaWdl
c3QoRXhlY1N0YXRlJiBzdGF0ZSkKICAgICBpZiAoIXBhcmFtZXRlcnMpCiAgICAgICAgIHJldHVy
biBqc1VuZGVmaW5lZCgpOwogCi0gICAgQ3J5cHRvT3BlcmF0aW9uRGF0YSBkYXRhOwotICAgIGF1
dG8gc3VjY2VzcyA9IGNyeXB0b09wZXJhdGlvbkRhdGFGcm9tSlNWYWx1ZSgmc3RhdGUsIHN0YXRl
LnVuY2hlY2tlZEFyZ3VtZW50KDEpLCBkYXRhKTsKLSAgICBBU1NFUlQoc2NvcGUuZXhjZXB0aW9u
KCkgfHwgc3VjY2Vzcyk7Ci0gICAgaWYgKCFzdWNjZXNzKQotICAgICAgICByZXR1cm4ganNVbmRl
ZmluZWQoKTsKKyAgICBhdXRvIGRhdGEgPSBjb252ZXJ0PElETEJ1ZmZlclNvdXJjZT4oc3RhdGUs
IHN0YXRlLnVuY2hlY2tlZEFyZ3VtZW50KDEpKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNj
b3BlLCBqc1VuZGVmaW5lZCgpKTsKIAogICAgIFJlZlB0cjxEZWZlcnJlZFByb21pc2U+IHdyYXBw
ZXIgPSBjcmVhdGVEZWZlcnJlZFByb21pc2Uoc3RhdGUsIGRvbVdpbmRvdygpKTsKICAgICBhdXRv
IHByb21pc2UgPSB3cmFwcGVyLT5wcm9taXNlKCk7CkBAIC00NTQsNyArNDM2LDcgQEAgSlNWYWx1
ZSBKU1dlYktpdFN1YnRsZUNyeXB0bzo6Z2VuZXJhdGVLZXkoRXhlY1N0YXRlJiBzdGF0ZSkKICAg
ICByZXR1cm4gcHJvbWlzZTsKIH0KIAotc3RhdGljIHZvaWQgaW1wb3J0S2V5KEV4ZWNTdGF0ZSYg
c3RhdGUsIENyeXB0b0tleUZvcm1hdCBrZXlGb3JtYXQsIENyeXB0b09wZXJhdGlvbkRhdGEgZGF0
YSwgUmVmUHRyPENyeXB0b0FsZ29yaXRobT4gYWxnb3JpdGhtLCBSZWZQdHI8Q3J5cHRvQWxnb3Jp
dGhtUGFyYW1ldGVyc0RlcHJlY2F0ZWQ+IHBhcmFtZXRlcnMsIGJvb2wgZXh0cmFjdGFibGUsIENy
eXB0b0tleVVzYWdlIGtleVVzYWdlcywgQ3J5cHRvQWxnb3JpdGhtOjpLZXlDYWxsYmFjayBjYWxs
YmFjaywgQ3J5cHRvQWxnb3JpdGhtOjpWb2lkQ2FsbGJhY2sgZmFpbHVyZUNhbGxiYWNrKQorc3Rh
dGljIHZvaWQgaW1wb3J0S2V5KEV4ZWNTdGF0ZSYgc3RhdGUsIENyeXB0b0tleUZvcm1hdCBrZXlG
b3JtYXQsIGNvbnN0IEJ1ZmZlclNvdXJjZSYgZGF0YSwgUmVmUHRyPENyeXB0b0FsZ29yaXRobT4g
YWxnb3JpdGhtLCBSZWZQdHI8Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVyc0RlcHJlY2F0ZWQ+IHBh
cmFtZXRlcnMsIGJvb2wgZXh0cmFjdGFibGUsIENyeXB0b0tleVVzYWdlIGtleVVzYWdlcywgQ3J5
cHRvQWxnb3JpdGhtOjpLZXlDYWxsYmFjayBjYWxsYmFjaywgQ3J5cHRvQWxnb3JpdGhtOjpWb2lk
Q2FsbGJhY2sgZmFpbHVyZUNhbGxiYWNrKQogewogICAgIFZNJiB2bSA9IHN0YXRlLnZtKCk7CiAg
ICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwpAQCAtNDY1LDcgKzQ0Nyw3
IEBAIHN0YXRpYyB2b2lkIGltcG9ydEtleShFeGVjU3RhdGUmIHN0YXRlLCBDcnlwdG9LZXlGb3Jt
YXQga2V5Rm9ybWF0LCBDcnlwdG9PcGVyYXRpCiAgICAgICAgIGtleVNlcmlhbGl6YXRpb24gPSBD
cnlwdG9LZXlTZXJpYWxpemF0aW9uUmF3OjpjcmVhdGUoZGF0YSk7CiAgICAgICAgIGJyZWFrOwog
ICAgIGNhc2UgQ3J5cHRvS2V5Rm9ybWF0OjpKV0s6IHsKLSAgICAgICAgU3RyaW5nIGp3a1N0cmlu
ZyA9IFN0cmluZzo6ZnJvbVVURjgoZGF0YS5maXJzdCwgZGF0YS5zZWNvbmQpOworICAgICAgICBT
dHJpbmcgandrU3RyaW5nID0gU3RyaW5nOjpmcm9tVVRGOChkYXRhLmRhdGEsIGRhdGEubGVuZ3Ro
KTsKICAgICAgICAgaWYgKGp3a1N0cmluZy5pc051bGwoKSkgewogICAgICAgICAgICAgdGhyb3dU
eXBlRXJyb3IoJnN0YXRlLCBzY29wZSwgQVNDSUlMaXRlcmFsKCJKV0sgSlNPTiBzZXJpYWxpemF0
aW9uIGlzIG5vdCB2YWxpZCBVVEYtOCIpKTsKICAgICAgICAgICAgIHJldHVybjsKQEAgLTUyNiwx
MSArNTA4LDggQEAgSlNWYWx1ZSBKU1dlYktpdFN1YnRsZUNyeXB0bzo6aW1wb3J0S2V5KEV4ZWNT
dGF0ZSYgc3RhdGUpCiAgICAgaWYgKCFzdWNjZXNzKQogICAgICAgICByZXR1cm4ganNVbmRlZmlu
ZWQoKTsKIAotICAgIENyeXB0b09wZXJhdGlvbkRhdGEgZGF0YTsKLSAgICBzdWNjZXNzID0gY3J5
cHRvT3BlcmF0aW9uRGF0YUZyb21KU1ZhbHVlKCZzdGF0ZSwgc3RhdGUudW5jaGVja2VkQXJndW1l
bnQoMSksIGRhdGEpOwotICAgIEFTU0VSVChzY29wZS5leGNlcHRpb24oKSB8fCBzdWNjZXNzKTsK
LSAgICBpZiAoIXN1Y2Nlc3MpCi0gICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOworICAgIGF1
dG8gZGF0YSA9IGNvbnZlcnQ8SURMQnVmZmVyU291cmNlPihzdGF0ZSwgc3RhdGUudW5jaGVja2Vk
QXJndW1lbnQoMSkpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGpzVW5kZWZpbmVk
KCkpOwogCiAgICAgUmVmUHRyPENyeXB0b0FsZ29yaXRobT4gYWxnb3JpdGhtOwogICAgIFJlZlB0
cjxDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzRGVwcmVjYXRlZD4gcGFyYW1ldGVyczsKQEAgLTY5
MSw3ICs2NzAsNyBAQCBKU1ZhbHVlIEpTV2ViS2l0U3VidGxlQ3J5cHRvOjp3cmFwS2V5KEV4ZWNT
dGF0ZSYgc3RhdGUpCiAgICAgICAgICAgICB3cmFwcGVyLT5yZWplY3QobnVsbHB0cik7CiAgICAg
ICAgIH07CiAgICAgICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgICAgICBhbGdvcml0aG0t
PmVuY3J5cHRGb3JXcmFwS2V5KCpwYXJhbWV0ZXJzLCAqd3JhcHBpbmdLZXksIHN0ZDo6bWFrZV9w
YWlyKGV4cG9ydGVkS2V5RGF0YS5kYXRhKCksIGV4cG9ydGVkS2V5RGF0YS5zaXplKCkpLCBXVEZN
b3ZlKGVuY3J5cHRTdWNjZXNzQ2FsbGJhY2spLCBXVEZNb3ZlKGVuY3J5cHRGYWlsdXJlQ2FsbGJh
Y2spLCBlYyk7CisgICAgICAgIGFsZ29yaXRobS0+ZW5jcnlwdEZvcldyYXBLZXkoKnBhcmFtZXRl
cnMsICp3cmFwcGluZ0tleSwgQnVmZmVyU291cmNleyBleHBvcnRlZEtleURhdGEuZGF0YSgpLCBl
eHBvcnRlZEtleURhdGEuc2l6ZSgpIH0sIFdURk1vdmUoZW5jcnlwdFN1Y2Nlc3NDYWxsYmFjayks
IFdURk1vdmUoZW5jcnlwdEZhaWx1cmVDYWxsYmFjayksIGVjKTsKICAgICAgICAgaWYgKGVjKSB7
CiAgICAgICAgICAgICAvLyBGSVhNRTogUmVwb3J0IGZhaWx1cmUgZGV0YWlscyB0byBjb25zb2xl
LCBhbmQgcG9zc2libHkgdG8gY2FsbGluZyBzY3JpcHQgb25jZSB0aGVyZSBpcyBhIHN0YW5kYXJk
aXplZCB3YXkgdG8gcGFzcyBlcnJvcnMgdG8gV2ViQ3J5cHRvIHByb21pc2UgcmVqZWN0IGZ1bmN0
aW9ucy4KICAgICAgICAgICAgIHdyYXBwZXItPnJlamVjdChudWxscHRyKTsKQEAgLTcyNiwxMSAr
NzA1LDggQEAgSlNWYWx1ZSBKU1dlYktpdFN1YnRsZUNyeXB0bzo6dW53cmFwS2V5KEV4ZWNTdGF0
ZSYgc3RhdGUpCiAgICAgaWYgKCFzdWNjZXNzKQogICAgICAgICByZXR1cm4ganNVbmRlZmluZWQo
KTsKIAotICAgIENyeXB0b09wZXJhdGlvbkRhdGEgd3JhcHBlZEtleURhdGE7Ci0gICAgc3VjY2Vz
cyA9IGNyeXB0b09wZXJhdGlvbkRhdGFGcm9tSlNWYWx1ZSgmc3RhdGUsIHN0YXRlLnVuY2hlY2tl
ZEFyZ3VtZW50KDEpLCB3cmFwcGVkS2V5RGF0YSk7Ci0gICAgQVNTRVJUKHNjb3BlLmV4Y2VwdGlv
bigpIHx8IHN1Y2Nlc3MpOwotICAgIGlmICghc3VjY2VzcykKLSAgICAgICAgcmV0dXJuIGpzVW5k
ZWZpbmVkKCk7CisgICAgYXV0byB3cmFwcGVkS2V5RGF0YSA9IGNvbnZlcnQ8SURMQnVmZmVyU291
cmNlPihzdGF0ZSwgc3RhdGUudW5jaGVja2VkQXJndW1lbnQoMSkpOworICAgIFJFVFVSTl9JRl9F
WENFUFRJT04oc2NvcGUsIGpzVW5kZWZpbmVkKCkpOwogCiAgICAgUmVmUHRyPENyeXB0b0tleT4g
dW53cmFwcGluZ0tleSA9IEpTQ3J5cHRvS2V5Ojp0b1dyYXBwZWQoc3RhdGUudW5jaGVja2VkQXJn
dW1lbnQoMikpOwogICAgIGlmICghdW53cmFwcGluZ0tleSkKQEAgLTc5NSw3ICs3NzEsNyBAQCBK
U1ZhbHVlIEpTV2ViS2l0U3VidGxlQ3J5cHRvOjp1bndyYXBLZXkoRXhlY1N0YXRlJiBzdGF0ZSkK
ICAgICAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfQ0FUQ0hfU0NPUEUodm0pOwogCiAgICAgICAg
IEV4ZWNTdGF0ZSYgc3RhdGUgPSAqZG9tR2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCk7Ci0gICAg
ICAgIFdlYkNvcmU6OmltcG9ydEtleShzdGF0ZSwga2V5Rm9ybWF0LCBzdGQ6Om1ha2VfcGFpcihy
ZXN1bHQuZGF0YSgpLCByZXN1bHQuc2l6ZSgpKSwgdW53cmFwcGVkS2V5QWxnb3JpdGhtLCB1bndy
YXBwZWRLZXlBbGdvcml0aG1QYXJhbWV0ZXJzLCBleHRyYWN0YWJsZSwga2V5VXNhZ2VzLCBXVEZN
b3ZlKGltcG9ydFN1Y2Nlc3NDYWxsYmFjayksIFdURk1vdmUoaW1wb3J0RmFpbHVyZUNhbGxiYWNr
KSk7CisgICAgICAgIFdlYkNvcmU6OmltcG9ydEtleShzdGF0ZSwga2V5Rm9ybWF0LCBCdWZmZXJT
b3VyY2V7IHJlc3VsdC5kYXRhKCksIHJlc3VsdC5zaXplKCkgfSwgdW53cmFwcGVkS2V5QWxnb3Jp
dGhtLCB1bndyYXBwZWRLZXlBbGdvcml0aG1QYXJhbWV0ZXJzLCBleHRyYWN0YWJsZSwga2V5VXNh
Z2VzLCBXVEZNb3ZlKGltcG9ydFN1Y2Nlc3NDYWxsYmFjayksIFdURk1vdmUoaW1wb3J0RmFpbHVy
ZUNhbGxiYWNrKSk7CiAgICAgICAgIGlmIChVTkxJS0VMWShzY29wZS5leGNlcHRpb24oKSkpIHsK
ICAgICAgICAgICAgIC8vIEZJWE1FOiBSZXBvcnQgZXhjZXB0aW9uIGRldGFpbHMgdG8gY29uc29s
ZSwgYW5kIHBvc3NpYmx5IHRvIGNhbGxpbmcgc2NyaXB0IG9uY2UgdGhlcmUgaXMgYSBzdGFuZGFy
ZGl6ZWQgd2F5IHRvIHBhc3MgZXJyb3JzIHRvIFdlYkNyeXB0byBwcm9taXNlIHJlamVjdCBmdW5j
dGlvbnMuCiAgICAgICAgICAgICBzY29wZS5jbGVhckV4Y2VwdGlvbigpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yLnBtIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yLnBtCmluZGV4IGQ1N2ZkMDUw
NjdkMjQzNjljNzRkMTRiNDI1ODdiYjc1ZWUxNjc5N2YuLjk3OWIyYjdjNDMxZDEyM2Q1OTdjMTU4
ZDkyN2IyZjM5NmFmMjU0OGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvQ29kZUdlbmVyYXRvci5wbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL0NvZGVHZW5lcmF0b3IucG0KQEAgLTM3MCw2ICszNzAsNyBAQCBzdWIgU2tpcEluY2x1ZGVI
ZWFkZXIKIAogICAgIHJldHVybiAxIGlmICRvYmplY3QtPklzUHJpbWl0aXZlVHlwZSgkdHlwZSk7
CiAgICAgcmV0dXJuIDEgaWYgJG9iamVjdC0+SXNUeXBlZEFycmF5VHlwZSgkdHlwZSk7CisgICAg
cmV0dXJuIDEgaWYgJG9iamVjdC0+SXNCdWZmZXJTb3VyY2VUeXBlKCR0eXBlKTsKICAgICByZXR1
cm4gMSBpZiAkdHlwZSBlcSAiQXJyYXkiOwogICAgIHJldHVybiAxIGlmICR0eXBlIGVxICJET01T
dHJpbmciIG9yICR0eXBlIGVxICJVU1ZTdHJpbmciOwogICAgIHJldHVybiAxIGlmICR0eXBlIGVx
ICJET01UaW1lU3RhbXAiOwpAQCAtNTcxLDYgKzU3MiwxNSBAQCBzdWIgSXNUeXBlZEFycmF5VHlw
ZQogICAgIHJldHVybiAwOwogfQogCitzdWIgSXNCdWZmZXJTb3VyY2VUeXBlCit7CisgICAgbXkg
JG9iamVjdCA9IHNoaWZ0OworICAgIG15ICR0eXBlID0gc2hpZnQ7CisKKyAgICByZXR1cm4gMSBp
ZiAkdHlwZSBlcSAiQnVmZmVyU291cmNlIjsKKyAgICByZXR1cm4gMDsKK30KKwogc3ViIElzUmVm
UHRyVHlwZQogewogICAgIG15ICRvYmplY3QgPSBzaGlmdDsKQEAgLTg2NSw3ICs4NzUsNyBAQCBz
dWIgSXNXcmFwcGVyVHlwZQogICAgIG15ICR0eXBlID0gc2hpZnQ7CiAKICAgICByZXR1cm4gMCBp
ZiAhJG9iamVjdC0+SXNSZWZQdHJUeXBlKCR0eXBlKTsKLSAgICByZXR1cm4gMCBpZiAkb2JqZWN0
LT5Jc1R5cGVkQXJyYXlUeXBlKCR0eXBlKTsKKyAgICByZXR1cm4gMCBpZiAkb2JqZWN0LT5Jc1R5
cGVkQXJyYXlUeXBlKCR0eXBlKSB8fCAkb2JqZWN0LT5Jc0J1ZmZlclNvdXJjZVR5cGUoJHR5cGUp
OwogICAgIHJldHVybiAwIGlmICR0eXBlIGVxICJVTklPTiI7CiAgICAgcmV0dXJuIDAgaWYgJHdl
YkNvcmVUeXBlSGFzaHskdHlwZX07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KaW5kZXggMGE0MzI2N2Y1OTc0N2NkOWRkZjQ0Mzkz
ZWU4ZWJiOGI3ZGZmMjMyZC4uMWJiZjUyODBkMjk3ZjM4ZjVhMWQwMjQ1NDI0MzU2NjUwYmZlN2M2
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJh
dG9ySlMucG0KKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJh
dG9ySlMucG0KQEAgLTMxOSw3ICszMTksNyBAQCBzdWIgQWRkQ2xhc3NGb3J3YXJkSWZOZWVkZWQK
IAogICAgICMgU1ZHQW5pbWF0ZWRMZW5ndGgvTnVtYmVyL2V0Yy4gYXJlIG5vdCBjbGFzc2VzIHNv
IHRoZXkgY2FuJ3QgYmUgZm9yd2FyZCBkZWNsYXJlZCBhcyBjbGFzc2VzLgogICAgIHJldHVybiBp
ZiAkY29kZUdlbmVyYXRvci0+SXNTVkdBbmltYXRlZFR5cGUoJGludGVyZmFjZU5hbWUpOwotICAg
IHJldHVybiBpZiAkY29kZUdlbmVyYXRvci0+SXNUeXBlZEFycmF5VHlwZSgkaW50ZXJmYWNlTmFt
ZSk7CisgICAgcmV0dXJuIGlmICRjb2RlR2VuZXJhdG9yLT5Jc1R5cGVkQXJyYXlUeXBlKCRpbnRl
cmZhY2VOYW1lKSB8fCAkY29kZUdlbmVyYXRvci0+SXNCdWZmZXJTb3VyY2VUeXBlKCRpbnRlcmZh
Y2VOYW1lKTsKIAogICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICJjbGFzcyAkaW50ZXJmYWNlTmFt
ZTtcblxuIik7CiB9CkBAIC00OTg4LDYgKzQ5ODgsNyBAQCBzdWIgR2V0QmFzZUlETFR5cGUKICAg
ICApOwogCiAgICAgcmV0dXJuICRJRExUeXBlc3skaWRsVHlwZS0+bmFtZX0gaWYgZXhpc3RzICRJ
RExUeXBlc3skaWRsVHlwZS0+bmFtZX07CisgICAgcmV0dXJuICJJRExCdWZmZXJTb3VyY2UiIGlm
ICRjb2RlR2VuZXJhdG9yLT5Jc0J1ZmZlclNvdXJjZVR5cGUoJGlkbFR5cGUtPm5hbWUpOwogICAg
IHJldHVybiAiSURMRW51bWVyYXRpb248IiAuIEdldEVudW1lcmF0aW9uQ2xhc3NOYW1lKCRpZGxU
eXBlLT5uYW1lLCAkaW50ZXJmYWNlKSAuICI+IiBpZiAkY29kZUdlbmVyYXRvci0+SXNFbnVtVHlw
ZSgkaWRsVHlwZS0+bmFtZSk7CiAgICAgcmV0dXJuICJJRExEaWN0aW9uYXJ5PCIgLiBHZXREaWN0
aW9uYXJ5Q2xhc3NOYW1lKCRpZGxUeXBlLT5uYW1lLCAkaW50ZXJmYWNlKSAuICI+IiBpZiAkY29k
ZUdlbmVyYXRvci0+SXNEaWN0aW9uYXJ5VHlwZSgkaWRsVHlwZS0+bmFtZSk7CiAgICAgcmV0dXJu
ICJJRExTZXF1ZW5jZTwiIC4gR2V0SURMVHlwZSgkaW50ZXJmYWNlLCBAeyRpZGxUeXBlLT5zdWJ0
eXBlc31bMF0pIC4gIj4iIGlmICRjb2RlR2VuZXJhdG9yLT5Jc1NlcXVlbmNlVHlwZSgkaWRsVHlw
ZS0+bmFtZSk7CkBAIC01MTIwLDYgKzUxMjEsNyBAQCBzdWIgSXNIYW5kbGVkQnlET01Db252ZXJ0
CiAgICAgcmV0dXJuIDEgaWYgJGNvZGVHZW5lcmF0b3ItPklzRmxvYXRpbmdQb2ludFR5cGUoJGlk
bFR5cGUtPm5hbWUpOwogICAgIHJldHVybiAxIGlmICRjb2RlR2VuZXJhdG9yLT5Jc1NlcXVlbmNl
T3JGcm96ZW5BcnJheVR5cGUoJGlkbFR5cGUtPm5hbWUpOwogICAgIHJldHVybiAxIGlmICRjb2Rl
R2VuZXJhdG9yLT5Jc0RpY3Rpb25hcnlUeXBlKCRpZGxUeXBlLT5uYW1lKTsKKyAgICByZXR1cm4g
MSBpZiAkY29kZUdlbmVyYXRvci0+SXNCdWZmZXJTb3VyY2VUeXBlKCRpZGxUeXBlLT5uYW1lKTsK
ICAgICByZXR1cm4gMDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL0Ny
eXB0b0FsZ29yaXRobS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vQ3J5cHRvQWxnb3JpdGht
LmNwcAppbmRleCAxNDRlN2ZmMDdkNzdmZTgzODQwYzExMmYzYjNhNjY3YzI0NDMyOTRjLi5lOGU3
OWFmNDFiMDczYzljYjRjZThmNjVkMGVmYzYzNWFmMDVkMzQ3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9jcnlwdG8vQ3J5cHRvQWxnb3JpdGhtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9j
cnlwdG8vQ3J5cHRvQWxnb3JpdGhtLmNwcApAQCAtNDAsMjcgKzQwLDI3IEBAIENyeXB0b0FsZ29y
aXRobTo6fkNyeXB0b0FsZ29yaXRobSgpCiB7CiB9CiAKLXZvaWQgQ3J5cHRvQWxnb3JpdGhtOjpl
bmNyeXB0KGNvbnN0IENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnNEZXByZWNhdGVkJiwgY29uc3Qg
Q3J5cHRvS2V5JiwgY29uc3QgQ3J5cHRvT3BlcmF0aW9uRGF0YSYsIFZlY3RvckNhbGxiYWNrJiYs
IFZvaWRDYWxsYmFjayYmLCBFeGNlcHRpb25Db2RlJiBlYykKK3ZvaWQgQ3J5cHRvQWxnb3JpdGht
OjplbmNyeXB0KGNvbnN0IENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnNEZXByZWNhdGVkJiwgY29u
c3QgQ3J5cHRvS2V5JiwgY29uc3QgQnVmZmVyU291cmNlJiwgVmVjdG9yQ2FsbGJhY2smJiwgVm9p
ZENhbGxiYWNrJiYsIEV4Y2VwdGlvbkNvZGUmIGVjKQogewogICAgIGVjID0gTk9UX1NVUFBPUlRF
RF9FUlI7CiB9CiAKLXZvaWQgQ3J5cHRvQWxnb3JpdGhtOjpkZWNyeXB0KGNvbnN0IENyeXB0b0Fs
Z29yaXRobVBhcmFtZXRlcnNEZXByZWNhdGVkJiwgY29uc3QgQ3J5cHRvS2V5JiwgY29uc3QgQ3J5
cHRvT3BlcmF0aW9uRGF0YSYsIFZlY3RvckNhbGxiYWNrJiYsIFZvaWRDYWxsYmFjayYmLCBFeGNl
cHRpb25Db2RlJiBlYykKK3ZvaWQgQ3J5cHRvQWxnb3JpdGhtOjpkZWNyeXB0KGNvbnN0IENyeXB0
b0FsZ29yaXRobVBhcmFtZXRlcnNEZXByZWNhdGVkJiwgY29uc3QgQ3J5cHRvS2V5JiwgY29uc3Qg
QnVmZmVyU291cmNlJiwgVmVjdG9yQ2FsbGJhY2smJiwgVm9pZENhbGxiYWNrJiYsIEV4Y2VwdGlv
bkNvZGUmIGVjKQogewogICAgIGVjID0gTk9UX1NVUFBPUlRFRF9FUlI7CiB9CiAKLXZvaWQgQ3J5
cHRvQWxnb3JpdGhtOjpzaWduKGNvbnN0IENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnNEZXByZWNh
dGVkJiwgY29uc3QgQ3J5cHRvS2V5JiwgY29uc3QgQ3J5cHRvT3BlcmF0aW9uRGF0YSYsIFZlY3Rv
ckNhbGxiYWNrJiYsIFZvaWRDYWxsYmFjayYmLCBFeGNlcHRpb25Db2RlJiBlYykKK3ZvaWQgQ3J5
cHRvQWxnb3JpdGhtOjpzaWduKGNvbnN0IENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnNEZXByZWNh
dGVkJiwgY29uc3QgQ3J5cHRvS2V5JiwgY29uc3QgQnVmZmVyU291cmNlJiwgVmVjdG9yQ2FsbGJh
Y2smJiwgVm9pZENhbGxiYWNrJiYsIEV4Y2VwdGlvbkNvZGUmIGVjKQogewogICAgIGVjID0gTk9U
X1NVUFBPUlRFRF9FUlI7CiB9CiAKLXZvaWQgQ3J5cHRvQWxnb3JpdGhtOjp2ZXJpZnkoY29uc3Qg
Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVyc0RlcHJlY2F0ZWQmLCBjb25zdCBDcnlwdG9LZXkmLCBj
b25zdCBDcnlwdG9PcGVyYXRpb25EYXRhJiwgY29uc3QgQ3J5cHRvT3BlcmF0aW9uRGF0YSYsIEJv
b2xDYWxsYmFjayYmLCBWb2lkQ2FsbGJhY2smJiwgRXhjZXB0aW9uQ29kZSYgZWMpCit2b2lkIENy
eXB0b0FsZ29yaXRobTo6dmVyaWZ5KGNvbnN0IENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnNEZXBy
ZWNhdGVkJiwgY29uc3QgQ3J5cHRvS2V5JiwgY29uc3QgQnVmZmVyU291cmNlJiwgY29uc3QgQnVm
ZmVyU291cmNlJiwgQm9vbENhbGxiYWNrJiYsIFZvaWRDYWxsYmFjayYmLCBFeGNlcHRpb25Db2Rl
JiBlYykKIHsKICAgICBlYyA9IE5PVF9TVVBQT1JURURfRVJSOwogfQogCi12b2lkIENyeXB0b0Fs
Z29yaXRobTo6ZGlnZXN0KGNvbnN0IENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnNEZXByZWNhdGVk
JiwgY29uc3QgQ3J5cHRvT3BlcmF0aW9uRGF0YSYsIFZlY3RvckNhbGxiYWNrJiYsIFZvaWRDYWxs
YmFjayYmLCBFeGNlcHRpb25Db2RlJiBlYykKK3ZvaWQgQ3J5cHRvQWxnb3JpdGhtOjpkaWdlc3Qo
Y29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVyc0RlcHJlY2F0ZWQmLCBjb25zdCBCdWZmZXJT
b3VyY2UmLCBWZWN0b3JDYWxsYmFjayYmLCBWb2lkQ2FsbGJhY2smJiwgRXhjZXB0aW9uQ29kZSYg
ZWMpCiB7CiAgICAgZWMgPSBOT1RfU1VQUE9SVEVEX0VSUjsKIH0KQEAgLTg1LDEyICs4NSwxMiBA
QCB2b2lkIENyeXB0b0FsZ29yaXRobTo6aW1wb3J0S2V5KGNvbnN0IENyeXB0b0FsZ29yaXRobVBh
cmFtZXRlcnNEZXByZWNhdGVkJiwgY29ucwogICAgIGVjID0gTk9UX1NVUFBPUlRFRF9FUlI7CiB9
CiAKLXZvaWQgQ3J5cHRvQWxnb3JpdGhtOjplbmNyeXB0Rm9yV3JhcEtleShjb25zdCBDcnlwdG9B
bGdvcml0aG1QYXJhbWV0ZXJzRGVwcmVjYXRlZCYgcGFyYW1ldGVycywgY29uc3QgQ3J5cHRvS2V5
JiBrZXksIGNvbnN0IENyeXB0b09wZXJhdGlvbkRhdGEmIGRhdGEsIFZlY3RvckNhbGxiYWNrJiYg
Y2FsbGJhY2ssIFZvaWRDYWxsYmFjayYmIGZhaWx1cmVDYWxsYmFjaywgRXhjZXB0aW9uQ29kZSYg
ZWMpCit2b2lkIENyeXB0b0FsZ29yaXRobTo6ZW5jcnlwdEZvcldyYXBLZXkoY29uc3QgQ3J5cHRv
QWxnb3JpdGhtUGFyYW1ldGVyc0RlcHJlY2F0ZWQmIHBhcmFtZXRlcnMsIGNvbnN0IENyeXB0b0tl
eSYga2V5LCBjb25zdCBCdWZmZXJTb3VyY2UmIGRhdGEsIFZlY3RvckNhbGxiYWNrJiYgY2FsbGJh
Y2ssIFZvaWRDYWxsYmFjayYmIGZhaWx1cmVDYWxsYmFjaywgRXhjZXB0aW9uQ29kZSYgZWMpCiB7
CiAgICAgZW5jcnlwdChwYXJhbWV0ZXJzLCBrZXksIGRhdGEsIFdURk1vdmUoY2FsbGJhY2spLCBX
VEZNb3ZlKGZhaWx1cmVDYWxsYmFjayksIGVjKTsKIH0KIAotdm9pZCBDcnlwdG9BbGdvcml0aG06
OmRlY3J5cHRGb3JVbndyYXBLZXkoY29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVyc0RlcHJl
Y2F0ZWQmIHBhcmFtZXRlcnMsIGNvbnN0IENyeXB0b0tleSYga2V5LCBjb25zdCBDcnlwdG9PcGVy
YXRpb25EYXRhJiBkYXRhLCBWZWN0b3JDYWxsYmFjayYmIGNhbGxiYWNrLCBWb2lkQ2FsbGJhY2sm
JiBmYWlsdXJlQ2FsbGJhY2ssIEV4Y2VwdGlvbkNvZGUmIGVjKQordm9pZCBDcnlwdG9BbGdvcml0
aG06OmRlY3J5cHRGb3JVbndyYXBLZXkoY29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVyc0Rl
cHJlY2F0ZWQmIHBhcmFtZXRlcnMsIGNvbnN0IENyeXB0b0tleSYga2V5LCBjb25zdCBCdWZmZXJT
b3VyY2UmIGRhdGEsIFZlY3RvckNhbGxiYWNrJiYgY2FsbGJhY2ssIFZvaWRDYWxsYmFjayYmIGZh
aWx1cmVDYWxsYmFjaywgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgZGVjcnlwdChwYXJhbWV0
ZXJzLCBrZXksIGRhdGEsIFdURk1vdmUoY2FsbGJhY2spLCBXVEZNb3ZlKGZhaWx1cmVDYWxsYmFj
ayksIGVjKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9DcnlwdG9BbGdv
cml0aG0uaCBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9DcnlwdG9BbGdvcml0aG0uaAppbmRleCA2
OGNjMjM1MDA1OGNlNGRmNzNjNDRlMWU1YmU5MThhZDA0YzdmODVmLi5hYjViYjRhNjg2NThhZDgy
NDZjMTZmYjQyMjExOWY5MDE5YzI3YWNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jcnlw
dG8vQ3J5cHRvQWxnb3JpdGhtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL0NyeXB0b0Fs
Z29yaXRobS5oCkBAIC0yNiw2ICsyNiw3IEBACiAjaWZuZGVmIENyeXB0b0FsZ29yaXRobV9oCiAj
ZGVmaW5lIENyeXB0b0FsZ29yaXRobV9oCiAKKyNpbmNsdWRlICJCdWZmZXJTb3VyY2UuaCIKICNp
bmNsdWRlICJDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiQ3J5cHRvS2V5
VXNhZ2UuaCIKICNpbmNsdWRlIDxmdW5jdGlvbmFsPgpAQCAtNDQsOSArNDUsNiBAQCBjbGFzcyBD
cnlwdG9LZXk7CiBjbGFzcyBDcnlwdG9LZXlQYWlyOwogY2xhc3MgQ3J5cHRvS2V5RGF0YTsKIAot
Ly8gRGF0YSBpcyBtdXRhYmxlLCBzbyBhc3luYyBvcGVyYXRpb25zIHNob3VsZCBjb3B5IGl0IGZp
cnN0LgotdHlwZWRlZiBzdGQ6OnBhaXI8Y29uc3QgdWludDhfdCosIHNpemVfdD4gQ3J5cHRvT3Bl
cmF0aW9uRGF0YTsKLQogY2xhc3MgQ3J5cHRvQWxnb3JpdGhtIDogcHVibGljIFJlZkNvdW50ZWQ8
Q3J5cHRvQWxnb3JpdGhtPiB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQ3J5cHRvQWxnb3Jp
dGhtKQogcHVibGljOgpAQCAtNjAsMTkgKzU4LDE5IEBAIHB1YmxpYzoKICAgICB0eXBlZGVmIHN0
ZDo6ZnVuY3Rpb248dm9pZChjb25zdCBWZWN0b3I8dWludDhfdD4mKT4gVmVjdG9yQ2FsbGJhY2s7
CiAgICAgdHlwZWRlZiBzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4gVm9pZENhbGxiYWNrOwogCi0gICAg
dmlydHVhbCB2b2lkIGVuY3J5cHQoY29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVyc0RlcHJl
Y2F0ZWQmLCBjb25zdCBDcnlwdG9LZXkmLCBjb25zdCBDcnlwdG9PcGVyYXRpb25EYXRhJiwgVmVj
dG9yQ2FsbGJhY2smJiwgVm9pZENhbGxiYWNrJiYgZmFpbHVyZUNhbGxiYWNrLCBFeGNlcHRpb25D
b2RlJik7Ci0gICAgdmlydHVhbCB2b2lkIGRlY3J5cHQoY29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFy
YW1ldGVyc0RlcHJlY2F0ZWQmLCBjb25zdCBDcnlwdG9LZXkmLCBjb25zdCBDcnlwdG9PcGVyYXRp
b25EYXRhJiwgVmVjdG9yQ2FsbGJhY2smJiwgVm9pZENhbGxiYWNrJiYgZmFpbHVyZUNhbGxiYWNr
LCBFeGNlcHRpb25Db2RlJik7Ci0gICAgdmlydHVhbCB2b2lkIHNpZ24oY29uc3QgQ3J5cHRvQWxn
b3JpdGhtUGFyYW1ldGVyc0RlcHJlY2F0ZWQmLCBjb25zdCBDcnlwdG9LZXkmLCBjb25zdCBDcnlw
dG9PcGVyYXRpb25EYXRhJiwgVmVjdG9yQ2FsbGJhY2smJiwgVm9pZENhbGxiYWNrJiYgZmFpbHVy
ZUNhbGxiYWNrLCBFeGNlcHRpb25Db2RlJik7Ci0gICAgdmlydHVhbCB2b2lkIHZlcmlmeShjb25z
dCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzRGVwcmVjYXRlZCYsIGNvbnN0IENyeXB0b0tleSYs
IGNvbnN0IENyeXB0b09wZXJhdGlvbkRhdGEmIHNpZ25hdHVyZSwgY29uc3QgQ3J5cHRvT3BlcmF0
aW9uRGF0YSYsIEJvb2xDYWxsYmFjayYmLCBWb2lkQ2FsbGJhY2smJiBmYWlsdXJlQ2FsbGJhY2ss
IEV4Y2VwdGlvbkNvZGUmKTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlnZXN0KGNvbnN0IENyeXB0b0Fs
Z29yaXRobVBhcmFtZXRlcnNEZXByZWNhdGVkJiwgY29uc3QgQ3J5cHRvT3BlcmF0aW9uRGF0YSYs
IFZlY3RvckNhbGxiYWNrJiYsIFZvaWRDYWxsYmFjayYmIGZhaWx1cmVDYWxsYmFjaywgRXhjZXB0
aW9uQ29kZSYpOworICAgIHZpcnR1YWwgdm9pZCBlbmNyeXB0KGNvbnN0IENyeXB0b0FsZ29yaXRo
bVBhcmFtZXRlcnNEZXByZWNhdGVkJiwgY29uc3QgQ3J5cHRvS2V5JiwgY29uc3QgQnVmZmVyU291
cmNlJiwgVmVjdG9yQ2FsbGJhY2smJiwgVm9pZENhbGxiYWNrJiYgZmFpbHVyZUNhbGxiYWNrLCBF
eGNlcHRpb25Db2RlJik7CisgICAgdmlydHVhbCB2b2lkIGRlY3J5cHQoY29uc3QgQ3J5cHRvQWxn
b3JpdGhtUGFyYW1ldGVyc0RlcHJlY2F0ZWQmLCBjb25zdCBDcnlwdG9LZXkmLCBjb25zdCBCdWZm
ZXJTb3VyY2UmLCBWZWN0b3JDYWxsYmFjayYmLCBWb2lkQ2FsbGJhY2smJiBmYWlsdXJlQ2FsbGJh
Y2ssIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICB2aXJ0dWFsIHZvaWQgc2lnbihjb25zdCBDcnlwdG9B
bGdvcml0aG1QYXJhbWV0ZXJzRGVwcmVjYXRlZCYsIGNvbnN0IENyeXB0b0tleSYsIGNvbnN0IEJ1
ZmZlclNvdXJjZSYsIFZlY3RvckNhbGxiYWNrJiYsIFZvaWRDYWxsYmFjayYmIGZhaWx1cmVDYWxs
YmFjaywgRXhjZXB0aW9uQ29kZSYpOworICAgIHZpcnR1YWwgdm9pZCB2ZXJpZnkoY29uc3QgQ3J5
cHRvQWxnb3JpdGhtUGFyYW1ldGVyc0RlcHJlY2F0ZWQmLCBjb25zdCBDcnlwdG9LZXkmLCBjb25z
dCBCdWZmZXJTb3VyY2UmIHNpZ25hdHVyZSwgY29uc3QgQnVmZmVyU291cmNlJiwgQm9vbENhbGxi
YWNrJiYsIFZvaWRDYWxsYmFjayYmIGZhaWx1cmVDYWxsYmFjaywgRXhjZXB0aW9uQ29kZSYpOwor
ICAgIHZpcnR1YWwgdm9pZCBkaWdlc3QoY29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVyc0Rl
cHJlY2F0ZWQmLCBjb25zdCBCdWZmZXJTb3VyY2UmLCBWZWN0b3JDYWxsYmFjayYmLCBWb2lkQ2Fs
bGJhY2smJiBmYWlsdXJlQ2FsbGJhY2ssIEV4Y2VwdGlvbkNvZGUmKTsKICAgICB2aXJ0dWFsIHZv
aWQgZ2VuZXJhdGVLZXkoY29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVyc0RlcHJlY2F0ZWQm
LCBib29sIGV4dHJhY3RhYmxlLCBDcnlwdG9LZXlVc2FnZSwgS2V5T3JLZXlQYWlyQ2FsbGJhY2sm
JiwgVm9pZENhbGxiYWNrJiYgZmFpbHVyZUNhbGxiYWNrLCBFeGNlcHRpb25Db2RlJik7CiAgICAg
dmlydHVhbCB2b2lkIGRlcml2ZUtleShjb25zdCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzRGVw
cmVjYXRlZCYsIGNvbnN0IENyeXB0b0tleSYgYmFzZUtleSwgQ3J5cHRvQWxnb3JpdGhtKiBkZXJp
dmVkS2V5VHlwZSwgYm9vbCBleHRyYWN0YWJsZSwgQ3J5cHRvS2V5VXNhZ2UsIEtleUNhbGxiYWNr
JiYsIFZvaWRDYWxsYmFjayYmIGZhaWx1cmVDYWxsYmFjaywgRXhjZXB0aW9uQ29kZSYpOwogICAg
IHZpcnR1YWwgdm9pZCBkZXJpdmVCaXRzKGNvbnN0IENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnNE
ZXByZWNhdGVkJiwgY29uc3QgQ3J5cHRvS2V5JiBiYXNlS2V5LCB1bnNpZ25lZCBsb25nIGxlbmd0
aCwgVmVjdG9yQ2FsbGJhY2smJiwgVm9pZENhbGxiYWNrJiYgZmFpbHVyZUNhbGxiYWNrLCBFeGNl
cHRpb25Db2RlJik7CiAgICAgdmlydHVhbCB2b2lkIGltcG9ydEtleShjb25zdCBDcnlwdG9BbGdv
cml0aG1QYXJhbWV0ZXJzRGVwcmVjYXRlZCYsIGNvbnN0IENyeXB0b0tleURhdGEmLCBib29sIGV4
dHJhY3RhYmxlLCBDcnlwdG9LZXlVc2FnZSwgS2V5Q2FsbGJhY2smJiwgVm9pZENhbGxiYWNrJiYg
ZmFpbHVyZUNhbGxiYWNrLCBFeGNlcHRpb25Db2RlJik7CiAKICAgICAvLyBUaGVzZSBhcmUgb25s
eSBkaWZmZXJlbnQgZnJvbSBlbmNyeXB0L2RlY3J5cHQgYmVjYXVzZSBzb21lIGFsZ29yaXRobXMg
bWF5IG5vdCBleHBvc2UgZW5jcnlwdC9kZWNyeXB0LgotICAgIHZpcnR1YWwgdm9pZCBlbmNyeXB0
Rm9yV3JhcEtleShjb25zdCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzRGVwcmVjYXRlZCYsIGNv
bnN0IENyeXB0b0tleSYsIGNvbnN0IENyeXB0b09wZXJhdGlvbkRhdGEmLCBWZWN0b3JDYWxsYmFj
ayYmLCBWb2lkQ2FsbGJhY2smJiBmYWlsdXJlQ2FsbGJhY2ssIEV4Y2VwdGlvbkNvZGUmKTsKLSAg
ICB2aXJ0dWFsIHZvaWQgZGVjcnlwdEZvclVud3JhcEtleShjb25zdCBDcnlwdG9BbGdvcml0aG1Q
YXJhbWV0ZXJzRGVwcmVjYXRlZCYsIGNvbnN0IENyeXB0b0tleSYsIGNvbnN0IENyeXB0b09wZXJh
dGlvbkRhdGEmLCBWZWN0b3JDYWxsYmFjayYmLCBWb2lkQ2FsbGJhY2smJiBmYWlsdXJlQ2FsbGJh
Y2ssIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICB2aXJ0dWFsIHZvaWQgZW5jcnlwdEZvcldyYXBLZXko
Y29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVyc0RlcHJlY2F0ZWQmLCBjb25zdCBDcnlwdG9L
ZXkmLCBjb25zdCBCdWZmZXJTb3VyY2UmLCBWZWN0b3JDYWxsYmFjayYmLCBWb2lkQ2FsbGJhY2sm
JiBmYWlsdXJlQ2FsbGJhY2ssIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGVj
cnlwdEZvclVud3JhcEtleShjb25zdCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzRGVwcmVjYXRl
ZCYsIGNvbnN0IENyeXB0b0tleSYsIGNvbnN0IEJ1ZmZlclNvdXJjZSYsIFZlY3RvckNhbGxiYWNr
JiYsIFZvaWRDYWxsYmFjayYmIGZhaWx1cmVDYWxsYmFjaywgRXhjZXB0aW9uQ29kZSYpOwogCiBw
cm90ZWN0ZWQ6CiAgICAgQ3J5cHRvQWxnb3JpdGhtKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9jcnlwdG8vQ3J5cHRvS2V5U2VyaWFsaXphdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvY3J5
cHRvL0NyeXB0b0tleVNlcmlhbGl6YXRpb24uaAppbmRleCBiNTEyZDQ5NGNmNmRmOWRjZWQwODMz
MTZhNmI5NmRiM2QyYjFiNjcyLi5mZTk1NTFjNjk1YjkyNThkZDY2OTEyOGJjMWVkNDFiODVhYjBj
YjA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vQ3J5cHRvS2V5U2VyaWFsaXph
dGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9DcnlwdG9LZXlTZXJpYWxpemF0aW9u
LmgKQEAgLTM5LDggKzM5LDYgQEAgY2xhc3MgQ3J5cHRvQWxnb3JpdGhtOwogY2xhc3MgQ3J5cHRv
QWxnb3JpdGhtUGFyYW1ldGVyc0RlcHJlY2F0ZWQ7CiBjbGFzcyBDcnlwdG9LZXlEYXRhOwogCi10
eXBlZGVmIHN0ZDo6cGFpcjxjb25zdCB1aW50OF90Kiwgc2l6ZV90PiBDcnlwdG9PcGVyYXRpb25E
YXRhOwotCiBzdHJ1Y3QgQ3J5cHRvQWxnb3JpdGhtUGFpciB7CiAgICAgUmVmUHRyPENyeXB0b0Fs
Z29yaXRobT4gYWxnb3JpdGhtOwogICAgIFJlZlB0cjxDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJz
RGVwcmVjYXRlZD4gcGFyYW1ldGVyczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0
by9XZWJLaXRTdWJ0bGVDcnlwdG8uaWRsIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL1dlYktpdFN1
YnRsZUNyeXB0by5pZGwKaW5kZXggMTU1NzM4MzQ5MjgwM2FlZjRiYzI0Njc2ZWQ1N2RiMGVhZGFj
NTA1NS4uZjkwNTM1OGMxNzVjYTlhODcwOTYzZjBkOWU3MGM2NGU3N2NhM2E5ZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL1dlYktpdFN1YnRsZUNyeXB0by5pZGwKKysrIGIvU291
cmNlL1dlYkNvcmUvY3J5cHRvL1dlYktpdFN1YnRsZUNyeXB0by5pZGwKQEAgLTI4LDE0ICsyOCwx
NCBAQAogICAgIEdlbmVyYXRlSXNSZWFjaGFibGU9SW1wbERvY3VtZW50LAogICAgIE5vSW50ZXJm
YWNlT2JqZWN0LAogXSBpbnRlcmZhY2UgV2ViS2l0U3VidGxlQ3J5cHRvIHsKLSAgICBbQ3VzdG9t
XSBQcm9taXNlIGVuY3J5cHQoQWxnb3JpdGhtSWRlbnRpZmllciBhbGdvcml0aG0sIEtleSBrZXks
IHNlcXVlbmNlPENyeXB0b09wZXJhdGlvbkRhdGE+IGRhdGEpOwotICAgIFtDdXN0b21dIFByb21p
c2UgZGVjcnlwdChBbGdvcml0aG1JZGVudGlmaWVyIGFsZ29yaXRobSwgS2V5IGtleSwgc2VxdWVu
Y2U8Q3J5cHRvT3BlcmF0aW9uRGF0YT4gZGF0YSk7Ci0gICAgW0N1c3RvbV0gUHJvbWlzZSBzaWdu
KEFsZ29yaXRobUlkZW50aWZpZXIgYWxnb3JpdGhtLCBLZXkga2V5LCBzZXF1ZW5jZTxDcnlwdG9P
cGVyYXRpb25EYXRhPiBkYXRhKTsKLSAgICBbQ3VzdG9tXSBQcm9taXNlIHZlcmlmeShBbGdvcml0
aG1JZGVudGlmaWVyIGFsZ29yaXRobSwgS2V5IGtleSwgQ3J5cHRvT3BlcmF0aW9uRGF0YSBzaWdu
YXR1cmUsIHNlcXVlbmNlPENyeXB0b09wZXJhdGlvbkRhdGE+IGRhdGEpOwotICAgIFtDdXN0b21d
IFByb21pc2UgZGlnZXN0KEFsZ29yaXRobUlkZW50aWZpZXIgYWxnb3JpdGhtLCBzZXF1ZW5jZTxD
cnlwdG9PcGVyYXRpb25EYXRhPiBkYXRhKTsKKyAgICBbQ3VzdG9tXSBQcm9taXNlIGVuY3J5cHQo
QWxnb3JpdGhtSWRlbnRpZmllciBhbGdvcml0aG0sIEtleSBrZXksIEJ1ZmZlclNvdXJjZSBkYXRh
KTsKKyAgICBbQ3VzdG9tXSBQcm9taXNlIGRlY3J5cHQoQWxnb3JpdGhtSWRlbnRpZmllciBhbGdv
cml0aG0sIEtleSBrZXksIEJ1ZmZlclNvdXJjZSBkYXRhKTsKKyAgICBbQ3VzdG9tXSBQcm9taXNl
IHNpZ24oQWxnb3JpdGhtSWRlbnRpZmllciBhbGdvcml0aG0sIEtleSBrZXksIEJ1ZmZlclNvdXJj
ZSBkYXRhKTsKKyAgICBbQ3VzdG9tXSBQcm9taXNlIHZlcmlmeShBbGdvcml0aG1JZGVudGlmaWVy
IGFsZ29yaXRobSwgS2V5IGtleSwgQnVmZmVyU291cmNlIHNpZ25hdHVyZSwgQnVmZmVyU291cmNl
IGRhdGEpOworICAgIFtDdXN0b21dIFByb21pc2UgZGlnZXN0KEFsZ29yaXRobUlkZW50aWZpZXIg
YWxnb3JpdGhtLCBCdWZmZXJTb3VyY2UgZGF0YSk7CiAgICAgW0N1c3RvbV0gUHJvbWlzZSBnZW5l
cmF0ZUtleShBbGdvcml0aG1JZGVudGlmaWVyIGFsZ29yaXRobSwgb3B0aW9uYWwgYm9vbGVhbiBl
eHRyYWN0YWJsZSwgb3B0aW9uYWwgc2VxdWVuY2U8S2V5VXNhZ2U+IGtleVVzYWdlcyk7Ci0gICAg
W0N1c3RvbV0gUHJvbWlzZSBpbXBvcnRLZXkoS2V5Rm9ybWF0IGZvcm1hdCwgQ3J5cHRvT3BlcmF0
aW9uRGF0YSBrZXlEYXRhLCBBbGdvcml0aG1JZGVudGlmaWVyPyBhbGdvcml0aG0sIG9wdGlvbmFs
IGJvb2xlYW4gZXh0cmFjdGFibGUsIG9wdGlvbmFsIHNlcXVlbmNlPEtleVVzYWdlPiBrZXlVc2Fn
ZXMpOworICAgIFtDdXN0b21dIFByb21pc2UgaW1wb3J0S2V5KEtleUZvcm1hdCBmb3JtYXQsIEJ1
ZmZlclNvdXJjZSBrZXlEYXRhLCBBbGdvcml0aG1JZGVudGlmaWVyPyBhbGdvcml0aG0sIG9wdGlv
bmFsIGJvb2xlYW4gZXh0cmFjdGFibGUsIG9wdGlvbmFsIHNlcXVlbmNlPEtleVVzYWdlPiBrZXlV
c2FnZXMpOwogICAgIFtDdXN0b21dIFByb21pc2UgZXhwb3J0S2V5KEtleUZvcm1hdCBmb3JtYXQs
IEtleSBrZXkpOwogICAgIFtDdXN0b21dIFByb21pc2Ugd3JhcEtleShLZXlGb3JtYXQgZm9ybWF0
LCBLZXkga2V5LCBLZXkgd3JhcHBpbmdLZXksIEFsZ29yaXRobUlkZW50aWZpZXIgd3JhcEFsZ29y
aXRobSk7Ci0gICAgW0N1c3RvbV0gUHJvbWlzZSB1bndyYXBLZXkoS2V5Rm9ybWF0IGZvcm1hdCwg
Q3J5cHRvT3BlcmF0aW9uRGF0YSB3cmFwcGVkS2V5LCBLZXkgdW53cmFwcGluZ0tleSwgQWxnb3Jp
dGhtSWRlbnRpZmllciB1bndyYXBBbGdvcml0aG0sIEFsZ29yaXRobUlkZW50aWZpZXI/IHVud3Jh
cHBlZEtleUFsZ29yaXRobSwgb3B0aW9uYWwgYm9vbGVhbiBleHRyYWN0YWJsZSwgb3B0aW9uYWwg
c2VxdWVuY2U8S2V5VXNhZ2U+IGtleVVzYWdlcyk7CisgICAgW0N1c3RvbV0gUHJvbWlzZSB1bndy
YXBLZXkoS2V5Rm9ybWF0IGZvcm1hdCwgQnVmZmVyU291cmNlIHdyYXBwZWRLZXksIEtleSB1bndy
YXBwaW5nS2V5LCBBbGdvcml0aG1JZGVudGlmaWVyIHVud3JhcEFsZ29yaXRobSwgQWxnb3JpdGht
SWRlbnRpZmllcj8gdW53cmFwcGVkS2V5QWxnb3JpdGhtLCBvcHRpb25hbCBib29sZWFuIGV4dHJh
Y3RhYmxlLCBvcHRpb25hbCBzZXF1ZW5jZTxLZXlVc2FnZT4ga2V5VXNhZ2VzKTsKIH07CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1B
RVNfQ0JDLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29y
aXRobUFFU19DQkMuY3BwCmluZGV4IDhmNDE5ZGM0NTgzNjI4YjdiZWRmMzUzNWZkYjcxOGFlNzQ5
YzkwNzIuLmJjZDM5ZmU1NGJlNTExMjM4ODAwMDQyYTgxZDZhNGU5N2NkYTU0ODYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobUFFU19D
QkMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29y
aXRobUFFU19DQkMuY3BwCkBAIC02NSw3ICs2NSw3IEBAIGJvb2wgQ3J5cHRvQWxnb3JpdGhtQUVT
X0NCQzo6a2V5QWxnb3JpdGhtTWF0Y2hlcyhjb25zdCBDcnlwdG9BbGdvcml0aG1BZXNDYmNQYXJh
CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXZvaWQgQ3J5cHRvQWxnb3JpdGhtQUVTX0NCQzo6ZW5j
cnlwdChjb25zdCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzRGVwcmVjYXRlZCYgcGFyYW1ldGVy
cywgY29uc3QgQ3J5cHRvS2V5JiBrZXksIGNvbnN0IENyeXB0b09wZXJhdGlvbkRhdGEmIGRhdGEs
IFZlY3RvckNhbGxiYWNrJiYgY2FsbGJhY2ssIFZvaWRDYWxsYmFjayYmIGZhaWx1cmVDYWxsYmFj
aywgRXhjZXB0aW9uQ29kZSYgZWMpCit2b2lkIENyeXB0b0FsZ29yaXRobUFFU19DQkM6OmVuY3J5
cHQoY29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVyc0RlcHJlY2F0ZWQmIHBhcmFtZXRlcnMs
IGNvbnN0IENyeXB0b0tleSYga2V5LCBjb25zdCBCdWZmZXJTb3VyY2UmIGRhdGEsIFZlY3RvckNh
bGxiYWNrJiYgY2FsbGJhY2ssIFZvaWRDYWxsYmFjayYmIGZhaWx1cmVDYWxsYmFjaywgRXhjZXB0
aW9uQ29kZSYgZWMpCiB7CiAgICAgY29uc3QgQ3J5cHRvQWxnb3JpdGhtQWVzQ2JjUGFyYW1zRGVw
cmVjYXRlZCYgYWVzQ0JDUGFyYW1ldGVycyA9IGRvd25jYXN0PENyeXB0b0FsZ29yaXRobUFlc0Ni
Y1BhcmFtc0RlcHJlY2F0ZWQ+KHBhcmFtZXRlcnMpOwogCkBAIC03Nyw3ICs3Nyw3IEBAIHZvaWQg
Q3J5cHRvQWxnb3JpdGhtQUVTX0NCQzo6ZW5jcnlwdChjb25zdCBDcnlwdG9BbGdvcml0aG1QYXJh
bWV0ZXJzRGVwcmVjYXRlZCYKICAgICBwbGF0Zm9ybUVuY3J5cHQoYWVzQ0JDUGFyYW1ldGVycywg
ZG93bmNhc3Q8Q3J5cHRvS2V5QUVTPihrZXkpLCBkYXRhLCBXVEZNb3ZlKGNhbGxiYWNrKSwgV1RG
TW92ZShmYWlsdXJlQ2FsbGJhY2spLCBlYyk7CiB9CiAKLXZvaWQgQ3J5cHRvQWxnb3JpdGhtQUVT
X0NCQzo6ZGVjcnlwdChjb25zdCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzRGVwcmVjYXRlZCYg
cGFyYW1ldGVycywgY29uc3QgQ3J5cHRvS2V5JiBrZXksIGNvbnN0IENyeXB0b09wZXJhdGlvbkRh
dGEmIGRhdGEsIFZlY3RvckNhbGxiYWNrJiYgY2FsbGJhY2ssIFZvaWRDYWxsYmFjayYmIGZhaWx1
cmVDYWxsYmFjaywgRXhjZXB0aW9uQ29kZSYgZWMpCit2b2lkIENyeXB0b0FsZ29yaXRobUFFU19D
QkM6OmRlY3J5cHQoY29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVyc0RlcHJlY2F0ZWQmIHBh
cmFtZXRlcnMsIGNvbnN0IENyeXB0b0tleSYga2V5LCBjb25zdCBCdWZmZXJTb3VyY2UmIGRhdGEs
IFZlY3RvckNhbGxiYWNrJiYgY2FsbGJhY2ssIFZvaWRDYWxsYmFjayYmIGZhaWx1cmVDYWxsYmFj
aywgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgY29uc3QgQ3J5cHRvQWxnb3JpdGhtQWVzQ2Jj
UGFyYW1zRGVwcmVjYXRlZCYgYWVzQ0JDUGFyYW1ldGVycyA9IGRvd25jYXN0PENyeXB0b0FsZ29y
aXRobUFlc0NiY1BhcmFtc0RlcHJlY2F0ZWQ+KHBhcmFtZXRlcnMpOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1BRVNfQ0JDLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1BRVNfQ0JD
LmgKaW5kZXggNjljZWNjYTNmZGVhZTIzODVjYjk1ZmNhN2FkNDNjMzVmM2EwYTRlNi4uNTUzYjE1
MTA5NTM3YjY4OTJmYmRjZjYwOGE2OTdiOTEwOGNlYzM5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtQUVTX0NCQy5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobUFFU19DQkMuaApA
QCAtNDQsOCArNDQsOCBAQCBwdWJsaWM6CiAKICAgICBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVy
IGlkZW50aWZpZXIoKSBjb25zdCBvdmVycmlkZTsKIAotICAgIHZvaWQgZW5jcnlwdChjb25zdCBD
cnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzRGVwcmVjYXRlZCYsIGNvbnN0IENyeXB0b0tleSYsIGNv
bnN0IENyeXB0b09wZXJhdGlvbkRhdGEmLCBWZWN0b3JDYWxsYmFjayYmLCBWb2lkQ2FsbGJhY2sm
JiBmYWlsdXJlQ2FsbGJhY2ssIEV4Y2VwdGlvbkNvZGUmKSBvdmVycmlkZTsKLSAgICB2b2lkIGRl
Y3J5cHQoY29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVyc0RlcHJlY2F0ZWQmLCBjb25zdCBD
cnlwdG9LZXkmLCBjb25zdCBDcnlwdG9PcGVyYXRpb25EYXRhJiwgVmVjdG9yQ2FsbGJhY2smJiwg
Vm9pZENhbGxiYWNrJiYgZmFpbHVyZUNhbGxiYWNrLCBFeGNlcHRpb25Db2RlJikgb3ZlcnJpZGU7
CisgICAgdm9pZCBlbmNyeXB0KGNvbnN0IENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnNEZXByZWNh
dGVkJiwgY29uc3QgQ3J5cHRvS2V5JiwgY29uc3QgQnVmZmVyU291cmNlJiwgVmVjdG9yQ2FsbGJh
Y2smJiwgVm9pZENhbGxiYWNrJiYgZmFpbHVyZUNhbGxiYWNrLCBFeGNlcHRpb25Db2RlJikgb3Zl
cnJpZGU7CisgICAgdm9pZCBkZWNyeXB0KGNvbnN0IENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnNE
ZXByZWNhdGVkJiwgY29uc3QgQ3J5cHRvS2V5JiwgY29uc3QgQnVmZmVyU291cmNlJiwgVmVjdG9y
Q2FsbGJhY2smJiwgVm9pZENhbGxiYWNrJiYgZmFpbHVyZUNhbGxiYWNrLCBFeGNlcHRpb25Db2Rl
Jikgb3ZlcnJpZGU7CiAgICAgdm9pZCBnZW5lcmF0ZUtleShjb25zdCBDcnlwdG9BbGdvcml0aG1Q
YXJhbWV0ZXJzRGVwcmVjYXRlZCYsIGJvb2wgZXh0cmFjdGFibGUsIENyeXB0b0tleVVzYWdlLCBL
ZXlPcktleVBhaXJDYWxsYmFjayYmLCBWb2lkQ2FsbGJhY2smJiBmYWlsdXJlQ2FsbGJhY2ssIEV4
Y2VwdGlvbkNvZGUmKSBvdmVycmlkZTsKICAgICB2b2lkIGltcG9ydEtleShjb25zdCBDcnlwdG9B
bGdvcml0aG1QYXJhbWV0ZXJzRGVwcmVjYXRlZCYsIGNvbnN0IENyeXB0b0tleURhdGEmLCBib29s
IGV4dHJhY3RhYmxlLCBDcnlwdG9LZXlVc2FnZSwgS2V5Q2FsbGJhY2smJiwgVm9pZENhbGxiYWNr
JiYgZmFpbHVyZUNhbGxiYWNrLCBFeGNlcHRpb25Db2RlJikgb3ZlcnJpZGU7CiAKQEAgLTU0LDgg
KzU0LDggQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIH5DcnlwdG9BbGdvcml0aG1BRVNfQ0JDKCk7
CiAKICAgICBib29sIGtleUFsZ29yaXRobU1hdGNoZXMoY29uc3QgQ3J5cHRvQWxnb3JpdGhtQWVz
Q2JjUGFyYW1zRGVwcmVjYXRlZCYgYWxnb3JpdGhtUGFyYW1ldGVycywgY29uc3QgQ3J5cHRvS2V5
JikgY29uc3Q7Ci0gICAgdm9pZCBwbGF0Zm9ybUVuY3J5cHQoY29uc3QgQ3J5cHRvQWxnb3JpdGht
QWVzQ2JjUGFyYW1zRGVwcmVjYXRlZCYsIGNvbnN0IENyeXB0b0tleUFFUyYsIGNvbnN0IENyeXB0
b09wZXJhdGlvbkRhdGEmLCBWZWN0b3JDYWxsYmFjayYmLCBWb2lkQ2FsbGJhY2smJiBmYWlsdXJl
Q2FsbGJhY2ssIEV4Y2VwdGlvbkNvZGUmKTsKLSAgICB2b2lkIHBsYXRmb3JtRGVjcnlwdChjb25z
dCBDcnlwdG9BbGdvcml0aG1BZXNDYmNQYXJhbXNEZXByZWNhdGVkJiwgY29uc3QgQ3J5cHRvS2V5
QUVTJiwgY29uc3QgQ3J5cHRvT3BlcmF0aW9uRGF0YSYsIFZlY3RvckNhbGxiYWNrJiYsIFZvaWRD
YWxsYmFjayYmIGZhaWx1cmVDYWxsYmFjaywgRXhjZXB0aW9uQ29kZSYpOworICAgIHZvaWQgcGxh
dGZvcm1FbmNyeXB0KGNvbnN0IENyeXB0b0FsZ29yaXRobUFlc0NiY1BhcmFtc0RlcHJlY2F0ZWQm
LCBjb25zdCBDcnlwdG9LZXlBRVMmLCBjb25zdCBCdWZmZXJTb3VyY2UmLCBWZWN0b3JDYWxsYmFj
ayYmLCBWb2lkQ2FsbGJhY2smJiBmYWlsdXJlQ2FsbGJhY2ssIEV4Y2VwdGlvbkNvZGUmKTsKKyAg
ICB2b2lkIHBsYXRmb3JtRGVjcnlwdChjb25zdCBDcnlwdG9BbGdvcml0aG1BZXNDYmNQYXJhbXNE
ZXByZWNhdGVkJiwgY29uc3QgQ3J5cHRvS2V5QUVTJiwgY29uc3QgQnVmZmVyU291cmNlJiwgVmVj
dG9yQ2FsbGJhY2smJiwgVm9pZENhbGxiYWNrJiYgZmFpbHVyZUNhbGxiYWNrLCBFeGNlcHRpb25D
b2RlJik7CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3Jp
dGhtcy9DcnlwdG9BbGdvcml0aG1BRVNfS1cuY3BwIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2Fs
Z29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtQUVTX0tXLmNwcAppbmRleCBjZWU1N2M1ZTU0NzU3NDYw
NjRkMGQ0ZmRmZTU0NGY2ZGE5MmY4MDRlLi43MGI3ZWEzMmMyZWZjNDg1ZDhkZTM5OWVjZmM1NWNh
NWExOWFiNTFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9D
cnlwdG9BbGdvcml0aG1BRVNfS1cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdv
cml0aG1zL0NyeXB0b0FsZ29yaXRobUFFU19LVy5jcHAKQEAgLTY0LDcgKzY0LDcgQEAgYm9vbCBD
cnlwdG9BbGdvcml0aG1BRVNfS1c6OmtleUFsZ29yaXRobU1hdGNoZXMoY29uc3QgQ3J5cHRvS2V5
JiBrZXkpIGNvbnN0CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXZvaWQgQ3J5cHRvQWxnb3JpdGht
QUVTX0tXOjplbmNyeXB0Rm9yV3JhcEtleShjb25zdCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJz
RGVwcmVjYXRlZCYsIGNvbnN0IENyeXB0b0tleSYga2V5LCBjb25zdCBDcnlwdG9PcGVyYXRpb25E
YXRhJiBkYXRhLCBWZWN0b3JDYWxsYmFjayYmIGNhbGxiYWNrLCBWb2lkQ2FsbGJhY2smJiBmYWls
dXJlQ2FsbGJhY2ssIEV4Y2VwdGlvbkNvZGUmIGVjKQordm9pZCBDcnlwdG9BbGdvcml0aG1BRVNf
S1c6OmVuY3J5cHRGb3JXcmFwS2V5KGNvbnN0IENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnNEZXBy
ZWNhdGVkJiwgY29uc3QgQ3J5cHRvS2V5JiBrZXksIGNvbnN0IEJ1ZmZlclNvdXJjZSYgZGF0YSwg
VmVjdG9yQ2FsbGJhY2smJiBjYWxsYmFjaywgVm9pZENhbGxiYWNrJiYgZmFpbHVyZUNhbGxiYWNr
LCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBpZiAoIWtleUFsZ29yaXRobU1hdGNoZXMoa2V5
KSkgewogICAgICAgICBlYyA9IE5PVF9TVVBQT1JURURfRVJSOwpAQCAtNzQsNyArNzQsNyBAQCB2
b2lkIENyeXB0b0FsZ29yaXRobUFFU19LVzo6ZW5jcnlwdEZvcldyYXBLZXkoY29uc3QgQ3J5cHRv
QWxnb3JpdGhtUGFyYW1ldGVyc0RlcAogICAgIHBsYXRmb3JtRW5jcnlwdChkb3duY2FzdDxDcnlw
dG9LZXlBRVM+KGtleSksIGRhdGEsIFdURk1vdmUoY2FsbGJhY2spLCBXVEZNb3ZlKGZhaWx1cmVD
YWxsYmFjayksIGVjKTsKIH0KIAotdm9pZCBDcnlwdG9BbGdvcml0aG1BRVNfS1c6OmRlY3J5cHRG
b3JVbndyYXBLZXkoY29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVyc0RlcHJlY2F0ZWQmLCBj
b25zdCBDcnlwdG9LZXkmIGtleSwgY29uc3QgQ3J5cHRvT3BlcmF0aW9uRGF0YSYgZGF0YSwgVmVj
dG9yQ2FsbGJhY2smJiBjYWxsYmFjaywgVm9pZENhbGxiYWNrJiYgZmFpbHVyZUNhbGxiYWNrLCBF
eGNlcHRpb25Db2RlJiBlYykKK3ZvaWQgQ3J5cHRvQWxnb3JpdGhtQUVTX0tXOjpkZWNyeXB0Rm9y
VW53cmFwS2V5KGNvbnN0IENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnNEZXByZWNhdGVkJiwgY29u
c3QgQ3J5cHRvS2V5JiBrZXksIGNvbnN0IEJ1ZmZlclNvdXJjZSYgZGF0YSwgVmVjdG9yQ2FsbGJh
Y2smJiBjYWxsYmFjaywgVm9pZENhbGxiYWNrJiYgZmFpbHVyZUNhbGxiYWNrLCBFeGNlcHRpb25D
b2RlJiBlYykKIHsKICAgICBpZiAoIWtleUFsZ29yaXRobU1hdGNoZXMoa2V5KSkgewogICAgICAg
ICBlYyA9IE5PVF9TVVBQT1JURURfRVJSOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3J5
cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtQUVTX0tXLmggYi9Tb3VyY2UvV2ViQ29yZS9j
cnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1BRVNfS1cuaAppbmRleCA3NjU3NmI3YjM3
MGI2MzIwM2JkNGQ5MTQzOWJmYjRjNzUyODFjOTM5Li4wZmQwZGY1OWY5Y2EwYmMzOTdkNTEyNzA2
ZGE0NmYyMjU0Mjc3MGJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3Jp
dGhtcy9DcnlwdG9BbGdvcml0aG1BRVNfS1cuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8v
YWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1BRVNfS1cuaApAQCAtNDMsOCArNDMsOCBAQCBwdWJs
aWM6CiAKICAgICBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyIGlkZW50aWZpZXIoKSBjb25zdCBv
dmVycmlkZTsKIAotICAgIHZvaWQgZW5jcnlwdEZvcldyYXBLZXkoY29uc3QgQ3J5cHRvQWxnb3Jp
dGhtUGFyYW1ldGVyc0RlcHJlY2F0ZWQmLCBjb25zdCBDcnlwdG9LZXkmLCBjb25zdCBDcnlwdG9P
cGVyYXRpb25EYXRhJiwgVmVjdG9yQ2FsbGJhY2smJiwgVm9pZENhbGxiYWNrJiYgZmFpbHVyZUNh
bGxiYWNrLCBFeGNlcHRpb25Db2RlJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkZWNyeXB0Rm9yVW53
cmFwS2V5KGNvbnN0IENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnNEZXByZWNhdGVkJiwgY29uc3Qg
Q3J5cHRvS2V5JiwgY29uc3QgQ3J5cHRvT3BlcmF0aW9uRGF0YSYsIFZlY3RvckNhbGxiYWNrJiYs
IFZvaWRDYWxsYmFjayYmIGZhaWx1cmVDYWxsYmFjaywgRXhjZXB0aW9uQ29kZSYpIG92ZXJyaWRl
OworICAgIHZvaWQgZW5jcnlwdEZvcldyYXBLZXkoY29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFyYW1l
dGVyc0RlcHJlY2F0ZWQmLCBjb25zdCBDcnlwdG9LZXkmLCBjb25zdCBCdWZmZXJTb3VyY2UmLCBW
ZWN0b3JDYWxsYmFjayYmLCBWb2lkQ2FsbGJhY2smJiBmYWlsdXJlQ2FsbGJhY2ssIEV4Y2VwdGlv
bkNvZGUmKSBvdmVycmlkZTsKKyAgICB2b2lkIGRlY3J5cHRGb3JVbndyYXBLZXkoY29uc3QgQ3J5
cHRvQWxnb3JpdGhtUGFyYW1ldGVyc0RlcHJlY2F0ZWQmLCBjb25zdCBDcnlwdG9LZXkmLCBjb25z
dCBCdWZmZXJTb3VyY2UmLCBWZWN0b3JDYWxsYmFjayYmLCBWb2lkQ2FsbGJhY2smJiBmYWlsdXJl
Q2FsbGJhY2ssIEV4Y2VwdGlvbkNvZGUmKSBvdmVycmlkZTsKICAgICB2b2lkIGdlbmVyYXRlS2V5
KGNvbnN0IENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnNEZXByZWNhdGVkJiwgYm9vbCBleHRyYWN0
YWJsZSwgQ3J5cHRvS2V5VXNhZ2UsIEtleU9yS2V5UGFpckNhbGxiYWNrJiYsIFZvaWRDYWxsYmFj
ayYmIGZhaWx1cmVDYWxsYmFjaywgRXhjZXB0aW9uQ29kZSYpIG92ZXJyaWRlOwogICAgIHZvaWQg
aW1wb3J0S2V5KGNvbnN0IENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnNEZXByZWNhdGVkJiwgY29u
c3QgQ3J5cHRvS2V5RGF0YSYsIGJvb2wgZXh0cmFjdGFibGUsIENyeXB0b0tleVVzYWdlLCBLZXlD
YWxsYmFjayYmLCBWb2lkQ2FsbGJhY2smJiBmYWlsdXJlQ2FsbGJhY2ssIEV4Y2VwdGlvbkNvZGUm
KSBvdmVycmlkZTsKIApAQCAtNTMsOCArNTMsOCBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgfkNy
eXB0b0FsZ29yaXRobUFFU19LVygpOwogCiAgICAgYm9vbCBrZXlBbGdvcml0aG1NYXRjaGVzKGNv
bnN0IENyeXB0b0tleSYpIGNvbnN0OwotICAgIHZvaWQgcGxhdGZvcm1FbmNyeXB0KGNvbnN0IENy
eXB0b0tleUFFUyYsIGNvbnN0IENyeXB0b09wZXJhdGlvbkRhdGEmLCBWZWN0b3JDYWxsYmFjayYm
LCBWb2lkQ2FsbGJhY2smJiBmYWlsdXJlQ2FsbGJhY2ssIEV4Y2VwdGlvbkNvZGUmKTsKLSAgICB2
b2lkIHBsYXRmb3JtRGVjcnlwdChjb25zdCBDcnlwdG9LZXlBRVMmLCBjb25zdCBDcnlwdG9PcGVy
YXRpb25EYXRhJiwgVmVjdG9yQ2FsbGJhY2smJiwgVm9pZENhbGxiYWNrJiYgZmFpbHVyZUNhbGxi
YWNrLCBFeGNlcHRpb25Db2RlJik7CisgICAgdm9pZCBwbGF0Zm9ybUVuY3J5cHQoY29uc3QgQ3J5
cHRvS2V5QUVTJiwgY29uc3QgQnVmZmVyU291cmNlJiwgVmVjdG9yQ2FsbGJhY2smJiwgVm9pZENh
bGxiYWNrJiYgZmFpbHVyZUNhbGxiYWNrLCBFeGNlcHRpb25Db2RlJik7CisgICAgdm9pZCBwbGF0
Zm9ybURlY3J5cHQoY29uc3QgQ3J5cHRvS2V5QUVTJiwgY29uc3QgQnVmZmVyU291cmNlJiwgVmVj
dG9yQ2FsbGJhY2smJiwgVm9pZENhbGxiYWNrJiYgZmFpbHVyZUNhbGxiYWNrLCBFeGNlcHRpb25D
b2RlJik7CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3Jp
dGhtcy9DcnlwdG9BbGdvcml0aG1ITUFDLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdv
cml0aG1zL0NyeXB0b0FsZ29yaXRobUhNQUMuY3BwCmluZGV4IDcwNDI3NWY4YjE4MTI4Y2FmNGY1
NmE0ZTVkYTY4ODcyNzRiYzIwMDUuLjgxZmE1MjM0OWRhNDNlOGIyZjk4ZDgyOTdiZTYwOWQyMjU1
MjRkNjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0
b0FsZ29yaXRobUhNQUMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1z
L0NyeXB0b0FsZ29yaXRobUhNQUMuY3BwCkBAIC02Nyw3ICs2Nyw3IEBAIGJvb2wgQ3J5cHRvQWxn
b3JpdGhtSE1BQzo6a2V5QWxnb3JpdGhtTWF0Y2hlcyhjb25zdCBDcnlwdG9BbGdvcml0aG1IbWFj
UGFyYW1zRGVwCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXZvaWQgQ3J5cHRvQWxnb3JpdGhtSE1B
Qzo6c2lnbihjb25zdCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzRGVwcmVjYXRlZCYgcGFyYW1l
dGVycywgY29uc3QgQ3J5cHRvS2V5JiBrZXksIGNvbnN0IENyeXB0b09wZXJhdGlvbkRhdGEmIGRh
dGEsIFZlY3RvckNhbGxiYWNrJiYgY2FsbGJhY2ssIFZvaWRDYWxsYmFjayYmIGZhaWx1cmVDYWxs
YmFjaywgRXhjZXB0aW9uQ29kZSYgZWMpCit2b2lkIENyeXB0b0FsZ29yaXRobUhNQUM6OnNpZ24o
Y29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVyc0RlcHJlY2F0ZWQmIHBhcmFtZXRlcnMsIGNv
bnN0IENyeXB0b0tleSYga2V5LCBjb25zdCBCdWZmZXJTb3VyY2UmIGRhdGEsIFZlY3RvckNhbGxi
YWNrJiYgY2FsbGJhY2ssIFZvaWRDYWxsYmFjayYmIGZhaWx1cmVDYWxsYmFjaywgRXhjZXB0aW9u
Q29kZSYgZWMpCiB7CiAgICAgY29uc3QgQ3J5cHRvQWxnb3JpdGhtSG1hY1BhcmFtc0RlcHJlY2F0
ZWQmIGhtYWNQYXJhbWV0ZXJzID0gZG93bmNhc3Q8Q3J5cHRvQWxnb3JpdGhtSG1hY1BhcmFtc0Rl
cHJlY2F0ZWQ+KHBhcmFtZXRlcnMpOwogCkBAIC03OSw3ICs3OSw3IEBAIHZvaWQgQ3J5cHRvQWxn
b3JpdGhtSE1BQzo6c2lnbihjb25zdCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzRGVwcmVjYXRl
ZCYgcGFyYW1lCiAgICAgcGxhdGZvcm1TaWduKGhtYWNQYXJhbWV0ZXJzLCBkb3duY2FzdDxDcnlw
dG9LZXlITUFDPihrZXkpLCBkYXRhLCBXVEZNb3ZlKGNhbGxiYWNrKSwgV1RGTW92ZShmYWlsdXJl
Q2FsbGJhY2spLCBlYyk7CiB9CiAKLXZvaWQgQ3J5cHRvQWxnb3JpdGhtSE1BQzo6dmVyaWZ5KGNv
bnN0IENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnNEZXByZWNhdGVkJiBwYXJhbWV0ZXJzLCBjb25z
dCBDcnlwdG9LZXkmIGtleSwgY29uc3QgQ3J5cHRvT3BlcmF0aW9uRGF0YSYgZXhwZWN0ZWRTaWdu
YXR1cmUsIGNvbnN0IENyeXB0b09wZXJhdGlvbkRhdGEmIGRhdGEsIEJvb2xDYWxsYmFjayYmIGNh
bGxiYWNrLCBWb2lkQ2FsbGJhY2smJiBmYWlsdXJlQ2FsbGJhY2ssIEV4Y2VwdGlvbkNvZGUmIGVj
KQordm9pZCBDcnlwdG9BbGdvcml0aG1ITUFDOjp2ZXJpZnkoY29uc3QgQ3J5cHRvQWxnb3JpdGht
UGFyYW1ldGVyc0RlcHJlY2F0ZWQmIHBhcmFtZXRlcnMsIGNvbnN0IENyeXB0b0tleSYga2V5LCBj
b25zdCBCdWZmZXJTb3VyY2UmIGV4cGVjdGVkU2lnbmF0dXJlLCBjb25zdCBCdWZmZXJTb3VyY2Um
IGRhdGEsIEJvb2xDYWxsYmFjayYmIGNhbGxiYWNrLCBWb2lkQ2FsbGJhY2smJiBmYWlsdXJlQ2Fs
bGJhY2ssIEV4Y2VwdGlvbkNvZGUmIGVjKQogewogICAgIGNvbnN0IENyeXB0b0FsZ29yaXRobUht
YWNQYXJhbXNEZXByZWNhdGVkJiBobWFjUGFyYW1ldGVycyA9IGRvd25jYXN0PENyeXB0b0FsZ29y
aXRobUhtYWNQYXJhbXNEZXByZWNhdGVkPihwYXJhbWV0ZXJzKTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtSE1BQy5oIGIvU291
cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtSE1BQy5oCmluZGV4
IDViNjdlMmRmMDJlZmI5YmFkYmQ4OTQ4MmJlMjEwMjE3NDljNmYzODQuLmNmMjFkM2QzZmU1NjNl
NTRmYzYyNjY3ZGIwNTBmZTUyYThmNzcxZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Ny
eXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobUhNQUMuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1ITUFDLmgKQEAgLTQ0LDggKzQ0LDgg
QEAgcHVibGljOgogCiAgICAgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllciBpZGVudGlmaWVyKCkg
Y29uc3Qgb3ZlcnJpZGU7CiAKLSAgICB2b2lkIHNpZ24oY29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFy
YW1ldGVyc0RlcHJlY2F0ZWQmLCBjb25zdCBDcnlwdG9LZXkmLCBjb25zdCBDcnlwdG9PcGVyYXRp
b25EYXRhJiwgVmVjdG9yQ2FsbGJhY2smJiwgVm9pZENhbGxiYWNrJiYgZmFpbHVyZUNhbGxiYWNr
LCBFeGNlcHRpb25Db2RlJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCB2ZXJpZnkoY29uc3QgQ3J5cHRv
QWxnb3JpdGhtUGFyYW1ldGVyc0RlcHJlY2F0ZWQmLCBjb25zdCBDcnlwdG9LZXkmLCBjb25zdCBD
cnlwdG9PcGVyYXRpb25EYXRhJiBzaWduYXR1cmUsIGNvbnN0IENyeXB0b09wZXJhdGlvbkRhdGEm
LCBCb29sQ2FsbGJhY2smJiwgVm9pZENhbGxiYWNrJiYgZmFpbHVyZUNhbGxiYWNrLCBFeGNlcHRp
b25Db2RlJikgb3ZlcnJpZGU7CisgICAgdm9pZCBzaWduKGNvbnN0IENyeXB0b0FsZ29yaXRobVBh
cmFtZXRlcnNEZXByZWNhdGVkJiwgY29uc3QgQ3J5cHRvS2V5JiwgY29uc3QgQnVmZmVyU291cmNl
JiwgVmVjdG9yQ2FsbGJhY2smJiwgVm9pZENhbGxiYWNrJiYgZmFpbHVyZUNhbGxiYWNrLCBFeGNl
cHRpb25Db2RlJikgb3ZlcnJpZGU7CisgICAgdm9pZCB2ZXJpZnkoY29uc3QgQ3J5cHRvQWxnb3Jp
dGhtUGFyYW1ldGVyc0RlcHJlY2F0ZWQmLCBjb25zdCBDcnlwdG9LZXkmLCBjb25zdCBCdWZmZXJT
b3VyY2UmIHNpZ25hdHVyZSwgY29uc3QgQnVmZmVyU291cmNlJiwgQm9vbENhbGxiYWNrJiYsIFZv
aWRDYWxsYmFjayYmIGZhaWx1cmVDYWxsYmFjaywgRXhjZXB0aW9uQ29kZSYpIG92ZXJyaWRlOwog
ICAgIHZvaWQgZ2VuZXJhdGVLZXkoY29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVyc0RlcHJl
Y2F0ZWQmLCBib29sIGV4dHJhY3RhYmxlLCBDcnlwdG9LZXlVc2FnZSwgS2V5T3JLZXlQYWlyQ2Fs
bGJhY2smJiwgVm9pZENhbGxiYWNrJiYgZmFpbHVyZUNhbGxiYWNrLCBFeGNlcHRpb25Db2RlJikg
b3ZlcnJpZGU7CiAgICAgdm9pZCBpbXBvcnRLZXkoY29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFyYW1l
dGVyc0RlcHJlY2F0ZWQmLCBjb25zdCBDcnlwdG9LZXlEYXRhJiwgYm9vbCBleHRyYWN0YWJsZSwg
Q3J5cHRvS2V5VXNhZ2UsIEtleUNhbGxiYWNrJiYsIFZvaWRDYWxsYmFjayYmIGZhaWx1cmVDYWxs
YmFjaywgRXhjZXB0aW9uQ29kZSYpIG92ZXJyaWRlOwogCkBAIC01NCw4ICs1NCw4IEBAIHByaXZh
dGU6CiAgICAgdmlydHVhbCB+Q3J5cHRvQWxnb3JpdGhtSE1BQygpOwogCiAgICAgYm9vbCBrZXlB
bGdvcml0aG1NYXRjaGVzKGNvbnN0IENyeXB0b0FsZ29yaXRobUhtYWNQYXJhbXNEZXByZWNhdGVk
JiBhbGdvcml0aG1QYXJhbWV0ZXJzLCBjb25zdCBDcnlwdG9LZXkmKSBjb25zdDsKLSAgICB2b2lk
IHBsYXRmb3JtU2lnbihjb25zdCBDcnlwdG9BbGdvcml0aG1IbWFjUGFyYW1zRGVwcmVjYXRlZCYs
IGNvbnN0IENyeXB0b0tleUhNQUMmLCBjb25zdCBDcnlwdG9PcGVyYXRpb25EYXRhJiwgVmVjdG9y
Q2FsbGJhY2smJiwgVm9pZENhbGxiYWNrJiYgZmFpbHVyZUNhbGxiYWNrLCBFeGNlcHRpb25Db2Rl
Jik7Ci0gICAgdm9pZCBwbGF0Zm9ybVZlcmlmeShjb25zdCBDcnlwdG9BbGdvcml0aG1IbWFjUGFy
YW1zRGVwcmVjYXRlZCYsIGNvbnN0IENyeXB0b0tleUhNQUMmLCBjb25zdCBDcnlwdG9PcGVyYXRp
b25EYXRhJiBzaWduYXR1cmUsIGNvbnN0IENyeXB0b09wZXJhdGlvbkRhdGEmLCBCb29sQ2FsbGJh
Y2smJiwgVm9pZENhbGxiYWNrJiYgZmFpbHVyZUNhbGxiYWNrLCBFeGNlcHRpb25Db2RlJik7Cisg
ICAgdm9pZCBwbGF0Zm9ybVNpZ24oY29uc3QgQ3J5cHRvQWxnb3JpdGhtSG1hY1BhcmFtc0RlcHJl
Y2F0ZWQmLCBjb25zdCBDcnlwdG9LZXlITUFDJiwgY29uc3QgQnVmZmVyU291cmNlJiwgVmVjdG9y
Q2FsbGJhY2smJiwgVm9pZENhbGxiYWNrJiYgZmFpbHVyZUNhbGxiYWNrLCBFeGNlcHRpb25Db2Rl
Jik7CisgICAgdm9pZCBwbGF0Zm9ybVZlcmlmeShjb25zdCBDcnlwdG9BbGdvcml0aG1IbWFjUGFy
YW1zRGVwcmVjYXRlZCYsIGNvbnN0IENyeXB0b0tleUhNQUMmLCBjb25zdCBCdWZmZXJTb3VyY2Um
IHNpZ25hdHVyZSwgY29uc3QgQnVmZmVyU291cmNlJiwgQm9vbENhbGxiYWNrJiYsIFZvaWRDYWxs
YmFjayYmIGZhaWx1cmVDYWxsYmFjaywgRXhjZXB0aW9uQ29kZSYpOwogfTsKIAogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtUlNB
RVNfUEtDUzFfdjFfNS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9Dcnlw
dG9BbGdvcml0aG1SU0FFU19QS0NTMV92MV81LmNwcAppbmRleCBkYjViZTQ2ZThlYzYxNGUyZjYy
MDc4ZWNlODY3ZjYxYmJhZWMyOWFlLi4yZTI0NzM1MzQ3YzY4MDFmMjM3MTM5OGU2MmM4M2M0MjE4
ZWNkMjdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9Dcnlw
dG9BbGdvcml0aG1SU0FFU19QS0NTMV92MV81LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jcnlw
dG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1SU0FFU19QS0NTMV92MV81LmNwcApAQCAtNjUs
NyArNjUsNyBAQCBib29sIENyeXB0b0FsZ29yaXRobVJTQUVTX1BLQ1MxX3YxXzU6OmtleUFsZ29y
aXRobU1hdGNoZXMoY29uc3QgQ3J5cHRvS2V5JiBrZXkpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAK
LXZvaWQgQ3J5cHRvQWxnb3JpdGhtUlNBRVNfUEtDUzFfdjFfNTo6ZW5jcnlwdChjb25zdCBDcnlw
dG9BbGdvcml0aG1QYXJhbWV0ZXJzRGVwcmVjYXRlZCYsIGNvbnN0IENyeXB0b0tleSYga2V5LCBj
b25zdCBDcnlwdG9PcGVyYXRpb25EYXRhJiBkYXRhLCBWZWN0b3JDYWxsYmFjayYmIGNhbGxiYWNr
LCBWb2lkQ2FsbGJhY2smJiBmYWlsdXJlQ2FsbGJhY2ssIEV4Y2VwdGlvbkNvZGUmIGVjKQordm9p
ZCBDcnlwdG9BbGdvcml0aG1SU0FFU19QS0NTMV92MV81OjplbmNyeXB0KGNvbnN0IENyeXB0b0Fs
Z29yaXRobVBhcmFtZXRlcnNEZXByZWNhdGVkJiwgY29uc3QgQ3J5cHRvS2V5JiBrZXksIGNvbnN0
IEJ1ZmZlclNvdXJjZSYgZGF0YSwgVmVjdG9yQ2FsbGJhY2smJiBjYWxsYmFjaywgVm9pZENhbGxi
YWNrJiYgZmFpbHVyZUNhbGxiYWNrLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBpZiAoIWtl
eUFsZ29yaXRobU1hdGNoZXMoa2V5KSkgewogICAgICAgICBlYyA9IE5PVF9TVVBQT1JURURfRVJS
OwpAQCAtNzUsNyArNzUsNyBAQCB2b2lkIENyeXB0b0FsZ29yaXRobVJTQUVTX1BLQ1MxX3YxXzU6
OmVuY3J5cHQoY29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVyc0RlcAogICAgIHBsYXRmb3Jt
RW5jcnlwdChkb3duY2FzdDxDcnlwdG9LZXlSU0E+KGtleSksIGRhdGEsIFdURk1vdmUoY2FsbGJh
Y2spLCBXVEZNb3ZlKGZhaWx1cmVDYWxsYmFjayksIGVjKTsKIH0KIAotdm9pZCBDcnlwdG9BbGdv
cml0aG1SU0FFU19QS0NTMV92MV81OjpkZWNyeXB0KGNvbnN0IENyeXB0b0FsZ29yaXRobVBhcmFt
ZXRlcnNEZXByZWNhdGVkJiwgY29uc3QgQ3J5cHRvS2V5JiBrZXksIGNvbnN0IENyeXB0b09wZXJh
dGlvbkRhdGEmIGRhdGEsIFZlY3RvckNhbGxiYWNrJiYgY2FsbGJhY2ssIFZvaWRDYWxsYmFjayYm
IGZhaWx1cmVDYWxsYmFjaywgRXhjZXB0aW9uQ29kZSYgZWMpCit2b2lkIENyeXB0b0FsZ29yaXRo
bVJTQUVTX1BLQ1MxX3YxXzU6OmRlY3J5cHQoY29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVy
c0RlcHJlY2F0ZWQmLCBjb25zdCBDcnlwdG9LZXkmIGtleSwgY29uc3QgQnVmZmVyU291cmNlJiBk
YXRhLCBWZWN0b3JDYWxsYmFjayYmIGNhbGxiYWNrLCBWb2lkQ2FsbGJhY2smJiBmYWlsdXJlQ2Fs
bGJhY2ssIEV4Y2VwdGlvbkNvZGUmIGVjKQogewogICAgIGlmICgha2V5QWxnb3JpdGhtTWF0Y2hl
cyhrZXkpKSB7CiAgICAgICAgIGVjID0gTk9UX1NVUFBPUlRFRF9FUlI7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1SU0FFU19QS0NT
MV92MV81LmggYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0
aG1SU0FFU19QS0NTMV92MV81LmgKaW5kZXggOGVhM2I3MzFjZTliMWIyYTVjZWEyZGQ2NzVlMjcx
ZWRlMTNiZmVmNi4uZDgzZTFhYTU3MjM0YWEwYWQ0OWM0YmFjODRmNzYzNzNhMjZjYWQzZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGht
UlNBRVNfUEtDUzFfdjFfNS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1z
L0NyeXB0b0FsZ29yaXRobVJTQUVTX1BLQ1MxX3YxXzUuaApAQCAtNDQsOCArNDQsOCBAQCBwdWJs
aWM6CiAKICAgICBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyIGlkZW50aWZpZXIoKSBjb25zdCBv
dmVycmlkZTsKIAotICAgIHZvaWQgZW5jcnlwdChjb25zdCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0
ZXJzRGVwcmVjYXRlZCYsIGNvbnN0IENyeXB0b0tleSYsIGNvbnN0IENyeXB0b09wZXJhdGlvbkRh
dGEmLCBWZWN0b3JDYWxsYmFjayYmLCBWb2lkQ2FsbGJhY2smJiBmYWlsdXJlQ2FsbGJhY2ssIEV4
Y2VwdGlvbkNvZGUmKSBvdmVycmlkZTsKLSAgICB2b2lkIGRlY3J5cHQoY29uc3QgQ3J5cHRvQWxn
b3JpdGhtUGFyYW1ldGVyc0RlcHJlY2F0ZWQmLCBjb25zdCBDcnlwdG9LZXkmLCBjb25zdCBDcnlw
dG9PcGVyYXRpb25EYXRhJiwgVmVjdG9yQ2FsbGJhY2smJiwgVm9pZENhbGxiYWNrJiYgZmFpbHVy
ZUNhbGxiYWNrLCBFeGNlcHRpb25Db2RlJikgb3ZlcnJpZGU7CisgICAgdm9pZCBlbmNyeXB0KGNv
bnN0IENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnNEZXByZWNhdGVkJiwgY29uc3QgQ3J5cHRvS2V5
JiwgY29uc3QgQnVmZmVyU291cmNlJiwgVmVjdG9yQ2FsbGJhY2smJiwgVm9pZENhbGxiYWNrJiYg
ZmFpbHVyZUNhbGxiYWNrLCBFeGNlcHRpb25Db2RlJikgb3ZlcnJpZGU7CisgICAgdm9pZCBkZWNy
eXB0KGNvbnN0IENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnNEZXByZWNhdGVkJiwgY29uc3QgQ3J5
cHRvS2V5JiwgY29uc3QgQnVmZmVyU291cmNlJiwgVmVjdG9yQ2FsbGJhY2smJiwgVm9pZENhbGxi
YWNrJiYgZmFpbHVyZUNhbGxiYWNrLCBFeGNlcHRpb25Db2RlJikgb3ZlcnJpZGU7CiAgICAgdm9p
ZCBnZW5lcmF0ZUtleShjb25zdCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzRGVwcmVjYXRlZCYs
IGJvb2wgZXh0cmFjdGFibGUsIENyeXB0b0tleVVzYWdlLCBLZXlPcktleVBhaXJDYWxsYmFjayYm
LCBWb2lkQ2FsbGJhY2smJiBmYWlsdXJlQ2FsbGJhY2ssIEV4Y2VwdGlvbkNvZGUmKSBvdmVycmlk
ZTsKICAgICB2b2lkIGltcG9ydEtleShjb25zdCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzRGVw
cmVjYXRlZCYsIGNvbnN0IENyeXB0b0tleURhdGEmLCBib29sIGV4dHJhY3RhYmxlLCBDcnlwdG9L
ZXlVc2FnZSwgS2V5Q2FsbGJhY2smJiwgVm9pZENhbGxiYWNrJiYgZmFpbHVyZUNhbGxiYWNrLCBF
eGNlcHRpb25Db2RlJikgb3ZlcnJpZGU7CiAKQEAgLTU0LDggKzU0LDggQEAgcHJpdmF0ZToKICAg
ICB2aXJ0dWFsIH5DcnlwdG9BbGdvcml0aG1SU0FFU19QS0NTMV92MV81KCk7CiAKICAgICBib29s
IGtleUFsZ29yaXRobU1hdGNoZXMoY29uc3QgQ3J5cHRvS2V5JikgY29uc3Q7Ci0gICAgdm9pZCBw
bGF0Zm9ybUVuY3J5cHQoY29uc3QgQ3J5cHRvS2V5UlNBJiwgY29uc3QgQ3J5cHRvT3BlcmF0aW9u
RGF0YSYsIFZlY3RvckNhbGxiYWNrJiYsIFZvaWRDYWxsYmFjayYmIGZhaWx1cmVDYWxsYmFjaywg
RXhjZXB0aW9uQ29kZSYpOwotICAgIHZvaWQgcGxhdGZvcm1EZWNyeXB0KGNvbnN0IENyeXB0b0tl
eVJTQSYsIGNvbnN0IENyeXB0b09wZXJhdGlvbkRhdGEmLCBWZWN0b3JDYWxsYmFjayYmLCBWb2lk
Q2FsbGJhY2smJiBmYWlsdXJlQ2FsbGJhY2ssIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICB2b2lkIHBs
YXRmb3JtRW5jcnlwdChjb25zdCBDcnlwdG9LZXlSU0EmLCBjb25zdCBCdWZmZXJTb3VyY2UmLCBW
ZWN0b3JDYWxsYmFjayYmLCBWb2lkQ2FsbGJhY2smJiBmYWlsdXJlQ2FsbGJhY2ssIEV4Y2VwdGlv
bkNvZGUmKTsKKyAgICB2b2lkIHBsYXRmb3JtRGVjcnlwdChjb25zdCBDcnlwdG9LZXlSU0EmLCBj
b25zdCBCdWZmZXJTb3VyY2UmLCBWZWN0b3JDYWxsYmFjayYmLCBWb2lkQ2FsbGJhY2smJiBmYWls
dXJlQ2FsbGJhY2ssIEV4Y2VwdGlvbkNvZGUmKTsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVJTQVNTQV9QS0NTMV92
MV81LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRo
bVJTQVNTQV9QS0NTMV92MV81LmNwcAppbmRleCBiM2Y4NjJlYjc2ZWE0NDEwNTJhYzM0ODM2NWFl
Y2Q0ZmNkYjFhZDdmLi40MWY2YzAyZjQ1OWExNjJjNzQ2MGM4YzBiMDBjYjgyOGQ0OGFhMDFiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0
aG1SU0FTU0FfUEtDUzFfdjFfNS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29y
aXRobXMvQ3J5cHRvQWxnb3JpdGhtUlNBU1NBX1BLQ1MxX3YxXzUuY3BwCkBAIC02OSw3ICs2OSw3
IEBAIGJvb2wgQ3J5cHRvQWxnb3JpdGhtUlNBU1NBX1BLQ1MxX3YxXzU6OmtleUFsZ29yaXRobU1h
dGNoZXMoY29uc3QgQ3J5cHRvQWxnb3JpdGhtCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXZvaWQg
Q3J5cHRvQWxnb3JpdGhtUlNBU1NBX1BLQ1MxX3YxXzU6OnNpZ24oY29uc3QgQ3J5cHRvQWxnb3Jp
dGhtUGFyYW1ldGVyc0RlcHJlY2F0ZWQmIHBhcmFtZXRlcnMsIGNvbnN0IENyeXB0b0tleSYga2V5
LCBjb25zdCBDcnlwdG9PcGVyYXRpb25EYXRhJiBkYXRhLCBWZWN0b3JDYWxsYmFjayYmIGNhbGxi
YWNrLCBWb2lkQ2FsbGJhY2smJiBmYWlsdXJlQ2FsbGJhY2ssIEV4Y2VwdGlvbkNvZGUmIGVjKQor
dm9pZCBDcnlwdG9BbGdvcml0aG1SU0FTU0FfUEtDUzFfdjFfNTo6c2lnbihjb25zdCBDcnlwdG9B
bGdvcml0aG1QYXJhbWV0ZXJzRGVwcmVjYXRlZCYgcGFyYW1ldGVycywgY29uc3QgQ3J5cHRvS2V5
JiBrZXksIGNvbnN0IEJ1ZmZlclNvdXJjZSYgZGF0YSwgVmVjdG9yQ2FsbGJhY2smJiBjYWxsYmFj
aywgVm9pZENhbGxiYWNrJiYgZmFpbHVyZUNhbGxiYWNrLCBFeGNlcHRpb25Db2RlJiBlYykKIHsK
ICAgICBjb25zdCBDcnlwdG9BbGdvcml0aG1Sc2FTc2FQYXJhbXNEZXByZWNhdGVkJiByc2FTU0FQ
YXJhbWV0ZXJzID0gZG93bmNhc3Q8Q3J5cHRvQWxnb3JpdGhtUnNhU3NhUGFyYW1zRGVwcmVjYXRl
ZD4ocGFyYW1ldGVycyk7CiAKQEAgLTgxLDcgKzgxLDcgQEAgdm9pZCBDcnlwdG9BbGdvcml0aG1S
U0FTU0FfUEtDUzFfdjFfNTo6c2lnbihjb25zdCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzRGVw
cmUKICAgICBwbGF0Zm9ybVNpZ24ocnNhU1NBUGFyYW1ldGVycywgZG93bmNhc3Q8Q3J5cHRvS2V5
UlNBPihrZXkpLCBkYXRhLCBXVEZNb3ZlKGNhbGxiYWNrKSwgV1RGTW92ZShmYWlsdXJlQ2FsbGJh
Y2spLCBlYyk7CiB9CiAKLXZvaWQgQ3J5cHRvQWxnb3JpdGhtUlNBU1NBX1BLQ1MxX3YxXzU6OnZl
cmlmeShjb25zdCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzRGVwcmVjYXRlZCYgcGFyYW1ldGVy
cywgY29uc3QgQ3J5cHRvS2V5JiBrZXksIGNvbnN0IENyeXB0b09wZXJhdGlvbkRhdGEmIHNpZ25h
dHVyZSwgY29uc3QgQ3J5cHRvT3BlcmF0aW9uRGF0YSYgZGF0YSwgQm9vbENhbGxiYWNrJiYgY2Fs
bGJhY2ssIFZvaWRDYWxsYmFjayYmIGZhaWx1cmVDYWxsYmFjaywgRXhjZXB0aW9uQ29kZSYgZWMp
Cit2b2lkIENyeXB0b0FsZ29yaXRobVJTQVNTQV9QS0NTMV92MV81Ojp2ZXJpZnkoY29uc3QgQ3J5
cHRvQWxnb3JpdGhtUGFyYW1ldGVyc0RlcHJlY2F0ZWQmIHBhcmFtZXRlcnMsIGNvbnN0IENyeXB0
b0tleSYga2V5LCBjb25zdCBCdWZmZXJTb3VyY2UmIHNpZ25hdHVyZSwgY29uc3QgQnVmZmVyU291
cmNlJiBkYXRhLCBCb29sQ2FsbGJhY2smJiBjYWxsYmFjaywgVm9pZENhbGxiYWNrJiYgZmFpbHVy
ZUNhbGxiYWNrLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBjb25zdCBDcnlwdG9BbGdvcml0
aG1Sc2FTc2FQYXJhbXNEZXByZWNhdGVkJiByc2FTU0FQYXJhbWV0ZXJzID0gZG93bmNhc3Q8Q3J5
cHRvQWxnb3JpdGhtUnNhU3NhUGFyYW1zRGVwcmVjYXRlZD4ocGFyYW1ldGVycyk7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVJT
QVNTQV9QS0NTMV92MV81LmggYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9Dcnlw
dG9BbGdvcml0aG1SU0FTU0FfUEtDUzFfdjFfNS5oCmluZGV4IGQwNmY3NmJkYmNlNGMxNzhkZWM3
MjAzODNkMDcyMWY1ZTNhNGE4MDAuLjRkODA2NGVkYzc1MDMyZmY2Zjc0NTIyZWEwZWYxMjRjODIz
MmMzY2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0
b0FsZ29yaXRobVJTQVNTQV9QS0NTMV92MV81LmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3J5cHRv
L2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtUlNBU1NBX1BLQ1MxX3YxXzUuaApAQCAtNDQsOCAr
NDQsOCBAQCBwdWJsaWM6CiAKICAgICBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyIGlkZW50aWZp
ZXIoKSBjb25zdCBvdmVycmlkZTsKIAotICAgIHZvaWQgc2lnbihjb25zdCBDcnlwdG9BbGdvcml0
aG1QYXJhbWV0ZXJzRGVwcmVjYXRlZCYsIGNvbnN0IENyeXB0b0tleSYsIGNvbnN0IENyeXB0b09w
ZXJhdGlvbkRhdGEmLCBWZWN0b3JDYWxsYmFjayYmLCBWb2lkQ2FsbGJhY2smJiBmYWlsdXJlQ2Fs
bGJhY2ssIEV4Y2VwdGlvbkNvZGUmKSBvdmVycmlkZTsKLSAgICB2b2lkIHZlcmlmeShjb25zdCBD
cnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzRGVwcmVjYXRlZCYsIGNvbnN0IENyeXB0b0tleSYsIGNv
bnN0IENyeXB0b09wZXJhdGlvbkRhdGEmIHNpZ25hdHVyZSwgY29uc3QgQ3J5cHRvT3BlcmF0aW9u
RGF0YSYsIEJvb2xDYWxsYmFjayYmLCBWb2lkQ2FsbGJhY2smJiBmYWlsdXJlQ2FsbGJhY2ssIEV4
Y2VwdGlvbkNvZGUmKSBvdmVycmlkZTsKKyAgICB2b2lkIHNpZ24oY29uc3QgQ3J5cHRvQWxnb3Jp
dGhtUGFyYW1ldGVyc0RlcHJlY2F0ZWQmLCBjb25zdCBDcnlwdG9LZXkmLCBjb25zdCBCdWZmZXJT
b3VyY2UmLCBWZWN0b3JDYWxsYmFjayYmLCBWb2lkQ2FsbGJhY2smJiBmYWlsdXJlQ2FsbGJhY2ss
IEV4Y2VwdGlvbkNvZGUmKSBvdmVycmlkZTsKKyAgICB2b2lkIHZlcmlmeShjb25zdCBDcnlwdG9B
bGdvcml0aG1QYXJhbWV0ZXJzRGVwcmVjYXRlZCYsIGNvbnN0IENyeXB0b0tleSYsIGNvbnN0IEJ1
ZmZlclNvdXJjZSYgc2lnbmF0dXJlLCBjb25zdCBCdWZmZXJTb3VyY2UmLCBCb29sQ2FsbGJhY2sm
JiwgVm9pZENhbGxiYWNrJiYgZmFpbHVyZUNhbGxiYWNrLCBFeGNlcHRpb25Db2RlJikgb3ZlcnJp
ZGU7CiAgICAgdm9pZCBnZW5lcmF0ZUtleShjb25zdCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJz
RGVwcmVjYXRlZCYsIGJvb2wgZXh0cmFjdGFibGUsIENyeXB0b0tleVVzYWdlLCBLZXlPcktleVBh
aXJDYWxsYmFjayYmLCBWb2lkQ2FsbGJhY2smJiBmYWlsdXJlQ2FsbGJhY2ssIEV4Y2VwdGlvbkNv
ZGUmKSBvdmVycmlkZTsKICAgICB2b2lkIGltcG9ydEtleShjb25zdCBDcnlwdG9BbGdvcml0aG1Q
YXJhbWV0ZXJzRGVwcmVjYXRlZCYsIGNvbnN0IENyeXB0b0tleURhdGEmLCBib29sIGV4dHJhY3Rh
YmxlLCBDcnlwdG9LZXlVc2FnZSwgS2V5Q2FsbGJhY2smJiwgVm9pZENhbGxiYWNrJiYgZmFpbHVy
ZUNhbGxiYWNrLCBFeGNlcHRpb25Db2RlJikgb3ZlcnJpZGU7CiAKQEAgLTU0LDggKzU0LDggQEAg
cHJpdmF0ZToKICAgICB2aXJ0dWFsIH5DcnlwdG9BbGdvcml0aG1SU0FTU0FfUEtDUzFfdjFfNSgp
OwogCiAgICAgYm9vbCBrZXlBbGdvcml0aG1NYXRjaGVzKGNvbnN0IENyeXB0b0FsZ29yaXRobVJz
YVNzYVBhcmFtc0RlcHJlY2F0ZWQmIGFsZ29yaXRobVBhcmFtZXRlcnMsIGNvbnN0IENyeXB0b0tl
eSYpIGNvbnN0OwotICAgIHZvaWQgcGxhdGZvcm1TaWduKGNvbnN0IENyeXB0b0FsZ29yaXRobVJz
YVNzYVBhcmFtc0RlcHJlY2F0ZWQmLCBjb25zdCBDcnlwdG9LZXlSU0EmLCBjb25zdCBDcnlwdG9P
cGVyYXRpb25EYXRhJiwgVmVjdG9yQ2FsbGJhY2smJiwgVm9pZENhbGxiYWNrJiYgZmFpbHVyZUNh
bGxiYWNrLCBFeGNlcHRpb25Db2RlJik7Ci0gICAgdm9pZCBwbGF0Zm9ybVZlcmlmeShjb25zdCBD
cnlwdG9BbGdvcml0aG1Sc2FTc2FQYXJhbXNEZXByZWNhdGVkJiwgY29uc3QgQ3J5cHRvS2V5UlNB
JiwgY29uc3QgQ3J5cHRvT3BlcmF0aW9uRGF0YSYgc2lnbmF0dXJlLCBjb25zdCBDcnlwdG9PcGVy
YXRpb25EYXRhJiwgQm9vbENhbGxiYWNrJiYsIFZvaWRDYWxsYmFjayYmIGZhaWx1cmVDYWxsYmFj
aywgRXhjZXB0aW9uQ29kZSYpOworICAgIHZvaWQgcGxhdGZvcm1TaWduKGNvbnN0IENyeXB0b0Fs
Z29yaXRobVJzYVNzYVBhcmFtc0RlcHJlY2F0ZWQmLCBjb25zdCBDcnlwdG9LZXlSU0EmLCBjb25z
dCBCdWZmZXJTb3VyY2UmLCBWZWN0b3JDYWxsYmFjayYmLCBWb2lkQ2FsbGJhY2smJiBmYWlsdXJl
Q2FsbGJhY2ssIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICB2b2lkIHBsYXRmb3JtVmVyaWZ5KGNvbnN0
IENyeXB0b0FsZ29yaXRobVJzYVNzYVBhcmFtc0RlcHJlY2F0ZWQmLCBjb25zdCBDcnlwdG9LZXlS
U0EmLCBjb25zdCBCdWZmZXJTb3VyY2UmIHNpZ25hdHVyZSwgY29uc3QgQnVmZmVyU291cmNlJiwg
Qm9vbENhbGxiYWNrJiYsIFZvaWRDYWxsYmFjayYmIGZhaWx1cmVDYWxsYmFjaywgRXhjZXB0aW9u
Q29kZSYpOwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29y
aXRobXMvQ3J5cHRvQWxnb3JpdGhtUlNBX09BRVAuY3BwIGIvU291cmNlL1dlYkNvcmUvY3J5cHRv
L2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtUlNBX09BRVAuY3BwCmluZGV4IDIyNTU5MWM4ODQ3
NDU2MmZhYjk3M2YxMDcyZjZmY2FjYjJmMjU3MGYuLjBlNTQ2OGM1MzY3ZTY3MTk5MGJiZjY4MzM4
OGU1NDliNmFmYjc4NzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0
aG1zL0NyeXB0b0FsZ29yaXRobVJTQV9PQUVQLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jcnlw
dG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1SU0FfT0FFUC5jcHAKQEAgLTY5LDcgKzY5LDcg
QEAgYm9vbCBDcnlwdG9BbGdvcml0aG1SU0FfT0FFUDo6a2V5QWxnb3JpdGhtTWF0Y2hlcyhjb25z
dCBDcnlwdG9BbGdvcml0aG1Sc2FPYWVwUGEKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdm9pZCBD
cnlwdG9BbGdvcml0aG1SU0FfT0FFUDo6ZW5jcnlwdChjb25zdCBDcnlwdG9BbGdvcml0aG1QYXJh
bWV0ZXJzRGVwcmVjYXRlZCYgcGFyYW1ldGVycywgY29uc3QgQ3J5cHRvS2V5JiBrZXksIGNvbnN0
IENyeXB0b09wZXJhdGlvbkRhdGEmIGRhdGEsIFZlY3RvckNhbGxiYWNrJiYgY2FsbGJhY2ssIFZv
aWRDYWxsYmFjayYmIGZhaWx1cmVDYWxsYmFjaywgRXhjZXB0aW9uQ29kZSYgZWMpCit2b2lkIENy
eXB0b0FsZ29yaXRobVJTQV9PQUVQOjplbmNyeXB0KGNvbnN0IENyeXB0b0FsZ29yaXRobVBhcmFt
ZXRlcnNEZXByZWNhdGVkJiBwYXJhbWV0ZXJzLCBjb25zdCBDcnlwdG9LZXkmIGtleSwgY29uc3Qg
QnVmZmVyU291cmNlJiBkYXRhLCBWZWN0b3JDYWxsYmFjayYmIGNhbGxiYWNrLCBWb2lkQ2FsbGJh
Y2smJiBmYWlsdXJlQ2FsbGJhY2ssIEV4Y2VwdGlvbkNvZGUmIGVjKQogewogICAgIGNvbnN0IENy
eXB0b0FsZ29yaXRobVJzYU9hZXBQYXJhbXNEZXByZWNhdGVkJiByc2FPQUVQUGFyYW1ldGVycyA9
IGRvd25jYXN0PENyeXB0b0FsZ29yaXRobVJzYU9hZXBQYXJhbXNEZXByZWNhdGVkPihwYXJhbWV0
ZXJzKTsKIApAQCAtODEsNyArODEsNyBAQCB2b2lkIENyeXB0b0FsZ29yaXRobVJTQV9PQUVQOjpl
bmNyeXB0KGNvbnN0IENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnNEZXByZWNhdGVkJgogICAgIHBs
YXRmb3JtRW5jcnlwdChyc2FPQUVQUGFyYW1ldGVycywgZG93bmNhc3Q8Q3J5cHRvS2V5UlNBPihr
ZXkpLCBkYXRhLCBXVEZNb3ZlKGNhbGxiYWNrKSwgV1RGTW92ZShmYWlsdXJlQ2FsbGJhY2spLCBl
Yyk7CiB9CiAKLXZvaWQgQ3J5cHRvQWxnb3JpdGhtUlNBX09BRVA6OmRlY3J5cHQoY29uc3QgQ3J5
cHRvQWxnb3JpdGhtUGFyYW1ldGVyc0RlcHJlY2F0ZWQmIHBhcmFtZXRlcnMsIGNvbnN0IENyeXB0
b0tleSYga2V5LCBjb25zdCBDcnlwdG9PcGVyYXRpb25EYXRhJiBkYXRhLCBWZWN0b3JDYWxsYmFj
ayYmIGNhbGxiYWNrLCBWb2lkQ2FsbGJhY2smJiBmYWlsdXJlQ2FsbGJhY2ssIEV4Y2VwdGlvbkNv
ZGUmIGVjKQordm9pZCBDcnlwdG9BbGdvcml0aG1SU0FfT0FFUDo6ZGVjcnlwdChjb25zdCBDcnlw
dG9BbGdvcml0aG1QYXJhbWV0ZXJzRGVwcmVjYXRlZCYgcGFyYW1ldGVycywgY29uc3QgQ3J5cHRv
S2V5JiBrZXksIGNvbnN0IEJ1ZmZlclNvdXJjZSYgZGF0YSwgVmVjdG9yQ2FsbGJhY2smJiBjYWxs
YmFjaywgVm9pZENhbGxiYWNrJiYgZmFpbHVyZUNhbGxiYWNrLCBFeGNlcHRpb25Db2RlJiBlYykK
IHsKICAgICBjb25zdCBDcnlwdG9BbGdvcml0aG1Sc2FPYWVwUGFyYW1zRGVwcmVjYXRlZCYgcnNh
T0FFUFBhcmFtZXRlcnMgPSBkb3duY2FzdDxDcnlwdG9BbGdvcml0aG1Sc2FPYWVwUGFyYW1zRGVw
cmVjYXRlZD4ocGFyYW1ldGVycyk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0
by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVJTQV9PQUVQLmggYi9Tb3VyY2UvV2ViQ29yZS9j
cnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1SU0FfT0FFUC5oCmluZGV4IDBlYjY5OTY2
YTk5YzNkYTljZDcxMWQ3ODE4ZmQ4NzZhOGEyYzM1NjkuLjg4YWRlNGI0NGZiZmJhMTNiY2U1YTFm
ZDVkY2JhZjljMWNkMzZmZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdv
cml0aG1zL0NyeXB0b0FsZ29yaXRobVJTQV9PQUVQLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3J5
cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtUlNBX09BRVAuaApAQCAtNDQsOCArNDQsOCBA
QCBwdWJsaWM6CiAKICAgICBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyIGlkZW50aWZpZXIoKSBj
b25zdCBvdmVycmlkZTsKIAotICAgIHZvaWQgZW5jcnlwdChjb25zdCBDcnlwdG9BbGdvcml0aG1Q
YXJhbWV0ZXJzRGVwcmVjYXRlZCYsIGNvbnN0IENyeXB0b0tleSYsIGNvbnN0IENyeXB0b09wZXJh
dGlvbkRhdGEmLCBWZWN0b3JDYWxsYmFjayYmLCBWb2lkQ2FsbGJhY2smJiBmYWlsdXJlQ2FsbGJh
Y2ssIEV4Y2VwdGlvbkNvZGUmKSBvdmVycmlkZTsKLSAgICB2b2lkIGRlY3J5cHQoY29uc3QgQ3J5
cHRvQWxnb3JpdGhtUGFyYW1ldGVyc0RlcHJlY2F0ZWQmLCBjb25zdCBDcnlwdG9LZXkmLCBjb25z
dCBDcnlwdG9PcGVyYXRpb25EYXRhJiwgVmVjdG9yQ2FsbGJhY2smJiwgVm9pZENhbGxiYWNrJiYg
ZmFpbHVyZUNhbGxiYWNrLCBFeGNlcHRpb25Db2RlJikgb3ZlcnJpZGU7CisgICAgdm9pZCBlbmNy
eXB0KGNvbnN0IENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnNEZXByZWNhdGVkJiwgY29uc3QgQ3J5
cHRvS2V5JiwgY29uc3QgQnVmZmVyU291cmNlJiwgVmVjdG9yQ2FsbGJhY2smJiwgVm9pZENhbGxi
YWNrJiYgZmFpbHVyZUNhbGxiYWNrLCBFeGNlcHRpb25Db2RlJikgb3ZlcnJpZGU7CisgICAgdm9p
ZCBkZWNyeXB0KGNvbnN0IENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnNEZXByZWNhdGVkJiwgY29u
c3QgQ3J5cHRvS2V5JiwgY29uc3QgQnVmZmVyU291cmNlJiwgVmVjdG9yQ2FsbGJhY2smJiwgVm9p
ZENhbGxiYWNrJiYgZmFpbHVyZUNhbGxiYWNrLCBFeGNlcHRpb25Db2RlJikgb3ZlcnJpZGU7CiAg
ICAgdm9pZCBnZW5lcmF0ZUtleShjb25zdCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzRGVwcmVj
YXRlZCYsIGJvb2wgZXh0cmFjdGFibGUsIENyeXB0b0tleVVzYWdlLCBLZXlPcktleVBhaXJDYWxs
YmFjayYmLCBWb2lkQ2FsbGJhY2smJiBmYWlsdXJlQ2FsbGJhY2ssIEV4Y2VwdGlvbkNvZGUmKSBv
dmVycmlkZTsKICAgICB2b2lkIGltcG9ydEtleShjb25zdCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0
ZXJzRGVwcmVjYXRlZCYsIGNvbnN0IENyeXB0b0tleURhdGEmLCBib29sIGV4dHJhY3RhYmxlLCBD
cnlwdG9LZXlVc2FnZSwgS2V5Q2FsbGJhY2smJiwgVm9pZENhbGxiYWNrJiYgZmFpbHVyZUNhbGxi
YWNrLCBFeGNlcHRpb25Db2RlJikgb3ZlcnJpZGU7CiAKQEAgLTU0LDggKzU0LDggQEAgcHJpdmF0
ZToKICAgICB2aXJ0dWFsIH5DcnlwdG9BbGdvcml0aG1SU0FfT0FFUCgpOwogCiAgICAgYm9vbCBr
ZXlBbGdvcml0aG1NYXRjaGVzKGNvbnN0IENyeXB0b0FsZ29yaXRobVJzYU9hZXBQYXJhbXNEZXBy
ZWNhdGVkJiBhbGdvcml0aG1QYXJhbWV0ZXJzLCBjb25zdCBDcnlwdG9LZXkmKSBjb25zdDsKLSAg
ICB2b2lkIHBsYXRmb3JtRW5jcnlwdChjb25zdCBDcnlwdG9BbGdvcml0aG1Sc2FPYWVwUGFyYW1z
RGVwcmVjYXRlZCYsIGNvbnN0IENyeXB0b0tleVJTQSYsIGNvbnN0IENyeXB0b09wZXJhdGlvbkRh
dGEmLCBWZWN0b3JDYWxsYmFjayYmLCBWb2lkQ2FsbGJhY2smJiBmYWlsdXJlQ2FsbGJhY2ssIEV4
Y2VwdGlvbkNvZGUmKTsKLSAgICB2b2lkIHBsYXRmb3JtRGVjcnlwdChjb25zdCBDcnlwdG9BbGdv
cml0aG1Sc2FPYWVwUGFyYW1zRGVwcmVjYXRlZCYsIGNvbnN0IENyeXB0b0tleVJTQSYsIGNvbnN0
IENyeXB0b09wZXJhdGlvbkRhdGEmLCBWZWN0b3JDYWxsYmFjayYmLCBWb2lkQ2FsbGJhY2smJiBm
YWlsdXJlQ2FsbGJhY2ssIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICB2b2lkIHBsYXRmb3JtRW5jcnlw
dChjb25zdCBDcnlwdG9BbGdvcml0aG1Sc2FPYWVwUGFyYW1zRGVwcmVjYXRlZCYsIGNvbnN0IENy
eXB0b0tleVJTQSYsIGNvbnN0IEJ1ZmZlclNvdXJjZSYsIFZlY3RvckNhbGxiYWNrJiYsIFZvaWRD
YWxsYmFjayYmIGZhaWx1cmVDYWxsYmFjaywgRXhjZXB0aW9uQ29kZSYpOworICAgIHZvaWQgcGxh
dGZvcm1EZWNyeXB0KGNvbnN0IENyeXB0b0FsZ29yaXRobVJzYU9hZXBQYXJhbXNEZXByZWNhdGVk
JiwgY29uc3QgQ3J5cHRvS2V5UlNBJiwgY29uc3QgQnVmZmVyU291cmNlJiwgVmVjdG9yQ2FsbGJh
Y2smJiwgVm9pZENhbGxiYWNrJiYgZmFpbHVyZUNhbGxiYWNrLCBFeGNlcHRpb25Db2RlJik7CiB9
OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9Dcnlw
dG9BbGdvcml0aG1TSEExLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0Ny
eXB0b0FsZ29yaXRobVNIQTEuY3BwCmluZGV4IDcyOTc5NmRlMzE0YWY1Nzg4ODQzOTdlODE1NmFk
OTdjN2FjNDQwNjMuLmZlODk0MzE0NzBmY2MzMDk5NTBlNmJjMGY3N2E5ZDJlMzIyY2MwNTggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRo
bVNIQTEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0Fs
Z29yaXRobVNIQTEuY3BwCkBAIC01Miw3ICs1Miw3IEBAIENyeXB0b0FsZ29yaXRobUlkZW50aWZp
ZXIgQ3J5cHRvQWxnb3JpdGhtU0hBMTo6aWRlbnRpZmllcigpIGNvbnN0CiAgICAgcmV0dXJuIHNf
aWRlbnRpZmllcjsKIH0KIAotdm9pZCBDcnlwdG9BbGdvcml0aG1TSEExOjpkaWdlc3QoY29uc3Qg
Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVyc0RlcHJlY2F0ZWQmLCBjb25zdCBDcnlwdG9PcGVyYXRp
b25EYXRhJiBkYXRhLCBWZWN0b3JDYWxsYmFjayYmIGNhbGxiYWNrLCBWb2lkQ2FsbGJhY2smJiBm
YWlsdXJlQ2FsbGJhY2ssIEV4Y2VwdGlvbkNvZGUmKQordm9pZCBDcnlwdG9BbGdvcml0aG1TSEEx
OjpkaWdlc3QoY29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVyc0RlcHJlY2F0ZWQmLCBjb25z
dCBCdWZmZXJTb3VyY2UmIGRhdGEsIFZlY3RvckNhbGxiYWNrJiYgY2FsbGJhY2ssIFZvaWRDYWxs
YmFjayYmIGZhaWx1cmVDYWxsYmFjaywgRXhjZXB0aW9uQ29kZSYpCiB7CiAgICAgc3RkOjp1bmlx
dWVfcHRyPENyeXB0b0RpZ2VzdD4gZGlnZXN0ID0gQ3J5cHRvRGlnZXN0OjpjcmVhdGUoQ3J5cHRv
RGlnZXN0OjpBbGdvcml0aG06OlNIQV8xKTsKICAgICBpZiAoIWRpZ2VzdCkgewpAQCAtNjAsNyAr
NjAsNyBAQCB2b2lkIENyeXB0b0FsZ29yaXRobVNIQTE6OmRpZ2VzdChjb25zdCBDcnlwdG9BbGdv
cml0aG1QYXJhbWV0ZXJzRGVwcmVjYXRlZCYsIGNvbgogICAgICAgICByZXR1cm47CiAgICAgfQog
Ci0gICAgZGlnZXN0LT5hZGRCeXRlcyhkYXRhLmZpcnN0LCBkYXRhLnNlY29uZCk7CisgICAgZGln
ZXN0LT5hZGRCeXRlcyhkYXRhLmRhdGEsIGRhdGEubGVuZ3RoKTsKIAogICAgIGNhbGxiYWNrKGRp
Z2VzdC0+Y29tcHV0ZUhhc2goKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlw
dG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1TSEExLmggYi9Tb3VyY2UvV2ViQ29yZS9jcnlw
dG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1TSEExLmgKaW5kZXggZjUyNDBiMjNmN2E2YWUx
NGZiNjZkYTM3NTZkMDViMWIwYWYyZWE5MC4uZWM3ZGRjNGM1YWZmM2M1NDEyYTU4MDJjYTNkODgx
YzI3ZmExZWZjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMv
Q3J5cHRvQWxnb3JpdGhtU0hBMS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0
aG1zL0NyeXB0b0FsZ29yaXRobVNIQTEuaApAQCAtNDEsNyArNDEsNyBAQCBwdWJsaWM6CiAKICAg
ICBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyIGlkZW50aWZpZXIoKSBjb25zdCBvdmVycmlkZTsK
IAotICAgIHZvaWQgZGlnZXN0KGNvbnN0IENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnNEZXByZWNh
dGVkJiwgY29uc3QgQ3J5cHRvT3BlcmF0aW9uRGF0YSYsIFZlY3RvckNhbGxiYWNrJiYsIFZvaWRD
YWxsYmFjayYmIGZhaWx1cmVDYWxsYmFjaywgRXhjZXB0aW9uQ29kZSYpIG92ZXJyaWRlOworICAg
IHZvaWQgZGlnZXN0KGNvbnN0IENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnNEZXByZWNhdGVkJiwg
Y29uc3QgQnVmZmVyU291cmNlJiwgVmVjdG9yQ2FsbGJhY2smJiwgVm9pZENhbGxiYWNrJiYgZmFp
bHVyZUNhbGxiYWNrLCBFeGNlcHRpb25Db2RlJikgb3ZlcnJpZGU7CiAKIHByaXZhdGU6CiAgICAg
Q3J5cHRvQWxnb3JpdGhtU0hBMSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3J5cHRv
L2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtU0hBMjI0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Ny
eXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVNIQTIyNC5jcHAKaW5kZXggZmE4MGZjNmRj
NDVkNjBkNDY3OTgxMGRhYzhmODQ2ZGE0MDA1MmU5NS4uNzE1MjZmYzJkMGYxNTViY2ViZDQwMjdm
Y2MwY2JmN2E2YzQzMjU2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29y
aXRobXMvQ3J5cHRvQWxnb3JpdGhtU0hBMjI0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jcnlw
dG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1TSEEyMjQuY3BwCkBAIC01Miw3ICs1Miw3IEBA
IENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXIgQ3J5cHRvQWxnb3JpdGhtU0hBMjI0OjppZGVudGlm
aWVyKCkgY29uc3QKICAgICByZXR1cm4gc19pZGVudGlmaWVyOwogfQogCi12b2lkIENyeXB0b0Fs
Z29yaXRobVNIQTIyNDo6ZGlnZXN0KGNvbnN0IENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnNEZXBy
ZWNhdGVkJiwgY29uc3QgQ3J5cHRvT3BlcmF0aW9uRGF0YSYgZGF0YSwgVmVjdG9yQ2FsbGJhY2sm
JiBjYWxsYmFjaywgVm9pZENhbGxiYWNrJiYgZmFpbHVyZUNhbGxiYWNrLCBFeGNlcHRpb25Db2Rl
JikKK3ZvaWQgQ3J5cHRvQWxnb3JpdGhtU0hBMjI0OjpkaWdlc3QoY29uc3QgQ3J5cHRvQWxnb3Jp
dGhtUGFyYW1ldGVyc0RlcHJlY2F0ZWQmLCBjb25zdCBCdWZmZXJTb3VyY2UmIGRhdGEsIFZlY3Rv
ckNhbGxiYWNrJiYgY2FsbGJhY2ssIFZvaWRDYWxsYmFjayYmIGZhaWx1cmVDYWxsYmFjaywgRXhj
ZXB0aW9uQ29kZSYpCiB7CiAgICAgc3RkOjp1bmlxdWVfcHRyPENyeXB0b0RpZ2VzdD4gZGlnZXN0
ID0gQ3J5cHRvRGlnZXN0OjpjcmVhdGUoQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8yMjQp
OwogICAgIGlmICghZGlnZXN0KSB7CkBAIC02MCw3ICs2MCw3IEBAIHZvaWQgQ3J5cHRvQWxnb3Jp
dGhtU0hBMjI0OjpkaWdlc3QoY29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVyc0RlcHJlY2F0
ZWQmLCBjCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBkaWdlc3QtPmFkZEJ5dGVzKGRh
dGEuZmlyc3QsIGRhdGEuc2Vjb25kKTsKKyAgICBkaWdlc3QtPmFkZEJ5dGVzKGRhdGEuZGF0YSwg
ZGF0YS5sZW5ndGgpOwogCiAgICAgY2FsbGJhY2soZGlnZXN0LT5jb21wdXRlSGFzaCgpKTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29y
aXRobVNIQTIyNC5oIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxn
b3JpdGhtU0hBMjI0LmgKaW5kZXggZGZmNmQyMThlNjYyOTM4OWQ0YzFmMmM2MjM0MDk0ZDg1NTUw
NDNlNS4uMWZmNDJkMmQ1M2QwYWNlZTYxMjg3YWUyZjY2NjY4NWQyODc4MmQyMCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtU0hBMjI0
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGht
U0hBMjI0LmgKQEAgLTQxLDcgKzQxLDcgQEAgcHVibGljOgogCiAgICAgQ3J5cHRvQWxnb3JpdGht
SWRlbnRpZmllciBpZGVudGlmaWVyKCkgY29uc3Qgb3ZlcnJpZGU7CiAKLSAgICB2b2lkIGRpZ2Vz
dChjb25zdCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzRGVwcmVjYXRlZCYsIGNvbnN0IENyeXB0
b09wZXJhdGlvbkRhdGEmLCBWZWN0b3JDYWxsYmFjayYmLCBWb2lkQ2FsbGJhY2smJiBmYWlsdXJl
Q2FsbGJhY2ssIEV4Y2VwdGlvbkNvZGUmKSBvdmVycmlkZTsKKyAgICB2b2lkIGRpZ2VzdChjb25z
dCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzRGVwcmVjYXRlZCYsIGNvbnN0IEJ1ZmZlclNvdXJj
ZSYsIFZlY3RvckNhbGxiYWNrJiYsIFZvaWRDYWxsYmFjayYmIGZhaWx1cmVDYWxsYmFjaywgRXhj
ZXB0aW9uQ29kZSYpIG92ZXJyaWRlOwogCiBwcml2YXRlOgogICAgIENyeXB0b0FsZ29yaXRobVNI
QTIyNCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5
cHRvQWxnb3JpdGhtU0hBMjU2LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1z
L0NyeXB0b0FsZ29yaXRobVNIQTI1Ni5jcHAKaW5kZXggMzI0OTlhOTViNmUzZTc5NDljYzQyNzQ5
MGIxMzQ1ZjVmMWYwMDlhZS4uMTU4YmUzYTZiZjRmZDg1ZDAyYzA3YmFmZTExNTg4ZDFhODlhYmU5
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxn
b3JpdGhtU0hBMjU2LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9D
cnlwdG9BbGdvcml0aG1TSEEyNTYuY3BwCkBAIC01Miw3ICs1Miw3IEBAIENyeXB0b0FsZ29yaXRo
bUlkZW50aWZpZXIgQ3J5cHRvQWxnb3JpdGhtU0hBMjU2OjppZGVudGlmaWVyKCkgY29uc3QKICAg
ICByZXR1cm4gc19pZGVudGlmaWVyOwogfQogCi12b2lkIENyeXB0b0FsZ29yaXRobVNIQTI1Njo6
ZGlnZXN0KGNvbnN0IENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnNEZXByZWNhdGVkJiwgY29uc3Qg
Q3J5cHRvT3BlcmF0aW9uRGF0YSYgZGF0YSwgVmVjdG9yQ2FsbGJhY2smJiBjYWxsYmFjaywgVm9p
ZENhbGxiYWNrJiYgZmFpbHVyZUNhbGxiYWNrLCBFeGNlcHRpb25Db2RlJikKK3ZvaWQgQ3J5cHRv
QWxnb3JpdGhtU0hBMjU2OjpkaWdlc3QoY29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVyc0Rl
cHJlY2F0ZWQmLCBjb25zdCBCdWZmZXJTb3VyY2UmIGRhdGEsIFZlY3RvckNhbGxiYWNrJiYgY2Fs
bGJhY2ssIFZvaWRDYWxsYmFjayYmIGZhaWx1cmVDYWxsYmFjaywgRXhjZXB0aW9uQ29kZSYpCiB7
CiAgICAgc3RkOjp1bmlxdWVfcHRyPENyeXB0b0RpZ2VzdD4gZGlnZXN0ID0gQ3J5cHRvRGlnZXN0
OjpjcmVhdGUoQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8yNTYpOwogICAgIGlmICghZGln
ZXN0KSB7CkBAIC02MCw3ICs2MCw3IEBAIHZvaWQgQ3J5cHRvQWxnb3JpdGhtU0hBMjU2OjpkaWdl
c3QoY29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVyc0RlcHJlY2F0ZWQmLCBjCiAgICAgICAg
IHJldHVybjsKICAgICB9CiAKLSAgICBkaWdlc3QtPmFkZEJ5dGVzKGRhdGEuZmlyc3QsIGRhdGEu
c2Vjb25kKTsKKyAgICBkaWdlc3QtPmFkZEJ5dGVzKGRhdGEuZGF0YSwgZGF0YS5sZW5ndGgpOwog
CiAgICAgY2FsbGJhY2soZGlnZXN0LT5jb21wdXRlSGFzaCgpKTsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVNIQTI1Ni5oIGIv
U291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtU0hBMjU2LmgK
aW5kZXggN2RkNzU4YTY0NTEwZTk0YTRhZWU4ZDE2MmYzMzliMzY4OGFhNjNlZi4uY2MyODViNzUz
NTcwODgyZDQ4YTQyMjc2NGU0ZjU2NzA3MTA5M2RhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtU0hBMjU2LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtU0hBMjU2LmgKQEAgLTQx
LDcgKzQxLDcgQEAgcHVibGljOgogCiAgICAgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllciBpZGVu
dGlmaWVyKCkgY29uc3Qgb3ZlcnJpZGU7CiAKLSAgICB2b2lkIGRpZ2VzdChjb25zdCBDcnlwdG9B
bGdvcml0aG1QYXJhbWV0ZXJzRGVwcmVjYXRlZCYsIGNvbnN0IENyeXB0b09wZXJhdGlvbkRhdGEm
LCBWZWN0b3JDYWxsYmFjayYmLCBWb2lkQ2FsbGJhY2smJiBmYWlsdXJlQ2FsbGJhY2ssIEV4Y2Vw
dGlvbkNvZGUmKSBvdmVycmlkZTsKKyAgICB2b2lkIGRpZ2VzdChjb25zdCBDcnlwdG9BbGdvcml0
aG1QYXJhbWV0ZXJzRGVwcmVjYXRlZCYsIGNvbnN0IEJ1ZmZlclNvdXJjZSYsIFZlY3RvckNhbGxi
YWNrJiYsIFZvaWRDYWxsYmFjayYmIGZhaWx1cmVDYWxsYmFjaywgRXhjZXB0aW9uQ29kZSYpIG92
ZXJyaWRlOwogCiBwcml2YXRlOgogICAgIENyeXB0b0FsZ29yaXRobVNIQTI1NigpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtU0hB
Mzg0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRo
bVNIQTM4NC5jcHAKaW5kZXggMzRlZDg3Yzk5OGYxMzg2ZmUzMGQ1M2E1Yzg5N2Q5MGY5ZTlmNWU1
YS4uMDM4MWU2MmEzODA5MzY5YzBiMGNlMTY1NmY3NGMzMTI1NzNhMzQ2NSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtU0hBMzg0LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1T
SEEzODQuY3BwCkBAIC01Miw3ICs1Miw3IEBAIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXIgQ3J5
cHRvQWxnb3JpdGhtU0hBMzg0OjppZGVudGlmaWVyKCkgY29uc3QKICAgICByZXR1cm4gc19pZGVu
dGlmaWVyOwogfQogCi12b2lkIENyeXB0b0FsZ29yaXRobVNIQTM4NDo6ZGlnZXN0KGNvbnN0IENy
eXB0b0FsZ29yaXRobVBhcmFtZXRlcnNEZXByZWNhdGVkJiwgY29uc3QgQ3J5cHRvT3BlcmF0aW9u
RGF0YSYgZGF0YSwgVmVjdG9yQ2FsbGJhY2smJiBjYWxsYmFjaywgVm9pZENhbGxiYWNrJiYgZmFp
bHVyZUNhbGxiYWNrLCBFeGNlcHRpb25Db2RlJikKK3ZvaWQgQ3J5cHRvQWxnb3JpdGhtU0hBMzg0
OjpkaWdlc3QoY29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVyc0RlcHJlY2F0ZWQmLCBjb25z
dCBCdWZmZXJTb3VyY2UmIGRhdGEsIFZlY3RvckNhbGxiYWNrJiYgY2FsbGJhY2ssIFZvaWRDYWxs
YmFjayYmIGZhaWx1cmVDYWxsYmFjaywgRXhjZXB0aW9uQ29kZSYpCiB7CiAgICAgc3RkOjp1bmlx
dWVfcHRyPENyeXB0b0RpZ2VzdD4gZGlnZXN0ID0gQ3J5cHRvRGlnZXN0OjpjcmVhdGUoQ3J5cHRv
RGlnZXN0OjpBbGdvcml0aG06OlNIQV8zODQpOwogICAgIGlmICghZGlnZXN0KSB7CkBAIC02MCw3
ICs2MCw3IEBAIHZvaWQgQ3J5cHRvQWxnb3JpdGhtU0hBMzg0OjpkaWdlc3QoY29uc3QgQ3J5cHRv
QWxnb3JpdGhtUGFyYW1ldGVyc0RlcHJlY2F0ZWQmLCBjCiAgICAgICAgIHJldHVybjsKICAgICB9
CiAKLSAgICBkaWdlc3QtPmFkZEJ5dGVzKGRhdGEuZmlyc3QsIGRhdGEuc2Vjb25kKTsKKyAgICBk
aWdlc3QtPmFkZEJ5dGVzKGRhdGEuZGF0YSwgZGF0YS5sZW5ndGgpOwogCiAgICAgY2FsbGJhY2so
ZGlnZXN0LT5jb21wdXRlSGFzaCgpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Ny
eXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVNIQTM4NC5oIGIvU291cmNlL1dlYkNvcmUv
Y3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtU0hBMzg0LmgKaW5kZXggYjBiMGQwZTM3
YWJmYzQ0OTNhNzIyMGFlNzgyZDBkNTY0MjI1YzRkOC4uMThlZDY0NDQzZTA3NmQ2OWY1NzQxMzQw
OTBjNzAxOWZmYTA1OTc4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29y
aXRobXMvQ3J5cHRvQWxnb3JpdGhtU0hBMzg0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3J5cHRv
L2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtU0hBMzg0LmgKQEAgLTQxLDcgKzQxLDcgQEAgcHVi
bGljOgogCiAgICAgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllciBpZGVudGlmaWVyKCkgY29uc3Qg
b3ZlcnJpZGU7CiAKLSAgICB2b2lkIGRpZ2VzdChjb25zdCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0
ZXJzRGVwcmVjYXRlZCYsIGNvbnN0IENyeXB0b09wZXJhdGlvbkRhdGEmLCBWZWN0b3JDYWxsYmFj
ayYmLCBWb2lkQ2FsbGJhY2smJiBmYWlsdXJlQ2FsbGJhY2ssIEV4Y2VwdGlvbkNvZGUmKSBvdmVy
cmlkZTsKKyAgICB2b2lkIGRpZ2VzdChjb25zdCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzRGVw
cmVjYXRlZCYsIGNvbnN0IEJ1ZmZlclNvdXJjZSYsIFZlY3RvckNhbGxiYWNrJiYsIFZvaWRDYWxs
YmFjayYmIGZhaWx1cmVDYWxsYmFjaywgRXhjZXB0aW9uQ29kZSYpIG92ZXJyaWRlOwogCiBwcml2
YXRlOgogICAgIENyeXB0b0FsZ29yaXRobVNIQTM4NCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtU0hBNTEyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVNIQTUxMi5jcHAKaW5k
ZXggOWRhOTczNmYzODgzYTQwM2Y3ZWVhYmQ2ODY0YjBlZjljYjcxMWE2Yi4uMmZlNjdmNGE5MzJl
YmFmM2RiNDExOGEyODZjM2Y5OGY0ZDhmNWRkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
Y3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtU0hBNTEyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1TSEE1MTIuY3BwCkBAIC01
Miw3ICs1Miw3IEBAIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXIgQ3J5cHRvQWxnb3JpdGhtU0hB
NTEyOjppZGVudGlmaWVyKCkgY29uc3QKICAgICByZXR1cm4gc19pZGVudGlmaWVyOwogfQogCi12
b2lkIENyeXB0b0FsZ29yaXRobVNIQTUxMjo6ZGlnZXN0KGNvbnN0IENyeXB0b0FsZ29yaXRobVBh
cmFtZXRlcnNEZXByZWNhdGVkJiwgY29uc3QgQ3J5cHRvT3BlcmF0aW9uRGF0YSYgZGF0YSwgVmVj
dG9yQ2FsbGJhY2smJiBjYWxsYmFjaywgVm9pZENhbGxiYWNrJiYgZmFpbHVyZUNhbGxiYWNrLCBF
eGNlcHRpb25Db2RlJikKK3ZvaWQgQ3J5cHRvQWxnb3JpdGhtU0hBNTEyOjpkaWdlc3QoY29uc3Qg
Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVyc0RlcHJlY2F0ZWQmLCBjb25zdCBCdWZmZXJTb3VyY2Um
IGRhdGEsIFZlY3RvckNhbGxiYWNrJiYgY2FsbGJhY2ssIFZvaWRDYWxsYmFjayYmIGZhaWx1cmVD
YWxsYmFjaywgRXhjZXB0aW9uQ29kZSYpCiB7CiAgICAgc3RkOjp1bmlxdWVfcHRyPENyeXB0b0Rp
Z2VzdD4gZGlnZXN0ID0gQ3J5cHRvRGlnZXN0OjpjcmVhdGUoQ3J5cHRvRGlnZXN0OjpBbGdvcml0
aG06OlNIQV81MTIpOwogICAgIGlmICghZGlnZXN0KSB7CkBAIC02MCw3ICs2MCw3IEBAIHZvaWQg
Q3J5cHRvQWxnb3JpdGhtU0hBNTEyOjpkaWdlc3QoY29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFyYW1l
dGVyc0RlcHJlY2F0ZWQmLCBjCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBkaWdlc3Qt
PmFkZEJ5dGVzKGRhdGEuZmlyc3QsIGRhdGEuc2Vjb25kKTsKKyAgICBkaWdlc3QtPmFkZEJ5dGVz
KGRhdGEuZGF0YSwgZGF0YS5sZW5ndGgpOwogCiAgICAgY2FsbGJhY2soZGlnZXN0LT5jb21wdXRl
SGFzaCgpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1z
L0NyeXB0b0FsZ29yaXRobVNIQTUxMi5oIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRo
bXMvQ3J5cHRvQWxnb3JpdGhtU0hBNTEyLmgKaW5kZXggNjQwMmEyOWNlM2VhMDUwNTAxMjRiNjA0
ZGRkNDMxOTIzYTAxOWI0MS4uYTkzMWY3YWU4ODQ1ZmU1MzMyMTg4MzA3ZDdlMWFmMzk3NjcwYTk2
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxn
b3JpdGhtU0hBNTEyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5
cHRvQWxnb3JpdGhtU0hBNTEyLmgKQEAgLTQxLDcgKzQxLDcgQEAgcHVibGljOgogCiAgICAgQ3J5
cHRvQWxnb3JpdGhtSWRlbnRpZmllciBpZGVudGlmaWVyKCkgY29uc3Qgb3ZlcnJpZGU7CiAKLSAg
ICB2b2lkIGRpZ2VzdChjb25zdCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzRGVwcmVjYXRlZCYs
IGNvbnN0IENyeXB0b09wZXJhdGlvbkRhdGEmLCBWZWN0b3JDYWxsYmFjayYmLCBWb2lkQ2FsbGJh
Y2smJiBmYWlsdXJlQ2FsbGJhY2ssIEV4Y2VwdGlvbkNvZGUmKSBvdmVycmlkZTsKKyAgICB2b2lk
IGRpZ2VzdChjb25zdCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzRGVwcmVjYXRlZCYsIGNvbnN0
IEJ1ZmZlclNvdXJjZSYsIFZlY3RvckNhbGxiYWNrJiYsIFZvaWRDYWxsYmFjayYmIGZhaWx1cmVD
YWxsYmFjaywgRXhjZXB0aW9uQ29kZSYpIG92ZXJyaWRlOwogCiBwcml2YXRlOgogICAgIENyeXB0
b0FsZ29yaXRobVNIQTUxMigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2du
dXRscy9DcnlwdG9BbGdvcml0aG1BRVNfQ0JDR251VExTLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Ny
eXB0by9nbnV0bHMvQ3J5cHRvQWxnb3JpdGhtQUVTX0NCQ0dudVRMUy5jcHAKaW5kZXggMTQ2MDdk
YjZmMWQ3MmEyMWE1ZTc2NGUyYjMxNWFiYmI2MzI1OWU1Zi4uMGU3NWQ0M2E3ZmI3MGZmZDFmOTE1
MWRmMjNhYWEyMGJmZTY3NTU2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2du
dXRscy9DcnlwdG9BbGdvcml0aG1BRVNfQ0JDR251VExTLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9jcnlwdG8vZ251dGxzL0NyeXB0b0FsZ29yaXRobUFFU19DQkNHbnVUTFMuY3BwCkBAIC0zNSw3
ICszNSw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotdm9pZCBDcnlwdG9BbGdvcml0aG1B
RVNfQ0JDOjpwbGF0Zm9ybUVuY3J5cHQoY29uc3QgQ3J5cHRvQWxnb3JpdGhtQWVzQ2JjUGFyYW1z
RGVwcmVjYXRlZCYgcGFyYW1ldGVycywgY29uc3QgQ3J5cHRvS2V5QUVTJiBrZXksIGNvbnN0IENy
eXB0b09wZXJhdGlvbkRhdGEmIGRhdGEsIFZlY3RvckNhbGxiYWNrJiYgY2FsbGJhY2ssIFZvaWRD
YWxsYmFjayYmIGZhaWx1cmVDYWxsYmFjaywgRXhjZXB0aW9uQ29kZSYgZWMpCit2b2lkIENyeXB0
b0FsZ29yaXRobUFFU19DQkM6OnBsYXRmb3JtRW5jcnlwdChjb25zdCBDcnlwdG9BbGdvcml0aG1B
ZXNDYmNQYXJhbXNEZXByZWNhdGVkJiBwYXJhbWV0ZXJzLCBjb25zdCBDcnlwdG9LZXlBRVMmIGtl
eSwgY29uc3QgQnVmZmVyU291cmNlJiBkYXRhLCBWZWN0b3JDYWxsYmFjayYmIGNhbGxiYWNrLCBW
b2lkQ2FsbGJhY2smJiBmYWlsdXJlQ2FsbGJhY2ssIEV4Y2VwdGlvbkNvZGUmIGVjKQogewogICAg
IG5vdEltcGxlbWVudGVkKCk7CiAgICAgZWMgPSBOT1RfU1VQUE9SVEVEX0VSUjsKQEAgLTQ3LDcg
KzQ3LDcgQEAgdm9pZCBDcnlwdG9BbGdvcml0aG1BRVNfQ0JDOjpwbGF0Zm9ybUVuY3J5cHQoY29u
c3QgQ3J5cHRvQWxnb3JpdGhtQWVzQ2JjUGFyYW1zRGUKICAgICBVTlVTRURfUEFSQU0oZmFpbHVy
ZUNhbGxiYWNrKTsKIH0KIAotdm9pZCBDcnlwdG9BbGdvcml0aG1BRVNfQ0JDOjpwbGF0Zm9ybURl
Y3J5cHQoY29uc3QgQ3J5cHRvQWxnb3JpdGhtQWVzQ2JjUGFyYW1zRGVwcmVjYXRlZCYgcGFyYW1l
dGVycywgY29uc3QgQ3J5cHRvS2V5QUVTJiBrZXksIGNvbnN0IENyeXB0b09wZXJhdGlvbkRhdGEm
IGRhdGEsIFZlY3RvckNhbGxiYWNrJiYgY2FsbGJhY2ssIFZvaWRDYWxsYmFjayYmIGZhaWx1cmVD
YWxsYmFjaywgRXhjZXB0aW9uQ29kZSYgZWMpCit2b2lkIENyeXB0b0FsZ29yaXRobUFFU19DQkM6
OnBsYXRmb3JtRGVjcnlwdChjb25zdCBDcnlwdG9BbGdvcml0aG1BZXNDYmNQYXJhbXNEZXByZWNh
dGVkJiBwYXJhbWV0ZXJzLCBjb25zdCBDcnlwdG9LZXlBRVMmIGtleSwgY29uc3QgQnVmZmVyU291
cmNlJiBkYXRhLCBWZWN0b3JDYWxsYmFjayYmIGNhbGxiYWNrLCBWb2lkQ2FsbGJhY2smJiBmYWls
dXJlQ2FsbGJhY2ssIEV4Y2VwdGlvbkNvZGUmIGVjKQogewogICAgIG5vdEltcGxlbWVudGVkKCk7
CiAgICAgZWMgPSBOT1RfU1VQUE9SVEVEX0VSUjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2NyeXB0by9nbnV0bHMvQ3J5cHRvQWxnb3JpdGhtQUVTX0tXR251VExTLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2NyeXB0by9nbnV0bHMvQ3J5cHRvQWxnb3JpdGhtQUVTX0tXR251VExTLmNwcAppbmRl
eCA5NDU0YzgzMTQxMDJlODhjZjBjOGM2ODhhNzM5NDRhNDcxODlhMTNmLi40OGU2ZjRjM2RlMjlk
YjBhNDA4YzM0NzFjNzY2ZGEyMjZkYzE2OThhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9j
cnlwdG8vZ251dGxzL0NyeXB0b0FsZ29yaXRobUFFU19LV0dudVRMUy5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvY3J5cHRvL2dudXRscy9DcnlwdG9BbGdvcml0aG1BRVNfS1dHbnVUTFMuY3BwCkBA
IC0zNCw3ICszNCw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotdm9pZCBDcnlwdG9BbGdv
cml0aG1BRVNfS1c6OnBsYXRmb3JtRW5jcnlwdChjb25zdCBDcnlwdG9LZXlBRVMmIGtleSwgY29u
c3QgQ3J5cHRvT3BlcmF0aW9uRGF0YSYgZGF0YSwgVmVjdG9yQ2FsbGJhY2smJiBjYWxsYmFjaywg
Vm9pZENhbGxiYWNrJiYgZmFpbHVyZUNhbGxiYWNrLCBFeGNlcHRpb25Db2RlJiBlYykKK3ZvaWQg
Q3J5cHRvQWxnb3JpdGhtQUVTX0tXOjpwbGF0Zm9ybUVuY3J5cHQoY29uc3QgQ3J5cHRvS2V5QUVT
JiBrZXksIGNvbnN0IEJ1ZmZlclNvdXJjZSYgZGF0YSwgVmVjdG9yQ2FsbGJhY2smJiBjYWxsYmFj
aywgVm9pZENhbGxiYWNrJiYgZmFpbHVyZUNhbGxiYWNrLCBFeGNlcHRpb25Db2RlJiBlYykKIHsK
ICAgICBub3RJbXBsZW1lbnRlZCgpOwogICAgIGVjID0gTk9UX1NVUFBPUlRFRF9FUlI7CkBAIC00
NSw3ICs0NSw3IEBAIHZvaWQgQ3J5cHRvQWxnb3JpdGhtQUVTX0tXOjpwbGF0Zm9ybUVuY3J5cHQo
Y29uc3QgQ3J5cHRvS2V5QUVTJiBrZXksIGNvbnN0IENyeXB0CiAgICAgVU5VU0VEX1BBUkFNKGZh
aWx1cmVDYWxsYmFjayk7CiB9CiAKLXZvaWQgQ3J5cHRvQWxnb3JpdGhtQUVTX0tXOjpwbGF0Zm9y
bURlY3J5cHQoY29uc3QgQ3J5cHRvS2V5QUVTJiBrZXksIGNvbnN0IENyeXB0b09wZXJhdGlvbkRh
dGEmIGRhdGEsIFZlY3RvckNhbGxiYWNrJiYgY2FsbGJhY2ssIFZvaWRDYWxsYmFjayYmIGZhaWx1
cmVDYWxsYmFjaywgRXhjZXB0aW9uQ29kZSYgZWMpCit2b2lkIENyeXB0b0FsZ29yaXRobUFFU19L
Vzo6cGxhdGZvcm1EZWNyeXB0KGNvbnN0IENyeXB0b0tleUFFUyYga2V5LCBjb25zdCBCdWZmZXJT
b3VyY2UmIGRhdGEsIFZlY3RvckNhbGxiYWNrJiYgY2FsbGJhY2ssIFZvaWRDYWxsYmFjayYmIGZh
aWx1cmVDYWxsYmFjaywgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQo
KTsKICAgICBlYyA9IE5PVF9TVVBQT1JURURfRVJSOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvY3J5cHRvL2dudXRscy9DcnlwdG9BbGdvcml0aG1ITUFDR251VExTLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2NyeXB0by9nbnV0bHMvQ3J5cHRvQWxnb3JpdGhtSE1BQ0dudVRMUy5jcHAKaW5kZXgg
YTgzMDQ2NTdiMzNlZDAyNGUzODJkNjE5YWQ2MzJiNjA5YjJiNzVjMy4uZGE5MWNiYzAwZjRkZjYy
NjYyOTNhNjQ3ZDk3ZTJmYTY3YTNiYWE0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3J5
cHRvL2dudXRscy9DcnlwdG9BbGdvcml0aG1ITUFDR251VExTLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9jcnlwdG8vZ251dGxzL0NyeXB0b0FsZ29yaXRobUhNQUNHbnVUTFMuY3BwCkBAIC01NSwy
MCArNTUsMjAgQEAgc3RhdGljIGdudXRsc19tYWNfYWxnb3JpdGhtX3QgZ2V0R251dGxzRGlnZXN0
QWxnb3JpdGhtKENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXIKICAgICB9CiB9CiAKLXN0YXRpYyBW
ZWN0b3I8dWludDhfdD4gY2FsY3VsYXRlU2lnbmF0dXJlKGdudXRsc19tYWNfYWxnb3JpdGhtX3Qg
YWxnb3JpdGhtLCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGtleSwgY29uc3QgQ3J5cHRvT3BlcmF0
aW9uRGF0YSYgZGF0YSkKK3N0YXRpYyBWZWN0b3I8dWludDhfdD4gY2FsY3VsYXRlU2lnbmF0dXJl
KGdudXRsc19tYWNfYWxnb3JpdGhtX3QgYWxnb3JpdGhtLCBjb25zdCBWZWN0b3I8dWludDhfdD4m
IGtleSwgY29uc3QgQnVmZmVyU291cmNlJiBkYXRhKQogewogICAgIHNpemVfdCBkaWdlc3RMZW5n
dGggPSBnbnV0bHNfaG1hY19nZXRfbGVuKGFsZ29yaXRobSk7CiAKICAgICBWZWN0b3I8dWludDhf
dD4gcmVzdWx0KGRpZ2VzdExlbmd0aCk7CiAgICAgY29uc3Qgdm9pZCoga2V5RGF0YSA9IGtleS5k
YXRhKCkgPyBrZXkuZGF0YSgpIDogcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oIiIp
OwotICAgIGludCByZXQgPSBnbnV0bHNfaG1hY19mYXN0KGFsZ29yaXRobSwga2V5RGF0YSwga2V5
LnNpemUoKSwgZGF0YS5maXJzdCwgZGF0YS5zZWNvbmQsIHJlc3VsdC5kYXRhKCkpOworICAgIGlu
dCByZXQgPSBnbnV0bHNfaG1hY19mYXN0KGFsZ29yaXRobSwga2V5RGF0YSwga2V5LnNpemUoKSwg
ZGF0YS5kYXRhLCBkYXRhLmxlbmd0aCwgcmVzdWx0LmRhdGEoKSk7CiAgICAgQVNTRVJUKHJldCA9
PSBHTlVUTFNfRV9TVUNDRVNTKTsKICAgICBVTlVTRURfUEFSQU0ocmV0KTsKIAogICAgIHJldHVy
biByZXN1bHQ7CiB9CiAKLXZvaWQgQ3J5cHRvQWxnb3JpdGhtSE1BQzo6cGxhdGZvcm1TaWduKGNv
bnN0IENyeXB0b0FsZ29yaXRobUhtYWNQYXJhbXNEZXByZWNhdGVkJiBwYXJhbWV0ZXJzLCBjb25z
dCBDcnlwdG9LZXlITUFDJiBrZXksIGNvbnN0IENyeXB0b09wZXJhdGlvbkRhdGEmIGRhdGEsIFZl
Y3RvckNhbGxiYWNrJiYgY2FsbGJhY2ssIFZvaWRDYWxsYmFjayYmIGZhaWx1cmVDYWxsYmFjaywg
RXhjZXB0aW9uQ29kZSYgZWMpCit2b2lkIENyeXB0b0FsZ29yaXRobUhNQUM6OnBsYXRmb3JtU2ln
bihjb25zdCBDcnlwdG9BbGdvcml0aG1IbWFjUGFyYW1zRGVwcmVjYXRlZCYgcGFyYW1ldGVycywg
Y29uc3QgQ3J5cHRvS2V5SE1BQyYga2V5LCBjb25zdCBCdWZmZXJTb3VyY2UmIGRhdGEsIFZlY3Rv
ckNhbGxiYWNrJiYgY2FsbGJhY2ssIFZvaWRDYWxsYmFjayYmIGZhaWx1cmVDYWxsYmFjaywgRXhj
ZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgVU5VU0VEX1BBUkFNKGZhaWx1cmVDYWxsYmFjayk7CiAg
ICAgZ251dGxzX21hY19hbGdvcml0aG1fdCBhbGdvcml0aG0gPSBnZXRHbnV0bHNEaWdlc3RBbGdv
cml0aG0ocGFyYW1ldGVycy5oYXNoKTsKQEAgLTgyLDcgKzgyLDcgQEAgdm9pZCBDcnlwdG9BbGdv
cml0aG1ITUFDOjpwbGF0Zm9ybVNpZ24oY29uc3QgQ3J5cHRvQWxnb3JpdGhtSG1hY1BhcmFtc0Rl
cHJlY2F0ZWQKICAgICBjYWxsYmFjayhzaWduYXR1cmUpOwogfQogCi12b2lkIENyeXB0b0FsZ29y
aXRobUhNQUM6OnBsYXRmb3JtVmVyaWZ5KGNvbnN0IENyeXB0b0FsZ29yaXRobUhtYWNQYXJhbXNE
ZXByZWNhdGVkJiBwYXJhbWV0ZXJzLCBjb25zdCBDcnlwdG9LZXlITUFDJiBrZXksIGNvbnN0IENy
eXB0b09wZXJhdGlvbkRhdGEmIGV4cGVjdGVkU2lnbmF0dXJlLCBjb25zdCBDcnlwdG9PcGVyYXRp
b25EYXRhJiBkYXRhLCBCb29sQ2FsbGJhY2smJiBjYWxsYmFjaywgVm9pZENhbGxiYWNrJiYgZmFp
bHVyZUNhbGxiYWNrLCBFeGNlcHRpb25Db2RlJiBlYykKK3ZvaWQgQ3J5cHRvQWxnb3JpdGhtSE1B
Qzo6cGxhdGZvcm1WZXJpZnkoY29uc3QgQ3J5cHRvQWxnb3JpdGhtSG1hY1BhcmFtc0RlcHJlY2F0
ZWQmIHBhcmFtZXRlcnMsIGNvbnN0IENyeXB0b0tleUhNQUMmIGtleSwgY29uc3QgQnVmZmVyU291
cmNlJiBleHBlY3RlZFNpZ25hdHVyZSwgY29uc3QgQnVmZmVyU291cmNlJiBkYXRhLCBCb29sQ2Fs
bGJhY2smJiBjYWxsYmFjaywgVm9pZENhbGxiYWNrJiYgZmFpbHVyZUNhbGxiYWNrLCBFeGNlcHRp
b25Db2RlJiBlYykKIHsKICAgICBVTlVTRURfUEFSQU0oZmFpbHVyZUNhbGxiYWNrKTsKICAgICBn
bnV0bHNfbWFjX2FsZ29yaXRobV90IGFsZ29yaXRobSA9IGdldEdudXRsc0RpZ2VzdEFsZ29yaXRo
bShwYXJhbWV0ZXJzLmhhc2gpOwpAQCAtOTQsNyArOTQsNyBAQCB2b2lkIENyeXB0b0FsZ29yaXRo
bUhNQUM6OnBsYXRmb3JtVmVyaWZ5KGNvbnN0IENyeXB0b0FsZ29yaXRobUhtYWNQYXJhbXNEZXBy
ZWNhdAogICAgIFZlY3Rvcjx1aW50OF90PiBzaWduYXR1cmUgPSBjYWxjdWxhdGVTaWduYXR1cmUo
YWxnb3JpdGhtLCBrZXkua2V5KCksIGRhdGEpOwogCiAgICAgLy8gVXNpbmcgYSBjb25zdGFudCB0
aW1lIGNvbXBhcmlzb24gdG8gcHJldmVudCB0aW1pbmcgYXR0YWNrcy4KLSAgICBib29sIHJlc3Vs
dCA9IHNpZ25hdHVyZS5zaXplKCkgPT0gZXhwZWN0ZWRTaWduYXR1cmUuc2Vjb25kICYmICFjb25z
dGFudFRpbWVNZW1jbXAoc2lnbmF0dXJlLmRhdGEoKSwgZXhwZWN0ZWRTaWduYXR1cmUuZmlyc3Qs
IHNpZ25hdHVyZS5zaXplKCkpOworICAgIGJvb2wgcmVzdWx0ID0gc2lnbmF0dXJlLnNpemUoKSA9
PSBleHBlY3RlZFNpZ25hdHVyZS5sZW5ndGggJiYgIWNvbnN0YW50VGltZU1lbWNtcChzaWduYXR1
cmUuZGF0YSgpLCBleHBlY3RlZFNpZ25hdHVyZS5kYXRhLCBzaWduYXR1cmUuc2l6ZSgpKTsKIAog
ICAgIGNhbGxiYWNrKHJlc3VsdCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlw
dG8vZ251dGxzL0NyeXB0b0FsZ29yaXRobVJTQUVTX1BLQ1MxX3YxXzVHbnVUTFMuY3BwIGIvU291
cmNlL1dlYkNvcmUvY3J5cHRvL2dudXRscy9DcnlwdG9BbGdvcml0aG1SU0FFU19QS0NTMV92MV81
R251VExTLmNwcAppbmRleCA3YTVlODRiNWZkZTliYzU5MTY4MWE4ODVmODNlNjM1MGFjMmM2OWJh
Li42OWIwMGMwMWMxNDIyZGQ3NThiNTk3NmEzZTU3MjdlYzRiNjhkODVmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9jcnlwdG8vZ251dGxzL0NyeXB0b0FsZ29yaXRobVJTQUVTX1BLQ1MxX3Yx
XzVHbnVUTFMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9nbnV0bHMvQ3J5cHRvQWxn
b3JpdGhtUlNBRVNfUEtDUzFfdjFfNUdudVRMUy5jcHAKQEAgLTM0LDcgKzM0LDcgQEAKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCi12b2lkIENyeXB0b0FsZ29yaXRobVJTQUVTX1BLQ1MxX3YxXzU6
OnBsYXRmb3JtRW5jcnlwdChjb25zdCBDcnlwdG9LZXlSU0EmIGtleSwgY29uc3QgQ3J5cHRvT3Bl
cmF0aW9uRGF0YSYgZGF0YSwgVmVjdG9yQ2FsbGJhY2smJiBjYWxsYmFjaywgVm9pZENhbGxiYWNr
JiYgZmFpbHVyZUNhbGxiYWNrLCBFeGNlcHRpb25Db2RlJiBlYykKK3ZvaWQgQ3J5cHRvQWxnb3Jp
dGhtUlNBRVNfUEtDUzFfdjFfNTo6cGxhdGZvcm1FbmNyeXB0KGNvbnN0IENyeXB0b0tleVJTQSYg
a2V5LCBjb25zdCBCdWZmZXJTb3VyY2UmIGRhdGEsIFZlY3RvckNhbGxiYWNrJiYgY2FsbGJhY2ss
IFZvaWRDYWxsYmFjayYmIGZhaWx1cmVDYWxsYmFjaywgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAg
ICAgbm90SW1wbGVtZW50ZWQoKTsKICAgICBlYyA9IE5PVF9TVVBQT1JURURfRVJSOwpAQCAtNDUs
NyArNDUsNyBAQCB2b2lkIENyeXB0b0FsZ29yaXRobVJTQUVTX1BLQ1MxX3YxXzU6OnBsYXRmb3Jt
RW5jcnlwdChjb25zdCBDcnlwdG9LZXlSU0EmIGtleSwgYwogICAgIFVOVVNFRF9QQVJBTShmYWls
dXJlQ2FsbGJhY2spOwogfQogCi12b2lkIENyeXB0b0FsZ29yaXRobVJTQUVTX1BLQ1MxX3YxXzU6
OnBsYXRmb3JtRGVjcnlwdChjb25zdCBDcnlwdG9LZXlSU0EmIGtleSwgY29uc3QgQ3J5cHRvT3Bl
cmF0aW9uRGF0YSYgZGF0YSwgVmVjdG9yQ2FsbGJhY2smJiBjYWxsYmFjaywgVm9pZENhbGxiYWNr
JiYgZmFpbHVyZUNhbGxiYWNrLCBFeGNlcHRpb25Db2RlJiBlYykKK3ZvaWQgQ3J5cHRvQWxnb3Jp
dGhtUlNBRVNfUEtDUzFfdjFfNTo6cGxhdGZvcm1EZWNyeXB0KGNvbnN0IENyeXB0b0tleVJTQSYg
a2V5LCBjb25zdCBCdWZmZXJTb3VyY2UmIGRhdGEsIFZlY3RvckNhbGxiYWNrJiYgY2FsbGJhY2ss
IFZvaWRDYWxsYmFjayYmIGZhaWx1cmVDYWxsYmFjaywgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAg
ICAgbm90SW1wbGVtZW50ZWQoKTsKICAgICBlYyA9IE5PVF9TVVBQT1JURURfRVJSOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2dudXRscy9DcnlwdG9BbGdvcml0aG1SU0FTU0Ff
UEtDUzFfdjFfNUdudVRMUy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vZ251dGxzL0NyeXB0
b0FsZ29yaXRobVJTQVNTQV9QS0NTMV92MV81R251VExTLmNwcAppbmRleCA1NjhkNTJiYTQwMzRk
ZjAwYjc0M2ZhMjc5YzRmYWQxN2IxNWM2MTNkLi4wNjRiNzBkMDY0ZmNjYTQ1ZmY2YjUzY2U1MDRi
MDdhYjliMDdiMGViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vZ251dGxzL0Ny
eXB0b0FsZ29yaXRobVJTQVNTQV9QS0NTMV92MV81R251VExTLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9jcnlwdG8vZ251dGxzL0NyeXB0b0FsZ29yaXRobVJTQVNTQV9QS0NTMV92MV81R251VExT
LmNwcApAQCAtMzUsNyArMzUsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXZvaWQgQ3J5
cHRvQWxnb3JpdGhtUlNBU1NBX1BLQ1MxX3YxXzU6OnBsYXRmb3JtU2lnbihjb25zdCBDcnlwdG9B
bGdvcml0aG1Sc2FTc2FQYXJhbXNEZXByZWNhdGVkJiBwYXJhbWV0ZXJzLCBjb25zdCBDcnlwdG9L
ZXlSU0EmIGtleSwgY29uc3QgQ3J5cHRvT3BlcmF0aW9uRGF0YSYgZGF0YSwgVmVjdG9yQ2FsbGJh
Y2smJiBjYWxsYmFjaywgVm9pZENhbGxiYWNrJiYgZmFpbHVyZUNhbGxiYWNrLCBFeGNlcHRpb25D
b2RlJiBlYykKK3ZvaWQgQ3J5cHRvQWxnb3JpdGhtUlNBU1NBX1BLQ1MxX3YxXzU6OnBsYXRmb3Jt
U2lnbihjb25zdCBDcnlwdG9BbGdvcml0aG1Sc2FTc2FQYXJhbXNEZXByZWNhdGVkJiBwYXJhbWV0
ZXJzLCBjb25zdCBDcnlwdG9LZXlSU0EmIGtleSwgY29uc3QgQnVmZmVyU291cmNlJiBkYXRhLCBW
ZWN0b3JDYWxsYmFjayYmIGNhbGxiYWNrLCBWb2lkQ2FsbGJhY2smJiBmYWlsdXJlQ2FsbGJhY2ss
IEV4Y2VwdGlvbkNvZGUmIGVjKQogewogICAgIG5vdEltcGxlbWVudGVkKCk7CiAgICAgZWMgPSBO
T1RfU1VQUE9SVEVEX0VSUjsKQEAgLTQ3LDcgKzQ3LDcgQEAgdm9pZCBDcnlwdG9BbGdvcml0aG1S
U0FTU0FfUEtDUzFfdjFfNTo6cGxhdGZvcm1TaWduKGNvbnN0IENyeXB0b0FsZ29yaXRobVJzYVNz
YVAKICAgICBVTlVTRURfUEFSQU0oZmFpbHVyZUNhbGxiYWNrKTsKIH0KIAotdm9pZCBDcnlwdG9B
bGdvcml0aG1SU0FTU0FfUEtDUzFfdjFfNTo6cGxhdGZvcm1WZXJpZnkoY29uc3QgQ3J5cHRvQWxn
b3JpdGhtUnNhU3NhUGFyYW1zRGVwcmVjYXRlZCYgcGFyYW1ldGVycywgY29uc3QgQ3J5cHRvS2V5
UlNBJiBrZXksIGNvbnN0IENyeXB0b09wZXJhdGlvbkRhdGEmIHNpZ25hdHVyZSwgY29uc3QgQ3J5
cHRvT3BlcmF0aW9uRGF0YSYgZGF0YSwgQm9vbENhbGxiYWNrJiYgY2FsbGJhY2ssIFZvaWRDYWxs
YmFjayYmIGZhaWx1cmVDYWxsYmFjaywgRXhjZXB0aW9uQ29kZSYgZWMpCit2b2lkIENyeXB0b0Fs
Z29yaXRobVJTQVNTQV9QS0NTMV92MV81OjpwbGF0Zm9ybVZlcmlmeShjb25zdCBDcnlwdG9BbGdv
cml0aG1Sc2FTc2FQYXJhbXNEZXByZWNhdGVkJiBwYXJhbWV0ZXJzLCBjb25zdCBDcnlwdG9LZXlS
U0EmIGtleSwgY29uc3QgQnVmZmVyU291cmNlJiBzaWduYXR1cmUsIGNvbnN0IEJ1ZmZlclNvdXJj
ZSYgZGF0YSwgQm9vbENhbGxiYWNrJiYgY2FsbGJhY2ssIFZvaWRDYWxsYmFjayYmIGZhaWx1cmVD
YWxsYmFjaywgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKICAg
ICBlYyA9IE5PVF9TVVBQT1JURURfRVJSOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3J5
cHRvL2dudXRscy9DcnlwdG9BbGdvcml0aG1SU0FfT0FFUEdudVRMUy5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9jcnlwdG8vZ251dGxzL0NyeXB0b0FsZ29yaXRobVJTQV9PQUVQR251VExTLmNwcAppbmRl
eCBhYjA2YWNkZDQ2MDRmNmU5MGYxNTI3ZDU2OGFhODIxMDU5YzYwZmViLi5kMjE2NjhiMTVmOTll
M2E3MDc4MmE4M2NkNzZlZGE4Y2FlZjMwNTZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9j
cnlwdG8vZ251dGxzL0NyeXB0b0FsZ29yaXRobVJTQV9PQUVQR251VExTLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9jcnlwdG8vZ251dGxzL0NyeXB0b0FsZ29yaXRobVJTQV9PQUVQR251VExTLmNw
cApAQCAtMzUsNyArMzUsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXZvaWQgQ3J5cHRv
QWxnb3JpdGhtUlNBX09BRVA6OnBsYXRmb3JtRW5jcnlwdChjb25zdCBDcnlwdG9BbGdvcml0aG1S
c2FPYWVwUGFyYW1zRGVwcmVjYXRlZCYgcGFyYW1ldGVycywgY29uc3QgQ3J5cHRvS2V5UlNBJiBr
ZXksIGNvbnN0IENyeXB0b09wZXJhdGlvbkRhdGEmIGRhdGEsIFZlY3RvckNhbGxiYWNrJiYgY2Fs
bGJhY2ssIFZvaWRDYWxsYmFjayYmIGZhaWx1cmVDYWxsYmFjaywgRXhjZXB0aW9uQ29kZSYgZWMp
Cit2b2lkIENyeXB0b0FsZ29yaXRobVJTQV9PQUVQOjpwbGF0Zm9ybUVuY3J5cHQoY29uc3QgQ3J5
cHRvQWxnb3JpdGhtUnNhT2FlcFBhcmFtc0RlcHJlY2F0ZWQmIHBhcmFtZXRlcnMsIGNvbnN0IENy
eXB0b0tleVJTQSYga2V5LCBjb25zdCBCdWZmZXJTb3VyY2UmIGRhdGEsIFZlY3RvckNhbGxiYWNr
JiYgY2FsbGJhY2ssIFZvaWRDYWxsYmFjayYmIGZhaWx1cmVDYWxsYmFjaywgRXhjZXB0aW9uQ29k
ZSYgZWMpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKICAgICBlYyA9IE5PVF9TVVBQT1JURURf
RVJSOwpAQCAtNDcsNyArNDcsNyBAQCB2b2lkIENyeXB0b0FsZ29yaXRobVJTQV9PQUVQOjpwbGF0
Zm9ybUVuY3J5cHQoY29uc3QgQ3J5cHRvQWxnb3JpdGhtUnNhT2FlcFBhcmFtcwogICAgIFVOVVNF
RF9QQVJBTShmYWlsdXJlQ2FsbGJhY2spOwogfQogCi12b2lkIENyeXB0b0FsZ29yaXRobVJTQV9P
QUVQOjpwbGF0Zm9ybURlY3J5cHQoY29uc3QgQ3J5cHRvQWxnb3JpdGhtUnNhT2FlcFBhcmFtc0Rl
cHJlY2F0ZWQmIHBhcmFtZXRlcnMsIGNvbnN0IENyeXB0b0tleVJTQSYga2V5LCBjb25zdCBDcnlw
dG9PcGVyYXRpb25EYXRhJiBkYXRhLCBWZWN0b3JDYWxsYmFjayYmIGNhbGxiYWNrLCBWb2lkQ2Fs
bGJhY2smJiBmYWlsdXJlQ2FsbGJhY2ssIEV4Y2VwdGlvbkNvZGUmIGVjKQordm9pZCBDcnlwdG9B
bGdvcml0aG1SU0FfT0FFUDo6cGxhdGZvcm1EZWNyeXB0KGNvbnN0IENyeXB0b0FsZ29yaXRobVJz
YU9hZXBQYXJhbXNEZXByZWNhdGVkJiBwYXJhbWV0ZXJzLCBjb25zdCBDcnlwdG9LZXlSU0EmIGtl
eSwgY29uc3QgQnVmZmVyU291cmNlJiBkYXRhLCBWZWN0b3JDYWxsYmFjayYmIGNhbGxiYWNrLCBW
b2lkQ2FsbGJhY2smJiBmYWlsdXJlQ2FsbGJhY2ssIEV4Y2VwdGlvbkNvZGUmIGVjKQogewogICAg
IG5vdEltcGxlbWVudGVkKCk7CiAgICAgZWMgPSBOT1RfU1VQUE9SVEVEX0VSUjsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9rZXlzL0NyeXB0b0tleVNlcmlhbGl6YXRpb25SYXcu
Y3BwIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2tleXMvQ3J5cHRvS2V5U2VyaWFsaXphdGlvblJh
dy5jcHAKaW5kZXggNmQzYjhjODQ1ODk5YjVlYmZmMTMwMThlOWFmMmE3YjBlODZlZTFiNy4uNjZj
OTk3ZmM1Nzk3ZTA2ZTU5ZTAzYWRjY2U3NTU4NTY4Zjg1Y2E4YSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvY3J5cHRvL2tleXMvQ3J5cHRvS2V5U2VyaWFsaXphdGlvblJhdy5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvY3J5cHRvL2tleXMvQ3J5cHRvS2V5U2VyaWFsaXphdGlvblJhdy5jcHAK
QEAgLTM1LDkgKzM1LDkgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1DcnlwdG9LZXlTZXJp
YWxpemF0aW9uUmF3OjpDcnlwdG9LZXlTZXJpYWxpemF0aW9uUmF3KGNvbnN0IENyeXB0b09wZXJh
dGlvbkRhdGEmIGRhdGEpCitDcnlwdG9LZXlTZXJpYWxpemF0aW9uUmF3OjpDcnlwdG9LZXlTZXJp
YWxpemF0aW9uUmF3KGNvbnN0IEJ1ZmZlclNvdXJjZSYgZGF0YSkKIHsKLSAgICBtX2RhdGEuYXBw
ZW5kKGRhdGEuZmlyc3QsIGRhdGEuc2Vjb25kKTsKKyAgICBtX2RhdGEuYXBwZW5kKGRhdGEuZGF0
YSwgZGF0YS5sZW5ndGgpOwogfQogCiBDcnlwdG9LZXlTZXJpYWxpemF0aW9uUmF3Ojp+Q3J5cHRv
S2V5U2VyaWFsaXphdGlvblJhdygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8v
a2V5cy9DcnlwdG9LZXlTZXJpYWxpemF0aW9uUmF3LmggYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8v
a2V5cy9DcnlwdG9LZXlTZXJpYWxpemF0aW9uUmF3LmgKaW5kZXggZWZhM2NkMmMwMWQ5ZjM1YTBl
OTBjMmE5OTdjNDE0ODJkNzhlYTUzNi4uMzRkOTgxZWM0ZmRiN2IwMzZmMzkzY2M2ODU5MDIzOWMz
YjcwZmZiOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2tleXMvQ3J5cHRvS2V5
U2VyaWFsaXphdGlvblJhdy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9rZXlzL0NyeXB0
b0tleVNlcmlhbGl6YXRpb25SYXcuaApAQCAtMjYsNiArMjYsNyBAQAogI2lmbmRlZiBDcnlwdG9L
ZXlTZXJpYWxpemF0aW9uUmF3X2gKICNkZWZpbmUgQ3J5cHRvS2V5U2VyaWFsaXphdGlvblJhd19o
CiAKKyNpbmNsdWRlICJCdWZmZXJTb3VyY2UuaCIKICNpbmNsdWRlICJDcnlwdG9LZXlTZXJpYWxp
emF0aW9uLmgiCiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dU
RlN0cmluZy5oPgpAQCAtMzksNyArNDAsNyBAQCBjbGFzcyBDcnlwdG9LZXk7CiBjbGFzcyBDcnlw
dG9LZXlTZXJpYWxpemF0aW9uUmF3IGZpbmFsIDogcHVibGljIENyeXB0b0tleVNlcmlhbGl6YXRp
b24gewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKENyeXB0b0tleVNlcmlhbGl6YXRpb25SYXcp
OwogcHVibGljOgotICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvS2V5U2VyaWFsaXph
dGlvblJhdz4gY3JlYXRlKGNvbnN0IENyeXB0b09wZXJhdGlvbkRhdGEmIGRhdGEpCisgICAgc3Rh
dGljIHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9LZXlTZXJpYWxpemF0aW9uUmF3PiBjcmVhdGUoY29u
c3QgQnVmZmVyU291cmNlJiBkYXRhKQogICAgIHsKICAgICAgICAgcmV0dXJuIHN0ZDo6dW5pcXVl
X3B0cjxDcnlwdG9LZXlTZXJpYWxpemF0aW9uUmF3PihuZXcgQ3J5cHRvS2V5U2VyaWFsaXphdGlv
blJhdyhkYXRhKSk7CiAgICAgfQpAQCAtNDksNyArNTAsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGlj
IGJvb2wgc2VyaWFsaXplKGNvbnN0IENyeXB0b0tleSYsIFZlY3Rvcjx1aW50OF90PiYpOwogCiBw
cml2YXRlOgotICAgIENyeXB0b0tleVNlcmlhbGl6YXRpb25SYXcoY29uc3QgQ3J5cHRvT3BlcmF0
aW9uRGF0YSYpOworICAgIENyeXB0b0tleVNlcmlhbGl6YXRpb25SYXcoY29uc3QgQnVmZmVyU291
cmNlJik7CiAKICAgICBPcHRpb25hbDxDcnlwdG9BbGdvcml0aG1QYWlyPiByZWNvbmNpbGVBbGdv
cml0aG0oQ3J5cHRvQWxnb3JpdGhtKiwgQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVyc0RlcHJlY2F0
ZWQqKSBjb25zdCBvdmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3J5cHRv
L21hYy9DcnlwdG9BbGdvcml0aG1BRVNfQ0JDTWFjLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0
by9tYWMvQ3J5cHRvQWxnb3JpdGhtQUVTX0NCQ01hYy5jcHAKaW5kZXggYjEyM2NlY2IxMjNjNTE0
YzM4ZjA5MDQ0YmUzODJmMTgxNzZiNDcxZi4uMjE4ODQzMzg3ZGNlOTBhMTdkOGVlODc2YTIzMTQ0
NjFmYzYyZjg5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL21hYy9DcnlwdG9B
bGdvcml0aG1BRVNfQ0JDTWFjLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vbWFjL0Ny
eXB0b0FsZ29yaXRobUFFU19DQkNNYWMuY3BwCkBAIC0zNSw3ICszNSw3IEBACiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAotc3RhdGljIHZvaWQgdHJhbnNmb3JtQUVTX0NCQyhDQ09wZXJhdGlvbiBv
cGVyYXRpb24sIGNvbnN0IENyeXB0b0FsZ29yaXRobUFlc0NiY1BhcmFtc0RlcHJlY2F0ZWQmIHBh
cmFtZXRlcnMsIGNvbnN0IENyeXB0b0tleUFFUyYga2V5LCBjb25zdCBDcnlwdG9PcGVyYXRpb25E
YXRhJiBkYXRhLCBDcnlwdG9BbGdvcml0aG06OlZlY3RvckNhbGxiYWNrJiYgY2FsbGJhY2ssIENy
eXB0b0FsZ29yaXRobTo6Vm9pZENhbGxiYWNrJiYgZmFpbHVyZUNhbGxiYWNrKQorc3RhdGljIHZv
aWQgdHJhbnNmb3JtQUVTX0NCQyhDQ09wZXJhdGlvbiBvcGVyYXRpb24sIGNvbnN0IENyeXB0b0Fs
Z29yaXRobUFlc0NiY1BhcmFtc0RlcHJlY2F0ZWQmIHBhcmFtZXRlcnMsIGNvbnN0IENyeXB0b0tl
eUFFUyYga2V5LCBjb25zdCBCdWZmZXJTb3VyY2UmIGRhdGEsIENyeXB0b0FsZ29yaXRobTo6VmVj
dG9yQ2FsbGJhY2smJiBjYWxsYmFjaywgQ3J5cHRvQWxnb3JpdGhtOjpWb2lkQ2FsbGJhY2smJiBm
YWlsdXJlQ2FsbGJhY2spCiB7CiAgICAgc3RhdGljX2Fzc2VydChzaXplb2YocGFyYW1ldGVycy5p
dikgPT0ga0NDQmxvY2tTaXplQUVTMTI4LCAiSW5pdGlhbGl6YXRpb24gdmVjdG9yIHNpemUgbXVz
dCBiZSB0aGUgc2FtZSBhcyBhbGdvcml0aG0gYmxvY2sgc2l6ZSIpOwogCkBAIC01NywxMCArNTcs
MTAgQEAgc3RhdGljIHZvaWQgdHJhbnNmb3JtQUVTX0NCQyhDQ09wZXJhdGlvbiBvcGVyYXRpb24s
IGNvbnN0IENyeXB0b0FsZ29yaXRobUFlc0NiY1AKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAot
ICAgIFZlY3Rvcjx1aW50OF90PiByZXN1bHQoQ0NDcnlwdG9yR2V0T3V0cHV0TGVuZ3RoKGNyeXB0
b3IsIGRhdGEuc2Vjb25kLCB0cnVlKSk7CisgICAgVmVjdG9yPHVpbnQ4X3Q+IHJlc3VsdChDQ0Ny
eXB0b3JHZXRPdXRwdXRMZW5ndGgoY3J5cHRvciwgZGF0YS5sZW5ndGgsIHRydWUpKTsKIAogICAg
IHNpemVfdCBieXRlc1dyaXR0ZW47Ci0gICAgc3RhdHVzID0gQ0NDcnlwdG9yVXBkYXRlKGNyeXB0
b3IsIGRhdGEuZmlyc3QsIGRhdGEuc2Vjb25kLCByZXN1bHQuZGF0YSgpLCByZXN1bHQuc2l6ZSgp
LCAmYnl0ZXNXcml0dGVuKTsKKyAgICBzdGF0dXMgPSBDQ0NyeXB0b3JVcGRhdGUoY3J5cHRvciwg
ZGF0YS5kYXRhLCBkYXRhLmxlbmd0aCwgcmVzdWx0LmRhdGEoKSwgcmVzdWx0LnNpemUoKSwgJmJ5
dGVzV3JpdHRlbik7CiAgICAgaWYgKHN0YXR1cykgewogICAgICAgICBmYWlsdXJlQ2FsbGJhY2so
KTsKICAgICAgICAgcmV0dXJuOwpAQCAtODIsMTIgKzgyLDEyIEBAIHN0YXRpYyB2b2lkIHRyYW5z
Zm9ybUFFU19DQkMoQ0NPcGVyYXRpb24gb3BlcmF0aW9uLCBjb25zdCBDcnlwdG9BbGdvcml0aG1B
ZXNDYmNQCiAgICAgY2FsbGJhY2socmVzdWx0KTsKIH0KIAotdm9pZCBDcnlwdG9BbGdvcml0aG1B
RVNfQ0JDOjpwbGF0Zm9ybUVuY3J5cHQoY29uc3QgQ3J5cHRvQWxnb3JpdGhtQWVzQ2JjUGFyYW1z
RGVwcmVjYXRlZCYgcGFyYW1ldGVycywgY29uc3QgQ3J5cHRvS2V5QUVTJiBrZXksIGNvbnN0IENy
eXB0b09wZXJhdGlvbkRhdGEmIGRhdGEsIFZlY3RvckNhbGxiYWNrJiYgY2FsbGJhY2ssIFZvaWRD
YWxsYmFjayYmIGZhaWx1cmVDYWxsYmFjaywgRXhjZXB0aW9uQ29kZSYpCit2b2lkIENyeXB0b0Fs
Z29yaXRobUFFU19DQkM6OnBsYXRmb3JtRW5jcnlwdChjb25zdCBDcnlwdG9BbGdvcml0aG1BZXND
YmNQYXJhbXNEZXByZWNhdGVkJiBwYXJhbWV0ZXJzLCBjb25zdCBDcnlwdG9LZXlBRVMmIGtleSwg
Y29uc3QgQnVmZmVyU291cmNlJiBkYXRhLCBWZWN0b3JDYWxsYmFjayYmIGNhbGxiYWNrLCBWb2lk
Q2FsbGJhY2smJiBmYWlsdXJlQ2FsbGJhY2ssIEV4Y2VwdGlvbkNvZGUmKQogewogICAgIHRyYW5z
Zm9ybUFFU19DQkMoa0NDRW5jcnlwdCwgcGFyYW1ldGVycywga2V5LCBkYXRhLCBXVEZNb3ZlKGNh
bGxiYWNrKSwgV1RGTW92ZShmYWlsdXJlQ2FsbGJhY2spKTsKIH0KIAotdm9pZCBDcnlwdG9BbGdv
cml0aG1BRVNfQ0JDOjpwbGF0Zm9ybURlY3J5cHQoY29uc3QgQ3J5cHRvQWxnb3JpdGhtQWVzQ2Jj
UGFyYW1zRGVwcmVjYXRlZCYgcGFyYW1ldGVycywgY29uc3QgQ3J5cHRvS2V5QUVTJiBrZXksIGNv
bnN0IENyeXB0b09wZXJhdGlvbkRhdGEmIGRhdGEsIFZlY3RvckNhbGxiYWNrJiYgY2FsbGJhY2ss
IFZvaWRDYWxsYmFjayYmIGZhaWx1cmVDYWxsYmFjaywgRXhjZXB0aW9uQ29kZSYpCit2b2lkIENy
eXB0b0FsZ29yaXRobUFFU19DQkM6OnBsYXRmb3JtRGVjcnlwdChjb25zdCBDcnlwdG9BbGdvcml0
aG1BZXNDYmNQYXJhbXNEZXByZWNhdGVkJiBwYXJhbWV0ZXJzLCBjb25zdCBDcnlwdG9LZXlBRVMm
IGtleSwgY29uc3QgQnVmZmVyU291cmNlJiBkYXRhLCBWZWN0b3JDYWxsYmFjayYmIGNhbGxiYWNr
LCBWb2lkQ2FsbGJhY2smJiBmYWlsdXJlQ2FsbGJhY2ssIEV4Y2VwdGlvbkNvZGUmKQogewogICAg
IHRyYW5zZm9ybUFFU19DQkMoa0NDRGVjcnlwdCwgcGFyYW1ldGVycywga2V5LCBkYXRhLCBXVEZN
b3ZlKGNhbGxiYWNrKSwgV1RGTW92ZShmYWlsdXJlQ2FsbGJhY2spKTsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2NyeXB0by9tYWMvQ3J5cHRvQWxnb3JpdGhtQUVTX0tXTWFjLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2NyeXB0by9tYWMvQ3J5cHRvQWxnb3JpdGhtQUVTX0tXTWFjLmNwcApp
bmRleCA5ODU1NTMwNDYzYjc3MGI1YWVhN2EzZGM4MjZlOWM3MTEyNGE5NDMzLi5mMzMyYjhiODM4
ZjdlYTk1NzIyMzU1YzZhYzU3YWNmNjc1ZGJmMTgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9jcnlwdG8vbWFjL0NyeXB0b0FsZ29yaXRobUFFU19LV01hYy5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvY3J5cHRvL21hYy9DcnlwdG9BbGdvcml0aG1BRVNfS1dNYWMuY3BwCkBAIC0zNCwxOCAr
MzQsMTggQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi12b2lkIENyeXB0b0FsZ29yaXRobUFF
U19LVzo6cGxhdGZvcm1FbmNyeXB0KGNvbnN0IENyeXB0b0tleUFFUyYga2V5LCBjb25zdCBDcnlw
dG9PcGVyYXRpb25EYXRhJiBkYXRhLCBWZWN0b3JDYWxsYmFjayYmIGNhbGxiYWNrLCBWb2lkQ2Fs
bGJhY2smJiBmYWlsdXJlQ2FsbGJhY2ssIEV4Y2VwdGlvbkNvZGUmKQordm9pZCBDcnlwdG9BbGdv
cml0aG1BRVNfS1c6OnBsYXRmb3JtRW5jcnlwdChjb25zdCBDcnlwdG9LZXlBRVMmIGtleSwgY29u
c3QgQnVmZmVyU291cmNlJiBkYXRhLCBWZWN0b3JDYWxsYmFjayYmIGNhbGxiYWNrLCBWb2lkQ2Fs
bGJhY2smJiBmYWlsdXJlQ2FsbGJhY2ssIEV4Y2VwdGlvbkNvZGUmKQogewotICAgIGlmIChkYXRh
LnNlY29uZCAlIDgpIHsKKyAgICBpZiAoZGF0YS5sZW5ndGggJSA4KSB7CiAgICAgICAgIC8vIFJG
QyAzMzk0IHVzZXMgNjQtYml0IGJsb2NrcyBhcyBpbnB1dC4KICAgICAgICAgLy8gPHJkYXI6Ly9w
cm9ibGVtLzE1OTQ5OTkyPiBDb21tb25DcnlwdG8gZG9lc24ndCBkZXRlY3QgaW5jb3JyZWN0IGRh
dGEgbGVuZ3RoLCBzaWxlbnRseSBwcm9kdWNpbmcgYSBiYWQgY3lwaGVydGV4dC4KICAgICAgICAg
ZmFpbHVyZUNhbGxiYWNrKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBWZWN0b3I8
dWludDhfdD4gcmVzdWx0KENDU3ltbWV0cmljV3JhcHBlZFNpemUoa0NDV1JBUEFFUywgZGF0YS5z
ZWNvbmQpKTsKKyAgICBWZWN0b3I8dWludDhfdD4gcmVzdWx0KENDU3ltbWV0cmljV3JhcHBlZFNp
emUoa0NDV1JBUEFFUywgZGF0YS5sZW5ndGgpKTsKICAgICBzaXplX3QgcmVzdWx0U2l6ZSA9IHJl
c3VsdC5zaXplKCk7Ci0gICAgaW50IHN0YXR1cyA9IENDU3ltbWV0cmljS2V5V3JhcChrQ0NXUkFQ
QUVTLCBDQ3JmYzMzOTRfaXYsIENDcmZjMzM5NF9pdkxlbiwga2V5LmtleSgpLmRhdGEoKSwga2V5
LmtleSgpLnNpemUoKSwgZGF0YS5maXJzdCwgZGF0YS5zZWNvbmQsIHJlc3VsdC5kYXRhKCksICZy
ZXN1bHRTaXplKTsKKyAgICBpbnQgc3RhdHVzID0gQ0NTeW1tZXRyaWNLZXlXcmFwKGtDQ1dSQVBB
RVMsIENDcmZjMzM5NF9pdiwgQ0NyZmMzMzk0X2l2TGVuLCBrZXkua2V5KCkuZGF0YSgpLCBrZXku
a2V5KCkuc2l6ZSgpLCBkYXRhLmRhdGEsIGRhdGEubGVuZ3RoLCByZXN1bHQuZGF0YSgpLCAmcmVz
dWx0U2l6ZSk7CiAgICAgaWYgKHN0YXR1cykgewogICAgICAgICBmYWlsdXJlQ2FsbGJhY2soKTsK
ICAgICAgICAgcmV0dXJuOwpAQCAtNTQsOSArNTQsOSBAQCB2b2lkIENyeXB0b0FsZ29yaXRobUFF
U19LVzo6cGxhdGZvcm1FbmNyeXB0KGNvbnN0IENyeXB0b0tleUFFUyYga2V5LCBjb25zdCBDcnlw
dAogICAgIGNhbGxiYWNrKHJlc3VsdCk7CiB9CiAKLXZvaWQgQ3J5cHRvQWxnb3JpdGhtQUVTX0tX
OjpwbGF0Zm9ybURlY3J5cHQoY29uc3QgQ3J5cHRvS2V5QUVTJiBrZXksIGNvbnN0IENyeXB0b09w
ZXJhdGlvbkRhdGEmIGRhdGEsIFZlY3RvckNhbGxiYWNrJiYgY2FsbGJhY2ssIFZvaWRDYWxsYmFj
ayYmIGZhaWx1cmVDYWxsYmFjaywgRXhjZXB0aW9uQ29kZSYpCit2b2lkIENyeXB0b0FsZ29yaXRo
bUFFU19LVzo6cGxhdGZvcm1EZWNyeXB0KGNvbnN0IENyeXB0b0tleUFFUyYga2V5LCBjb25zdCBC
dWZmZXJTb3VyY2UmIGRhdGEsIFZlY3RvckNhbGxiYWNrJiYgY2FsbGJhY2ssIFZvaWRDYWxsYmFj
ayYmIGZhaWx1cmVDYWxsYmFjaywgRXhjZXB0aW9uQ29kZSYpCiB7Ci0gICAgVmVjdG9yPHVpbnQ4
X3Q+IHJlc3VsdChDQ1N5bW1ldHJpY1Vud3JhcHBlZFNpemUoa0NDV1JBUEFFUywgZGF0YS5zZWNv
bmQpKTsKKyAgICBWZWN0b3I8dWludDhfdD4gcmVzdWx0KENDU3ltbWV0cmljVW53cmFwcGVkU2l6
ZShrQ0NXUkFQQUVTLCBkYXRhLmxlbmd0aCkpOwogICAgIHNpemVfdCByZXN1bHRTaXplID0gcmVz
dWx0LnNpemUoKTsKIAogICAgIGlmIChyZXN1bHRTaXplICUgOCkgewpAQCAtNjQsNyArNjQsNyBA
QCB2b2lkIENyeXB0b0FsZ29yaXRobUFFU19LVzo6cGxhdGZvcm1EZWNyeXB0KGNvbnN0IENyeXB0
b0tleUFFUyYga2V5LCBjb25zdCBDcnlwdAogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAg
aW50IHN0YXR1cyA9IENDU3ltbWV0cmljS2V5VW53cmFwKGtDQ1dSQVBBRVMsIENDcmZjMzM5NF9p
diwgQ0NyZmMzMzk0X2l2TGVuLCBrZXkua2V5KCkuZGF0YSgpLCBrZXkua2V5KCkuc2l6ZSgpLCBk
YXRhLmZpcnN0LCBkYXRhLnNlY29uZCwgcmVzdWx0LmRhdGEoKSwgJnJlc3VsdFNpemUpOworICAg
IGludCBzdGF0dXMgPSBDQ1N5bW1ldHJpY0tleVVud3JhcChrQ0NXUkFQQUVTLCBDQ3JmYzMzOTRf
aXYsIENDcmZjMzM5NF9pdkxlbiwga2V5LmtleSgpLmRhdGEoKSwga2V5LmtleSgpLnNpemUoKSwg
ZGF0YS5kYXRhLCBkYXRhLmxlbmd0aCwgcmVzdWx0LmRhdGEoKSwgJnJlc3VsdFNpemUpOwogICAg
IGlmIChzdGF0dXMpIHsKICAgICAgICAgZmFpbHVyZUNhbGxiYWNrKCk7CiAgICAgICAgIHJldHVy
bjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9tYWMvQ3J5cHRvQWxnb3JpdGht
SE1BQ01hYy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vbWFjL0NyeXB0b0FsZ29yaXRobUhN
QUNNYWMuY3BwCmluZGV4IDI5NmE3OGFiNTdmZDNiOTViOTNkZWFiOGE2ZjcyNTA5ODY0YzY3NGQu
LjZiNjRmOGZiMjRkYzJiYTdmMjViOGEwMWE5Zjg4Y2M2MGQ4NTY3MDYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2NyeXB0by9tYWMvQ3J5cHRvQWxnb3JpdGhtSE1BQ01hYy5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvY3J5cHRvL21hYy9DcnlwdG9BbGdvcml0aG1ITUFDTWFjLmNwcApAQCAt
NTksNyArNTksNyBAQCBzdGF0aWMgYm9vbCBnZXRDb21tb25DcnlwdG9ITUFDQWxnb3JpdGhtKENy
eXB0b0FsZ29yaXRobUlkZW50aWZpZXIgaGFzaEZ1bmN0aW9uLAogICAgIH0KIH0KIAotc3RhdGlj
IFZlY3Rvcjx1aW50OF90PiBjYWxjdWxhdGVTaWduYXR1cmUoQ0NIbWFjQWxnb3JpdGhtIGFsZ29y
aXRobSwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBrZXksIGNvbnN0IENyeXB0b09wZXJhdGlvbkRh
dGEmIGRhdGEpCitzdGF0aWMgVmVjdG9yPHVpbnQ4X3Q+IGNhbGN1bGF0ZVNpZ25hdHVyZShDQ0ht
YWNBbGdvcml0aG0gYWxnb3JpdGhtLCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGtleSwgY29uc3Qg
QnVmZmVyU291cmNlJiBkYXRhKQogewogICAgIHNpemVfdCBkaWdlc3RMZW5ndGg7CiAgICAgc3dp
dGNoIChhbGdvcml0aG0pIHsKQEAgLTg1LDExICs4NSwxMSBAQCBzdGF0aWMgVmVjdG9yPHVpbnQ4
X3Q+IGNhbGN1bGF0ZVNpZ25hdHVyZShDQ0htYWNBbGdvcml0aG0gYWxnb3JpdGhtLCBjb25zdCBW
ZWN0bwogCiAgICAgVmVjdG9yPHVpbnQ4X3Q+IHJlc3VsdChkaWdlc3RMZW5ndGgpOwogICAgIGNv
bnN0IHZvaWQqIGtleURhdGEgPSBrZXkuZGF0YSgpID8ga2V5LmRhdGEoKSA6IHJlaW50ZXJwcmV0
X2Nhc3Q8Y29uc3QgdWludDhfdCo+KCIiKTsgLy8gPHJkYXI6Ly9wcm9ibGVtLzE1NDY3NDI1PiBI
TUFDIGNyYXNoZXMgd2hlbiBrZXkgcG9pbnRlciBpcyBudWxsLgotICAgIENDSG1hYyhhbGdvcml0
aG0sIGtleURhdGEsIGtleS5zaXplKCksIGRhdGEuZmlyc3QsIGRhdGEuc2Vjb25kLCByZXN1bHQu
ZGF0YSgpKTsKKyAgICBDQ0htYWMoYWxnb3JpdGhtLCBrZXlEYXRhLCBrZXkuc2l6ZSgpLCBkYXRh
LmRhdGEsIGRhdGEubGVuZ3RoLCByZXN1bHQuZGF0YSgpKTsKICAgICByZXR1cm4gcmVzdWx0Owog
fQogCi12b2lkIENyeXB0b0FsZ29yaXRobUhNQUM6OnBsYXRmb3JtU2lnbihjb25zdCBDcnlwdG9B
bGdvcml0aG1IbWFjUGFyYW1zRGVwcmVjYXRlZCYgcGFyYW1ldGVycywgY29uc3QgQ3J5cHRvS2V5
SE1BQyYga2V5LCBjb25zdCBDcnlwdG9PcGVyYXRpb25EYXRhJiBkYXRhLCBWZWN0b3JDYWxsYmFj
ayYmIGNhbGxiYWNrLCBWb2lkQ2FsbGJhY2smJiwgRXhjZXB0aW9uQ29kZSYgZWMpCit2b2lkIENy
eXB0b0FsZ29yaXRobUhNQUM6OnBsYXRmb3JtU2lnbihjb25zdCBDcnlwdG9BbGdvcml0aG1IbWFj
UGFyYW1zRGVwcmVjYXRlZCYgcGFyYW1ldGVycywgY29uc3QgQ3J5cHRvS2V5SE1BQyYga2V5LCBj
b25zdCBCdWZmZXJTb3VyY2UmIGRhdGEsIFZlY3RvckNhbGxiYWNrJiYgY2FsbGJhY2ssIFZvaWRD
YWxsYmFjayYmLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBDQ0htYWNBbGdvcml0aG0gYWxn
b3JpdGhtOwogICAgIGlmICghZ2V0Q29tbW9uQ3J5cHRvSE1BQ0FsZ29yaXRobShwYXJhbWV0ZXJz
Lmhhc2gsIGFsZ29yaXRobSkpIHsKQEAgLTEwMiw3ICsxMDIsNyBAQCB2b2lkIENyeXB0b0FsZ29y
aXRobUhNQUM6OnBsYXRmb3JtU2lnbihjb25zdCBDcnlwdG9BbGdvcml0aG1IbWFjUGFyYW1zRGVw
cmVjYXRlZAogICAgIGNhbGxiYWNrKHNpZ25hdHVyZSk7CiB9CiAKLXZvaWQgQ3J5cHRvQWxnb3Jp
dGhtSE1BQzo6cGxhdGZvcm1WZXJpZnkoY29uc3QgQ3J5cHRvQWxnb3JpdGhtSG1hY1BhcmFtc0Rl
cHJlY2F0ZWQmIHBhcmFtZXRlcnMsIGNvbnN0IENyeXB0b0tleUhNQUMmIGtleSwgY29uc3QgQ3J5
cHRvT3BlcmF0aW9uRGF0YSYgZXhwZWN0ZWRTaWduYXR1cmUsIGNvbnN0IENyeXB0b09wZXJhdGlv
bkRhdGEmIGRhdGEsIEJvb2xDYWxsYmFjayYmIGNhbGxiYWNrLCBWb2lkQ2FsbGJhY2smJiwgRXhj
ZXB0aW9uQ29kZSYgZWMpCit2b2lkIENyeXB0b0FsZ29yaXRobUhNQUM6OnBsYXRmb3JtVmVyaWZ5
KGNvbnN0IENyeXB0b0FsZ29yaXRobUhtYWNQYXJhbXNEZXByZWNhdGVkJiBwYXJhbWV0ZXJzLCBj
b25zdCBDcnlwdG9LZXlITUFDJiBrZXksIGNvbnN0IEJ1ZmZlclNvdXJjZSYgZXhwZWN0ZWRTaWdu
YXR1cmUsIGNvbnN0IEJ1ZmZlclNvdXJjZSYgZGF0YSwgQm9vbENhbGxiYWNrJiYgY2FsbGJhY2ss
IFZvaWRDYWxsYmFjayYmLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBDQ0htYWNBbGdvcml0
aG0gYWxnb3JpdGhtOwogICAgIGlmICghZ2V0Q29tbW9uQ3J5cHRvSE1BQ0FsZ29yaXRobShwYXJh
bWV0ZXJzLmhhc2gsIGFsZ29yaXRobSkpIHsKQEAgLTExMyw3ICsxMTMsNyBAQCB2b2lkIENyeXB0
b0FsZ29yaXRobUhNQUM6OnBsYXRmb3JtVmVyaWZ5KGNvbnN0IENyeXB0b0FsZ29yaXRobUhtYWNQ
YXJhbXNEZXByZWNhdAogICAgIFZlY3Rvcjx1aW50OF90PiBzaWduYXR1cmUgPSBjYWxjdWxhdGVT
aWduYXR1cmUoYWxnb3JpdGhtLCBrZXkua2V5KCksIGRhdGEpOwogCiAgICAgLy8gVXNpbmcgYSBj
b25zdGFudCB0aW1lIGNvbXBhcmlzb24gdG8gcHJldmVudCB0aW1pbmcgYXR0YWNrcy4KLSAgICBi
b29sIHJlc3VsdCA9IHNpZ25hdHVyZS5zaXplKCkgPT0gZXhwZWN0ZWRTaWduYXR1cmUuc2Vjb25k
ICYmICFjb25zdGFudFRpbWVNZW1jbXAoc2lnbmF0dXJlLmRhdGEoKSwgZXhwZWN0ZWRTaWduYXR1
cmUuZmlyc3QsIHNpZ25hdHVyZS5zaXplKCkpOworICAgIGJvb2wgcmVzdWx0ID0gc2lnbmF0dXJl
LnNpemUoKSA9PSBleHBlY3RlZFNpZ25hdHVyZS5sZW5ndGggJiYgIWNvbnN0YW50VGltZU1lbWNt
cChzaWduYXR1cmUuZGF0YSgpLCBleHBlY3RlZFNpZ25hdHVyZS5kYXRhLCBzaWduYXR1cmUuc2l6
ZSgpKTsKIAogICAgIGNhbGxiYWNrKHJlc3VsdCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9jcnlwdG8vbWFjL0NyeXB0b0FsZ29yaXRobVJTQUVTX1BLQ1MxX3YxXzVNYWMuY3BwIGIv
U291cmNlL1dlYkNvcmUvY3J5cHRvL21hYy9DcnlwdG9BbGdvcml0aG1SU0FFU19QS0NTMV92MV81
TWFjLmNwcAppbmRleCA3NzU5ODM0NDc4YTc4Yzg1ZjM0ODM1MDFhMDZiMWU2MDI1NmY4NGY4Li4x
N2Q4ZjU2NDlhZDg4M2FmMTFhZDMxMWQxODBiMDY2OTM5MjVhOTI3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9jcnlwdG8vbWFjL0NyeXB0b0FsZ29yaXRobVJTQUVTX1BLQ1MxX3YxXzVNYWMu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9tYWMvQ3J5cHRvQWxnb3JpdGhtUlNBRVNf
UEtDUzFfdjFfNU1hYy5jcHAKQEAgLTMzLDExICszMywxMSBAQAogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKLXZvaWQgQ3J5cHRvQWxnb3JpdGhtUlNBRVNfUEtDUzFfdjFfNTo6cGxhdGZvcm1FbmNy
eXB0KGNvbnN0IENyeXB0b0tleVJTQSYga2V5LCBjb25zdCBDcnlwdG9PcGVyYXRpb25EYXRhJiBk
YXRhLCBWZWN0b3JDYWxsYmFjayYmIGNhbGxiYWNrLCBWb2lkQ2FsbGJhY2smJiBmYWlsdXJlQ2Fs
bGJhY2ssIEV4Y2VwdGlvbkNvZGUmKQordm9pZCBDcnlwdG9BbGdvcml0aG1SU0FFU19QS0NTMV92
MV81OjpwbGF0Zm9ybUVuY3J5cHQoY29uc3QgQ3J5cHRvS2V5UlNBJiBrZXksIGNvbnN0IEJ1ZmZl
clNvdXJjZSYgZGF0YSwgVmVjdG9yQ2FsbGJhY2smJiBjYWxsYmFjaywgVm9pZENhbGxiYWNrJiYg
ZmFpbHVyZUNhbGxiYWNrLCBFeGNlcHRpb25Db2RlJikKIHsKICAgICBWZWN0b3I8dWludDhfdD4g
Y2lwaGVyVGV4dCgxMDI0KTsKICAgICBzaXplX3QgY2lwaGVyVGV4dExlbmd0aCA9IGNpcGhlclRl
eHQuc2l6ZSgpOwotICAgIENDQ3J5cHRvclN0YXR1cyBzdGF0dXMgPSBDQ1JTQUNyeXB0b3JFbmNy
eXB0KGtleS5wbGF0Zm9ybUtleSgpLCBjY1BLQ1MxUGFkZGluZywgZGF0YS5maXJzdCwgZGF0YS5z
ZWNvbmQsIGNpcGhlclRleHQuZGF0YSgpLCAmY2lwaGVyVGV4dExlbmd0aCwgMCwgMCwga0NDRGln
ZXN0Tm9uZSk7CisgICAgQ0NDcnlwdG9yU3RhdHVzIHN0YXR1cyA9IENDUlNBQ3J5cHRvckVuY3J5
cHQoa2V5LnBsYXRmb3JtS2V5KCksIGNjUEtDUzFQYWRkaW5nLCBkYXRhLmRhdGEsIGRhdGEubGVu
Z3RoLCBjaXBoZXJUZXh0LmRhdGEoKSwgJmNpcGhlclRleHRMZW5ndGgsIDAsIDAsIGtDQ0RpZ2Vz
dE5vbmUpOwogICAgIGlmIChzdGF0dXMpIHsKICAgICAgICAgZmFpbHVyZUNhbGxiYWNrKCk7CiAg
ICAgICAgIHJldHVybjsKQEAgLTQ3LDExICs0NywxMSBAQCB2b2lkIENyeXB0b0FsZ29yaXRobVJT
QUVTX1BLQ1MxX3YxXzU6OnBsYXRmb3JtRW5jcnlwdChjb25zdCBDcnlwdG9LZXlSU0EmIGtleSwg
YwogICAgIGNhbGxiYWNrKGNpcGhlclRleHQpOwogfQogCi12b2lkIENyeXB0b0FsZ29yaXRobVJT
QUVTX1BLQ1MxX3YxXzU6OnBsYXRmb3JtRGVjcnlwdChjb25zdCBDcnlwdG9LZXlSU0EmIGtleSwg
Y29uc3QgQ3J5cHRvT3BlcmF0aW9uRGF0YSYgZGF0YSwgVmVjdG9yQ2FsbGJhY2smJiBjYWxsYmFj
aywgVm9pZENhbGxiYWNrJiYgZmFpbHVyZUNhbGxiYWNrLCBFeGNlcHRpb25Db2RlJikKK3ZvaWQg
Q3J5cHRvQWxnb3JpdGhtUlNBRVNfUEtDUzFfdjFfNTo6cGxhdGZvcm1EZWNyeXB0KGNvbnN0IENy
eXB0b0tleVJTQSYga2V5LCBjb25zdCBCdWZmZXJTb3VyY2UmIGRhdGEsIFZlY3RvckNhbGxiYWNr
JiYgY2FsbGJhY2ssIFZvaWRDYWxsYmFjayYmIGZhaWx1cmVDYWxsYmFjaywgRXhjZXB0aW9uQ29k
ZSYpCiB7CiAgICAgVmVjdG9yPHVpbnQ4X3Q+IHBsYWluVGV4dCgxMDI0KTsKICAgICBzaXplX3Qg
cGxhaW5UZXh0TGVuZ3RoID0gcGxhaW5UZXh0LnNpemUoKTsKLSAgICBDQ0NyeXB0b3JTdGF0dXMg
c3RhdHVzID0gQ0NSU0FDcnlwdG9yRGVjcnlwdChrZXkucGxhdGZvcm1LZXkoKSwgY2NQS0NTMVBh
ZGRpbmcsIGRhdGEuZmlyc3QsIGRhdGEuc2Vjb25kLCBwbGFpblRleHQuZGF0YSgpLCAmcGxhaW5U
ZXh0TGVuZ3RoLCAwLCAwLCBrQ0NEaWdlc3ROb25lKTsKKyAgICBDQ0NyeXB0b3JTdGF0dXMgc3Rh
dHVzID0gQ0NSU0FDcnlwdG9yRGVjcnlwdChrZXkucGxhdGZvcm1LZXkoKSwgY2NQS0NTMVBhZGRp
bmcsIGRhdGEuZGF0YSwgZGF0YS5sZW5ndGgsIHBsYWluVGV4dC5kYXRhKCksICZwbGFpblRleHRM
ZW5ndGgsIDAsIDAsIGtDQ0RpZ2VzdE5vbmUpOwogICAgIGlmIChzdGF0dXMpIHsKICAgICAgICAg
ZmFpbHVyZUNhbGxiYWNrKCk7CiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2NyeXB0by9tYWMvQ3J5cHRvQWxnb3JpdGhtUlNBU1NBX1BLQ1MxX3YxXzVNYWMuY3Bw
IGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL21hYy9DcnlwdG9BbGdvcml0aG1SU0FTU0FfUEtDUzFf
djFfNU1hYy5jcHAKaW5kZXggMGFiOGY0MmI4NWZiMTlmZjlhNDQ4NTc5NGQxODI3MmNjMDU2MTVj
Yy4uZjU3ZWJiN2EwM2YxNGQxN2Y2ZWYwNTgwNTgyNmI1MzdjMmM1ODc2MiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvY3J5cHRvL21hYy9DcnlwdG9BbGdvcml0aG1SU0FTU0FfUEtDUzFfdjFf
NU1hYy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL21hYy9DcnlwdG9BbGdvcml0aG1S
U0FTU0FfUEtDUzFfdjFfNU1hYy5jcHAKQEAgLTU5LDcgKzU5LDcgQEAgaW5saW5lIGJvb2wgZ2V0
Q3J5cHRvRGlnZXN0QWxnb3JpdGhtKENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXIgaGFzaEZ1bmN0
aW9uLCBDcnkKICAgICB9CiB9CiAKLXZvaWQgQ3J5cHRvQWxnb3JpdGhtUlNBU1NBX1BLQ1MxX3Yx
XzU6OnBsYXRmb3JtU2lnbihjb25zdCBDcnlwdG9BbGdvcml0aG1Sc2FTc2FQYXJhbXNEZXByZWNh
dGVkJiBwYXJhbWV0ZXJzLCBjb25zdCBDcnlwdG9LZXlSU0EmIGtleSwgY29uc3QgQ3J5cHRvT3Bl
cmF0aW9uRGF0YSYgZGF0YSwgVmVjdG9yQ2FsbGJhY2smJiBjYWxsYmFjaywgVm9pZENhbGxiYWNr
JiYgZmFpbHVyZUNhbGxiYWNrLCBFeGNlcHRpb25Db2RlJiBlYykKK3ZvaWQgQ3J5cHRvQWxnb3Jp
dGhtUlNBU1NBX1BLQ1MxX3YxXzU6OnBsYXRmb3JtU2lnbihjb25zdCBDcnlwdG9BbGdvcml0aG1S
c2FTc2FQYXJhbXNEZXByZWNhdGVkJiBwYXJhbWV0ZXJzLCBjb25zdCBDcnlwdG9LZXlSU0EmIGtl
eSwgY29uc3QgQnVmZmVyU291cmNlJiBkYXRhLCBWZWN0b3JDYWxsYmFjayYmIGNhbGxiYWNrLCBW
b2lkQ2FsbGJhY2smJiBmYWlsdXJlQ2FsbGJhY2ssIEV4Y2VwdGlvbkNvZGUmIGVjKQogewogICAg
IENDRGlnZXN0QWxnb3JpdGhtIGRpZ2VzdEFsZ29yaXRobTsKICAgICBpZiAoIWdldENvbW1vbkNy
eXB0b0RpZ2VzdEFsZ29yaXRobShwYXJhbWV0ZXJzLmhhc2gsIGRpZ2VzdEFsZ29yaXRobSkpIHsK
QEAgLTc5LDcgKzc5LDcgQEAgdm9pZCBDcnlwdG9BbGdvcml0aG1SU0FTU0FfUEtDUzFfdjFfNTo6
cGxhdGZvcm1TaWduKGNvbnN0IENyeXB0b0FsZ29yaXRobVJzYVNzYVAKICAgICAgICAgcmV0dXJu
OwogICAgIH0KIAotICAgIGRpZ2VzdC0+YWRkQnl0ZXMoZGF0YS5maXJzdCwgZGF0YS5zZWNvbmQp
OworICAgIGRpZ2VzdC0+YWRkQnl0ZXMoZGF0YS5kYXRhLCBkYXRhLmxlbmd0aCk7CiAKICAgICBW
ZWN0b3I8dWludDhfdD4gZGlnZXN0RGF0YSA9IGRpZ2VzdC0+Y29tcHV0ZUhhc2goKTsKIApAQCAt
OTYsNyArOTYsNyBAQCB2b2lkIENyeXB0b0FsZ29yaXRobVJTQVNTQV9QS0NTMV92MV81OjpwbGF0
Zm9ybVNpZ24oY29uc3QgQ3J5cHRvQWxnb3JpdGhtUnNhU3NhUAogICAgIGNhbGxiYWNrKHNpZ25h
dHVyZSk7CiB9CiAKLXZvaWQgQ3J5cHRvQWxnb3JpdGhtUlNBU1NBX1BLQ1MxX3YxXzU6OnBsYXRm
b3JtVmVyaWZ5KGNvbnN0IENyeXB0b0FsZ29yaXRobVJzYVNzYVBhcmFtc0RlcHJlY2F0ZWQmIHBh
cmFtZXRlcnMsIGNvbnN0IENyeXB0b0tleVJTQSYga2V5LCBjb25zdCBDcnlwdG9PcGVyYXRpb25E
YXRhJiBzaWduYXR1cmUsIGNvbnN0IENyeXB0b09wZXJhdGlvbkRhdGEmIGRhdGEsIEJvb2xDYWxs
YmFjayYmIGNhbGxiYWNrLCBWb2lkQ2FsbGJhY2smJiBmYWlsdXJlQ2FsbGJhY2ssIEV4Y2VwdGlv
bkNvZGUmIGVjKQordm9pZCBDcnlwdG9BbGdvcml0aG1SU0FTU0FfUEtDUzFfdjFfNTo6cGxhdGZv
cm1WZXJpZnkoY29uc3QgQ3J5cHRvQWxnb3JpdGhtUnNhU3NhUGFyYW1zRGVwcmVjYXRlZCYgcGFy
YW1ldGVycywgY29uc3QgQ3J5cHRvS2V5UlNBJiBrZXksIGNvbnN0IEJ1ZmZlclNvdXJjZSYgc2ln
bmF0dXJlLCBjb25zdCBCdWZmZXJTb3VyY2UmIGRhdGEsIEJvb2xDYWxsYmFjayYmIGNhbGxiYWNr
LCBWb2lkQ2FsbGJhY2smJiBmYWlsdXJlQ2FsbGJhY2ssIEV4Y2VwdGlvbkNvZGUmIGVjKQogewog
ICAgIENDRGlnZXN0QWxnb3JpdGhtIGRpZ2VzdEFsZ29yaXRobTsKICAgICBpZiAoIWdldENvbW1v
bkNyeXB0b0RpZ2VzdEFsZ29yaXRobShwYXJhbWV0ZXJzLmhhc2gsIGRpZ2VzdEFsZ29yaXRobSkp
IHsKQEAgLTExNiwxMSArMTE2LDExIEBAIHZvaWQgQ3J5cHRvQWxnb3JpdGhtUlNBU1NBX1BLQ1Mx
X3YxXzU6OnBsYXRmb3JtVmVyaWZ5KGNvbnN0IENyeXB0b0FsZ29yaXRobVJzYVNzCiAgICAgICAg
IHJldHVybjsKICAgICB9CiAKLSAgICBkaWdlc3QtPmFkZEJ5dGVzKGRhdGEuZmlyc3QsIGRhdGEu
c2Vjb25kKTsKKyAgICBkaWdlc3QtPmFkZEJ5dGVzKGRhdGEuZGF0YSwgZGF0YS5sZW5ndGgpOwog
CiAgICAgVmVjdG9yPHVpbnQ4X3Q+IGRpZ2VzdERhdGEgPSBkaWdlc3QtPmNvbXB1dGVIYXNoKCk7
CiAKLSAgICBDQ0NyeXB0b3JTdGF0dXMgc3RhdHVzID0gQ0NSU0FDcnlwdG9yVmVyaWZ5KGtleS5w
bGF0Zm9ybUtleSgpLCBjY1BLQ1MxUGFkZGluZywgZGlnZXN0RGF0YS5kYXRhKCksIGRpZ2VzdERh
dGEuc2l6ZSgpLCBkaWdlc3RBbGdvcml0aG0sIDAsIHNpZ25hdHVyZS5maXJzdCwgc2lnbmF0dXJl
LnNlY29uZCk7CisgICAgQ0NDcnlwdG9yU3RhdHVzIHN0YXR1cyA9IENDUlNBQ3J5cHRvclZlcmlm
eShrZXkucGxhdGZvcm1LZXkoKSwgY2NQS0NTMVBhZGRpbmcsIGRpZ2VzdERhdGEuZGF0YSgpLCBk
aWdlc3REYXRhLnNpemUoKSwgZGlnZXN0QWxnb3JpdGhtLCAwLCBzaWduYXR1cmUuZGF0YSwgc2ln
bmF0dXJlLmxlbmd0aCk7CiAgICAgaWYgKCFzdGF0dXMpCiAgICAgICAgIGNhbGxiYWNrKHRydWUp
OwogICAgIGVsc2UgaWYgKHN0YXR1cyA9PSBrQ0NOb3RWZXJpZmllZCB8fCBzdGF0dXMgPT0ga0ND
RGVjb2RlRXJyb3IpIC8vIDxyZGFyOi8vcHJvYmxlbS8xNTQ2NDk4Mj4gQ0NSU0FDcnlwdG9yVmVy
aWZ5IHJldHVybnMga0NDRGVjb2RlRXJyb3IgaW5zdGVhZCBvZiBrQ0NOb3RWZXJpZmllZCBzb21l
dGltZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9tYWMvQ3J5cHRvQWxnb3Jp
dGhtUlNBX09BRVBNYWMuY3BwIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL21hYy9DcnlwdG9BbGdv
cml0aG1SU0FfT0FFUE1hYy5jcHAKaW5kZXggY2YyODFjYTg3NjAyMjRlZDA3YTdlNGEwMGFmZjFm
ZGQ4NTdjNWQwNi4uNTMwYWJjNzA1NTA5N2I3NTcxZWZjNmM4NDk1YzBkOTBjMGE2MjViMyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL21hYy9DcnlwdG9BbGdvcml0aG1SU0FfT0FF
UE1hYy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL21hYy9DcnlwdG9BbGdvcml0aG1S
U0FfT0FFUE1hYy5jcHAKQEAgLTM1LDcgKzM1LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
Ci12b2lkIENyeXB0b0FsZ29yaXRobVJTQV9PQUVQOjpwbGF0Zm9ybUVuY3J5cHQoY29uc3QgQ3J5
cHRvQWxnb3JpdGhtUnNhT2FlcFBhcmFtc0RlcHJlY2F0ZWQmIHBhcmFtZXRlcnMsIGNvbnN0IENy
eXB0b0tleVJTQSYga2V5LCBjb25zdCBDcnlwdG9PcGVyYXRpb25EYXRhJiBkYXRhLCBWZWN0b3JD
YWxsYmFjayYmIGNhbGxiYWNrLCBWb2lkQ2FsbGJhY2smJiBmYWlsdXJlQ2FsbGJhY2ssIEV4Y2Vw
dGlvbkNvZGUmIGVjKQordm9pZCBDcnlwdG9BbGdvcml0aG1SU0FfT0FFUDo6cGxhdGZvcm1FbmNy
eXB0KGNvbnN0IENyeXB0b0FsZ29yaXRobVJzYU9hZXBQYXJhbXNEZXByZWNhdGVkJiBwYXJhbWV0
ZXJzLCBjb25zdCBDcnlwdG9LZXlSU0EmIGtleSwgY29uc3QgQnVmZmVyU291cmNlJiBkYXRhLCBW
ZWN0b3JDYWxsYmFjayYmIGNhbGxiYWNrLCBWb2lkQ2FsbGJhY2smJiBmYWlsdXJlQ2FsbGJhY2ss
IEV4Y2VwdGlvbkNvZGUmIGVjKQogewogICAgIENDRGlnZXN0QWxnb3JpdGhtIGRpZ2VzdEFsZ29y
aXRobTsKICAgICBpZiAoIWdldENvbW1vbkNyeXB0b0RpZ2VzdEFsZ29yaXRobShwYXJhbWV0ZXJz
Lmhhc2gsIGRpZ2VzdEFsZ29yaXRobSkpIHsKQEAgLTQ2LDcgKzQ2LDcgQEAgdm9pZCBDcnlwdG9B
bGdvcml0aG1SU0FfT0FFUDo6cGxhdGZvcm1FbmNyeXB0KGNvbnN0IENyeXB0b0FsZ29yaXRobVJz
YU9hZXBQYXJhbXMKICAgICBWZWN0b3I8dWludDhfdD4gY2lwaGVyVGV4dCgxMDI0KTsKICAgICBz
aXplX3QgY2lwaGVyVGV4dExlbmd0aCA9IGNpcGhlclRleHQuc2l6ZSgpOwogICAgIEFTU0VSVChw
YXJhbWV0ZXJzLmhhc0xhYmVsIHx8IHBhcmFtZXRlcnMubGFiZWwuaXNFbXB0eSgpKTsKLSAgICBD
Q0NyeXB0b3JTdGF0dXMgc3RhdHVzID0gQ0NSU0FDcnlwdG9yRW5jcnlwdChrZXkucGxhdGZvcm1L
ZXkoKSwgY2NPQUVQUGFkZGluZywgZGF0YS5maXJzdCwgZGF0YS5zZWNvbmQsIGNpcGhlclRleHQu
ZGF0YSgpLCAmY2lwaGVyVGV4dExlbmd0aCwgcGFyYW1ldGVycy5sYWJlbC5kYXRhKCksIHBhcmFt
ZXRlcnMubGFiZWwuc2l6ZSgpLCBkaWdlc3RBbGdvcml0aG0pOworICAgIENDQ3J5cHRvclN0YXR1
cyBzdGF0dXMgPSBDQ1JTQUNyeXB0b3JFbmNyeXB0KGtleS5wbGF0Zm9ybUtleSgpLCBjY09BRVBQ
YWRkaW5nLCBkYXRhLmRhdGEsIGRhdGEubGVuZ3RoLCBjaXBoZXJUZXh0LmRhdGEoKSwgJmNpcGhl
clRleHRMZW5ndGgsIHBhcmFtZXRlcnMubGFiZWwuZGF0YSgpLCBwYXJhbWV0ZXJzLmxhYmVsLnNp
emUoKSwgZGlnZXN0QWxnb3JpdGhtKTsKICAgICBpZiAoc3RhdHVzKSB7CiAgICAgICAgIGZhaWx1
cmVDYWxsYmFjaygpOwogICAgICAgICByZXR1cm47CkBAIC01Niw3ICs1Niw3IEBAIHZvaWQgQ3J5
cHRvQWxnb3JpdGhtUlNBX09BRVA6OnBsYXRmb3JtRW5jcnlwdChjb25zdCBDcnlwdG9BbGdvcml0
aG1Sc2FPYWVwUGFyYW1zCiAgICAgY2FsbGJhY2soY2lwaGVyVGV4dCk7CiB9CiAKLXZvaWQgQ3J5
cHRvQWxnb3JpdGhtUlNBX09BRVA6OnBsYXRmb3JtRGVjcnlwdChjb25zdCBDcnlwdG9BbGdvcml0
aG1Sc2FPYWVwUGFyYW1zRGVwcmVjYXRlZCYgcGFyYW1ldGVycywgY29uc3QgQ3J5cHRvS2V5UlNB
JiBrZXksIGNvbnN0IENyeXB0b09wZXJhdGlvbkRhdGEmIGRhdGEsIFZlY3RvckNhbGxiYWNrJiYg
Y2FsbGJhY2ssIFZvaWRDYWxsYmFjayYmIGZhaWx1cmVDYWxsYmFjaywgRXhjZXB0aW9uQ29kZSYg
ZWMpCit2b2lkIENyeXB0b0FsZ29yaXRobVJTQV9PQUVQOjpwbGF0Zm9ybURlY3J5cHQoY29uc3Qg
Q3J5cHRvQWxnb3JpdGhtUnNhT2FlcFBhcmFtc0RlcHJlY2F0ZWQmIHBhcmFtZXRlcnMsIGNvbnN0
IENyeXB0b0tleVJTQSYga2V5LCBjb25zdCBCdWZmZXJTb3VyY2UmIGRhdGEsIFZlY3RvckNhbGxi
YWNrJiYgY2FsbGJhY2ssIFZvaWRDYWxsYmFjayYmIGZhaWx1cmVDYWxsYmFjaywgRXhjZXB0aW9u
Q29kZSYgZWMpCiB7CiAgICAgQ0NEaWdlc3RBbGdvcml0aG0gZGlnZXN0QWxnb3JpdGhtOwogICAg
IGlmICghZ2V0Q29tbW9uQ3J5cHRvRGlnZXN0QWxnb3JpdGhtKHBhcmFtZXRlcnMuaGFzaCwgZGln
ZXN0QWxnb3JpdGhtKSkgewpAQCAtNjYsNyArNjYsNyBAQCB2b2lkIENyeXB0b0FsZ29yaXRobVJT
QV9PQUVQOjpwbGF0Zm9ybURlY3J5cHQoY29uc3QgQ3J5cHRvQWxnb3JpdGhtUnNhT2FlcFBhcmFt
cwogCiAgICAgVmVjdG9yPHVpbnQ4X3Q+IHBsYWluVGV4dCgxMDI0KTsKICAgICBzaXplX3QgcGxh
aW5UZXh0TGVuZ3RoID0gcGxhaW5UZXh0LnNpemUoKTsKLSAgICBDQ0NyeXB0b3JTdGF0dXMgc3Rh
dHVzID0gQ0NSU0FDcnlwdG9yRGVjcnlwdChrZXkucGxhdGZvcm1LZXkoKSwgY2NPQUVQUGFkZGlu
ZywgZGF0YS5maXJzdCwgZGF0YS5zZWNvbmQsIHBsYWluVGV4dC5kYXRhKCksICZwbGFpblRleHRM
ZW5ndGgsIHBhcmFtZXRlcnMubGFiZWwuZGF0YSgpLCBwYXJhbWV0ZXJzLmxhYmVsLnNpemUoKSwg
ZGlnZXN0QWxnb3JpdGhtKTsKKyAgICBDQ0NyeXB0b3JTdGF0dXMgc3RhdHVzID0gQ0NSU0FDcnlw
dG9yRGVjcnlwdChrZXkucGxhdGZvcm1LZXkoKSwgY2NPQUVQUGFkZGluZywgZGF0YS5kYXRhLCBk
YXRhLmxlbmd0aCwgcGxhaW5UZXh0LmRhdGEoKSwgJnBsYWluVGV4dExlbmd0aCwgcGFyYW1ldGVy
cy5sYWJlbC5kYXRhKCksIHBhcmFtZXRlcnMubGFiZWwuc2l6ZSgpLCBkaWdlc3RBbGdvcml0aG0p
OwogICAgIGlmIChzdGF0dXMpIHsKICAgICAgICAgZmFpbHVyZUNhbGxiYWNrKCk7CiAgICAgICAg
IHJldHVybjsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>291824</attachid>
            <date>2016-10-17 09:37:43 -0700</date>
            <delta_ts>2016-10-17 10:56:59 -0700</delta_ts>
            <desc>WIP</desc>
            <filename>bug-163541-20161017093409.patch</filename>
            <type>text/plain</type>
            <size>111093</size>
            <attacher name="Zan Dobersek">zan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA3NDAyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDg5ZWZmMWIzNThkNDY3
Y2ZkYWQ0NjY4YWEyNWRkNDgyZTc1M2U3MC4uY2IzNDY4NzkwODc1N2IzNTgyOGQ4NDdmNDIxNDAw
N2NiOWQ2MmI2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzMyBAQAorMjAxNi0xMC0xNyAgWmFu
IERvYmVyc2VrICA8emRvYmVyc2VrQGlnYWxpYS5jb20+CisKKyAgICAgICAgW1dlYklETF0gU3Vw
cG9ydCBCdWZmZXJTb3VyY2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE2MzU0MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIE5vIG5ldyB0ZXN0cyAoT09QUyEpLgorCisgICAgICAgICogTW9kdWxlcy9tZWRp
YXNvdXJjZS9Tb3VyY2VCdWZmZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVy
OjphcHBlbmRCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyOjphcHBlbmRC
dWZmZXJJbnRlcm5hbCk6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXNvdXJjZS9Tb3VyY2VCdWZm
ZXIuaDoKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc291cmNlL1NvdXJjZUJ1ZmZlci5pZGw6Cisg
ICAgICAgICogYmluZGluZ3MvZ2VuZXJpYy9JRExUeXBlcy5oOgorICAgICAgICAqIGJpbmRpbmdz
L2pzL0J1ZmZlclNvdXJjZS5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxn
b3JpdGhtcy9DcnlwdG9BbGdvcml0aG1TSEExLmguCisgICAgICAgICogYmluZGluZ3MvanMvSlNE
T01CaW5kaW5nLmg6CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01Db252ZXJ0Lmg6CisgICAg
ICAgIChXZWJDb3JlOjpDb252ZXJ0ZXI8SURMQnVmZmVyU291cmNlPjo6Y29udmVydCk6CisgICAg
ICAgICogYmluZGluZ3MvanMvSlNXZWJLaXRTdWJ0bGVDcnlwdG9DdXN0b20uY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SlNXZWJLaXRTdWJ0bGVDcnlwdG86OmVuY3J5cHQpOgorICAgICAgICAoV2Vi
Q29yZTo6SlNXZWJLaXRTdWJ0bGVDcnlwdG86OmRlY3J5cHQpOgorICAgICAgICAoV2ViQ29yZTo6
SlNXZWJLaXRTdWJ0bGVDcnlwdG86OnNpZ24pOgorICAgICAgICAoV2ViQ29yZTo6SlNXZWJLaXRT
dWJ0bGVDcnlwdG86OnZlcmlmeSk6CisgICAgICAgIChXZWJDb3JlOjpKU1dlYktpdFN1YnRsZUNy
eXB0bzo6ZGlnZXN0KToKKyAgICAgICAgKFdlYkNvcmU6OmltcG9ydEtleSk6CisgICAgICAgIChX
ZWJDb3JlOjpKU1dlYktpdFN1YnRsZUNyeXB0bzo6aW1wb3J0S2V5KToKKyAgICAgICAgKFdlYkNv
cmU6OkpTV2ViS2l0U3VidGxlQ3J5cHRvOjp3cmFwS2V5KToKKyAgICAgICAgKFdlYkNvcmU6OkpT
V2ViS2l0U3VidGxlQ3J5cHRvOjp1bndyYXBLZXkpOgorICAgICAgICAqIGJpbmRpbmdzL3Njcmlw
dHMvQ29kZUdlbmVyYXRvci5wbToKKyAgICAgICAgKFNraXBJbmNsdWRlSGVhZGVyKToKKyAgICAg
ICAgKElzQnVmZmVyU291cmNlVHlwZSk6CisgICAgICAgIChJc1dyYXBwZXJUeXBlKToKKyAgICAg
ICAgKiBiaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbToKKyAgICAgICAgKEFkZENs
YXNzRm9yd2FyZElmTmVlZGVkKToKKyAgICAgICAgKEdldEJhc2VJRExUeXBlKToKKyAgICAgICAg
KElzSGFuZGxlZEJ5RE9NQ29udmVydCk6CisgICAgICAgICogY3J5cHRvL0NyeXB0b0FsZ29yaXRo
bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9BbGdvcml0aG06OmVuY3J5cHQpOgorICAg
ICAgICAoV2ViQ29yZTo6Q3J5cHRvQWxnb3JpdGhtOjpkZWNyeXB0KToKKyAgICAgICAgKFdlYkNv
cmU6OkNyeXB0b0FsZ29yaXRobTo6c2lnbik6CisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9BbGdv
cml0aG06OnZlcmlmeSk6CisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9BbGdvcml0aG06OmRpZ2Vz
dCk6CisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9BbGdvcml0aG06OmVuY3J5cHRGb3JXcmFwS2V5
KToKKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0FsZ29yaXRobTo6ZGVjcnlwdEZvclVud3JhcEtl
eSk6CisgICAgICAgICogY3J5cHRvL0NyeXB0b0FsZ29yaXRobS5oOgorICAgICAgICAqIGNyeXB0
by9DcnlwdG9LZXlTZXJpYWxpemF0aW9uLmg6CisgICAgICAgICogY3J5cHRvL1dlYktpdFN1YnRs
ZUNyeXB0by5pZGw6CisgICAgICAgICogY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGht
QUVTX0NCQy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9BbGdvcml0aG1BRVNfQ0JDOjpl
bmNyeXB0KToKKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0FsZ29yaXRobUFFU19DQkM6OmRlY3J5
cHQpOgorICAgICAgICAqIGNyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobUFFU19DQkMu
aDoKKyAgICAgICAgKiBjcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1BRVNfS1cuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvQWxnb3JpdGhtQUVTX0tXOjplbmNyeXB0Rm9yV3Jh
cEtleSk6CisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9BbGdvcml0aG1BRVNfS1c6OmRlY3J5cHRG
b3JVbndyYXBLZXkpOgorICAgICAgICAqIGNyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRo
bUFFU19LVy5oOgorICAgICAgICAqIGNyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobUhN
QUMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvQWxnb3JpdGhtSE1BQzo6c2lnbik6Cisg
ICAgICAgIChXZWJDb3JlOjpDcnlwdG9BbGdvcml0aG1ITUFDOjp2ZXJpZnkpOgorICAgICAgICAq
IGNyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobUhNQUMuaDoKKyAgICAgICAgKiBjcnlw
dG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1SU0FFU19QS0NTMV92MV81LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkNyeXB0b0FsZ29yaXRobVJTQUVTX1BLQ1MxX3YxXzU6OmVuY3J5cHQpOgor
ICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvQWxnb3JpdGhtUlNBRVNfUEtDUzFfdjFfNTo6ZGVjcnlw
dCk6CisgICAgICAgICogY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtUlNBRVNfUEtD
UzFfdjFfNS5oOgorICAgICAgICAqIGNyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVJT
QVNTQV9QS0NTMV92MV81LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0FsZ29yaXRobVJT
QVNTQV9QS0NTMV92MV81OjpzaWduKToKKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0FsZ29yaXRo
bVJTQVNTQV9QS0NTMV92MV81Ojp2ZXJpZnkpOgorICAgICAgICAqIGNyeXB0by9hbGdvcml0aG1z
L0NyeXB0b0FsZ29yaXRobVJTQVNTQV9QS0NTMV92MV81Lmg6CisgICAgICAgICogY3J5cHRvL2Fs
Z29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtUlNBX09BRVAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Q3J5cHRvQWxnb3JpdGhtUlNBX09BRVA6OmVuY3J5cHQpOgorICAgICAgICAoV2ViQ29yZTo6Q3J5
cHRvQWxnb3JpdGhtUlNBX09BRVA6OmRlY3J5cHQpOgorICAgICAgICAqIGNyeXB0by9hbGdvcml0
aG1zL0NyeXB0b0FsZ29yaXRobVJTQV9PQUVQLmg6CisgICAgICAgICogY3J5cHRvL2FsZ29yaXRo
bXMvQ3J5cHRvQWxnb3JpdGhtU0hBMS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9BbGdv
cml0aG1TSEExOjpkaWdlc3QpOgorICAgICAgICAqIGNyeXB0by9hbGdvcml0aG1zL0NyeXB0b0Fs
Z29yaXRobVNIQTEuaDoKKyAgICAgICAgKiBjcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0
aG1TSEEyMjQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvQWxnb3JpdGhtU0hBMjI0Ojpk
aWdlc3QpOgorICAgICAgICAqIGNyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVNIQTIy
NC5oOgorICAgICAgICAqIGNyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVNIQTI1Ni5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9BbGdvcml0aG1TSEEyNTY6OmRpZ2VzdCk6Cisg
ICAgICAgICogY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtU0hBMjU2Lmg6CisgICAg
ICAgICogY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtU0hBMzg0LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkNyeXB0b0FsZ29yaXRobVNIQTM4NDo6ZGlnZXN0KToKKyAgICAgICAgKiBj
cnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1TSEEzODQuaDoKKyAgICAgICAgKiBjcnlw
dG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1TSEE1MTIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Q3J5cHRvQWxnb3JpdGhtU0hBNTEyOjpkaWdlc3QpOgorICAgICAgICAqIGNyeXB0by9hbGdv
cml0aG1zL0NyeXB0b0FsZ29yaXRobVNIQTUxMi5oOgorICAgICAgICAqIGNyeXB0by9nbnV0bHMv
Q3J5cHRvQWxnb3JpdGhtQUVTX0NCQ0dudVRMUy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDcnlw
dG9BbGdvcml0aG1BRVNfQ0JDOjpwbGF0Zm9ybUVuY3J5cHQpOgorICAgICAgICAoV2ViQ29yZTo6
Q3J5cHRvQWxnb3JpdGhtQUVTX0NCQzo6cGxhdGZvcm1EZWNyeXB0KToKKyAgICAgICAgKiBjcnlw
dG8vZ251dGxzL0NyeXB0b0FsZ29yaXRobUFFU19LV0dudVRMUy5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpDcnlwdG9BbGdvcml0aG1BRVNfS1c6OnBsYXRmb3JtRW5jcnlwdCk6CisgICAgICAgIChX
ZWJDb3JlOjpDcnlwdG9BbGdvcml0aG1BRVNfS1c6OnBsYXRmb3JtRGVjcnlwdCk6CisgICAgICAg
ICogY3J5cHRvL2dudXRscy9DcnlwdG9BbGdvcml0aG1ITUFDR251VExTLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OmNhbGN1bGF0ZVNpZ25hdHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9B
bGdvcml0aG1ITUFDOjpwbGF0Zm9ybVNpZ24pOgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvQWxn
b3JpdGhtSE1BQzo6cGxhdGZvcm1WZXJpZnkpOgorICAgICAgICAqIGNyeXB0by9nbnV0bHMvQ3J5
cHRvQWxnb3JpdGhtUlNBRVNfUEtDUzFfdjFfNUdudVRMUy5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpDcnlwdG9BbGdvcml0aG1SU0FFU19QS0NTMV92MV81OjpwbGF0Zm9ybUVuY3J5cHQpOgorICAg
ICAgICAoV2ViQ29yZTo6Q3J5cHRvQWxnb3JpdGhtUlNBRVNfUEtDUzFfdjFfNTo6cGxhdGZvcm1E
ZWNyeXB0KToKKyAgICAgICAgKiBjcnlwdG8vZ251dGxzL0NyeXB0b0FsZ29yaXRobVJTQVNTQV9Q
S0NTMV92MV81R251VExTLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0FsZ29yaXRobVJT
QVNTQV9QS0NTMV92MV81OjpwbGF0Zm9ybVNpZ24pOgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRv
QWxnb3JpdGhtUlNBU1NBX1BLQ1MxX3YxXzU6OnBsYXRmb3JtVmVyaWZ5KToKKyAgICAgICAgKiBj
cnlwdG8vZ251dGxzL0NyeXB0b0FsZ29yaXRobVJTQV9PQUVQR251VExTLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkNyeXB0b0FsZ29yaXRobVJTQV9PQUVQOjpwbGF0Zm9ybUVuY3J5cHQpOgorICAg
ICAgICAoV2ViQ29yZTo6Q3J5cHRvQWxnb3JpdGhtUlNBX09BRVA6OnBsYXRmb3JtRGVjcnlwdCk6
CisgICAgICAgICogY3J5cHRvL2tleXMvQ3J5cHRvS2V5U2VyaWFsaXphdGlvblJhdy5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpDcnlwdG9LZXlTZXJpYWxpemF0aW9uUmF3OjpDcnlwdG9LZXlTZXJp
YWxpemF0aW9uUmF3KToKKyAgICAgICAgKiBjcnlwdG8va2V5cy9DcnlwdG9LZXlTZXJpYWxpemF0
aW9uUmF3Lmg6CisgICAgICAgICogY3J5cHRvL21hYy9DcnlwdG9BbGdvcml0aG1BRVNfQ0JDTWFj
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnRyYW5zZm9ybUFFU19DQkMpOgorICAgICAgICAoV2Vi
Q29yZTo6Q3J5cHRvQWxnb3JpdGhtQUVTX0NCQzo6cGxhdGZvcm1FbmNyeXB0KToKKyAgICAgICAg
KFdlYkNvcmU6OkNyeXB0b0FsZ29yaXRobUFFU19DQkM6OnBsYXRmb3JtRGVjcnlwdCk6CisgICAg
ICAgICogY3J5cHRvL21hYy9DcnlwdG9BbGdvcml0aG1BRVNfS1dNYWMuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Q3J5cHRvQWxnb3JpdGhtQUVTX0tXOjpwbGF0Zm9ybUVuY3J5cHQpOgorICAgICAg
ICAoV2ViQ29yZTo6Q3J5cHRvQWxnb3JpdGhtQUVTX0tXOjpwbGF0Zm9ybURlY3J5cHQpOgorICAg
ICAgICAqIGNyeXB0by9tYWMvQ3J5cHRvQWxnb3JpdGhtSE1BQ01hYy5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpjYWxjdWxhdGVTaWduYXR1cmUpOgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvQWxn
b3JpdGhtSE1BQzo6cGxhdGZvcm1TaWduKToKKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0FsZ29y
aXRobUhNQUM6OnBsYXRmb3JtVmVyaWZ5KToKKyAgICAgICAgKiBjcnlwdG8vbWFjL0NyeXB0b0Fs
Z29yaXRobVJTQUVTX1BLQ1MxX3YxXzVNYWMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRv
QWxnb3JpdGhtUlNBRVNfUEtDUzFfdjFfNTo6cGxhdGZvcm1FbmNyeXB0KToKKyAgICAgICAgKFdl
YkNvcmU6OkNyeXB0b0FsZ29yaXRobVJTQUVTX1BLQ1MxX3YxXzU6OnBsYXRmb3JtRGVjcnlwdCk6
CisgICAgICAgICogY3J5cHRvL21hYy9DcnlwdG9BbGdvcml0aG1SU0FTU0FfUEtDUzFfdjFfNU1h
Yy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9BbGdvcml0aG1SU0FTU0FfUEtDUzFfdjFf
NTo6cGxhdGZvcm1TaWduKToKKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0FsZ29yaXRobVJTQVNT
QV9QS0NTMV92MV81OjpwbGF0Zm9ybVZlcmlmeSk6CisgICAgICAgICogY3J5cHRvL21hYy9Dcnlw
dG9BbGdvcml0aG1SU0FfT0FFUE1hYy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9BbGdv
cml0aG1SU0FfT0FFUDo6cGxhdGZvcm1FbmNyeXB0KToKKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0
b0FsZ29yaXRobVJTQV9PQUVQOjpwbGF0Zm9ybURlY3J5cHQpOgorCiAyMDE2LTEwLTE2ICBOYW4g
V2FuZyAgPG5fd2FuZ0BhcHBsZS5jb20+CiAKICAgICAgICAgQVg6IFtNYWNdIHJvbGVEZXNjcmlw
dGlvbiBmb3IgQVhUZXh0RmllbGQgaW5wdXQgdHlwZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXgg
ODNhYWY1Njc3NmUzMjUxYjdlZGFiZDU1OGZkZTljNWNkMGViNjAyYi4uOTIxNTJiZTY5ZjQxZTg1
YWIxZWJmYzhlNjhjYWY3ZjI3OWYzNDM2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ01h
a2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTEwODIs
NyArMTA4Miw2IEBAIHNldChXZWJDb3JlX1NPVVJDRVMKICAgICBiaW5kaW5ncy9qcy9KU0NyeXB0
b0tleUN1c3RvbS5jcHAKICAgICBiaW5kaW5ncy9qcy9KU0NyeXB0b0tleVBhaXJDdXN0b20uY3Bw
CiAgICAgYmluZGluZ3MvanMvSlNDcnlwdG9LZXlTZXJpYWxpemF0aW9uSldLLmNwcAotICAgIGJp
bmRpbmdzL2pzL0pTQ3J5cHRvT3BlcmF0aW9uRGF0YS5jcHAKICAgICBiaW5kaW5ncy9qcy9KU0N1
c3RvbUVsZW1lbnRJbnRlcmZhY2UuY3BwCiAgICAgYmluZGluZ3MvanMvSlNDdXN0b21FbGVtZW50
UmVnaXN0cnlDdXN0b20uY3BwCiAgICAgYmluZGluZ3MvanMvSlNDdXN0b21FdmVudEN1c3RvbS5j
cHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvU291cmNl
QnVmZmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvU291cmNlQnVm
ZmVyLmNwcAppbmRleCAwYmQxZDVkYzYwNWU5NTVjOGMwYmFjYWUxNDBhOGJlYWYwNWQ0YTBjLi42
MWQ3NDcxY2YwOTdmMDEwNzhmNmYxN2U0MWRlMWY1ODdjNzkzMWMwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL1NvdXJjZUJ1ZmZlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9Tb3VyY2VCdWZmZXIuY3BwCkBAIC0zNSw2
ICszNSw3IEBACiAjaWYgRU5BQkxFKE1FRElBX1NPVVJDRSkKIAogI2luY2x1ZGUgIkF1ZGlvVHJh
Y2tMaXN0LmgiCisjaW5jbHVkZSAiQnVmZmVyU291cmNlLmgiCiAjaW5jbHVkZSAiRXZlbnQuaCIK
ICNpbmNsdWRlICJFdmVudE5hbWVzLmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZVBsYWNlaG9s
ZGVyLmgiCkBAIC0yMzEsMTUgKzIzMiw5IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IFNvdXJjZUJ1ZmZl
cjo6c2V0QXBwZW5kV2luZG93RW5kKGRvdWJsZSBuZXdWYWx1ZSkKICAgICByZXR1cm4geyB9Owog
fQogCi0KLUV4Y2VwdGlvbk9yPHZvaWQ+IFNvdXJjZUJ1ZmZlcjo6YXBwZW5kQnVmZmVyKEFycmF5
QnVmZmVyJiBkYXRhKQotewotICAgIHJldHVybiBhcHBlbmRCdWZmZXJJbnRlcm5hbChzdGF0aWNf
Y2FzdDx1bnNpZ25lZCBjaGFyKj4oZGF0YS5kYXRhKCkpLCBkYXRhLmJ5dGVMZW5ndGgoKSk7Ci19
Ci0KLUV4Y2VwdGlvbk9yPHZvaWQ+IFNvdXJjZUJ1ZmZlcjo6YXBwZW5kQnVmZmVyKEFycmF5QnVm
ZmVyVmlldyYgZGF0YSkKK0V4Y2VwdGlvbk9yPHZvaWQ+IFNvdXJjZUJ1ZmZlcjo6YXBwZW5kQnVm
ZmVyKGNvbnN0IEJ1ZmZlclNvdXJjZSYgZGF0YSkKIHsKLSAgICByZXR1cm4gYXBwZW5kQnVmZmVy
SW50ZXJuYWwoc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcio+KGRhdGEuYmFzZUFkZHJlc3MoKSks
IGRhdGEuYnl0ZUxlbmd0aCgpKTsKKyAgICByZXR1cm4gYXBwZW5kQnVmZmVySW50ZXJuYWwoc3Rh
dGljX2Nhc3Q8Y29uc3QgdW5zaWduZWQgY2hhcio+KGRhdGEuZGF0YSksIGRhdGEubGVuZ3RoKTsK
IH0KIAogdm9pZCBTb3VyY2VCdWZmZXI6OnJlc2V0UGFyc2VyU3RhdGUoKQpAQCAtNDk2LDcgKzQ5
MSw3IEBAIHZvaWQgU291cmNlQnVmZmVyOjpzY2hlZHVsZUV2ZW50KGNvbnN0IEF0b21pY1N0cmlu
ZyYgZXZlbnROYW1lKQogICAgIG1fYXN5bmNFdmVudFF1ZXVlLmVucXVldWVFdmVudChXVEZNb3Zl
KGV2ZW50KSk7CiB9CiAKLUV4Y2VwdGlvbk9yPHZvaWQ+IFNvdXJjZUJ1ZmZlcjo6YXBwZW5kQnVm
ZmVySW50ZXJuYWwodW5zaWduZWQgY2hhciogZGF0YSwgdW5zaWduZWQgc2l6ZSkKK0V4Y2VwdGlv
bk9yPHZvaWQ+IFNvdXJjZUJ1ZmZlcjo6YXBwZW5kQnVmZmVySW50ZXJuYWwoY29uc3QgdW5zaWdu
ZWQgY2hhciogZGF0YSwgdW5zaWduZWQgc2l6ZSkKIHsKICAgICAvLyBTZWN0aW9uIDMuMiBhcHBl
bmRCdWZmZXIoKQogICAgIC8vIGh0dHBzOi8vZHZjcy53My5vcmcvaGcvaHRtbC1tZWRpYS9yYXct
ZmlsZS9kZWZhdWx0L21lZGlhLXNvdXJjZS9tZWRpYS1zb3VyY2UuaHRtbCN3aWRsLVNvdXJjZUJ1
ZmZlci1hcHBlbmRCdWZmZXItdm9pZC1BcnJheUJ1ZmZlclZpZXctZGF0YQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9Tb3VyY2VCdWZmZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvU291cmNlQnVmZmVyLmgKaW5kZXggMWNkODU0
M2M1N2VlMDNiMDcwMmFhZDg3OGE2YjhjMDZjNjhjZjQwZS4uMGNkZGYyODFmZmY3Y2JjMzNkMzIy
NTFhYTNmY2Q4NzU0MWE2MjBlOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXNvdXJjZS9Tb3VyY2VCdWZmZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21l
ZGlhc291cmNlL1NvdXJjZUJ1ZmZlci5oCkBAIC00Nyw2ICs0Nyw3IEBACiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIGNsYXNzIEF1ZGlvVHJhY2tMaXN0OworY2xhc3MgQnVmZmVyU291cmNlOwogY2xh
c3MgTWVkaWFTb3VyY2U7CiBjbGFzcyBQbGF0Zm9ybVRpbWVSYW5nZXM7CiBjbGFzcyBUZXh0VHJh
Y2tMaXN0OwpAQCAtNzQsOCArNzUsNyBAQCBwdWJsaWM6CiAgICAgZG91YmxlIGFwcGVuZFdpbmRv
d0VuZCgpIGNvbnN0OwogICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IHNldEFwcGVuZFdpbmRvd0VuZChk
b3VibGUpOwogCi0gICAgRXhjZXB0aW9uT3I8dm9pZD4gYXBwZW5kQnVmZmVyKEFycmF5QnVmZmVy
Jik7Ci0gICAgRXhjZXB0aW9uT3I8dm9pZD4gYXBwZW5kQnVmZmVyKEFycmF5QnVmZmVyVmlldyYp
OworICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IGFwcGVuZEJ1ZmZlcihjb25zdCBCdWZmZXJTb3VyY2Um
KTsKICAgICBFeGNlcHRpb25Pcjx2b2lkPiBhYm9ydCgpOwogICAgIEV4Y2VwdGlvbk9yPHZvaWQ+
IHJlbW92ZShkb3VibGUgc3RhcnQsIGRvdWJsZSBlbmQpOwogICAgIEV4Y2VwdGlvbk9yPHZvaWQ+
IHJlbW92ZShjb25zdCBNZWRpYVRpbWUmLCBjb25zdCBNZWRpYVRpbWUmKTsKQEAgLTE1MCw3ICsx
NTAsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgaXNSZW1vdmVkKCkgY29uc3Q7CiAgICAgdm9pZCBz
Y2hlZHVsZUV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnROYW1lKTsKIAotICAgIEV4Y2Vw
dGlvbk9yPHZvaWQ+IGFwcGVuZEJ1ZmZlckludGVybmFsKHVuc2lnbmVkIGNoYXIqLCB1bnNpZ25l
ZCk7CisgICAgRXhjZXB0aW9uT3I8dm9pZD4gYXBwZW5kQnVmZmVySW50ZXJuYWwoY29uc3QgdW5z
aWduZWQgY2hhciosIHVuc2lnbmVkKTsKICAgICB2b2lkIGFwcGVuZEJ1ZmZlclRpbWVyRmlyZWQo
KTsKICAgICB2b2lkIHJlc2V0UGFyc2VyU3RhdGUoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9Tb3VyY2VCdWZmZXIuaWRsIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9Tb3VyY2VCdWZmZXIuaWRsCmluZGV4IGNmZjFiYjVhY2U5
ZTk5N2NlYzUxMzYwZmRhODc0ZTNlMGYwYjgwMjQuLjljODQ3YzcyYTk0NGIxNWNjMzY5MGI0NTQ4
YTU0NmE0ZTBlMjBkZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
b3VyY2UvU291cmNlQnVmZmVyLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlh
c291cmNlL1NvdXJjZUJ1ZmZlci5pZGwKQEAgLTU3LDggKzU3LDcgQEAKICAgICBbU2V0dGVyTWF5
VGhyb3dFeGNlcHRpb25dIGF0dHJpYnV0ZSB1bnJlc3RyaWN0ZWQgZG91YmxlIGFwcGVuZFdpbmRv
d0VuZDsKIAogICAgIC8vIEFwcGVuZCBzZWdtZW50IGRhdGEuCi0gICAgW01heVRocm93RXhjZXB0
aW9uXSB2b2lkIGFwcGVuZEJ1ZmZlcihBcnJheUJ1ZmZlciBkYXRhKTsKLSAgICBbTWF5VGhyb3dF
eGNlcHRpb25dIHZvaWQgYXBwZW5kQnVmZmVyKEFycmF5QnVmZmVyVmlldyBkYXRhKTsKKyAgICBb
TWF5VGhyb3dFeGNlcHRpb25dIHZvaWQgYXBwZW5kQnVmZmVyKEJ1ZmZlclNvdXJjZSBkYXRhKTsK
IAogICAgIC8vIEFib3J0IHRoZSBjdXJyZW50IHNlZ21lbnQgYXBwZW5kIHNlcXVlbmNlLgogICAg
IFtNYXlUaHJvd0V4Y2VwdGlvbl0gdm9pZCBhYm9ydCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvZ2VuZXJpYy9JRExUeXBlcy5oIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvZ2VuZXJpYy9JRExUeXBlcy5oCmluZGV4IGJlODgyNmVjODI0N2U5NmMyYTE4ODE1YjM3M2Y0
ZTU3OWMzOTk4NmIuLjFmZTE2OWZlMTJkY2IyMWU2MjE3YmYyOGRkNzJhMWZhOTY4ZjBjMTUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2dlbmVyaWMvSURMVHlwZXMuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9nZW5lcmljL0lETFR5cGVzLmgKQEAgLTM1LDYgKzM1
LDcgQEAgY2xhc3MgSlNWYWx1ZTsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBCdWZm
ZXJTb3VyY2U7CiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVmFsdWU+IGNsYXNzIERPTVByb21pc2U7CiAK
IHRlbXBsYXRlPHR5cGVuYW1lIFQ+CkBAIC0xMTgsNiArMTE5LDcgQEAgc3RydWN0IElETFVuaW9u
IDogSURMVHlwZTxzdGQ6OmV4cGVyaW1lbnRhbDo6dmFyaWFudDx0eXBlbmFtZSBUczo6SW1wbGVt
ZW50YXRpb24KICAgICB1c2luZyBUeXBlTGlzdCA9IGJyaWdhbmQ6Omxpc3Q8VHMuLi4+OwogfTsK
IAorc3RydWN0IElETEJ1ZmZlclNvdXJjZSA6IElETFR5cGU8QnVmZmVyU291cmNlPiB7IH07CiAK
IC8vIEhlbHBlciBwcmVkaWNhdGVzCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0J1ZmZlclNvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvQnVmZmVy
U291cmNlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uZjEzNTVlM2ZiZTIzMmNiNDIzZTFmNmFlYjI3ODQ1NjEzNTU0
OTI0NwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0J1ZmZl
clNvdXJjZS5oCkBAIC0wLDAgKzEsMzYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgSWdh
bGlhIFMuTC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
KworY2xhc3MgQnVmZmVyU291cmNlIHsKK3B1YmxpYzoKKyAgICBjb25zdCB1aW50OF90KiBkYXRh
OworICAgIHNpemVfdCBsZW5ndGg7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NyeXB0b0FsZ29yaXRobURpY3Rp
b25hcnkuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDcnlwdG9BbGdvcml0aG1E
aWN0aW9uYXJ5LmNwcAppbmRleCA2YzJhNWE4ODYxNWZmYmU2ZDU0ODdkNWUwMTg1YWE0YjM3ZWU0
MDU2Li5jOTQxYmE0NGE2ZjFmZjk5ZGE4YmJiYTc5NDVkOTg2MjNlNDk5ODc3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NyeXB0b0FsZ29yaXRobURpY3Rpb25hcnku
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3J5cHRvQWxnb3JpdGhtRGlj
dGlvbmFyeS5jcHAKQEAgLTM4LDcgKzM4LDYgQEAKICNpbmNsdWRlICJDcnlwdG9BbGdvcml0aG1S
c2FPYWVwUGFyYW1zRGVwcmVjYXRlZC5oIgogI2luY2x1ZGUgIkNyeXB0b0FsZ29yaXRobVJzYVNz
YVBhcmFtc0RlcHJlY2F0ZWQuaCIKICNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCi0jaW5jbHVk
ZSAiSlNDcnlwdG9PcGVyYXRpb25EYXRhLmgiCiAjaW5jbHVkZSAiSlNET01CaW5kaW5nLmgiCiAj
aW5jbHVkZSAiSlNET01Db252ZXJ0LmgiCiAjaW5jbHVkZSAiSlNEaWN0aW9uYXJ5LmgiCkBAIC0x
MzgsMTggKzEzNywxNSBAQCBzdGF0aWMgUmVmUHRyPENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnNE
ZXByZWNhdGVkPiBjcmVhdGVBZXNDYmNQYXJhbXMoRXhlY1N0YXRlKgogCiAgICAgYXV0byByZXN1
bHQgPSBhZG9wdFJlZigqbmV3IENyeXB0b0FsZ29yaXRobUFlc0NiY1BhcmFtc0RlcHJlY2F0ZWQp
OwogCi0gICAgQ3J5cHRvT3BlcmF0aW9uRGF0YSBpdkRhdGE7Ci0gICAgYXV0byBzdWNjZXNzID0g
Y3J5cHRvT3BlcmF0aW9uRGF0YUZyb21KU1ZhbHVlKGV4ZWMsIGl2LCBpdkRhdGEpOwotICAgIEFT
U0VSVChzY29wZS5leGNlcHRpb24oKSB8fCBzdWNjZXNzKTsKLSAgICBpZiAoIXN1Y2Nlc3MpCi0g
ICAgICAgIHJldHVybiBudWxscHRyOworICAgIGF1dG8gaXZEYXRhID0gY29udmVydDxJRExCdWZm
ZXJTb3VyY2U+KCpleGVjLCBpdik7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgbnVs
bHB0cik7CiAKLSAgICBpZiAoaXZEYXRhLnNlY29uZCAhPSAxNikgeworICAgIGlmIChpdkRhdGEu
bGVuZ3RoICE9IDE2KSB7CiAgICAgICAgIHRocm93RXhjZXB0aW9uKGV4ZWMsIHNjb3BlLCBjcmVh
dGVFcnJvcihleGVjLCAiQUVTLUNCQyBpbml0aWFsaXphdGlvbiBkYXRhIG11c3QgYmUgMTYgYnl0
ZXMiKSk7CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIAotICAgIG1lbWNweShyZXN1
bHQtPml2LmRhdGEoKSwgaXZEYXRhLmZpcnN0LCBpdkRhdGEuc2Vjb25kKTsKKyAgICBtZW1jcHko
cmVzdWx0LT5pdi5kYXRhKCksIGl2RGF0YS5kYXRhLCBpdkRhdGEubGVuZ3RoKTsKIAogICAgIHJl
dHVybiBXVEZNb3ZlKHJlc3VsdCk7CiB9CkBAIC0yODUsMTMgKzI4MSwxMCBAQCBzdGF0aWMgUmVm
UHRyPENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnNEZXByZWNhdGVkPiBjcmVhdGVSc2FPYWVwUGFy
YW1zKEV4ZWNTdGF0ZQogICAgIGlmICghcmVzdWx0LT5oYXNMYWJlbCkKICAgICAgICAgcmV0dXJu
IFdURk1vdmUocmVzdWx0KTsKIAotICAgIENyeXB0b09wZXJhdGlvbkRhdGEgbGFiZWxEYXRhOwot
ICAgIHN1Y2Nlc3MgPSBjcnlwdG9PcGVyYXRpb25EYXRhRnJvbUpTVmFsdWUoZXhlYywgbGFiZWxW
YWx1ZSwgbGFiZWxEYXRhKTsKLSAgICBBU1NFUlQoc2NvcGUuZXhjZXB0aW9uKCkgfHwgc3VjY2Vz
cyk7Ci0gICAgaWYgKCFzdWNjZXNzKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICBhdXRv
IGxhYmVsRGF0YSA9IGNvbnZlcnQ8SURMQnVmZmVyU291cmNlPigqZXhlYywgbGFiZWxWYWx1ZSk7
CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgbnVsbHB0cik7CiAKLSAgICByZXN1bHQt
PmxhYmVsLmFwcGVuZChsYWJlbERhdGEuZmlyc3QsIGxhYmVsRGF0YS5zZWNvbmQpOworICAgIHJl
c3VsdC0+bGFiZWwuYXBwZW5kKGxhYmVsRGF0YS5kYXRhLCBsYWJlbERhdGEubGVuZ3RoKTsKIAog
ICAgIHJldHVybiBXVEZNb3ZlKHJlc3VsdCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0NyeXB0b09wZXJhdGlvbkRhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNDcnlwdG9PcGVyYXRpb25EYXRhLmNwcApkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMTg5NjE1NzQyNWNmZDRkZGMwNzk3NDcyZGFjOTgxYzRhYWIxMzcxNi4uMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0NyeXB0b09wZXJhdGlvbkRhdGEuY3BwCisrKyAvZGV2L251bGwKQEAg
LTEsNTUgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMywgMjAxNiBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAq
IGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNp
bmNsdWRlICJKU0NyeXB0b09wZXJhdGlvbkRhdGEuaCIKLQotI2lmIEVOQUJMRShTVUJUTEVfQ1JZ
UFRPKQotCi0jaW5jbHVkZSAiSlNET01CaW5kaW5nLmgiCi0KLXVzaW5nIG5hbWVzcGFjZSBKU0M7
Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotYm9vbCBjcnlwdG9PcGVyYXRpb25EYXRhRnJvbUpT
VmFsdWUoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHZhbHVlLCBDcnlwdG9PcGVyYXRpb25EYXRh
JiByZXN1bHQpCi17Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKLSAgICBhdXRvIHNjb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0KLSAgICBpZiAoQXJyYXlCdWZmZXIqIGJ1ZmZlciA9
IHRvQXJyYXlCdWZmZXIodmFsdWUpKQotICAgICAgICByZXN1bHQgPSBzdGQ6Om1ha2VfcGFpcihz
dGF0aWNfY2FzdDx1aW50OF90Kj4oYnVmZmVyLT5kYXRhKCkpLCBidWZmZXItPmJ5dGVMZW5ndGgo
KSk7Ci0gICAgZWxzZSBpZiAoUmVmUHRyPEFycmF5QnVmZmVyVmlldz4gYnVmZmVyVmlldyA9IHRv
QXJyYXlCdWZmZXJWaWV3KHZhbHVlKSkKLSAgICAgICAgcmVzdWx0ID0gc3RkOjptYWtlX3BhaXIo
c3RhdGljX2Nhc3Q8dWludDhfdCo+KGJ1ZmZlclZpZXctPmJhc2VBZGRyZXNzKCkpLCBidWZmZXJW
aWV3LT5ieXRlTGVuZ3RoKCkpOwotICAgIGVsc2UgewotICAgICAgICB0aHJvd1R5cGVFcnJvcihl
eGVjLCBzY29wZSwgQVNDSUlMaXRlcmFsKCJPbmx5IEFycmF5QnVmZmVyIGFuZCBBcnJheUJ1ZmZl
clZpZXcgb2JqZWN0cyBjYW4gYmUgcGFzc2VkIGFzIENyeXB0b09wZXJhdGlvbkRhdGEiKSk7Ci0g
ICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLX0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShTVUJUTEVfQ1JZUFRPKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDcnlwdG9PcGVyYXRpb25EYXRh
LmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NyeXB0b09wZXJhdGlvbkRhdGEuaApk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzdiMDEwMGU2NmE1ZDc3NzdkMzY3ZWY4ZTc2
N2Q2NDMyYmJmZWJkYy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NyeXB0b09wZXJhdGlvbkRhdGEuaAor
KysgL2Rldi9udWxsCkBAIC0xLDQ1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
Ci0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
LSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIEpTQ3J5
cHRvT3BlcmF0aW9uRGF0YV9oCi0jZGVmaW5lIEpTQ3J5cHRvT3BlcmF0aW9uRGF0YV9oCi0KLSNp
ZiBFTkFCTEUoU1VCVExFX0NSWVBUTykKLQotbmFtZXNwYWNlIEpTQyB7Ci1jbGFzcyBFeGVjU3Rh
dGU7Ci1jbGFzcyBKU1ZhbHVlOwotfQotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXR5cGVkZWYg
c3RkOjpwYWlyPGNvbnN0IHVpbnQ4X3QqLCBzaXplX3Q+IENyeXB0b09wZXJhdGlvbkRhdGE7Ci0K
LWJvb2wgY3J5cHRvT3BlcmF0aW9uRGF0YUZyb21KU1ZhbHVlKEpTQzo6RXhlY1N0YXRlKiwgSlND
OjpKU1ZhbHVlLCBDcnlwdG9PcGVyYXRpb25EYXRhJik7Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKLQotI2VuZGlmIC8vIEVOQUJMRShTVUJUTEVfQ1JZUFRPKQotI2VuZGlmIC8vIEpTQ3J5cHRv
T3BlcmF0aW9uRGF0YV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0RPTUJpbmRpbmcuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5o
CmluZGV4IGZlM2NhNTY0ZWFmM2NkY2M3ODg0MWI5ODlkZWQ0MmM5YTZjMjFkYzMuLjA4ZDU0ZDAy
OGYxMjViY2ExNGQwYThlYjIwMWNiODRkNzkwNzdiNDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTRE9NQmluZGluZy5oCkBAIC0yMyw2ICsyMyw3IEBACiAKICNwcmFnbWEgb25jZQog
CisjaW5jbHVkZSAiQnVmZmVyU291cmNlLmgiCiAjaW5jbHVkZSAiRE9NV3JhcHBlcldvcmxkLmgi
CiAjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgogI2luY2x1ZGUgIkV4Y2VwdGlvbk9yLmgiCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUNvbnZlcnQuaCBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQ29udmVydC5oCmluZGV4IDJhNDcyODhlZjc3
MGViMTNlYjQ2MmM4YWQ4MWZmMTkzZjAwMWRkN2YuLmJkOTBmMmJkNGFkYzgwYjczNDY0NGExNTQ2
ZmQ4OTNlYWY4OGIzOGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
RE9NQ29udmVydC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQ29udmVy
dC5oCkBAIC02MzgsNCArNjM4LDI1IEBAIHRlbXBsYXRlPHR5cGVuYW1lIElETFR5cGU+IHR5cGVu
YW1lIERldGFpbDo6VmFyaWFkaWNDb252ZXJ0ZXI8SURMVHlwZT46OlJlc3VsdCBjCiAgICAgcmV0
dXJuIHsgbGVuZ3RoLCBXVEZNb3ZlKHJlc3VsdCkgfTsKIH0KIAorLy8gTUFSSzogLQorLy8gTUFS
SzogQnVmZmVyU291cmNlIHR5cGUKKwordGVtcGxhdGU8PiBzdHJ1Y3QgQ29udmVydGVyPElETEJ1
ZmZlclNvdXJjZT4gOiBEZWZhdWx0Q29udmVydGVyPElETEJ1ZmZlclNvdXJjZT4geworICAgIHVz
aW5nIFJldHVyblR5cGUgPSBCdWZmZXJTb3VyY2U7CisKKyAgICBzdGF0aWMgUmV0dXJuVHlwZSBj
b252ZXJ0KEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwgSlNDOjpKU1ZhbHVlIHZhbHVlKQorICAgIHsK
KyAgICAgICAgSlNDOjpWTSYgdm0gPSBzdGF0ZS52bSgpOworICAgICAgICBhdXRvIHNjb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICAgICAgaWYgKEpTQzo6QXJyYXlCdWZmZXIq
IGJ1ZmZlciA9IEpTQzo6dG9BcnJheUJ1ZmZlcih2YWx1ZSkpCisgICAgICAgICAgICByZXR1cm4g
eyBzdGF0aWNfY2FzdDx1aW50OF90Kj4oYnVmZmVyLT5kYXRhKCkpLCBidWZmZXItPmJ5dGVMZW5n
dGgoKSB9OworICAgICAgICBpZiAoUmVmUHRyPEpTQzo6QXJyYXlCdWZmZXJWaWV3PiBidWZmZXJW
aWV3ID0gdG9BcnJheUJ1ZmZlclZpZXcodmFsdWUpKQorICAgICAgICAgICAgcmV0dXJuIHsgc3Rh
dGljX2Nhc3Q8dWludDhfdCo+KGJ1ZmZlclZpZXctPmJhc2VBZGRyZXNzKCkpLCBidWZmZXJWaWV3
LT5ieXRlTGVuZ3RoKCkgfTsKKworICAgICAgICB0aHJvd1R5cGVFcnJvcigmc3RhdGUsIHNjb3Bl
KTsKKyAgICAgICAgcmV0dXJuIHsgbnVsbHB0ciwgMCB9OworICAgIH0KK307CisKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
V2ViS2l0U3VidGxlQ3J5cHRvQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTV2ViS2l0U3VidGxlQ3J5cHRvQ3VzdG9tLmNwcAppbmRleCA3ZDgwYTg2MWVkN2M4ZTk0YTBk
ZjRhZGFlMTJiNzNlZmQxMDQ2NTE5Li5lMjhiNDc0NmI1MTQ3MTY1MTE1MWI5ZDYyMWQzNWVhODc1
NDBlZWQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dlYktpdFN1
YnRsZUNyeXB0b0N1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNX
ZWJLaXRTdWJ0bGVDcnlwdG9DdXN0b20uY3BwCkBAIC0zOSw3ICszOSw3IEBACiAjaW5jbHVkZSAi
SlNDcnlwdG9LZXkuaCIKICNpbmNsdWRlICJKU0NyeXB0b0tleVBhaXIuaCIKICNpbmNsdWRlICJK
U0NyeXB0b0tleVNlcmlhbGl6YXRpb25KV0suaCIKLSNpbmNsdWRlICJKU0NyeXB0b09wZXJhdGlv
bkRhdGEuaCIKKyNpbmNsdWRlICJKU0RPTUNvbnZlcnQuaCIKICNpbmNsdWRlICJKU0RPTVByb21p
c2UuaCIKICNpbmNsdWRlIDxydW50aW1lL0Vycm9yLmg+CiAKQEAgLTE2NSwxMSArMTY1LDggQEAg
SlNWYWx1ZSBKU1dlYktpdFN1YnRsZUNyeXB0bzo6ZW5jcnlwdChFeGVjU3RhdGUmIHN0YXRlKQog
ICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKICAgICB9CiAKLSAgICBDcnlwdG9PcGVyYXRp
b25EYXRhIGRhdGE7Ci0gICAgYXV0byBzdWNjZXNzID0gY3J5cHRvT3BlcmF0aW9uRGF0YUZyb21K
U1ZhbHVlKCZzdGF0ZSwgc3RhdGUudW5jaGVja2VkQXJndW1lbnQoMiksIGRhdGEpOwotICAgIEFT
U0VSVChzY29wZS5leGNlcHRpb24oKSB8fCBzdWNjZXNzKTsKLSAgICBpZiAoIXN1Y2Nlc3MpCi0g
ICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOworICAgIGF1dG8gZGF0YSA9IGNvbnZlcnQ8SURM
QnVmZmVyU291cmNlPihzdGF0ZSwgc3RhdGUudW5jaGVja2VkQXJndW1lbnQoMikpOworICAgIFJF
VFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGpzVW5kZWZpbmVkKCkpOwogCiAgICAgUmVmUHRyPERl
ZmVycmVkUHJvbWlzZT4gd3JhcHBlciA9IGNyZWF0ZURlZmVycmVkUHJvbWlzZShzdGF0ZSwgZG9t
V2luZG93KCkpOwogICAgIGF1dG8gcHJvbWlzZSA9IHdyYXBwZXItPnByb21pc2UoKTsKQEAgLTIx
OCwxMSArMjE1LDggQEAgSlNWYWx1ZSBKU1dlYktpdFN1YnRsZUNyeXB0bzo6ZGVjcnlwdChFeGVj
U3RhdGUmIHN0YXRlKQogICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKICAgICB9CiAKLSAg
ICBDcnlwdG9PcGVyYXRpb25EYXRhIGRhdGE7Ci0gICAgYXV0byBzdWNjZXNzID0gY3J5cHRvT3Bl
cmF0aW9uRGF0YUZyb21KU1ZhbHVlKCZzdGF0ZSwgc3RhdGUudW5jaGVja2VkQXJndW1lbnQoMiks
IGRhdGEpOwotICAgIEFTU0VSVChzY29wZS5leGNlcHRpb24oKSB8fCBzdWNjZXNzKTsKLSAgICBp
ZiAoIXN1Y2Nlc3MpCi0gICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOworICAgIGF1dG8gZGF0
YSA9IGNvbnZlcnQ8SURMQnVmZmVyU291cmNlPihzdGF0ZSwgc3RhdGUudW5jaGVja2VkQXJndW1l
bnQoMikpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGpzVW5kZWZpbmVkKCkpOwog
CiAgICAgUmVmUHRyPERlZmVycmVkUHJvbWlzZT4gd3JhcHBlciA9IGNyZWF0ZURlZmVycmVkUHJv
bWlzZShzdGF0ZSwgZG9tV2luZG93KCkpOwogICAgIGF1dG8gcHJvbWlzZSA9IHdyYXBwZXItPnBy
b21pc2UoKTsKQEAgLTI3MSwxMSArMjY1LDggQEAgSlNWYWx1ZSBKU1dlYktpdFN1YnRsZUNyeXB0
bzo6c2lnbihFeGVjU3RhdGUmIHN0YXRlKQogICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsK
ICAgICB9CiAKLSAgICBDcnlwdG9PcGVyYXRpb25EYXRhIGRhdGE7Ci0gICAgYXV0byBzdWNjZXNz
ID0gY3J5cHRvT3BlcmF0aW9uRGF0YUZyb21KU1ZhbHVlKCZzdGF0ZSwgc3RhdGUudW5jaGVja2Vk
QXJndW1lbnQoMiksIGRhdGEpOwotICAgIEFTU0VSVChzY29wZS5leGNlcHRpb24oKSB8fCBzdWNj
ZXNzKTsKLSAgICBpZiAoIXN1Y2Nlc3MpCi0gICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwor
ICAgIGF1dG8gZGF0YSA9IGNvbnZlcnQ8SURMQnVmZmVyU291cmNlPihzdGF0ZSwgc3RhdGUudW5j
aGVja2VkQXJndW1lbnQoMikpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGpzVW5k
ZWZpbmVkKCkpOwogCiAgICAgUmVmUHRyPERlZmVycmVkUHJvbWlzZT4gd3JhcHBlciA9IGNyZWF0
ZURlZmVycmVkUHJvbWlzZShzdGF0ZSwgZG9tV2luZG93KCkpOwogICAgIGF1dG8gcHJvbWlzZSA9
IHdyYXBwZXItPnByb21pc2UoKTsKQEAgLTMyNCwxNyArMzE1LDExIEBAIEpTVmFsdWUgSlNXZWJL
aXRTdWJ0bGVDcnlwdG86OnZlcmlmeShFeGVjU3RhdGUmIHN0YXRlKQogICAgICAgICByZXR1cm4g
anNVbmRlZmluZWQoKTsKICAgICB9CiAKLSAgICBDcnlwdG9PcGVyYXRpb25EYXRhIHNpZ25hdHVy
ZTsKLSAgICBhdXRvIHN1Y2Nlc3MgPSBjcnlwdG9PcGVyYXRpb25EYXRhRnJvbUpTVmFsdWUoJnN0
YXRlLCBzdGF0ZS51bmNoZWNrZWRBcmd1bWVudCgyKSwgc2lnbmF0dXJlKTsKLSAgICBBU1NFUlQo
c2NvcGUuZXhjZXB0aW9uKCkgfHwgc3VjY2Vzcyk7Ci0gICAgaWYgKCFzdWNjZXNzKQotICAgICAg
ICByZXR1cm4ganNVbmRlZmluZWQoKTsKKyAgICBhdXRvIHNpZ25hdHVyZSA9IGNvbnZlcnQ8SURM
QnVmZmVyU291cmNlPihzdGF0ZSwgc3RhdGUudW5jaGVja2VkQXJndW1lbnQoMSkpOworICAgIFJF
VFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGpzVW5kZWZpbmVkKCkpOwogCi0gICAgQ3J5cHRvT3Bl
cmF0aW9uRGF0YSBkYXRhOwotICAgIHN1Y2Nlc3MgPSBjcnlwdG9PcGVyYXRpb25EYXRhRnJvbUpT
VmFsdWUoJnN0YXRlLCBzdGF0ZS51bmNoZWNrZWRBcmd1bWVudCgzKSwgZGF0YSk7Ci0gICAgQVNT
RVJUKHNjb3BlLmV4Y2VwdGlvbigpIHx8IHN1Y2Nlc3MpOwotICAgIGlmICghc3VjY2VzcykKLSAg
ICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CisgICAgYXV0byBkYXRhID0gY29udmVydDxJRExC
dWZmZXJTb3VyY2U+KHN0YXRlLCBzdGF0ZS51bmNoZWNrZWRBcmd1bWVudCgzKSk7CisgICAgUkVU
VVJOX0lGX0VYQ0VQVElPTihzY29wZSwganNVbmRlZmluZWQoKSk7CiAKICAgICBSZWZQdHI8RGVm
ZXJyZWRQcm9taXNlPiB3cmFwcGVyID0gY3JlYXRlRGVmZXJyZWRQcm9taXNlKHN0YXRlLCBkb21X
aW5kb3coKSk7CiAgICAgYXV0byBwcm9taXNlID0gd3JhcHBlci0+cHJvbWlzZSgpOwpAQCAtMzcz
LDExICszNTgsOCBAQCBKU1ZhbHVlIEpTV2ViS2l0U3VidGxlQ3J5cHRvOjpkaWdlc3QoRXhlY1N0
YXRlJiBzdGF0ZSkKICAgICBpZiAoIXBhcmFtZXRlcnMpCiAgICAgICAgIHJldHVybiBqc1VuZGVm
aW5lZCgpOwogCi0gICAgQ3J5cHRvT3BlcmF0aW9uRGF0YSBkYXRhOwotICAgIGF1dG8gc3VjY2Vz
cyA9IGNyeXB0b09wZXJhdGlvbkRhdGFGcm9tSlNWYWx1ZSgmc3RhdGUsIHN0YXRlLnVuY2hlY2tl
ZEFyZ3VtZW50KDEpLCBkYXRhKTsKLSAgICBBU1NFUlQoc2NvcGUuZXhjZXB0aW9uKCkgfHwgc3Vj
Y2Vzcyk7Ci0gICAgaWYgKCFzdWNjZXNzKQotICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsK
KyAgICBhdXRvIGRhdGEgPSBjb252ZXJ0PElETEJ1ZmZlclNvdXJjZT4oc3RhdGUsIHN0YXRlLnVu
Y2hlY2tlZEFyZ3VtZW50KDEpKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBqc1Vu
ZGVmaW5lZCgpKTsKIAogICAgIFJlZlB0cjxEZWZlcnJlZFByb21pc2U+IHdyYXBwZXIgPSBjcmVh
dGVEZWZlcnJlZFByb21pc2Uoc3RhdGUsIGRvbVdpbmRvdygpKTsKICAgICBhdXRvIHByb21pc2Ug
PSB3cmFwcGVyLT5wcm9taXNlKCk7CkBAIC00NTQsNyArNDM2LDcgQEAgSlNWYWx1ZSBKU1dlYktp
dFN1YnRsZUNyeXB0bzo6Z2VuZXJhdGVLZXkoRXhlY1N0YXRlJiBzdGF0ZSkKICAgICByZXR1cm4g
cHJvbWlzZTsKIH0KIAotc3RhdGljIHZvaWQgaW1wb3J0S2V5KEV4ZWNTdGF0ZSYgc3RhdGUsIENy
eXB0b0tleUZvcm1hdCBrZXlGb3JtYXQsIENyeXB0b09wZXJhdGlvbkRhdGEgZGF0YSwgUmVmUHRy
PENyeXB0b0FsZ29yaXRobT4gYWxnb3JpdGhtLCBSZWZQdHI8Q3J5cHRvQWxnb3JpdGhtUGFyYW1l
dGVyc0RlcHJlY2F0ZWQ+IHBhcmFtZXRlcnMsIGJvb2wgZXh0cmFjdGFibGUsIENyeXB0b0tleVVz
YWdlIGtleVVzYWdlcywgQ3J5cHRvQWxnb3JpdGhtOjpLZXlDYWxsYmFjayBjYWxsYmFjaywgQ3J5
cHRvQWxnb3JpdGhtOjpWb2lkQ2FsbGJhY2sgZmFpbHVyZUNhbGxiYWNrKQorc3RhdGljIHZvaWQg
aW1wb3J0S2V5KEV4ZWNTdGF0ZSYgc3RhdGUsIENyeXB0b0tleUZvcm1hdCBrZXlGb3JtYXQsIGNv
bnN0IEJ1ZmZlclNvdXJjZSYgZGF0YSwgUmVmUHRyPENyeXB0b0FsZ29yaXRobT4gYWxnb3JpdGht
LCBSZWZQdHI8Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVyc0RlcHJlY2F0ZWQ+IHBhcmFtZXRlcnMs
IGJvb2wgZXh0cmFjdGFibGUsIENyeXB0b0tleVVzYWdlIGtleVVzYWdlcywgQ3J5cHRvQWxnb3Jp
dGhtOjpLZXlDYWxsYmFjayBjYWxsYmFjaywgQ3J5cHRvQWxnb3JpdGhtOjpWb2lkQ2FsbGJhY2sg
ZmFpbHVyZUNhbGxiYWNrKQogewogICAgIFZNJiB2bSA9IHN0YXRlLnZtKCk7CiAgICAgYXV0byBz
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwpAQCAtNDY1LDcgKzQ0Nyw3IEBAIHN0YXRp
YyB2b2lkIGltcG9ydEtleShFeGVjU3RhdGUmIHN0YXRlLCBDcnlwdG9LZXlGb3JtYXQga2V5Rm9y
bWF0LCBDcnlwdG9PcGVyYXRpCiAgICAgICAgIGtleVNlcmlhbGl6YXRpb24gPSBDcnlwdG9LZXlT
ZXJpYWxpemF0aW9uUmF3OjpjcmVhdGUoZGF0YSk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2Ug
Q3J5cHRvS2V5Rm9ybWF0OjpKV0s6IHsKLSAgICAgICAgU3RyaW5nIGp3a1N0cmluZyA9IFN0cmlu
Zzo6ZnJvbVVURjgoZGF0YS5maXJzdCwgZGF0YS5zZWNvbmQpOworICAgICAgICBTdHJpbmcgandr
U3RyaW5nID0gU3RyaW5nOjpmcm9tVVRGOChkYXRhLmRhdGEsIGRhdGEubGVuZ3RoKTsKICAgICAg
ICAgaWYgKGp3a1N0cmluZy5pc051bGwoKSkgewogICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3Io
JnN0YXRlLCBzY29wZSwgQVNDSUlMaXRlcmFsKCJKV0sgSlNPTiBzZXJpYWxpemF0aW9uIGlzIG5v
dCB2YWxpZCBVVEYtOCIpKTsKICAgICAgICAgICAgIHJldHVybjsKQEAgLTUyNiwxMSArNTA4LDgg
QEAgSlNWYWx1ZSBKU1dlYktpdFN1YnRsZUNyeXB0bzo6aW1wb3J0S2V5KEV4ZWNTdGF0ZSYgc3Rh
dGUpCiAgICAgaWYgKCFzdWNjZXNzKQogICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKIAot
ICAgIENyeXB0b09wZXJhdGlvbkRhdGEgZGF0YTsKLSAgICBzdWNjZXNzID0gY3J5cHRvT3BlcmF0
aW9uRGF0YUZyb21KU1ZhbHVlKCZzdGF0ZSwgc3RhdGUudW5jaGVja2VkQXJndW1lbnQoMSksIGRh
dGEpOwotICAgIEFTU0VSVChzY29wZS5leGNlcHRpb24oKSB8fCBzdWNjZXNzKTsKLSAgICBpZiAo
IXN1Y2Nlc3MpCi0gICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOworICAgIGF1dG8gZGF0YSA9
IGNvbnZlcnQ8SURMQnVmZmVyU291cmNlPihzdGF0ZSwgc3RhdGUudW5jaGVja2VkQXJndW1lbnQo
MSkpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGpzVW5kZWZpbmVkKCkpOwogCiAg
ICAgUmVmUHRyPENyeXB0b0FsZ29yaXRobT4gYWxnb3JpdGhtOwogICAgIFJlZlB0cjxDcnlwdG9B
bGdvcml0aG1QYXJhbWV0ZXJzRGVwcmVjYXRlZD4gcGFyYW1ldGVyczsKQEAgLTY5MSw3ICs2NzAs
NyBAQCBKU1ZhbHVlIEpTV2ViS2l0U3VidGxlQ3J5cHRvOjp3cmFwS2V5KEV4ZWNTdGF0ZSYgc3Rh
dGUpCiAgICAgICAgICAgICB3cmFwcGVyLT5yZWplY3QobnVsbHB0cik7CiAgICAgICAgIH07CiAg
ICAgICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgICAgICBhbGdvcml0aG0tPmVuY3J5cHRG
b3JXcmFwS2V5KCpwYXJhbWV0ZXJzLCAqd3JhcHBpbmdLZXksIHN0ZDo6bWFrZV9wYWlyKGV4cG9y
dGVkS2V5RGF0YS5kYXRhKCksIGV4cG9ydGVkS2V5RGF0YS5zaXplKCkpLCBXVEZNb3ZlKGVuY3J5
cHRTdWNjZXNzQ2FsbGJhY2spLCBXVEZNb3ZlKGVuY3J5cHRGYWlsdXJlQ2FsbGJhY2spLCBlYyk7
CisgICAgICAgIGFsZ29yaXRobS0+ZW5jcnlwdEZvcldyYXBLZXkoKnBhcmFtZXRlcnMsICp3cmFw
cGluZ0tleSwgQnVmZmVyU291cmNleyBleHBvcnRlZEtleURhdGEuZGF0YSgpLCBleHBvcnRlZEtl
eURhdGEuc2l6ZSgpIH0sIFdURk1vdmUoZW5jcnlwdFN1Y2Nlc3NDYWxsYmFjayksIFdURk1vdmUo
ZW5jcnlwdEZhaWx1cmVDYWxsYmFjayksIGVjKTsKICAgICAgICAgaWYgKGVjKSB7CiAgICAgICAg
ICAgICAvLyBGSVhNRTogUmVwb3J0IGZhaWx1cmUgZGV0YWlscyB0byBjb25zb2xlLCBhbmQgcG9z
c2libHkgdG8gY2FsbGluZyBzY3JpcHQgb25jZSB0aGVyZSBpcyBhIHN0YW5kYXJkaXplZCB3YXkg
dG8gcGFzcyBlcnJvcnMgdG8gV2ViQ3J5cHRvIHByb21pc2UgcmVqZWN0IGZ1bmN0aW9ucy4KICAg
ICAgICAgICAgIHdyYXBwZXItPnJlamVjdChudWxscHRyKTsKQEAgLTcyNiwxMSArNzA1LDggQEAg
SlNWYWx1ZSBKU1dlYktpdFN1YnRsZUNyeXB0bzo6dW53cmFwS2V5KEV4ZWNTdGF0ZSYgc3RhdGUp
CiAgICAgaWYgKCFzdWNjZXNzKQogICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKIAotICAg
IENyeXB0b09wZXJhdGlvbkRhdGEgd3JhcHBlZEtleURhdGE7Ci0gICAgc3VjY2VzcyA9IGNyeXB0
b09wZXJhdGlvbkRhdGFGcm9tSlNWYWx1ZSgmc3RhdGUsIHN0YXRlLnVuY2hlY2tlZEFyZ3VtZW50
KDEpLCB3cmFwcGVkS2V5RGF0YSk7Ci0gICAgQVNTRVJUKHNjb3BlLmV4Y2VwdGlvbigpIHx8IHN1
Y2Nlc3MpOwotICAgIGlmICghc3VjY2VzcykKLSAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7
CisgICAgYXV0byB3cmFwcGVkS2V5RGF0YSA9IGNvbnZlcnQ8SURMQnVmZmVyU291cmNlPihzdGF0
ZSwgc3RhdGUudW5jaGVja2VkQXJndW1lbnQoMSkpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
c2NvcGUsIGpzVW5kZWZpbmVkKCkpOwogCiAgICAgUmVmUHRyPENyeXB0b0tleT4gdW53cmFwcGlu
Z0tleSA9IEpTQ3J5cHRvS2V5Ojp0b1dyYXBwZWQoc3RhdGUudW5jaGVja2VkQXJndW1lbnQoMikp
OwogICAgIGlmICghdW53cmFwcGluZ0tleSkKQEAgLTc5NSw3ICs3NzEsNyBAQCBKU1ZhbHVlIEpT
V2ViS2l0U3VidGxlQ3J5cHRvOjp1bndyYXBLZXkoRXhlY1N0YXRlJiBzdGF0ZSkKICAgICAgICAg
YXV0byBzY29wZSA9IERFQ0xBUkVfQ0FUQ0hfU0NPUEUodm0pOwogCiAgICAgICAgIEV4ZWNTdGF0
ZSYgc3RhdGUgPSAqZG9tR2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCk7Ci0gICAgICAgIFdlYkNv
cmU6OmltcG9ydEtleShzdGF0ZSwga2V5Rm9ybWF0LCBzdGQ6Om1ha2VfcGFpcihyZXN1bHQuZGF0
YSgpLCByZXN1bHQuc2l6ZSgpKSwgdW53cmFwcGVkS2V5QWxnb3JpdGhtLCB1bndyYXBwZWRLZXlB
bGdvcml0aG1QYXJhbWV0ZXJzLCBleHRyYWN0YWJsZSwga2V5VXNhZ2VzLCBXVEZNb3ZlKGltcG9y
dFN1Y2Nlc3NDYWxsYmFjayksIFdURk1vdmUoaW1wb3J0RmFpbHVyZUNhbGxiYWNrKSk7CisgICAg
ICAgIFdlYkNvcmU6OmltcG9ydEtleShzdGF0ZSwga2V5Rm9ybWF0LCBCdWZmZXJTb3VyY2V7IHJl
c3VsdC5kYXRhKCksIHJlc3VsdC5zaXplKCkgfSwgdW53cmFwcGVkS2V5QWxnb3JpdGhtLCB1bndy
YXBwZWRLZXlBbGdvcml0aG1QYXJhbWV0ZXJzLCBleHRyYWN0YWJsZSwga2V5VXNhZ2VzLCBXVEZN
b3ZlKGltcG9ydFN1Y2Nlc3NDYWxsYmFjayksIFdURk1vdmUoaW1wb3J0RmFpbHVyZUNhbGxiYWNr
KSk7CiAgICAgICAgIGlmIChVTkxJS0VMWShzY29wZS5leGNlcHRpb24oKSkpIHsKICAgICAgICAg
ICAgIC8vIEZJWE1FOiBSZXBvcnQgZXhjZXB0aW9uIGRldGFpbHMgdG8gY29uc29sZSwgYW5kIHBv
c3NpYmx5IHRvIGNhbGxpbmcgc2NyaXB0IG9uY2UgdGhlcmUgaXMgYSBzdGFuZGFyZGl6ZWQgd2F5
IHRvIHBhc3MgZXJyb3JzIHRvIFdlYkNyeXB0byBwcm9taXNlIHJlamVjdCBmdW5jdGlvbnMuCiAg
ICAgICAgICAgICBzY29wZS5jbGVhckV4Y2VwdGlvbigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yLnBtIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yLnBtCmluZGV4IGQ1N2ZkMDUwNjdkMjQzNjlj
NzRkMTRiNDI1ODdiYjc1ZWUxNjc5N2YuLjk3OWIyYjdjNDMxZDEyM2Q1OTdjMTU4ZDkyN2IyZjM5
NmFmMjU0OGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29k
ZUdlbmVyYXRvci5wbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVH
ZW5lcmF0b3IucG0KQEAgLTM3MCw2ICszNzAsNyBAQCBzdWIgU2tpcEluY2x1ZGVIZWFkZXIKIAog
ICAgIHJldHVybiAxIGlmICRvYmplY3QtPklzUHJpbWl0aXZlVHlwZSgkdHlwZSk7CiAgICAgcmV0
dXJuIDEgaWYgJG9iamVjdC0+SXNUeXBlZEFycmF5VHlwZSgkdHlwZSk7CisgICAgcmV0dXJuIDEg
aWYgJG9iamVjdC0+SXNCdWZmZXJTb3VyY2VUeXBlKCR0eXBlKTsKICAgICByZXR1cm4gMSBpZiAk
dHlwZSBlcSAiQXJyYXkiOwogICAgIHJldHVybiAxIGlmICR0eXBlIGVxICJET01TdHJpbmciIG9y
ICR0eXBlIGVxICJVU1ZTdHJpbmciOwogICAgIHJldHVybiAxIGlmICR0eXBlIGVxICJET01UaW1l
U3RhbXAiOwpAQCAtNTcxLDYgKzU3MiwxNSBAQCBzdWIgSXNUeXBlZEFycmF5VHlwZQogICAgIHJl
dHVybiAwOwogfQogCitzdWIgSXNCdWZmZXJTb3VyY2VUeXBlCit7CisgICAgbXkgJG9iamVjdCA9
IHNoaWZ0OworICAgIG15ICR0eXBlID0gc2hpZnQ7CisKKyAgICByZXR1cm4gMSBpZiAkdHlwZSBl
cSAiQnVmZmVyU291cmNlIjsKKyAgICByZXR1cm4gMDsKK30KKwogc3ViIElzUmVmUHRyVHlwZQog
ewogICAgIG15ICRvYmplY3QgPSBzaGlmdDsKQEAgLTg2NSw3ICs4NzUsNyBAQCBzdWIgSXNXcmFw
cGVyVHlwZQogICAgIG15ICR0eXBlID0gc2hpZnQ7CiAKICAgICByZXR1cm4gMCBpZiAhJG9iamVj
dC0+SXNSZWZQdHJUeXBlKCR0eXBlKTsKLSAgICByZXR1cm4gMCBpZiAkb2JqZWN0LT5Jc1R5cGVk
QXJyYXlUeXBlKCR0eXBlKTsKKyAgICByZXR1cm4gMCBpZiAkb2JqZWN0LT5Jc1R5cGVkQXJyYXlU
eXBlKCR0eXBlKSB8fCAkb2JqZWN0LT5Jc0J1ZmZlclNvdXJjZVR5cGUoJHR5cGUpOwogICAgIHJl
dHVybiAwIGlmICR0eXBlIGVxICJVTklPTiI7CiAgICAgcmV0dXJuIDAgaWYgJHdlYkNvcmVUeXBl
SGFzaHskdHlwZX07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvQ29kZUdlbmVyYXRvckpTLnBtIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9D
b2RlR2VuZXJhdG9ySlMucG0KaW5kZXggMGE0MzI2N2Y1OTc0N2NkOWRkZjQ0MzkzZWU4ZWJiOGI3
ZGZmMjMyZC4uMWJiZjUyODBkMjk3ZjM4ZjVhMWQwMjQ1NDI0MzU2NjUwYmZlN2M2MyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0K
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0K
QEAgLTMxOSw3ICszMTksNyBAQCBzdWIgQWRkQ2xhc3NGb3J3YXJkSWZOZWVkZWQKIAogICAgICMg
U1ZHQW5pbWF0ZWRMZW5ndGgvTnVtYmVyL2V0Yy4gYXJlIG5vdCBjbGFzc2VzIHNvIHRoZXkgY2Fu
J3QgYmUgZm9yd2FyZCBkZWNsYXJlZCBhcyBjbGFzc2VzLgogICAgIHJldHVybiBpZiAkY29kZUdl
bmVyYXRvci0+SXNTVkdBbmltYXRlZFR5cGUoJGludGVyZmFjZU5hbWUpOwotICAgIHJldHVybiBp
ZiAkY29kZUdlbmVyYXRvci0+SXNUeXBlZEFycmF5VHlwZSgkaW50ZXJmYWNlTmFtZSk7CisgICAg
cmV0dXJuIGlmICRjb2RlR2VuZXJhdG9yLT5Jc1R5cGVkQXJyYXlUeXBlKCRpbnRlcmZhY2VOYW1l
KSB8fCAkY29kZUdlbmVyYXRvci0+SXNCdWZmZXJTb3VyY2VUeXBlKCRpbnRlcmZhY2VOYW1lKTsK
IAogICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICJjbGFzcyAkaW50ZXJmYWNlTmFtZTtcblxuIik7
CiB9CkBAIC00OTg4LDYgKzQ5ODgsNyBAQCBzdWIgR2V0QmFzZUlETFR5cGUKICAgICApOwogCiAg
ICAgcmV0dXJuICRJRExUeXBlc3skaWRsVHlwZS0+bmFtZX0gaWYgZXhpc3RzICRJRExUeXBlc3sk
aWRsVHlwZS0+bmFtZX07CisgICAgcmV0dXJuICJJRExCdWZmZXJTb3VyY2UiIGlmICRjb2RlR2Vu
ZXJhdG9yLT5Jc0J1ZmZlclNvdXJjZVR5cGUoJGlkbFR5cGUtPm5hbWUpOwogICAgIHJldHVybiAi
SURMRW51bWVyYXRpb248IiAuIEdldEVudW1lcmF0aW9uQ2xhc3NOYW1lKCRpZGxUeXBlLT5uYW1l
LCAkaW50ZXJmYWNlKSAuICI+IiBpZiAkY29kZUdlbmVyYXRvci0+SXNFbnVtVHlwZSgkaWRsVHlw
ZS0+bmFtZSk7CiAgICAgcmV0dXJuICJJRExEaWN0aW9uYXJ5PCIgLiBHZXREaWN0aW9uYXJ5Q2xh
c3NOYW1lKCRpZGxUeXBlLT5uYW1lLCAkaW50ZXJmYWNlKSAuICI+IiBpZiAkY29kZUdlbmVyYXRv
ci0+SXNEaWN0aW9uYXJ5VHlwZSgkaWRsVHlwZS0+bmFtZSk7CiAgICAgcmV0dXJuICJJRExTZXF1
ZW5jZTwiIC4gR2V0SURMVHlwZSgkaW50ZXJmYWNlLCBAeyRpZGxUeXBlLT5zdWJ0eXBlc31bMF0p
IC4gIj4iIGlmICRjb2RlR2VuZXJhdG9yLT5Jc1NlcXVlbmNlVHlwZSgkaWRsVHlwZS0+bmFtZSk7
CkBAIC01MTIwLDYgKzUxMjEsNyBAQCBzdWIgSXNIYW5kbGVkQnlET01Db252ZXJ0CiAgICAgcmV0
dXJuIDEgaWYgJGNvZGVHZW5lcmF0b3ItPklzRmxvYXRpbmdQb2ludFR5cGUoJGlkbFR5cGUtPm5h
bWUpOwogICAgIHJldHVybiAxIGlmICRjb2RlR2VuZXJhdG9yLT5Jc1NlcXVlbmNlT3JGcm96ZW5B
cnJheVR5cGUoJGlkbFR5cGUtPm5hbWUpOwogICAgIHJldHVybiAxIGlmICRjb2RlR2VuZXJhdG9y
LT5Jc0RpY3Rpb25hcnlUeXBlKCRpZGxUeXBlLT5uYW1lKTsKKyAgICByZXR1cm4gMSBpZiAkY29k
ZUdlbmVyYXRvci0+SXNCdWZmZXJTb3VyY2VUeXBlKCRpZGxUeXBlLT5uYW1lKTsKICAgICByZXR1
cm4gMDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL0NyeXB0b0FsZ29y
aXRobS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vQ3J5cHRvQWxnb3JpdGhtLmNwcAppbmRl
eCAxNDRlN2ZmMDdkNzdmZTgzODQwYzExMmYzYjNhNjY3YzI0NDMyOTRjLi5lOGU3OWFmNDFiMDcz
YzljYjRjZThmNjVkMGVmYzYzNWFmMDVkMzQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9j
cnlwdG8vQ3J5cHRvQWxnb3JpdGhtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vQ3J5
cHRvQWxnb3JpdGhtLmNwcApAQCAtNDAsMjcgKzQwLDI3IEBAIENyeXB0b0FsZ29yaXRobTo6fkNy
eXB0b0FsZ29yaXRobSgpCiB7CiB9CiAKLXZvaWQgQ3J5cHRvQWxnb3JpdGhtOjplbmNyeXB0KGNv
bnN0IENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnNEZXByZWNhdGVkJiwgY29uc3QgQ3J5cHRvS2V5
JiwgY29uc3QgQ3J5cHRvT3BlcmF0aW9uRGF0YSYsIFZlY3RvckNhbGxiYWNrJiYsIFZvaWRDYWxs
YmFjayYmLCBFeGNlcHRpb25Db2RlJiBlYykKK3ZvaWQgQ3J5cHRvQWxnb3JpdGhtOjplbmNyeXB0
KGNvbnN0IENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnNEZXByZWNhdGVkJiwgY29uc3QgQ3J5cHRv
S2V5JiwgY29uc3QgQnVmZmVyU291cmNlJiwgVmVjdG9yQ2FsbGJhY2smJiwgVm9pZENhbGxiYWNr
JiYsIEV4Y2VwdGlvbkNvZGUmIGVjKQogewogICAgIGVjID0gTk9UX1NVUFBPUlRFRF9FUlI7CiB9
CiAKLXZvaWQgQ3J5cHRvQWxnb3JpdGhtOjpkZWNyeXB0KGNvbnN0IENyeXB0b0FsZ29yaXRobVBh
cmFtZXRlcnNEZXByZWNhdGVkJiwgY29uc3QgQ3J5cHRvS2V5JiwgY29uc3QgQ3J5cHRvT3BlcmF0
aW9uRGF0YSYsIFZlY3RvckNhbGxiYWNrJiYsIFZvaWRDYWxsYmFjayYmLCBFeGNlcHRpb25Db2Rl
JiBlYykKK3ZvaWQgQ3J5cHRvQWxnb3JpdGhtOjpkZWNyeXB0KGNvbnN0IENyeXB0b0FsZ29yaXRo
bVBhcmFtZXRlcnNEZXByZWNhdGVkJiwgY29uc3QgQ3J5cHRvS2V5JiwgY29uc3QgQnVmZmVyU291
cmNlJiwgVmVjdG9yQ2FsbGJhY2smJiwgVm9pZENhbGxiYWNrJiYsIEV4Y2VwdGlvbkNvZGUmIGVj
KQogewogICAgIGVjID0gTk9UX1NVUFBPUlRFRF9FUlI7CiB9CiAKLXZvaWQgQ3J5cHRvQWxnb3Jp
dGhtOjpzaWduKGNvbnN0IENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnNEZXByZWNhdGVkJiwgY29u
c3QgQ3J5cHRvS2V5JiwgY29uc3QgQ3J5cHRvT3BlcmF0aW9uRGF0YSYsIFZlY3RvckNhbGxiYWNr
JiYsIFZvaWRDYWxsYmFjayYmLCBFeGNlcHRpb25Db2RlJiBlYykKK3ZvaWQgQ3J5cHRvQWxnb3Jp
dGhtOjpzaWduKGNvbnN0IENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnNEZXByZWNhdGVkJiwgY29u
c3QgQ3J5cHRvS2V5JiwgY29uc3QgQnVmZmVyU291cmNlJiwgVmVjdG9yQ2FsbGJhY2smJiwgVm9p
ZENhbGxiYWNrJiYsIEV4Y2VwdGlvbkNvZGUmIGVjKQogewogICAgIGVjID0gTk9UX1NVUFBPUlRF
RF9FUlI7CiB9CiAKLXZvaWQgQ3J5cHRvQWxnb3JpdGhtOjp2ZXJpZnkoY29uc3QgQ3J5cHRvQWxn
b3JpdGhtUGFyYW1ldGVyc0RlcHJlY2F0ZWQmLCBjb25zdCBDcnlwdG9LZXkmLCBjb25zdCBDcnlw
dG9PcGVyYXRpb25EYXRhJiwgY29uc3QgQ3J5cHRvT3BlcmF0aW9uRGF0YSYsIEJvb2xDYWxsYmFj
ayYmLCBWb2lkQ2FsbGJhY2smJiwgRXhjZXB0aW9uQ29kZSYgZWMpCit2b2lkIENyeXB0b0FsZ29y
aXRobTo6dmVyaWZ5KGNvbnN0IENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnNEZXByZWNhdGVkJiwg
Y29uc3QgQ3J5cHRvS2V5JiwgY29uc3QgQnVmZmVyU291cmNlJiwgY29uc3QgQnVmZmVyU291cmNl
JiwgQm9vbENhbGxiYWNrJiYsIFZvaWRDYWxsYmFjayYmLCBFeGNlcHRpb25Db2RlJiBlYykKIHsK
ICAgICBlYyA9IE5PVF9TVVBQT1JURURfRVJSOwogfQogCi12b2lkIENyeXB0b0FsZ29yaXRobTo6
ZGlnZXN0KGNvbnN0IENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnNEZXByZWNhdGVkJiwgY29uc3Qg
Q3J5cHRvT3BlcmF0aW9uRGF0YSYsIFZlY3RvckNhbGxiYWNrJiYsIFZvaWRDYWxsYmFjayYmLCBF
eGNlcHRpb25Db2RlJiBlYykKK3ZvaWQgQ3J5cHRvQWxnb3JpdGhtOjpkaWdlc3QoY29uc3QgQ3J5
cHRvQWxnb3JpdGhtUGFyYW1ldGVyc0RlcHJlY2F0ZWQmLCBjb25zdCBCdWZmZXJTb3VyY2UmLCBW
ZWN0b3JDYWxsYmFjayYmLCBWb2lkQ2FsbGJhY2smJiwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAg
ICAgZWMgPSBOT1RfU1VQUE9SVEVEX0VSUjsKIH0KQEAgLTg1LDEyICs4NSwxMiBAQCB2b2lkIENy
eXB0b0FsZ29yaXRobTo6aW1wb3J0S2V5KGNvbnN0IENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnNE
ZXByZWNhdGVkJiwgY29ucwogICAgIGVjID0gTk9UX1NVUFBPUlRFRF9FUlI7CiB9CiAKLXZvaWQg
Q3J5cHRvQWxnb3JpdGhtOjplbmNyeXB0Rm9yV3JhcEtleShjb25zdCBDcnlwdG9BbGdvcml0aG1Q
YXJhbWV0ZXJzRGVwcmVjYXRlZCYgcGFyYW1ldGVycywgY29uc3QgQ3J5cHRvS2V5JiBrZXksIGNv
bnN0IENyeXB0b09wZXJhdGlvbkRhdGEmIGRhdGEsIFZlY3RvckNhbGxiYWNrJiYgY2FsbGJhY2ss
IFZvaWRDYWxsYmFjayYmIGZhaWx1cmVDYWxsYmFjaywgRXhjZXB0aW9uQ29kZSYgZWMpCit2b2lk
IENyeXB0b0FsZ29yaXRobTo6ZW5jcnlwdEZvcldyYXBLZXkoY29uc3QgQ3J5cHRvQWxnb3JpdGht
UGFyYW1ldGVyc0RlcHJlY2F0ZWQmIHBhcmFtZXRlcnMsIGNvbnN0IENyeXB0b0tleSYga2V5LCBj
b25zdCBCdWZmZXJTb3VyY2UmIGRhdGEsIFZlY3RvckNhbGxiYWNrJiYgY2FsbGJhY2ssIFZvaWRD
YWxsYmFjayYmIGZhaWx1cmVDYWxsYmFjaywgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgZW5j
cnlwdChwYXJhbWV0ZXJzLCBrZXksIGRhdGEsIFdURk1vdmUoY2FsbGJhY2spLCBXVEZNb3ZlKGZh
aWx1cmVDYWxsYmFjayksIGVjKTsKIH0KIAotdm9pZCBDcnlwdG9BbGdvcml0aG06OmRlY3J5cHRG
b3JVbndyYXBLZXkoY29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVyc0RlcHJlY2F0ZWQmIHBh
cmFtZXRlcnMsIGNvbnN0IENyeXB0b0tleSYga2V5LCBjb25zdCBDcnlwdG9PcGVyYXRpb25EYXRh
JiBkYXRhLCBWZWN0b3JDYWxsYmFjayYmIGNhbGxiYWNrLCBWb2lkQ2FsbGJhY2smJiBmYWlsdXJl
Q2FsbGJhY2ssIEV4Y2VwdGlvbkNvZGUmIGVjKQordm9pZCBDcnlwdG9BbGdvcml0aG06OmRlY3J5
cHRGb3JVbndyYXBLZXkoY29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVyc0RlcHJlY2F0ZWQm
IHBhcmFtZXRlcnMsIGNvbnN0IENyeXB0b0tleSYga2V5LCBjb25zdCBCdWZmZXJTb3VyY2UmIGRh
dGEsIFZlY3RvckNhbGxiYWNrJiYgY2FsbGJhY2ssIFZvaWRDYWxsYmFjayYmIGZhaWx1cmVDYWxs
YmFjaywgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgZGVjcnlwdChwYXJhbWV0ZXJzLCBrZXks
IGRhdGEsIFdURk1vdmUoY2FsbGJhY2spLCBXVEZNb3ZlKGZhaWx1cmVDYWxsYmFjayksIGVjKTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9DcnlwdG9BbGdvcml0aG0uaCBi
L1NvdXJjZS9XZWJDb3JlL2NyeXB0by9DcnlwdG9BbGdvcml0aG0uaAppbmRleCA2OGNjMjM1MDA1
OGNlNGRmNzNjNDRlMWU1YmU5MThhZDA0YzdmODVmLi5hYjViYjRhNjg2NThhZDgyNDZjMTZmYjQy
MjExOWY5MDE5YzI3YWNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vQ3J5cHRv
QWxnb3JpdGhtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL0NyeXB0b0FsZ29yaXRobS5o
CkBAIC0yNiw2ICsyNiw3IEBACiAjaWZuZGVmIENyeXB0b0FsZ29yaXRobV9oCiAjZGVmaW5lIENy
eXB0b0FsZ29yaXRobV9oCiAKKyNpbmNsdWRlICJCdWZmZXJTb3VyY2UuaCIKICNpbmNsdWRlICJD
cnlwdG9BbGdvcml0aG1JZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiQ3J5cHRvS2V5VXNhZ2UuaCIK
ICNpbmNsdWRlIDxmdW5jdGlvbmFsPgpAQCAtNDQsOSArNDUsNiBAQCBjbGFzcyBDcnlwdG9LZXk7
CiBjbGFzcyBDcnlwdG9LZXlQYWlyOwogY2xhc3MgQ3J5cHRvS2V5RGF0YTsKIAotLy8gRGF0YSBp
cyBtdXRhYmxlLCBzbyBhc3luYyBvcGVyYXRpb25zIHNob3VsZCBjb3B5IGl0IGZpcnN0LgotdHlw
ZWRlZiBzdGQ6OnBhaXI8Y29uc3QgdWludDhfdCosIHNpemVfdD4gQ3J5cHRvT3BlcmF0aW9uRGF0
YTsKLQogY2xhc3MgQ3J5cHRvQWxnb3JpdGhtIDogcHVibGljIFJlZkNvdW50ZWQ8Q3J5cHRvQWxn
b3JpdGhtPiB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQ3J5cHRvQWxnb3JpdGhtKQogcHVi
bGljOgpAQCAtNjAsMTkgKzU4LDE5IEBAIHB1YmxpYzoKICAgICB0eXBlZGVmIHN0ZDo6ZnVuY3Rp
b248dm9pZChjb25zdCBWZWN0b3I8dWludDhfdD4mKT4gVmVjdG9yQ2FsbGJhY2s7CiAgICAgdHlw
ZWRlZiBzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4gVm9pZENhbGxiYWNrOwogCi0gICAgdmlydHVhbCB2
b2lkIGVuY3J5cHQoY29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVyc0RlcHJlY2F0ZWQmLCBj
b25zdCBDcnlwdG9LZXkmLCBjb25zdCBDcnlwdG9PcGVyYXRpb25EYXRhJiwgVmVjdG9yQ2FsbGJh
Y2smJiwgVm9pZENhbGxiYWNrJiYgZmFpbHVyZUNhbGxiYWNrLCBFeGNlcHRpb25Db2RlJik7Ci0g
ICAgdmlydHVhbCB2b2lkIGRlY3J5cHQoY29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVyc0Rl
cHJlY2F0ZWQmLCBjb25zdCBDcnlwdG9LZXkmLCBjb25zdCBDcnlwdG9PcGVyYXRpb25EYXRhJiwg
VmVjdG9yQ2FsbGJhY2smJiwgVm9pZENhbGxiYWNrJiYgZmFpbHVyZUNhbGxiYWNrLCBFeGNlcHRp
b25Db2RlJik7Ci0gICAgdmlydHVhbCB2b2lkIHNpZ24oY29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFy
YW1ldGVyc0RlcHJlY2F0ZWQmLCBjb25zdCBDcnlwdG9LZXkmLCBjb25zdCBDcnlwdG9PcGVyYXRp
b25EYXRhJiwgVmVjdG9yQ2FsbGJhY2smJiwgVm9pZENhbGxiYWNrJiYgZmFpbHVyZUNhbGxiYWNr
LCBFeGNlcHRpb25Db2RlJik7Ci0gICAgdmlydHVhbCB2b2lkIHZlcmlmeShjb25zdCBDcnlwdG9B
bGdvcml0aG1QYXJhbWV0ZXJzRGVwcmVjYXRlZCYsIGNvbnN0IENyeXB0b0tleSYsIGNvbnN0IENy
eXB0b09wZXJhdGlvbkRhdGEmIHNpZ25hdHVyZSwgY29uc3QgQ3J5cHRvT3BlcmF0aW9uRGF0YSYs
IEJvb2xDYWxsYmFjayYmLCBWb2lkQ2FsbGJhY2smJiBmYWlsdXJlQ2FsbGJhY2ssIEV4Y2VwdGlv
bkNvZGUmKTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlnZXN0KGNvbnN0IENyeXB0b0FsZ29yaXRobVBh
cmFtZXRlcnNEZXByZWNhdGVkJiwgY29uc3QgQ3J5cHRvT3BlcmF0aW9uRGF0YSYsIFZlY3RvckNh
bGxiYWNrJiYsIFZvaWRDYWxsYmFjayYmIGZhaWx1cmVDYWxsYmFjaywgRXhjZXB0aW9uQ29kZSYp
OworICAgIHZpcnR1YWwgdm9pZCBlbmNyeXB0KGNvbnN0IENyeXB0b0FsZ29yaXRobVBhcmFtZXRl
cnNEZXByZWNhdGVkJiwgY29uc3QgQ3J5cHRvS2V5JiwgY29uc3QgQnVmZmVyU291cmNlJiwgVmVj
dG9yQ2FsbGJhY2smJiwgVm9pZENhbGxiYWNrJiYgZmFpbHVyZUNhbGxiYWNrLCBFeGNlcHRpb25D
b2RlJik7CisgICAgdmlydHVhbCB2b2lkIGRlY3J5cHQoY29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFy
YW1ldGVyc0RlcHJlY2F0ZWQmLCBjb25zdCBDcnlwdG9LZXkmLCBjb25zdCBCdWZmZXJTb3VyY2Um
LCBWZWN0b3JDYWxsYmFjayYmLCBWb2lkQ2FsbGJhY2smJiBmYWlsdXJlQ2FsbGJhY2ssIEV4Y2Vw
dGlvbkNvZGUmKTsKKyAgICB2aXJ0dWFsIHZvaWQgc2lnbihjb25zdCBDcnlwdG9BbGdvcml0aG1Q
YXJhbWV0ZXJzRGVwcmVjYXRlZCYsIGNvbnN0IENyeXB0b0tleSYsIGNvbnN0IEJ1ZmZlclNvdXJj
ZSYsIFZlY3RvckNhbGxiYWNrJiYsIFZvaWRDYWxsYmFjayYmIGZhaWx1cmVDYWxsYmFjaywgRXhj
ZXB0aW9uQ29kZSYpOworICAgIHZpcnR1YWwgdm9pZCB2ZXJpZnkoY29uc3QgQ3J5cHRvQWxnb3Jp
dGhtUGFyYW1ldGVyc0RlcHJlY2F0ZWQmLCBjb25zdCBDcnlwdG9LZXkmLCBjb25zdCBCdWZmZXJT
b3VyY2UmIHNpZ25hdHVyZSwgY29uc3QgQnVmZmVyU291cmNlJiwgQm9vbENhbGxiYWNrJiYsIFZv
aWRDYWxsYmFjayYmIGZhaWx1cmVDYWxsYmFjaywgRXhjZXB0aW9uQ29kZSYpOworICAgIHZpcnR1
YWwgdm9pZCBkaWdlc3QoY29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVyc0RlcHJlY2F0ZWQm
LCBjb25zdCBCdWZmZXJTb3VyY2UmLCBWZWN0b3JDYWxsYmFjayYmLCBWb2lkQ2FsbGJhY2smJiBm
YWlsdXJlQ2FsbGJhY2ssIEV4Y2VwdGlvbkNvZGUmKTsKICAgICB2aXJ0dWFsIHZvaWQgZ2VuZXJh
dGVLZXkoY29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVyc0RlcHJlY2F0ZWQmLCBib29sIGV4
dHJhY3RhYmxlLCBDcnlwdG9LZXlVc2FnZSwgS2V5T3JLZXlQYWlyQ2FsbGJhY2smJiwgVm9pZENh
bGxiYWNrJiYgZmFpbHVyZUNhbGxiYWNrLCBFeGNlcHRpb25Db2RlJik7CiAgICAgdmlydHVhbCB2
b2lkIGRlcml2ZUtleShjb25zdCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzRGVwcmVjYXRlZCYs
IGNvbnN0IENyeXB0b0tleSYgYmFzZUtleSwgQ3J5cHRvQWxnb3JpdGhtKiBkZXJpdmVkS2V5VHlw
ZSwgYm9vbCBleHRyYWN0YWJsZSwgQ3J5cHRvS2V5VXNhZ2UsIEtleUNhbGxiYWNrJiYsIFZvaWRD
YWxsYmFjayYmIGZhaWx1cmVDYWxsYmFjaywgRXhjZXB0aW9uQ29kZSYpOwogICAgIHZpcnR1YWwg
dm9pZCBkZXJpdmVCaXRzKGNvbnN0IENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnNEZXByZWNhdGVk
JiwgY29uc3QgQ3J5cHRvS2V5JiBiYXNlS2V5LCB1bnNpZ25lZCBsb25nIGxlbmd0aCwgVmVjdG9y
Q2FsbGJhY2smJiwgVm9pZENhbGxiYWNrJiYgZmFpbHVyZUNhbGxiYWNrLCBFeGNlcHRpb25Db2Rl
Jik7CiAgICAgdmlydHVhbCB2b2lkIGltcG9ydEtleShjb25zdCBDcnlwdG9BbGdvcml0aG1QYXJh
bWV0ZXJzRGVwcmVjYXRlZCYsIGNvbnN0IENyeXB0b0tleURhdGEmLCBib29sIGV4dHJhY3RhYmxl
LCBDcnlwdG9LZXlVc2FnZSwgS2V5Q2FsbGJhY2smJiwgVm9pZENhbGxiYWNrJiYgZmFpbHVyZUNh
bGxiYWNrLCBFeGNlcHRpb25Db2RlJik7CiAKICAgICAvLyBUaGVzZSBhcmUgb25seSBkaWZmZXJl
bnQgZnJvbSBlbmNyeXB0L2RlY3J5cHQgYmVjYXVzZSBzb21lIGFsZ29yaXRobXMgbWF5IG5vdCBl
eHBvc2UgZW5jcnlwdC9kZWNyeXB0LgotICAgIHZpcnR1YWwgdm9pZCBlbmNyeXB0Rm9yV3JhcEtl
eShjb25zdCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzRGVwcmVjYXRlZCYsIGNvbnN0IENyeXB0
b0tleSYsIGNvbnN0IENyeXB0b09wZXJhdGlvbkRhdGEmLCBWZWN0b3JDYWxsYmFjayYmLCBWb2lk
Q2FsbGJhY2smJiBmYWlsdXJlQ2FsbGJhY2ssIEV4Y2VwdGlvbkNvZGUmKTsKLSAgICB2aXJ0dWFs
IHZvaWQgZGVjcnlwdEZvclVud3JhcEtleShjb25zdCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJz
RGVwcmVjYXRlZCYsIGNvbnN0IENyeXB0b0tleSYsIGNvbnN0IENyeXB0b09wZXJhdGlvbkRhdGEm
LCBWZWN0b3JDYWxsYmFjayYmLCBWb2lkQ2FsbGJhY2smJiBmYWlsdXJlQ2FsbGJhY2ssIEV4Y2Vw
dGlvbkNvZGUmKTsKKyAgICB2aXJ0dWFsIHZvaWQgZW5jcnlwdEZvcldyYXBLZXkoY29uc3QgQ3J5
cHRvQWxnb3JpdGhtUGFyYW1ldGVyc0RlcHJlY2F0ZWQmLCBjb25zdCBDcnlwdG9LZXkmLCBjb25z
dCBCdWZmZXJTb3VyY2UmLCBWZWN0b3JDYWxsYmFjayYmLCBWb2lkQ2FsbGJhY2smJiBmYWlsdXJl
Q2FsbGJhY2ssIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGVjcnlwdEZvclVu
d3JhcEtleShjb25zdCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzRGVwcmVjYXRlZCYsIGNvbnN0
IENyeXB0b0tleSYsIGNvbnN0IEJ1ZmZlclNvdXJjZSYsIFZlY3RvckNhbGxiYWNrJiYsIFZvaWRD
YWxsYmFjayYmIGZhaWx1cmVDYWxsYmFjaywgRXhjZXB0aW9uQ29kZSYpOwogCiBwcm90ZWN0ZWQ6
CiAgICAgQ3J5cHRvQWxnb3JpdGhtKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlw
dG8vQ3J5cHRvS2V5U2VyaWFsaXphdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL0NyeXB0
b0tleVNlcmlhbGl6YXRpb24uaAppbmRleCBiNTEyZDQ5NGNmNmRmOWRjZWQwODMzMTZhNmI5NmRi
M2QyYjFiNjcyLi5mZTk1NTFjNjk1YjkyNThkZDY2OTEyOGJjMWVkNDFiODVhYjBjYjA0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vQ3J5cHRvS2V5U2VyaWFsaXphdGlvbi5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9DcnlwdG9LZXlTZXJpYWxpemF0aW9uLmgKQEAgLTM5
LDggKzM5LDYgQEAgY2xhc3MgQ3J5cHRvQWxnb3JpdGhtOwogY2xhc3MgQ3J5cHRvQWxnb3JpdGht
UGFyYW1ldGVyc0RlcHJlY2F0ZWQ7CiBjbGFzcyBDcnlwdG9LZXlEYXRhOwogCi10eXBlZGVmIHN0
ZDo6cGFpcjxjb25zdCB1aW50OF90Kiwgc2l6ZV90PiBDcnlwdG9PcGVyYXRpb25EYXRhOwotCiBz
dHJ1Y3QgQ3J5cHRvQWxnb3JpdGhtUGFpciB7CiAgICAgUmVmUHRyPENyeXB0b0FsZ29yaXRobT4g
YWxnb3JpdGhtOwogICAgIFJlZlB0cjxDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzRGVwcmVjYXRl
ZD4gcGFyYW1ldGVyczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9XZWJLaXRT
dWJ0bGVDcnlwdG8uaWRsIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL1dlYktpdFN1YnRsZUNyeXB0
by5pZGwKaW5kZXggMTU1NzM4MzQ5MjgwM2FlZjRiYzI0Njc2ZWQ1N2RiMGVhZGFjNTA1NS4uZjkw
NTM1OGMxNzVjYTlhODcwOTYzZjBkOWU3MGM2NGU3N2NhM2E5ZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvY3J5cHRvL1dlYktpdFN1YnRsZUNyeXB0by5pZGwKKysrIGIvU291cmNlL1dlYkNv
cmUvY3J5cHRvL1dlYktpdFN1YnRsZUNyeXB0by5pZGwKQEAgLTI4LDE0ICsyOCwxNCBAQAogICAg
IEdlbmVyYXRlSXNSZWFjaGFibGU9SW1wbERvY3VtZW50LAogICAgIE5vSW50ZXJmYWNlT2JqZWN0
LAogXSBpbnRlcmZhY2UgV2ViS2l0U3VidGxlQ3J5cHRvIHsKLSAgICBbQ3VzdG9tXSBQcm9taXNl
IGVuY3J5cHQoQWxnb3JpdGhtSWRlbnRpZmllciBhbGdvcml0aG0sIEtleSBrZXksIHNlcXVlbmNl
PENyeXB0b09wZXJhdGlvbkRhdGE+IGRhdGEpOwotICAgIFtDdXN0b21dIFByb21pc2UgZGVjcnlw
dChBbGdvcml0aG1JZGVudGlmaWVyIGFsZ29yaXRobSwgS2V5IGtleSwgc2VxdWVuY2U8Q3J5cHRv
T3BlcmF0aW9uRGF0YT4gZGF0YSk7Ci0gICAgW0N1c3RvbV0gUHJvbWlzZSBzaWduKEFsZ29yaXRo
bUlkZW50aWZpZXIgYWxnb3JpdGhtLCBLZXkga2V5LCBzZXF1ZW5jZTxDcnlwdG9PcGVyYXRpb25E
YXRhPiBkYXRhKTsKLSAgICBbQ3VzdG9tXSBQcm9taXNlIHZlcmlmeShBbGdvcml0aG1JZGVudGlm
aWVyIGFsZ29yaXRobSwgS2V5IGtleSwgQ3J5cHRvT3BlcmF0aW9uRGF0YSBzaWduYXR1cmUsIHNl
cXVlbmNlPENyeXB0b09wZXJhdGlvbkRhdGE+IGRhdGEpOwotICAgIFtDdXN0b21dIFByb21pc2Ug
ZGlnZXN0KEFsZ29yaXRobUlkZW50aWZpZXIgYWxnb3JpdGhtLCBzZXF1ZW5jZTxDcnlwdG9PcGVy
YXRpb25EYXRhPiBkYXRhKTsKKyAgICBbQ3VzdG9tXSBQcm9taXNlIGVuY3J5cHQoQWxnb3JpdGht
SWRlbnRpZmllciBhbGdvcml0aG0sIEtleSBrZXksIEJ1ZmZlclNvdXJjZSBkYXRhKTsKKyAgICBb
Q3VzdG9tXSBQcm9taXNlIGRlY3J5cHQoQWxnb3JpdGhtSWRlbnRpZmllciBhbGdvcml0aG0sIEtl
eSBrZXksIEJ1ZmZlclNvdXJjZSBkYXRhKTsKKyAgICBbQ3VzdG9tXSBQcm9taXNlIHNpZ24oQWxn
b3JpdGhtSWRlbnRpZmllciBhbGdvcml0aG0sIEtleSBrZXksIEJ1ZmZlclNvdXJjZSBkYXRhKTsK
KyAgICBbQ3VzdG9tXSBQcm9taXNlIHZlcmlmeShBbGdvcml0aG1JZGVudGlmaWVyIGFsZ29yaXRo
bSwgS2V5IGtleSwgQnVmZmVyU291cmNlIHNpZ25hdHVyZSwgQnVmZmVyU291cmNlIGRhdGEpOwor
ICAgIFtDdXN0b21dIFByb21pc2UgZGlnZXN0KEFsZ29yaXRobUlkZW50aWZpZXIgYWxnb3JpdGht
LCBCdWZmZXJTb3VyY2UgZGF0YSk7CiAgICAgW0N1c3RvbV0gUHJvbWlzZSBnZW5lcmF0ZUtleShB
bGdvcml0aG1JZGVudGlmaWVyIGFsZ29yaXRobSwgb3B0aW9uYWwgYm9vbGVhbiBleHRyYWN0YWJs
ZSwgb3B0aW9uYWwgc2VxdWVuY2U8S2V5VXNhZ2U+IGtleVVzYWdlcyk7Ci0gICAgW0N1c3RvbV0g
UHJvbWlzZSBpbXBvcnRLZXkoS2V5Rm9ybWF0IGZvcm1hdCwgQ3J5cHRvT3BlcmF0aW9uRGF0YSBr
ZXlEYXRhLCBBbGdvcml0aG1JZGVudGlmaWVyPyBhbGdvcml0aG0sIG9wdGlvbmFsIGJvb2xlYW4g
ZXh0cmFjdGFibGUsIG9wdGlvbmFsIHNlcXVlbmNlPEtleVVzYWdlPiBrZXlVc2FnZXMpOworICAg
IFtDdXN0b21dIFByb21pc2UgaW1wb3J0S2V5KEtleUZvcm1hdCBmb3JtYXQsIEJ1ZmZlclNvdXJj
ZSBrZXlEYXRhLCBBbGdvcml0aG1JZGVudGlmaWVyPyBhbGdvcml0aG0sIG9wdGlvbmFsIGJvb2xl
YW4gZXh0cmFjdGFibGUsIG9wdGlvbmFsIHNlcXVlbmNlPEtleVVzYWdlPiBrZXlVc2FnZXMpOwog
ICAgIFtDdXN0b21dIFByb21pc2UgZXhwb3J0S2V5KEtleUZvcm1hdCBmb3JtYXQsIEtleSBrZXkp
OwogICAgIFtDdXN0b21dIFByb21pc2Ugd3JhcEtleShLZXlGb3JtYXQgZm9ybWF0LCBLZXkga2V5
LCBLZXkgd3JhcHBpbmdLZXksIEFsZ29yaXRobUlkZW50aWZpZXIgd3JhcEFsZ29yaXRobSk7Ci0g
ICAgW0N1c3RvbV0gUHJvbWlzZSB1bndyYXBLZXkoS2V5Rm9ybWF0IGZvcm1hdCwgQ3J5cHRvT3Bl
cmF0aW9uRGF0YSB3cmFwcGVkS2V5LCBLZXkgdW53cmFwcGluZ0tleSwgQWxnb3JpdGhtSWRlbnRp
ZmllciB1bndyYXBBbGdvcml0aG0sIEFsZ29yaXRobUlkZW50aWZpZXI/IHVud3JhcHBlZEtleUFs
Z29yaXRobSwgb3B0aW9uYWwgYm9vbGVhbiBleHRyYWN0YWJsZSwgb3B0aW9uYWwgc2VxdWVuY2U8
S2V5VXNhZ2U+IGtleVVzYWdlcyk7CisgICAgW0N1c3RvbV0gUHJvbWlzZSB1bndyYXBLZXkoS2V5
Rm9ybWF0IGZvcm1hdCwgQnVmZmVyU291cmNlIHdyYXBwZWRLZXksIEtleSB1bndyYXBwaW5nS2V5
LCBBbGdvcml0aG1JZGVudGlmaWVyIHVud3JhcEFsZ29yaXRobSwgQWxnb3JpdGhtSWRlbnRpZmll
cj8gdW53cmFwcGVkS2V5QWxnb3JpdGhtLCBvcHRpb25hbCBib29sZWFuIGV4dHJhY3RhYmxlLCBv
cHRpb25hbCBzZXF1ZW5jZTxLZXlVc2FnZT4ga2V5VXNhZ2VzKTsKIH07CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1BRVNfQ0JDLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobUFFU19D
QkMuY3BwCmluZGV4IDhmNDE5ZGM0NTgzNjI4YjdiZWRmMzUzNWZkYjcxOGFlNzQ5YzkwNzIuLmJj
ZDM5ZmU1NGJlNTExMjM4ODAwMDQyYTgxZDZhNGU5N2NkYTU0ODYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobUFFU19DQkMuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobUFFU19D
QkMuY3BwCkBAIC02NSw3ICs2NSw3IEBAIGJvb2wgQ3J5cHRvQWxnb3JpdGhtQUVTX0NCQzo6a2V5
QWxnb3JpdGhtTWF0Y2hlcyhjb25zdCBDcnlwdG9BbGdvcml0aG1BZXNDYmNQYXJhCiAgICAgcmV0
dXJuIHRydWU7CiB9CiAKLXZvaWQgQ3J5cHRvQWxnb3JpdGhtQUVTX0NCQzo6ZW5jcnlwdChjb25z
dCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzRGVwcmVjYXRlZCYgcGFyYW1ldGVycywgY29uc3Qg
Q3J5cHRvS2V5JiBrZXksIGNvbnN0IENyeXB0b09wZXJhdGlvbkRhdGEmIGRhdGEsIFZlY3RvckNh
bGxiYWNrJiYgY2FsbGJhY2ssIFZvaWRDYWxsYmFjayYmIGZhaWx1cmVDYWxsYmFjaywgRXhjZXB0
aW9uQ29kZSYgZWMpCit2b2lkIENyeXB0b0FsZ29yaXRobUFFU19DQkM6OmVuY3J5cHQoY29uc3Qg
Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVyc0RlcHJlY2F0ZWQmIHBhcmFtZXRlcnMsIGNvbnN0IENy
eXB0b0tleSYga2V5LCBjb25zdCBCdWZmZXJTb3VyY2UmIGRhdGEsIFZlY3RvckNhbGxiYWNrJiYg
Y2FsbGJhY2ssIFZvaWRDYWxsYmFjayYmIGZhaWx1cmVDYWxsYmFjaywgRXhjZXB0aW9uQ29kZSYg
ZWMpCiB7CiAgICAgY29uc3QgQ3J5cHRvQWxnb3JpdGhtQWVzQ2JjUGFyYW1zRGVwcmVjYXRlZCYg
YWVzQ0JDUGFyYW1ldGVycyA9IGRvd25jYXN0PENyeXB0b0FsZ29yaXRobUFlc0NiY1BhcmFtc0Rl
cHJlY2F0ZWQ+KHBhcmFtZXRlcnMpOwogCkBAIC03Nyw3ICs3Nyw3IEBAIHZvaWQgQ3J5cHRvQWxn
b3JpdGhtQUVTX0NCQzo6ZW5jcnlwdChjb25zdCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzRGVw
cmVjYXRlZCYKICAgICBwbGF0Zm9ybUVuY3J5cHQoYWVzQ0JDUGFyYW1ldGVycywgZG93bmNhc3Q8
Q3J5cHRvS2V5QUVTPihrZXkpLCBkYXRhLCBXVEZNb3ZlKGNhbGxiYWNrKSwgV1RGTW92ZShmYWls
dXJlQ2FsbGJhY2spLCBlYyk7CiB9CiAKLXZvaWQgQ3J5cHRvQWxnb3JpdGhtQUVTX0NCQzo6ZGVj
cnlwdChjb25zdCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzRGVwcmVjYXRlZCYgcGFyYW1ldGVy
cywgY29uc3QgQ3J5cHRvS2V5JiBrZXksIGNvbnN0IENyeXB0b09wZXJhdGlvbkRhdGEmIGRhdGEs
IFZlY3RvckNhbGxiYWNrJiYgY2FsbGJhY2ssIFZvaWRDYWxsYmFjayYmIGZhaWx1cmVDYWxsYmFj
aywgRXhjZXB0aW9uQ29kZSYgZWMpCit2b2lkIENyeXB0b0FsZ29yaXRobUFFU19DQkM6OmRlY3J5
cHQoY29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVyc0RlcHJlY2F0ZWQmIHBhcmFtZXRlcnMs
IGNvbnN0IENyeXB0b0tleSYga2V5LCBjb25zdCBCdWZmZXJTb3VyY2UmIGRhdGEsIFZlY3RvckNh
bGxiYWNrJiYgY2FsbGJhY2ssIFZvaWRDYWxsYmFjayYmIGZhaWx1cmVDYWxsYmFjaywgRXhjZXB0
aW9uQ29kZSYgZWMpCiB7CiAgICAgY29uc3QgQ3J5cHRvQWxnb3JpdGhtQWVzQ2JjUGFyYW1zRGVw
cmVjYXRlZCYgYWVzQ0JDUGFyYW1ldGVycyA9IGRvd25jYXN0PENyeXB0b0FsZ29yaXRobUFlc0Ni
Y1BhcmFtc0RlcHJlY2F0ZWQ+KHBhcmFtZXRlcnMpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1BRVNfQ0JDLmggYi9Tb3VyY2Uv
V2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1BRVNfQ0JDLmgKaW5kZXgg
NjljZWNjYTNmZGVhZTIzODVjYjk1ZmNhN2FkNDNjMzVmM2EwYTRlNi4uNTUzYjE1MTA5NTM3YjY4
OTJmYmRjZjYwOGE2OTdiOTEwOGNlYzM5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3J5
cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtQUVTX0NCQy5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobUFFU19DQkMuaApAQCAtNDQsOCAr
NDQsOCBAQCBwdWJsaWM6CiAKICAgICBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyIGlkZW50aWZp
ZXIoKSBjb25zdCBvdmVycmlkZTsKIAotICAgIHZvaWQgZW5jcnlwdChjb25zdCBDcnlwdG9BbGdv
cml0aG1QYXJhbWV0ZXJzRGVwcmVjYXRlZCYsIGNvbnN0IENyeXB0b0tleSYsIGNvbnN0IENyeXB0
b09wZXJhdGlvbkRhdGEmLCBWZWN0b3JDYWxsYmFjayYmLCBWb2lkQ2FsbGJhY2smJiBmYWlsdXJl
Q2FsbGJhY2ssIEV4Y2VwdGlvbkNvZGUmKSBvdmVycmlkZTsKLSAgICB2b2lkIGRlY3J5cHQoY29u
c3QgQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVyc0RlcHJlY2F0ZWQmLCBjb25zdCBDcnlwdG9LZXkm
LCBjb25zdCBDcnlwdG9PcGVyYXRpb25EYXRhJiwgVmVjdG9yQ2FsbGJhY2smJiwgVm9pZENhbGxi
YWNrJiYgZmFpbHVyZUNhbGxiYWNrLCBFeGNlcHRpb25Db2RlJikgb3ZlcnJpZGU7CisgICAgdm9p
ZCBlbmNyeXB0KGNvbnN0IENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnNEZXByZWNhdGVkJiwgY29u
c3QgQ3J5cHRvS2V5JiwgY29uc3QgQnVmZmVyU291cmNlJiwgVmVjdG9yQ2FsbGJhY2smJiwgVm9p
ZENhbGxiYWNrJiYgZmFpbHVyZUNhbGxiYWNrLCBFeGNlcHRpb25Db2RlJikgb3ZlcnJpZGU7Cisg
ICAgdm9pZCBkZWNyeXB0KGNvbnN0IENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnNEZXByZWNhdGVk
JiwgY29uc3QgQ3J5cHRvS2V5JiwgY29uc3QgQnVmZmVyU291cmNlJiwgVmVjdG9yQ2FsbGJhY2sm
JiwgVm9pZENhbGxiYWNrJiYgZmFpbHVyZUNhbGxiYWNrLCBFeGNlcHRpb25Db2RlJikgb3ZlcnJp
ZGU7CiAgICAgdm9pZCBnZW5lcmF0ZUtleShjb25zdCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJz
RGVwcmVjYXRlZCYsIGJvb2wgZXh0cmFjdGFibGUsIENyeXB0b0tleVVzYWdlLCBLZXlPcktleVBh
aXJDYWxsYmFjayYmLCBWb2lkQ2FsbGJhY2smJiBmYWlsdXJlQ2FsbGJhY2ssIEV4Y2VwdGlvbkNv
ZGUmKSBvdmVycmlkZTsKICAgICB2b2lkIGltcG9ydEtleShjb25zdCBDcnlwdG9BbGdvcml0aG1Q
YXJhbWV0ZXJzRGVwcmVjYXRlZCYsIGNvbnN0IENyeXB0b0tleURhdGEmLCBib29sIGV4dHJhY3Rh
YmxlLCBDcnlwdG9LZXlVc2FnZSwgS2V5Q2FsbGJhY2smJiwgVm9pZENhbGxiYWNrJiYgZmFpbHVy
ZUNhbGxiYWNrLCBFeGNlcHRpb25Db2RlJikgb3ZlcnJpZGU7CiAKQEAgLTU0LDggKzU0LDggQEAg
cHJpdmF0ZToKICAgICB2aXJ0dWFsIH5DcnlwdG9BbGdvcml0aG1BRVNfQ0JDKCk7CiAKICAgICBi
b29sIGtleUFsZ29yaXRobU1hdGNoZXMoY29uc3QgQ3J5cHRvQWxnb3JpdGhtQWVzQ2JjUGFyYW1z
RGVwcmVjYXRlZCYgYWxnb3JpdGhtUGFyYW1ldGVycywgY29uc3QgQ3J5cHRvS2V5JikgY29uc3Q7
Ci0gICAgdm9pZCBwbGF0Zm9ybUVuY3J5cHQoY29uc3QgQ3J5cHRvQWxnb3JpdGhtQWVzQ2JjUGFy
YW1zRGVwcmVjYXRlZCYsIGNvbnN0IENyeXB0b0tleUFFUyYsIGNvbnN0IENyeXB0b09wZXJhdGlv
bkRhdGEmLCBWZWN0b3JDYWxsYmFjayYmLCBWb2lkQ2FsbGJhY2smJiBmYWlsdXJlQ2FsbGJhY2ss
IEV4Y2VwdGlvbkNvZGUmKTsKLSAgICB2b2lkIHBsYXRmb3JtRGVjcnlwdChjb25zdCBDcnlwdG9B
bGdvcml0aG1BZXNDYmNQYXJhbXNEZXByZWNhdGVkJiwgY29uc3QgQ3J5cHRvS2V5QUVTJiwgY29u
c3QgQ3J5cHRvT3BlcmF0aW9uRGF0YSYsIFZlY3RvckNhbGxiYWNrJiYsIFZvaWRDYWxsYmFjayYm
IGZhaWx1cmVDYWxsYmFjaywgRXhjZXB0aW9uQ29kZSYpOworICAgIHZvaWQgcGxhdGZvcm1FbmNy
eXB0KGNvbnN0IENyeXB0b0FsZ29yaXRobUFlc0NiY1BhcmFtc0RlcHJlY2F0ZWQmLCBjb25zdCBD
cnlwdG9LZXlBRVMmLCBjb25zdCBCdWZmZXJTb3VyY2UmLCBWZWN0b3JDYWxsYmFjayYmLCBWb2lk
Q2FsbGJhY2smJiBmYWlsdXJlQ2FsbGJhY2ssIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICB2b2lkIHBs
YXRmb3JtRGVjcnlwdChjb25zdCBDcnlwdG9BbGdvcml0aG1BZXNDYmNQYXJhbXNEZXByZWNhdGVk
JiwgY29uc3QgQ3J5cHRvS2V5QUVTJiwgY29uc3QgQnVmZmVyU291cmNlJiwgVmVjdG9yQ2FsbGJh
Y2smJiwgVm9pZENhbGxiYWNrJiYgZmFpbHVyZUNhbGxiYWNrLCBFeGNlcHRpb25Db2RlJik7CiB9
OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9Dcnlw
dG9BbGdvcml0aG1BRVNfS1cuY3BwIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMv
Q3J5cHRvQWxnb3JpdGhtQUVTX0tXLmNwcAppbmRleCBjZWU1N2M1ZTU0NzU3NDYwNjRkMGQ0ZmRm
ZTU0NGY2ZGE5MmY4MDRlLi43MGI3ZWEzMmMyZWZjNDg1ZDhkZTM5OWVjZmM1NWNhNWExOWFiNTFi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdv
cml0aG1BRVNfS1cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0Ny
eXB0b0FsZ29yaXRobUFFU19LVy5jcHAKQEAgLTY0LDcgKzY0LDcgQEAgYm9vbCBDcnlwdG9BbGdv
cml0aG1BRVNfS1c6OmtleUFsZ29yaXRobU1hdGNoZXMoY29uc3QgQ3J5cHRvS2V5JiBrZXkpIGNv
bnN0CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXZvaWQgQ3J5cHRvQWxnb3JpdGhtQUVTX0tXOjpl
bmNyeXB0Rm9yV3JhcEtleShjb25zdCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzRGVwcmVjYXRl
ZCYsIGNvbnN0IENyeXB0b0tleSYga2V5LCBjb25zdCBDcnlwdG9PcGVyYXRpb25EYXRhJiBkYXRh
LCBWZWN0b3JDYWxsYmFjayYmIGNhbGxiYWNrLCBWb2lkQ2FsbGJhY2smJiBmYWlsdXJlQ2FsbGJh
Y2ssIEV4Y2VwdGlvbkNvZGUmIGVjKQordm9pZCBDcnlwdG9BbGdvcml0aG1BRVNfS1c6OmVuY3J5
cHRGb3JXcmFwS2V5KGNvbnN0IENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnNEZXByZWNhdGVkJiwg
Y29uc3QgQ3J5cHRvS2V5JiBrZXksIGNvbnN0IEJ1ZmZlclNvdXJjZSYgZGF0YSwgVmVjdG9yQ2Fs
bGJhY2smJiBjYWxsYmFjaywgVm9pZENhbGxiYWNrJiYgZmFpbHVyZUNhbGxiYWNrLCBFeGNlcHRp
b25Db2RlJiBlYykKIHsKICAgICBpZiAoIWtleUFsZ29yaXRobU1hdGNoZXMoa2V5KSkgewogICAg
ICAgICBlYyA9IE5PVF9TVVBQT1JURURfRVJSOwpAQCAtNzQsNyArNzQsNyBAQCB2b2lkIENyeXB0
b0FsZ29yaXRobUFFU19LVzo6ZW5jcnlwdEZvcldyYXBLZXkoY29uc3QgQ3J5cHRvQWxnb3JpdGht
UGFyYW1ldGVyc0RlcAogICAgIHBsYXRmb3JtRW5jcnlwdChkb3duY2FzdDxDcnlwdG9LZXlBRVM+
KGtleSksIGRhdGEsIFdURk1vdmUoY2FsbGJhY2spLCBXVEZNb3ZlKGZhaWx1cmVDYWxsYmFjayks
IGVjKTsKIH0KIAotdm9pZCBDcnlwdG9BbGdvcml0aG1BRVNfS1c6OmRlY3J5cHRGb3JVbndyYXBL
ZXkoY29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVyc0RlcHJlY2F0ZWQmLCBjb25zdCBDcnlw
dG9LZXkmIGtleSwgY29uc3QgQ3J5cHRvT3BlcmF0aW9uRGF0YSYgZGF0YSwgVmVjdG9yQ2FsbGJh
Y2smJiBjYWxsYmFjaywgVm9pZENhbGxiYWNrJiYgZmFpbHVyZUNhbGxiYWNrLCBFeGNlcHRpb25D
b2RlJiBlYykKK3ZvaWQgQ3J5cHRvQWxnb3JpdGhtQUVTX0tXOjpkZWNyeXB0Rm9yVW53cmFwS2V5
KGNvbnN0IENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnNEZXByZWNhdGVkJiwgY29uc3QgQ3J5cHRv
S2V5JiBrZXksIGNvbnN0IEJ1ZmZlclNvdXJjZSYgZGF0YSwgVmVjdG9yQ2FsbGJhY2smJiBjYWxs
YmFjaywgVm9pZENhbGxiYWNrJiYgZmFpbHVyZUNhbGxiYWNrLCBFeGNlcHRpb25Db2RlJiBlYykK
IHsKICAgICBpZiAoIWtleUFsZ29yaXRobU1hdGNoZXMoa2V5KSkgewogICAgICAgICBlYyA9IE5P
VF9TVVBQT1JURURfRVJSOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29y
aXRobXMvQ3J5cHRvQWxnb3JpdGhtQUVTX0tXLmggYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxn
b3JpdGhtcy9DcnlwdG9BbGdvcml0aG1BRVNfS1cuaAppbmRleCA3NjU3NmI3YjM3MGI2MzIwM2Jk
NGQ5MTQzOWJmYjRjNzUyODFjOTM5Li4wZmQwZGY1OWY5Y2EwYmMzOTdkNTEyNzA2ZGE0NmYyMjU0
Mjc3MGJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9Dcnlw
dG9BbGdvcml0aG1BRVNfS1cuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGht
cy9DcnlwdG9BbGdvcml0aG1BRVNfS1cuaApAQCAtNDMsOCArNDMsOCBAQCBwdWJsaWM6CiAKICAg
ICBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyIGlkZW50aWZpZXIoKSBjb25zdCBvdmVycmlkZTsK
IAotICAgIHZvaWQgZW5jcnlwdEZvcldyYXBLZXkoY29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFyYW1l
dGVyc0RlcHJlY2F0ZWQmLCBjb25zdCBDcnlwdG9LZXkmLCBjb25zdCBDcnlwdG9PcGVyYXRpb25E
YXRhJiwgVmVjdG9yQ2FsbGJhY2smJiwgVm9pZENhbGxiYWNrJiYgZmFpbHVyZUNhbGxiYWNrLCBF
eGNlcHRpb25Db2RlJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkZWNyeXB0Rm9yVW53cmFwS2V5KGNv
bnN0IENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnNEZXByZWNhdGVkJiwgY29uc3QgQ3J5cHRvS2V5
JiwgY29uc3QgQ3J5cHRvT3BlcmF0aW9uRGF0YSYsIFZlY3RvckNhbGxiYWNrJiYsIFZvaWRDYWxs
YmFjayYmIGZhaWx1cmVDYWxsYmFjaywgRXhjZXB0aW9uQ29kZSYpIG92ZXJyaWRlOworICAgIHZv
aWQgZW5jcnlwdEZvcldyYXBLZXkoY29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVyc0RlcHJl
Y2F0ZWQmLCBjb25zdCBDcnlwdG9LZXkmLCBjb25zdCBCdWZmZXJTb3VyY2UmLCBWZWN0b3JDYWxs
YmFjayYmLCBWb2lkQ2FsbGJhY2smJiBmYWlsdXJlQ2FsbGJhY2ssIEV4Y2VwdGlvbkNvZGUmKSBv
dmVycmlkZTsKKyAgICB2b2lkIGRlY3J5cHRGb3JVbndyYXBLZXkoY29uc3QgQ3J5cHRvQWxnb3Jp
dGhtUGFyYW1ldGVyc0RlcHJlY2F0ZWQmLCBjb25zdCBDcnlwdG9LZXkmLCBjb25zdCBCdWZmZXJT
b3VyY2UmLCBWZWN0b3JDYWxsYmFjayYmLCBWb2lkQ2FsbGJhY2smJiBmYWlsdXJlQ2FsbGJhY2ss
IEV4Y2VwdGlvbkNvZGUmKSBvdmVycmlkZTsKICAgICB2b2lkIGdlbmVyYXRlS2V5KGNvbnN0IENy
eXB0b0FsZ29yaXRobVBhcmFtZXRlcnNEZXByZWNhdGVkJiwgYm9vbCBleHRyYWN0YWJsZSwgQ3J5
cHRvS2V5VXNhZ2UsIEtleU9yS2V5UGFpckNhbGxiYWNrJiYsIFZvaWRDYWxsYmFjayYmIGZhaWx1
cmVDYWxsYmFjaywgRXhjZXB0aW9uQ29kZSYpIG92ZXJyaWRlOwogICAgIHZvaWQgaW1wb3J0S2V5
KGNvbnN0IENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnNEZXByZWNhdGVkJiwgY29uc3QgQ3J5cHRv
S2V5RGF0YSYsIGJvb2wgZXh0cmFjdGFibGUsIENyeXB0b0tleVVzYWdlLCBLZXlDYWxsYmFjayYm
LCBWb2lkQ2FsbGJhY2smJiBmYWlsdXJlQ2FsbGJhY2ssIEV4Y2VwdGlvbkNvZGUmKSBvdmVycmlk
ZTsKIApAQCAtNTMsOCArNTMsOCBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgfkNyeXB0b0FsZ29y
aXRobUFFU19LVygpOwogCiAgICAgYm9vbCBrZXlBbGdvcml0aG1NYXRjaGVzKGNvbnN0IENyeXB0
b0tleSYpIGNvbnN0OwotICAgIHZvaWQgcGxhdGZvcm1FbmNyeXB0KGNvbnN0IENyeXB0b0tleUFF
UyYsIGNvbnN0IENyeXB0b09wZXJhdGlvbkRhdGEmLCBWZWN0b3JDYWxsYmFjayYmLCBWb2lkQ2Fs
bGJhY2smJiBmYWlsdXJlQ2FsbGJhY2ssIEV4Y2VwdGlvbkNvZGUmKTsKLSAgICB2b2lkIHBsYXRm
b3JtRGVjcnlwdChjb25zdCBDcnlwdG9LZXlBRVMmLCBjb25zdCBDcnlwdG9PcGVyYXRpb25EYXRh
JiwgVmVjdG9yQ2FsbGJhY2smJiwgVm9pZENhbGxiYWNrJiYgZmFpbHVyZUNhbGxiYWNrLCBFeGNl
cHRpb25Db2RlJik7CisgICAgdm9pZCBwbGF0Zm9ybUVuY3J5cHQoY29uc3QgQ3J5cHRvS2V5QUVT
JiwgY29uc3QgQnVmZmVyU291cmNlJiwgVmVjdG9yQ2FsbGJhY2smJiwgVm9pZENhbGxiYWNrJiYg
ZmFpbHVyZUNhbGxiYWNrLCBFeGNlcHRpb25Db2RlJik7CisgICAgdm9pZCBwbGF0Zm9ybURlY3J5
cHQoY29uc3QgQ3J5cHRvS2V5QUVTJiwgY29uc3QgQnVmZmVyU291cmNlJiwgVmVjdG9yQ2FsbGJh
Y2smJiwgVm9pZENhbGxiYWNrJiYgZmFpbHVyZUNhbGxiYWNrLCBFeGNlcHRpb25Db2RlJik7CiB9
OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9Dcnlw
dG9BbGdvcml0aG1ITUFDLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0Ny
eXB0b0FsZ29yaXRobUhNQUMuY3BwCmluZGV4IDcwNDI3NWY4YjE4MTI4Y2FmNGY1NmE0ZTVkYTY4
ODcyNzRiYzIwMDUuLjgxZmE1MjM0OWRhNDNlOGIyZjk4ZDgyOTdiZTYwOWQyMjU1MjRkNjggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRo
bUhNQUMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0Fs
Z29yaXRobUhNQUMuY3BwCkBAIC02Nyw3ICs2Nyw3IEBAIGJvb2wgQ3J5cHRvQWxnb3JpdGhtSE1B
Qzo6a2V5QWxnb3JpdGhtTWF0Y2hlcyhjb25zdCBDcnlwdG9BbGdvcml0aG1IbWFjUGFyYW1zRGVw
CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXZvaWQgQ3J5cHRvQWxnb3JpdGhtSE1BQzo6c2lnbihj
b25zdCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzRGVwcmVjYXRlZCYgcGFyYW1ldGVycywgY29u
c3QgQ3J5cHRvS2V5JiBrZXksIGNvbnN0IENyeXB0b09wZXJhdGlvbkRhdGEmIGRhdGEsIFZlY3Rv
ckNhbGxiYWNrJiYgY2FsbGJhY2ssIFZvaWRDYWxsYmFjayYmIGZhaWx1cmVDYWxsYmFjaywgRXhj
ZXB0aW9uQ29kZSYgZWMpCit2b2lkIENyeXB0b0FsZ29yaXRobUhNQUM6OnNpZ24oY29uc3QgQ3J5
cHRvQWxnb3JpdGhtUGFyYW1ldGVyc0RlcHJlY2F0ZWQmIHBhcmFtZXRlcnMsIGNvbnN0IENyeXB0
b0tleSYga2V5LCBjb25zdCBCdWZmZXJTb3VyY2UmIGRhdGEsIFZlY3RvckNhbGxiYWNrJiYgY2Fs
bGJhY2ssIFZvaWRDYWxsYmFjayYmIGZhaWx1cmVDYWxsYmFjaywgRXhjZXB0aW9uQ29kZSYgZWMp
CiB7CiAgICAgY29uc3QgQ3J5cHRvQWxnb3JpdGhtSG1hY1BhcmFtc0RlcHJlY2F0ZWQmIGhtYWNQ
YXJhbWV0ZXJzID0gZG93bmNhc3Q8Q3J5cHRvQWxnb3JpdGhtSG1hY1BhcmFtc0RlcHJlY2F0ZWQ+
KHBhcmFtZXRlcnMpOwogCkBAIC03OSw3ICs3OSw3IEBAIHZvaWQgQ3J5cHRvQWxnb3JpdGhtSE1B
Qzo6c2lnbihjb25zdCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzRGVwcmVjYXRlZCYgcGFyYW1l
CiAgICAgcGxhdGZvcm1TaWduKGhtYWNQYXJhbWV0ZXJzLCBkb3duY2FzdDxDcnlwdG9LZXlITUFD
PihrZXkpLCBkYXRhLCBXVEZNb3ZlKGNhbGxiYWNrKSwgV1RGTW92ZShmYWlsdXJlQ2FsbGJhY2sp
LCBlYyk7CiB9CiAKLXZvaWQgQ3J5cHRvQWxnb3JpdGhtSE1BQzo6dmVyaWZ5KGNvbnN0IENyeXB0
b0FsZ29yaXRobVBhcmFtZXRlcnNEZXByZWNhdGVkJiBwYXJhbWV0ZXJzLCBjb25zdCBDcnlwdG9L
ZXkmIGtleSwgY29uc3QgQ3J5cHRvT3BlcmF0aW9uRGF0YSYgZXhwZWN0ZWRTaWduYXR1cmUsIGNv
bnN0IENyeXB0b09wZXJhdGlvbkRhdGEmIGRhdGEsIEJvb2xDYWxsYmFjayYmIGNhbGxiYWNrLCBW
b2lkQ2FsbGJhY2smJiBmYWlsdXJlQ2FsbGJhY2ssIEV4Y2VwdGlvbkNvZGUmIGVjKQordm9pZCBD
cnlwdG9BbGdvcml0aG1ITUFDOjp2ZXJpZnkoY29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVy
c0RlcHJlY2F0ZWQmIHBhcmFtZXRlcnMsIGNvbnN0IENyeXB0b0tleSYga2V5LCBjb25zdCBCdWZm
ZXJTb3VyY2UmIGV4cGVjdGVkU2lnbmF0dXJlLCBjb25zdCBCdWZmZXJTb3VyY2UmIGRhdGEsIEJv
b2xDYWxsYmFjayYmIGNhbGxiYWNrLCBWb2lkQ2FsbGJhY2smJiBmYWlsdXJlQ2FsbGJhY2ssIEV4
Y2VwdGlvbkNvZGUmIGVjKQogewogICAgIGNvbnN0IENyeXB0b0FsZ29yaXRobUhtYWNQYXJhbXNE
ZXByZWNhdGVkJiBobWFjUGFyYW1ldGVycyA9IGRvd25jYXN0PENyeXB0b0FsZ29yaXRobUhtYWNQ
YXJhbXNEZXByZWNhdGVkPihwYXJhbWV0ZXJzKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtSE1BQy5oIGIvU291cmNlL1dlYkNv
cmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtSE1BQy5oCmluZGV4IDViNjdlMmRm
MDJlZmI5YmFkYmQ4OTQ4MmJlMjEwMjE3NDljNmYzODQuLmNmMjFkM2QzZmU1NjNlNTRmYzYyNjY3
ZGIwNTBmZTUyYThmNzcxZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdv
cml0aG1zL0NyeXB0b0FsZ29yaXRobUhNQUMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8v
YWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1ITUFDLmgKQEAgLTQ0LDggKzQ0LDggQEAgcHVibGlj
OgogCiAgICAgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllciBpZGVudGlmaWVyKCkgY29uc3Qgb3Zl
cnJpZGU7CiAKLSAgICB2b2lkIHNpZ24oY29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVyc0Rl
cHJlY2F0ZWQmLCBjb25zdCBDcnlwdG9LZXkmLCBjb25zdCBDcnlwdG9PcGVyYXRpb25EYXRhJiwg
VmVjdG9yQ2FsbGJhY2smJiwgVm9pZENhbGxiYWNrJiYgZmFpbHVyZUNhbGxiYWNrLCBFeGNlcHRp
b25Db2RlJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCB2ZXJpZnkoY29uc3QgQ3J5cHRvQWxnb3JpdGht
UGFyYW1ldGVyc0RlcHJlY2F0ZWQmLCBjb25zdCBDcnlwdG9LZXkmLCBjb25zdCBDcnlwdG9PcGVy
YXRpb25EYXRhJiBzaWduYXR1cmUsIGNvbnN0IENyeXB0b09wZXJhdGlvbkRhdGEmLCBCb29sQ2Fs
bGJhY2smJiwgVm9pZENhbGxiYWNrJiYgZmFpbHVyZUNhbGxiYWNrLCBFeGNlcHRpb25Db2RlJikg
b3ZlcnJpZGU7CisgICAgdm9pZCBzaWduKGNvbnN0IENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnNE
ZXByZWNhdGVkJiwgY29uc3QgQ3J5cHRvS2V5JiwgY29uc3QgQnVmZmVyU291cmNlJiwgVmVjdG9y
Q2FsbGJhY2smJiwgVm9pZENhbGxiYWNrJiYgZmFpbHVyZUNhbGxiYWNrLCBFeGNlcHRpb25Db2Rl
Jikgb3ZlcnJpZGU7CisgICAgdm9pZCB2ZXJpZnkoY29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFyYW1l
dGVyc0RlcHJlY2F0ZWQmLCBjb25zdCBDcnlwdG9LZXkmLCBjb25zdCBCdWZmZXJTb3VyY2UmIHNp
Z25hdHVyZSwgY29uc3QgQnVmZmVyU291cmNlJiwgQm9vbENhbGxiYWNrJiYsIFZvaWRDYWxsYmFj
ayYmIGZhaWx1cmVDYWxsYmFjaywgRXhjZXB0aW9uQ29kZSYpIG92ZXJyaWRlOwogICAgIHZvaWQg
Z2VuZXJhdGVLZXkoY29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVyc0RlcHJlY2F0ZWQmLCBi
b29sIGV4dHJhY3RhYmxlLCBDcnlwdG9LZXlVc2FnZSwgS2V5T3JLZXlQYWlyQ2FsbGJhY2smJiwg
Vm9pZENhbGxiYWNrJiYgZmFpbHVyZUNhbGxiYWNrLCBFeGNlcHRpb25Db2RlJikgb3ZlcnJpZGU7
CiAgICAgdm9pZCBpbXBvcnRLZXkoY29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVyc0RlcHJl
Y2F0ZWQmLCBjb25zdCBDcnlwdG9LZXlEYXRhJiwgYm9vbCBleHRyYWN0YWJsZSwgQ3J5cHRvS2V5
VXNhZ2UsIEtleUNhbGxiYWNrJiYsIFZvaWRDYWxsYmFjayYmIGZhaWx1cmVDYWxsYmFjaywgRXhj
ZXB0aW9uQ29kZSYpIG92ZXJyaWRlOwogCkBAIC01NCw4ICs1NCw4IEBAIHByaXZhdGU6CiAgICAg
dmlydHVhbCB+Q3J5cHRvQWxnb3JpdGhtSE1BQygpOwogCiAgICAgYm9vbCBrZXlBbGdvcml0aG1N
YXRjaGVzKGNvbnN0IENyeXB0b0FsZ29yaXRobUhtYWNQYXJhbXNEZXByZWNhdGVkJiBhbGdvcml0
aG1QYXJhbWV0ZXJzLCBjb25zdCBDcnlwdG9LZXkmKSBjb25zdDsKLSAgICB2b2lkIHBsYXRmb3Jt
U2lnbihjb25zdCBDcnlwdG9BbGdvcml0aG1IbWFjUGFyYW1zRGVwcmVjYXRlZCYsIGNvbnN0IENy
eXB0b0tleUhNQUMmLCBjb25zdCBDcnlwdG9PcGVyYXRpb25EYXRhJiwgVmVjdG9yQ2FsbGJhY2sm
JiwgVm9pZENhbGxiYWNrJiYgZmFpbHVyZUNhbGxiYWNrLCBFeGNlcHRpb25Db2RlJik7Ci0gICAg
dm9pZCBwbGF0Zm9ybVZlcmlmeShjb25zdCBDcnlwdG9BbGdvcml0aG1IbWFjUGFyYW1zRGVwcmVj
YXRlZCYsIGNvbnN0IENyeXB0b0tleUhNQUMmLCBjb25zdCBDcnlwdG9PcGVyYXRpb25EYXRhJiBz
aWduYXR1cmUsIGNvbnN0IENyeXB0b09wZXJhdGlvbkRhdGEmLCBCb29sQ2FsbGJhY2smJiwgVm9p
ZENhbGxiYWNrJiYgZmFpbHVyZUNhbGxiYWNrLCBFeGNlcHRpb25Db2RlJik7CisgICAgdm9pZCBw
bGF0Zm9ybVNpZ24oY29uc3QgQ3J5cHRvQWxnb3JpdGhtSG1hY1BhcmFtc0RlcHJlY2F0ZWQmLCBj
b25zdCBDcnlwdG9LZXlITUFDJiwgY29uc3QgQnVmZmVyU291cmNlJiwgVmVjdG9yQ2FsbGJhY2sm
JiwgVm9pZENhbGxiYWNrJiYgZmFpbHVyZUNhbGxiYWNrLCBFeGNlcHRpb25Db2RlJik7CisgICAg
dm9pZCBwbGF0Zm9ybVZlcmlmeShjb25zdCBDcnlwdG9BbGdvcml0aG1IbWFjUGFyYW1zRGVwcmVj
YXRlZCYsIGNvbnN0IENyeXB0b0tleUhNQUMmLCBjb25zdCBCdWZmZXJTb3VyY2UmIHNpZ25hdHVy
ZSwgY29uc3QgQnVmZmVyU291cmNlJiwgQm9vbENhbGxiYWNrJiYsIFZvaWRDYWxsYmFjayYmIGZh
aWx1cmVDYWxsYmFjaywgRXhjZXB0aW9uQ29kZSYpOwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtUlNBRVNfUEtDUzFf
djFfNS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0
aG1SU0FFU19QS0NTMV92MV81LmNwcAppbmRleCBkYjViZTQ2ZThlYzYxNGUyZjYyMDc4ZWNlODY3
ZjYxYmJhZWMyOWFlLi4yZTI0NzM1MzQ3YzY4MDFmMjM3MTM5OGU2MmM4M2M0MjE4ZWNkMjdiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0
aG1SU0FFU19QS0NTMV92MV81LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3Jp
dGhtcy9DcnlwdG9BbGdvcml0aG1SU0FFU19QS0NTMV92MV81LmNwcApAQCAtNjUsNyArNjUsNyBA
QCBib29sIENyeXB0b0FsZ29yaXRobVJTQUVTX1BLQ1MxX3YxXzU6OmtleUFsZ29yaXRobU1hdGNo
ZXMoY29uc3QgQ3J5cHRvS2V5JiBrZXkpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXZvaWQgQ3J5
cHRvQWxnb3JpdGhtUlNBRVNfUEtDUzFfdjFfNTo6ZW5jcnlwdChjb25zdCBDcnlwdG9BbGdvcml0
aG1QYXJhbWV0ZXJzRGVwcmVjYXRlZCYsIGNvbnN0IENyeXB0b0tleSYga2V5LCBjb25zdCBDcnlw
dG9PcGVyYXRpb25EYXRhJiBkYXRhLCBWZWN0b3JDYWxsYmFjayYmIGNhbGxiYWNrLCBWb2lkQ2Fs
bGJhY2smJiBmYWlsdXJlQ2FsbGJhY2ssIEV4Y2VwdGlvbkNvZGUmIGVjKQordm9pZCBDcnlwdG9B
bGdvcml0aG1SU0FFU19QS0NTMV92MV81OjplbmNyeXB0KGNvbnN0IENyeXB0b0FsZ29yaXRobVBh
cmFtZXRlcnNEZXByZWNhdGVkJiwgY29uc3QgQ3J5cHRvS2V5JiBrZXksIGNvbnN0IEJ1ZmZlclNv
dXJjZSYgZGF0YSwgVmVjdG9yQ2FsbGJhY2smJiBjYWxsYmFjaywgVm9pZENhbGxiYWNrJiYgZmFp
bHVyZUNhbGxiYWNrLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBpZiAoIWtleUFsZ29yaXRo
bU1hdGNoZXMoa2V5KSkgewogICAgICAgICBlYyA9IE5PVF9TVVBQT1JURURfRVJSOwpAQCAtNzUs
NyArNzUsNyBAQCB2b2lkIENyeXB0b0FsZ29yaXRobVJTQUVTX1BLQ1MxX3YxXzU6OmVuY3J5cHQo
Y29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVyc0RlcAogICAgIHBsYXRmb3JtRW5jcnlwdChk
b3duY2FzdDxDcnlwdG9LZXlSU0E+KGtleSksIGRhdGEsIFdURk1vdmUoY2FsbGJhY2spLCBXVEZN
b3ZlKGZhaWx1cmVDYWxsYmFjayksIGVjKTsKIH0KIAotdm9pZCBDcnlwdG9BbGdvcml0aG1SU0FF
U19QS0NTMV92MV81OjpkZWNyeXB0KGNvbnN0IENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnNEZXBy
ZWNhdGVkJiwgY29uc3QgQ3J5cHRvS2V5JiBrZXksIGNvbnN0IENyeXB0b09wZXJhdGlvbkRhdGEm
IGRhdGEsIFZlY3RvckNhbGxiYWNrJiYgY2FsbGJhY2ssIFZvaWRDYWxsYmFjayYmIGZhaWx1cmVD
YWxsYmFjaywgRXhjZXB0aW9uQ29kZSYgZWMpCit2b2lkIENyeXB0b0FsZ29yaXRobVJTQUVTX1BL
Q1MxX3YxXzU6OmRlY3J5cHQoY29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVyc0RlcHJlY2F0
ZWQmLCBjb25zdCBDcnlwdG9LZXkmIGtleSwgY29uc3QgQnVmZmVyU291cmNlJiBkYXRhLCBWZWN0
b3JDYWxsYmFjayYmIGNhbGxiYWNrLCBWb2lkQ2FsbGJhY2smJiBmYWlsdXJlQ2FsbGJhY2ssIEV4
Y2VwdGlvbkNvZGUmIGVjKQogewogICAgIGlmICgha2V5QWxnb3JpdGhtTWF0Y2hlcyhrZXkpKSB7
CiAgICAgICAgIGVjID0gTk9UX1NVUFBPUlRFRF9FUlI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1SU0FFU19QS0NTMV92MV81Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1SU0FFU19Q
S0NTMV92MV81LmgKaW5kZXggOGVhM2I3MzFjZTliMWIyYTVjZWEyZGQ2NzVlMjcxZWRlMTNiZmVm
Ni4uZDgzZTFhYTU3MjM0YWEwYWQ0OWM0YmFjODRmNzYzNzNhMjZjYWQzZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtUlNBRVNfUEtD
UzFfdjFfNS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0Fs
Z29yaXRobVJTQUVTX1BLQ1MxX3YxXzUuaApAQCAtNDQsOCArNDQsOCBAQCBwdWJsaWM6CiAKICAg
ICBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyIGlkZW50aWZpZXIoKSBjb25zdCBvdmVycmlkZTsK
IAotICAgIHZvaWQgZW5jcnlwdChjb25zdCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzRGVwcmVj
YXRlZCYsIGNvbnN0IENyeXB0b0tleSYsIGNvbnN0IENyeXB0b09wZXJhdGlvbkRhdGEmLCBWZWN0
b3JDYWxsYmFjayYmLCBWb2lkQ2FsbGJhY2smJiBmYWlsdXJlQ2FsbGJhY2ssIEV4Y2VwdGlvbkNv
ZGUmKSBvdmVycmlkZTsKLSAgICB2b2lkIGRlY3J5cHQoY29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFy
YW1ldGVyc0RlcHJlY2F0ZWQmLCBjb25zdCBDcnlwdG9LZXkmLCBjb25zdCBDcnlwdG9PcGVyYXRp
b25EYXRhJiwgVmVjdG9yQ2FsbGJhY2smJiwgVm9pZENhbGxiYWNrJiYgZmFpbHVyZUNhbGxiYWNr
LCBFeGNlcHRpb25Db2RlJikgb3ZlcnJpZGU7CisgICAgdm9pZCBlbmNyeXB0KGNvbnN0IENyeXB0
b0FsZ29yaXRobVBhcmFtZXRlcnNEZXByZWNhdGVkJiwgY29uc3QgQ3J5cHRvS2V5JiwgY29uc3Qg
QnVmZmVyU291cmNlJiwgVmVjdG9yQ2FsbGJhY2smJiwgVm9pZENhbGxiYWNrJiYgZmFpbHVyZUNh
bGxiYWNrLCBFeGNlcHRpb25Db2RlJikgb3ZlcnJpZGU7CisgICAgdm9pZCBkZWNyeXB0KGNvbnN0
IENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnNEZXByZWNhdGVkJiwgY29uc3QgQ3J5cHRvS2V5Jiwg
Y29uc3QgQnVmZmVyU291cmNlJiwgVmVjdG9yQ2FsbGJhY2smJiwgVm9pZENhbGxiYWNrJiYgZmFp
bHVyZUNhbGxiYWNrLCBFeGNlcHRpb25Db2RlJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBnZW5lcmF0
ZUtleShjb25zdCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzRGVwcmVjYXRlZCYsIGJvb2wgZXh0
cmFjdGFibGUsIENyeXB0b0tleVVzYWdlLCBLZXlPcktleVBhaXJDYWxsYmFjayYmLCBWb2lkQ2Fs
bGJhY2smJiBmYWlsdXJlQ2FsbGJhY2ssIEV4Y2VwdGlvbkNvZGUmKSBvdmVycmlkZTsKICAgICB2
b2lkIGltcG9ydEtleShjb25zdCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzRGVwcmVjYXRlZCYs
IGNvbnN0IENyeXB0b0tleURhdGEmLCBib29sIGV4dHJhY3RhYmxlLCBDcnlwdG9LZXlVc2FnZSwg
S2V5Q2FsbGJhY2smJiwgVm9pZENhbGxiYWNrJiYgZmFpbHVyZUNhbGxiYWNrLCBFeGNlcHRpb25D
b2RlJikgb3ZlcnJpZGU7CiAKQEAgLTU0LDggKzU0LDggQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFs
IH5DcnlwdG9BbGdvcml0aG1SU0FFU19QS0NTMV92MV81KCk7CiAKICAgICBib29sIGtleUFsZ29y
aXRobU1hdGNoZXMoY29uc3QgQ3J5cHRvS2V5JikgY29uc3Q7Ci0gICAgdm9pZCBwbGF0Zm9ybUVu
Y3J5cHQoY29uc3QgQ3J5cHRvS2V5UlNBJiwgY29uc3QgQ3J5cHRvT3BlcmF0aW9uRGF0YSYsIFZl
Y3RvckNhbGxiYWNrJiYsIFZvaWRDYWxsYmFjayYmIGZhaWx1cmVDYWxsYmFjaywgRXhjZXB0aW9u
Q29kZSYpOwotICAgIHZvaWQgcGxhdGZvcm1EZWNyeXB0KGNvbnN0IENyeXB0b0tleVJTQSYsIGNv
bnN0IENyeXB0b09wZXJhdGlvbkRhdGEmLCBWZWN0b3JDYWxsYmFjayYmLCBWb2lkQ2FsbGJhY2sm
JiBmYWlsdXJlQ2FsbGJhY2ssIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICB2b2lkIHBsYXRmb3JtRW5j
cnlwdChjb25zdCBDcnlwdG9LZXlSU0EmLCBjb25zdCBCdWZmZXJTb3VyY2UmLCBWZWN0b3JDYWxs
YmFjayYmLCBWb2lkQ2FsbGJhY2smJiBmYWlsdXJlQ2FsbGJhY2ssIEV4Y2VwdGlvbkNvZGUmKTsK
KyAgICB2b2lkIHBsYXRmb3JtRGVjcnlwdChjb25zdCBDcnlwdG9LZXlSU0EmLCBjb25zdCBCdWZm
ZXJTb3VyY2UmLCBWZWN0b3JDYWxsYmFjayYmLCBWb2lkQ2FsbGJhY2smJiBmYWlsdXJlQ2FsbGJh
Y2ssIEV4Y2VwdGlvbkNvZGUmKTsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVJTQVNTQV9QS0NTMV92MV81LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVJTQVNTQV9Q
S0NTMV92MV81LmNwcAppbmRleCBiM2Y4NjJlYjc2ZWE0NDEwNTJhYzM0ODM2NWFlY2Q0ZmNkYjFh
ZDdmLi40MWY2YzAyZjQ1OWExNjJjNzQ2MGM4YzBiMDBjYjgyOGQ0OGFhMDFiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1SU0FTU0Ff
UEtDUzFfdjFfNS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5
cHRvQWxnb3JpdGhtUlNBU1NBX1BLQ1MxX3YxXzUuY3BwCkBAIC02OSw3ICs2OSw3IEBAIGJvb2wg
Q3J5cHRvQWxnb3JpdGhtUlNBU1NBX1BLQ1MxX3YxXzU6OmtleUFsZ29yaXRobU1hdGNoZXMoY29u
c3QgQ3J5cHRvQWxnb3JpdGhtCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXZvaWQgQ3J5cHRvQWxn
b3JpdGhtUlNBU1NBX1BLQ1MxX3YxXzU6OnNpZ24oY29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFyYW1l
dGVyc0RlcHJlY2F0ZWQmIHBhcmFtZXRlcnMsIGNvbnN0IENyeXB0b0tleSYga2V5LCBjb25zdCBD
cnlwdG9PcGVyYXRpb25EYXRhJiBkYXRhLCBWZWN0b3JDYWxsYmFjayYmIGNhbGxiYWNrLCBWb2lk
Q2FsbGJhY2smJiBmYWlsdXJlQ2FsbGJhY2ssIEV4Y2VwdGlvbkNvZGUmIGVjKQordm9pZCBDcnlw
dG9BbGdvcml0aG1SU0FTU0FfUEtDUzFfdjFfNTo6c2lnbihjb25zdCBDcnlwdG9BbGdvcml0aG1Q
YXJhbWV0ZXJzRGVwcmVjYXRlZCYgcGFyYW1ldGVycywgY29uc3QgQ3J5cHRvS2V5JiBrZXksIGNv
bnN0IEJ1ZmZlclNvdXJjZSYgZGF0YSwgVmVjdG9yQ2FsbGJhY2smJiBjYWxsYmFjaywgVm9pZENh
bGxiYWNrJiYgZmFpbHVyZUNhbGxiYWNrLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBjb25z
dCBDcnlwdG9BbGdvcml0aG1Sc2FTc2FQYXJhbXNEZXByZWNhdGVkJiByc2FTU0FQYXJhbWV0ZXJz
ID0gZG93bmNhc3Q8Q3J5cHRvQWxnb3JpdGhtUnNhU3NhUGFyYW1zRGVwcmVjYXRlZD4ocGFyYW1l
dGVycyk7CiAKQEAgLTgxLDcgKzgxLDcgQEAgdm9pZCBDcnlwdG9BbGdvcml0aG1SU0FTU0FfUEtD
UzFfdjFfNTo6c2lnbihjb25zdCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzRGVwcmUKICAgICBw
bGF0Zm9ybVNpZ24ocnNhU1NBUGFyYW1ldGVycywgZG93bmNhc3Q8Q3J5cHRvS2V5UlNBPihrZXkp
LCBkYXRhLCBXVEZNb3ZlKGNhbGxiYWNrKSwgV1RGTW92ZShmYWlsdXJlQ2FsbGJhY2spLCBlYyk7
CiB9CiAKLXZvaWQgQ3J5cHRvQWxnb3JpdGhtUlNBU1NBX1BLQ1MxX3YxXzU6OnZlcmlmeShjb25z
dCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzRGVwcmVjYXRlZCYgcGFyYW1ldGVycywgY29uc3Qg
Q3J5cHRvS2V5JiBrZXksIGNvbnN0IENyeXB0b09wZXJhdGlvbkRhdGEmIHNpZ25hdHVyZSwgY29u
c3QgQ3J5cHRvT3BlcmF0aW9uRGF0YSYgZGF0YSwgQm9vbENhbGxiYWNrJiYgY2FsbGJhY2ssIFZv
aWRDYWxsYmFjayYmIGZhaWx1cmVDYWxsYmFjaywgRXhjZXB0aW9uQ29kZSYgZWMpCit2b2lkIENy
eXB0b0FsZ29yaXRobVJTQVNTQV9QS0NTMV92MV81Ojp2ZXJpZnkoY29uc3QgQ3J5cHRvQWxnb3Jp
dGhtUGFyYW1ldGVyc0RlcHJlY2F0ZWQmIHBhcmFtZXRlcnMsIGNvbnN0IENyeXB0b0tleSYga2V5
LCBjb25zdCBCdWZmZXJTb3VyY2UmIHNpZ25hdHVyZSwgY29uc3QgQnVmZmVyU291cmNlJiBkYXRh
LCBCb29sQ2FsbGJhY2smJiBjYWxsYmFjaywgVm9pZENhbGxiYWNrJiYgZmFpbHVyZUNhbGxiYWNr
LCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBjb25zdCBDcnlwdG9BbGdvcml0aG1Sc2FTc2FQ
YXJhbXNEZXByZWNhdGVkJiByc2FTU0FQYXJhbWV0ZXJzID0gZG93bmNhc3Q8Q3J5cHRvQWxnb3Jp
dGhtUnNhU3NhUGFyYW1zRGVwcmVjYXRlZD4ocGFyYW1ldGVycyk7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVJTQVNTQV9QS0NT
MV92MV81LmggYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0
aG1SU0FTU0FfUEtDUzFfdjFfNS5oCmluZGV4IGQwNmY3NmJkYmNlNGMxNzhkZWM3MjAzODNkMDcy
MWY1ZTNhNGE4MDAuLjRkODA2NGVkYzc1MDMyZmY2Zjc0NTIyZWEwZWYxMjRjODIzMmMzY2YgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRo
bVJTQVNTQV9QS0NTMV92MV81LmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRo
bXMvQ3J5cHRvQWxnb3JpdGhtUlNBU1NBX1BLQ1MxX3YxXzUuaApAQCAtNDQsOCArNDQsOCBAQCBw
dWJsaWM6CiAKICAgICBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyIGlkZW50aWZpZXIoKSBjb25z
dCBvdmVycmlkZTsKIAotICAgIHZvaWQgc2lnbihjb25zdCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0
ZXJzRGVwcmVjYXRlZCYsIGNvbnN0IENyeXB0b0tleSYsIGNvbnN0IENyeXB0b09wZXJhdGlvbkRh
dGEmLCBWZWN0b3JDYWxsYmFjayYmLCBWb2lkQ2FsbGJhY2smJiBmYWlsdXJlQ2FsbGJhY2ssIEV4
Y2VwdGlvbkNvZGUmKSBvdmVycmlkZTsKLSAgICB2b2lkIHZlcmlmeShjb25zdCBDcnlwdG9BbGdv
cml0aG1QYXJhbWV0ZXJzRGVwcmVjYXRlZCYsIGNvbnN0IENyeXB0b0tleSYsIGNvbnN0IENyeXB0
b09wZXJhdGlvbkRhdGEmIHNpZ25hdHVyZSwgY29uc3QgQ3J5cHRvT3BlcmF0aW9uRGF0YSYsIEJv
b2xDYWxsYmFjayYmLCBWb2lkQ2FsbGJhY2smJiBmYWlsdXJlQ2FsbGJhY2ssIEV4Y2VwdGlvbkNv
ZGUmKSBvdmVycmlkZTsKKyAgICB2b2lkIHNpZ24oY29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFyYW1l
dGVyc0RlcHJlY2F0ZWQmLCBjb25zdCBDcnlwdG9LZXkmLCBjb25zdCBCdWZmZXJTb3VyY2UmLCBW
ZWN0b3JDYWxsYmFjayYmLCBWb2lkQ2FsbGJhY2smJiBmYWlsdXJlQ2FsbGJhY2ssIEV4Y2VwdGlv
bkNvZGUmKSBvdmVycmlkZTsKKyAgICB2b2lkIHZlcmlmeShjb25zdCBDcnlwdG9BbGdvcml0aG1Q
YXJhbWV0ZXJzRGVwcmVjYXRlZCYsIGNvbnN0IENyeXB0b0tleSYsIGNvbnN0IEJ1ZmZlclNvdXJj
ZSYgc2lnbmF0dXJlLCBjb25zdCBCdWZmZXJTb3VyY2UmLCBCb29sQ2FsbGJhY2smJiwgVm9pZENh
bGxiYWNrJiYgZmFpbHVyZUNhbGxiYWNrLCBFeGNlcHRpb25Db2RlJikgb3ZlcnJpZGU7CiAgICAg
dm9pZCBnZW5lcmF0ZUtleShjb25zdCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzRGVwcmVjYXRl
ZCYsIGJvb2wgZXh0cmFjdGFibGUsIENyeXB0b0tleVVzYWdlLCBLZXlPcktleVBhaXJDYWxsYmFj
ayYmLCBWb2lkQ2FsbGJhY2smJiBmYWlsdXJlQ2FsbGJhY2ssIEV4Y2VwdGlvbkNvZGUmKSBvdmVy
cmlkZTsKICAgICB2b2lkIGltcG9ydEtleShjb25zdCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJz
RGVwcmVjYXRlZCYsIGNvbnN0IENyeXB0b0tleURhdGEmLCBib29sIGV4dHJhY3RhYmxlLCBDcnlw
dG9LZXlVc2FnZSwgS2V5Q2FsbGJhY2smJiwgVm9pZENhbGxiYWNrJiYgZmFpbHVyZUNhbGxiYWNr
LCBFeGNlcHRpb25Db2RlJikgb3ZlcnJpZGU7CiAKQEAgLTU0LDggKzU0LDggQEAgcHJpdmF0ZToK
ICAgICB2aXJ0dWFsIH5DcnlwdG9BbGdvcml0aG1SU0FTU0FfUEtDUzFfdjFfNSgpOwogCiAgICAg
Ym9vbCBrZXlBbGdvcml0aG1NYXRjaGVzKGNvbnN0IENyeXB0b0FsZ29yaXRobVJzYVNzYVBhcmFt
c0RlcHJlY2F0ZWQmIGFsZ29yaXRobVBhcmFtZXRlcnMsIGNvbnN0IENyeXB0b0tleSYpIGNvbnN0
OwotICAgIHZvaWQgcGxhdGZvcm1TaWduKGNvbnN0IENyeXB0b0FsZ29yaXRobVJzYVNzYVBhcmFt
c0RlcHJlY2F0ZWQmLCBjb25zdCBDcnlwdG9LZXlSU0EmLCBjb25zdCBDcnlwdG9PcGVyYXRpb25E
YXRhJiwgVmVjdG9yQ2FsbGJhY2smJiwgVm9pZENhbGxiYWNrJiYgZmFpbHVyZUNhbGxiYWNrLCBF
eGNlcHRpb25Db2RlJik7Ci0gICAgdm9pZCBwbGF0Zm9ybVZlcmlmeShjb25zdCBDcnlwdG9BbGdv
cml0aG1Sc2FTc2FQYXJhbXNEZXByZWNhdGVkJiwgY29uc3QgQ3J5cHRvS2V5UlNBJiwgY29uc3Qg
Q3J5cHRvT3BlcmF0aW9uRGF0YSYgc2lnbmF0dXJlLCBjb25zdCBDcnlwdG9PcGVyYXRpb25EYXRh
JiwgQm9vbENhbGxiYWNrJiYsIFZvaWRDYWxsYmFjayYmIGZhaWx1cmVDYWxsYmFjaywgRXhjZXB0
aW9uQ29kZSYpOworICAgIHZvaWQgcGxhdGZvcm1TaWduKGNvbnN0IENyeXB0b0FsZ29yaXRobVJz
YVNzYVBhcmFtc0RlcHJlY2F0ZWQmLCBjb25zdCBDcnlwdG9LZXlSU0EmLCBjb25zdCBCdWZmZXJT
b3VyY2UmLCBWZWN0b3JDYWxsYmFjayYmLCBWb2lkQ2FsbGJhY2smJiBmYWlsdXJlQ2FsbGJhY2ss
IEV4Y2VwdGlvbkNvZGUmKTsKKyAgICB2b2lkIHBsYXRmb3JtVmVyaWZ5KGNvbnN0IENyeXB0b0Fs
Z29yaXRobVJzYVNzYVBhcmFtc0RlcHJlY2F0ZWQmLCBjb25zdCBDcnlwdG9LZXlSU0EmLCBjb25z
dCBCdWZmZXJTb3VyY2UmIHNpZ25hdHVyZSwgY29uc3QgQnVmZmVyU291cmNlJiwgQm9vbENhbGxi
YWNrJiYsIFZvaWRDYWxsYmFjayYmIGZhaWx1cmVDYWxsYmFjaywgRXhjZXB0aW9uQ29kZSYpOwog
fTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5
cHRvQWxnb3JpdGhtUlNBX09BRVAuY3BwIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRo
bXMvQ3J5cHRvQWxnb3JpdGhtUlNBX09BRVAuY3BwCmluZGV4IDIyNTU5MWM4ODQ3NDU2MmZhYjk3
M2YxMDcyZjZmY2FjYjJmMjU3MGYuLjBlNTQ2OGM1MzY3ZTY3MTk5MGJiZjY4MzM4OGU1NDliNmFm
Yjc4NzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0
b0FsZ29yaXRobVJTQV9PQUVQLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3Jp
dGhtcy9DcnlwdG9BbGdvcml0aG1SU0FfT0FFUC5jcHAKQEAgLTY5LDcgKzY5LDcgQEAgYm9vbCBD
cnlwdG9BbGdvcml0aG1SU0FfT0FFUDo6a2V5QWxnb3JpdGhtTWF0Y2hlcyhjb25zdCBDcnlwdG9B
bGdvcml0aG1Sc2FPYWVwUGEKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdm9pZCBDcnlwdG9BbGdv
cml0aG1SU0FfT0FFUDo6ZW5jcnlwdChjb25zdCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzRGVw
cmVjYXRlZCYgcGFyYW1ldGVycywgY29uc3QgQ3J5cHRvS2V5JiBrZXksIGNvbnN0IENyeXB0b09w
ZXJhdGlvbkRhdGEmIGRhdGEsIFZlY3RvckNhbGxiYWNrJiYgY2FsbGJhY2ssIFZvaWRDYWxsYmFj
ayYmIGZhaWx1cmVDYWxsYmFjaywgRXhjZXB0aW9uQ29kZSYgZWMpCit2b2lkIENyeXB0b0FsZ29y
aXRobVJTQV9PQUVQOjplbmNyeXB0KGNvbnN0IENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnNEZXBy
ZWNhdGVkJiBwYXJhbWV0ZXJzLCBjb25zdCBDcnlwdG9LZXkmIGtleSwgY29uc3QgQnVmZmVyU291
cmNlJiBkYXRhLCBWZWN0b3JDYWxsYmFjayYmIGNhbGxiYWNrLCBWb2lkQ2FsbGJhY2smJiBmYWls
dXJlQ2FsbGJhY2ssIEV4Y2VwdGlvbkNvZGUmIGVjKQogewogICAgIGNvbnN0IENyeXB0b0FsZ29y
aXRobVJzYU9hZXBQYXJhbXNEZXByZWNhdGVkJiByc2FPQUVQUGFyYW1ldGVycyA9IGRvd25jYXN0
PENyeXB0b0FsZ29yaXRobVJzYU9hZXBQYXJhbXNEZXByZWNhdGVkPihwYXJhbWV0ZXJzKTsKIApA
QCAtODEsNyArODEsNyBAQCB2b2lkIENyeXB0b0FsZ29yaXRobVJTQV9PQUVQOjplbmNyeXB0KGNv
bnN0IENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnNEZXByZWNhdGVkJgogICAgIHBsYXRmb3JtRW5j
cnlwdChyc2FPQUVQUGFyYW1ldGVycywgZG93bmNhc3Q8Q3J5cHRvS2V5UlNBPihrZXkpLCBkYXRh
LCBXVEZNb3ZlKGNhbGxiYWNrKSwgV1RGTW92ZShmYWlsdXJlQ2FsbGJhY2spLCBlYyk7CiB9CiAK
LXZvaWQgQ3J5cHRvQWxnb3JpdGhtUlNBX09BRVA6OmRlY3J5cHQoY29uc3QgQ3J5cHRvQWxnb3Jp
dGhtUGFyYW1ldGVyc0RlcHJlY2F0ZWQmIHBhcmFtZXRlcnMsIGNvbnN0IENyeXB0b0tleSYga2V5
LCBjb25zdCBDcnlwdG9PcGVyYXRpb25EYXRhJiBkYXRhLCBWZWN0b3JDYWxsYmFjayYmIGNhbGxi
YWNrLCBWb2lkQ2FsbGJhY2smJiBmYWlsdXJlQ2FsbGJhY2ssIEV4Y2VwdGlvbkNvZGUmIGVjKQor
dm9pZCBDcnlwdG9BbGdvcml0aG1SU0FfT0FFUDo6ZGVjcnlwdChjb25zdCBDcnlwdG9BbGdvcml0
aG1QYXJhbWV0ZXJzRGVwcmVjYXRlZCYgcGFyYW1ldGVycywgY29uc3QgQ3J5cHRvS2V5JiBrZXks
IGNvbnN0IEJ1ZmZlclNvdXJjZSYgZGF0YSwgVmVjdG9yQ2FsbGJhY2smJiBjYWxsYmFjaywgVm9p
ZENhbGxiYWNrJiYgZmFpbHVyZUNhbGxiYWNrLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBj
b25zdCBDcnlwdG9BbGdvcml0aG1Sc2FPYWVwUGFyYW1zRGVwcmVjYXRlZCYgcnNhT0FFUFBhcmFt
ZXRlcnMgPSBkb3duY2FzdDxDcnlwdG9BbGdvcml0aG1Sc2FPYWVwUGFyYW1zRGVwcmVjYXRlZD4o
cGFyYW1ldGVycyk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0
aG1zL0NyeXB0b0FsZ29yaXRobVJTQV9PQUVQLmggYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxn
b3JpdGhtcy9DcnlwdG9BbGdvcml0aG1SU0FfT0FFUC5oCmluZGV4IDBlYjY5OTY2YTk5YzNkYTlj
ZDcxMWQ3ODE4ZmQ4NzZhOGEyYzM1NjkuLjg4YWRlNGI0NGZiZmJhMTNiY2U1YTFmZDVkY2JhZjlj
MWNkMzZmZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0Ny
eXB0b0FsZ29yaXRobVJTQV9PQUVQLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29y
aXRobXMvQ3J5cHRvQWxnb3JpdGhtUlNBX09BRVAuaApAQCAtNDQsOCArNDQsOCBAQCBwdWJsaWM6
CiAKICAgICBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyIGlkZW50aWZpZXIoKSBjb25zdCBvdmVy
cmlkZTsKIAotICAgIHZvaWQgZW5jcnlwdChjb25zdCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJz
RGVwcmVjYXRlZCYsIGNvbnN0IENyeXB0b0tleSYsIGNvbnN0IENyeXB0b09wZXJhdGlvbkRhdGEm
LCBWZWN0b3JDYWxsYmFjayYmLCBWb2lkQ2FsbGJhY2smJiBmYWlsdXJlQ2FsbGJhY2ssIEV4Y2Vw
dGlvbkNvZGUmKSBvdmVycmlkZTsKLSAgICB2b2lkIGRlY3J5cHQoY29uc3QgQ3J5cHRvQWxnb3Jp
dGhtUGFyYW1ldGVyc0RlcHJlY2F0ZWQmLCBjb25zdCBDcnlwdG9LZXkmLCBjb25zdCBDcnlwdG9P
cGVyYXRpb25EYXRhJiwgVmVjdG9yQ2FsbGJhY2smJiwgVm9pZENhbGxiYWNrJiYgZmFpbHVyZUNh
bGxiYWNrLCBFeGNlcHRpb25Db2RlJikgb3ZlcnJpZGU7CisgICAgdm9pZCBlbmNyeXB0KGNvbnN0
IENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnNEZXByZWNhdGVkJiwgY29uc3QgQ3J5cHRvS2V5Jiwg
Y29uc3QgQnVmZmVyU291cmNlJiwgVmVjdG9yQ2FsbGJhY2smJiwgVm9pZENhbGxiYWNrJiYgZmFp
bHVyZUNhbGxiYWNrLCBFeGNlcHRpb25Db2RlJikgb3ZlcnJpZGU7CisgICAgdm9pZCBkZWNyeXB0
KGNvbnN0IENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnNEZXByZWNhdGVkJiwgY29uc3QgQ3J5cHRv
S2V5JiwgY29uc3QgQnVmZmVyU291cmNlJiwgVmVjdG9yQ2FsbGJhY2smJiwgVm9pZENhbGxiYWNr
JiYgZmFpbHVyZUNhbGxiYWNrLCBFeGNlcHRpb25Db2RlJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBn
ZW5lcmF0ZUtleShjb25zdCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzRGVwcmVjYXRlZCYsIGJv
b2wgZXh0cmFjdGFibGUsIENyeXB0b0tleVVzYWdlLCBLZXlPcktleVBhaXJDYWxsYmFjayYmLCBW
b2lkQ2FsbGJhY2smJiBmYWlsdXJlQ2FsbGJhY2ssIEV4Y2VwdGlvbkNvZGUmKSBvdmVycmlkZTsK
ICAgICB2b2lkIGltcG9ydEtleShjb25zdCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzRGVwcmVj
YXRlZCYsIGNvbnN0IENyeXB0b0tleURhdGEmLCBib29sIGV4dHJhY3RhYmxlLCBDcnlwdG9LZXlV
c2FnZSwgS2V5Q2FsbGJhY2smJiwgVm9pZENhbGxiYWNrJiYgZmFpbHVyZUNhbGxiYWNrLCBFeGNl
cHRpb25Db2RlJikgb3ZlcnJpZGU7CiAKQEAgLTU0LDggKzU0LDggQEAgcHJpdmF0ZToKICAgICB2
aXJ0dWFsIH5DcnlwdG9BbGdvcml0aG1SU0FfT0FFUCgpOwogCiAgICAgYm9vbCBrZXlBbGdvcml0
aG1NYXRjaGVzKGNvbnN0IENyeXB0b0FsZ29yaXRobVJzYU9hZXBQYXJhbXNEZXByZWNhdGVkJiBh
bGdvcml0aG1QYXJhbWV0ZXJzLCBjb25zdCBDcnlwdG9LZXkmKSBjb25zdDsKLSAgICB2b2lkIHBs
YXRmb3JtRW5jcnlwdChjb25zdCBDcnlwdG9BbGdvcml0aG1Sc2FPYWVwUGFyYW1zRGVwcmVjYXRl
ZCYsIGNvbnN0IENyeXB0b0tleVJTQSYsIGNvbnN0IENyeXB0b09wZXJhdGlvbkRhdGEmLCBWZWN0
b3JDYWxsYmFjayYmLCBWb2lkQ2FsbGJhY2smJiBmYWlsdXJlQ2FsbGJhY2ssIEV4Y2VwdGlvbkNv
ZGUmKTsKLSAgICB2b2lkIHBsYXRmb3JtRGVjcnlwdChjb25zdCBDcnlwdG9BbGdvcml0aG1Sc2FP
YWVwUGFyYW1zRGVwcmVjYXRlZCYsIGNvbnN0IENyeXB0b0tleVJTQSYsIGNvbnN0IENyeXB0b09w
ZXJhdGlvbkRhdGEmLCBWZWN0b3JDYWxsYmFjayYmLCBWb2lkQ2FsbGJhY2smJiBmYWlsdXJlQ2Fs
bGJhY2ssIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICB2b2lkIHBsYXRmb3JtRW5jcnlwdChjb25zdCBD
cnlwdG9BbGdvcml0aG1Sc2FPYWVwUGFyYW1zRGVwcmVjYXRlZCYsIGNvbnN0IENyeXB0b0tleVJT
QSYsIGNvbnN0IEJ1ZmZlclNvdXJjZSYsIFZlY3RvckNhbGxiYWNrJiYsIFZvaWRDYWxsYmFjayYm
IGZhaWx1cmVDYWxsYmFjaywgRXhjZXB0aW9uQ29kZSYpOworICAgIHZvaWQgcGxhdGZvcm1EZWNy
eXB0KGNvbnN0IENyeXB0b0FsZ29yaXRobVJzYU9hZXBQYXJhbXNEZXByZWNhdGVkJiwgY29uc3Qg
Q3J5cHRvS2V5UlNBJiwgY29uc3QgQnVmZmVyU291cmNlJiwgVmVjdG9yQ2FsbGJhY2smJiwgVm9p
ZENhbGxiYWNrJiYgZmFpbHVyZUNhbGxiYWNrLCBFeGNlcHRpb25Db2RlJik7CiB9OwogCiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0
aG1TSEExLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29y
aXRobVNIQTEuY3BwCmluZGV4IDcyOTc5NmRlMzE0YWY1Nzg4ODQzOTdlODE1NmFkOTdjN2FjNDQw
NjMuLmZlODk0MzE0NzBmY2MzMDk5NTBlNmJjMGY3N2E5ZDJlMzIyY2MwNTggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVNIQTEuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVNI
QTEuY3BwCkBAIC01Miw3ICs1Miw3IEBAIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXIgQ3J5cHRv
QWxnb3JpdGhtU0hBMTo6aWRlbnRpZmllcigpIGNvbnN0CiAgICAgcmV0dXJuIHNfaWRlbnRpZmll
cjsKIH0KIAotdm9pZCBDcnlwdG9BbGdvcml0aG1TSEExOjpkaWdlc3QoY29uc3QgQ3J5cHRvQWxn
b3JpdGhtUGFyYW1ldGVyc0RlcHJlY2F0ZWQmLCBjb25zdCBDcnlwdG9PcGVyYXRpb25EYXRhJiBk
YXRhLCBWZWN0b3JDYWxsYmFjayYmIGNhbGxiYWNrLCBWb2lkQ2FsbGJhY2smJiBmYWlsdXJlQ2Fs
bGJhY2ssIEV4Y2VwdGlvbkNvZGUmKQordm9pZCBDcnlwdG9BbGdvcml0aG1TSEExOjpkaWdlc3Qo
Y29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVyc0RlcHJlY2F0ZWQmLCBjb25zdCBCdWZmZXJT
b3VyY2UmIGRhdGEsIFZlY3RvckNhbGxiYWNrJiYgY2FsbGJhY2ssIFZvaWRDYWxsYmFjayYmIGZh
aWx1cmVDYWxsYmFjaywgRXhjZXB0aW9uQ29kZSYpCiB7CiAgICAgc3RkOjp1bmlxdWVfcHRyPENy
eXB0b0RpZ2VzdD4gZGlnZXN0ID0gQ3J5cHRvRGlnZXN0OjpjcmVhdGUoQ3J5cHRvRGlnZXN0OjpB
bGdvcml0aG06OlNIQV8xKTsKICAgICBpZiAoIWRpZ2VzdCkgewpAQCAtNjAsNyArNjAsNyBAQCB2
b2lkIENyeXB0b0FsZ29yaXRobVNIQTE6OmRpZ2VzdChjb25zdCBDcnlwdG9BbGdvcml0aG1QYXJh
bWV0ZXJzRGVwcmVjYXRlZCYsIGNvbgogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgZGln
ZXN0LT5hZGRCeXRlcyhkYXRhLmZpcnN0LCBkYXRhLnNlY29uZCk7CisgICAgZGlnZXN0LT5hZGRC
eXRlcyhkYXRhLmRhdGEsIGRhdGEubGVuZ3RoKTsKIAogICAgIGNhbGxiYWNrKGRpZ2VzdC0+Y29t
cHV0ZUhhc2goKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3Jp
dGhtcy9DcnlwdG9BbGdvcml0aG1TSEExLmggYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3Jp
dGhtcy9DcnlwdG9BbGdvcml0aG1TSEExLmgKaW5kZXggZjUyNDBiMjNmN2E2YWUxNGZiNjZkYTM3
NTZkMDViMWIwYWYyZWE5MC4uZWM3ZGRjNGM1YWZmM2M1NDEyYTU4MDJjYTNkODgxYzI3ZmExZWZj
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxn
b3JpdGhtU0hBMS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0
b0FsZ29yaXRobVNIQTEuaApAQCAtNDEsNyArNDEsNyBAQCBwdWJsaWM6CiAKICAgICBDcnlwdG9B
bGdvcml0aG1JZGVudGlmaWVyIGlkZW50aWZpZXIoKSBjb25zdCBvdmVycmlkZTsKIAotICAgIHZv
aWQgZGlnZXN0KGNvbnN0IENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnNEZXByZWNhdGVkJiwgY29u
c3QgQ3J5cHRvT3BlcmF0aW9uRGF0YSYsIFZlY3RvckNhbGxiYWNrJiYsIFZvaWRDYWxsYmFjayYm
IGZhaWx1cmVDYWxsYmFjaywgRXhjZXB0aW9uQ29kZSYpIG92ZXJyaWRlOworICAgIHZvaWQgZGln
ZXN0KGNvbnN0IENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnNEZXByZWNhdGVkJiwgY29uc3QgQnVm
ZmVyU291cmNlJiwgVmVjdG9yQ2FsbGJhY2smJiwgVm9pZENhbGxiYWNrJiYgZmFpbHVyZUNhbGxi
YWNrLCBFeGNlcHRpb25Db2RlJikgb3ZlcnJpZGU7CiAKIHByaXZhdGU6CiAgICAgQ3J5cHRvQWxn
b3JpdGhtU0hBMSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRo
bXMvQ3J5cHRvQWxnb3JpdGhtU0hBMjI0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdv
cml0aG1zL0NyeXB0b0FsZ29yaXRobVNIQTIyNC5jcHAKaW5kZXggZmE4MGZjNmRjNDVkNjBkNDY3
OTgxMGRhYzhmODQ2ZGE0MDA1MmU5NS4uNzE1MjZmYzJkMGYxNTViY2ViZDQwMjdmY2MwY2JmN2E2
YzQzMjU2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5
cHRvQWxnb3JpdGhtU0hBMjI0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3Jp
dGhtcy9DcnlwdG9BbGdvcml0aG1TSEEyMjQuY3BwCkBAIC01Miw3ICs1Miw3IEBAIENyeXB0b0Fs
Z29yaXRobUlkZW50aWZpZXIgQ3J5cHRvQWxnb3JpdGhtU0hBMjI0OjppZGVudGlmaWVyKCkgY29u
c3QKICAgICByZXR1cm4gc19pZGVudGlmaWVyOwogfQogCi12b2lkIENyeXB0b0FsZ29yaXRobVNI
QTIyNDo6ZGlnZXN0KGNvbnN0IENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnNEZXByZWNhdGVkJiwg
Y29uc3QgQ3J5cHRvT3BlcmF0aW9uRGF0YSYgZGF0YSwgVmVjdG9yQ2FsbGJhY2smJiBjYWxsYmFj
aywgVm9pZENhbGxiYWNrJiYgZmFpbHVyZUNhbGxiYWNrLCBFeGNlcHRpb25Db2RlJikKK3ZvaWQg
Q3J5cHRvQWxnb3JpdGhtU0hBMjI0OjpkaWdlc3QoY29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFyYW1l
dGVyc0RlcHJlY2F0ZWQmLCBjb25zdCBCdWZmZXJTb3VyY2UmIGRhdGEsIFZlY3RvckNhbGxiYWNr
JiYgY2FsbGJhY2ssIFZvaWRDYWxsYmFjayYmIGZhaWx1cmVDYWxsYmFjaywgRXhjZXB0aW9uQ29k
ZSYpCiB7CiAgICAgc3RkOjp1bmlxdWVfcHRyPENyeXB0b0RpZ2VzdD4gZGlnZXN0ID0gQ3J5cHRv
RGlnZXN0OjpjcmVhdGUoQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8yMjQpOwogICAgIGlm
ICghZGlnZXN0KSB7CkBAIC02MCw3ICs2MCw3IEBAIHZvaWQgQ3J5cHRvQWxnb3JpdGhtU0hBMjI0
OjpkaWdlc3QoY29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVyc0RlcHJlY2F0ZWQmLCBjCiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBkaWdlc3QtPmFkZEJ5dGVzKGRhdGEuZmlyc3Qs
IGRhdGEuc2Vjb25kKTsKKyAgICBkaWdlc3QtPmFkZEJ5dGVzKGRhdGEuZGF0YSwgZGF0YS5sZW5n
dGgpOwogCiAgICAgY2FsbGJhY2soZGlnZXN0LT5jb21wdXRlSGFzaCgpKTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVNIQTIy
NC5oIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtU0hB
MjI0LmgKaW5kZXggZGZmNmQyMThlNjYyOTM4OWQ0YzFmMmM2MjM0MDk0ZDg1NTUwNDNlNS4uMWZm
NDJkMmQ1M2QwYWNlZTYxMjg3YWUyZjY2NjY4NWQyODc4MmQyMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtU0hBMjI0LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtU0hBMjI0LmgK
QEAgLTQxLDcgKzQxLDcgQEAgcHVibGljOgogCiAgICAgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmll
ciBpZGVudGlmaWVyKCkgY29uc3Qgb3ZlcnJpZGU7CiAKLSAgICB2b2lkIGRpZ2VzdChjb25zdCBD
cnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzRGVwcmVjYXRlZCYsIGNvbnN0IENyeXB0b09wZXJhdGlv
bkRhdGEmLCBWZWN0b3JDYWxsYmFjayYmLCBWb2lkQ2FsbGJhY2smJiBmYWlsdXJlQ2FsbGJhY2ss
IEV4Y2VwdGlvbkNvZGUmKSBvdmVycmlkZTsKKyAgICB2b2lkIGRpZ2VzdChjb25zdCBDcnlwdG9B
bGdvcml0aG1QYXJhbWV0ZXJzRGVwcmVjYXRlZCYsIGNvbnN0IEJ1ZmZlclNvdXJjZSYsIFZlY3Rv
ckNhbGxiYWNrJiYsIFZvaWRDYWxsYmFjayYmIGZhaWx1cmVDYWxsYmFjaywgRXhjZXB0aW9uQ29k
ZSYpIG92ZXJyaWRlOwogCiBwcml2YXRlOgogICAgIENyeXB0b0FsZ29yaXRobVNIQTIyNCgpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3Jp
dGhtU0hBMjU2LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0Fs
Z29yaXRobVNIQTI1Ni5jcHAKaW5kZXggMzI0OTlhOTViNmUzZTc5NDljYzQyNzQ5MGIxMzQ1ZjVm
MWYwMDlhZS4uMTU4YmUzYTZiZjRmZDg1ZDAyYzA3YmFmZTExNTg4ZDFhODlhYmU5MSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtU0hB
MjU2LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdv
cml0aG1TSEEyNTYuY3BwCkBAIC01Miw3ICs1Miw3IEBAIENyeXB0b0FsZ29yaXRobUlkZW50aWZp
ZXIgQ3J5cHRvQWxnb3JpdGhtU0hBMjU2OjppZGVudGlmaWVyKCkgY29uc3QKICAgICByZXR1cm4g
c19pZGVudGlmaWVyOwogfQogCi12b2lkIENyeXB0b0FsZ29yaXRobVNIQTI1Njo6ZGlnZXN0KGNv
bnN0IENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnNEZXByZWNhdGVkJiwgY29uc3QgQ3J5cHRvT3Bl
cmF0aW9uRGF0YSYgZGF0YSwgVmVjdG9yQ2FsbGJhY2smJiBjYWxsYmFjaywgVm9pZENhbGxiYWNr
JiYgZmFpbHVyZUNhbGxiYWNrLCBFeGNlcHRpb25Db2RlJikKK3ZvaWQgQ3J5cHRvQWxnb3JpdGht
U0hBMjU2OjpkaWdlc3QoY29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVyc0RlcHJlY2F0ZWQm
LCBjb25zdCBCdWZmZXJTb3VyY2UmIGRhdGEsIFZlY3RvckNhbGxiYWNrJiYgY2FsbGJhY2ssIFZv
aWRDYWxsYmFjayYmIGZhaWx1cmVDYWxsYmFjaywgRXhjZXB0aW9uQ29kZSYpCiB7CiAgICAgc3Rk
Ojp1bmlxdWVfcHRyPENyeXB0b0RpZ2VzdD4gZGlnZXN0ID0gQ3J5cHRvRGlnZXN0OjpjcmVhdGUo
Q3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8yNTYpOwogICAgIGlmICghZGlnZXN0KSB7CkBA
IC02MCw3ICs2MCw3IEBAIHZvaWQgQ3J5cHRvQWxnb3JpdGhtU0hBMjU2OjpkaWdlc3QoY29uc3Qg
Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVyc0RlcHJlY2F0ZWQmLCBjCiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAKLSAgICBkaWdlc3QtPmFkZEJ5dGVzKGRhdGEuZmlyc3QsIGRhdGEuc2Vjb25kKTsK
KyAgICBkaWdlc3QtPmFkZEJ5dGVzKGRhdGEuZGF0YSwgZGF0YS5sZW5ndGgpOwogCiAgICAgY2Fs
bGJhY2soZGlnZXN0LT5jb21wdXRlSGFzaCgpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVNIQTI1Ni5oIGIvU291cmNlL1dl
YkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtU0hBMjU2LmgKaW5kZXggN2Rk
NzU4YTY0NTEwZTk0YTRhZWU4ZDE2MmYzMzliMzY4OGFhNjNlZi4uY2MyODViNzUzNTcwODgyZDQ4
YTQyMjc2NGU0ZjU2NzA3MTA5M2RhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRv
L2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtU0hBMjU2LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
Y3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtU0hBMjU2LmgKQEAgLTQxLDcgKzQxLDcg
QEAgcHVibGljOgogCiAgICAgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllciBpZGVudGlmaWVyKCkg
Y29uc3Qgb3ZlcnJpZGU7CiAKLSAgICB2b2lkIGRpZ2VzdChjb25zdCBDcnlwdG9BbGdvcml0aG1Q
YXJhbWV0ZXJzRGVwcmVjYXRlZCYsIGNvbnN0IENyeXB0b09wZXJhdGlvbkRhdGEmLCBWZWN0b3JD
YWxsYmFjayYmLCBWb2lkQ2FsbGJhY2smJiBmYWlsdXJlQ2FsbGJhY2ssIEV4Y2VwdGlvbkNvZGUm
KSBvdmVycmlkZTsKKyAgICB2b2lkIGRpZ2VzdChjb25zdCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0
ZXJzRGVwcmVjYXRlZCYsIGNvbnN0IEJ1ZmZlclNvdXJjZSYsIFZlY3RvckNhbGxiYWNrJiYsIFZv
aWRDYWxsYmFjayYmIGZhaWx1cmVDYWxsYmFjaywgRXhjZXB0aW9uQ29kZSYpIG92ZXJyaWRlOwog
CiBwcml2YXRlOgogICAgIENyeXB0b0FsZ29yaXRobVNIQTI1NigpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtU0hBMzg0LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVNIQTM4NC5j
cHAKaW5kZXggMzRlZDg3Yzk5OGYxMzg2ZmUzMGQ1M2E1Yzg5N2Q5MGY5ZTlmNWU1YS4uMDM4MWU2
MmEzODA5MzY5YzBiMGNlMTY1NmY3NGMzMTI1NzNhMzQ2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtU0hBMzg0LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1TSEEzODQuY3Bw
CkBAIC01Miw3ICs1Miw3IEBAIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXIgQ3J5cHRvQWxnb3Jp
dGhtU0hBMzg0OjppZGVudGlmaWVyKCkgY29uc3QKICAgICByZXR1cm4gc19pZGVudGlmaWVyOwog
fQogCi12b2lkIENyeXB0b0FsZ29yaXRobVNIQTM4NDo6ZGlnZXN0KGNvbnN0IENyeXB0b0FsZ29y
aXRobVBhcmFtZXRlcnNEZXByZWNhdGVkJiwgY29uc3QgQ3J5cHRvT3BlcmF0aW9uRGF0YSYgZGF0
YSwgVmVjdG9yQ2FsbGJhY2smJiBjYWxsYmFjaywgVm9pZENhbGxiYWNrJiYgZmFpbHVyZUNhbGxi
YWNrLCBFeGNlcHRpb25Db2RlJikKK3ZvaWQgQ3J5cHRvQWxnb3JpdGhtU0hBMzg0OjpkaWdlc3Qo
Y29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVyc0RlcHJlY2F0ZWQmLCBjb25zdCBCdWZmZXJT
b3VyY2UmIGRhdGEsIFZlY3RvckNhbGxiYWNrJiYgY2FsbGJhY2ssIFZvaWRDYWxsYmFjayYmIGZh
aWx1cmVDYWxsYmFjaywgRXhjZXB0aW9uQ29kZSYpCiB7CiAgICAgc3RkOjp1bmlxdWVfcHRyPENy
eXB0b0RpZ2VzdD4gZGlnZXN0ID0gQ3J5cHRvRGlnZXN0OjpjcmVhdGUoQ3J5cHRvRGlnZXN0OjpB
bGdvcml0aG06OlNIQV8zODQpOwogICAgIGlmICghZGlnZXN0KSB7CkBAIC02MCw3ICs2MCw3IEBA
IHZvaWQgQ3J5cHRvQWxnb3JpdGhtU0hBMzg0OjpkaWdlc3QoY29uc3QgQ3J5cHRvQWxnb3JpdGht
UGFyYW1ldGVyc0RlcHJlY2F0ZWQmLCBjCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBk
aWdlc3QtPmFkZEJ5dGVzKGRhdGEuZmlyc3QsIGRhdGEuc2Vjb25kKTsKKyAgICBkaWdlc3QtPmFk
ZEJ5dGVzKGRhdGEuZGF0YSwgZGF0YS5sZW5ndGgpOwogCiAgICAgY2FsbGJhY2soZGlnZXN0LT5j
b21wdXRlSGFzaCgpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdv
cml0aG1zL0NyeXB0b0FsZ29yaXRobVNIQTM4NC5oIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2Fs
Z29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtU0hBMzg0LmgKaW5kZXggYjBiMGQwZTM3YWJmYzQ0OTNh
NzIyMGFlNzgyZDBkNTY0MjI1YzRkOC4uMThlZDY0NDQzZTA3NmQ2OWY1NzQxMzQwOTBjNzAxOWZm
YTA1OTc4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5
cHRvQWxnb3JpdGhtU0hBMzg0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRo
bXMvQ3J5cHRvQWxnb3JpdGhtU0hBMzg0LmgKQEAgLTQxLDcgKzQxLDcgQEAgcHVibGljOgogCiAg
ICAgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllciBpZGVudGlmaWVyKCkgY29uc3Qgb3ZlcnJpZGU7
CiAKLSAgICB2b2lkIGRpZ2VzdChjb25zdCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzRGVwcmVj
YXRlZCYsIGNvbnN0IENyeXB0b09wZXJhdGlvbkRhdGEmLCBWZWN0b3JDYWxsYmFjayYmLCBWb2lk
Q2FsbGJhY2smJiBmYWlsdXJlQ2FsbGJhY2ssIEV4Y2VwdGlvbkNvZGUmKSBvdmVycmlkZTsKKyAg
ICB2b2lkIGRpZ2VzdChjb25zdCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzRGVwcmVjYXRlZCYs
IGNvbnN0IEJ1ZmZlclNvdXJjZSYsIFZlY3RvckNhbGxiYWNrJiYsIFZvaWRDYWxsYmFjayYmIGZh
aWx1cmVDYWxsYmFjaywgRXhjZXB0aW9uQ29kZSYpIG92ZXJyaWRlOwogCiBwcml2YXRlOgogICAg
IENyeXB0b0FsZ29yaXRobVNIQTM4NCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3J5
cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtU0hBNTEyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVNIQTUxMi5jcHAKaW5kZXggOWRhOTcz
NmYzODgzYTQwM2Y3ZWVhYmQ2ODY0YjBlZjljYjcxMWE2Yi4uMmZlNjdmNGE5MzJlYmFmM2RiNDEx
OGEyODZjM2Y5OGY0ZDhmNWRkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2Fs
Z29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtU0hBNTEyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9j
cnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1TSEE1MTIuY3BwCkBAIC01Miw3ICs1Miw3
IEBAIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXIgQ3J5cHRvQWxnb3JpdGhtU0hBNTEyOjppZGVu
dGlmaWVyKCkgY29uc3QKICAgICByZXR1cm4gc19pZGVudGlmaWVyOwogfQogCi12b2lkIENyeXB0
b0FsZ29yaXRobVNIQTUxMjo6ZGlnZXN0KGNvbnN0IENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnNE
ZXByZWNhdGVkJiwgY29uc3QgQ3J5cHRvT3BlcmF0aW9uRGF0YSYgZGF0YSwgVmVjdG9yQ2FsbGJh
Y2smJiBjYWxsYmFjaywgVm9pZENhbGxiYWNrJiYgZmFpbHVyZUNhbGxiYWNrLCBFeGNlcHRpb25D
b2RlJikKK3ZvaWQgQ3J5cHRvQWxnb3JpdGhtU0hBNTEyOjpkaWdlc3QoY29uc3QgQ3J5cHRvQWxn
b3JpdGhtUGFyYW1ldGVyc0RlcHJlY2F0ZWQmLCBjb25zdCBCdWZmZXJTb3VyY2UmIGRhdGEsIFZl
Y3RvckNhbGxiYWNrJiYgY2FsbGJhY2ssIFZvaWRDYWxsYmFjayYmIGZhaWx1cmVDYWxsYmFjaywg
RXhjZXB0aW9uQ29kZSYpCiB7CiAgICAgc3RkOjp1bmlxdWVfcHRyPENyeXB0b0RpZ2VzdD4gZGln
ZXN0ID0gQ3J5cHRvRGlnZXN0OjpjcmVhdGUoQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV81
MTIpOwogICAgIGlmICghZGlnZXN0KSB7CkBAIC02MCw3ICs2MCw3IEBAIHZvaWQgQ3J5cHRvQWxn
b3JpdGhtU0hBNTEyOjpkaWdlc3QoY29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVyc0RlcHJl
Y2F0ZWQmLCBjCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBkaWdlc3QtPmFkZEJ5dGVz
KGRhdGEuZmlyc3QsIGRhdGEuc2Vjb25kKTsKKyAgICBkaWdlc3QtPmFkZEJ5dGVzKGRhdGEuZGF0
YSwgZGF0YS5sZW5ndGgpOwogCiAgICAgY2FsbGJhY2soZGlnZXN0LT5jb21wdXRlSGFzaCgpKTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0Fs
Z29yaXRobVNIQTUxMi5oIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRv
QWxnb3JpdGhtU0hBNTEyLmgKaW5kZXggNjQwMmEyOWNlM2VhMDUwNTAxMjRiNjA0ZGRkNDMxOTIz
YTAxOWI0MS4uYTkzMWY3YWU4ODQ1ZmU1MzMyMTg4MzA3ZDdlMWFmMzk3NjcwYTk2NyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtU0hB
NTEyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3Jp
dGhtU0hBNTEyLmgKQEAgLTQxLDcgKzQxLDcgQEAgcHVibGljOgogCiAgICAgQ3J5cHRvQWxnb3Jp
dGhtSWRlbnRpZmllciBpZGVudGlmaWVyKCkgY29uc3Qgb3ZlcnJpZGU7CiAKLSAgICB2b2lkIGRp
Z2VzdChjb25zdCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzRGVwcmVjYXRlZCYsIGNvbnN0IENy
eXB0b09wZXJhdGlvbkRhdGEmLCBWZWN0b3JDYWxsYmFjayYmLCBWb2lkQ2FsbGJhY2smJiBmYWls
dXJlQ2FsbGJhY2ssIEV4Y2VwdGlvbkNvZGUmKSBvdmVycmlkZTsKKyAgICB2b2lkIGRpZ2VzdChj
b25zdCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzRGVwcmVjYXRlZCYsIGNvbnN0IEJ1ZmZlclNv
dXJjZSYsIFZlY3RvckNhbGxiYWNrJiYsIFZvaWRDYWxsYmFjayYmIGZhaWx1cmVDYWxsYmFjaywg
RXhjZXB0aW9uQ29kZSYpIG92ZXJyaWRlOwogCiBwcml2YXRlOgogICAgIENyeXB0b0FsZ29yaXRo
bVNIQTUxMigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2dudXRscy9Dcnlw
dG9BbGdvcml0aG1BRVNfQ0JDR251VExTLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9nbnV0
bHMvQ3J5cHRvQWxnb3JpdGhtQUVTX0NCQ0dudVRMUy5jcHAKaW5kZXggMTQ2MDdkYjZmMWQ3MmEy
MWE1ZTc2NGUyYjMxNWFiYmI2MzI1OWU1Zi4uMGU3NWQ0M2E3ZmI3MGZmZDFmOTE1MWRmMjNhYWEy
MGJmZTY3NTU2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2dudXRscy9Dcnlw
dG9BbGdvcml0aG1BRVNfQ0JDR251VExTLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8v
Z251dGxzL0NyeXB0b0FsZ29yaXRobUFFU19DQkNHbnVUTFMuY3BwCkBAIC0zNSw3ICszNSw3IEBA
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotdm9pZCBDcnlwdG9BbGdvcml0aG1BRVNfQ0JDOjpw
bGF0Zm9ybUVuY3J5cHQoY29uc3QgQ3J5cHRvQWxnb3JpdGhtQWVzQ2JjUGFyYW1zRGVwcmVjYXRl
ZCYgcGFyYW1ldGVycywgY29uc3QgQ3J5cHRvS2V5QUVTJiBrZXksIGNvbnN0IENyeXB0b09wZXJh
dGlvbkRhdGEmIGRhdGEsIFZlY3RvckNhbGxiYWNrJiYgY2FsbGJhY2ssIFZvaWRDYWxsYmFjayYm
IGZhaWx1cmVDYWxsYmFjaywgRXhjZXB0aW9uQ29kZSYgZWMpCit2b2lkIENyeXB0b0FsZ29yaXRo
bUFFU19DQkM6OnBsYXRmb3JtRW5jcnlwdChjb25zdCBDcnlwdG9BbGdvcml0aG1BZXNDYmNQYXJh
bXNEZXByZWNhdGVkJiBwYXJhbWV0ZXJzLCBjb25zdCBDcnlwdG9LZXlBRVMmIGtleSwgY29uc3Qg
QnVmZmVyU291cmNlJiBkYXRhLCBWZWN0b3JDYWxsYmFjayYmIGNhbGxiYWNrLCBWb2lkQ2FsbGJh
Y2smJiBmYWlsdXJlQ2FsbGJhY2ssIEV4Y2VwdGlvbkNvZGUmIGVjKQogewogICAgIG5vdEltcGxl
bWVudGVkKCk7CiAgICAgZWMgPSBOT1RfU1VQUE9SVEVEX0VSUjsKQEAgLTQ3LDcgKzQ3LDcgQEAg
dm9pZCBDcnlwdG9BbGdvcml0aG1BRVNfQ0JDOjpwbGF0Zm9ybUVuY3J5cHQoY29uc3QgQ3J5cHRv
QWxnb3JpdGhtQWVzQ2JjUGFyYW1zRGUKICAgICBVTlVTRURfUEFSQU0oZmFpbHVyZUNhbGxiYWNr
KTsKIH0KIAotdm9pZCBDcnlwdG9BbGdvcml0aG1BRVNfQ0JDOjpwbGF0Zm9ybURlY3J5cHQoY29u
c3QgQ3J5cHRvQWxnb3JpdGhtQWVzQ2JjUGFyYW1zRGVwcmVjYXRlZCYgcGFyYW1ldGVycywgY29u
c3QgQ3J5cHRvS2V5QUVTJiBrZXksIGNvbnN0IENyeXB0b09wZXJhdGlvbkRhdGEmIGRhdGEsIFZl
Y3RvckNhbGxiYWNrJiYgY2FsbGJhY2ssIFZvaWRDYWxsYmFjayYmIGZhaWx1cmVDYWxsYmFjaywg
RXhjZXB0aW9uQ29kZSYgZWMpCit2b2lkIENyeXB0b0FsZ29yaXRobUFFU19DQkM6OnBsYXRmb3Jt
RGVjcnlwdChjb25zdCBDcnlwdG9BbGdvcml0aG1BZXNDYmNQYXJhbXNEZXByZWNhdGVkJiBwYXJh
bWV0ZXJzLCBjb25zdCBDcnlwdG9LZXlBRVMmIGtleSwgY29uc3QgQnVmZmVyU291cmNlJiBkYXRh
LCBWZWN0b3JDYWxsYmFjayYmIGNhbGxiYWNrLCBWb2lkQ2FsbGJhY2smJiBmYWlsdXJlQ2FsbGJh
Y2ssIEV4Y2VwdGlvbkNvZGUmIGVjKQogewogICAgIG5vdEltcGxlbWVudGVkKCk7CiAgICAgZWMg
PSBOT1RfU1VQUE9SVEVEX0VSUjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9n
bnV0bHMvQ3J5cHRvQWxnb3JpdGhtQUVTX0tXR251VExTLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Ny
eXB0by9nbnV0bHMvQ3J5cHRvQWxnb3JpdGhtQUVTX0tXR251VExTLmNwcAppbmRleCA5NDU0Yzgz
MTQxMDJlODhjZjBjOGM2ODhhNzM5NDRhNDcxODlhMTNmLi40OGU2ZjRjM2RlMjlkYjBhNDA4YzM0
NzFjNzY2ZGEyMjZkYzE2OThhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vZ251
dGxzL0NyeXB0b0FsZ29yaXRobUFFU19LV0dudVRMUy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
Y3J5cHRvL2dudXRscy9DcnlwdG9BbGdvcml0aG1BRVNfS1dHbnVUTFMuY3BwCkBAIC0zNCw3ICsz
NCw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotdm9pZCBDcnlwdG9BbGdvcml0aG1BRVNf
S1c6OnBsYXRmb3JtRW5jcnlwdChjb25zdCBDcnlwdG9LZXlBRVMmIGtleSwgY29uc3QgQ3J5cHRv
T3BlcmF0aW9uRGF0YSYgZGF0YSwgVmVjdG9yQ2FsbGJhY2smJiBjYWxsYmFjaywgVm9pZENhbGxi
YWNrJiYgZmFpbHVyZUNhbGxiYWNrLCBFeGNlcHRpb25Db2RlJiBlYykKK3ZvaWQgQ3J5cHRvQWxn
b3JpdGhtQUVTX0tXOjpwbGF0Zm9ybUVuY3J5cHQoY29uc3QgQ3J5cHRvS2V5QUVTJiBrZXksIGNv
bnN0IEJ1ZmZlclNvdXJjZSYgZGF0YSwgVmVjdG9yQ2FsbGJhY2smJiBjYWxsYmFjaywgVm9pZENh
bGxiYWNrJiYgZmFpbHVyZUNhbGxiYWNrLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBub3RJ
bXBsZW1lbnRlZCgpOwogICAgIGVjID0gTk9UX1NVUFBPUlRFRF9FUlI7CkBAIC00NSw3ICs0NSw3
IEBAIHZvaWQgQ3J5cHRvQWxnb3JpdGhtQUVTX0tXOjpwbGF0Zm9ybUVuY3J5cHQoY29uc3QgQ3J5
cHRvS2V5QUVTJiBrZXksIGNvbnN0IENyeXB0CiAgICAgVU5VU0VEX1BBUkFNKGZhaWx1cmVDYWxs
YmFjayk7CiB9CiAKLXZvaWQgQ3J5cHRvQWxnb3JpdGhtQUVTX0tXOjpwbGF0Zm9ybURlY3J5cHQo
Y29uc3QgQ3J5cHRvS2V5QUVTJiBrZXksIGNvbnN0IENyeXB0b09wZXJhdGlvbkRhdGEmIGRhdGEs
IFZlY3RvckNhbGxiYWNrJiYgY2FsbGJhY2ssIFZvaWRDYWxsYmFjayYmIGZhaWx1cmVDYWxsYmFj
aywgRXhjZXB0aW9uQ29kZSYgZWMpCit2b2lkIENyeXB0b0FsZ29yaXRobUFFU19LVzo6cGxhdGZv
cm1EZWNyeXB0KGNvbnN0IENyeXB0b0tleUFFUyYga2V5LCBjb25zdCBCdWZmZXJTb3VyY2UmIGRh
dGEsIFZlY3RvckNhbGxiYWNrJiYgY2FsbGJhY2ssIFZvaWRDYWxsYmFjayYmIGZhaWx1cmVDYWxs
YmFjaywgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKICAgICBl
YyA9IE5PVF9TVVBQT1JURURfRVJSOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3J5cHRv
L2dudXRscy9DcnlwdG9BbGdvcml0aG1ITUFDR251VExTLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Ny
eXB0by9nbnV0bHMvQ3J5cHRvQWxnb3JpdGhtSE1BQ0dudVRMUy5jcHAKaW5kZXggYTgzMDQ2NTdi
MzNlZDAyNGUzODJkNjE5YWQ2MzJiNjA5YjJiNzVjMy4uZGE5MWNiYzAwZjRkZjYyNjYyOTNhNjQ3
ZDk3ZTJmYTY3YTNiYWE0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2dudXRs
cy9DcnlwdG9BbGdvcml0aG1ITUFDR251VExTLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jcnlw
dG8vZ251dGxzL0NyeXB0b0FsZ29yaXRobUhNQUNHbnVUTFMuY3BwCkBAIC01NSwyMCArNTUsMjAg
QEAgc3RhdGljIGdudXRsc19tYWNfYWxnb3JpdGhtX3QgZ2V0R251dGxzRGlnZXN0QWxnb3JpdGht
KENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXIKICAgICB9CiB9CiAKLXN0YXRpYyBWZWN0b3I8dWlu
dDhfdD4gY2FsY3VsYXRlU2lnbmF0dXJlKGdudXRsc19tYWNfYWxnb3JpdGhtX3QgYWxnb3JpdGht
LCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGtleSwgY29uc3QgQ3J5cHRvT3BlcmF0aW9uRGF0YSYg
ZGF0YSkKK3N0YXRpYyBWZWN0b3I8dWludDhfdD4gY2FsY3VsYXRlU2lnbmF0dXJlKGdudXRsc19t
YWNfYWxnb3JpdGhtX3QgYWxnb3JpdGhtLCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGtleSwgY29u
c3QgQnVmZmVyU291cmNlJiBkYXRhKQogewogICAgIHNpemVfdCBkaWdlc3RMZW5ndGggPSBnbnV0
bHNfaG1hY19nZXRfbGVuKGFsZ29yaXRobSk7CiAKICAgICBWZWN0b3I8dWludDhfdD4gcmVzdWx0
KGRpZ2VzdExlbmd0aCk7CiAgICAgY29uc3Qgdm9pZCoga2V5RGF0YSA9IGtleS5kYXRhKCkgPyBr
ZXkuZGF0YSgpIDogcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oIiIpOwotICAgIGlu
dCByZXQgPSBnbnV0bHNfaG1hY19mYXN0KGFsZ29yaXRobSwga2V5RGF0YSwga2V5LnNpemUoKSwg
ZGF0YS5maXJzdCwgZGF0YS5zZWNvbmQsIHJlc3VsdC5kYXRhKCkpOworICAgIGludCByZXQgPSBn
bnV0bHNfaG1hY19mYXN0KGFsZ29yaXRobSwga2V5RGF0YSwga2V5LnNpemUoKSwgZGF0YS5kYXRh
LCBkYXRhLmxlbmd0aCwgcmVzdWx0LmRhdGEoKSk7CiAgICAgQVNTRVJUKHJldCA9PSBHTlVUTFNf
RV9TVUNDRVNTKTsKICAgICBVTlVTRURfUEFSQU0ocmV0KTsKIAogICAgIHJldHVybiByZXN1bHQ7
CiB9CiAKLXZvaWQgQ3J5cHRvQWxnb3JpdGhtSE1BQzo6cGxhdGZvcm1TaWduKGNvbnN0IENyeXB0
b0FsZ29yaXRobUhtYWNQYXJhbXNEZXByZWNhdGVkJiBwYXJhbWV0ZXJzLCBjb25zdCBDcnlwdG9L
ZXlITUFDJiBrZXksIGNvbnN0IENyeXB0b09wZXJhdGlvbkRhdGEmIGRhdGEsIFZlY3RvckNhbGxi
YWNrJiYgY2FsbGJhY2ssIFZvaWRDYWxsYmFjayYmIGZhaWx1cmVDYWxsYmFjaywgRXhjZXB0aW9u
Q29kZSYgZWMpCit2b2lkIENyeXB0b0FsZ29yaXRobUhNQUM6OnBsYXRmb3JtU2lnbihjb25zdCBD
cnlwdG9BbGdvcml0aG1IbWFjUGFyYW1zRGVwcmVjYXRlZCYgcGFyYW1ldGVycywgY29uc3QgQ3J5
cHRvS2V5SE1BQyYga2V5LCBjb25zdCBCdWZmZXJTb3VyY2UmIGRhdGEsIFZlY3RvckNhbGxiYWNr
JiYgY2FsbGJhY2ssIFZvaWRDYWxsYmFjayYmIGZhaWx1cmVDYWxsYmFjaywgRXhjZXB0aW9uQ29k
ZSYgZWMpCiB7CiAgICAgVU5VU0VEX1BBUkFNKGZhaWx1cmVDYWxsYmFjayk7CiAgICAgZ251dGxz
X21hY19hbGdvcml0aG1fdCBhbGdvcml0aG0gPSBnZXRHbnV0bHNEaWdlc3RBbGdvcml0aG0ocGFy
YW1ldGVycy5oYXNoKTsKQEAgLTgyLDcgKzgyLDcgQEAgdm9pZCBDcnlwdG9BbGdvcml0aG1ITUFD
OjpwbGF0Zm9ybVNpZ24oY29uc3QgQ3J5cHRvQWxnb3JpdGhtSG1hY1BhcmFtc0RlcHJlY2F0ZWQK
ICAgICBjYWxsYmFjayhzaWduYXR1cmUpOwogfQogCi12b2lkIENyeXB0b0FsZ29yaXRobUhNQUM6
OnBsYXRmb3JtVmVyaWZ5KGNvbnN0IENyeXB0b0FsZ29yaXRobUhtYWNQYXJhbXNEZXByZWNhdGVk
JiBwYXJhbWV0ZXJzLCBjb25zdCBDcnlwdG9LZXlITUFDJiBrZXksIGNvbnN0IENyeXB0b09wZXJh
dGlvbkRhdGEmIGV4cGVjdGVkU2lnbmF0dXJlLCBjb25zdCBDcnlwdG9PcGVyYXRpb25EYXRhJiBk
YXRhLCBCb29sQ2FsbGJhY2smJiBjYWxsYmFjaywgVm9pZENhbGxiYWNrJiYgZmFpbHVyZUNhbGxi
YWNrLCBFeGNlcHRpb25Db2RlJiBlYykKK3ZvaWQgQ3J5cHRvQWxnb3JpdGhtSE1BQzo6cGxhdGZv
cm1WZXJpZnkoY29uc3QgQ3J5cHRvQWxnb3JpdGhtSG1hY1BhcmFtc0RlcHJlY2F0ZWQmIHBhcmFt
ZXRlcnMsIGNvbnN0IENyeXB0b0tleUhNQUMmIGtleSwgY29uc3QgQnVmZmVyU291cmNlJiBleHBl
Y3RlZFNpZ25hdHVyZSwgY29uc3QgQnVmZmVyU291cmNlJiBkYXRhLCBCb29sQ2FsbGJhY2smJiBj
YWxsYmFjaywgVm9pZENhbGxiYWNrJiYgZmFpbHVyZUNhbGxiYWNrLCBFeGNlcHRpb25Db2RlJiBl
YykKIHsKICAgICBVTlVTRURfUEFSQU0oZmFpbHVyZUNhbGxiYWNrKTsKICAgICBnbnV0bHNfbWFj
X2FsZ29yaXRobV90IGFsZ29yaXRobSA9IGdldEdudXRsc0RpZ2VzdEFsZ29yaXRobShwYXJhbWV0
ZXJzLmhhc2gpOwpAQCAtOTQsNyArOTQsNyBAQCB2b2lkIENyeXB0b0FsZ29yaXRobUhNQUM6OnBs
YXRmb3JtVmVyaWZ5KGNvbnN0IENyeXB0b0FsZ29yaXRobUhtYWNQYXJhbXNEZXByZWNhdAogICAg
IFZlY3Rvcjx1aW50OF90PiBzaWduYXR1cmUgPSBjYWxjdWxhdGVTaWduYXR1cmUoYWxnb3JpdGht
LCBrZXkua2V5KCksIGRhdGEpOwogCiAgICAgLy8gVXNpbmcgYSBjb25zdGFudCB0aW1lIGNvbXBh
cmlzb24gdG8gcHJldmVudCB0aW1pbmcgYXR0YWNrcy4KLSAgICBib29sIHJlc3VsdCA9IHNpZ25h
dHVyZS5zaXplKCkgPT0gZXhwZWN0ZWRTaWduYXR1cmUuc2Vjb25kICYmICFjb25zdGFudFRpbWVN
ZW1jbXAoc2lnbmF0dXJlLmRhdGEoKSwgZXhwZWN0ZWRTaWduYXR1cmUuZmlyc3QsIHNpZ25hdHVy
ZS5zaXplKCkpOworICAgIGJvb2wgcmVzdWx0ID0gc2lnbmF0dXJlLnNpemUoKSA9PSBleHBlY3Rl
ZFNpZ25hdHVyZS5sZW5ndGggJiYgIWNvbnN0YW50VGltZU1lbWNtcChzaWduYXR1cmUuZGF0YSgp
LCBleHBlY3RlZFNpZ25hdHVyZS5kYXRhLCBzaWduYXR1cmUuc2l6ZSgpKTsKIAogICAgIGNhbGxi
YWNrKHJlc3VsdCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vZ251dGxz
L0NyeXB0b0FsZ29yaXRobVJTQUVTX1BLQ1MxX3YxXzVHbnVUTFMuY3BwIGIvU291cmNlL1dlYkNv
cmUvY3J5cHRvL2dudXRscy9DcnlwdG9BbGdvcml0aG1SU0FFU19QS0NTMV92MV81R251VExTLmNw
cAppbmRleCA3YTVlODRiNWZkZTliYzU5MTY4MWE4ODVmODNlNjM1MGFjMmM2OWJhLi42OWIwMGMw
MWMxNDIyZGQ3NThiNTk3NmEzZTU3MjdlYzRiNjhkODVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9jcnlwdG8vZ251dGxzL0NyeXB0b0FsZ29yaXRobVJTQUVTX1BLQ1MxX3YxXzVHbnVUTFMu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9nbnV0bHMvQ3J5cHRvQWxnb3JpdGhtUlNB
RVNfUEtDUzFfdjFfNUdudVRMUy5jcHAKQEAgLTM0LDcgKzM0LDcgQEAKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCi12b2lkIENyeXB0b0FsZ29yaXRobVJTQUVTX1BLQ1MxX3YxXzU6OnBsYXRmb3Jt
RW5jcnlwdChjb25zdCBDcnlwdG9LZXlSU0EmIGtleSwgY29uc3QgQ3J5cHRvT3BlcmF0aW9uRGF0
YSYgZGF0YSwgVmVjdG9yQ2FsbGJhY2smJiBjYWxsYmFjaywgVm9pZENhbGxiYWNrJiYgZmFpbHVy
ZUNhbGxiYWNrLCBFeGNlcHRpb25Db2RlJiBlYykKK3ZvaWQgQ3J5cHRvQWxnb3JpdGhtUlNBRVNf
UEtDUzFfdjFfNTo6cGxhdGZvcm1FbmNyeXB0KGNvbnN0IENyeXB0b0tleVJTQSYga2V5LCBjb25z
dCBCdWZmZXJTb3VyY2UmIGRhdGEsIFZlY3RvckNhbGxiYWNrJiYgY2FsbGJhY2ssIFZvaWRDYWxs
YmFjayYmIGZhaWx1cmVDYWxsYmFjaywgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgbm90SW1w
bGVtZW50ZWQoKTsKICAgICBlYyA9IE5PVF9TVVBQT1JURURfRVJSOwpAQCAtNDUsNyArNDUsNyBA
QCB2b2lkIENyeXB0b0FsZ29yaXRobVJTQUVTX1BLQ1MxX3YxXzU6OnBsYXRmb3JtRW5jcnlwdChj
b25zdCBDcnlwdG9LZXlSU0EmIGtleSwgYwogICAgIFVOVVNFRF9QQVJBTShmYWlsdXJlQ2FsbGJh
Y2spOwogfQogCi12b2lkIENyeXB0b0FsZ29yaXRobVJTQUVTX1BLQ1MxX3YxXzU6OnBsYXRmb3Jt
RGVjcnlwdChjb25zdCBDcnlwdG9LZXlSU0EmIGtleSwgY29uc3QgQ3J5cHRvT3BlcmF0aW9uRGF0
YSYgZGF0YSwgVmVjdG9yQ2FsbGJhY2smJiBjYWxsYmFjaywgVm9pZENhbGxiYWNrJiYgZmFpbHVy
ZUNhbGxiYWNrLCBFeGNlcHRpb25Db2RlJiBlYykKK3ZvaWQgQ3J5cHRvQWxnb3JpdGhtUlNBRVNf
UEtDUzFfdjFfNTo6cGxhdGZvcm1EZWNyeXB0KGNvbnN0IENyeXB0b0tleVJTQSYga2V5LCBjb25z
dCBCdWZmZXJTb3VyY2UmIGRhdGEsIFZlY3RvckNhbGxiYWNrJiYgY2FsbGJhY2ssIFZvaWRDYWxs
YmFjayYmIGZhaWx1cmVDYWxsYmFjaywgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgbm90SW1w
bGVtZW50ZWQoKTsKICAgICBlYyA9IE5PVF9TVVBQT1JURURfRVJSOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvY3J5cHRvL2dudXRscy9DcnlwdG9BbGdvcml0aG1SU0FTU0FfUEtDUzFfdjFf
NUdudVRMUy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vZ251dGxzL0NyeXB0b0FsZ29yaXRo
bVJTQVNTQV9QS0NTMV92MV81R251VExTLmNwcAppbmRleCA1NjhkNTJiYTQwMzRkZjAwYjc0M2Zh
Mjc5YzRmYWQxN2IxNWM2MTNkLi4wNjRiNzBkMDY0ZmNjYTQ1ZmY2YjUzY2U1MDRiMDdhYjliMDdi
MGViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vZ251dGxzL0NyeXB0b0FsZ29y
aXRobVJTQVNTQV9QS0NTMV92MV81R251VExTLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jcnlw
dG8vZ251dGxzL0NyeXB0b0FsZ29yaXRobVJTQVNTQV9QS0NTMV92MV81R251VExTLmNwcApAQCAt
MzUsNyArMzUsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXZvaWQgQ3J5cHRvQWxnb3Jp
dGhtUlNBU1NBX1BLQ1MxX3YxXzU6OnBsYXRmb3JtU2lnbihjb25zdCBDcnlwdG9BbGdvcml0aG1S
c2FTc2FQYXJhbXNEZXByZWNhdGVkJiBwYXJhbWV0ZXJzLCBjb25zdCBDcnlwdG9LZXlSU0EmIGtl
eSwgY29uc3QgQ3J5cHRvT3BlcmF0aW9uRGF0YSYgZGF0YSwgVmVjdG9yQ2FsbGJhY2smJiBjYWxs
YmFjaywgVm9pZENhbGxiYWNrJiYgZmFpbHVyZUNhbGxiYWNrLCBFeGNlcHRpb25Db2RlJiBlYykK
K3ZvaWQgQ3J5cHRvQWxnb3JpdGhtUlNBU1NBX1BLQ1MxX3YxXzU6OnBsYXRmb3JtU2lnbihjb25z
dCBDcnlwdG9BbGdvcml0aG1Sc2FTc2FQYXJhbXNEZXByZWNhdGVkJiBwYXJhbWV0ZXJzLCBjb25z
dCBDcnlwdG9LZXlSU0EmIGtleSwgY29uc3QgQnVmZmVyU291cmNlJiBkYXRhLCBWZWN0b3JDYWxs
YmFjayYmIGNhbGxiYWNrLCBWb2lkQ2FsbGJhY2smJiBmYWlsdXJlQ2FsbGJhY2ssIEV4Y2VwdGlv
bkNvZGUmIGVjKQogewogICAgIG5vdEltcGxlbWVudGVkKCk7CiAgICAgZWMgPSBOT1RfU1VQUE9S
VEVEX0VSUjsKQEAgLTQ3LDcgKzQ3LDcgQEAgdm9pZCBDcnlwdG9BbGdvcml0aG1SU0FTU0FfUEtD
UzFfdjFfNTo6cGxhdGZvcm1TaWduKGNvbnN0IENyeXB0b0FsZ29yaXRobVJzYVNzYVAKICAgICBV
TlVTRURfUEFSQU0oZmFpbHVyZUNhbGxiYWNrKTsKIH0KIAotdm9pZCBDcnlwdG9BbGdvcml0aG1S
U0FTU0FfUEtDUzFfdjFfNTo6cGxhdGZvcm1WZXJpZnkoY29uc3QgQ3J5cHRvQWxnb3JpdGhtUnNh
U3NhUGFyYW1zRGVwcmVjYXRlZCYgcGFyYW1ldGVycywgY29uc3QgQ3J5cHRvS2V5UlNBJiBrZXks
IGNvbnN0IENyeXB0b09wZXJhdGlvbkRhdGEmIHNpZ25hdHVyZSwgY29uc3QgQ3J5cHRvT3BlcmF0
aW9uRGF0YSYgZGF0YSwgQm9vbENhbGxiYWNrJiYgY2FsbGJhY2ssIFZvaWRDYWxsYmFjayYmIGZh
aWx1cmVDYWxsYmFjaywgRXhjZXB0aW9uQ29kZSYgZWMpCit2b2lkIENyeXB0b0FsZ29yaXRobVJT
QVNTQV9QS0NTMV92MV81OjpwbGF0Zm9ybVZlcmlmeShjb25zdCBDcnlwdG9BbGdvcml0aG1Sc2FT
c2FQYXJhbXNEZXByZWNhdGVkJiBwYXJhbWV0ZXJzLCBjb25zdCBDcnlwdG9LZXlSU0EmIGtleSwg
Y29uc3QgQnVmZmVyU291cmNlJiBzaWduYXR1cmUsIGNvbnN0IEJ1ZmZlclNvdXJjZSYgZGF0YSwg
Qm9vbENhbGxiYWNrJiYgY2FsbGJhY2ssIFZvaWRDYWxsYmFjayYmIGZhaWx1cmVDYWxsYmFjaywg
RXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKICAgICBlYyA9IE5P
VF9TVVBQT1JURURfRVJSOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2dudXRs
cy9DcnlwdG9BbGdvcml0aG1SU0FfT0FFUEdudVRMUy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jcnlw
dG8vZ251dGxzL0NyeXB0b0FsZ29yaXRobVJTQV9PQUVQR251VExTLmNwcAppbmRleCBhYjA2YWNk
ZDQ2MDRmNmU5MGYxNTI3ZDU2OGFhODIxMDU5YzYwZmViLi5kMjE2NjhiMTVmOTllM2E3MDc4MmE4
M2NkNzZlZGE4Y2FlZjMwNTZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vZ251
dGxzL0NyeXB0b0FsZ29yaXRobVJTQV9PQUVQR251VExTLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9jcnlwdG8vZ251dGxzL0NyeXB0b0FsZ29yaXRobVJTQV9PQUVQR251VExTLmNwcApAQCAtMzUs
NyArMzUsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXZvaWQgQ3J5cHRvQWxnb3JpdGht
UlNBX09BRVA6OnBsYXRmb3JtRW5jcnlwdChjb25zdCBDcnlwdG9BbGdvcml0aG1Sc2FPYWVwUGFy
YW1zRGVwcmVjYXRlZCYgcGFyYW1ldGVycywgY29uc3QgQ3J5cHRvS2V5UlNBJiBrZXksIGNvbnN0
IENyeXB0b09wZXJhdGlvbkRhdGEmIGRhdGEsIFZlY3RvckNhbGxiYWNrJiYgY2FsbGJhY2ssIFZv
aWRDYWxsYmFjayYmIGZhaWx1cmVDYWxsYmFjaywgRXhjZXB0aW9uQ29kZSYgZWMpCit2b2lkIENy
eXB0b0FsZ29yaXRobVJTQV9PQUVQOjpwbGF0Zm9ybUVuY3J5cHQoY29uc3QgQ3J5cHRvQWxnb3Jp
dGhtUnNhT2FlcFBhcmFtc0RlcHJlY2F0ZWQmIHBhcmFtZXRlcnMsIGNvbnN0IENyeXB0b0tleVJT
QSYga2V5LCBjb25zdCBCdWZmZXJTb3VyY2UmIGRhdGEsIFZlY3RvckNhbGxiYWNrJiYgY2FsbGJh
Y2ssIFZvaWRDYWxsYmFjayYmIGZhaWx1cmVDYWxsYmFjaywgRXhjZXB0aW9uQ29kZSYgZWMpCiB7
CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKICAgICBlYyA9IE5PVF9TVVBQT1JURURfRVJSOwpAQCAt
NDcsNyArNDcsNyBAQCB2b2lkIENyeXB0b0FsZ29yaXRobVJTQV9PQUVQOjpwbGF0Zm9ybUVuY3J5
cHQoY29uc3QgQ3J5cHRvQWxnb3JpdGhtUnNhT2FlcFBhcmFtcwogICAgIFVOVVNFRF9QQVJBTShm
YWlsdXJlQ2FsbGJhY2spOwogfQogCi12b2lkIENyeXB0b0FsZ29yaXRobVJTQV9PQUVQOjpwbGF0
Zm9ybURlY3J5cHQoY29uc3QgQ3J5cHRvQWxnb3JpdGhtUnNhT2FlcFBhcmFtc0RlcHJlY2F0ZWQm
IHBhcmFtZXRlcnMsIGNvbnN0IENyeXB0b0tleVJTQSYga2V5LCBjb25zdCBDcnlwdG9PcGVyYXRp
b25EYXRhJiBkYXRhLCBWZWN0b3JDYWxsYmFjayYmIGNhbGxiYWNrLCBWb2lkQ2FsbGJhY2smJiBm
YWlsdXJlQ2FsbGJhY2ssIEV4Y2VwdGlvbkNvZGUmIGVjKQordm9pZCBDcnlwdG9BbGdvcml0aG1S
U0FfT0FFUDo6cGxhdGZvcm1EZWNyeXB0KGNvbnN0IENyeXB0b0FsZ29yaXRobVJzYU9hZXBQYXJh
bXNEZXByZWNhdGVkJiBwYXJhbWV0ZXJzLCBjb25zdCBDcnlwdG9LZXlSU0EmIGtleSwgY29uc3Qg
QnVmZmVyU291cmNlJiBkYXRhLCBWZWN0b3JDYWxsYmFjayYmIGNhbGxiYWNrLCBWb2lkQ2FsbGJh
Y2smJiBmYWlsdXJlQ2FsbGJhY2ssIEV4Y2VwdGlvbkNvZGUmIGVjKQogewogICAgIG5vdEltcGxl
bWVudGVkKCk7CiAgICAgZWMgPSBOT1RfU1VQUE9SVEVEX0VSUjsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2NyeXB0by9rZXlzL0NyeXB0b0tleVNlcmlhbGl6YXRpb25SYXcuY3BwIGIvU291
cmNlL1dlYkNvcmUvY3J5cHRvL2tleXMvQ3J5cHRvS2V5U2VyaWFsaXphdGlvblJhdy5jcHAKaW5k
ZXggNmQzYjhjODQ1ODk5YjVlYmZmMTMwMThlOWFmMmE3YjBlODZlZTFiNy4uNjZjOTk3ZmM1Nzk3
ZTA2ZTU5ZTAzYWRjY2U3NTU4NTY4Zjg1Y2E4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
Y3J5cHRvL2tleXMvQ3J5cHRvS2V5U2VyaWFsaXphdGlvblJhdy5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvY3J5cHRvL2tleXMvQ3J5cHRvS2V5U2VyaWFsaXphdGlvblJhdy5jcHAKQEAgLTM1LDkg
KzM1LDkgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1DcnlwdG9LZXlTZXJpYWxpemF0aW9u
UmF3OjpDcnlwdG9LZXlTZXJpYWxpemF0aW9uUmF3KGNvbnN0IENyeXB0b09wZXJhdGlvbkRhdGEm
IGRhdGEpCitDcnlwdG9LZXlTZXJpYWxpemF0aW9uUmF3OjpDcnlwdG9LZXlTZXJpYWxpemF0aW9u
UmF3KGNvbnN0IEJ1ZmZlclNvdXJjZSYgZGF0YSkKIHsKLSAgICBtX2RhdGEuYXBwZW5kKGRhdGEu
Zmlyc3QsIGRhdGEuc2Vjb25kKTsKKyAgICBtX2RhdGEuYXBwZW5kKGRhdGEuZGF0YSwgZGF0YS5s
ZW5ndGgpOwogfQogCiBDcnlwdG9LZXlTZXJpYWxpemF0aW9uUmF3Ojp+Q3J5cHRvS2V5U2VyaWFs
aXphdGlvblJhdygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8va2V5cy9Dcnlw
dG9LZXlTZXJpYWxpemF0aW9uUmF3LmggYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8va2V5cy9Dcnlw
dG9LZXlTZXJpYWxpemF0aW9uUmF3LmgKaW5kZXggZWZhM2NkMmMwMWQ5ZjM1YTBlOTBjMmE5OTdj
NDE0ODJkNzhlYTUzNi4uMzRkOTgxZWM0ZmRiN2IwMzZmMzkzY2M2ODU5MDIzOWMzYjcwZmZiOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2tleXMvQ3J5cHRvS2V5U2VyaWFsaXph
dGlvblJhdy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9rZXlzL0NyeXB0b0tleVNlcmlh
bGl6YXRpb25SYXcuaApAQCAtMjYsNiArMjYsNyBAQAogI2lmbmRlZiBDcnlwdG9LZXlTZXJpYWxp
emF0aW9uUmF3X2gKICNkZWZpbmUgQ3J5cHRvS2V5U2VyaWFsaXphdGlvblJhd19oCiAKKyNpbmNs
dWRlICJCdWZmZXJTb3VyY2UuaCIKICNpbmNsdWRlICJDcnlwdG9LZXlTZXJpYWxpemF0aW9uLmgi
CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5o
PgpAQCAtMzksNyArNDAsNyBAQCBjbGFzcyBDcnlwdG9LZXk7CiBjbGFzcyBDcnlwdG9LZXlTZXJp
YWxpemF0aW9uUmF3IGZpbmFsIDogcHVibGljIENyeXB0b0tleVNlcmlhbGl6YXRpb24gewogICAg
IFdURl9NQUtFX05PTkNPUFlBQkxFKENyeXB0b0tleVNlcmlhbGl6YXRpb25SYXcpOwogcHVibGlj
OgotICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvS2V5U2VyaWFsaXphdGlvblJhdz4g
Y3JlYXRlKGNvbnN0IENyeXB0b09wZXJhdGlvbkRhdGEmIGRhdGEpCisgICAgc3RhdGljIHN0ZDo6
dW5pcXVlX3B0cjxDcnlwdG9LZXlTZXJpYWxpemF0aW9uUmF3PiBjcmVhdGUoY29uc3QgQnVmZmVy
U291cmNlJiBkYXRhKQogICAgIHsKICAgICAgICAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxDcnlw
dG9LZXlTZXJpYWxpemF0aW9uUmF3PihuZXcgQ3J5cHRvS2V5U2VyaWFsaXphdGlvblJhdyhkYXRh
KSk7CiAgICAgfQpAQCAtNDksNyArNTAsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGJvb2wgc2Vy
aWFsaXplKGNvbnN0IENyeXB0b0tleSYsIFZlY3Rvcjx1aW50OF90PiYpOwogCiBwcml2YXRlOgot
ICAgIENyeXB0b0tleVNlcmlhbGl6YXRpb25SYXcoY29uc3QgQ3J5cHRvT3BlcmF0aW9uRGF0YSYp
OworICAgIENyeXB0b0tleVNlcmlhbGl6YXRpb25SYXcoY29uc3QgQnVmZmVyU291cmNlJik7CiAK
ICAgICBPcHRpb25hbDxDcnlwdG9BbGdvcml0aG1QYWlyPiByZWNvbmNpbGVBbGdvcml0aG0oQ3J5
cHRvQWxnb3JpdGhtKiwgQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVyc0RlcHJlY2F0ZWQqKSBjb25z
dCBvdmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL21hYy9Dcnlw
dG9BbGdvcml0aG1BRVNfQ0JDTWFjLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9tYWMvQ3J5
cHRvQWxnb3JpdGhtQUVTX0NCQ01hYy5jcHAKaW5kZXggYjEyM2NlY2IxMjNjNTE0YzM4ZjA5MDQ0
YmUzODJmMTgxNzZiNDcxZi4uMjE4ODQzMzg3ZGNlOTBhMTdkOGVlODc2YTIzMTQ0NjFmYzYyZjg5
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL21hYy9DcnlwdG9BbGdvcml0aG1B
RVNfQ0JDTWFjLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vbWFjL0NyeXB0b0FsZ29y
aXRobUFFU19DQkNNYWMuY3BwCkBAIC0zNSw3ICszNSw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAotc3RhdGljIHZvaWQgdHJhbnNmb3JtQUVTX0NCQyhDQ09wZXJhdGlvbiBvcGVyYXRpb24s
IGNvbnN0IENyeXB0b0FsZ29yaXRobUFlc0NiY1BhcmFtc0RlcHJlY2F0ZWQmIHBhcmFtZXRlcnMs
IGNvbnN0IENyeXB0b0tleUFFUyYga2V5LCBjb25zdCBDcnlwdG9PcGVyYXRpb25EYXRhJiBkYXRh
LCBDcnlwdG9BbGdvcml0aG06OlZlY3RvckNhbGxiYWNrJiYgY2FsbGJhY2ssIENyeXB0b0FsZ29y
aXRobTo6Vm9pZENhbGxiYWNrJiYgZmFpbHVyZUNhbGxiYWNrKQorc3RhdGljIHZvaWQgdHJhbnNm
b3JtQUVTX0NCQyhDQ09wZXJhdGlvbiBvcGVyYXRpb24sIGNvbnN0IENyeXB0b0FsZ29yaXRobUFl
c0NiY1BhcmFtc0RlcHJlY2F0ZWQmIHBhcmFtZXRlcnMsIGNvbnN0IENyeXB0b0tleUFFUyYga2V5
LCBjb25zdCBCdWZmZXJTb3VyY2UmIGRhdGEsIENyeXB0b0FsZ29yaXRobTo6VmVjdG9yQ2FsbGJh
Y2smJiBjYWxsYmFjaywgQ3J5cHRvQWxnb3JpdGhtOjpWb2lkQ2FsbGJhY2smJiBmYWlsdXJlQ2Fs
bGJhY2spCiB7CiAgICAgc3RhdGljX2Fzc2VydChzaXplb2YocGFyYW1ldGVycy5pdikgPT0ga0ND
QmxvY2tTaXplQUVTMTI4LCAiSW5pdGlhbGl6YXRpb24gdmVjdG9yIHNpemUgbXVzdCBiZSB0aGUg
c2FtZSBhcyBhbGdvcml0aG0gYmxvY2sgc2l6ZSIpOwogCkBAIC01NywxMCArNTcsMTAgQEAgc3Rh
dGljIHZvaWQgdHJhbnNmb3JtQUVTX0NCQyhDQ09wZXJhdGlvbiBvcGVyYXRpb24sIGNvbnN0IENy
eXB0b0FsZ29yaXRobUFlc0NiY1AKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIFZlY3Rv
cjx1aW50OF90PiByZXN1bHQoQ0NDcnlwdG9yR2V0T3V0cHV0TGVuZ3RoKGNyeXB0b3IsIGRhdGEu
c2Vjb25kLCB0cnVlKSk7CisgICAgVmVjdG9yPHVpbnQ4X3Q+IHJlc3VsdChDQ0NyeXB0b3JHZXRP
dXRwdXRMZW5ndGgoY3J5cHRvciwgZGF0YS5sZW5ndGgsIHRydWUpKTsKIAogICAgIHNpemVfdCBi
eXRlc1dyaXR0ZW47Ci0gICAgc3RhdHVzID0gQ0NDcnlwdG9yVXBkYXRlKGNyeXB0b3IsIGRhdGEu
Zmlyc3QsIGRhdGEuc2Vjb25kLCByZXN1bHQuZGF0YSgpLCByZXN1bHQuc2l6ZSgpLCAmYnl0ZXNX
cml0dGVuKTsKKyAgICBzdGF0dXMgPSBDQ0NyeXB0b3JVcGRhdGUoY3J5cHRvciwgZGF0YS5kYXRh
LCBkYXRhLmxlbmd0aCwgcmVzdWx0LmRhdGEoKSwgcmVzdWx0LnNpemUoKSwgJmJ5dGVzV3JpdHRl
bik7CiAgICAgaWYgKHN0YXR1cykgewogICAgICAgICBmYWlsdXJlQ2FsbGJhY2soKTsKICAgICAg
ICAgcmV0dXJuOwpAQCAtODIsMTIgKzgyLDEyIEBAIHN0YXRpYyB2b2lkIHRyYW5zZm9ybUFFU19D
QkMoQ0NPcGVyYXRpb24gb3BlcmF0aW9uLCBjb25zdCBDcnlwdG9BbGdvcml0aG1BZXNDYmNQCiAg
ICAgY2FsbGJhY2socmVzdWx0KTsKIH0KIAotdm9pZCBDcnlwdG9BbGdvcml0aG1BRVNfQ0JDOjpw
bGF0Zm9ybUVuY3J5cHQoY29uc3QgQ3J5cHRvQWxnb3JpdGhtQWVzQ2JjUGFyYW1zRGVwcmVjYXRl
ZCYgcGFyYW1ldGVycywgY29uc3QgQ3J5cHRvS2V5QUVTJiBrZXksIGNvbnN0IENyeXB0b09wZXJh
dGlvbkRhdGEmIGRhdGEsIFZlY3RvckNhbGxiYWNrJiYgY2FsbGJhY2ssIFZvaWRDYWxsYmFjayYm
IGZhaWx1cmVDYWxsYmFjaywgRXhjZXB0aW9uQ29kZSYpCit2b2lkIENyeXB0b0FsZ29yaXRobUFF
U19DQkM6OnBsYXRmb3JtRW5jcnlwdChjb25zdCBDcnlwdG9BbGdvcml0aG1BZXNDYmNQYXJhbXNE
ZXByZWNhdGVkJiBwYXJhbWV0ZXJzLCBjb25zdCBDcnlwdG9LZXlBRVMmIGtleSwgY29uc3QgQnVm
ZmVyU291cmNlJiBkYXRhLCBWZWN0b3JDYWxsYmFjayYmIGNhbGxiYWNrLCBWb2lkQ2FsbGJhY2sm
JiBmYWlsdXJlQ2FsbGJhY2ssIEV4Y2VwdGlvbkNvZGUmKQogewogICAgIHRyYW5zZm9ybUFFU19D
QkMoa0NDRW5jcnlwdCwgcGFyYW1ldGVycywga2V5LCBkYXRhLCBXVEZNb3ZlKGNhbGxiYWNrKSwg
V1RGTW92ZShmYWlsdXJlQ2FsbGJhY2spKTsKIH0KIAotdm9pZCBDcnlwdG9BbGdvcml0aG1BRVNf
Q0JDOjpwbGF0Zm9ybURlY3J5cHQoY29uc3QgQ3J5cHRvQWxnb3JpdGhtQWVzQ2JjUGFyYW1zRGVw
cmVjYXRlZCYgcGFyYW1ldGVycywgY29uc3QgQ3J5cHRvS2V5QUVTJiBrZXksIGNvbnN0IENyeXB0
b09wZXJhdGlvbkRhdGEmIGRhdGEsIFZlY3RvckNhbGxiYWNrJiYgY2FsbGJhY2ssIFZvaWRDYWxs
YmFjayYmIGZhaWx1cmVDYWxsYmFjaywgRXhjZXB0aW9uQ29kZSYpCit2b2lkIENyeXB0b0FsZ29y
aXRobUFFU19DQkM6OnBsYXRmb3JtRGVjcnlwdChjb25zdCBDcnlwdG9BbGdvcml0aG1BZXNDYmNQ
YXJhbXNEZXByZWNhdGVkJiBwYXJhbWV0ZXJzLCBjb25zdCBDcnlwdG9LZXlBRVMmIGtleSwgY29u
c3QgQnVmZmVyU291cmNlJiBkYXRhLCBWZWN0b3JDYWxsYmFjayYmIGNhbGxiYWNrLCBWb2lkQ2Fs
bGJhY2smJiBmYWlsdXJlQ2FsbGJhY2ssIEV4Y2VwdGlvbkNvZGUmKQogewogICAgIHRyYW5zZm9y
bUFFU19DQkMoa0NDRGVjcnlwdCwgcGFyYW1ldGVycywga2V5LCBkYXRhLCBXVEZNb3ZlKGNhbGxi
YWNrKSwgV1RGTW92ZShmYWlsdXJlQ2FsbGJhY2spKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2NyeXB0by9tYWMvQ3J5cHRvQWxnb3JpdGhtQUVTX0tXTWFjLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2NyeXB0by9tYWMvQ3J5cHRvQWxnb3JpdGhtQUVTX0tXTWFjLmNwcAppbmRleCA5ODU1
NTMwNDYzYjc3MGI1YWVhN2EzZGM4MjZlOWM3MTEyNGE5NDMzLi5mMzMyYjhiODM4ZjdlYTk1NzIy
MzU1YzZhYzU3YWNmNjc1ZGJmMTgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8v
bWFjL0NyeXB0b0FsZ29yaXRobUFFU19LV01hYy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3J5
cHRvL21hYy9DcnlwdG9BbGdvcml0aG1BRVNfS1dNYWMuY3BwCkBAIC0zNCwxOCArMzQsMTggQEAK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi12b2lkIENyeXB0b0FsZ29yaXRobUFFU19LVzo6cGxh
dGZvcm1FbmNyeXB0KGNvbnN0IENyeXB0b0tleUFFUyYga2V5LCBjb25zdCBDcnlwdG9PcGVyYXRp
b25EYXRhJiBkYXRhLCBWZWN0b3JDYWxsYmFjayYmIGNhbGxiYWNrLCBWb2lkQ2FsbGJhY2smJiBm
YWlsdXJlQ2FsbGJhY2ssIEV4Y2VwdGlvbkNvZGUmKQordm9pZCBDcnlwdG9BbGdvcml0aG1BRVNf
S1c6OnBsYXRmb3JtRW5jcnlwdChjb25zdCBDcnlwdG9LZXlBRVMmIGtleSwgY29uc3QgQnVmZmVy
U291cmNlJiBkYXRhLCBWZWN0b3JDYWxsYmFjayYmIGNhbGxiYWNrLCBWb2lkQ2FsbGJhY2smJiBm
YWlsdXJlQ2FsbGJhY2ssIEV4Y2VwdGlvbkNvZGUmKQogewotICAgIGlmIChkYXRhLnNlY29uZCAl
IDgpIHsKKyAgICBpZiAoZGF0YS5sZW5ndGggJSA4KSB7CiAgICAgICAgIC8vIFJGQyAzMzk0IHVz
ZXMgNjQtYml0IGJsb2NrcyBhcyBpbnB1dC4KICAgICAgICAgLy8gPHJkYXI6Ly9wcm9ibGVtLzE1
OTQ5OTkyPiBDb21tb25DcnlwdG8gZG9lc24ndCBkZXRlY3QgaW5jb3JyZWN0IGRhdGEgbGVuZ3Ro
LCBzaWxlbnRseSBwcm9kdWNpbmcgYSBiYWQgY3lwaGVydGV4dC4KICAgICAgICAgZmFpbHVyZUNh
bGxiYWNrKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBWZWN0b3I8dWludDhfdD4g
cmVzdWx0KENDU3ltbWV0cmljV3JhcHBlZFNpemUoa0NDV1JBUEFFUywgZGF0YS5zZWNvbmQpKTsK
KyAgICBWZWN0b3I8dWludDhfdD4gcmVzdWx0KENDU3ltbWV0cmljV3JhcHBlZFNpemUoa0NDV1JB
UEFFUywgZGF0YS5sZW5ndGgpKTsKICAgICBzaXplX3QgcmVzdWx0U2l6ZSA9IHJlc3VsdC5zaXpl
KCk7Ci0gICAgaW50IHN0YXR1cyA9IENDU3ltbWV0cmljS2V5V3JhcChrQ0NXUkFQQUVTLCBDQ3Jm
YzMzOTRfaXYsIENDcmZjMzM5NF9pdkxlbiwga2V5LmtleSgpLmRhdGEoKSwga2V5LmtleSgpLnNp
emUoKSwgZGF0YS5maXJzdCwgZGF0YS5zZWNvbmQsIHJlc3VsdC5kYXRhKCksICZyZXN1bHRTaXpl
KTsKKyAgICBpbnQgc3RhdHVzID0gQ0NTeW1tZXRyaWNLZXlXcmFwKGtDQ1dSQVBBRVMsIENDcmZj
MzM5NF9pdiwgQ0NyZmMzMzk0X2l2TGVuLCBrZXkua2V5KCkuZGF0YSgpLCBrZXkua2V5KCkuc2l6
ZSgpLCBkYXRhLmRhdGEsIGRhdGEubGVuZ3RoLCByZXN1bHQuZGF0YSgpLCAmcmVzdWx0U2l6ZSk7
CiAgICAgaWYgKHN0YXR1cykgewogICAgICAgICBmYWlsdXJlQ2FsbGJhY2soKTsKICAgICAgICAg
cmV0dXJuOwpAQCAtNTQsOSArNTQsOSBAQCB2b2lkIENyeXB0b0FsZ29yaXRobUFFU19LVzo6cGxh
dGZvcm1FbmNyeXB0KGNvbnN0IENyeXB0b0tleUFFUyYga2V5LCBjb25zdCBDcnlwdAogICAgIGNh
bGxiYWNrKHJlc3VsdCk7CiB9CiAKLXZvaWQgQ3J5cHRvQWxnb3JpdGhtQUVTX0tXOjpwbGF0Zm9y
bURlY3J5cHQoY29uc3QgQ3J5cHRvS2V5QUVTJiBrZXksIGNvbnN0IENyeXB0b09wZXJhdGlvbkRh
dGEmIGRhdGEsIFZlY3RvckNhbGxiYWNrJiYgY2FsbGJhY2ssIFZvaWRDYWxsYmFjayYmIGZhaWx1
cmVDYWxsYmFjaywgRXhjZXB0aW9uQ29kZSYpCit2b2lkIENyeXB0b0FsZ29yaXRobUFFU19LVzo6
cGxhdGZvcm1EZWNyeXB0KGNvbnN0IENyeXB0b0tleUFFUyYga2V5LCBjb25zdCBCdWZmZXJTb3Vy
Y2UmIGRhdGEsIFZlY3RvckNhbGxiYWNrJiYgY2FsbGJhY2ssIFZvaWRDYWxsYmFjayYmIGZhaWx1
cmVDYWxsYmFjaywgRXhjZXB0aW9uQ29kZSYpCiB7Ci0gICAgVmVjdG9yPHVpbnQ4X3Q+IHJlc3Vs
dChDQ1N5bW1ldHJpY1Vud3JhcHBlZFNpemUoa0NDV1JBUEFFUywgZGF0YS5zZWNvbmQpKTsKKyAg
ICBWZWN0b3I8dWludDhfdD4gcmVzdWx0KENDU3ltbWV0cmljVW53cmFwcGVkU2l6ZShrQ0NXUkFQ
QUVTLCBkYXRhLmxlbmd0aCkpOwogICAgIHNpemVfdCByZXN1bHRTaXplID0gcmVzdWx0LnNpemUo
KTsKIAogICAgIGlmIChyZXN1bHRTaXplICUgOCkgewpAQCAtNjQsNyArNjQsNyBAQCB2b2lkIENy
eXB0b0FsZ29yaXRobUFFU19LVzo6cGxhdGZvcm1EZWNyeXB0KGNvbnN0IENyeXB0b0tleUFFUyYg
a2V5LCBjb25zdCBDcnlwdAogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgaW50IHN0YXR1
cyA9IENDU3ltbWV0cmljS2V5VW53cmFwKGtDQ1dSQVBBRVMsIENDcmZjMzM5NF9pdiwgQ0NyZmMz
Mzk0X2l2TGVuLCBrZXkua2V5KCkuZGF0YSgpLCBrZXkua2V5KCkuc2l6ZSgpLCBkYXRhLmZpcnN0
LCBkYXRhLnNlY29uZCwgcmVzdWx0LmRhdGEoKSwgJnJlc3VsdFNpemUpOworICAgIGludCBzdGF0
dXMgPSBDQ1N5bW1ldHJpY0tleVVud3JhcChrQ0NXUkFQQUVTLCBDQ3JmYzMzOTRfaXYsIENDcmZj
MzM5NF9pdkxlbiwga2V5LmtleSgpLmRhdGEoKSwga2V5LmtleSgpLnNpemUoKSwgZGF0YS5kYXRh
LCBkYXRhLmxlbmd0aCwgcmVzdWx0LmRhdGEoKSwgJnJlc3VsdFNpemUpOwogICAgIGlmIChzdGF0
dXMpIHsKICAgICAgICAgZmFpbHVyZUNhbGxiYWNrKCk7CiAgICAgICAgIHJldHVybjsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9tYWMvQ3J5cHRvQWxnb3JpdGhtSE1BQ01hYy5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vbWFjL0NyeXB0b0FsZ29yaXRobUhNQUNNYWMuY3Bw
CmluZGV4IDI5NmE3OGFiNTdmZDNiOTViOTNkZWFiOGE2ZjcyNTA5ODY0YzY3NGQuLjZiNjRmOGZi
MjRkYzJiYTdmMjViOGEwMWE5Zjg4Y2M2MGQ4NTY3MDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2NyeXB0by9tYWMvQ3J5cHRvQWxnb3JpdGhtSE1BQ01hYy5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvY3J5cHRvL21hYy9DcnlwdG9BbGdvcml0aG1ITUFDTWFjLmNwcApAQCAtNTksNyArNTks
NyBAQCBzdGF0aWMgYm9vbCBnZXRDb21tb25DcnlwdG9ITUFDQWxnb3JpdGhtKENyeXB0b0FsZ29y
aXRobUlkZW50aWZpZXIgaGFzaEZ1bmN0aW9uLAogICAgIH0KIH0KIAotc3RhdGljIFZlY3Rvcjx1
aW50OF90PiBjYWxjdWxhdGVTaWduYXR1cmUoQ0NIbWFjQWxnb3JpdGhtIGFsZ29yaXRobSwgY29u
c3QgVmVjdG9yPHVpbnQ4X3Q+JiBrZXksIGNvbnN0IENyeXB0b09wZXJhdGlvbkRhdGEmIGRhdGEp
CitzdGF0aWMgVmVjdG9yPHVpbnQ4X3Q+IGNhbGN1bGF0ZVNpZ25hdHVyZShDQ0htYWNBbGdvcml0
aG0gYWxnb3JpdGhtLCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGtleSwgY29uc3QgQnVmZmVyU291
cmNlJiBkYXRhKQogewogICAgIHNpemVfdCBkaWdlc3RMZW5ndGg7CiAgICAgc3dpdGNoIChhbGdv
cml0aG0pIHsKQEAgLTg1LDExICs4NSwxMSBAQCBzdGF0aWMgVmVjdG9yPHVpbnQ4X3Q+IGNhbGN1
bGF0ZVNpZ25hdHVyZShDQ0htYWNBbGdvcml0aG0gYWxnb3JpdGhtLCBjb25zdCBWZWN0bwogCiAg
ICAgVmVjdG9yPHVpbnQ4X3Q+IHJlc3VsdChkaWdlc3RMZW5ndGgpOwogICAgIGNvbnN0IHZvaWQq
IGtleURhdGEgPSBrZXkuZGF0YSgpID8ga2V5LmRhdGEoKSA6IHJlaW50ZXJwcmV0X2Nhc3Q8Y29u
c3QgdWludDhfdCo+KCIiKTsgLy8gPHJkYXI6Ly9wcm9ibGVtLzE1NDY3NDI1PiBITUFDIGNyYXNo
ZXMgd2hlbiBrZXkgcG9pbnRlciBpcyBudWxsLgotICAgIENDSG1hYyhhbGdvcml0aG0sIGtleURh
dGEsIGtleS5zaXplKCksIGRhdGEuZmlyc3QsIGRhdGEuc2Vjb25kLCByZXN1bHQuZGF0YSgpKTsK
KyAgICBDQ0htYWMoYWxnb3JpdGhtLCBrZXlEYXRhLCBrZXkuc2l6ZSgpLCBkYXRhLmRhdGEsIGRh
dGEubGVuZ3RoLCByZXN1bHQuZGF0YSgpKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi12b2lk
IENyeXB0b0FsZ29yaXRobUhNQUM6OnBsYXRmb3JtU2lnbihjb25zdCBDcnlwdG9BbGdvcml0aG1I
bWFjUGFyYW1zRGVwcmVjYXRlZCYgcGFyYW1ldGVycywgY29uc3QgQ3J5cHRvS2V5SE1BQyYga2V5
LCBjb25zdCBDcnlwdG9PcGVyYXRpb25EYXRhJiBkYXRhLCBWZWN0b3JDYWxsYmFjayYmIGNhbGxi
YWNrLCBWb2lkQ2FsbGJhY2smJiwgRXhjZXB0aW9uQ29kZSYgZWMpCit2b2lkIENyeXB0b0FsZ29y
aXRobUhNQUM6OnBsYXRmb3JtU2lnbihjb25zdCBDcnlwdG9BbGdvcml0aG1IbWFjUGFyYW1zRGVw
cmVjYXRlZCYgcGFyYW1ldGVycywgY29uc3QgQ3J5cHRvS2V5SE1BQyYga2V5LCBjb25zdCBCdWZm
ZXJTb3VyY2UmIGRhdGEsIFZlY3RvckNhbGxiYWNrJiYgY2FsbGJhY2ssIFZvaWRDYWxsYmFjayYm
LCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBDQ0htYWNBbGdvcml0aG0gYWxnb3JpdGhtOwog
ICAgIGlmICghZ2V0Q29tbW9uQ3J5cHRvSE1BQ0FsZ29yaXRobShwYXJhbWV0ZXJzLmhhc2gsIGFs
Z29yaXRobSkpIHsKQEAgLTEwMiw3ICsxMDIsNyBAQCB2b2lkIENyeXB0b0FsZ29yaXRobUhNQUM6
OnBsYXRmb3JtU2lnbihjb25zdCBDcnlwdG9BbGdvcml0aG1IbWFjUGFyYW1zRGVwcmVjYXRlZAog
ICAgIGNhbGxiYWNrKHNpZ25hdHVyZSk7CiB9CiAKLXZvaWQgQ3J5cHRvQWxnb3JpdGhtSE1BQzo6
cGxhdGZvcm1WZXJpZnkoY29uc3QgQ3J5cHRvQWxnb3JpdGhtSG1hY1BhcmFtc0RlcHJlY2F0ZWQm
IHBhcmFtZXRlcnMsIGNvbnN0IENyeXB0b0tleUhNQUMmIGtleSwgY29uc3QgQ3J5cHRvT3BlcmF0
aW9uRGF0YSYgZXhwZWN0ZWRTaWduYXR1cmUsIGNvbnN0IENyeXB0b09wZXJhdGlvbkRhdGEmIGRh
dGEsIEJvb2xDYWxsYmFjayYmIGNhbGxiYWNrLCBWb2lkQ2FsbGJhY2smJiwgRXhjZXB0aW9uQ29k
ZSYgZWMpCit2b2lkIENyeXB0b0FsZ29yaXRobUhNQUM6OnBsYXRmb3JtVmVyaWZ5KGNvbnN0IENy
eXB0b0FsZ29yaXRobUhtYWNQYXJhbXNEZXByZWNhdGVkJiBwYXJhbWV0ZXJzLCBjb25zdCBDcnlw
dG9LZXlITUFDJiBrZXksIGNvbnN0IEJ1ZmZlclNvdXJjZSYgZXhwZWN0ZWRTaWduYXR1cmUsIGNv
bnN0IEJ1ZmZlclNvdXJjZSYgZGF0YSwgQm9vbENhbGxiYWNrJiYgY2FsbGJhY2ssIFZvaWRDYWxs
YmFjayYmLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBDQ0htYWNBbGdvcml0aG0gYWxnb3Jp
dGhtOwogICAgIGlmICghZ2V0Q29tbW9uQ3J5cHRvSE1BQ0FsZ29yaXRobShwYXJhbWV0ZXJzLmhh
c2gsIGFsZ29yaXRobSkpIHsKQEAgLTExMyw3ICsxMTMsNyBAQCB2b2lkIENyeXB0b0FsZ29yaXRo
bUhNQUM6OnBsYXRmb3JtVmVyaWZ5KGNvbnN0IENyeXB0b0FsZ29yaXRobUhtYWNQYXJhbXNEZXBy
ZWNhdAogICAgIFZlY3Rvcjx1aW50OF90PiBzaWduYXR1cmUgPSBjYWxjdWxhdGVTaWduYXR1cmUo
YWxnb3JpdGhtLCBrZXkua2V5KCksIGRhdGEpOwogCiAgICAgLy8gVXNpbmcgYSBjb25zdGFudCB0
aW1lIGNvbXBhcmlzb24gdG8gcHJldmVudCB0aW1pbmcgYXR0YWNrcy4KLSAgICBib29sIHJlc3Vs
dCA9IHNpZ25hdHVyZS5zaXplKCkgPT0gZXhwZWN0ZWRTaWduYXR1cmUuc2Vjb25kICYmICFjb25z
dGFudFRpbWVNZW1jbXAoc2lnbmF0dXJlLmRhdGEoKSwgZXhwZWN0ZWRTaWduYXR1cmUuZmlyc3Qs
IHNpZ25hdHVyZS5zaXplKCkpOworICAgIGJvb2wgcmVzdWx0ID0gc2lnbmF0dXJlLnNpemUoKSA9
PSBleHBlY3RlZFNpZ25hdHVyZS5sZW5ndGggJiYgIWNvbnN0YW50VGltZU1lbWNtcChzaWduYXR1
cmUuZGF0YSgpLCBleHBlY3RlZFNpZ25hdHVyZS5kYXRhLCBzaWduYXR1cmUuc2l6ZSgpKTsKIAog
ICAgIGNhbGxiYWNrKHJlc3VsdCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlw
dG8vbWFjL0NyeXB0b0FsZ29yaXRobVJTQUVTX1BLQ1MxX3YxXzVNYWMuY3BwIGIvU291cmNlL1dl
YkNvcmUvY3J5cHRvL21hYy9DcnlwdG9BbGdvcml0aG1SU0FFU19QS0NTMV92MV81TWFjLmNwcApp
bmRleCA3NzU5ODM0NDc4YTc4Yzg1ZjM0ODM1MDFhMDZiMWU2MDI1NmY4NGY4Li4xN2Q4ZjU2NDlh
ZDg4M2FmMTFhZDMxMWQxODBiMDY2OTM5MjVhOTI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9jcnlwdG8vbWFjL0NyeXB0b0FsZ29yaXRobVJTQUVTX1BLQ1MxX3YxXzVNYWMuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2NyeXB0by9tYWMvQ3J5cHRvQWxnb3JpdGhtUlNBRVNfUEtDUzFfdjFf
NU1hYy5jcHAKQEAgLTMzLDExICszMywxMSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXZv
aWQgQ3J5cHRvQWxnb3JpdGhtUlNBRVNfUEtDUzFfdjFfNTo6cGxhdGZvcm1FbmNyeXB0KGNvbnN0
IENyeXB0b0tleVJTQSYga2V5LCBjb25zdCBDcnlwdG9PcGVyYXRpb25EYXRhJiBkYXRhLCBWZWN0
b3JDYWxsYmFjayYmIGNhbGxiYWNrLCBWb2lkQ2FsbGJhY2smJiBmYWlsdXJlQ2FsbGJhY2ssIEV4
Y2VwdGlvbkNvZGUmKQordm9pZCBDcnlwdG9BbGdvcml0aG1SU0FFU19QS0NTMV92MV81OjpwbGF0
Zm9ybUVuY3J5cHQoY29uc3QgQ3J5cHRvS2V5UlNBJiBrZXksIGNvbnN0IEJ1ZmZlclNvdXJjZSYg
ZGF0YSwgVmVjdG9yQ2FsbGJhY2smJiBjYWxsYmFjaywgVm9pZENhbGxiYWNrJiYgZmFpbHVyZUNh
bGxiYWNrLCBFeGNlcHRpb25Db2RlJikKIHsKICAgICBWZWN0b3I8dWludDhfdD4gY2lwaGVyVGV4
dCgxMDI0KTsKICAgICBzaXplX3QgY2lwaGVyVGV4dExlbmd0aCA9IGNpcGhlclRleHQuc2l6ZSgp
OwotICAgIENDQ3J5cHRvclN0YXR1cyBzdGF0dXMgPSBDQ1JTQUNyeXB0b3JFbmNyeXB0KGtleS5w
bGF0Zm9ybUtleSgpLCBjY1BLQ1MxUGFkZGluZywgZGF0YS5maXJzdCwgZGF0YS5zZWNvbmQsIGNp
cGhlclRleHQuZGF0YSgpLCAmY2lwaGVyVGV4dExlbmd0aCwgMCwgMCwga0NDRGlnZXN0Tm9uZSk7
CisgICAgQ0NDcnlwdG9yU3RhdHVzIHN0YXR1cyA9IENDUlNBQ3J5cHRvckVuY3J5cHQoa2V5LnBs
YXRmb3JtS2V5KCksIGNjUEtDUzFQYWRkaW5nLCBkYXRhLmRhdGEsIGRhdGEubGVuZ3RoLCBjaXBo
ZXJUZXh0LmRhdGEoKSwgJmNpcGhlclRleHRMZW5ndGgsIDAsIDAsIGtDQ0RpZ2VzdE5vbmUpOwog
ICAgIGlmIChzdGF0dXMpIHsKICAgICAgICAgZmFpbHVyZUNhbGxiYWNrKCk7CiAgICAgICAgIHJl
dHVybjsKQEAgLTQ3LDExICs0NywxMSBAQCB2b2lkIENyeXB0b0FsZ29yaXRobVJTQUVTX1BLQ1Mx
X3YxXzU6OnBsYXRmb3JtRW5jcnlwdChjb25zdCBDcnlwdG9LZXlSU0EmIGtleSwgYwogICAgIGNh
bGxiYWNrKGNpcGhlclRleHQpOwogfQogCi12b2lkIENyeXB0b0FsZ29yaXRobVJTQUVTX1BLQ1Mx
X3YxXzU6OnBsYXRmb3JtRGVjcnlwdChjb25zdCBDcnlwdG9LZXlSU0EmIGtleSwgY29uc3QgQ3J5
cHRvT3BlcmF0aW9uRGF0YSYgZGF0YSwgVmVjdG9yQ2FsbGJhY2smJiBjYWxsYmFjaywgVm9pZENh
bGxiYWNrJiYgZmFpbHVyZUNhbGxiYWNrLCBFeGNlcHRpb25Db2RlJikKK3ZvaWQgQ3J5cHRvQWxn
b3JpdGhtUlNBRVNfUEtDUzFfdjFfNTo6cGxhdGZvcm1EZWNyeXB0KGNvbnN0IENyeXB0b0tleVJT
QSYga2V5LCBjb25zdCBCdWZmZXJTb3VyY2UmIGRhdGEsIFZlY3RvckNhbGxiYWNrJiYgY2FsbGJh
Y2ssIFZvaWRDYWxsYmFjayYmIGZhaWx1cmVDYWxsYmFjaywgRXhjZXB0aW9uQ29kZSYpCiB7CiAg
ICAgVmVjdG9yPHVpbnQ4X3Q+IHBsYWluVGV4dCgxMDI0KTsKICAgICBzaXplX3QgcGxhaW5UZXh0
TGVuZ3RoID0gcGxhaW5UZXh0LnNpemUoKTsKLSAgICBDQ0NyeXB0b3JTdGF0dXMgc3RhdHVzID0g
Q0NSU0FDcnlwdG9yRGVjcnlwdChrZXkucGxhdGZvcm1LZXkoKSwgY2NQS0NTMVBhZGRpbmcsIGRh
dGEuZmlyc3QsIGRhdGEuc2Vjb25kLCBwbGFpblRleHQuZGF0YSgpLCAmcGxhaW5UZXh0TGVuZ3Ro
LCAwLCAwLCBrQ0NEaWdlc3ROb25lKTsKKyAgICBDQ0NyeXB0b3JTdGF0dXMgc3RhdHVzID0gQ0NS
U0FDcnlwdG9yRGVjcnlwdChrZXkucGxhdGZvcm1LZXkoKSwgY2NQS0NTMVBhZGRpbmcsIGRhdGEu
ZGF0YSwgZGF0YS5sZW5ndGgsIHBsYWluVGV4dC5kYXRhKCksICZwbGFpblRleHRMZW5ndGgsIDAs
IDAsIGtDQ0RpZ2VzdE5vbmUpOwogICAgIGlmIChzdGF0dXMpIHsKICAgICAgICAgZmFpbHVyZUNh
bGxiYWNrKCk7CiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Ny
eXB0by9tYWMvQ3J5cHRvQWxnb3JpdGhtUlNBU1NBX1BLQ1MxX3YxXzVNYWMuY3BwIGIvU291cmNl
L1dlYkNvcmUvY3J5cHRvL21hYy9DcnlwdG9BbGdvcml0aG1SU0FTU0FfUEtDUzFfdjFfNU1hYy5j
cHAKaW5kZXggMGFiOGY0MmI4NWZiMTlmZjlhNDQ4NTc5NGQxODI3MmNjMDU2MTVjYy4uZjU3ZWJi
N2EwM2YxNGQxN2Y2ZWYwNTgwNTgyNmI1MzdjMmM1ODc2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvY3J5cHRvL21hYy9DcnlwdG9BbGdvcml0aG1SU0FTU0FfUEtDUzFfdjFfNU1hYy5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL21hYy9DcnlwdG9BbGdvcml0aG1SU0FTU0FfUEtD
UzFfdjFfNU1hYy5jcHAKQEAgLTU5LDcgKzU5LDcgQEAgaW5saW5lIGJvb2wgZ2V0Q3J5cHRvRGln
ZXN0QWxnb3JpdGhtKENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXIgaGFzaEZ1bmN0aW9uLCBDcnkK
ICAgICB9CiB9CiAKLXZvaWQgQ3J5cHRvQWxnb3JpdGhtUlNBU1NBX1BLQ1MxX3YxXzU6OnBsYXRm
b3JtU2lnbihjb25zdCBDcnlwdG9BbGdvcml0aG1Sc2FTc2FQYXJhbXNEZXByZWNhdGVkJiBwYXJh
bWV0ZXJzLCBjb25zdCBDcnlwdG9LZXlSU0EmIGtleSwgY29uc3QgQ3J5cHRvT3BlcmF0aW9uRGF0
YSYgZGF0YSwgVmVjdG9yQ2FsbGJhY2smJiBjYWxsYmFjaywgVm9pZENhbGxiYWNrJiYgZmFpbHVy
ZUNhbGxiYWNrLCBFeGNlcHRpb25Db2RlJiBlYykKK3ZvaWQgQ3J5cHRvQWxnb3JpdGhtUlNBU1NB
X1BLQ1MxX3YxXzU6OnBsYXRmb3JtU2lnbihjb25zdCBDcnlwdG9BbGdvcml0aG1Sc2FTc2FQYXJh
bXNEZXByZWNhdGVkJiBwYXJhbWV0ZXJzLCBjb25zdCBDcnlwdG9LZXlSU0EmIGtleSwgY29uc3Qg
QnVmZmVyU291cmNlJiBkYXRhLCBWZWN0b3JDYWxsYmFjayYmIGNhbGxiYWNrLCBWb2lkQ2FsbGJh
Y2smJiBmYWlsdXJlQ2FsbGJhY2ssIEV4Y2VwdGlvbkNvZGUmIGVjKQogewogICAgIENDRGlnZXN0
QWxnb3JpdGhtIGRpZ2VzdEFsZ29yaXRobTsKICAgICBpZiAoIWdldENvbW1vbkNyeXB0b0RpZ2Vz
dEFsZ29yaXRobShwYXJhbWV0ZXJzLmhhc2gsIGRpZ2VzdEFsZ29yaXRobSkpIHsKQEAgLTc5LDcg
Kzc5LDcgQEAgdm9pZCBDcnlwdG9BbGdvcml0aG1SU0FTU0FfUEtDUzFfdjFfNTo6cGxhdGZvcm1T
aWduKGNvbnN0IENyeXB0b0FsZ29yaXRobVJzYVNzYVAKICAgICAgICAgcmV0dXJuOwogICAgIH0K
IAotICAgIGRpZ2VzdC0+YWRkQnl0ZXMoZGF0YS5maXJzdCwgZGF0YS5zZWNvbmQpOworICAgIGRp
Z2VzdC0+YWRkQnl0ZXMoZGF0YS5kYXRhLCBkYXRhLmxlbmd0aCk7CiAKICAgICBWZWN0b3I8dWlu
dDhfdD4gZGlnZXN0RGF0YSA9IGRpZ2VzdC0+Y29tcHV0ZUhhc2goKTsKIApAQCAtOTYsNyArOTYs
NyBAQCB2b2lkIENyeXB0b0FsZ29yaXRobVJTQVNTQV9QS0NTMV92MV81OjpwbGF0Zm9ybVNpZ24o
Y29uc3QgQ3J5cHRvQWxnb3JpdGhtUnNhU3NhUAogICAgIGNhbGxiYWNrKHNpZ25hdHVyZSk7CiB9
CiAKLXZvaWQgQ3J5cHRvQWxnb3JpdGhtUlNBU1NBX1BLQ1MxX3YxXzU6OnBsYXRmb3JtVmVyaWZ5
KGNvbnN0IENyeXB0b0FsZ29yaXRobVJzYVNzYVBhcmFtc0RlcHJlY2F0ZWQmIHBhcmFtZXRlcnMs
IGNvbnN0IENyeXB0b0tleVJTQSYga2V5LCBjb25zdCBDcnlwdG9PcGVyYXRpb25EYXRhJiBzaWdu
YXR1cmUsIGNvbnN0IENyeXB0b09wZXJhdGlvbkRhdGEmIGRhdGEsIEJvb2xDYWxsYmFjayYmIGNh
bGxiYWNrLCBWb2lkQ2FsbGJhY2smJiBmYWlsdXJlQ2FsbGJhY2ssIEV4Y2VwdGlvbkNvZGUmIGVj
KQordm9pZCBDcnlwdG9BbGdvcml0aG1SU0FTU0FfUEtDUzFfdjFfNTo6cGxhdGZvcm1WZXJpZnko
Y29uc3QgQ3J5cHRvQWxnb3JpdGhtUnNhU3NhUGFyYW1zRGVwcmVjYXRlZCYgcGFyYW1ldGVycywg
Y29uc3QgQ3J5cHRvS2V5UlNBJiBrZXksIGNvbnN0IEJ1ZmZlclNvdXJjZSYgc2lnbmF0dXJlLCBj
b25zdCBCdWZmZXJTb3VyY2UmIGRhdGEsIEJvb2xDYWxsYmFjayYmIGNhbGxiYWNrLCBWb2lkQ2Fs
bGJhY2smJiBmYWlsdXJlQ2FsbGJhY2ssIEV4Y2VwdGlvbkNvZGUmIGVjKQogewogICAgIENDRGln
ZXN0QWxnb3JpdGhtIGRpZ2VzdEFsZ29yaXRobTsKICAgICBpZiAoIWdldENvbW1vbkNyeXB0b0Rp
Z2VzdEFsZ29yaXRobShwYXJhbWV0ZXJzLmhhc2gsIGRpZ2VzdEFsZ29yaXRobSkpIHsKQEAgLTEx
NiwxMSArMTE2LDExIEBAIHZvaWQgQ3J5cHRvQWxnb3JpdGhtUlNBU1NBX1BLQ1MxX3YxXzU6OnBs
YXRmb3JtVmVyaWZ5KGNvbnN0IENyeXB0b0FsZ29yaXRobVJzYVNzCiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAKLSAgICBkaWdlc3QtPmFkZEJ5dGVzKGRhdGEuZmlyc3QsIGRhdGEuc2Vjb25kKTsK
KyAgICBkaWdlc3QtPmFkZEJ5dGVzKGRhdGEuZGF0YSwgZGF0YS5sZW5ndGgpOwogCiAgICAgVmVj
dG9yPHVpbnQ4X3Q+IGRpZ2VzdERhdGEgPSBkaWdlc3QtPmNvbXB1dGVIYXNoKCk7CiAKLSAgICBD
Q0NyeXB0b3JTdGF0dXMgc3RhdHVzID0gQ0NSU0FDcnlwdG9yVmVyaWZ5KGtleS5wbGF0Zm9ybUtl
eSgpLCBjY1BLQ1MxUGFkZGluZywgZGlnZXN0RGF0YS5kYXRhKCksIGRpZ2VzdERhdGEuc2l6ZSgp
LCBkaWdlc3RBbGdvcml0aG0sIDAsIHNpZ25hdHVyZS5maXJzdCwgc2lnbmF0dXJlLnNlY29uZCk7
CisgICAgQ0NDcnlwdG9yU3RhdHVzIHN0YXR1cyA9IENDUlNBQ3J5cHRvclZlcmlmeShrZXkucGxh
dGZvcm1LZXkoKSwgY2NQS0NTMVBhZGRpbmcsIGRpZ2VzdERhdGEuZGF0YSgpLCBkaWdlc3REYXRh
LnNpemUoKSwgZGlnZXN0QWxnb3JpdGhtLCAwLCBzaWduYXR1cmUuZGF0YSwgc2lnbmF0dXJlLmxl
bmd0aCk7CiAgICAgaWYgKCFzdGF0dXMpCiAgICAgICAgIGNhbGxiYWNrKHRydWUpOwogICAgIGVs
c2UgaWYgKHN0YXR1cyA9PSBrQ0NOb3RWZXJpZmllZCB8fCBzdGF0dXMgPT0ga0NDRGVjb2RlRXJy
b3IpIC8vIDxyZGFyOi8vcHJvYmxlbS8xNTQ2NDk4Mj4gQ0NSU0FDcnlwdG9yVmVyaWZ5IHJldHVy
bnMga0NDRGVjb2RlRXJyb3IgaW5zdGVhZCBvZiBrQ0NOb3RWZXJpZmllZCBzb21ldGltZXMKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9tYWMvQ3J5cHRvQWxnb3JpdGhtUlNBX09B
RVBNYWMuY3BwIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL21hYy9DcnlwdG9BbGdvcml0aG1SU0Ff
T0FFUE1hYy5jcHAKaW5kZXggY2YyODFjYTg3NjAyMjRlZDA3YTdlNGEwMGFmZjFmZGQ4NTdjNWQw
Ni4uNTMwYWJjNzA1NTA5N2I3NTcxZWZjNmM4NDk1YzBkOTBjMGE2MjViMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvY3J5cHRvL21hYy9DcnlwdG9BbGdvcml0aG1SU0FfT0FFUE1hYy5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL21hYy9DcnlwdG9BbGdvcml0aG1SU0FfT0FFUE1h
Yy5jcHAKQEAgLTM1LDcgKzM1LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi12b2lkIENy
eXB0b0FsZ29yaXRobVJTQV9PQUVQOjpwbGF0Zm9ybUVuY3J5cHQoY29uc3QgQ3J5cHRvQWxnb3Jp
dGhtUnNhT2FlcFBhcmFtc0RlcHJlY2F0ZWQmIHBhcmFtZXRlcnMsIGNvbnN0IENyeXB0b0tleVJT
QSYga2V5LCBjb25zdCBDcnlwdG9PcGVyYXRpb25EYXRhJiBkYXRhLCBWZWN0b3JDYWxsYmFjayYm
IGNhbGxiYWNrLCBWb2lkQ2FsbGJhY2smJiBmYWlsdXJlQ2FsbGJhY2ssIEV4Y2VwdGlvbkNvZGUm
IGVjKQordm9pZCBDcnlwdG9BbGdvcml0aG1SU0FfT0FFUDo6cGxhdGZvcm1FbmNyeXB0KGNvbnN0
IENyeXB0b0FsZ29yaXRobVJzYU9hZXBQYXJhbXNEZXByZWNhdGVkJiBwYXJhbWV0ZXJzLCBjb25z
dCBDcnlwdG9LZXlSU0EmIGtleSwgY29uc3QgQnVmZmVyU291cmNlJiBkYXRhLCBWZWN0b3JDYWxs
YmFjayYmIGNhbGxiYWNrLCBWb2lkQ2FsbGJhY2smJiBmYWlsdXJlQ2FsbGJhY2ssIEV4Y2VwdGlv
bkNvZGUmIGVjKQogewogICAgIENDRGlnZXN0QWxnb3JpdGhtIGRpZ2VzdEFsZ29yaXRobTsKICAg
ICBpZiAoIWdldENvbW1vbkNyeXB0b0RpZ2VzdEFsZ29yaXRobShwYXJhbWV0ZXJzLmhhc2gsIGRp
Z2VzdEFsZ29yaXRobSkpIHsKQEAgLTQ2LDcgKzQ2LDcgQEAgdm9pZCBDcnlwdG9BbGdvcml0aG1S
U0FfT0FFUDo6cGxhdGZvcm1FbmNyeXB0KGNvbnN0IENyeXB0b0FsZ29yaXRobVJzYU9hZXBQYXJh
bXMKICAgICBWZWN0b3I8dWludDhfdD4gY2lwaGVyVGV4dCgxMDI0KTsKICAgICBzaXplX3QgY2lw
aGVyVGV4dExlbmd0aCA9IGNpcGhlclRleHQuc2l6ZSgpOwogICAgIEFTU0VSVChwYXJhbWV0ZXJz
Lmhhc0xhYmVsIHx8IHBhcmFtZXRlcnMubGFiZWwuaXNFbXB0eSgpKTsKLSAgICBDQ0NyeXB0b3JT
dGF0dXMgc3RhdHVzID0gQ0NSU0FDcnlwdG9yRW5jcnlwdChrZXkucGxhdGZvcm1LZXkoKSwgY2NP
QUVQUGFkZGluZywgZGF0YS5maXJzdCwgZGF0YS5zZWNvbmQsIGNpcGhlclRleHQuZGF0YSgpLCAm
Y2lwaGVyVGV4dExlbmd0aCwgcGFyYW1ldGVycy5sYWJlbC5kYXRhKCksIHBhcmFtZXRlcnMubGFi
ZWwuc2l6ZSgpLCBkaWdlc3RBbGdvcml0aG0pOworICAgIENDQ3J5cHRvclN0YXR1cyBzdGF0dXMg
PSBDQ1JTQUNyeXB0b3JFbmNyeXB0KGtleS5wbGF0Zm9ybUtleSgpLCBjY09BRVBQYWRkaW5nLCBk
YXRhLmRhdGEsIGRhdGEubGVuZ3RoLCBjaXBoZXJUZXh0LmRhdGEoKSwgJmNpcGhlclRleHRMZW5n
dGgsIHBhcmFtZXRlcnMubGFiZWwuZGF0YSgpLCBwYXJhbWV0ZXJzLmxhYmVsLnNpemUoKSwgZGln
ZXN0QWxnb3JpdGhtKTsKICAgICBpZiAoc3RhdHVzKSB7CiAgICAgICAgIGZhaWx1cmVDYWxsYmFj
aygpOwogICAgICAgICByZXR1cm47CkBAIC01Niw3ICs1Niw3IEBAIHZvaWQgQ3J5cHRvQWxnb3Jp
dGhtUlNBX09BRVA6OnBsYXRmb3JtRW5jcnlwdChjb25zdCBDcnlwdG9BbGdvcml0aG1Sc2FPYWVw
UGFyYW1zCiAgICAgY2FsbGJhY2soY2lwaGVyVGV4dCk7CiB9CiAKLXZvaWQgQ3J5cHRvQWxnb3Jp
dGhtUlNBX09BRVA6OnBsYXRmb3JtRGVjcnlwdChjb25zdCBDcnlwdG9BbGdvcml0aG1Sc2FPYWVw
UGFyYW1zRGVwcmVjYXRlZCYgcGFyYW1ldGVycywgY29uc3QgQ3J5cHRvS2V5UlNBJiBrZXksIGNv
bnN0IENyeXB0b09wZXJhdGlvbkRhdGEmIGRhdGEsIFZlY3RvckNhbGxiYWNrJiYgY2FsbGJhY2ss
IFZvaWRDYWxsYmFjayYmIGZhaWx1cmVDYWxsYmFjaywgRXhjZXB0aW9uQ29kZSYgZWMpCit2b2lk
IENyeXB0b0FsZ29yaXRobVJTQV9PQUVQOjpwbGF0Zm9ybURlY3J5cHQoY29uc3QgQ3J5cHRvQWxn
b3JpdGhtUnNhT2FlcFBhcmFtc0RlcHJlY2F0ZWQmIHBhcmFtZXRlcnMsIGNvbnN0IENyeXB0b0tl
eVJTQSYga2V5LCBjb25zdCBCdWZmZXJTb3VyY2UmIGRhdGEsIFZlY3RvckNhbGxiYWNrJiYgY2Fs
bGJhY2ssIFZvaWRDYWxsYmFjayYmIGZhaWx1cmVDYWxsYmFjaywgRXhjZXB0aW9uQ29kZSYgZWMp
CiB7CiAgICAgQ0NEaWdlc3RBbGdvcml0aG0gZGlnZXN0QWxnb3JpdGhtOwogICAgIGlmICghZ2V0
Q29tbW9uQ3J5cHRvRGlnZXN0QWxnb3JpdGhtKHBhcmFtZXRlcnMuaGFzaCwgZGlnZXN0QWxnb3Jp
dGhtKSkgewpAQCAtNjYsNyArNjYsNyBAQCB2b2lkIENyeXB0b0FsZ29yaXRobVJTQV9PQUVQOjpw
bGF0Zm9ybURlY3J5cHQoY29uc3QgQ3J5cHRvQWxnb3JpdGhtUnNhT2FlcFBhcmFtcwogCiAgICAg
VmVjdG9yPHVpbnQ4X3Q+IHBsYWluVGV4dCgxMDI0KTsKICAgICBzaXplX3QgcGxhaW5UZXh0TGVu
Z3RoID0gcGxhaW5UZXh0LnNpemUoKTsKLSAgICBDQ0NyeXB0b3JTdGF0dXMgc3RhdHVzID0gQ0NS
U0FDcnlwdG9yRGVjcnlwdChrZXkucGxhdGZvcm1LZXkoKSwgY2NPQUVQUGFkZGluZywgZGF0YS5m
aXJzdCwgZGF0YS5zZWNvbmQsIHBsYWluVGV4dC5kYXRhKCksICZwbGFpblRleHRMZW5ndGgsIHBh
cmFtZXRlcnMubGFiZWwuZGF0YSgpLCBwYXJhbWV0ZXJzLmxhYmVsLnNpemUoKSwgZGlnZXN0QWxn
b3JpdGhtKTsKKyAgICBDQ0NyeXB0b3JTdGF0dXMgc3RhdHVzID0gQ0NSU0FDcnlwdG9yRGVjcnlw
dChrZXkucGxhdGZvcm1LZXkoKSwgY2NPQUVQUGFkZGluZywgZGF0YS5kYXRhLCBkYXRhLmxlbmd0
aCwgcGxhaW5UZXh0LmRhdGEoKSwgJnBsYWluVGV4dExlbmd0aCwgcGFyYW1ldGVycy5sYWJlbC5k
YXRhKCksIHBhcmFtZXRlcnMubGFiZWwuc2l6ZSgpLCBkaWdlc3RBbGdvcml0aG0pOwogICAgIGlm
IChzdGF0dXMpIHsKICAgICAgICAgZmFpbHVyZUNhbGxiYWNrKCk7CiAgICAgICAgIHJldHVybjsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>291833</attachid>
            <date>2016-10-17 10:57:07 -0700</date>
            <delta_ts>2016-10-17 11:25:33 -0700</delta_ts>
            <desc>WIP</desc>
            <filename>bug-163541-20161017195332.patch</filename>
            <type>text/plain</type>
            <size>119571</size>
            <attacher name="Zan Dobersek">zan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA3NDA4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTJkZGU1OTBmYTY0MDdk
NzRhNjgzNWIxODMwZGM0MGM2OGI4NGIzYS4uNTE5YjA5NWI0MjE3NzFhN2MyM2Q4ZDhhOTg2ZTVj
NzRiMzg2OWE0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzMyBAQAorMjAxNi0xMC0xNyAgWmFu
IERvYmVyc2VrICA8emRvYmVyc2VrQGlnYWxpYS5jb20+CisKKyAgICAgICAgW1dlYklETF0gU3Vw
cG9ydCBCdWZmZXJTb3VyY2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE2MzU0MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIE5vIG5ldyB0ZXN0cyAoT09QUyEpLgorCisgICAgICAgICogTW9kdWxlcy9tZWRp
YXNvdXJjZS9Tb3VyY2VCdWZmZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVy
OjphcHBlbmRCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyOjphcHBlbmRC
dWZmZXJJbnRlcm5hbCk6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXNvdXJjZS9Tb3VyY2VCdWZm
ZXIuaDoKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc291cmNlL1NvdXJjZUJ1ZmZlci5pZGw6Cisg
ICAgICAgICogYmluZGluZ3MvZ2VuZXJpYy9JRExUeXBlcy5oOgorICAgICAgICAqIGJpbmRpbmdz
L2pzL0J1ZmZlclNvdXJjZS5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxn
b3JpdGhtcy9DcnlwdG9BbGdvcml0aG1TSEExLmguCisgICAgICAgICogYmluZGluZ3MvanMvSlNE
T01CaW5kaW5nLmg6CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01Db252ZXJ0Lmg6CisgICAg
ICAgIChXZWJDb3JlOjpDb252ZXJ0ZXI8SURMQnVmZmVyU291cmNlPjo6Y29udmVydCk6CisgICAg
ICAgICogYmluZGluZ3MvanMvSlNXZWJLaXRTdWJ0bGVDcnlwdG9DdXN0b20uY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SlNXZWJLaXRTdWJ0bGVDcnlwdG86OmVuY3J5cHQpOgorICAgICAgICAoV2Vi
Q29yZTo6SlNXZWJLaXRTdWJ0bGVDcnlwdG86OmRlY3J5cHQpOgorICAgICAgICAoV2ViQ29yZTo6
SlNXZWJLaXRTdWJ0bGVDcnlwdG86OnNpZ24pOgorICAgICAgICAoV2ViQ29yZTo6SlNXZWJLaXRT
dWJ0bGVDcnlwdG86OnZlcmlmeSk6CisgICAgICAgIChXZWJDb3JlOjpKU1dlYktpdFN1YnRsZUNy
eXB0bzo6ZGlnZXN0KToKKyAgICAgICAgKFdlYkNvcmU6OmltcG9ydEtleSk6CisgICAgICAgIChX
ZWJDb3JlOjpKU1dlYktpdFN1YnRsZUNyeXB0bzo6aW1wb3J0S2V5KToKKyAgICAgICAgKFdlYkNv
cmU6OkpTV2ViS2l0U3VidGxlQ3J5cHRvOjp3cmFwS2V5KToKKyAgICAgICAgKFdlYkNvcmU6OkpT
V2ViS2l0U3VidGxlQ3J5cHRvOjp1bndyYXBLZXkpOgorICAgICAgICAqIGJpbmRpbmdzL3Njcmlw
dHMvQ29kZUdlbmVyYXRvci5wbToKKyAgICAgICAgKFNraXBJbmNsdWRlSGVhZGVyKToKKyAgICAg
ICAgKElzQnVmZmVyU291cmNlVHlwZSk6CisgICAgICAgIChJc1dyYXBwZXJUeXBlKToKKyAgICAg
ICAgKiBiaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbToKKyAgICAgICAgKEFkZENs
YXNzRm9yd2FyZElmTmVlZGVkKToKKyAgICAgICAgKEdldEJhc2VJRExUeXBlKToKKyAgICAgICAg
KElzSGFuZGxlZEJ5RE9NQ29udmVydCk6CisgICAgICAgICogY3J5cHRvL0NyeXB0b0FsZ29yaXRo
bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9BbGdvcml0aG06OmVuY3J5cHQpOgorICAg
ICAgICAoV2ViQ29yZTo6Q3J5cHRvQWxnb3JpdGhtOjpkZWNyeXB0KToKKyAgICAgICAgKFdlYkNv
cmU6OkNyeXB0b0FsZ29yaXRobTo6c2lnbik6CisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9BbGdv
cml0aG06OnZlcmlmeSk6CisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9BbGdvcml0aG06OmRpZ2Vz
dCk6CisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9BbGdvcml0aG06OmVuY3J5cHRGb3JXcmFwS2V5
KToKKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0FsZ29yaXRobTo6ZGVjcnlwdEZvclVud3JhcEtl
eSk6CisgICAgICAgICogY3J5cHRvL0NyeXB0b0FsZ29yaXRobS5oOgorICAgICAgICAqIGNyeXB0
by9DcnlwdG9LZXlTZXJpYWxpemF0aW9uLmg6CisgICAgICAgICogY3J5cHRvL1dlYktpdFN1YnRs
ZUNyeXB0by5pZGw6CisgICAgICAgICogY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGht
QUVTX0NCQy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9BbGdvcml0aG1BRVNfQ0JDOjpl
bmNyeXB0KToKKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0FsZ29yaXRobUFFU19DQkM6OmRlY3J5
cHQpOgorICAgICAgICAqIGNyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobUFFU19DQkMu
aDoKKyAgICAgICAgKiBjcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1BRVNfS1cuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvQWxnb3JpdGhtQUVTX0tXOjplbmNyeXB0Rm9yV3Jh
cEtleSk6CisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9BbGdvcml0aG1BRVNfS1c6OmRlY3J5cHRG
b3JVbndyYXBLZXkpOgorICAgICAgICAqIGNyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRo
bUFFU19LVy5oOgorICAgICAgICAqIGNyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobUhN
QUMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvQWxnb3JpdGhtSE1BQzo6c2lnbik6Cisg
ICAgICAgIChXZWJDb3JlOjpDcnlwdG9BbGdvcml0aG1ITUFDOjp2ZXJpZnkpOgorICAgICAgICAq
IGNyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobUhNQUMuaDoKKyAgICAgICAgKiBjcnlw
dG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1SU0FFU19QS0NTMV92MV81LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkNyeXB0b0FsZ29yaXRobVJTQUVTX1BLQ1MxX3YxXzU6OmVuY3J5cHQpOgor
ICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvQWxnb3JpdGhtUlNBRVNfUEtDUzFfdjFfNTo6ZGVjcnlw
dCk6CisgICAgICAgICogY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtUlNBRVNfUEtD
UzFfdjFfNS5oOgorICAgICAgICAqIGNyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVJT
QVNTQV9QS0NTMV92MV81LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0FsZ29yaXRobVJT
QVNTQV9QS0NTMV92MV81OjpzaWduKToKKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0FsZ29yaXRo
bVJTQVNTQV9QS0NTMV92MV81Ojp2ZXJpZnkpOgorICAgICAgICAqIGNyeXB0by9hbGdvcml0aG1z
L0NyeXB0b0FsZ29yaXRobVJTQVNTQV9QS0NTMV92MV81Lmg6CisgICAgICAgICogY3J5cHRvL2Fs
Z29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtUlNBX09BRVAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Q3J5cHRvQWxnb3JpdGhtUlNBX09BRVA6OmVuY3J5cHQpOgorICAgICAgICAoV2ViQ29yZTo6Q3J5
cHRvQWxnb3JpdGhtUlNBX09BRVA6OmRlY3J5cHQpOgorICAgICAgICAqIGNyeXB0by9hbGdvcml0
aG1zL0NyeXB0b0FsZ29yaXRobVJTQV9PQUVQLmg6CisgICAgICAgICogY3J5cHRvL2FsZ29yaXRo
bXMvQ3J5cHRvQWxnb3JpdGhtU0hBMS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9BbGdv
cml0aG1TSEExOjpkaWdlc3QpOgorICAgICAgICAqIGNyeXB0by9hbGdvcml0aG1zL0NyeXB0b0Fs
Z29yaXRobVNIQTEuaDoKKyAgICAgICAgKiBjcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0
aG1TSEEyMjQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvQWxnb3JpdGhtU0hBMjI0Ojpk
aWdlc3QpOgorICAgICAgICAqIGNyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVNIQTIy
NC5oOgorICAgICAgICAqIGNyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVNIQTI1Ni5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9BbGdvcml0aG1TSEEyNTY6OmRpZ2VzdCk6Cisg
ICAgICAgICogY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtU0hBMjU2Lmg6CisgICAg
ICAgICogY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtU0hBMzg0LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkNyeXB0b0FsZ29yaXRobVNIQTM4NDo6ZGlnZXN0KToKKyAgICAgICAgKiBj
cnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1TSEEzODQuaDoKKyAgICAgICAgKiBjcnlw
dG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1TSEE1MTIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Q3J5cHRvQWxnb3JpdGhtU0hBNTEyOjpkaWdlc3QpOgorICAgICAgICAqIGNyeXB0by9hbGdv
cml0aG1zL0NyeXB0b0FsZ29yaXRobVNIQTUxMi5oOgorICAgICAgICAqIGNyeXB0by9nbnV0bHMv
Q3J5cHRvQWxnb3JpdGhtQUVTX0NCQ0dudVRMUy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDcnlw
dG9BbGdvcml0aG1BRVNfQ0JDOjpwbGF0Zm9ybUVuY3J5cHQpOgorICAgICAgICAoV2ViQ29yZTo6
Q3J5cHRvQWxnb3JpdGhtQUVTX0NCQzo6cGxhdGZvcm1EZWNyeXB0KToKKyAgICAgICAgKiBjcnlw
dG8vZ251dGxzL0NyeXB0b0FsZ29yaXRobUFFU19LV0dudVRMUy5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpDcnlwdG9BbGdvcml0aG1BRVNfS1c6OnBsYXRmb3JtRW5jcnlwdCk6CisgICAgICAgIChX
ZWJDb3JlOjpDcnlwdG9BbGdvcml0aG1BRVNfS1c6OnBsYXRmb3JtRGVjcnlwdCk6CisgICAgICAg
ICogY3J5cHRvL2dudXRscy9DcnlwdG9BbGdvcml0aG1ITUFDR251VExTLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OmNhbGN1bGF0ZVNpZ25hdHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9B
bGdvcml0aG1ITUFDOjpwbGF0Zm9ybVNpZ24pOgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvQWxn
b3JpdGhtSE1BQzo6cGxhdGZvcm1WZXJpZnkpOgorICAgICAgICAqIGNyeXB0by9nbnV0bHMvQ3J5
cHRvQWxnb3JpdGhtUlNBRVNfUEtDUzFfdjFfNUdudVRMUy5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpDcnlwdG9BbGdvcml0aG1SU0FFU19QS0NTMV92MV81OjpwbGF0Zm9ybUVuY3J5cHQpOgorICAg
ICAgICAoV2ViQ29yZTo6Q3J5cHRvQWxnb3JpdGhtUlNBRVNfUEtDUzFfdjFfNTo6cGxhdGZvcm1E
ZWNyeXB0KToKKyAgICAgICAgKiBjcnlwdG8vZ251dGxzL0NyeXB0b0FsZ29yaXRobVJTQVNTQV9Q
S0NTMV92MV81R251VExTLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0FsZ29yaXRobVJT
QVNTQV9QS0NTMV92MV81OjpwbGF0Zm9ybVNpZ24pOgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRv
QWxnb3JpdGhtUlNBU1NBX1BLQ1MxX3YxXzU6OnBsYXRmb3JtVmVyaWZ5KToKKyAgICAgICAgKiBj
cnlwdG8vZ251dGxzL0NyeXB0b0FsZ29yaXRobVJTQV9PQUVQR251VExTLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkNyeXB0b0FsZ29yaXRobVJTQV9PQUVQOjpwbGF0Zm9ybUVuY3J5cHQpOgorICAg
ICAgICAoV2ViQ29yZTo6Q3J5cHRvQWxnb3JpdGhtUlNBX09BRVA6OnBsYXRmb3JtRGVjcnlwdCk6
CisgICAgICAgICogY3J5cHRvL2tleXMvQ3J5cHRvS2V5U2VyaWFsaXphdGlvblJhdy5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpDcnlwdG9LZXlTZXJpYWxpemF0aW9uUmF3OjpDcnlwdG9LZXlTZXJp
YWxpemF0aW9uUmF3KToKKyAgICAgICAgKiBjcnlwdG8va2V5cy9DcnlwdG9LZXlTZXJpYWxpemF0
aW9uUmF3Lmg6CisgICAgICAgICogY3J5cHRvL21hYy9DcnlwdG9BbGdvcml0aG1BRVNfQ0JDTWFj
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnRyYW5zZm9ybUFFU19DQkMpOgorICAgICAgICAoV2Vi
Q29yZTo6Q3J5cHRvQWxnb3JpdGhtQUVTX0NCQzo6cGxhdGZvcm1FbmNyeXB0KToKKyAgICAgICAg
KFdlYkNvcmU6OkNyeXB0b0FsZ29yaXRobUFFU19DQkM6OnBsYXRmb3JtRGVjcnlwdCk6CisgICAg
ICAgICogY3J5cHRvL21hYy9DcnlwdG9BbGdvcml0aG1BRVNfS1dNYWMuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Q3J5cHRvQWxnb3JpdGhtQUVTX0tXOjpwbGF0Zm9ybUVuY3J5cHQpOgorICAgICAg
ICAoV2ViQ29yZTo6Q3J5cHRvQWxnb3JpdGhtQUVTX0tXOjpwbGF0Zm9ybURlY3J5cHQpOgorICAg
ICAgICAqIGNyeXB0by9tYWMvQ3J5cHRvQWxnb3JpdGhtSE1BQ01hYy5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpjYWxjdWxhdGVTaWduYXR1cmUpOgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvQWxn
b3JpdGhtSE1BQzo6cGxhdGZvcm1TaWduKToKKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0FsZ29y
aXRobUhNQUM6OnBsYXRmb3JtVmVyaWZ5KToKKyAgICAgICAgKiBjcnlwdG8vbWFjL0NyeXB0b0Fs
Z29yaXRobVJTQUVTX1BLQ1MxX3YxXzVNYWMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRv
QWxnb3JpdGhtUlNBRVNfUEtDUzFfdjFfNTo6cGxhdGZvcm1FbmNyeXB0KToKKyAgICAgICAgKFdl
YkNvcmU6OkNyeXB0b0FsZ29yaXRobVJTQUVTX1BLQ1MxX3YxXzU6OnBsYXRmb3JtRGVjcnlwdCk6
CisgICAgICAgICogY3J5cHRvL21hYy9DcnlwdG9BbGdvcml0aG1SU0FTU0FfUEtDUzFfdjFfNU1h
Yy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9BbGdvcml0aG1SU0FTU0FfUEtDUzFfdjFf
NTo6cGxhdGZvcm1TaWduKToKKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0FsZ29yaXRobVJTQVNT
QV9QS0NTMV92MV81OjpwbGF0Zm9ybVZlcmlmeSk6CisgICAgICAgICogY3J5cHRvL21hYy9Dcnlw
dG9BbGdvcml0aG1SU0FfT0FFUE1hYy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9BbGdv
cml0aG1SU0FfT0FFUDo6cGxhdGZvcm1FbmNyeXB0KToKKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0
b0FsZ29yaXRobVJTQV9PQUVQOjpwbGF0Zm9ybURlY3J5cHQpOgorCiAyMDE2LTEwLTE3ICBLb25z
dGFudGluIFRva2FyZXYgIDxhbm51bGVuQHlhbmRleC5ydT4KIAogICAgICAgICBFbGVtaW5hdGUg
Y29kZSBkdXBsaWNhdGlvbiBiZXR3ZWVuIFJlc291cmNlUmVxdWVzdCBlbmNvZGluZy9kZWNvZGlu
ZyBpbXBsZW1lbnRhdGlvbnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMu
dHh0IGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggODNhYWY1Njc3NmUzMjUx
YjdlZGFiZDU1OGZkZTljNWNkMGViNjAyYi4uOTIxNTJiZTY5ZjQxZTg1YWIxZWJmYzhlNjhjYWY3
ZjI3OWYzNDM2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKKysr
IGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTEwODIsNyArMTA4Miw2IEBAIHNl
dChXZWJDb3JlX1NPVVJDRVMKICAgICBiaW5kaW5ncy9qcy9KU0NyeXB0b0tleUN1c3RvbS5jcHAK
ICAgICBiaW5kaW5ncy9qcy9KU0NyeXB0b0tleVBhaXJDdXN0b20uY3BwCiAgICAgYmluZGluZ3Mv
anMvSlNDcnlwdG9LZXlTZXJpYWxpemF0aW9uSldLLmNwcAotICAgIGJpbmRpbmdzL2pzL0pTQ3J5
cHRvT3BlcmF0aW9uRGF0YS5jcHAKICAgICBiaW5kaW5ncy9qcy9KU0N1c3RvbUVsZW1lbnRJbnRl
cmZhY2UuY3BwCiAgICAgYmluZGluZ3MvanMvSlNDdXN0b21FbGVtZW50UmVnaXN0cnlDdXN0b20u
Y3BwCiAgICAgYmluZGluZ3MvanMvSlNDdXN0b21FdmVudEN1c3RvbS5jcHAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvU291cmNlQnVmZmVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvU291cmNlQnVmZmVyLmNwcAppbmRleCAw
YmQxZDVkYzYwNWU5NTVjOGMwYmFjYWUxNDBhOGJlYWYwNWQ0YTBjLi42MWQ3NDcxY2YwOTdmMDEw
NzhmNmYxN2U0MWRlMWY1ODdjNzkzMWMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhc291cmNlL1NvdXJjZUJ1ZmZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXNvdXJjZS9Tb3VyY2VCdWZmZXIuY3BwCkBAIC0zNSw2ICszNSw3IEBACiAjaWYg
RU5BQkxFKE1FRElBX1NPVVJDRSkKIAogI2luY2x1ZGUgIkF1ZGlvVHJhY2tMaXN0LmgiCisjaW5j
bHVkZSAiQnVmZmVyU291cmNlLmgiCiAjaW5jbHVkZSAiRXZlbnQuaCIKICNpbmNsdWRlICJFdmVu
dE5hbWVzLmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZVBsYWNlaG9sZGVyLmgiCkBAIC0yMzEs
MTUgKzIzMiw5IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IFNvdXJjZUJ1ZmZlcjo6c2V0QXBwZW5kV2lu
ZG93RW5kKGRvdWJsZSBuZXdWYWx1ZSkKICAgICByZXR1cm4geyB9OwogfQogCi0KLUV4Y2VwdGlv
bk9yPHZvaWQ+IFNvdXJjZUJ1ZmZlcjo6YXBwZW5kQnVmZmVyKEFycmF5QnVmZmVyJiBkYXRhKQot
ewotICAgIHJldHVybiBhcHBlbmRCdWZmZXJJbnRlcm5hbChzdGF0aWNfY2FzdDx1bnNpZ25lZCBj
aGFyKj4oZGF0YS5kYXRhKCkpLCBkYXRhLmJ5dGVMZW5ndGgoKSk7Ci19Ci0KLUV4Y2VwdGlvbk9y
PHZvaWQ+IFNvdXJjZUJ1ZmZlcjo6YXBwZW5kQnVmZmVyKEFycmF5QnVmZmVyVmlldyYgZGF0YSkK
K0V4Y2VwdGlvbk9yPHZvaWQ+IFNvdXJjZUJ1ZmZlcjo6YXBwZW5kQnVmZmVyKGNvbnN0IEJ1ZmZl
clNvdXJjZSYgZGF0YSkKIHsKLSAgICByZXR1cm4gYXBwZW5kQnVmZmVySW50ZXJuYWwoc3RhdGlj
X2Nhc3Q8dW5zaWduZWQgY2hhcio+KGRhdGEuYmFzZUFkZHJlc3MoKSksIGRhdGEuYnl0ZUxlbmd0
aCgpKTsKKyAgICByZXR1cm4gYXBwZW5kQnVmZmVySW50ZXJuYWwoc3RhdGljX2Nhc3Q8Y29uc3Qg
dW5zaWduZWQgY2hhcio+KGRhdGEuZGF0YSksIGRhdGEubGVuZ3RoKTsKIH0KIAogdm9pZCBTb3Vy
Y2VCdWZmZXI6OnJlc2V0UGFyc2VyU3RhdGUoKQpAQCAtNDk2LDcgKzQ5MSw3IEBAIHZvaWQgU291
cmNlQnVmZmVyOjpzY2hlZHVsZUV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnROYW1lKQog
ICAgIG1fYXN5bmNFdmVudFF1ZXVlLmVucXVldWVFdmVudChXVEZNb3ZlKGV2ZW50KSk7CiB9CiAK
LUV4Y2VwdGlvbk9yPHZvaWQ+IFNvdXJjZUJ1ZmZlcjo6YXBwZW5kQnVmZmVySW50ZXJuYWwodW5z
aWduZWQgY2hhciogZGF0YSwgdW5zaWduZWQgc2l6ZSkKK0V4Y2VwdGlvbk9yPHZvaWQ+IFNvdXJj
ZUJ1ZmZlcjo6YXBwZW5kQnVmZmVySW50ZXJuYWwoY29uc3QgdW5zaWduZWQgY2hhciogZGF0YSwg
dW5zaWduZWQgc2l6ZSkKIHsKICAgICAvLyBTZWN0aW9uIDMuMiBhcHBlbmRCdWZmZXIoKQogICAg
IC8vIGh0dHBzOi8vZHZjcy53My5vcmcvaGcvaHRtbC1tZWRpYS9yYXctZmlsZS9kZWZhdWx0L21l
ZGlhLXNvdXJjZS9tZWRpYS1zb3VyY2UuaHRtbCN3aWRsLVNvdXJjZUJ1ZmZlci1hcHBlbmRCdWZm
ZXItdm9pZC1BcnJheUJ1ZmZlclZpZXctZGF0YQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tZWRpYXNvdXJjZS9Tb3VyY2VCdWZmZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbWVkaWFzb3VyY2UvU291cmNlQnVmZmVyLmgKaW5kZXggMWNkODU0M2M1N2VlMDNiMDcwMmFh
ZDg3OGE2YjhjMDZjNjhjZjQwZS4uMGNkZGYyODFmZmY3Y2JjMzNkMzIyNTFhYTNmY2Q4NzU0MWE2
MjBlOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9Tb3Vy
Y2VCdWZmZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL1NvdXJj
ZUJ1ZmZlci5oCkBAIC00Nyw2ICs0Nyw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNz
IEF1ZGlvVHJhY2tMaXN0OworY2xhc3MgQnVmZmVyU291cmNlOwogY2xhc3MgTWVkaWFTb3VyY2U7
CiBjbGFzcyBQbGF0Zm9ybVRpbWVSYW5nZXM7CiBjbGFzcyBUZXh0VHJhY2tMaXN0OwpAQCAtNzQs
OCArNzUsNyBAQCBwdWJsaWM6CiAgICAgZG91YmxlIGFwcGVuZFdpbmRvd0VuZCgpIGNvbnN0Owog
ICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IHNldEFwcGVuZFdpbmRvd0VuZChkb3VibGUpOwogCi0gICAg
RXhjZXB0aW9uT3I8dm9pZD4gYXBwZW5kQnVmZmVyKEFycmF5QnVmZmVyJik7Ci0gICAgRXhjZXB0
aW9uT3I8dm9pZD4gYXBwZW5kQnVmZmVyKEFycmF5QnVmZmVyVmlldyYpOworICAgIEV4Y2VwdGlv
bk9yPHZvaWQ+IGFwcGVuZEJ1ZmZlcihjb25zdCBCdWZmZXJTb3VyY2UmKTsKICAgICBFeGNlcHRp
b25Pcjx2b2lkPiBhYm9ydCgpOwogICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IHJlbW92ZShkb3VibGUg
c3RhcnQsIGRvdWJsZSBlbmQpOwogICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IHJlbW92ZShjb25zdCBN
ZWRpYVRpbWUmLCBjb25zdCBNZWRpYVRpbWUmKTsKQEAgLTE1MCw3ICsxNTAsNyBAQCBwcml2YXRl
OgogICAgIGJvb2wgaXNSZW1vdmVkKCkgY29uc3Q7CiAgICAgdm9pZCBzY2hlZHVsZUV2ZW50KGNv
bnN0IEF0b21pY1N0cmluZyYgZXZlbnROYW1lKTsKIAotICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IGFw
cGVuZEJ1ZmZlckludGVybmFsKHVuc2lnbmVkIGNoYXIqLCB1bnNpZ25lZCk7CisgICAgRXhjZXB0
aW9uT3I8dm9pZD4gYXBwZW5kQnVmZmVySW50ZXJuYWwoY29uc3QgdW5zaWduZWQgY2hhciosIHVu
c2lnbmVkKTsKICAgICB2b2lkIGFwcGVuZEJ1ZmZlclRpbWVyRmlyZWQoKTsKICAgICB2b2lkIHJl
c2V0UGFyc2VyU3RhdGUoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXNvdXJjZS9Tb3VyY2VCdWZmZXIuaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRp
YXNvdXJjZS9Tb3VyY2VCdWZmZXIuaWRsCmluZGV4IGNmZjFiYjVhY2U5ZTk5N2NlYzUxMzYwZmRh
ODc0ZTNlMGYwYjgwMjQuLjljODQ3YzcyYTk0NGIxNWNjMzY5MGI0NTQ4YTU0NmE0ZTBlMjBkZmEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvU291cmNlQnVm
ZmVyLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL1NvdXJjZUJ1
ZmZlci5pZGwKQEAgLTU3LDggKzU3LDcgQEAKICAgICBbU2V0dGVyTWF5VGhyb3dFeGNlcHRpb25d
IGF0dHJpYnV0ZSB1bnJlc3RyaWN0ZWQgZG91YmxlIGFwcGVuZFdpbmRvd0VuZDsKIAogICAgIC8v
IEFwcGVuZCBzZWdtZW50IGRhdGEuCi0gICAgW01heVRocm93RXhjZXB0aW9uXSB2b2lkIGFwcGVu
ZEJ1ZmZlcihBcnJheUJ1ZmZlciBkYXRhKTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHZvaWQg
YXBwZW5kQnVmZmVyKEFycmF5QnVmZmVyVmlldyBkYXRhKTsKKyAgICBbTWF5VGhyb3dFeGNlcHRp
b25dIHZvaWQgYXBwZW5kQnVmZmVyKEJ1ZmZlclNvdXJjZSBkYXRhKTsKIAogICAgIC8vIEFib3J0
IHRoZSBjdXJyZW50IHNlZ21lbnQgYXBwZW5kIHNlcXVlbmNlLgogICAgIFtNYXlUaHJvd0V4Y2Vw
dGlvbl0gdm9pZCBhYm9ydCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDRmMGVjNzdkMTQ5ZWJhYWI1NWFlMzU4N2E2MjNmZjI3
NTE3ZTc4MTYuLjFhYjhhZDFiOTQ4N2Q2NWNmOTQ0MzViYWE1OTljYzU2MWQzMGQzODcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagor
KysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAg
LTEyMzgsNiArMTIzOCw3IEBACiAJCTJERTcwMDIzMTkyRkU4MkEwMEIwOTc1QyAvKiBEaXNwbGF5
UmVmcmVzaE1vbml0b3JNYWMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDJERTcwMDIyMTkyRkU4MkEwMEIwOTc1QyAvKiBEaXNwbGF5UmVmcmVzaE1vbml0
b3JNYWMuaCAqLzsgfTsKIAkJMkRGNTEyQ0QxRDg3M0U0NzAwMUQ2NzgwIC8qIFJlcGxhY2VSYW5n
ZVdpdGhUZXh0Q29tbWFuZC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAyREY1MTJDQjFEODczRTQ3MDAxRDY3ODAgLyogUmVwbGFjZVJhbmdlV2l0aFRl
eHRDb21tYW5kLmNwcCAqLzsgfTsKIAkJMkRGNTEyQ0UxRDg3M0U0NzAwMUQ2NzgwIC8qIFJlcGxh
Y2VSYW5nZVdpdGhUZXh0Q29tbWFuZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMkRGNTEyQ0MxRDg3M0U0NzAwMUQ2NzgwIC8qIFJlcGxhY2VSYW5nZVdp
dGhUZXh0Q29tbWFuZC5oICovOyB9OworCQkyREZBNDg4RjFEQjU0MUQwMDAzNjJCOTkgLyogQnVm
ZmVyU291cmNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAyREZBNDg4RTFEQjU0MUMyMDAzNjJCOTkgLyogQnVmZmVyU291cmNlLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMkUwODg4RDQxMTQ4ODQ4QTAw
QUY0MjY1IC8qIEpTRE9NRm9ybURhdGEuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMkUwODg4RDIxMTQ4ODQ4QTAwQUY0MjY1IC8qIEpTRE9NRm9ybURh
dGEuY3BwICovOyB9OwogCQkyRTA4ODhENTExNDg4NDhBMDBBRjQyNjUgLyogSlNET01Gb3JtRGF0
YS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkUwODg4
RDMxMTQ4ODQ4QTAwQUY0MjY1IC8qIEpTRE9NRm9ybURhdGEuaCAqLzsgfTsKIAkJMkUxOTUxNkIx
QjY1OThEMjAwREY2RUVGIC8qIFdoZWVsRXZlbnREZWx0YUZpbHRlci5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRTE5NTE2QTFCNjU5OEQyMDBERjZF
RUYgLyogV2hlZWxFdmVudERlbHRhRmlsdGVyLmNwcCAqLzsgfTsKQEAgLTU5NTQsOCArNTk1NSw2
IEBACiAJCUUxMjVGODM2MTgyMkYxOEEwMEQ4NENEOSAvKiBDcnlwdG9LZXlITUFDLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMTI1RjgzNDE4MjJGMThB
MDBEODRDRDkgLyogQ3J5cHRvS2V5SE1BQy5oICovOyB9OwogCQlFMTI1RjgzODE4MjJGMUVCMDBE
ODRDRDkgLyogQ3J5cHRvQWxnb3JpdGhtSE1BQ01hYy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMTI1RjgzNzE4MjJGMUVCMDBEODRDRDkgLyogQ3J5
cHRvQWxnb3JpdGhtSE1BQ01hYy5jcHAgKi87IH07CiAJCUUxMjVGODNBMTgyNDEwNDgwMEQ4NENE
OSAvKiBDcnlwdG9BbGdvcml0aG1BZXNDYmNQYXJhbXNEZXByZWNhdGVkLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMTI1RjgzOTE4MjQxMDQ4MDBEODRD
RDkgLyogQ3J5cHRvQWxnb3JpdGhtQWVzQ2JjUGFyYW1zRGVwcmVjYXRlZC5oICovOyB9OwotCQlF
MTI1RjgzRDE4MjQxMUU3MDBEODRDRDkgLyogSlNDcnlwdG9PcGVyYXRpb25EYXRhLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxMjVGODNCMTgyNDEx
RTcwMEQ4NENEOSAvKiBKU0NyeXB0b09wZXJhdGlvbkRhdGEuY3BwICovOyB9OwotCQlFMTI1Rjgz
RTE4MjQxMUU3MDBEODRDRDkgLyogSlNDcnlwdG9PcGVyYXRpb25EYXRhLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMTI1RjgzQzE4MjQxMUU3MDBEODRD
RDkgLyogSlNDcnlwdG9PcGVyYXRpb25EYXRhLmggKi87IH07CiAJCUUxMjVGODQxMTgyNDI1M0Ew
MEQ4NENEOSAvKiBDcnlwdG9BbGdvcml0aG1BRVNfQ0JDLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxMjVGODNGMTgyNDI1M0EwMEQ4NENEOSAvKiBD
cnlwdG9BbGdvcml0aG1BRVNfQ0JDLmNwcCAqLzsgfTsKIAkJRTEyNUY4NDIxODI0MjUzQTAwRDg0
Q0Q5IC8qIENyeXB0b0FsZ29yaXRobUFFU19DQkMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxMjVGODQwMTgyNDI1M0EwMEQ4NENEOSAvKiBDcnlwdG9B
bGdvcml0aG1BRVNfQ0JDLmggKi87IH07CiAJCUUxMjVGODQ1MTgyNDI1QzkwMEQ4NENEOSAvKiBD
cnlwdG9BbGdvcml0aG1BRVNfQ0JDTWFjLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEUxMjVGODQzMTgyNDI1QzkwMEQ4NENEOSAvKiBDcnlwdG9BbGdv
cml0aG1BRVNfQ0JDTWFjLmNwcCAqLzsgfTsKQEAgLTgxOTIsNiArODE5MSw3IEBACiAJCTJERTcw
MDIyMTkyRkU4MkEwMEIwOTc1QyAvKiBEaXNwbGF5UmVmcmVzaE1vbml0b3JNYWMuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRGlzcGxheVJlZnJlc2hNb25pdG9yTWFjLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJERjUxMkNCMUQ4NzNFNDcwMDFENjc4MCAvKiBS
ZXBsYWNlUmFuZ2VXaXRoVGV4dENvbW1hbmQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gUmVwbGFjZVJhbmdlV2l0aFRleHRDb21tYW5kLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJMkRGNTEyQ0MxRDg3M0U0NzAwMUQ2NzgwIC8qIFJlcGxhY2VSYW5n
ZVdpdGhUZXh0Q29tbWFuZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZXBs
YWNlUmFuZ2VXaXRoVGV4dENvbW1hbmQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
MkRGQTQ4OEUxREI1NDFDMjAwMzYyQjk5IC8qIEJ1ZmZlclNvdXJjZS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBCdWZmZXJTb3VyY2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJMkUwODg4QzMxMTQ4ODNBOTAwQUY0MjY1IC8qIERPTUZvcm1EYXRhLmlkbCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHRleHQ7IHBhdGggPSBET01Gb3JtRGF0YS5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTJFMDg4OEQyMTE0ODg0OEEwMEFGNDI2NSAvKiBKU0RPTUZvcm1EYXRhLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTRE9NRm9ybURhdGEuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyRTA4ODhEMzExNDg4NDhBMDBBRjQyNjUgLyog
SlNET01Gb3JtRGF0YS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0RPTUZv
cm1EYXRhLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMzU2Nyw4ICsxMzU2Nyw2
IEBACiAJCUUxMjVGODM0MTgyMkYxOEEwMEQ4NENEOSAvKiBDcnlwdG9LZXlITUFDLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENyeXB0b0tleUhNQUMuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJRTEyNUY4MzcxODIyRjFFQjAwRDg0Q0Q5IC8qIENyeXB0b0FsZ29y
aXRobUhNQUNNYWMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ3J5
cHRvQWxnb3JpdGhtSE1BQ01hYy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUx
MjVGODM5MTgyNDEwNDgwMEQ4NENEOSAvKiBDcnlwdG9BbGdvcml0aG1BZXNDYmNQYXJhbXNEZXBy
ZWNhdGVkLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENyeXB0b0FsZ29yaXRo
bUFlc0NiY1BhcmFtc0RlcHJlY2F0ZWQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJ
RTEyNUY4M0IxODI0MTFFNzAwRDg0Q0Q5IC8qIEpTQ3J5cHRvT3BlcmF0aW9uRGF0YS5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0NyeXB0b09wZXJhdGlvbkRhdGEu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlFMTI1RjgzQzE4MjQxMUU3MDBEODRD
RDkgLyogSlNDcnlwdG9PcGVyYXRpb25EYXRhLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IEpTQ3J5cHRvT3BlcmF0aW9uRGF0YS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlFMTI1RjgzRjE4MjQyNTNBMDBEODRDRDkgLyogQ3J5cHRvQWxnb3JpdGhtQUVTX0NCQy5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDcnlwdG9BbGdvcml0aG1B
RVNfQ0JDLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTEyNUY4NDAxODI0MjUz
QTAwRDg0Q0Q5IC8qIENyeXB0b0FsZ29yaXRobUFFU19DQkMuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gQ3J5cHRvQWxnb3JpdGhtQUVTX0NCQy5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlFMTI1Rjg0MzE4MjQyNUM5MDBEODRDRDkgLyogQ3J5cHRvQWxnb3JpdGht
QUVTX0NCQ01hYy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDcnlw
dG9BbGdvcml0aG1BRVNfQ0JDTWFjLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAg
LTIxMDg4LDYgKzIxMDg2LDcgQEAKIAkJCQkxNERGQjMzRjBBN0RGNzYzMDAxOEY3NjkgLyogRGVy
aXZlZCBTb3VyY2VzICovLAogCQkJCTQ5QjM3NjBBMTVDNkM2ODQwMDU5MTMxRCAvKiBBcnJheVZh
bHVlLmNwcCAqLywKIAkJCQk0OUIzNzYwQjE1QzZDNjg0MDA1OTEzMUQgLyogQXJyYXlWYWx1ZS5o
ICovLAorCQkJCTJERkE0ODhFMURCNTQxQzIwMDM2MkI5OSAvKiBCdWZmZXJTb3VyY2UuaCAqLywK
IAkJCQlCQ0Q1MzM2MzBFRDY4NDg5MDA4ODc0NjggLyogQ2FjaGVkU2NyaXB0U291cmNlUHJvdmlk
ZXIuaCAqLywKIAkJCQk5M0Y4QjMwNjBBMzAwRkVBMDBGNjFBQjggLyogQ29kZUdlbmVyYXRvckpT
LnBtICovLAogCQkJCTMxMkQ2N0IwMTUzNTY5MUYwMDU2M0QwRCAvKiBEaWN0aW9uYXJ5LmNwcCAq
LywKQEAgLTIxMTA2LDggKzIxMTA1LDYgQEAKIAkJCQlFMUM2NTcxMTE4MTVGOUREMDAyNTZDREQg
LyogSlNDcnlwdG9BbGdvcml0aG1EaWN0aW9uYXJ5LmggKi8sCiAJCQkJRTEyNUY4NEYxODI4M0E1
NjAwRDg0Q0Q5IC8qIEpTQ3J5cHRvS2V5U2VyaWFsaXphdGlvbkpXSy5jcHAgKi8sCiAJCQkJRTEy
NUY4NTAxODI4M0E1NjAwRDg0Q0Q5IC8qIEpTQ3J5cHRvS2V5U2VyaWFsaXphdGlvbkpXSy5oICov
LAotCQkJCUUxMjVGODNCMTgyNDExRTcwMEQ4NENEOSAvKiBKU0NyeXB0b09wZXJhdGlvbkRhdGEu
Y3BwICovLAotCQkJCUUxMjVGODNDMTgyNDExRTcwMEQ4NENEOSAvKiBKU0NyeXB0b09wZXJhdGlv
bkRhdGEuaCAqLywKIAkJCQk5QkQ0RTkxNDFDNDYyODcyMDA1MDY1QkMgLyogSlNDdXN0b21FbGVt
ZW50SW50ZXJmYWNlLmNwcCAqLywKIAkJCQk5QkQ0RTkxNTFDNDYyODcyMDA1MDY1QkMgLyogSlND
dXN0b21FbGVtZW50SW50ZXJmYWNlLmggKi8sCiAJCQkJQkNFNDM4QTExNDBDMERCRjAwNUU0MzdF
IC8qIEpTRGljdGlvbmFyeS5jcHAgKi8sCkBAIC0yNTA4MCw3ICsyNTA3Nyw2IEBACiAJCQkJRTE1
N0E4RTExODE3MzMxQzAwOUY4MjFEIC8qIEpTQ3J5cHRvS2V5LmggaW4gSGVhZGVycyAqLywKIAkJ
CQlFMUY4MEI4RTE4MzE3MkI1MDA3ODg1QzMgLyogSlNDcnlwdG9LZXlQYWlyLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlFMTI1Rjg1MjE4MjgzQTU2MDBEODRDRDkgLyogSlNDcnlwdG9LZXlTZXJpYWxp
emF0aW9uSldLLmggaW4gSGVhZGVycyAqLywKLQkJCQlFMTI1RjgzRTE4MjQxMUU3MDBEODRDRDkg
LyogSlNDcnlwdG9PcGVyYXRpb25EYXRhLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzQ2QzFGQjBD
MEREQzhGMDAyMENGQzMgLyogSlNDU1NDaGFyc2V0UnVsZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
NDA5RUJEQzMxNkI3RjNBNjAwQ0JBM0ZDIC8qIEpTQ1NTRm9udEZhY2VMb2FkRXZlbnQuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUJDNDZDMUZEMEMwRERDOEYwMDIwQ0ZDMyAvKiBKU0NTU0ZvbnRGYWNl
UnVsZS5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNjQ0NCw2ICsyNjQ0MCw3IEBACiAJCQkJMEZDNEU0
MEQxODdGODJFMTAwNDU4ODJDIC8qIFNjcm9sbGluZ0Nvb3JkaW5hdG9ySU9TLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk5MzkxQTk5MTE2Mjc0NkNCMDAyOTczMzAgLyogU2Nyb2xsaW5nQ29vcmRpbmF0
b3JNYWMuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzQzM4QkZGMTY0NDczQzcwMDA5MUVCMiAvKiBT
Y3JvbGxpbmdTdGF0ZUZpeGVkTm9kZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJMkRGQTQ4OEYxREI1
NDFEMDAwMzYyQjk5IC8qIEJ1ZmZlclNvdXJjZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZFQTNF
N0IxOTFCMkZDNTAwMEYxQjU1IC8qIFNjcm9sbGluZ1N0YXRlRnJhbWVTY3JvbGxpbmdOb2RlLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk5MzFDQkQwRDE2MUE0NEU5MDBFNEM4NzQgLyogU2Nyb2xsaW5n
U3RhdGVOb2RlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkVBM0U4NDE5MUIzMUJGMDAwRjFCNTUg
LyogU2Nyb2xsaW5nU3RhdGVPdmVyZmxvd1Njcm9sbGluZ05vZGUuaCBpbiBIZWFkZXJzICovLApA
QCAtMjg3MjgsNyArMjg3MjUsNiBAQAogCQkJCUUxRjgwQjhEMTgzMTcyQjUwMDc4ODVDMyAvKiBK
U0NyeXB0b0tleVBhaXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRTFGODBCOEExODMxNzJBMjAw
Nzg4NUMzIC8qIEpTQ3J5cHRvS2V5UGFpckN1c3RvbS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlF
MTI1Rjg1MTE4MjgzQTU2MDBEODRDRDkgLyogSlNDcnlwdG9LZXlTZXJpYWxpemF0aW9uSldLLmNw
cCBpbiBTb3VyY2VzICovLAotCQkJCUUxMjVGODNEMTgyNDExRTcwMEQ4NENEOSAvKiBKU0NyeXB0
b09wZXJhdGlvbkRhdGEuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkM0NkMxRkEwQzBEREM4RjAw
MjBDRkMzIC8qIEpTQ1NTQ2hhcnNldFJ1bGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNDA5RUJE
QzUxNkI3RjNDQTAwQ0JBM0ZDIC8qIEpTQ1NTRm9udEZhY2VMb2FkRXZlbnQuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJQkM0NkMxRkMwQzBEREM4RjAwMjBDRkMzIC8qIEpTQ1NTRm9udEZhY2VSdWxl
LmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
Z2VuZXJpYy9JRExUeXBlcy5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvZ2VuZXJpYy9JRExU
eXBlcy5oCmluZGV4IGJlODgyNmVjODI0N2U5NmMyYTE4ODE1YjM3M2Y0ZTU3OWMzOTk4NmIuLjFm
ZTE2OWZlMTJkY2IyMWU2MjE3YmYyOGRkNzJhMWZhOTY4ZjBjMTUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2dlbmVyaWMvSURMVHlwZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9nZW5lcmljL0lETFR5cGVzLmgKQEAgLTM1LDYgKzM1LDcgQEAgY2xhc3MgSlNW
YWx1ZTsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBCdWZmZXJTb3VyY2U7CiB0ZW1w
bGF0ZSA8dHlwZW5hbWUgVmFsdWU+IGNsYXNzIERPTVByb21pc2U7CiAKIHRlbXBsYXRlPHR5cGVu
YW1lIFQ+CkBAIC0xMTgsNiArMTE5LDcgQEAgc3RydWN0IElETFVuaW9uIDogSURMVHlwZTxzdGQ6
OmV4cGVyaW1lbnRhbDo6dmFyaWFudDx0eXBlbmFtZSBUczo6SW1wbGVtZW50YXRpb24KICAgICB1
c2luZyBUeXBlTGlzdCA9IGJyaWdhbmQ6Omxpc3Q8VHMuLi4+OwogfTsKIAorc3RydWN0IElETEJ1
ZmZlclNvdXJjZSA6IElETFR5cGU8QnVmZmVyU291cmNlPiB7IH07CiAKIC8vIEhlbHBlciBwcmVk
aWNhdGVzCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0J1ZmZlclNv
dXJjZS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvQnVmZmVyU291cmNlLmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uZjEzNTVlM2ZiZTIzMmNiNDIzZTFmNmFlYjI3ODQ1NjEzNTU0OTI0NwotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0J1ZmZlclNvdXJjZS5oCkBAIC0w
LDAgKzEsMzYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgSWdhbGlhIFMuTC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI3ByYWdtYSBvbmNlCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgQnVmZmVy
U291cmNlIHsKK3B1YmxpYzoKKyAgICBjb25zdCB1aW50OF90KiBkYXRhOworICAgIHNpemVfdCBs
ZW5ndGg7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NyeXB0b0FsZ29yaXRobURpY3Rpb25hcnkuY3BwIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDcnlwdG9BbGdvcml0aG1EaWN0aW9uYXJ5LmNwcApp
bmRleCA2YzJhNWE4ODYxNWZmYmU2ZDU0ODdkNWUwMTg1YWE0YjM3ZWU0MDU2Li5jOTQxYmE0NGE2
ZjFmZjk5ZGE4YmJiYTc5NDVkOTg2MjNlNDk5ODc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0NyeXB0b0FsZ29yaXRobURpY3Rpb25hcnkuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3J5cHRvQWxnb3JpdGhtRGljdGlvbmFyeS5jcHAKQEAg
LTM4LDcgKzM4LDYgQEAKICNpbmNsdWRlICJDcnlwdG9BbGdvcml0aG1Sc2FPYWVwUGFyYW1zRGVw
cmVjYXRlZC5oIgogI2luY2x1ZGUgIkNyeXB0b0FsZ29yaXRobVJzYVNzYVBhcmFtc0RlcHJlY2F0
ZWQuaCIKICNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCi0jaW5jbHVkZSAiSlNDcnlwdG9PcGVy
YXRpb25EYXRhLmgiCiAjaW5jbHVkZSAiSlNET01CaW5kaW5nLmgiCiAjaW5jbHVkZSAiSlNET01D
b252ZXJ0LmgiCiAjaW5jbHVkZSAiSlNEaWN0aW9uYXJ5LmgiCkBAIC0xMzgsMTggKzEzNywxNSBA
QCBzdGF0aWMgUmVmUHRyPENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnNEZXByZWNhdGVkPiBjcmVh
dGVBZXNDYmNQYXJhbXMoRXhlY1N0YXRlKgogCiAgICAgYXV0byByZXN1bHQgPSBhZG9wdFJlZigq
bmV3IENyeXB0b0FsZ29yaXRobUFlc0NiY1BhcmFtc0RlcHJlY2F0ZWQpOwogCi0gICAgQ3J5cHRv
T3BlcmF0aW9uRGF0YSBpdkRhdGE7Ci0gICAgYXV0byBzdWNjZXNzID0gY3J5cHRvT3BlcmF0aW9u
RGF0YUZyb21KU1ZhbHVlKGV4ZWMsIGl2LCBpdkRhdGEpOwotICAgIEFTU0VSVChzY29wZS5leGNl
cHRpb24oKSB8fCBzdWNjZXNzKTsKLSAgICBpZiAoIXN1Y2Nlc3MpCi0gICAgICAgIHJldHVybiBu
dWxscHRyOworICAgIGF1dG8gaXZEYXRhID0gY29udmVydDxJRExCdWZmZXJTb3VyY2U+KCpleGVj
LCBpdik7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgbnVsbHB0cik7CiAKLSAgICBp
ZiAoaXZEYXRhLnNlY29uZCAhPSAxNikgeworICAgIGlmIChpdkRhdGEubGVuZ3RoICE9IDE2KSB7
CiAgICAgICAgIHRocm93RXhjZXB0aW9uKGV4ZWMsIHNjb3BlLCBjcmVhdGVFcnJvcihleGVjLCAi
QUVTLUNCQyBpbml0aWFsaXphdGlvbiBkYXRhIG11c3QgYmUgMTYgYnl0ZXMiKSk7CiAgICAgICAg
IHJldHVybiBudWxscHRyOwogICAgIH0KIAotICAgIG1lbWNweShyZXN1bHQtPml2LmRhdGEoKSwg
aXZEYXRhLmZpcnN0LCBpdkRhdGEuc2Vjb25kKTsKKyAgICBtZW1jcHkocmVzdWx0LT5pdi5kYXRh
KCksIGl2RGF0YS5kYXRhLCBpdkRhdGEubGVuZ3RoKTsKIAogICAgIHJldHVybiBXVEZNb3ZlKHJl
c3VsdCk7CiB9CkBAIC0yODUsMTMgKzI4MSwxMCBAQCBzdGF0aWMgUmVmUHRyPENyeXB0b0FsZ29y
aXRobVBhcmFtZXRlcnNEZXByZWNhdGVkPiBjcmVhdGVSc2FPYWVwUGFyYW1zKEV4ZWNTdGF0ZQog
ICAgIGlmICghcmVzdWx0LT5oYXNMYWJlbCkKICAgICAgICAgcmV0dXJuIFdURk1vdmUocmVzdWx0
KTsKIAotICAgIENyeXB0b09wZXJhdGlvbkRhdGEgbGFiZWxEYXRhOwotICAgIHN1Y2Nlc3MgPSBj
cnlwdG9PcGVyYXRpb25EYXRhRnJvbUpTVmFsdWUoZXhlYywgbGFiZWxWYWx1ZSwgbGFiZWxEYXRh
KTsKLSAgICBBU1NFUlQoc2NvcGUuZXhjZXB0aW9uKCkgfHwgc3VjY2Vzcyk7Ci0gICAgaWYgKCFz
dWNjZXNzKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICBhdXRvIGxhYmVsRGF0YSA9IGNv
bnZlcnQ8SURMQnVmZmVyU291cmNlPigqZXhlYywgbGFiZWxWYWx1ZSk7CisgICAgUkVUVVJOX0lG
X0VYQ0VQVElPTihzY29wZSwgbnVsbHB0cik7CiAKLSAgICByZXN1bHQtPmxhYmVsLmFwcGVuZChs
YWJlbERhdGEuZmlyc3QsIGxhYmVsRGF0YS5zZWNvbmQpOworICAgIHJlc3VsdC0+bGFiZWwuYXBw
ZW5kKGxhYmVsRGF0YS5kYXRhLCBsYWJlbERhdGEubGVuZ3RoKTsKIAogICAgIHJldHVybiBXVEZN
b3ZlKHJlc3VsdCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0NyeXB0b09wZXJhdGlvbkRhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlND
cnlwdG9PcGVyYXRpb25EYXRhLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTg5
NjE1NzQyNWNmZDRkZGMwNzk3NDcyZGFjOTgxYzRhYWIxMzcxNi4uMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0NyeXB0b09wZXJhdGlvbkRhdGEuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsNTUgKzAsMCBAQAot
LyoKLSAqIENvcHlyaWdodCAoQykgMjAxMywgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0g
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJKU0NyeXB0
b09wZXJhdGlvbkRhdGEuaCIKLQotI2lmIEVOQUJMRShTVUJUTEVfQ1JZUFRPKQotCi0jaW5jbHVk
ZSAiSlNET01CaW5kaW5nLmgiCi0KLXVzaW5nIG5hbWVzcGFjZSBKU0M7Ci0KLW5hbWVzcGFjZSBX
ZWJDb3JlIHsKLQotYm9vbCBjcnlwdG9PcGVyYXRpb25EYXRhRnJvbUpTVmFsdWUoRXhlY1N0YXRl
KiBleGVjLCBKU1ZhbHVlIHZhbHVlLCBDcnlwdG9PcGVyYXRpb25EYXRhJiByZXN1bHQpCi17Ci0g
ICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKLSAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7Ci0KLSAgICBpZiAoQXJyYXlCdWZmZXIqIGJ1ZmZlciA9IHRvQXJyYXlCdWZmZXIo
dmFsdWUpKQotICAgICAgICByZXN1bHQgPSBzdGQ6Om1ha2VfcGFpcihzdGF0aWNfY2FzdDx1aW50
OF90Kj4oYnVmZmVyLT5kYXRhKCkpLCBidWZmZXItPmJ5dGVMZW5ndGgoKSk7Ci0gICAgZWxzZSBp
ZiAoUmVmUHRyPEFycmF5QnVmZmVyVmlldz4gYnVmZmVyVmlldyA9IHRvQXJyYXlCdWZmZXJWaWV3
KHZhbHVlKSkKLSAgICAgICAgcmVzdWx0ID0gc3RkOjptYWtlX3BhaXIoc3RhdGljX2Nhc3Q8dWlu
dDhfdCo+KGJ1ZmZlclZpZXctPmJhc2VBZGRyZXNzKCkpLCBidWZmZXJWaWV3LT5ieXRlTGVuZ3Ro
KCkpOwotICAgIGVsc2UgewotICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBzY29wZSwgQVND
SUlMaXRlcmFsKCJPbmx5IEFycmF5QnVmZmVyIGFuZCBBcnJheUJ1ZmZlclZpZXcgb2JqZWN0cyBj
YW4gYmUgcGFzc2VkIGFzIENyeXB0b09wZXJhdGlvbkRhdGEiKSk7Ci0gICAgICAgIHJldHVybiBm
YWxzZTsKLSAgICB9Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKLQotI2VuZGlmIC8vIEVOQUJMRShTVUJUTEVfQ1JZUFRPKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNDcnlwdG9PcGVyYXRpb25EYXRhLmggYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0NyeXB0b09wZXJhdGlvbkRhdGEuaApkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggNzdiMDEwMGU2NmE1ZDc3NzdkMzY3ZWY4ZTc2N2Q2NDMyYmJmZWJkYy4u
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0NyeXB0b09wZXJhdGlvbkRhdGEuaAorKysgL2Rldi9udWxsCkBA
IC0xLDQ1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUg
bWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIEpTQ3J5cHRvT3BlcmF0aW9uRGF0
YV9oCi0jZGVmaW5lIEpTQ3J5cHRvT3BlcmF0aW9uRGF0YV9oCi0KLSNpZiBFTkFCTEUoU1VCVExF
X0NSWVBUTykKLQotbmFtZXNwYWNlIEpTQyB7Ci1jbGFzcyBFeGVjU3RhdGU7Ci1jbGFzcyBKU1Zh
bHVlOwotfQotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXR5cGVkZWYgc3RkOjpwYWlyPGNvbnN0
IHVpbnQ4X3QqLCBzaXplX3Q+IENyeXB0b09wZXJhdGlvbkRhdGE7Ci0KLWJvb2wgY3J5cHRvT3Bl
cmF0aW9uRGF0YUZyb21KU1ZhbHVlKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpKU1ZhbHVlLCBDcnlw
dG9PcGVyYXRpb25EYXRhJik7Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8v
IEVOQUJMRShTVUJUTEVfQ1JZUFRPKQotI2VuZGlmIC8vIEpTQ3J5cHRvT3BlcmF0aW9uRGF0YV9o
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuaCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5oCmluZGV4IGZlM2NhNTY0
ZWFmM2NkY2M3ODg0MWI5ODlkZWQ0MmM5YTZjMjFkYzMuLjA4ZDU0ZDAyOGYxMjViY2ExNGQwYThl
YjIwMWNiODRkNzkwNzdiNDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTRE9NQmluZGluZy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmlu
ZGluZy5oCkBAIC0yMyw2ICsyMyw3IEBACiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAiQnVm
ZmVyU291cmNlLmgiCiAjaW5jbHVkZSAiRE9NV3JhcHBlcldvcmxkLmgiCiAjaW5jbHVkZSAiRXhj
ZXB0aW9uQ29kZS5oIgogI2luY2x1ZGUgIkV4Y2VwdGlvbk9yLmgiCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUNvbnZlcnQuaCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTRE9NQ29udmVydC5oCmluZGV4IDJhNDcyODhlZjc3MGViMTNlYjQ2MmM4YWQ4
MWZmMTkzZjAwMWRkN2YuLmJkOTBmMmJkNGFkYzgwYjczNDY0NGExNTQ2ZmQ4OTNlYWY4OGIzOGUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQ29udmVydC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQ29udmVydC5oCkBAIC02MzgsNCAr
NjM4LDI1IEBAIHRlbXBsYXRlPHR5cGVuYW1lIElETFR5cGU+IHR5cGVuYW1lIERldGFpbDo6VmFy
aWFkaWNDb252ZXJ0ZXI8SURMVHlwZT46OlJlc3VsdCBjCiAgICAgcmV0dXJuIHsgbGVuZ3RoLCBX
VEZNb3ZlKHJlc3VsdCkgfTsKIH0KIAorLy8gTUFSSzogLQorLy8gTUFSSzogQnVmZmVyU291cmNl
IHR5cGUKKwordGVtcGxhdGU8PiBzdHJ1Y3QgQ29udmVydGVyPElETEJ1ZmZlclNvdXJjZT4gOiBE
ZWZhdWx0Q29udmVydGVyPElETEJ1ZmZlclNvdXJjZT4geworICAgIHVzaW5nIFJldHVyblR5cGUg
PSBCdWZmZXJTb3VyY2U7CisKKyAgICBzdGF0aWMgUmV0dXJuVHlwZSBjb252ZXJ0KEpTQzo6RXhl
Y1N0YXRlJiBzdGF0ZSwgSlNDOjpKU1ZhbHVlIHZhbHVlKQorICAgIHsKKyAgICAgICAgSlNDOjpW
TSYgdm0gPSBzdGF0ZS52bSgpOworICAgICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CisKKyAgICAgICAgaWYgKEpTQzo6QXJyYXlCdWZmZXIqIGJ1ZmZlciA9IEpTQzo6
dG9BcnJheUJ1ZmZlcih2YWx1ZSkpCisgICAgICAgICAgICByZXR1cm4geyBzdGF0aWNfY2FzdDx1
aW50OF90Kj4oYnVmZmVyLT5kYXRhKCkpLCBidWZmZXItPmJ5dGVMZW5ndGgoKSB9OworICAgICAg
ICBpZiAoUmVmUHRyPEpTQzo6QXJyYXlCdWZmZXJWaWV3PiBidWZmZXJWaWV3ID0gdG9BcnJheUJ1
ZmZlclZpZXcodmFsdWUpKQorICAgICAgICAgICAgcmV0dXJuIHsgc3RhdGljX2Nhc3Q8dWludDhf
dCo+KGJ1ZmZlclZpZXctPmJhc2VBZGRyZXNzKCkpLCBidWZmZXJWaWV3LT5ieXRlTGVuZ3RoKCkg
fTsKKworICAgICAgICB0aHJvd1R5cGVFcnJvcigmc3RhdGUsIHNjb3BlKTsKKyAgICAgICAgcmV0
dXJuIHsgbnVsbHB0ciwgMCB9OworICAgIH0KK307CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV2ViS2l0U3VidGxlQ3J5
cHRvQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV2ViS2l0U3VidGxl
Q3J5cHRvQ3VzdG9tLmNwcAppbmRleCA3ZDgwYTg2MWVkN2M4ZTk0YTBkZjRhZGFlMTJiNzNlZmQx
MDQ2NTE5Li5lMjhiNDc0NmI1MTQ3MTY1MTE1MWI5ZDYyMWQzNWVhODc1NDBlZWQyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dlYktpdFN1YnRsZUNyeXB0b0N1c3Rv
bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXZWJLaXRTdWJ0bGVDcnlw
dG9DdXN0b20uY3BwCkBAIC0zOSw3ICszOSw3IEBACiAjaW5jbHVkZSAiSlNDcnlwdG9LZXkuaCIK
ICNpbmNsdWRlICJKU0NyeXB0b0tleVBhaXIuaCIKICNpbmNsdWRlICJKU0NyeXB0b0tleVNlcmlh
bGl6YXRpb25KV0suaCIKLSNpbmNsdWRlICJKU0NyeXB0b09wZXJhdGlvbkRhdGEuaCIKKyNpbmNs
dWRlICJKU0RPTUNvbnZlcnQuaCIKICNpbmNsdWRlICJKU0RPTVByb21pc2UuaCIKICNpbmNsdWRl
IDxydW50aW1lL0Vycm9yLmg+CiAKQEAgLTE2NSwxMSArMTY1LDggQEAgSlNWYWx1ZSBKU1dlYktp
dFN1YnRsZUNyeXB0bzo6ZW5jcnlwdChFeGVjU3RhdGUmIHN0YXRlKQogICAgICAgICByZXR1cm4g
anNVbmRlZmluZWQoKTsKICAgICB9CiAKLSAgICBDcnlwdG9PcGVyYXRpb25EYXRhIGRhdGE7Ci0g
ICAgYXV0byBzdWNjZXNzID0gY3J5cHRvT3BlcmF0aW9uRGF0YUZyb21KU1ZhbHVlKCZzdGF0ZSwg
c3RhdGUudW5jaGVja2VkQXJndW1lbnQoMiksIGRhdGEpOwotICAgIEFTU0VSVChzY29wZS5leGNl
cHRpb24oKSB8fCBzdWNjZXNzKTsKLSAgICBpZiAoIXN1Y2Nlc3MpCi0gICAgICAgIHJldHVybiBq
c1VuZGVmaW5lZCgpOworICAgIGF1dG8gZGF0YSA9IGNvbnZlcnQ8SURMQnVmZmVyU291cmNlPihz
dGF0ZSwgc3RhdGUudW5jaGVja2VkQXJndW1lbnQoMikpOworICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04oc2NvcGUsIGpzVW5kZWZpbmVkKCkpOwogCiAgICAgUmVmUHRyPERlZmVycmVkUHJvbWlzZT4g
d3JhcHBlciA9IGNyZWF0ZURlZmVycmVkUHJvbWlzZShzdGF0ZSwgZG9tV2luZG93KCkpOwogICAg
IGF1dG8gcHJvbWlzZSA9IHdyYXBwZXItPnByb21pc2UoKTsKQEAgLTIxOCwxMSArMjE1LDggQEAg
SlNWYWx1ZSBKU1dlYktpdFN1YnRsZUNyeXB0bzo6ZGVjcnlwdChFeGVjU3RhdGUmIHN0YXRlKQog
ICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKICAgICB9CiAKLSAgICBDcnlwdG9PcGVyYXRp
b25EYXRhIGRhdGE7Ci0gICAgYXV0byBzdWNjZXNzID0gY3J5cHRvT3BlcmF0aW9uRGF0YUZyb21K
U1ZhbHVlKCZzdGF0ZSwgc3RhdGUudW5jaGVja2VkQXJndW1lbnQoMiksIGRhdGEpOwotICAgIEFT
U0VSVChzY29wZS5leGNlcHRpb24oKSB8fCBzdWNjZXNzKTsKLSAgICBpZiAoIXN1Y2Nlc3MpCi0g
ICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOworICAgIGF1dG8gZGF0YSA9IGNvbnZlcnQ8SURM
QnVmZmVyU291cmNlPihzdGF0ZSwgc3RhdGUudW5jaGVja2VkQXJndW1lbnQoMikpOworICAgIFJF
VFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGpzVW5kZWZpbmVkKCkpOwogCiAgICAgUmVmUHRyPERl
ZmVycmVkUHJvbWlzZT4gd3JhcHBlciA9IGNyZWF0ZURlZmVycmVkUHJvbWlzZShzdGF0ZSwgZG9t
V2luZG93KCkpOwogICAgIGF1dG8gcHJvbWlzZSA9IHdyYXBwZXItPnByb21pc2UoKTsKQEAgLTI3
MSwxMSArMjY1LDggQEAgSlNWYWx1ZSBKU1dlYktpdFN1YnRsZUNyeXB0bzo6c2lnbihFeGVjU3Rh
dGUmIHN0YXRlKQogICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKICAgICB9CiAKLSAgICBD
cnlwdG9PcGVyYXRpb25EYXRhIGRhdGE7Ci0gICAgYXV0byBzdWNjZXNzID0gY3J5cHRvT3BlcmF0
aW9uRGF0YUZyb21KU1ZhbHVlKCZzdGF0ZSwgc3RhdGUudW5jaGVja2VkQXJndW1lbnQoMiksIGRh
dGEpOwotICAgIEFTU0VSVChzY29wZS5leGNlcHRpb24oKSB8fCBzdWNjZXNzKTsKLSAgICBpZiAo
IXN1Y2Nlc3MpCi0gICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOworICAgIGF1dG8gZGF0YSA9
IGNvbnZlcnQ8SURMQnVmZmVyU291cmNlPihzdGF0ZSwgc3RhdGUudW5jaGVja2VkQXJndW1lbnQo
MikpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGpzVW5kZWZpbmVkKCkpOwogCiAg
ICAgUmVmUHRyPERlZmVycmVkUHJvbWlzZT4gd3JhcHBlciA9IGNyZWF0ZURlZmVycmVkUHJvbWlz
ZShzdGF0ZSwgZG9tV2luZG93KCkpOwogICAgIGF1dG8gcHJvbWlzZSA9IHdyYXBwZXItPnByb21p
c2UoKTsKQEAgLTMyNCwxNyArMzE1LDExIEBAIEpTVmFsdWUgSlNXZWJLaXRTdWJ0bGVDcnlwdG86
OnZlcmlmeShFeGVjU3RhdGUmIHN0YXRlKQogICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsK
ICAgICB9CiAKLSAgICBDcnlwdG9PcGVyYXRpb25EYXRhIHNpZ25hdHVyZTsKLSAgICBhdXRvIHN1
Y2Nlc3MgPSBjcnlwdG9PcGVyYXRpb25EYXRhRnJvbUpTVmFsdWUoJnN0YXRlLCBzdGF0ZS51bmNo
ZWNrZWRBcmd1bWVudCgyKSwgc2lnbmF0dXJlKTsKLSAgICBBU1NFUlQoc2NvcGUuZXhjZXB0aW9u
KCkgfHwgc3VjY2Vzcyk7Ci0gICAgaWYgKCFzdWNjZXNzKQotICAgICAgICByZXR1cm4ganNVbmRl
ZmluZWQoKTsKKyAgICBhdXRvIHNpZ25hdHVyZSA9IGNvbnZlcnQ8SURMQnVmZmVyU291cmNlPihz
dGF0ZSwgc3RhdGUudW5jaGVja2VkQXJndW1lbnQoMSkpOworICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04oc2NvcGUsIGpzVW5kZWZpbmVkKCkpOwogCi0gICAgQ3J5cHRvT3BlcmF0aW9uRGF0YSBkYXRh
OwotICAgIHN1Y2Nlc3MgPSBjcnlwdG9PcGVyYXRpb25EYXRhRnJvbUpTVmFsdWUoJnN0YXRlLCBz
dGF0ZS51bmNoZWNrZWRBcmd1bWVudCgzKSwgZGF0YSk7Ci0gICAgQVNTRVJUKHNjb3BlLmV4Y2Vw
dGlvbigpIHx8IHN1Y2Nlc3MpOwotICAgIGlmICghc3VjY2VzcykKLSAgICAgICAgcmV0dXJuIGpz
VW5kZWZpbmVkKCk7CisgICAgYXV0byBkYXRhID0gY29udmVydDxJRExCdWZmZXJTb3VyY2U+KHN0
YXRlLCBzdGF0ZS51bmNoZWNrZWRBcmd1bWVudCgzKSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElP
TihzY29wZSwganNVbmRlZmluZWQoKSk7CiAKICAgICBSZWZQdHI8RGVmZXJyZWRQcm9taXNlPiB3
cmFwcGVyID0gY3JlYXRlRGVmZXJyZWRQcm9taXNlKHN0YXRlLCBkb21XaW5kb3coKSk7CiAgICAg
YXV0byBwcm9taXNlID0gd3JhcHBlci0+cHJvbWlzZSgpOwpAQCAtMzczLDExICszNTgsOCBAQCBK
U1ZhbHVlIEpTV2ViS2l0U3VidGxlQ3J5cHRvOjpkaWdlc3QoRXhlY1N0YXRlJiBzdGF0ZSkKICAg
ICBpZiAoIXBhcmFtZXRlcnMpCiAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogCi0gICAg
Q3J5cHRvT3BlcmF0aW9uRGF0YSBkYXRhOwotICAgIGF1dG8gc3VjY2VzcyA9IGNyeXB0b09wZXJh
dGlvbkRhdGFGcm9tSlNWYWx1ZSgmc3RhdGUsIHN0YXRlLnVuY2hlY2tlZEFyZ3VtZW50KDEpLCBk
YXRhKTsKLSAgICBBU1NFUlQoc2NvcGUuZXhjZXB0aW9uKCkgfHwgc3VjY2Vzcyk7Ci0gICAgaWYg
KCFzdWNjZXNzKQotICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKKyAgICBhdXRvIGRhdGEg
PSBjb252ZXJ0PElETEJ1ZmZlclNvdXJjZT4oc3RhdGUsIHN0YXRlLnVuY2hlY2tlZEFyZ3VtZW50
KDEpKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBqc1VuZGVmaW5lZCgpKTsKIAog
ICAgIFJlZlB0cjxEZWZlcnJlZFByb21pc2U+IHdyYXBwZXIgPSBjcmVhdGVEZWZlcnJlZFByb21p
c2Uoc3RhdGUsIGRvbVdpbmRvdygpKTsKICAgICBhdXRvIHByb21pc2UgPSB3cmFwcGVyLT5wcm9t
aXNlKCk7CkBAIC00NTQsNyArNDM2LDcgQEAgSlNWYWx1ZSBKU1dlYktpdFN1YnRsZUNyeXB0bzo6
Z2VuZXJhdGVLZXkoRXhlY1N0YXRlJiBzdGF0ZSkKICAgICByZXR1cm4gcHJvbWlzZTsKIH0KIAot
c3RhdGljIHZvaWQgaW1wb3J0S2V5KEV4ZWNTdGF0ZSYgc3RhdGUsIENyeXB0b0tleUZvcm1hdCBr
ZXlGb3JtYXQsIENyeXB0b09wZXJhdGlvbkRhdGEgZGF0YSwgUmVmUHRyPENyeXB0b0FsZ29yaXRo
bT4gYWxnb3JpdGhtLCBSZWZQdHI8Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVyc0RlcHJlY2F0ZWQ+
IHBhcmFtZXRlcnMsIGJvb2wgZXh0cmFjdGFibGUsIENyeXB0b0tleVVzYWdlIGtleVVzYWdlcywg
Q3J5cHRvQWxnb3JpdGhtOjpLZXlDYWxsYmFjayBjYWxsYmFjaywgQ3J5cHRvQWxnb3JpdGhtOjpW
b2lkQ2FsbGJhY2sgZmFpbHVyZUNhbGxiYWNrKQorc3RhdGljIHZvaWQgaW1wb3J0S2V5KEV4ZWNT
dGF0ZSYgc3RhdGUsIENyeXB0b0tleUZvcm1hdCBrZXlGb3JtYXQsIGNvbnN0IEJ1ZmZlclNvdXJj
ZSYgZGF0YSwgUmVmUHRyPENyeXB0b0FsZ29yaXRobT4gYWxnb3JpdGhtLCBSZWZQdHI8Q3J5cHRv
QWxnb3JpdGhtUGFyYW1ldGVyc0RlcHJlY2F0ZWQ+IHBhcmFtZXRlcnMsIGJvb2wgZXh0cmFjdGFi
bGUsIENyeXB0b0tleVVzYWdlIGtleVVzYWdlcywgQ3J5cHRvQWxnb3JpdGhtOjpLZXlDYWxsYmFj
ayBjYWxsYmFjaywgQ3J5cHRvQWxnb3JpdGhtOjpWb2lkQ2FsbGJhY2sgZmFpbHVyZUNhbGxiYWNr
KQogewogICAgIFZNJiB2bSA9IHN0YXRlLnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOwpAQCAtNDY1LDcgKzQ0Nyw3IEBAIHN0YXRpYyB2b2lkIGltcG9ydEtl
eShFeGVjU3RhdGUmIHN0YXRlLCBDcnlwdG9LZXlGb3JtYXQga2V5Rm9ybWF0LCBDcnlwdG9PcGVy
YXRpCiAgICAgICAgIGtleVNlcmlhbGl6YXRpb24gPSBDcnlwdG9LZXlTZXJpYWxpemF0aW9uUmF3
OjpjcmVhdGUoZGF0YSk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQ3J5cHRvS2V5Rm9ybWF0
OjpKV0s6IHsKLSAgICAgICAgU3RyaW5nIGp3a1N0cmluZyA9IFN0cmluZzo6ZnJvbVVURjgoZGF0
YS5maXJzdCwgZGF0YS5zZWNvbmQpOworICAgICAgICBTdHJpbmcgandrU3RyaW5nID0gU3RyaW5n
Ojpmcm9tVVRGOChkYXRhLmRhdGEsIGRhdGEubGVuZ3RoKTsKICAgICAgICAgaWYgKGp3a1N0cmlu
Zy5pc051bGwoKSkgewogICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoJnN0YXRlLCBzY29wZSwg
QVNDSUlMaXRlcmFsKCJKV0sgSlNPTiBzZXJpYWxpemF0aW9uIGlzIG5vdCB2YWxpZCBVVEYtOCIp
KTsKICAgICAgICAgICAgIHJldHVybjsKQEAgLTUyNiwxMSArNTA4LDggQEAgSlNWYWx1ZSBKU1dl
YktpdFN1YnRsZUNyeXB0bzo6aW1wb3J0S2V5KEV4ZWNTdGF0ZSYgc3RhdGUpCiAgICAgaWYgKCFz
dWNjZXNzKQogICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKIAotICAgIENyeXB0b09wZXJh
dGlvbkRhdGEgZGF0YTsKLSAgICBzdWNjZXNzID0gY3J5cHRvT3BlcmF0aW9uRGF0YUZyb21KU1Zh
bHVlKCZzdGF0ZSwgc3RhdGUudW5jaGVja2VkQXJndW1lbnQoMSksIGRhdGEpOwotICAgIEFTU0VS
VChzY29wZS5leGNlcHRpb24oKSB8fCBzdWNjZXNzKTsKLSAgICBpZiAoIXN1Y2Nlc3MpCi0gICAg
ICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOworICAgIGF1dG8gZGF0YSA9IGNvbnZlcnQ8SURMQnVm
ZmVyU291cmNlPihzdGF0ZSwgc3RhdGUudW5jaGVja2VkQXJndW1lbnQoMSkpOworICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04oc2NvcGUsIGpzVW5kZWZpbmVkKCkpOwogCiAgICAgUmVmUHRyPENyeXB0
b0FsZ29yaXRobT4gYWxnb3JpdGhtOwogICAgIFJlZlB0cjxDcnlwdG9BbGdvcml0aG1QYXJhbWV0
ZXJzRGVwcmVjYXRlZD4gcGFyYW1ldGVyczsKQEAgLTY5MSw3ICs2NzAsNyBAQCBKU1ZhbHVlIEpT
V2ViS2l0U3VidGxlQ3J5cHRvOjp3cmFwS2V5KEV4ZWNTdGF0ZSYgc3RhdGUpCiAgICAgICAgICAg
ICB3cmFwcGVyLT5yZWplY3QobnVsbHB0cik7CiAgICAgICAgIH07CiAgICAgICAgIEV4Y2VwdGlv
bkNvZGUgZWMgPSAwOwotICAgICAgICBhbGdvcml0aG0tPmVuY3J5cHRGb3JXcmFwS2V5KCpwYXJh
bWV0ZXJzLCAqd3JhcHBpbmdLZXksIHN0ZDo6bWFrZV9wYWlyKGV4cG9ydGVkS2V5RGF0YS5kYXRh
KCksIGV4cG9ydGVkS2V5RGF0YS5zaXplKCkpLCBXVEZNb3ZlKGVuY3J5cHRTdWNjZXNzQ2FsbGJh
Y2spLCBXVEZNb3ZlKGVuY3J5cHRGYWlsdXJlQ2FsbGJhY2spLCBlYyk7CisgICAgICAgIGFsZ29y
aXRobS0+ZW5jcnlwdEZvcldyYXBLZXkoKnBhcmFtZXRlcnMsICp3cmFwcGluZ0tleSwgQnVmZmVy
U291cmNleyBleHBvcnRlZEtleURhdGEuZGF0YSgpLCBleHBvcnRlZEtleURhdGEuc2l6ZSgpIH0s
IFdURk1vdmUoZW5jcnlwdFN1Y2Nlc3NDYWxsYmFjayksIFdURk1vdmUoZW5jcnlwdEZhaWx1cmVD
YWxsYmFjayksIGVjKTsKICAgICAgICAgaWYgKGVjKSB7CiAgICAgICAgICAgICAvLyBGSVhNRTog
UmVwb3J0IGZhaWx1cmUgZGV0YWlscyB0byBjb25zb2xlLCBhbmQgcG9zc2libHkgdG8gY2FsbGlu
ZyBzY3JpcHQgb25jZSB0aGVyZSBpcyBhIHN0YW5kYXJkaXplZCB3YXkgdG8gcGFzcyBlcnJvcnMg
dG8gV2ViQ3J5cHRvIHByb21pc2UgcmVqZWN0IGZ1bmN0aW9ucy4KICAgICAgICAgICAgIHdyYXBw
ZXItPnJlamVjdChudWxscHRyKTsKQEAgLTcyNiwxMSArNzA1LDggQEAgSlNWYWx1ZSBKU1dlYktp
dFN1YnRsZUNyeXB0bzo6dW53cmFwS2V5KEV4ZWNTdGF0ZSYgc3RhdGUpCiAgICAgaWYgKCFzdWNj
ZXNzKQogICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKIAotICAgIENyeXB0b09wZXJhdGlv
bkRhdGEgd3JhcHBlZEtleURhdGE7Ci0gICAgc3VjY2VzcyA9IGNyeXB0b09wZXJhdGlvbkRhdGFG
cm9tSlNWYWx1ZSgmc3RhdGUsIHN0YXRlLnVuY2hlY2tlZEFyZ3VtZW50KDEpLCB3cmFwcGVkS2V5
RGF0YSk7Ci0gICAgQVNTRVJUKHNjb3BlLmV4Y2VwdGlvbigpIHx8IHN1Y2Nlc3MpOwotICAgIGlm
ICghc3VjY2VzcykKLSAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CisgICAgYXV0byB3cmFw
cGVkS2V5RGF0YSA9IGNvbnZlcnQ8SURMQnVmZmVyU291cmNlPihzdGF0ZSwgc3RhdGUudW5jaGVj
a2VkQXJndW1lbnQoMSkpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGpzVW5kZWZp
bmVkKCkpOwogCiAgICAgUmVmUHRyPENyeXB0b0tleT4gdW53cmFwcGluZ0tleSA9IEpTQ3J5cHRv
S2V5Ojp0b1dyYXBwZWQoc3RhdGUudW5jaGVja2VkQXJndW1lbnQoMikpOwogICAgIGlmICghdW53
cmFwcGluZ0tleSkKQEAgLTc5NSw3ICs3NzEsNyBAQCBKU1ZhbHVlIEpTV2ViS2l0U3VidGxlQ3J5
cHRvOjp1bndyYXBLZXkoRXhlY1N0YXRlJiBzdGF0ZSkKICAgICAgICAgYXV0byBzY29wZSA9IERF
Q0xBUkVfQ0FUQ0hfU0NPUEUodm0pOwogCiAgICAgICAgIEV4ZWNTdGF0ZSYgc3RhdGUgPSAqZG9t
R2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCk7Ci0gICAgICAgIFdlYkNvcmU6OmltcG9ydEtleShz
dGF0ZSwga2V5Rm9ybWF0LCBzdGQ6Om1ha2VfcGFpcihyZXN1bHQuZGF0YSgpLCByZXN1bHQuc2l6
ZSgpKSwgdW53cmFwcGVkS2V5QWxnb3JpdGhtLCB1bndyYXBwZWRLZXlBbGdvcml0aG1QYXJhbWV0
ZXJzLCBleHRyYWN0YWJsZSwga2V5VXNhZ2VzLCBXVEZNb3ZlKGltcG9ydFN1Y2Nlc3NDYWxsYmFj
ayksIFdURk1vdmUoaW1wb3J0RmFpbHVyZUNhbGxiYWNrKSk7CisgICAgICAgIFdlYkNvcmU6Omlt
cG9ydEtleShzdGF0ZSwga2V5Rm9ybWF0LCBCdWZmZXJTb3VyY2V7IHJlc3VsdC5kYXRhKCksIHJl
c3VsdC5zaXplKCkgfSwgdW53cmFwcGVkS2V5QWxnb3JpdGhtLCB1bndyYXBwZWRLZXlBbGdvcml0
aG1QYXJhbWV0ZXJzLCBleHRyYWN0YWJsZSwga2V5VXNhZ2VzLCBXVEZNb3ZlKGltcG9ydFN1Y2Nl
c3NDYWxsYmFjayksIFdURk1vdmUoaW1wb3J0RmFpbHVyZUNhbGxiYWNrKSk7CiAgICAgICAgIGlm
IChVTkxJS0VMWShzY29wZS5leGNlcHRpb24oKSkpIHsKICAgICAgICAgICAgIC8vIEZJWE1FOiBS
ZXBvcnQgZXhjZXB0aW9uIGRldGFpbHMgdG8gY29uc29sZSwgYW5kIHBvc3NpYmx5IHRvIGNhbGxp
bmcgc2NyaXB0IG9uY2UgdGhlcmUgaXMgYSBzdGFuZGFyZGl6ZWQgd2F5IHRvIHBhc3MgZXJyb3Jz
IHRvIFdlYkNyeXB0byBwcm9taXNlIHJlamVjdCBmdW5jdGlvbnMuCiAgICAgICAgICAgICBzY29w
ZS5jbGVhckV4Y2VwdGlvbigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy9Db2RlR2VuZXJhdG9yLnBtIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy9Db2RlR2VuZXJhdG9yLnBtCmluZGV4IGQ1N2ZkMDUwNjdkMjQzNjljNzRkMTRiNDI1ODdiYjc1
ZWUxNjc5N2YuLjk3OWIyYjdjNDMxZDEyM2Q1OTdjMTU4ZDkyN2IyZjM5NmFmMjU0OGYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvci5wbQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3IucG0KQEAg
LTM3MCw2ICszNzAsNyBAQCBzdWIgU2tpcEluY2x1ZGVIZWFkZXIKIAogICAgIHJldHVybiAxIGlm
ICRvYmplY3QtPklzUHJpbWl0aXZlVHlwZSgkdHlwZSk7CiAgICAgcmV0dXJuIDEgaWYgJG9iamVj
dC0+SXNUeXBlZEFycmF5VHlwZSgkdHlwZSk7CisgICAgcmV0dXJuIDEgaWYgJG9iamVjdC0+SXNC
dWZmZXJTb3VyY2VUeXBlKCR0eXBlKTsKICAgICByZXR1cm4gMSBpZiAkdHlwZSBlcSAiQXJyYXki
OwogICAgIHJldHVybiAxIGlmICR0eXBlIGVxICJET01TdHJpbmciIG9yICR0eXBlIGVxICJVU1ZT
dHJpbmciOwogICAgIHJldHVybiAxIGlmICR0eXBlIGVxICJET01UaW1lU3RhbXAiOwpAQCAtNTcx
LDYgKzU3MiwxNSBAQCBzdWIgSXNUeXBlZEFycmF5VHlwZQogICAgIHJldHVybiAwOwogfQogCitz
dWIgSXNCdWZmZXJTb3VyY2VUeXBlCit7CisgICAgbXkgJG9iamVjdCA9IHNoaWZ0OworICAgIG15
ICR0eXBlID0gc2hpZnQ7CisKKyAgICByZXR1cm4gMSBpZiAkdHlwZSBlcSAiQnVmZmVyU291cmNl
IjsKKyAgICByZXR1cm4gMDsKK30KKwogc3ViIElzUmVmUHRyVHlwZQogewogICAgIG15ICRvYmpl
Y3QgPSBzaGlmdDsKQEAgLTg2NSw3ICs4NzUsNyBAQCBzdWIgSXNXcmFwcGVyVHlwZQogICAgIG15
ICR0eXBlID0gc2hpZnQ7CiAKICAgICByZXR1cm4gMCBpZiAhJG9iamVjdC0+SXNSZWZQdHJUeXBl
KCR0eXBlKTsKLSAgICByZXR1cm4gMCBpZiAkb2JqZWN0LT5Jc1R5cGVkQXJyYXlUeXBlKCR0eXBl
KTsKKyAgICByZXR1cm4gMCBpZiAkb2JqZWN0LT5Jc1R5cGVkQXJyYXlUeXBlKCR0eXBlKSB8fCAk
b2JqZWN0LT5Jc0J1ZmZlclNvdXJjZVR5cGUoJHR5cGUpOwogICAgIHJldHVybiAwIGlmICR0eXBl
IGVxICJVTklPTiI7CiAgICAgcmV0dXJuIDAgaWYgJHdlYkNvcmVUeXBlSGFzaHskdHlwZX07CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRv
ckpTLnBtIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMu
cG0KaW5kZXggMGE0MzI2N2Y1OTc0N2NkOWRkZjQ0MzkzZWU4ZWJiOGI3ZGZmMjMyZC4uMWJiZjUy
ODBkMjk3ZjM4ZjVhMWQwMjQ1NDI0MzU2NjUwYmZlN2M2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KQEAgLTMxOSw3ICszMTks
NyBAQCBzdWIgQWRkQ2xhc3NGb3J3YXJkSWZOZWVkZWQKIAogICAgICMgU1ZHQW5pbWF0ZWRMZW5n
dGgvTnVtYmVyL2V0Yy4gYXJlIG5vdCBjbGFzc2VzIHNvIHRoZXkgY2FuJ3QgYmUgZm9yd2FyZCBk
ZWNsYXJlZCBhcyBjbGFzc2VzLgogICAgIHJldHVybiBpZiAkY29kZUdlbmVyYXRvci0+SXNTVkdB
bmltYXRlZFR5cGUoJGludGVyZmFjZU5hbWUpOwotICAgIHJldHVybiBpZiAkY29kZUdlbmVyYXRv
ci0+SXNUeXBlZEFycmF5VHlwZSgkaW50ZXJmYWNlTmFtZSk7CisgICAgcmV0dXJuIGlmICRjb2Rl
R2VuZXJhdG9yLT5Jc1R5cGVkQXJyYXlUeXBlKCRpbnRlcmZhY2VOYW1lKSB8fCAkY29kZUdlbmVy
YXRvci0+SXNCdWZmZXJTb3VyY2VUeXBlKCRpbnRlcmZhY2VOYW1lKTsKIAogICAgIHB1c2goQGhl
YWRlckNvbnRlbnQsICJjbGFzcyAkaW50ZXJmYWNlTmFtZTtcblxuIik7CiB9CkBAIC00OTg4LDYg
KzQ5ODgsNyBAQCBzdWIgR2V0QmFzZUlETFR5cGUKICAgICApOwogCiAgICAgcmV0dXJuICRJRExU
eXBlc3skaWRsVHlwZS0+bmFtZX0gaWYgZXhpc3RzICRJRExUeXBlc3skaWRsVHlwZS0+bmFtZX07
CisgICAgcmV0dXJuICJJRExCdWZmZXJTb3VyY2UiIGlmICRjb2RlR2VuZXJhdG9yLT5Jc0J1ZmZl
clNvdXJjZVR5cGUoJGlkbFR5cGUtPm5hbWUpOwogICAgIHJldHVybiAiSURMRW51bWVyYXRpb248
IiAuIEdldEVudW1lcmF0aW9uQ2xhc3NOYW1lKCRpZGxUeXBlLT5uYW1lLCAkaW50ZXJmYWNlKSAu
ICI+IiBpZiAkY29kZUdlbmVyYXRvci0+SXNFbnVtVHlwZSgkaWRsVHlwZS0+bmFtZSk7CiAgICAg
cmV0dXJuICJJRExEaWN0aW9uYXJ5PCIgLiBHZXREaWN0aW9uYXJ5Q2xhc3NOYW1lKCRpZGxUeXBl
LT5uYW1lLCAkaW50ZXJmYWNlKSAuICI+IiBpZiAkY29kZUdlbmVyYXRvci0+SXNEaWN0aW9uYXJ5
VHlwZSgkaWRsVHlwZS0+bmFtZSk7CiAgICAgcmV0dXJuICJJRExTZXF1ZW5jZTwiIC4gR2V0SURM
VHlwZSgkaW50ZXJmYWNlLCBAeyRpZGxUeXBlLT5zdWJ0eXBlc31bMF0pIC4gIj4iIGlmICRjb2Rl
R2VuZXJhdG9yLT5Jc1NlcXVlbmNlVHlwZSgkaWRsVHlwZS0+bmFtZSk7CkBAIC01MTIwLDYgKzUx
MjEsNyBAQCBzdWIgSXNIYW5kbGVkQnlET01Db252ZXJ0CiAgICAgcmV0dXJuIDEgaWYgJGNvZGVH
ZW5lcmF0b3ItPklzRmxvYXRpbmdQb2ludFR5cGUoJGlkbFR5cGUtPm5hbWUpOwogICAgIHJldHVy
biAxIGlmICRjb2RlR2VuZXJhdG9yLT5Jc1NlcXVlbmNlT3JGcm96ZW5BcnJheVR5cGUoJGlkbFR5
cGUtPm5hbWUpOwogICAgIHJldHVybiAxIGlmICRjb2RlR2VuZXJhdG9yLT5Jc0RpY3Rpb25hcnlU
eXBlKCRpZGxUeXBlLT5uYW1lKTsKKyAgICByZXR1cm4gMSBpZiAkY29kZUdlbmVyYXRvci0+SXNC
dWZmZXJTb3VyY2VUeXBlKCRpZGxUeXBlLT5uYW1lKTsKICAgICByZXR1cm4gMDsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL0NyeXB0b0FsZ29yaXRobS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9jcnlwdG8vQ3J5cHRvQWxnb3JpdGhtLmNwcAppbmRleCAxNDRlN2ZmMDdkNzdm
ZTgzODQwYzExMmYzYjNhNjY3YzI0NDMyOTRjLi5lOGU3OWFmNDFiMDczYzljYjRjZThmNjVkMGVm
YzYzNWFmMDVkMzQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vQ3J5cHRvQWxn
b3JpdGhtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vQ3J5cHRvQWxnb3JpdGhtLmNw
cApAQCAtNDAsMjcgKzQwLDI3IEBAIENyeXB0b0FsZ29yaXRobTo6fkNyeXB0b0FsZ29yaXRobSgp
CiB7CiB9CiAKLXZvaWQgQ3J5cHRvQWxnb3JpdGhtOjplbmNyeXB0KGNvbnN0IENyeXB0b0FsZ29y
aXRobVBhcmFtZXRlcnNEZXByZWNhdGVkJiwgY29uc3QgQ3J5cHRvS2V5JiwgY29uc3QgQ3J5cHRv
T3BlcmF0aW9uRGF0YSYsIFZlY3RvckNhbGxiYWNrJiYsIFZvaWRDYWxsYmFjayYmLCBFeGNlcHRp
b25Db2RlJiBlYykKK3ZvaWQgQ3J5cHRvQWxnb3JpdGhtOjplbmNyeXB0KGNvbnN0IENyeXB0b0Fs
Z29yaXRobVBhcmFtZXRlcnNEZXByZWNhdGVkJiwgY29uc3QgQ3J5cHRvS2V5JiwgY29uc3QgQnVm
ZmVyU291cmNlJiwgVmVjdG9yQ2FsbGJhY2smJiwgVm9pZENhbGxiYWNrJiYsIEV4Y2VwdGlvbkNv
ZGUmIGVjKQogewogICAgIGVjID0gTk9UX1NVUFBPUlRFRF9FUlI7CiB9CiAKLXZvaWQgQ3J5cHRv
QWxnb3JpdGhtOjpkZWNyeXB0KGNvbnN0IENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnNEZXByZWNh
dGVkJiwgY29uc3QgQ3J5cHRvS2V5JiwgY29uc3QgQ3J5cHRvT3BlcmF0aW9uRGF0YSYsIFZlY3Rv
ckNhbGxiYWNrJiYsIFZvaWRDYWxsYmFjayYmLCBFeGNlcHRpb25Db2RlJiBlYykKK3ZvaWQgQ3J5
cHRvQWxnb3JpdGhtOjpkZWNyeXB0KGNvbnN0IENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnNEZXBy
ZWNhdGVkJiwgY29uc3QgQ3J5cHRvS2V5JiwgY29uc3QgQnVmZmVyU291cmNlJiwgVmVjdG9yQ2Fs
bGJhY2smJiwgVm9pZENhbGxiYWNrJiYsIEV4Y2VwdGlvbkNvZGUmIGVjKQogewogICAgIGVjID0g
Tk9UX1NVUFBPUlRFRF9FUlI7CiB9CiAKLXZvaWQgQ3J5cHRvQWxnb3JpdGhtOjpzaWduKGNvbnN0
IENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnNEZXByZWNhdGVkJiwgY29uc3QgQ3J5cHRvS2V5Jiwg
Y29uc3QgQ3J5cHRvT3BlcmF0aW9uRGF0YSYsIFZlY3RvckNhbGxiYWNrJiYsIFZvaWRDYWxsYmFj
ayYmLCBFeGNlcHRpb25Db2RlJiBlYykKK3ZvaWQgQ3J5cHRvQWxnb3JpdGhtOjpzaWduKGNvbnN0
IENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnNEZXByZWNhdGVkJiwgY29uc3QgQ3J5cHRvS2V5Jiwg
Y29uc3QgQnVmZmVyU291cmNlJiwgVmVjdG9yQ2FsbGJhY2smJiwgVm9pZENhbGxiYWNrJiYsIEV4
Y2VwdGlvbkNvZGUmIGVjKQogewogICAgIGVjID0gTk9UX1NVUFBPUlRFRF9FUlI7CiB9CiAKLXZv
aWQgQ3J5cHRvQWxnb3JpdGhtOjp2ZXJpZnkoY29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVy
c0RlcHJlY2F0ZWQmLCBjb25zdCBDcnlwdG9LZXkmLCBjb25zdCBDcnlwdG9PcGVyYXRpb25EYXRh
JiwgY29uc3QgQ3J5cHRvT3BlcmF0aW9uRGF0YSYsIEJvb2xDYWxsYmFjayYmLCBWb2lkQ2FsbGJh
Y2smJiwgRXhjZXB0aW9uQ29kZSYgZWMpCit2b2lkIENyeXB0b0FsZ29yaXRobTo6dmVyaWZ5KGNv
bnN0IENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnNEZXByZWNhdGVkJiwgY29uc3QgQ3J5cHRvS2V5
JiwgY29uc3QgQnVmZmVyU291cmNlJiwgY29uc3QgQnVmZmVyU291cmNlJiwgQm9vbENhbGxiYWNr
JiYsIFZvaWRDYWxsYmFjayYmLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBlYyA9IE5PVF9T
VVBQT1JURURfRVJSOwogfQogCi12b2lkIENyeXB0b0FsZ29yaXRobTo6ZGlnZXN0KGNvbnN0IENy
eXB0b0FsZ29yaXRobVBhcmFtZXRlcnNEZXByZWNhdGVkJiwgY29uc3QgQ3J5cHRvT3BlcmF0aW9u
RGF0YSYsIFZlY3RvckNhbGxiYWNrJiYsIFZvaWRDYWxsYmFjayYmLCBFeGNlcHRpb25Db2RlJiBl
YykKK3ZvaWQgQ3J5cHRvQWxnb3JpdGhtOjpkaWdlc3QoY29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFy
YW1ldGVyc0RlcHJlY2F0ZWQmLCBjb25zdCBCdWZmZXJTb3VyY2UmLCBWZWN0b3JDYWxsYmFjayYm
LCBWb2lkQ2FsbGJhY2smJiwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgZWMgPSBOT1RfU1VQ
UE9SVEVEX0VSUjsKIH0KQEAgLTg1LDEyICs4NSwxMiBAQCB2b2lkIENyeXB0b0FsZ29yaXRobTo6
aW1wb3J0S2V5KGNvbnN0IENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnNEZXByZWNhdGVkJiwgY29u
cwogICAgIGVjID0gTk9UX1NVUFBPUlRFRF9FUlI7CiB9CiAKLXZvaWQgQ3J5cHRvQWxnb3JpdGht
OjplbmNyeXB0Rm9yV3JhcEtleShjb25zdCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzRGVwcmVj
YXRlZCYgcGFyYW1ldGVycywgY29uc3QgQ3J5cHRvS2V5JiBrZXksIGNvbnN0IENyeXB0b09wZXJh
dGlvbkRhdGEmIGRhdGEsIFZlY3RvckNhbGxiYWNrJiYgY2FsbGJhY2ssIFZvaWRDYWxsYmFjayYm
IGZhaWx1cmVDYWxsYmFjaywgRXhjZXB0aW9uQ29kZSYgZWMpCit2b2lkIENyeXB0b0FsZ29yaXRo
bTo6ZW5jcnlwdEZvcldyYXBLZXkoY29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVyc0RlcHJl
Y2F0ZWQmIHBhcmFtZXRlcnMsIGNvbnN0IENyeXB0b0tleSYga2V5LCBjb25zdCBCdWZmZXJTb3Vy
Y2UmIGRhdGEsIFZlY3RvckNhbGxiYWNrJiYgY2FsbGJhY2ssIFZvaWRDYWxsYmFjayYmIGZhaWx1
cmVDYWxsYmFjaywgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgZW5jcnlwdChwYXJhbWV0ZXJz
LCBrZXksIGRhdGEsIFdURk1vdmUoY2FsbGJhY2spLCBXVEZNb3ZlKGZhaWx1cmVDYWxsYmFjayks
IGVjKTsKIH0KIAotdm9pZCBDcnlwdG9BbGdvcml0aG06OmRlY3J5cHRGb3JVbndyYXBLZXkoY29u
c3QgQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVyc0RlcHJlY2F0ZWQmIHBhcmFtZXRlcnMsIGNvbnN0
IENyeXB0b0tleSYga2V5LCBjb25zdCBDcnlwdG9PcGVyYXRpb25EYXRhJiBkYXRhLCBWZWN0b3JD
YWxsYmFjayYmIGNhbGxiYWNrLCBWb2lkQ2FsbGJhY2smJiBmYWlsdXJlQ2FsbGJhY2ssIEV4Y2Vw
dGlvbkNvZGUmIGVjKQordm9pZCBDcnlwdG9BbGdvcml0aG06OmRlY3J5cHRGb3JVbndyYXBLZXko
Y29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVyc0RlcHJlY2F0ZWQmIHBhcmFtZXRlcnMsIGNv
bnN0IENyeXB0b0tleSYga2V5LCBjb25zdCBCdWZmZXJTb3VyY2UmIGRhdGEsIFZlY3RvckNhbGxi
YWNrJiYgY2FsbGJhY2ssIFZvaWRDYWxsYmFjayYmIGZhaWx1cmVDYWxsYmFjaywgRXhjZXB0aW9u
Q29kZSYgZWMpCiB7CiAgICAgZGVjcnlwdChwYXJhbWV0ZXJzLCBrZXksIGRhdGEsIFdURk1vdmUo
Y2FsbGJhY2spLCBXVEZNb3ZlKGZhaWx1cmVDYWxsYmFjayksIGVjKTsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2NyeXB0by9DcnlwdG9BbGdvcml0aG0uaCBiL1NvdXJjZS9XZWJDb3Jl
L2NyeXB0by9DcnlwdG9BbGdvcml0aG0uaAppbmRleCA2OGNjMjM1MDA1OGNlNGRmNzNjNDRlMWU1
YmU5MThhZDA0YzdmODVmLi5hYjViYjRhNjg2NThhZDgyNDZjMTZmYjQyMjExOWY5MDE5YzI3YWNj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vQ3J5cHRvQWxnb3JpdGhtLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL0NyeXB0b0FsZ29yaXRobS5oCkBAIC0yNiw2ICsyNiw3
IEBACiAjaWZuZGVmIENyeXB0b0FsZ29yaXRobV9oCiAjZGVmaW5lIENyeXB0b0FsZ29yaXRobV9o
CiAKKyNpbmNsdWRlICJCdWZmZXJTb3VyY2UuaCIKICNpbmNsdWRlICJDcnlwdG9BbGdvcml0aG1J
ZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiQ3J5cHRvS2V5VXNhZ2UuaCIKICNpbmNsdWRlIDxmdW5j
dGlvbmFsPgpAQCAtNDQsOSArNDUsNiBAQCBjbGFzcyBDcnlwdG9LZXk7CiBjbGFzcyBDcnlwdG9L
ZXlQYWlyOwogY2xhc3MgQ3J5cHRvS2V5RGF0YTsKIAotLy8gRGF0YSBpcyBtdXRhYmxlLCBzbyBh
c3luYyBvcGVyYXRpb25zIHNob3VsZCBjb3B5IGl0IGZpcnN0LgotdHlwZWRlZiBzdGQ6OnBhaXI8
Y29uc3QgdWludDhfdCosIHNpemVfdD4gQ3J5cHRvT3BlcmF0aW9uRGF0YTsKLQogY2xhc3MgQ3J5
cHRvQWxnb3JpdGhtIDogcHVibGljIFJlZkNvdW50ZWQ8Q3J5cHRvQWxnb3JpdGhtPiB7CiAgICAg
V1RGX01BS0VfTk9OQ09QWUFCTEUoQ3J5cHRvQWxnb3JpdGhtKQogcHVibGljOgpAQCAtNjAsMTkg
KzU4LDE5IEBAIHB1YmxpYzoKICAgICB0eXBlZGVmIHN0ZDo6ZnVuY3Rpb248dm9pZChjb25zdCBW
ZWN0b3I8dWludDhfdD4mKT4gVmVjdG9yQ2FsbGJhY2s7CiAgICAgdHlwZWRlZiBzdGQ6OmZ1bmN0
aW9uPHZvaWQoKT4gVm9pZENhbGxiYWNrOwogCi0gICAgdmlydHVhbCB2b2lkIGVuY3J5cHQoY29u
c3QgQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVyc0RlcHJlY2F0ZWQmLCBjb25zdCBDcnlwdG9LZXkm
LCBjb25zdCBDcnlwdG9PcGVyYXRpb25EYXRhJiwgVmVjdG9yQ2FsbGJhY2smJiwgVm9pZENhbGxi
YWNrJiYgZmFpbHVyZUNhbGxiYWNrLCBFeGNlcHRpb25Db2RlJik7Ci0gICAgdmlydHVhbCB2b2lk
IGRlY3J5cHQoY29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVyc0RlcHJlY2F0ZWQmLCBjb25z
dCBDcnlwdG9LZXkmLCBjb25zdCBDcnlwdG9PcGVyYXRpb25EYXRhJiwgVmVjdG9yQ2FsbGJhY2sm
JiwgVm9pZENhbGxiYWNrJiYgZmFpbHVyZUNhbGxiYWNrLCBFeGNlcHRpb25Db2RlJik7Ci0gICAg
dmlydHVhbCB2b2lkIHNpZ24oY29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVyc0RlcHJlY2F0
ZWQmLCBjb25zdCBDcnlwdG9LZXkmLCBjb25zdCBDcnlwdG9PcGVyYXRpb25EYXRhJiwgVmVjdG9y
Q2FsbGJhY2smJiwgVm9pZENhbGxiYWNrJiYgZmFpbHVyZUNhbGxiYWNrLCBFeGNlcHRpb25Db2Rl
Jik7Ci0gICAgdmlydHVhbCB2b2lkIHZlcmlmeShjb25zdCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0
ZXJzRGVwcmVjYXRlZCYsIGNvbnN0IENyeXB0b0tleSYsIGNvbnN0IENyeXB0b09wZXJhdGlvbkRh
dGEmIHNpZ25hdHVyZSwgY29uc3QgQ3J5cHRvT3BlcmF0aW9uRGF0YSYsIEJvb2xDYWxsYmFjayYm
LCBWb2lkQ2FsbGJhY2smJiBmYWlsdXJlQ2FsbGJhY2ssIEV4Y2VwdGlvbkNvZGUmKTsKLSAgICB2
aXJ0dWFsIHZvaWQgZGlnZXN0KGNvbnN0IENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnNEZXByZWNh
dGVkJiwgY29uc3QgQ3J5cHRvT3BlcmF0aW9uRGF0YSYsIFZlY3RvckNhbGxiYWNrJiYsIFZvaWRD
YWxsYmFjayYmIGZhaWx1cmVDYWxsYmFjaywgRXhjZXB0aW9uQ29kZSYpOworICAgIHZpcnR1YWwg
dm9pZCBlbmNyeXB0KGNvbnN0IENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnNEZXByZWNhdGVkJiwg
Y29uc3QgQ3J5cHRvS2V5JiwgY29uc3QgQnVmZmVyU291cmNlJiwgVmVjdG9yQ2FsbGJhY2smJiwg
Vm9pZENhbGxiYWNrJiYgZmFpbHVyZUNhbGxiYWNrLCBFeGNlcHRpb25Db2RlJik7CisgICAgdmly
dHVhbCB2b2lkIGRlY3J5cHQoY29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVyc0RlcHJlY2F0
ZWQmLCBjb25zdCBDcnlwdG9LZXkmLCBjb25zdCBCdWZmZXJTb3VyY2UmLCBWZWN0b3JDYWxsYmFj
ayYmLCBWb2lkQ2FsbGJhY2smJiBmYWlsdXJlQ2FsbGJhY2ssIEV4Y2VwdGlvbkNvZGUmKTsKKyAg
ICB2aXJ0dWFsIHZvaWQgc2lnbihjb25zdCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzRGVwcmVj
YXRlZCYsIGNvbnN0IENyeXB0b0tleSYsIGNvbnN0IEJ1ZmZlclNvdXJjZSYsIFZlY3RvckNhbGxi
YWNrJiYsIFZvaWRDYWxsYmFjayYmIGZhaWx1cmVDYWxsYmFjaywgRXhjZXB0aW9uQ29kZSYpOwor
ICAgIHZpcnR1YWwgdm9pZCB2ZXJpZnkoY29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVyc0Rl
cHJlY2F0ZWQmLCBjb25zdCBDcnlwdG9LZXkmLCBjb25zdCBCdWZmZXJTb3VyY2UmIHNpZ25hdHVy
ZSwgY29uc3QgQnVmZmVyU291cmNlJiwgQm9vbENhbGxiYWNrJiYsIFZvaWRDYWxsYmFjayYmIGZh
aWx1cmVDYWxsYmFjaywgRXhjZXB0aW9uQ29kZSYpOworICAgIHZpcnR1YWwgdm9pZCBkaWdlc3Qo
Y29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVyc0RlcHJlY2F0ZWQmLCBjb25zdCBCdWZmZXJT
b3VyY2UmLCBWZWN0b3JDYWxsYmFjayYmLCBWb2lkQ2FsbGJhY2smJiBmYWlsdXJlQ2FsbGJhY2ss
IEV4Y2VwdGlvbkNvZGUmKTsKICAgICB2aXJ0dWFsIHZvaWQgZ2VuZXJhdGVLZXkoY29uc3QgQ3J5
cHRvQWxnb3JpdGhtUGFyYW1ldGVyc0RlcHJlY2F0ZWQmLCBib29sIGV4dHJhY3RhYmxlLCBDcnlw
dG9LZXlVc2FnZSwgS2V5T3JLZXlQYWlyQ2FsbGJhY2smJiwgVm9pZENhbGxiYWNrJiYgZmFpbHVy
ZUNhbGxiYWNrLCBFeGNlcHRpb25Db2RlJik7CiAgICAgdmlydHVhbCB2b2lkIGRlcml2ZUtleShj
b25zdCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzRGVwcmVjYXRlZCYsIGNvbnN0IENyeXB0b0tl
eSYgYmFzZUtleSwgQ3J5cHRvQWxnb3JpdGhtKiBkZXJpdmVkS2V5VHlwZSwgYm9vbCBleHRyYWN0
YWJsZSwgQ3J5cHRvS2V5VXNhZ2UsIEtleUNhbGxiYWNrJiYsIFZvaWRDYWxsYmFjayYmIGZhaWx1
cmVDYWxsYmFjaywgRXhjZXB0aW9uQ29kZSYpOwogICAgIHZpcnR1YWwgdm9pZCBkZXJpdmVCaXRz
KGNvbnN0IENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnNEZXByZWNhdGVkJiwgY29uc3QgQ3J5cHRv
S2V5JiBiYXNlS2V5LCB1bnNpZ25lZCBsb25nIGxlbmd0aCwgVmVjdG9yQ2FsbGJhY2smJiwgVm9p
ZENhbGxiYWNrJiYgZmFpbHVyZUNhbGxiYWNrLCBFeGNlcHRpb25Db2RlJik7CiAgICAgdmlydHVh
bCB2b2lkIGltcG9ydEtleShjb25zdCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzRGVwcmVjYXRl
ZCYsIGNvbnN0IENyeXB0b0tleURhdGEmLCBib29sIGV4dHJhY3RhYmxlLCBDcnlwdG9LZXlVc2Fn
ZSwgS2V5Q2FsbGJhY2smJiwgVm9pZENhbGxiYWNrJiYgZmFpbHVyZUNhbGxiYWNrLCBFeGNlcHRp
b25Db2RlJik7CiAKICAgICAvLyBUaGVzZSBhcmUgb25seSBkaWZmZXJlbnQgZnJvbSBlbmNyeXB0
L2RlY3J5cHQgYmVjYXVzZSBzb21lIGFsZ29yaXRobXMgbWF5IG5vdCBleHBvc2UgZW5jcnlwdC9k
ZWNyeXB0LgotICAgIHZpcnR1YWwgdm9pZCBlbmNyeXB0Rm9yV3JhcEtleShjb25zdCBDcnlwdG9B
bGdvcml0aG1QYXJhbWV0ZXJzRGVwcmVjYXRlZCYsIGNvbnN0IENyeXB0b0tleSYsIGNvbnN0IENy
eXB0b09wZXJhdGlvbkRhdGEmLCBWZWN0b3JDYWxsYmFjayYmLCBWb2lkQ2FsbGJhY2smJiBmYWls
dXJlQ2FsbGJhY2ssIEV4Y2VwdGlvbkNvZGUmKTsKLSAgICB2aXJ0dWFsIHZvaWQgZGVjcnlwdEZv
clVud3JhcEtleShjb25zdCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzRGVwcmVjYXRlZCYsIGNv
bnN0IENyeXB0b0tleSYsIGNvbnN0IENyeXB0b09wZXJhdGlvbkRhdGEmLCBWZWN0b3JDYWxsYmFj
ayYmLCBWb2lkQ2FsbGJhY2smJiBmYWlsdXJlQ2FsbGJhY2ssIEV4Y2VwdGlvbkNvZGUmKTsKKyAg
ICB2aXJ0dWFsIHZvaWQgZW5jcnlwdEZvcldyYXBLZXkoY29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFy
YW1ldGVyc0RlcHJlY2F0ZWQmLCBjb25zdCBDcnlwdG9LZXkmLCBjb25zdCBCdWZmZXJTb3VyY2Um
LCBWZWN0b3JDYWxsYmFjayYmLCBWb2lkQ2FsbGJhY2smJiBmYWlsdXJlQ2FsbGJhY2ssIEV4Y2Vw
dGlvbkNvZGUmKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGVjcnlwdEZvclVud3JhcEtleShjb25zdCBD
cnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzRGVwcmVjYXRlZCYsIGNvbnN0IENyeXB0b0tleSYsIGNv
bnN0IEJ1ZmZlclNvdXJjZSYsIFZlY3RvckNhbGxiYWNrJiYsIFZvaWRDYWxsYmFjayYmIGZhaWx1
cmVDYWxsYmFjaywgRXhjZXB0aW9uQ29kZSYpOwogCiBwcm90ZWN0ZWQ6CiAgICAgQ3J5cHRvQWxn
b3JpdGhtKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vQ3J5cHRvS2V5U2Vy
aWFsaXphdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL0NyeXB0b0tleVNlcmlhbGl6YXRp
b24uaAppbmRleCBiNTEyZDQ5NGNmNmRmOWRjZWQwODMzMTZhNmI5NmRiM2QyYjFiNjcyLi5mZTk1
NTFjNjk1YjkyNThkZDY2OTEyOGJjMWVkNDFiODVhYjBjYjA0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9jcnlwdG8vQ3J5cHRvS2V5U2VyaWFsaXphdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2NyeXB0by9DcnlwdG9LZXlTZXJpYWxpemF0aW9uLmgKQEAgLTM5LDggKzM5LDYgQEAgY2xh
c3MgQ3J5cHRvQWxnb3JpdGhtOwogY2xhc3MgQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVyc0RlcHJl
Y2F0ZWQ7CiBjbGFzcyBDcnlwdG9LZXlEYXRhOwogCi10eXBlZGVmIHN0ZDo6cGFpcjxjb25zdCB1
aW50OF90Kiwgc2l6ZV90PiBDcnlwdG9PcGVyYXRpb25EYXRhOwotCiBzdHJ1Y3QgQ3J5cHRvQWxn
b3JpdGhtUGFpciB7CiAgICAgUmVmUHRyPENyeXB0b0FsZ29yaXRobT4gYWxnb3JpdGhtOwogICAg
IFJlZlB0cjxDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzRGVwcmVjYXRlZD4gcGFyYW1ldGVyczsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9XZWJLaXRTdWJ0bGVDcnlwdG8uaWRs
IGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL1dlYktpdFN1YnRsZUNyeXB0by5pZGwKaW5kZXggMTU1
NzM4MzQ5MjgwM2FlZjRiYzI0Njc2ZWQ1N2RiMGVhZGFjNTA1NS4uZjkwNTM1OGMxNzVjYTlhODcw
OTYzZjBkOWU3MGM2NGU3N2NhM2E5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRv
L1dlYktpdFN1YnRsZUNyeXB0by5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL1dlYktp
dFN1YnRsZUNyeXB0by5pZGwKQEAgLTI4LDE0ICsyOCwxNCBAQAogICAgIEdlbmVyYXRlSXNSZWFj
aGFibGU9SW1wbERvY3VtZW50LAogICAgIE5vSW50ZXJmYWNlT2JqZWN0LAogXSBpbnRlcmZhY2Ug
V2ViS2l0U3VidGxlQ3J5cHRvIHsKLSAgICBbQ3VzdG9tXSBQcm9taXNlIGVuY3J5cHQoQWxnb3Jp
dGhtSWRlbnRpZmllciBhbGdvcml0aG0sIEtleSBrZXksIHNlcXVlbmNlPENyeXB0b09wZXJhdGlv
bkRhdGE+IGRhdGEpOwotICAgIFtDdXN0b21dIFByb21pc2UgZGVjcnlwdChBbGdvcml0aG1JZGVu
dGlmaWVyIGFsZ29yaXRobSwgS2V5IGtleSwgc2VxdWVuY2U8Q3J5cHRvT3BlcmF0aW9uRGF0YT4g
ZGF0YSk7Ci0gICAgW0N1c3RvbV0gUHJvbWlzZSBzaWduKEFsZ29yaXRobUlkZW50aWZpZXIgYWxn
b3JpdGhtLCBLZXkga2V5LCBzZXF1ZW5jZTxDcnlwdG9PcGVyYXRpb25EYXRhPiBkYXRhKTsKLSAg
ICBbQ3VzdG9tXSBQcm9taXNlIHZlcmlmeShBbGdvcml0aG1JZGVudGlmaWVyIGFsZ29yaXRobSwg
S2V5IGtleSwgQ3J5cHRvT3BlcmF0aW9uRGF0YSBzaWduYXR1cmUsIHNlcXVlbmNlPENyeXB0b09w
ZXJhdGlvbkRhdGE+IGRhdGEpOwotICAgIFtDdXN0b21dIFByb21pc2UgZGlnZXN0KEFsZ29yaXRo
bUlkZW50aWZpZXIgYWxnb3JpdGhtLCBzZXF1ZW5jZTxDcnlwdG9PcGVyYXRpb25EYXRhPiBkYXRh
KTsKKyAgICBbQ3VzdG9tXSBQcm9taXNlIGVuY3J5cHQoQWxnb3JpdGhtSWRlbnRpZmllciBhbGdv
cml0aG0sIEtleSBrZXksIEJ1ZmZlclNvdXJjZSBkYXRhKTsKKyAgICBbQ3VzdG9tXSBQcm9taXNl
IGRlY3J5cHQoQWxnb3JpdGhtSWRlbnRpZmllciBhbGdvcml0aG0sIEtleSBrZXksIEJ1ZmZlclNv
dXJjZSBkYXRhKTsKKyAgICBbQ3VzdG9tXSBQcm9taXNlIHNpZ24oQWxnb3JpdGhtSWRlbnRpZmll
ciBhbGdvcml0aG0sIEtleSBrZXksIEJ1ZmZlclNvdXJjZSBkYXRhKTsKKyAgICBbQ3VzdG9tXSBQ
cm9taXNlIHZlcmlmeShBbGdvcml0aG1JZGVudGlmaWVyIGFsZ29yaXRobSwgS2V5IGtleSwgQnVm
ZmVyU291cmNlIHNpZ25hdHVyZSwgQnVmZmVyU291cmNlIGRhdGEpOworICAgIFtDdXN0b21dIFBy
b21pc2UgZGlnZXN0KEFsZ29yaXRobUlkZW50aWZpZXIgYWxnb3JpdGhtLCBCdWZmZXJTb3VyY2Ug
ZGF0YSk7CiAgICAgW0N1c3RvbV0gUHJvbWlzZSBnZW5lcmF0ZUtleShBbGdvcml0aG1JZGVudGlm
aWVyIGFsZ29yaXRobSwgb3B0aW9uYWwgYm9vbGVhbiBleHRyYWN0YWJsZSwgb3B0aW9uYWwgc2Vx
dWVuY2U8S2V5VXNhZ2U+IGtleVVzYWdlcyk7Ci0gICAgW0N1c3RvbV0gUHJvbWlzZSBpbXBvcnRL
ZXkoS2V5Rm9ybWF0IGZvcm1hdCwgQ3J5cHRvT3BlcmF0aW9uRGF0YSBrZXlEYXRhLCBBbGdvcml0
aG1JZGVudGlmaWVyPyBhbGdvcml0aG0sIG9wdGlvbmFsIGJvb2xlYW4gZXh0cmFjdGFibGUsIG9w
dGlvbmFsIHNlcXVlbmNlPEtleVVzYWdlPiBrZXlVc2FnZXMpOworICAgIFtDdXN0b21dIFByb21p
c2UgaW1wb3J0S2V5KEtleUZvcm1hdCBmb3JtYXQsIEJ1ZmZlclNvdXJjZSBrZXlEYXRhLCBBbGdv
cml0aG1JZGVudGlmaWVyPyBhbGdvcml0aG0sIG9wdGlvbmFsIGJvb2xlYW4gZXh0cmFjdGFibGUs
IG9wdGlvbmFsIHNlcXVlbmNlPEtleVVzYWdlPiBrZXlVc2FnZXMpOwogICAgIFtDdXN0b21dIFBy
b21pc2UgZXhwb3J0S2V5KEtleUZvcm1hdCBmb3JtYXQsIEtleSBrZXkpOwogICAgIFtDdXN0b21d
IFByb21pc2Ugd3JhcEtleShLZXlGb3JtYXQgZm9ybWF0LCBLZXkga2V5LCBLZXkgd3JhcHBpbmdL
ZXksIEFsZ29yaXRobUlkZW50aWZpZXIgd3JhcEFsZ29yaXRobSk7Ci0gICAgW0N1c3RvbV0gUHJv
bWlzZSB1bndyYXBLZXkoS2V5Rm9ybWF0IGZvcm1hdCwgQ3J5cHRvT3BlcmF0aW9uRGF0YSB3cmFw
cGVkS2V5LCBLZXkgdW53cmFwcGluZ0tleSwgQWxnb3JpdGhtSWRlbnRpZmllciB1bndyYXBBbGdv
cml0aG0sIEFsZ29yaXRobUlkZW50aWZpZXI/IHVud3JhcHBlZEtleUFsZ29yaXRobSwgb3B0aW9u
YWwgYm9vbGVhbiBleHRyYWN0YWJsZSwgb3B0aW9uYWwgc2VxdWVuY2U8S2V5VXNhZ2U+IGtleVVz
YWdlcyk7CisgICAgW0N1c3RvbV0gUHJvbWlzZSB1bndyYXBLZXkoS2V5Rm9ybWF0IGZvcm1hdCwg
QnVmZmVyU291cmNlIHdyYXBwZWRLZXksIEtleSB1bndyYXBwaW5nS2V5LCBBbGdvcml0aG1JZGVu
dGlmaWVyIHVud3JhcEFsZ29yaXRobSwgQWxnb3JpdGhtSWRlbnRpZmllcj8gdW53cmFwcGVkS2V5
QWxnb3JpdGhtLCBvcHRpb25hbCBib29sZWFuIGV4dHJhY3RhYmxlLCBvcHRpb25hbCBzZXF1ZW5j
ZTxLZXlVc2FnZT4ga2V5VXNhZ2VzKTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9j
cnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1BRVNfQ0JDLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobUFFU19DQkMuY3BwCmluZGV4IDhm
NDE5ZGM0NTgzNjI4YjdiZWRmMzUzNWZkYjcxOGFlNzQ5YzkwNzIuLmJjZDM5ZmU1NGJlNTExMjM4
ODAwMDQyYTgxZDZhNGU5N2NkYTU0ODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0
by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobUFFU19DQkMuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobUFFU19DQkMuY3BwCkBAIC02NSw3
ICs2NSw3IEBAIGJvb2wgQ3J5cHRvQWxnb3JpdGhtQUVTX0NCQzo6a2V5QWxnb3JpdGhtTWF0Y2hl
cyhjb25zdCBDcnlwdG9BbGdvcml0aG1BZXNDYmNQYXJhCiAgICAgcmV0dXJuIHRydWU7CiB9CiAK
LXZvaWQgQ3J5cHRvQWxnb3JpdGhtQUVTX0NCQzo6ZW5jcnlwdChjb25zdCBDcnlwdG9BbGdvcml0
aG1QYXJhbWV0ZXJzRGVwcmVjYXRlZCYgcGFyYW1ldGVycywgY29uc3QgQ3J5cHRvS2V5JiBrZXks
IGNvbnN0IENyeXB0b09wZXJhdGlvbkRhdGEmIGRhdGEsIFZlY3RvckNhbGxiYWNrJiYgY2FsbGJh
Y2ssIFZvaWRDYWxsYmFjayYmIGZhaWx1cmVDYWxsYmFjaywgRXhjZXB0aW9uQ29kZSYgZWMpCit2
b2lkIENyeXB0b0FsZ29yaXRobUFFU19DQkM6OmVuY3J5cHQoY29uc3QgQ3J5cHRvQWxnb3JpdGht
UGFyYW1ldGVyc0RlcHJlY2F0ZWQmIHBhcmFtZXRlcnMsIGNvbnN0IENyeXB0b0tleSYga2V5LCBj
b25zdCBCdWZmZXJTb3VyY2UmIGRhdGEsIFZlY3RvckNhbGxiYWNrJiYgY2FsbGJhY2ssIFZvaWRD
YWxsYmFjayYmIGZhaWx1cmVDYWxsYmFjaywgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgY29u
c3QgQ3J5cHRvQWxnb3JpdGhtQWVzQ2JjUGFyYW1zRGVwcmVjYXRlZCYgYWVzQ0JDUGFyYW1ldGVy
cyA9IGRvd25jYXN0PENyeXB0b0FsZ29yaXRobUFlc0NiY1BhcmFtc0RlcHJlY2F0ZWQ+KHBhcmFt
ZXRlcnMpOwogCkBAIC03Nyw3ICs3Nyw3IEBAIHZvaWQgQ3J5cHRvQWxnb3JpdGhtQUVTX0NCQzo6
ZW5jcnlwdChjb25zdCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzRGVwcmVjYXRlZCYKICAgICBw
bGF0Zm9ybUVuY3J5cHQoYWVzQ0JDUGFyYW1ldGVycywgZG93bmNhc3Q8Q3J5cHRvS2V5QUVTPihr
ZXkpLCBkYXRhLCBXVEZNb3ZlKGNhbGxiYWNrKSwgV1RGTW92ZShmYWlsdXJlQ2FsbGJhY2spLCBl
Yyk7CiB9CiAKLXZvaWQgQ3J5cHRvQWxnb3JpdGhtQUVTX0NCQzo6ZGVjcnlwdChjb25zdCBDcnlw
dG9BbGdvcml0aG1QYXJhbWV0ZXJzRGVwcmVjYXRlZCYgcGFyYW1ldGVycywgY29uc3QgQ3J5cHRv
S2V5JiBrZXksIGNvbnN0IENyeXB0b09wZXJhdGlvbkRhdGEmIGRhdGEsIFZlY3RvckNhbGxiYWNr
JiYgY2FsbGJhY2ssIFZvaWRDYWxsYmFjayYmIGZhaWx1cmVDYWxsYmFjaywgRXhjZXB0aW9uQ29k
ZSYgZWMpCit2b2lkIENyeXB0b0FsZ29yaXRobUFFU19DQkM6OmRlY3J5cHQoY29uc3QgQ3J5cHRv
QWxnb3JpdGhtUGFyYW1ldGVyc0RlcHJlY2F0ZWQmIHBhcmFtZXRlcnMsIGNvbnN0IENyeXB0b0tl
eSYga2V5LCBjb25zdCBCdWZmZXJTb3VyY2UmIGRhdGEsIFZlY3RvckNhbGxiYWNrJiYgY2FsbGJh
Y2ssIFZvaWRDYWxsYmFjayYmIGZhaWx1cmVDYWxsYmFjaywgRXhjZXB0aW9uQ29kZSYgZWMpCiB7
CiAgICAgY29uc3QgQ3J5cHRvQWxnb3JpdGhtQWVzQ2JjUGFyYW1zRGVwcmVjYXRlZCYgYWVzQ0JD
UGFyYW1ldGVycyA9IGRvd25jYXN0PENyeXB0b0FsZ29yaXRobUFlc0NiY1BhcmFtc0RlcHJlY2F0
ZWQ+KHBhcmFtZXRlcnMpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxn
b3JpdGhtcy9DcnlwdG9BbGdvcml0aG1BRVNfQ0JDLmggYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8v
YWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1BRVNfQ0JDLmgKaW5kZXggNjljZWNjYTNmZGVhZTIz
ODVjYjk1ZmNhN2FkNDNjMzVmM2EwYTRlNi4uNTUzYjE1MTA5NTM3YjY4OTJmYmRjZjYwOGE2OTdi
OTEwOGNlYzM5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMv
Q3J5cHRvQWxnb3JpdGhtQUVTX0NCQy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdv
cml0aG1zL0NyeXB0b0FsZ29yaXRobUFFU19DQkMuaApAQCAtNDQsOCArNDQsOCBAQCBwdWJsaWM6
CiAKICAgICBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyIGlkZW50aWZpZXIoKSBjb25zdCBvdmVy
cmlkZTsKIAotICAgIHZvaWQgZW5jcnlwdChjb25zdCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJz
RGVwcmVjYXRlZCYsIGNvbnN0IENyeXB0b0tleSYsIGNvbnN0IENyeXB0b09wZXJhdGlvbkRhdGEm
LCBWZWN0b3JDYWxsYmFjayYmLCBWb2lkQ2FsbGJhY2smJiBmYWlsdXJlQ2FsbGJhY2ssIEV4Y2Vw
dGlvbkNvZGUmKSBvdmVycmlkZTsKLSAgICB2b2lkIGRlY3J5cHQoY29uc3QgQ3J5cHRvQWxnb3Jp
dGhtUGFyYW1ldGVyc0RlcHJlY2F0ZWQmLCBjb25zdCBDcnlwdG9LZXkmLCBjb25zdCBDcnlwdG9P
cGVyYXRpb25EYXRhJiwgVmVjdG9yQ2FsbGJhY2smJiwgVm9pZENhbGxiYWNrJiYgZmFpbHVyZUNh
bGxiYWNrLCBFeGNlcHRpb25Db2RlJikgb3ZlcnJpZGU7CisgICAgdm9pZCBlbmNyeXB0KGNvbnN0
IENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnNEZXByZWNhdGVkJiwgY29uc3QgQ3J5cHRvS2V5Jiwg
Y29uc3QgQnVmZmVyU291cmNlJiwgVmVjdG9yQ2FsbGJhY2smJiwgVm9pZENhbGxiYWNrJiYgZmFp
bHVyZUNhbGxiYWNrLCBFeGNlcHRpb25Db2RlJikgb3ZlcnJpZGU7CisgICAgdm9pZCBkZWNyeXB0
KGNvbnN0IENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnNEZXByZWNhdGVkJiwgY29uc3QgQ3J5cHRv
S2V5JiwgY29uc3QgQnVmZmVyU291cmNlJiwgVmVjdG9yQ2FsbGJhY2smJiwgVm9pZENhbGxiYWNr
JiYgZmFpbHVyZUNhbGxiYWNrLCBFeGNlcHRpb25Db2RlJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBn
ZW5lcmF0ZUtleShjb25zdCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzRGVwcmVjYXRlZCYsIGJv
b2wgZXh0cmFjdGFibGUsIENyeXB0b0tleVVzYWdlLCBLZXlPcktleVBhaXJDYWxsYmFjayYmLCBW
b2lkQ2FsbGJhY2smJiBmYWlsdXJlQ2FsbGJhY2ssIEV4Y2VwdGlvbkNvZGUmKSBvdmVycmlkZTsK
ICAgICB2b2lkIGltcG9ydEtleShjb25zdCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzRGVwcmVj
YXRlZCYsIGNvbnN0IENyeXB0b0tleURhdGEmLCBib29sIGV4dHJhY3RhYmxlLCBDcnlwdG9LZXlV
c2FnZSwgS2V5Q2FsbGJhY2smJiwgVm9pZENhbGxiYWNrJiYgZmFpbHVyZUNhbGxiYWNrLCBFeGNl
cHRpb25Db2RlJikgb3ZlcnJpZGU7CiAKQEAgLTU0LDggKzU0LDggQEAgcHJpdmF0ZToKICAgICB2
aXJ0dWFsIH5DcnlwdG9BbGdvcml0aG1BRVNfQ0JDKCk7CiAKICAgICBib29sIGtleUFsZ29yaXRo
bU1hdGNoZXMoY29uc3QgQ3J5cHRvQWxnb3JpdGhtQWVzQ2JjUGFyYW1zRGVwcmVjYXRlZCYgYWxn
b3JpdGhtUGFyYW1ldGVycywgY29uc3QgQ3J5cHRvS2V5JikgY29uc3Q7Ci0gICAgdm9pZCBwbGF0
Zm9ybUVuY3J5cHQoY29uc3QgQ3J5cHRvQWxnb3JpdGhtQWVzQ2JjUGFyYW1zRGVwcmVjYXRlZCYs
IGNvbnN0IENyeXB0b0tleUFFUyYsIGNvbnN0IENyeXB0b09wZXJhdGlvbkRhdGEmLCBWZWN0b3JD
YWxsYmFjayYmLCBWb2lkQ2FsbGJhY2smJiBmYWlsdXJlQ2FsbGJhY2ssIEV4Y2VwdGlvbkNvZGUm
KTsKLSAgICB2b2lkIHBsYXRmb3JtRGVjcnlwdChjb25zdCBDcnlwdG9BbGdvcml0aG1BZXNDYmNQ
YXJhbXNEZXByZWNhdGVkJiwgY29uc3QgQ3J5cHRvS2V5QUVTJiwgY29uc3QgQ3J5cHRvT3BlcmF0
aW9uRGF0YSYsIFZlY3RvckNhbGxiYWNrJiYsIFZvaWRDYWxsYmFjayYmIGZhaWx1cmVDYWxsYmFj
aywgRXhjZXB0aW9uQ29kZSYpOworICAgIHZvaWQgcGxhdGZvcm1FbmNyeXB0KGNvbnN0IENyeXB0
b0FsZ29yaXRobUFlc0NiY1BhcmFtc0RlcHJlY2F0ZWQmLCBjb25zdCBDcnlwdG9LZXlBRVMmLCBj
b25zdCBCdWZmZXJTb3VyY2UmLCBWZWN0b3JDYWxsYmFjayYmLCBWb2lkQ2FsbGJhY2smJiBmYWls
dXJlQ2FsbGJhY2ssIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICB2b2lkIHBsYXRmb3JtRGVjcnlwdChj
b25zdCBDcnlwdG9BbGdvcml0aG1BZXNDYmNQYXJhbXNEZXByZWNhdGVkJiwgY29uc3QgQ3J5cHRv
S2V5QUVTJiwgY29uc3QgQnVmZmVyU291cmNlJiwgVmVjdG9yQ2FsbGJhY2smJiwgVm9pZENhbGxi
YWNrJiYgZmFpbHVyZUNhbGxiYWNrLCBFeGNlcHRpb25Db2RlJik7CiB9OwogCiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1BRVNf
S1cuY3BwIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGht
QUVTX0tXLmNwcAppbmRleCBjZWU1N2M1ZTU0NzU3NDYwNjRkMGQ0ZmRmZTU0NGY2ZGE5MmY4MDRl
Li43MGI3ZWEzMmMyZWZjNDg1ZDhkZTM5OWVjZmM1NWNhNWExOWFiNTFiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1BRVNfS1cuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobUFF
U19LVy5jcHAKQEAgLTY0LDcgKzY0LDcgQEAgYm9vbCBDcnlwdG9BbGdvcml0aG1BRVNfS1c6Omtl
eUFsZ29yaXRobU1hdGNoZXMoY29uc3QgQ3J5cHRvS2V5JiBrZXkpIGNvbnN0CiAgICAgcmV0dXJu
IHRydWU7CiB9CiAKLXZvaWQgQ3J5cHRvQWxnb3JpdGhtQUVTX0tXOjplbmNyeXB0Rm9yV3JhcEtl
eShjb25zdCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzRGVwcmVjYXRlZCYsIGNvbnN0IENyeXB0
b0tleSYga2V5LCBjb25zdCBDcnlwdG9PcGVyYXRpb25EYXRhJiBkYXRhLCBWZWN0b3JDYWxsYmFj
ayYmIGNhbGxiYWNrLCBWb2lkQ2FsbGJhY2smJiBmYWlsdXJlQ2FsbGJhY2ssIEV4Y2VwdGlvbkNv
ZGUmIGVjKQordm9pZCBDcnlwdG9BbGdvcml0aG1BRVNfS1c6OmVuY3J5cHRGb3JXcmFwS2V5KGNv
bnN0IENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnNEZXByZWNhdGVkJiwgY29uc3QgQ3J5cHRvS2V5
JiBrZXksIGNvbnN0IEJ1ZmZlclNvdXJjZSYgZGF0YSwgVmVjdG9yQ2FsbGJhY2smJiBjYWxsYmFj
aywgVm9pZENhbGxiYWNrJiYgZmFpbHVyZUNhbGxiYWNrLCBFeGNlcHRpb25Db2RlJiBlYykKIHsK
ICAgICBpZiAoIWtleUFsZ29yaXRobU1hdGNoZXMoa2V5KSkgewogICAgICAgICBlYyA9IE5PVF9T
VVBQT1JURURfRVJSOwpAQCAtNzQsNyArNzQsNyBAQCB2b2lkIENyeXB0b0FsZ29yaXRobUFFU19L
Vzo6ZW5jcnlwdEZvcldyYXBLZXkoY29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVyc0RlcAog
ICAgIHBsYXRmb3JtRW5jcnlwdChkb3duY2FzdDxDcnlwdG9LZXlBRVM+KGtleSksIGRhdGEsIFdU
Rk1vdmUoY2FsbGJhY2spLCBXVEZNb3ZlKGZhaWx1cmVDYWxsYmFjayksIGVjKTsKIH0KIAotdm9p
ZCBDcnlwdG9BbGdvcml0aG1BRVNfS1c6OmRlY3J5cHRGb3JVbndyYXBLZXkoY29uc3QgQ3J5cHRv
QWxnb3JpdGhtUGFyYW1ldGVyc0RlcHJlY2F0ZWQmLCBjb25zdCBDcnlwdG9LZXkmIGtleSwgY29u
c3QgQ3J5cHRvT3BlcmF0aW9uRGF0YSYgZGF0YSwgVmVjdG9yQ2FsbGJhY2smJiBjYWxsYmFjaywg
Vm9pZENhbGxiYWNrJiYgZmFpbHVyZUNhbGxiYWNrLCBFeGNlcHRpb25Db2RlJiBlYykKK3ZvaWQg
Q3J5cHRvQWxnb3JpdGhtQUVTX0tXOjpkZWNyeXB0Rm9yVW53cmFwS2V5KGNvbnN0IENyeXB0b0Fs
Z29yaXRobVBhcmFtZXRlcnNEZXByZWNhdGVkJiwgY29uc3QgQ3J5cHRvS2V5JiBrZXksIGNvbnN0
IEJ1ZmZlclNvdXJjZSYgZGF0YSwgVmVjdG9yQ2FsbGJhY2smJiBjYWxsYmFjaywgVm9pZENhbGxi
YWNrJiYgZmFpbHVyZUNhbGxiYWNrLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBpZiAoIWtl
eUFsZ29yaXRobU1hdGNoZXMoa2V5KSkgewogICAgICAgICBlYyA9IE5PVF9TVVBQT1JURURfRVJS
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxn
b3JpdGhtQUVTX0tXLmggYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9B
bGdvcml0aG1BRVNfS1cuaAppbmRleCA3NjU3NmI3YjM3MGI2MzIwM2JkNGQ5MTQzOWJmYjRjNzUy
ODFjOTM5Li4wZmQwZGY1OWY5Y2EwYmMzOTdkNTEyNzA2ZGE0NmYyMjU0Mjc3MGJiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1BRVNf
S1cuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0
aG1BRVNfS1cuaApAQCAtNDMsOCArNDMsOCBAQCBwdWJsaWM6CiAKICAgICBDcnlwdG9BbGdvcml0
aG1JZGVudGlmaWVyIGlkZW50aWZpZXIoKSBjb25zdCBvdmVycmlkZTsKIAotICAgIHZvaWQgZW5j
cnlwdEZvcldyYXBLZXkoY29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVyc0RlcHJlY2F0ZWQm
LCBjb25zdCBDcnlwdG9LZXkmLCBjb25zdCBDcnlwdG9PcGVyYXRpb25EYXRhJiwgVmVjdG9yQ2Fs
bGJhY2smJiwgVm9pZENhbGxiYWNrJiYgZmFpbHVyZUNhbGxiYWNrLCBFeGNlcHRpb25Db2RlJikg
b3ZlcnJpZGU7Ci0gICAgdm9pZCBkZWNyeXB0Rm9yVW53cmFwS2V5KGNvbnN0IENyeXB0b0FsZ29y
aXRobVBhcmFtZXRlcnNEZXByZWNhdGVkJiwgY29uc3QgQ3J5cHRvS2V5JiwgY29uc3QgQ3J5cHRv
T3BlcmF0aW9uRGF0YSYsIFZlY3RvckNhbGxiYWNrJiYsIFZvaWRDYWxsYmFjayYmIGZhaWx1cmVD
YWxsYmFjaywgRXhjZXB0aW9uQ29kZSYpIG92ZXJyaWRlOworICAgIHZvaWQgZW5jcnlwdEZvcldy
YXBLZXkoY29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVyc0RlcHJlY2F0ZWQmLCBjb25zdCBD
cnlwdG9LZXkmLCBjb25zdCBCdWZmZXJTb3VyY2UmLCBWZWN0b3JDYWxsYmFjayYmLCBWb2lkQ2Fs
bGJhY2smJiBmYWlsdXJlQ2FsbGJhY2ssIEV4Y2VwdGlvbkNvZGUmKSBvdmVycmlkZTsKKyAgICB2
b2lkIGRlY3J5cHRGb3JVbndyYXBLZXkoY29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVyc0Rl
cHJlY2F0ZWQmLCBjb25zdCBDcnlwdG9LZXkmLCBjb25zdCBCdWZmZXJTb3VyY2UmLCBWZWN0b3JD
YWxsYmFjayYmLCBWb2lkQ2FsbGJhY2smJiBmYWlsdXJlQ2FsbGJhY2ssIEV4Y2VwdGlvbkNvZGUm
KSBvdmVycmlkZTsKICAgICB2b2lkIGdlbmVyYXRlS2V5KGNvbnN0IENyeXB0b0FsZ29yaXRobVBh
cmFtZXRlcnNEZXByZWNhdGVkJiwgYm9vbCBleHRyYWN0YWJsZSwgQ3J5cHRvS2V5VXNhZ2UsIEtl
eU9yS2V5UGFpckNhbGxiYWNrJiYsIFZvaWRDYWxsYmFjayYmIGZhaWx1cmVDYWxsYmFjaywgRXhj
ZXB0aW9uQ29kZSYpIG92ZXJyaWRlOwogICAgIHZvaWQgaW1wb3J0S2V5KGNvbnN0IENyeXB0b0Fs
Z29yaXRobVBhcmFtZXRlcnNEZXByZWNhdGVkJiwgY29uc3QgQ3J5cHRvS2V5RGF0YSYsIGJvb2wg
ZXh0cmFjdGFibGUsIENyeXB0b0tleVVzYWdlLCBLZXlDYWxsYmFjayYmLCBWb2lkQ2FsbGJhY2sm
JiBmYWlsdXJlQ2FsbGJhY2ssIEV4Y2VwdGlvbkNvZGUmKSBvdmVycmlkZTsKIApAQCAtNTMsOCAr
NTMsOCBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgfkNyeXB0b0FsZ29yaXRobUFFU19LVygpOwog
CiAgICAgYm9vbCBrZXlBbGdvcml0aG1NYXRjaGVzKGNvbnN0IENyeXB0b0tleSYpIGNvbnN0Owot
ICAgIHZvaWQgcGxhdGZvcm1FbmNyeXB0KGNvbnN0IENyeXB0b0tleUFFUyYsIGNvbnN0IENyeXB0
b09wZXJhdGlvbkRhdGEmLCBWZWN0b3JDYWxsYmFjayYmLCBWb2lkQ2FsbGJhY2smJiBmYWlsdXJl
Q2FsbGJhY2ssIEV4Y2VwdGlvbkNvZGUmKTsKLSAgICB2b2lkIHBsYXRmb3JtRGVjcnlwdChjb25z
dCBDcnlwdG9LZXlBRVMmLCBjb25zdCBDcnlwdG9PcGVyYXRpb25EYXRhJiwgVmVjdG9yQ2FsbGJh
Y2smJiwgVm9pZENhbGxiYWNrJiYgZmFpbHVyZUNhbGxiYWNrLCBFeGNlcHRpb25Db2RlJik7Cisg
ICAgdm9pZCBwbGF0Zm9ybUVuY3J5cHQoY29uc3QgQ3J5cHRvS2V5QUVTJiwgY29uc3QgQnVmZmVy
U291cmNlJiwgVmVjdG9yQ2FsbGJhY2smJiwgVm9pZENhbGxiYWNrJiYgZmFpbHVyZUNhbGxiYWNr
LCBFeGNlcHRpb25Db2RlJik7CisgICAgdm9pZCBwbGF0Zm9ybURlY3J5cHQoY29uc3QgQ3J5cHRv
S2V5QUVTJiwgY29uc3QgQnVmZmVyU291cmNlJiwgVmVjdG9yQ2FsbGJhY2smJiwgVm9pZENhbGxi
YWNrJiYgZmFpbHVyZUNhbGxiYWNrLCBFeGNlcHRpb25Db2RlJik7CiB9OwogCiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1ITUFD
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobUhN
QUMuY3BwCmluZGV4IDcwNDI3NWY4YjE4MTI4Y2FmNGY1NmE0ZTVkYTY4ODcyNzRiYzIwMDUuLjgx
ZmE1MjM0OWRhNDNlOGIyZjk4ZDgyOTdiZTYwOWQyMjU1MjRkNjggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobUhNQUMuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobUhNQUMuY3Bw
CkBAIC02Nyw3ICs2Nyw3IEBAIGJvb2wgQ3J5cHRvQWxnb3JpdGhtSE1BQzo6a2V5QWxnb3JpdGht
TWF0Y2hlcyhjb25zdCBDcnlwdG9BbGdvcml0aG1IbWFjUGFyYW1zRGVwCiAgICAgcmV0dXJuIHRy
dWU7CiB9CiAKLXZvaWQgQ3J5cHRvQWxnb3JpdGhtSE1BQzo6c2lnbihjb25zdCBDcnlwdG9BbGdv
cml0aG1QYXJhbWV0ZXJzRGVwcmVjYXRlZCYgcGFyYW1ldGVycywgY29uc3QgQ3J5cHRvS2V5JiBr
ZXksIGNvbnN0IENyeXB0b09wZXJhdGlvbkRhdGEmIGRhdGEsIFZlY3RvckNhbGxiYWNrJiYgY2Fs
bGJhY2ssIFZvaWRDYWxsYmFjayYmIGZhaWx1cmVDYWxsYmFjaywgRXhjZXB0aW9uQ29kZSYgZWMp
Cit2b2lkIENyeXB0b0FsZ29yaXRobUhNQUM6OnNpZ24oY29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFy
YW1ldGVyc0RlcHJlY2F0ZWQmIHBhcmFtZXRlcnMsIGNvbnN0IENyeXB0b0tleSYga2V5LCBjb25z
dCBCdWZmZXJTb3VyY2UmIGRhdGEsIFZlY3RvckNhbGxiYWNrJiYgY2FsbGJhY2ssIFZvaWRDYWxs
YmFjayYmIGZhaWx1cmVDYWxsYmFjaywgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgY29uc3Qg
Q3J5cHRvQWxnb3JpdGhtSG1hY1BhcmFtc0RlcHJlY2F0ZWQmIGhtYWNQYXJhbWV0ZXJzID0gZG93
bmNhc3Q8Q3J5cHRvQWxnb3JpdGhtSG1hY1BhcmFtc0RlcHJlY2F0ZWQ+KHBhcmFtZXRlcnMpOwog
CkBAIC03OSw3ICs3OSw3IEBAIHZvaWQgQ3J5cHRvQWxnb3JpdGhtSE1BQzo6c2lnbihjb25zdCBD
cnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzRGVwcmVjYXRlZCYgcGFyYW1lCiAgICAgcGxhdGZvcm1T
aWduKGhtYWNQYXJhbWV0ZXJzLCBkb3duY2FzdDxDcnlwdG9LZXlITUFDPihrZXkpLCBkYXRhLCBX
VEZNb3ZlKGNhbGxiYWNrKSwgV1RGTW92ZShmYWlsdXJlQ2FsbGJhY2spLCBlYyk7CiB9CiAKLXZv
aWQgQ3J5cHRvQWxnb3JpdGhtSE1BQzo6dmVyaWZ5KGNvbnN0IENyeXB0b0FsZ29yaXRobVBhcmFt
ZXRlcnNEZXByZWNhdGVkJiBwYXJhbWV0ZXJzLCBjb25zdCBDcnlwdG9LZXkmIGtleSwgY29uc3Qg
Q3J5cHRvT3BlcmF0aW9uRGF0YSYgZXhwZWN0ZWRTaWduYXR1cmUsIGNvbnN0IENyeXB0b09wZXJh
dGlvbkRhdGEmIGRhdGEsIEJvb2xDYWxsYmFjayYmIGNhbGxiYWNrLCBWb2lkQ2FsbGJhY2smJiBm
YWlsdXJlQ2FsbGJhY2ssIEV4Y2VwdGlvbkNvZGUmIGVjKQordm9pZCBDcnlwdG9BbGdvcml0aG1I
TUFDOjp2ZXJpZnkoY29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVyc0RlcHJlY2F0ZWQmIHBh
cmFtZXRlcnMsIGNvbnN0IENyeXB0b0tleSYga2V5LCBjb25zdCBCdWZmZXJTb3VyY2UmIGV4cGVj
dGVkU2lnbmF0dXJlLCBjb25zdCBCdWZmZXJTb3VyY2UmIGRhdGEsIEJvb2xDYWxsYmFjayYmIGNh
bGxiYWNrLCBWb2lkQ2FsbGJhY2smJiBmYWlsdXJlQ2FsbGJhY2ssIEV4Y2VwdGlvbkNvZGUmIGVj
KQogewogICAgIGNvbnN0IENyeXB0b0FsZ29yaXRobUhtYWNQYXJhbXNEZXByZWNhdGVkJiBobWFj
UGFyYW1ldGVycyA9IGRvd25jYXN0PENyeXB0b0FsZ29yaXRobUhtYWNQYXJhbXNEZXByZWNhdGVk
PihwYXJhbWV0ZXJzKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29y
aXRobXMvQ3J5cHRvQWxnb3JpdGhtSE1BQy5oIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29y
aXRobXMvQ3J5cHRvQWxnb3JpdGhtSE1BQy5oCmluZGV4IDViNjdlMmRmMDJlZmI5YmFkYmQ4OTQ4
MmJlMjEwMjE3NDljNmYzODQuLmNmMjFkM2QzZmU1NjNlNTRmYzYyNjY3ZGIwNTBmZTUyYThmNzcx
ZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0Fs
Z29yaXRobUhNQUMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9Dcnlw
dG9BbGdvcml0aG1ITUFDLmgKQEAgLTQ0LDggKzQ0LDggQEAgcHVibGljOgogCiAgICAgQ3J5cHRv
QWxnb3JpdGhtSWRlbnRpZmllciBpZGVudGlmaWVyKCkgY29uc3Qgb3ZlcnJpZGU7CiAKLSAgICB2
b2lkIHNpZ24oY29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVyc0RlcHJlY2F0ZWQmLCBjb25z
dCBDcnlwdG9LZXkmLCBjb25zdCBDcnlwdG9PcGVyYXRpb25EYXRhJiwgVmVjdG9yQ2FsbGJhY2sm
JiwgVm9pZENhbGxiYWNrJiYgZmFpbHVyZUNhbGxiYWNrLCBFeGNlcHRpb25Db2RlJikgb3ZlcnJp
ZGU7Ci0gICAgdm9pZCB2ZXJpZnkoY29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVyc0RlcHJl
Y2F0ZWQmLCBjb25zdCBDcnlwdG9LZXkmLCBjb25zdCBDcnlwdG9PcGVyYXRpb25EYXRhJiBzaWdu
YXR1cmUsIGNvbnN0IENyeXB0b09wZXJhdGlvbkRhdGEmLCBCb29sQ2FsbGJhY2smJiwgVm9pZENh
bGxiYWNrJiYgZmFpbHVyZUNhbGxiYWNrLCBFeGNlcHRpb25Db2RlJikgb3ZlcnJpZGU7CisgICAg
dm9pZCBzaWduKGNvbnN0IENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnNEZXByZWNhdGVkJiwgY29u
c3QgQ3J5cHRvS2V5JiwgY29uc3QgQnVmZmVyU291cmNlJiwgVmVjdG9yQ2FsbGJhY2smJiwgVm9p
ZENhbGxiYWNrJiYgZmFpbHVyZUNhbGxiYWNrLCBFeGNlcHRpb25Db2RlJikgb3ZlcnJpZGU7Cisg
ICAgdm9pZCB2ZXJpZnkoY29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVyc0RlcHJlY2F0ZWQm
LCBjb25zdCBDcnlwdG9LZXkmLCBjb25zdCBCdWZmZXJTb3VyY2UmIHNpZ25hdHVyZSwgY29uc3Qg
QnVmZmVyU291cmNlJiwgQm9vbENhbGxiYWNrJiYsIFZvaWRDYWxsYmFjayYmIGZhaWx1cmVDYWxs
YmFjaywgRXhjZXB0aW9uQ29kZSYpIG92ZXJyaWRlOwogICAgIHZvaWQgZ2VuZXJhdGVLZXkoY29u
c3QgQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVyc0RlcHJlY2F0ZWQmLCBib29sIGV4dHJhY3RhYmxl
LCBDcnlwdG9LZXlVc2FnZSwgS2V5T3JLZXlQYWlyQ2FsbGJhY2smJiwgVm9pZENhbGxiYWNrJiYg
ZmFpbHVyZUNhbGxiYWNrLCBFeGNlcHRpb25Db2RlJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBpbXBv
cnRLZXkoY29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVyc0RlcHJlY2F0ZWQmLCBjb25zdCBD
cnlwdG9LZXlEYXRhJiwgYm9vbCBleHRyYWN0YWJsZSwgQ3J5cHRvS2V5VXNhZ2UsIEtleUNhbGxi
YWNrJiYsIFZvaWRDYWxsYmFjayYmIGZhaWx1cmVDYWxsYmFjaywgRXhjZXB0aW9uQ29kZSYpIG92
ZXJyaWRlOwogCkBAIC01NCw4ICs1NCw4IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB+Q3J5cHRv
QWxnb3JpdGhtSE1BQygpOwogCiAgICAgYm9vbCBrZXlBbGdvcml0aG1NYXRjaGVzKGNvbnN0IENy
eXB0b0FsZ29yaXRobUhtYWNQYXJhbXNEZXByZWNhdGVkJiBhbGdvcml0aG1QYXJhbWV0ZXJzLCBj
b25zdCBDcnlwdG9LZXkmKSBjb25zdDsKLSAgICB2b2lkIHBsYXRmb3JtU2lnbihjb25zdCBDcnlw
dG9BbGdvcml0aG1IbWFjUGFyYW1zRGVwcmVjYXRlZCYsIGNvbnN0IENyeXB0b0tleUhNQUMmLCBj
b25zdCBDcnlwdG9PcGVyYXRpb25EYXRhJiwgVmVjdG9yQ2FsbGJhY2smJiwgVm9pZENhbGxiYWNr
JiYgZmFpbHVyZUNhbGxiYWNrLCBFeGNlcHRpb25Db2RlJik7Ci0gICAgdm9pZCBwbGF0Zm9ybVZl
cmlmeShjb25zdCBDcnlwdG9BbGdvcml0aG1IbWFjUGFyYW1zRGVwcmVjYXRlZCYsIGNvbnN0IENy
eXB0b0tleUhNQUMmLCBjb25zdCBDcnlwdG9PcGVyYXRpb25EYXRhJiBzaWduYXR1cmUsIGNvbnN0
IENyeXB0b09wZXJhdGlvbkRhdGEmLCBCb29sQ2FsbGJhY2smJiwgVm9pZENhbGxiYWNrJiYgZmFp
bHVyZUNhbGxiYWNrLCBFeGNlcHRpb25Db2RlJik7CisgICAgdm9pZCBwbGF0Zm9ybVNpZ24oY29u
c3QgQ3J5cHRvQWxnb3JpdGhtSG1hY1BhcmFtc0RlcHJlY2F0ZWQmLCBjb25zdCBDcnlwdG9LZXlI
TUFDJiwgY29uc3QgQnVmZmVyU291cmNlJiwgVmVjdG9yQ2FsbGJhY2smJiwgVm9pZENhbGxiYWNr
JiYgZmFpbHVyZUNhbGxiYWNrLCBFeGNlcHRpb25Db2RlJik7CisgICAgdm9pZCBwbGF0Zm9ybVZl
cmlmeShjb25zdCBDcnlwdG9BbGdvcml0aG1IbWFjUGFyYW1zRGVwcmVjYXRlZCYsIGNvbnN0IENy
eXB0b0tleUhNQUMmLCBjb25zdCBCdWZmZXJTb3VyY2UmIHNpZ25hdHVyZSwgY29uc3QgQnVmZmVy
U291cmNlJiwgQm9vbENhbGxiYWNrJiYsIFZvaWRDYWxsYmFjayYmIGZhaWx1cmVDYWxsYmFjaywg
RXhjZXB0aW9uQ29kZSYpOwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3J5
cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtUlNBRVNfUEtDUzFfdjFfNS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1SU0FFU19QS0NTMV92
MV81LmNwcAppbmRleCBkYjViZTQ2ZThlYzYxNGUyZjYyMDc4ZWNlODY3ZjYxYmJhZWMyOWFlLi4y
ZTI0NzM1MzQ3YzY4MDFmMjM3MTM5OGU2MmM4M2M0MjE4ZWNkMjdiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1SU0FFU19QS0NTMV92
MV81LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdv
cml0aG1SU0FFU19QS0NTMV92MV81LmNwcApAQCAtNjUsNyArNjUsNyBAQCBib29sIENyeXB0b0Fs
Z29yaXRobVJTQUVTX1BLQ1MxX3YxXzU6OmtleUFsZ29yaXRobU1hdGNoZXMoY29uc3QgQ3J5cHRv
S2V5JiBrZXkpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXZvaWQgQ3J5cHRvQWxnb3JpdGhtUlNB
RVNfUEtDUzFfdjFfNTo6ZW5jcnlwdChjb25zdCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzRGVw
cmVjYXRlZCYsIGNvbnN0IENyeXB0b0tleSYga2V5LCBjb25zdCBDcnlwdG9PcGVyYXRpb25EYXRh
JiBkYXRhLCBWZWN0b3JDYWxsYmFjayYmIGNhbGxiYWNrLCBWb2lkQ2FsbGJhY2smJiBmYWlsdXJl
Q2FsbGJhY2ssIEV4Y2VwdGlvbkNvZGUmIGVjKQordm9pZCBDcnlwdG9BbGdvcml0aG1SU0FFU19Q
S0NTMV92MV81OjplbmNyeXB0KGNvbnN0IENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnNEZXByZWNh
dGVkJiwgY29uc3QgQ3J5cHRvS2V5JiBrZXksIGNvbnN0IEJ1ZmZlclNvdXJjZSYgZGF0YSwgVmVj
dG9yQ2FsbGJhY2smJiBjYWxsYmFjaywgVm9pZENhbGxiYWNrJiYgZmFpbHVyZUNhbGxiYWNrLCBF
eGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBpZiAoIWtleUFsZ29yaXRobU1hdGNoZXMoa2V5KSkg
ewogICAgICAgICBlYyA9IE5PVF9TVVBQT1JURURfRVJSOwpAQCAtNzUsNyArNzUsNyBAQCB2b2lk
IENyeXB0b0FsZ29yaXRobVJTQUVTX1BLQ1MxX3YxXzU6OmVuY3J5cHQoY29uc3QgQ3J5cHRvQWxn
b3JpdGhtUGFyYW1ldGVyc0RlcAogICAgIHBsYXRmb3JtRW5jcnlwdChkb3duY2FzdDxDcnlwdG9L
ZXlSU0E+KGtleSksIGRhdGEsIFdURk1vdmUoY2FsbGJhY2spLCBXVEZNb3ZlKGZhaWx1cmVDYWxs
YmFjayksIGVjKTsKIH0KIAotdm9pZCBDcnlwdG9BbGdvcml0aG1SU0FFU19QS0NTMV92MV81Ojpk
ZWNyeXB0KGNvbnN0IENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnNEZXByZWNhdGVkJiwgY29uc3Qg
Q3J5cHRvS2V5JiBrZXksIGNvbnN0IENyeXB0b09wZXJhdGlvbkRhdGEmIGRhdGEsIFZlY3RvckNh
bGxiYWNrJiYgY2FsbGJhY2ssIFZvaWRDYWxsYmFjayYmIGZhaWx1cmVDYWxsYmFjaywgRXhjZXB0
aW9uQ29kZSYgZWMpCit2b2lkIENyeXB0b0FsZ29yaXRobVJTQUVTX1BLQ1MxX3YxXzU6OmRlY3J5
cHQoY29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVyc0RlcHJlY2F0ZWQmLCBjb25zdCBDcnlw
dG9LZXkmIGtleSwgY29uc3QgQnVmZmVyU291cmNlJiBkYXRhLCBWZWN0b3JDYWxsYmFjayYmIGNh
bGxiYWNrLCBWb2lkQ2FsbGJhY2smJiBmYWlsdXJlQ2FsbGJhY2ssIEV4Y2VwdGlvbkNvZGUmIGVj
KQogewogICAgIGlmICgha2V5QWxnb3JpdGhtTWF0Y2hlcyhrZXkpKSB7CiAgICAgICAgIGVjID0g
Tk9UX1NVUFBPUlRFRF9FUlI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxn
b3JpdGhtcy9DcnlwdG9BbGdvcml0aG1SU0FFU19QS0NTMV92MV81LmggYi9Tb3VyY2UvV2ViQ29y
ZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1SU0FFU19QS0NTMV92MV81LmgKaW5k
ZXggOGVhM2I3MzFjZTliMWIyYTVjZWEyZGQ2NzVlMjcxZWRlMTNiZmVmNi4uZDgzZTFhYTU3MjM0
YWEwYWQ0OWM0YmFjODRmNzYzNzNhMjZjYWQzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
Y3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtUlNBRVNfUEtDUzFfdjFfNS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVJTQUVTX1BL
Q1MxX3YxXzUuaApAQCAtNDQsOCArNDQsOCBAQCBwdWJsaWM6CiAKICAgICBDcnlwdG9BbGdvcml0
aG1JZGVudGlmaWVyIGlkZW50aWZpZXIoKSBjb25zdCBvdmVycmlkZTsKIAotICAgIHZvaWQgZW5j
cnlwdChjb25zdCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzRGVwcmVjYXRlZCYsIGNvbnN0IENy
eXB0b0tleSYsIGNvbnN0IENyeXB0b09wZXJhdGlvbkRhdGEmLCBWZWN0b3JDYWxsYmFjayYmLCBW
b2lkQ2FsbGJhY2smJiBmYWlsdXJlQ2FsbGJhY2ssIEV4Y2VwdGlvbkNvZGUmKSBvdmVycmlkZTsK
LSAgICB2b2lkIGRlY3J5cHQoY29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVyc0RlcHJlY2F0
ZWQmLCBjb25zdCBDcnlwdG9LZXkmLCBjb25zdCBDcnlwdG9PcGVyYXRpb25EYXRhJiwgVmVjdG9y
Q2FsbGJhY2smJiwgVm9pZENhbGxiYWNrJiYgZmFpbHVyZUNhbGxiYWNrLCBFeGNlcHRpb25Db2Rl
Jikgb3ZlcnJpZGU7CisgICAgdm9pZCBlbmNyeXB0KGNvbnN0IENyeXB0b0FsZ29yaXRobVBhcmFt
ZXRlcnNEZXByZWNhdGVkJiwgY29uc3QgQ3J5cHRvS2V5JiwgY29uc3QgQnVmZmVyU291cmNlJiwg
VmVjdG9yQ2FsbGJhY2smJiwgVm9pZENhbGxiYWNrJiYgZmFpbHVyZUNhbGxiYWNrLCBFeGNlcHRp
b25Db2RlJikgb3ZlcnJpZGU7CisgICAgdm9pZCBkZWNyeXB0KGNvbnN0IENyeXB0b0FsZ29yaXRo
bVBhcmFtZXRlcnNEZXByZWNhdGVkJiwgY29uc3QgQ3J5cHRvS2V5JiwgY29uc3QgQnVmZmVyU291
cmNlJiwgVmVjdG9yQ2FsbGJhY2smJiwgVm9pZENhbGxiYWNrJiYgZmFpbHVyZUNhbGxiYWNrLCBF
eGNlcHRpb25Db2RlJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBnZW5lcmF0ZUtleShjb25zdCBDcnlw
dG9BbGdvcml0aG1QYXJhbWV0ZXJzRGVwcmVjYXRlZCYsIGJvb2wgZXh0cmFjdGFibGUsIENyeXB0
b0tleVVzYWdlLCBLZXlPcktleVBhaXJDYWxsYmFjayYmLCBWb2lkQ2FsbGJhY2smJiBmYWlsdXJl
Q2FsbGJhY2ssIEV4Y2VwdGlvbkNvZGUmKSBvdmVycmlkZTsKICAgICB2b2lkIGltcG9ydEtleShj
b25zdCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzRGVwcmVjYXRlZCYsIGNvbnN0IENyeXB0b0tl
eURhdGEmLCBib29sIGV4dHJhY3RhYmxlLCBDcnlwdG9LZXlVc2FnZSwgS2V5Q2FsbGJhY2smJiwg
Vm9pZENhbGxiYWNrJiYgZmFpbHVyZUNhbGxiYWNrLCBFeGNlcHRpb25Db2RlJikgb3ZlcnJpZGU7
CiAKQEAgLTU0LDggKzU0LDggQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIH5DcnlwdG9BbGdvcml0
aG1SU0FFU19QS0NTMV92MV81KCk7CiAKICAgICBib29sIGtleUFsZ29yaXRobU1hdGNoZXMoY29u
c3QgQ3J5cHRvS2V5JikgY29uc3Q7Ci0gICAgdm9pZCBwbGF0Zm9ybUVuY3J5cHQoY29uc3QgQ3J5
cHRvS2V5UlNBJiwgY29uc3QgQ3J5cHRvT3BlcmF0aW9uRGF0YSYsIFZlY3RvckNhbGxiYWNrJiYs
IFZvaWRDYWxsYmFjayYmIGZhaWx1cmVDYWxsYmFjaywgRXhjZXB0aW9uQ29kZSYpOwotICAgIHZv
aWQgcGxhdGZvcm1EZWNyeXB0KGNvbnN0IENyeXB0b0tleVJTQSYsIGNvbnN0IENyeXB0b09wZXJh
dGlvbkRhdGEmLCBWZWN0b3JDYWxsYmFjayYmLCBWb2lkQ2FsbGJhY2smJiBmYWlsdXJlQ2FsbGJh
Y2ssIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICB2b2lkIHBsYXRmb3JtRW5jcnlwdChjb25zdCBDcnlw
dG9LZXlSU0EmLCBjb25zdCBCdWZmZXJTb3VyY2UmLCBWZWN0b3JDYWxsYmFjayYmLCBWb2lkQ2Fs
bGJhY2smJiBmYWlsdXJlQ2FsbGJhY2ssIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICB2b2lkIHBsYXRm
b3JtRGVjcnlwdChjb25zdCBDcnlwdG9LZXlSU0EmLCBjb25zdCBCdWZmZXJTb3VyY2UmLCBWZWN0
b3JDYWxsYmFjayYmLCBWb2lkQ2FsbGJhY2smJiBmYWlsdXJlQ2FsbGJhY2ssIEV4Y2VwdGlvbkNv
ZGUmKTsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0
aG1zL0NyeXB0b0FsZ29yaXRobVJTQVNTQV9QS0NTMV92MV81LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVJTQVNTQV9QS0NTMV92MV81LmNwcApp
bmRleCBiM2Y4NjJlYjc2ZWE0NDEwNTJhYzM0ODM2NWFlY2Q0ZmNkYjFhZDdmLi40MWY2YzAyZjQ1
OWExNjJjNzQ2MGM4YzBiMDBjYjgyOGQ0OGFhMDFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1SU0FTU0FfUEtDUzFfdjFfNS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtUlNB
U1NBX1BLQ1MxX3YxXzUuY3BwCkBAIC02OSw3ICs2OSw3IEBAIGJvb2wgQ3J5cHRvQWxnb3JpdGht
UlNBU1NBX1BLQ1MxX3YxXzU6OmtleUFsZ29yaXRobU1hdGNoZXMoY29uc3QgQ3J5cHRvQWxnb3Jp
dGhtCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXZvaWQgQ3J5cHRvQWxnb3JpdGhtUlNBU1NBX1BL
Q1MxX3YxXzU6OnNpZ24oY29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVyc0RlcHJlY2F0ZWQm
IHBhcmFtZXRlcnMsIGNvbnN0IENyeXB0b0tleSYga2V5LCBjb25zdCBDcnlwdG9PcGVyYXRpb25E
YXRhJiBkYXRhLCBWZWN0b3JDYWxsYmFjayYmIGNhbGxiYWNrLCBWb2lkQ2FsbGJhY2smJiBmYWls
dXJlQ2FsbGJhY2ssIEV4Y2VwdGlvbkNvZGUmIGVjKQordm9pZCBDcnlwdG9BbGdvcml0aG1SU0FT
U0FfUEtDUzFfdjFfNTo6c2lnbihjb25zdCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzRGVwcmVj
YXRlZCYgcGFyYW1ldGVycywgY29uc3QgQ3J5cHRvS2V5JiBrZXksIGNvbnN0IEJ1ZmZlclNvdXJj
ZSYgZGF0YSwgVmVjdG9yQ2FsbGJhY2smJiBjYWxsYmFjaywgVm9pZENhbGxiYWNrJiYgZmFpbHVy
ZUNhbGxiYWNrLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBjb25zdCBDcnlwdG9BbGdvcml0
aG1Sc2FTc2FQYXJhbXNEZXByZWNhdGVkJiByc2FTU0FQYXJhbWV0ZXJzID0gZG93bmNhc3Q8Q3J5
cHRvQWxnb3JpdGhtUnNhU3NhUGFyYW1zRGVwcmVjYXRlZD4ocGFyYW1ldGVycyk7CiAKQEAgLTgx
LDcgKzgxLDcgQEAgdm9pZCBDcnlwdG9BbGdvcml0aG1SU0FTU0FfUEtDUzFfdjFfNTo6c2lnbihj
b25zdCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzRGVwcmUKICAgICBwbGF0Zm9ybVNpZ24ocnNh
U1NBUGFyYW1ldGVycywgZG93bmNhc3Q8Q3J5cHRvS2V5UlNBPihrZXkpLCBkYXRhLCBXVEZNb3Zl
KGNhbGxiYWNrKSwgV1RGTW92ZShmYWlsdXJlQ2FsbGJhY2spLCBlYyk7CiB9CiAKLXZvaWQgQ3J5
cHRvQWxnb3JpdGhtUlNBU1NBX1BLQ1MxX3YxXzU6OnZlcmlmeShjb25zdCBDcnlwdG9BbGdvcml0
aG1QYXJhbWV0ZXJzRGVwcmVjYXRlZCYgcGFyYW1ldGVycywgY29uc3QgQ3J5cHRvS2V5JiBrZXks
IGNvbnN0IENyeXB0b09wZXJhdGlvbkRhdGEmIHNpZ25hdHVyZSwgY29uc3QgQ3J5cHRvT3BlcmF0
aW9uRGF0YSYgZGF0YSwgQm9vbENhbGxiYWNrJiYgY2FsbGJhY2ssIFZvaWRDYWxsYmFjayYmIGZh
aWx1cmVDYWxsYmFjaywgRXhjZXB0aW9uQ29kZSYgZWMpCit2b2lkIENyeXB0b0FsZ29yaXRobVJT
QVNTQV9QS0NTMV92MV81Ojp2ZXJpZnkoY29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVyc0Rl
cHJlY2F0ZWQmIHBhcmFtZXRlcnMsIGNvbnN0IENyeXB0b0tleSYga2V5LCBjb25zdCBCdWZmZXJT
b3VyY2UmIHNpZ25hdHVyZSwgY29uc3QgQnVmZmVyU291cmNlJiBkYXRhLCBCb29sQ2FsbGJhY2sm
JiBjYWxsYmFjaywgVm9pZENhbGxiYWNrJiYgZmFpbHVyZUNhbGxiYWNrLCBFeGNlcHRpb25Db2Rl
JiBlYykKIHsKICAgICBjb25zdCBDcnlwdG9BbGdvcml0aG1Sc2FTc2FQYXJhbXNEZXByZWNhdGVk
JiByc2FTU0FQYXJhbWV0ZXJzID0gZG93bmNhc3Q8Q3J5cHRvQWxnb3JpdGhtUnNhU3NhUGFyYW1z
RGVwcmVjYXRlZD4ocGFyYW1ldGVycyk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Ny
eXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVJTQVNTQV9QS0NTMV92MV81LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1SU0FTU0FfUEtDUzFf
djFfNS5oCmluZGV4IGQwNmY3NmJkYmNlNGMxNzhkZWM3MjAzODNkMDcyMWY1ZTNhNGE4MDAuLjRk
ODA2NGVkYzc1MDMyZmY2Zjc0NTIyZWEwZWYxMjRjODIzMmMzY2YgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVJTQVNTQV9QS0NTMV92
MV81LmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3Jp
dGhtUlNBU1NBX1BLQ1MxX3YxXzUuaApAQCAtNDQsOCArNDQsOCBAQCBwdWJsaWM6CiAKICAgICBD
cnlwdG9BbGdvcml0aG1JZGVudGlmaWVyIGlkZW50aWZpZXIoKSBjb25zdCBvdmVycmlkZTsKIAot
ICAgIHZvaWQgc2lnbihjb25zdCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzRGVwcmVjYXRlZCYs
IGNvbnN0IENyeXB0b0tleSYsIGNvbnN0IENyeXB0b09wZXJhdGlvbkRhdGEmLCBWZWN0b3JDYWxs
YmFjayYmLCBWb2lkQ2FsbGJhY2smJiBmYWlsdXJlQ2FsbGJhY2ssIEV4Y2VwdGlvbkNvZGUmKSBv
dmVycmlkZTsKLSAgICB2b2lkIHZlcmlmeShjb25zdCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJz
RGVwcmVjYXRlZCYsIGNvbnN0IENyeXB0b0tleSYsIGNvbnN0IENyeXB0b09wZXJhdGlvbkRhdGEm
IHNpZ25hdHVyZSwgY29uc3QgQ3J5cHRvT3BlcmF0aW9uRGF0YSYsIEJvb2xDYWxsYmFjayYmLCBW
b2lkQ2FsbGJhY2smJiBmYWlsdXJlQ2FsbGJhY2ssIEV4Y2VwdGlvbkNvZGUmKSBvdmVycmlkZTsK
KyAgICB2b2lkIHNpZ24oY29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVyc0RlcHJlY2F0ZWQm
LCBjb25zdCBDcnlwdG9LZXkmLCBjb25zdCBCdWZmZXJTb3VyY2UmLCBWZWN0b3JDYWxsYmFjayYm
LCBWb2lkQ2FsbGJhY2smJiBmYWlsdXJlQ2FsbGJhY2ssIEV4Y2VwdGlvbkNvZGUmKSBvdmVycmlk
ZTsKKyAgICB2b2lkIHZlcmlmeShjb25zdCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzRGVwcmVj
YXRlZCYsIGNvbnN0IENyeXB0b0tleSYsIGNvbnN0IEJ1ZmZlclNvdXJjZSYgc2lnbmF0dXJlLCBj
b25zdCBCdWZmZXJTb3VyY2UmLCBCb29sQ2FsbGJhY2smJiwgVm9pZENhbGxiYWNrJiYgZmFpbHVy
ZUNhbGxiYWNrLCBFeGNlcHRpb25Db2RlJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBnZW5lcmF0ZUtl
eShjb25zdCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzRGVwcmVjYXRlZCYsIGJvb2wgZXh0cmFj
dGFibGUsIENyeXB0b0tleVVzYWdlLCBLZXlPcktleVBhaXJDYWxsYmFjayYmLCBWb2lkQ2FsbGJh
Y2smJiBmYWlsdXJlQ2FsbGJhY2ssIEV4Y2VwdGlvbkNvZGUmKSBvdmVycmlkZTsKICAgICB2b2lk
IGltcG9ydEtleShjb25zdCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzRGVwcmVjYXRlZCYsIGNv
bnN0IENyeXB0b0tleURhdGEmLCBib29sIGV4dHJhY3RhYmxlLCBDcnlwdG9LZXlVc2FnZSwgS2V5
Q2FsbGJhY2smJiwgVm9pZENhbGxiYWNrJiYgZmFpbHVyZUNhbGxiYWNrLCBFeGNlcHRpb25Db2Rl
Jikgb3ZlcnJpZGU7CiAKQEAgLTU0LDggKzU0LDggQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIH5D
cnlwdG9BbGdvcml0aG1SU0FTU0FfUEtDUzFfdjFfNSgpOwogCiAgICAgYm9vbCBrZXlBbGdvcml0
aG1NYXRjaGVzKGNvbnN0IENyeXB0b0FsZ29yaXRobVJzYVNzYVBhcmFtc0RlcHJlY2F0ZWQmIGFs
Z29yaXRobVBhcmFtZXRlcnMsIGNvbnN0IENyeXB0b0tleSYpIGNvbnN0OwotICAgIHZvaWQgcGxh
dGZvcm1TaWduKGNvbnN0IENyeXB0b0FsZ29yaXRobVJzYVNzYVBhcmFtc0RlcHJlY2F0ZWQmLCBj
b25zdCBDcnlwdG9LZXlSU0EmLCBjb25zdCBDcnlwdG9PcGVyYXRpb25EYXRhJiwgVmVjdG9yQ2Fs
bGJhY2smJiwgVm9pZENhbGxiYWNrJiYgZmFpbHVyZUNhbGxiYWNrLCBFeGNlcHRpb25Db2RlJik7
Ci0gICAgdm9pZCBwbGF0Zm9ybVZlcmlmeShjb25zdCBDcnlwdG9BbGdvcml0aG1Sc2FTc2FQYXJh
bXNEZXByZWNhdGVkJiwgY29uc3QgQ3J5cHRvS2V5UlNBJiwgY29uc3QgQ3J5cHRvT3BlcmF0aW9u
RGF0YSYgc2lnbmF0dXJlLCBjb25zdCBDcnlwdG9PcGVyYXRpb25EYXRhJiwgQm9vbENhbGxiYWNr
JiYsIFZvaWRDYWxsYmFjayYmIGZhaWx1cmVDYWxsYmFjaywgRXhjZXB0aW9uQ29kZSYpOworICAg
IHZvaWQgcGxhdGZvcm1TaWduKGNvbnN0IENyeXB0b0FsZ29yaXRobVJzYVNzYVBhcmFtc0RlcHJl
Y2F0ZWQmLCBjb25zdCBDcnlwdG9LZXlSU0EmLCBjb25zdCBCdWZmZXJTb3VyY2UmLCBWZWN0b3JD
YWxsYmFjayYmLCBWb2lkQ2FsbGJhY2smJiBmYWlsdXJlQ2FsbGJhY2ssIEV4Y2VwdGlvbkNvZGUm
KTsKKyAgICB2b2lkIHBsYXRmb3JtVmVyaWZ5KGNvbnN0IENyeXB0b0FsZ29yaXRobVJzYVNzYVBh
cmFtc0RlcHJlY2F0ZWQmLCBjb25zdCBDcnlwdG9LZXlSU0EmLCBjb25zdCBCdWZmZXJTb3VyY2Um
IHNpZ25hdHVyZSwgY29uc3QgQnVmZmVyU291cmNlJiwgQm9vbENhbGxiYWNrJiYsIFZvaWRDYWxs
YmFjayYmIGZhaWx1cmVDYWxsYmFjaywgRXhjZXB0aW9uQ29kZSYpOwogfTsKIAogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtUlNB
X09BRVAuY3BwIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3Jp
dGhtUlNBX09BRVAuY3BwCmluZGV4IDIyNTU5MWM4ODQ3NDU2MmZhYjk3M2YxMDcyZjZmY2FjYjJm
MjU3MGYuLjBlNTQ2OGM1MzY3ZTY3MTk5MGJiZjY4MzM4OGU1NDliNmFmYjc4NzggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVJTQV9P
QUVQLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdv
cml0aG1SU0FfT0FFUC5jcHAKQEAgLTY5LDcgKzY5LDcgQEAgYm9vbCBDcnlwdG9BbGdvcml0aG1S
U0FfT0FFUDo6a2V5QWxnb3JpdGhtTWF0Y2hlcyhjb25zdCBDcnlwdG9BbGdvcml0aG1Sc2FPYWVw
UGEKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdm9pZCBDcnlwdG9BbGdvcml0aG1SU0FfT0FFUDo6
ZW5jcnlwdChjb25zdCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzRGVwcmVjYXRlZCYgcGFyYW1l
dGVycywgY29uc3QgQ3J5cHRvS2V5JiBrZXksIGNvbnN0IENyeXB0b09wZXJhdGlvbkRhdGEmIGRh
dGEsIFZlY3RvckNhbGxiYWNrJiYgY2FsbGJhY2ssIFZvaWRDYWxsYmFjayYmIGZhaWx1cmVDYWxs
YmFjaywgRXhjZXB0aW9uQ29kZSYgZWMpCit2b2lkIENyeXB0b0FsZ29yaXRobVJTQV9PQUVQOjpl
bmNyeXB0KGNvbnN0IENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnNEZXByZWNhdGVkJiBwYXJhbWV0
ZXJzLCBjb25zdCBDcnlwdG9LZXkmIGtleSwgY29uc3QgQnVmZmVyU291cmNlJiBkYXRhLCBWZWN0
b3JDYWxsYmFjayYmIGNhbGxiYWNrLCBWb2lkQ2FsbGJhY2smJiBmYWlsdXJlQ2FsbGJhY2ssIEV4
Y2VwdGlvbkNvZGUmIGVjKQogewogICAgIGNvbnN0IENyeXB0b0FsZ29yaXRobVJzYU9hZXBQYXJh
bXNEZXByZWNhdGVkJiByc2FPQUVQUGFyYW1ldGVycyA9IGRvd25jYXN0PENyeXB0b0FsZ29yaXRo
bVJzYU9hZXBQYXJhbXNEZXByZWNhdGVkPihwYXJhbWV0ZXJzKTsKIApAQCAtODEsNyArODEsNyBA
QCB2b2lkIENyeXB0b0FsZ29yaXRobVJTQV9PQUVQOjplbmNyeXB0KGNvbnN0IENyeXB0b0FsZ29y
aXRobVBhcmFtZXRlcnNEZXByZWNhdGVkJgogICAgIHBsYXRmb3JtRW5jcnlwdChyc2FPQUVQUGFy
YW1ldGVycywgZG93bmNhc3Q8Q3J5cHRvS2V5UlNBPihrZXkpLCBkYXRhLCBXVEZNb3ZlKGNhbGxi
YWNrKSwgV1RGTW92ZShmYWlsdXJlQ2FsbGJhY2spLCBlYyk7CiB9CiAKLXZvaWQgQ3J5cHRvQWxn
b3JpdGhtUlNBX09BRVA6OmRlY3J5cHQoY29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVyc0Rl
cHJlY2F0ZWQmIHBhcmFtZXRlcnMsIGNvbnN0IENyeXB0b0tleSYga2V5LCBjb25zdCBDcnlwdG9P
cGVyYXRpb25EYXRhJiBkYXRhLCBWZWN0b3JDYWxsYmFjayYmIGNhbGxiYWNrLCBWb2lkQ2FsbGJh
Y2smJiBmYWlsdXJlQ2FsbGJhY2ssIEV4Y2VwdGlvbkNvZGUmIGVjKQordm9pZCBDcnlwdG9BbGdv
cml0aG1SU0FfT0FFUDo6ZGVjcnlwdChjb25zdCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzRGVw
cmVjYXRlZCYgcGFyYW1ldGVycywgY29uc3QgQ3J5cHRvS2V5JiBrZXksIGNvbnN0IEJ1ZmZlclNv
dXJjZSYgZGF0YSwgVmVjdG9yQ2FsbGJhY2smJiBjYWxsYmFjaywgVm9pZENhbGxiYWNrJiYgZmFp
bHVyZUNhbGxiYWNrLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBjb25zdCBDcnlwdG9BbGdv
cml0aG1Sc2FPYWVwUGFyYW1zRGVwcmVjYXRlZCYgcnNhT0FFUFBhcmFtZXRlcnMgPSBkb3duY2Fz
dDxDcnlwdG9BbGdvcml0aG1Sc2FPYWVwUGFyYW1zRGVwcmVjYXRlZD4ocGFyYW1ldGVycyk7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29y
aXRobVJTQV9PQUVQLmggYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9B
bGdvcml0aG1SU0FfT0FFUC5oCmluZGV4IDBlYjY5OTY2YTk5YzNkYTljZDcxMWQ3ODE4ZmQ4NzZh
OGEyYzM1NjkuLjg4YWRlNGI0NGZiZmJhMTNiY2U1YTFmZDVkY2JhZjljMWNkMzZmZmYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVJT
QV9PQUVQLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxn
b3JpdGhtUlNBX09BRVAuaApAQCAtNDQsOCArNDQsOCBAQCBwdWJsaWM6CiAKICAgICBDcnlwdG9B
bGdvcml0aG1JZGVudGlmaWVyIGlkZW50aWZpZXIoKSBjb25zdCBvdmVycmlkZTsKIAotICAgIHZv
aWQgZW5jcnlwdChjb25zdCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzRGVwcmVjYXRlZCYsIGNv
bnN0IENyeXB0b0tleSYsIGNvbnN0IENyeXB0b09wZXJhdGlvbkRhdGEmLCBWZWN0b3JDYWxsYmFj
ayYmLCBWb2lkQ2FsbGJhY2smJiBmYWlsdXJlQ2FsbGJhY2ssIEV4Y2VwdGlvbkNvZGUmKSBvdmVy
cmlkZTsKLSAgICB2b2lkIGRlY3J5cHQoY29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVyc0Rl
cHJlY2F0ZWQmLCBjb25zdCBDcnlwdG9LZXkmLCBjb25zdCBDcnlwdG9PcGVyYXRpb25EYXRhJiwg
VmVjdG9yQ2FsbGJhY2smJiwgVm9pZENhbGxiYWNrJiYgZmFpbHVyZUNhbGxiYWNrLCBFeGNlcHRp
b25Db2RlJikgb3ZlcnJpZGU7CisgICAgdm9pZCBlbmNyeXB0KGNvbnN0IENyeXB0b0FsZ29yaXRo
bVBhcmFtZXRlcnNEZXByZWNhdGVkJiwgY29uc3QgQ3J5cHRvS2V5JiwgY29uc3QgQnVmZmVyU291
cmNlJiwgVmVjdG9yQ2FsbGJhY2smJiwgVm9pZENhbGxiYWNrJiYgZmFpbHVyZUNhbGxiYWNrLCBF
eGNlcHRpb25Db2RlJikgb3ZlcnJpZGU7CisgICAgdm9pZCBkZWNyeXB0KGNvbnN0IENyeXB0b0Fs
Z29yaXRobVBhcmFtZXRlcnNEZXByZWNhdGVkJiwgY29uc3QgQ3J5cHRvS2V5JiwgY29uc3QgQnVm
ZmVyU291cmNlJiwgVmVjdG9yQ2FsbGJhY2smJiwgVm9pZENhbGxiYWNrJiYgZmFpbHVyZUNhbGxi
YWNrLCBFeGNlcHRpb25Db2RlJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBnZW5lcmF0ZUtleShjb25z
dCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzRGVwcmVjYXRlZCYsIGJvb2wgZXh0cmFjdGFibGUs
IENyeXB0b0tleVVzYWdlLCBLZXlPcktleVBhaXJDYWxsYmFjayYmLCBWb2lkQ2FsbGJhY2smJiBm
YWlsdXJlQ2FsbGJhY2ssIEV4Y2VwdGlvbkNvZGUmKSBvdmVycmlkZTsKICAgICB2b2lkIGltcG9y
dEtleShjb25zdCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzRGVwcmVjYXRlZCYsIGNvbnN0IENy
eXB0b0tleURhdGEmLCBib29sIGV4dHJhY3RhYmxlLCBDcnlwdG9LZXlVc2FnZSwgS2V5Q2FsbGJh
Y2smJiwgVm9pZENhbGxiYWNrJiYgZmFpbHVyZUNhbGxiYWNrLCBFeGNlcHRpb25Db2RlJikgb3Zl
cnJpZGU7CiAKQEAgLTU0LDggKzU0LDggQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIH5DcnlwdG9B
bGdvcml0aG1SU0FfT0FFUCgpOwogCiAgICAgYm9vbCBrZXlBbGdvcml0aG1NYXRjaGVzKGNvbnN0
IENyeXB0b0FsZ29yaXRobVJzYU9hZXBQYXJhbXNEZXByZWNhdGVkJiBhbGdvcml0aG1QYXJhbWV0
ZXJzLCBjb25zdCBDcnlwdG9LZXkmKSBjb25zdDsKLSAgICB2b2lkIHBsYXRmb3JtRW5jcnlwdChj
b25zdCBDcnlwdG9BbGdvcml0aG1Sc2FPYWVwUGFyYW1zRGVwcmVjYXRlZCYsIGNvbnN0IENyeXB0
b0tleVJTQSYsIGNvbnN0IENyeXB0b09wZXJhdGlvbkRhdGEmLCBWZWN0b3JDYWxsYmFjayYmLCBW
b2lkQ2FsbGJhY2smJiBmYWlsdXJlQ2FsbGJhY2ssIEV4Y2VwdGlvbkNvZGUmKTsKLSAgICB2b2lk
IHBsYXRmb3JtRGVjcnlwdChjb25zdCBDcnlwdG9BbGdvcml0aG1Sc2FPYWVwUGFyYW1zRGVwcmVj
YXRlZCYsIGNvbnN0IENyeXB0b0tleVJTQSYsIGNvbnN0IENyeXB0b09wZXJhdGlvbkRhdGEmLCBW
ZWN0b3JDYWxsYmFjayYmLCBWb2lkQ2FsbGJhY2smJiBmYWlsdXJlQ2FsbGJhY2ssIEV4Y2VwdGlv
bkNvZGUmKTsKKyAgICB2b2lkIHBsYXRmb3JtRW5jcnlwdChjb25zdCBDcnlwdG9BbGdvcml0aG1S
c2FPYWVwUGFyYW1zRGVwcmVjYXRlZCYsIGNvbnN0IENyeXB0b0tleVJTQSYsIGNvbnN0IEJ1ZmZl
clNvdXJjZSYsIFZlY3RvckNhbGxiYWNrJiYsIFZvaWRDYWxsYmFjayYmIGZhaWx1cmVDYWxsYmFj
aywgRXhjZXB0aW9uQ29kZSYpOworICAgIHZvaWQgcGxhdGZvcm1EZWNyeXB0KGNvbnN0IENyeXB0
b0FsZ29yaXRobVJzYU9hZXBQYXJhbXNEZXByZWNhdGVkJiwgY29uc3QgQ3J5cHRvS2V5UlNBJiwg
Y29uc3QgQnVmZmVyU291cmNlJiwgVmVjdG9yQ2FsbGJhY2smJiwgVm9pZENhbGxiYWNrJiYgZmFp
bHVyZUNhbGxiYWNrLCBFeGNlcHRpb25Db2RlJik7CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1TSEExLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVNIQTEuY3BwCmlu
ZGV4IDcyOTc5NmRlMzE0YWY1Nzg4ODQzOTdlODE1NmFkOTdjN2FjNDQwNjMuLmZlODk0MzE0NzBm
Y2MzMDk5NTBlNmJjMGY3N2E5ZDJlMzIyY2MwNTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVNIQTEuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVNIQTEuY3BwCkBAIC01Miw3
ICs1Miw3IEBAIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXIgQ3J5cHRvQWxnb3JpdGhtU0hBMTo6
aWRlbnRpZmllcigpIGNvbnN0CiAgICAgcmV0dXJuIHNfaWRlbnRpZmllcjsKIH0KIAotdm9pZCBD
cnlwdG9BbGdvcml0aG1TSEExOjpkaWdlc3QoY29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVy
c0RlcHJlY2F0ZWQmLCBjb25zdCBDcnlwdG9PcGVyYXRpb25EYXRhJiBkYXRhLCBWZWN0b3JDYWxs
YmFjayYmIGNhbGxiYWNrLCBWb2lkQ2FsbGJhY2smJiBmYWlsdXJlQ2FsbGJhY2ssIEV4Y2VwdGlv
bkNvZGUmKQordm9pZCBDcnlwdG9BbGdvcml0aG1TSEExOjpkaWdlc3QoY29uc3QgQ3J5cHRvQWxn
b3JpdGhtUGFyYW1ldGVyc0RlcHJlY2F0ZWQmLCBjb25zdCBCdWZmZXJTb3VyY2UmIGRhdGEsIFZl
Y3RvckNhbGxiYWNrJiYgY2FsbGJhY2ssIFZvaWRDYWxsYmFjayYmIGZhaWx1cmVDYWxsYmFjaywg
RXhjZXB0aW9uQ29kZSYpCiB7CiAgICAgc3RkOjp1bmlxdWVfcHRyPENyeXB0b0RpZ2VzdD4gZGln
ZXN0ID0gQ3J5cHRvRGlnZXN0OjpjcmVhdGUoQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8x
KTsKICAgICBpZiAoIWRpZ2VzdCkgewpAQCAtNjAsNyArNjAsNyBAQCB2b2lkIENyeXB0b0FsZ29y
aXRobVNIQTE6OmRpZ2VzdChjb25zdCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzRGVwcmVjYXRl
ZCYsIGNvbgogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgZGlnZXN0LT5hZGRCeXRlcyhk
YXRhLmZpcnN0LCBkYXRhLnNlY29uZCk7CisgICAgZGlnZXN0LT5hZGRCeXRlcyhkYXRhLmRhdGEs
IGRhdGEubGVuZ3RoKTsKIAogICAgIGNhbGxiYWNrKGRpZ2VzdC0+Y29tcHV0ZUhhc2goKSk7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdv
cml0aG1TSEExLmggYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdv
cml0aG1TSEExLmgKaW5kZXggZjUyNDBiMjNmN2E2YWUxNGZiNjZkYTM3NTZkMDViMWIwYWYyZWE5
MC4uZWM3ZGRjNGM1YWZmM2M1NDEyYTU4MDJjYTNkODgxYzI3ZmExZWZjZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtU0hBMS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVNIQTEu
aApAQCAtNDEsNyArNDEsNyBAQCBwdWJsaWM6CiAKICAgICBDcnlwdG9BbGdvcml0aG1JZGVudGlm
aWVyIGlkZW50aWZpZXIoKSBjb25zdCBvdmVycmlkZTsKIAotICAgIHZvaWQgZGlnZXN0KGNvbnN0
IENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnNEZXByZWNhdGVkJiwgY29uc3QgQ3J5cHRvT3BlcmF0
aW9uRGF0YSYsIFZlY3RvckNhbGxiYWNrJiYsIFZvaWRDYWxsYmFjayYmIGZhaWx1cmVDYWxsYmFj
aywgRXhjZXB0aW9uQ29kZSYpIG92ZXJyaWRlOworICAgIHZvaWQgZGlnZXN0KGNvbnN0IENyeXB0
b0FsZ29yaXRobVBhcmFtZXRlcnNEZXByZWNhdGVkJiwgY29uc3QgQnVmZmVyU291cmNlJiwgVmVj
dG9yQ2FsbGJhY2smJiwgVm9pZENhbGxiYWNrJiYgZmFpbHVyZUNhbGxiYWNrLCBFeGNlcHRpb25D
b2RlJikgb3ZlcnJpZGU7CiAKIHByaXZhdGU6CiAgICAgQ3J5cHRvQWxnb3JpdGhtU0hBMSgpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3Jp
dGhtU0hBMjI0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0Fs
Z29yaXRobVNIQTIyNC5jcHAKaW5kZXggZmE4MGZjNmRjNDVkNjBkNDY3OTgxMGRhYzhmODQ2ZGE0
MDA1MmU5NS4uNzE1MjZmYzJkMGYxNTViY2ViZDQwMjdmY2MwY2JmN2E2YzQzMjU2MSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtU0hB
MjI0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdv
cml0aG1TSEEyMjQuY3BwCkBAIC01Miw3ICs1Miw3IEBAIENyeXB0b0FsZ29yaXRobUlkZW50aWZp
ZXIgQ3J5cHRvQWxnb3JpdGhtU0hBMjI0OjppZGVudGlmaWVyKCkgY29uc3QKICAgICByZXR1cm4g
c19pZGVudGlmaWVyOwogfQogCi12b2lkIENyeXB0b0FsZ29yaXRobVNIQTIyNDo6ZGlnZXN0KGNv
bnN0IENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnNEZXByZWNhdGVkJiwgY29uc3QgQ3J5cHRvT3Bl
cmF0aW9uRGF0YSYgZGF0YSwgVmVjdG9yQ2FsbGJhY2smJiBjYWxsYmFjaywgVm9pZENhbGxiYWNr
JiYgZmFpbHVyZUNhbGxiYWNrLCBFeGNlcHRpb25Db2RlJikKK3ZvaWQgQ3J5cHRvQWxnb3JpdGht
U0hBMjI0OjpkaWdlc3QoY29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVyc0RlcHJlY2F0ZWQm
LCBjb25zdCBCdWZmZXJTb3VyY2UmIGRhdGEsIFZlY3RvckNhbGxiYWNrJiYgY2FsbGJhY2ssIFZv
aWRDYWxsYmFjayYmIGZhaWx1cmVDYWxsYmFjaywgRXhjZXB0aW9uQ29kZSYpCiB7CiAgICAgc3Rk
Ojp1bmlxdWVfcHRyPENyeXB0b0RpZ2VzdD4gZGlnZXN0ID0gQ3J5cHRvRGlnZXN0OjpjcmVhdGUo
Q3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8yMjQpOwogICAgIGlmICghZGlnZXN0KSB7CkBA
IC02MCw3ICs2MCw3IEBAIHZvaWQgQ3J5cHRvQWxnb3JpdGhtU0hBMjI0OjpkaWdlc3QoY29uc3Qg
Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVyc0RlcHJlY2F0ZWQmLCBjCiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAKLSAgICBkaWdlc3QtPmFkZEJ5dGVzKGRhdGEuZmlyc3QsIGRhdGEuc2Vjb25kKTsK
KyAgICBkaWdlc3QtPmFkZEJ5dGVzKGRhdGEuZGF0YSwgZGF0YS5sZW5ndGgpOwogCiAgICAgY2Fs
bGJhY2soZGlnZXN0LT5jb21wdXRlSGFzaCgpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVNIQTIyNC5oIGIvU291cmNlL1dl
YkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtU0hBMjI0LmgKaW5kZXggZGZm
NmQyMThlNjYyOTM4OWQ0YzFmMmM2MjM0MDk0ZDg1NTUwNDNlNS4uMWZmNDJkMmQ1M2QwYWNlZTYx
Mjg3YWUyZjY2NjY4NWQyODc4MmQyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRv
L2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtU0hBMjI0LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
Y3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtU0hBMjI0LmgKQEAgLTQxLDcgKzQxLDcg
QEAgcHVibGljOgogCiAgICAgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllciBpZGVudGlmaWVyKCkg
Y29uc3Qgb3ZlcnJpZGU7CiAKLSAgICB2b2lkIGRpZ2VzdChjb25zdCBDcnlwdG9BbGdvcml0aG1Q
YXJhbWV0ZXJzRGVwcmVjYXRlZCYsIGNvbnN0IENyeXB0b09wZXJhdGlvbkRhdGEmLCBWZWN0b3JD
YWxsYmFjayYmLCBWb2lkQ2FsbGJhY2smJiBmYWlsdXJlQ2FsbGJhY2ssIEV4Y2VwdGlvbkNvZGUm
KSBvdmVycmlkZTsKKyAgICB2b2lkIGRpZ2VzdChjb25zdCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0
ZXJzRGVwcmVjYXRlZCYsIGNvbnN0IEJ1ZmZlclNvdXJjZSYsIFZlY3RvckNhbGxiYWNrJiYsIFZv
aWRDYWxsYmFjayYmIGZhaWx1cmVDYWxsYmFjaywgRXhjZXB0aW9uQ29kZSYpIG92ZXJyaWRlOwog
CiBwcml2YXRlOgogICAgIENyeXB0b0FsZ29yaXRobVNIQTIyNCgpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtU0hBMjU2LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVNIQTI1Ni5j
cHAKaW5kZXggMzI0OTlhOTViNmUzZTc5NDljYzQyNzQ5MGIxMzQ1ZjVmMWYwMDlhZS4uMTU4YmUz
YTZiZjRmZDg1ZDAyYzA3YmFmZTExNTg4ZDFhODlhYmU5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtU0hBMjU2LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1TSEEyNTYuY3Bw
CkBAIC01Miw3ICs1Miw3IEBAIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXIgQ3J5cHRvQWxnb3Jp
dGhtU0hBMjU2OjppZGVudGlmaWVyKCkgY29uc3QKICAgICByZXR1cm4gc19pZGVudGlmaWVyOwog
fQogCi12b2lkIENyeXB0b0FsZ29yaXRobVNIQTI1Njo6ZGlnZXN0KGNvbnN0IENyeXB0b0FsZ29y
aXRobVBhcmFtZXRlcnNEZXByZWNhdGVkJiwgY29uc3QgQ3J5cHRvT3BlcmF0aW9uRGF0YSYgZGF0
YSwgVmVjdG9yQ2FsbGJhY2smJiBjYWxsYmFjaywgVm9pZENhbGxiYWNrJiYgZmFpbHVyZUNhbGxi
YWNrLCBFeGNlcHRpb25Db2RlJikKK3ZvaWQgQ3J5cHRvQWxnb3JpdGhtU0hBMjU2OjpkaWdlc3Qo
Y29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVyc0RlcHJlY2F0ZWQmLCBjb25zdCBCdWZmZXJT
b3VyY2UmIGRhdGEsIFZlY3RvckNhbGxiYWNrJiYgY2FsbGJhY2ssIFZvaWRDYWxsYmFjayYmIGZh
aWx1cmVDYWxsYmFjaywgRXhjZXB0aW9uQ29kZSYpCiB7CiAgICAgc3RkOjp1bmlxdWVfcHRyPENy
eXB0b0RpZ2VzdD4gZGlnZXN0ID0gQ3J5cHRvRGlnZXN0OjpjcmVhdGUoQ3J5cHRvRGlnZXN0OjpB
bGdvcml0aG06OlNIQV8yNTYpOwogICAgIGlmICghZGlnZXN0KSB7CkBAIC02MCw3ICs2MCw3IEBA
IHZvaWQgQ3J5cHRvQWxnb3JpdGhtU0hBMjU2OjpkaWdlc3QoY29uc3QgQ3J5cHRvQWxnb3JpdGht
UGFyYW1ldGVyc0RlcHJlY2F0ZWQmLCBjCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBk
aWdlc3QtPmFkZEJ5dGVzKGRhdGEuZmlyc3QsIGRhdGEuc2Vjb25kKTsKKyAgICBkaWdlc3QtPmFk
ZEJ5dGVzKGRhdGEuZGF0YSwgZGF0YS5sZW5ndGgpOwogCiAgICAgY2FsbGJhY2soZGlnZXN0LT5j
b21wdXRlSGFzaCgpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdv
cml0aG1zL0NyeXB0b0FsZ29yaXRobVNIQTI1Ni5oIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2Fs
Z29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtU0hBMjU2LmgKaW5kZXggN2RkNzU4YTY0NTEwZTk0YTRh
ZWU4ZDE2MmYzMzliMzY4OGFhNjNlZi4uY2MyODViNzUzNTcwODgyZDQ4YTQyMjc2NGU0ZjU2NzA3
MTA5M2RhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5
cHRvQWxnb3JpdGhtU0hBMjU2LmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRo
bXMvQ3J5cHRvQWxnb3JpdGhtU0hBMjU2LmgKQEAgLTQxLDcgKzQxLDcgQEAgcHVibGljOgogCiAg
ICAgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllciBpZGVudGlmaWVyKCkgY29uc3Qgb3ZlcnJpZGU7
CiAKLSAgICB2b2lkIGRpZ2VzdChjb25zdCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzRGVwcmVj
YXRlZCYsIGNvbnN0IENyeXB0b09wZXJhdGlvbkRhdGEmLCBWZWN0b3JDYWxsYmFjayYmLCBWb2lk
Q2FsbGJhY2smJiBmYWlsdXJlQ2FsbGJhY2ssIEV4Y2VwdGlvbkNvZGUmKSBvdmVycmlkZTsKKyAg
ICB2b2lkIGRpZ2VzdChjb25zdCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzRGVwcmVjYXRlZCYs
IGNvbnN0IEJ1ZmZlclNvdXJjZSYsIFZlY3RvckNhbGxiYWNrJiYsIFZvaWRDYWxsYmFjayYmIGZh
aWx1cmVDYWxsYmFjaywgRXhjZXB0aW9uQ29kZSYpIG92ZXJyaWRlOwogCiBwcml2YXRlOgogICAg
IENyeXB0b0FsZ29yaXRobVNIQTI1NigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3J5
cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtU0hBMzg0LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVNIQTM4NC5jcHAKaW5kZXggMzRlZDg3
Yzk5OGYxMzg2ZmUzMGQ1M2E1Yzg5N2Q5MGY5ZTlmNWU1YS4uMDM4MWU2MmEzODA5MzY5YzBiMGNl
MTY1NmY3NGMzMTI1NzNhMzQ2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2Fs
Z29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtU0hBMzg0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9j
cnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1TSEEzODQuY3BwCkBAIC01Miw3ICs1Miw3
IEBAIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXIgQ3J5cHRvQWxnb3JpdGhtU0hBMzg0OjppZGVu
dGlmaWVyKCkgY29uc3QKICAgICByZXR1cm4gc19pZGVudGlmaWVyOwogfQogCi12b2lkIENyeXB0
b0FsZ29yaXRobVNIQTM4NDo6ZGlnZXN0KGNvbnN0IENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnNE
ZXByZWNhdGVkJiwgY29uc3QgQ3J5cHRvT3BlcmF0aW9uRGF0YSYgZGF0YSwgVmVjdG9yQ2FsbGJh
Y2smJiBjYWxsYmFjaywgVm9pZENhbGxiYWNrJiYgZmFpbHVyZUNhbGxiYWNrLCBFeGNlcHRpb25D
b2RlJikKK3ZvaWQgQ3J5cHRvQWxnb3JpdGhtU0hBMzg0OjpkaWdlc3QoY29uc3QgQ3J5cHRvQWxn
b3JpdGhtUGFyYW1ldGVyc0RlcHJlY2F0ZWQmLCBjb25zdCBCdWZmZXJTb3VyY2UmIGRhdGEsIFZl
Y3RvckNhbGxiYWNrJiYgY2FsbGJhY2ssIFZvaWRDYWxsYmFjayYmIGZhaWx1cmVDYWxsYmFjaywg
RXhjZXB0aW9uQ29kZSYpCiB7CiAgICAgc3RkOjp1bmlxdWVfcHRyPENyeXB0b0RpZ2VzdD4gZGln
ZXN0ID0gQ3J5cHRvRGlnZXN0OjpjcmVhdGUoQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8z
ODQpOwogICAgIGlmICghZGlnZXN0KSB7CkBAIC02MCw3ICs2MCw3IEBAIHZvaWQgQ3J5cHRvQWxn
b3JpdGhtU0hBMzg0OjpkaWdlc3QoY29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVyc0RlcHJl
Y2F0ZWQmLCBjCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBkaWdlc3QtPmFkZEJ5dGVz
KGRhdGEuZmlyc3QsIGRhdGEuc2Vjb25kKTsKKyAgICBkaWdlc3QtPmFkZEJ5dGVzKGRhdGEuZGF0
YSwgZGF0YS5sZW5ndGgpOwogCiAgICAgY2FsbGJhY2soZGlnZXN0LT5jb21wdXRlSGFzaCgpKTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0Fs
Z29yaXRobVNIQTM4NC5oIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRv
QWxnb3JpdGhtU0hBMzg0LmgKaW5kZXggYjBiMGQwZTM3YWJmYzQ0OTNhNzIyMGFlNzgyZDBkNTY0
MjI1YzRkOC4uMThlZDY0NDQzZTA3NmQ2OWY1NzQxMzQwOTBjNzAxOWZmYTA1OTc4NyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtU0hB
Mzg0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3Jp
dGhtU0hBMzg0LmgKQEAgLTQxLDcgKzQxLDcgQEAgcHVibGljOgogCiAgICAgQ3J5cHRvQWxnb3Jp
dGhtSWRlbnRpZmllciBpZGVudGlmaWVyKCkgY29uc3Qgb3ZlcnJpZGU7CiAKLSAgICB2b2lkIGRp
Z2VzdChjb25zdCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzRGVwcmVjYXRlZCYsIGNvbnN0IENy
eXB0b09wZXJhdGlvbkRhdGEmLCBWZWN0b3JDYWxsYmFjayYmLCBWb2lkQ2FsbGJhY2smJiBmYWls
dXJlQ2FsbGJhY2ssIEV4Y2VwdGlvbkNvZGUmKSBvdmVycmlkZTsKKyAgICB2b2lkIGRpZ2VzdChj
b25zdCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzRGVwcmVjYXRlZCYsIGNvbnN0IEJ1ZmZlclNv
dXJjZSYsIFZlY3RvckNhbGxiYWNrJiYsIFZvaWRDYWxsYmFjayYmIGZhaWx1cmVDYWxsYmFjaywg
RXhjZXB0aW9uQ29kZSYpIG92ZXJyaWRlOwogCiBwcml2YXRlOgogICAgIENyeXB0b0FsZ29yaXRo
bVNIQTM4NCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMv
Q3J5cHRvQWxnb3JpdGhtU0hBNTEyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0
aG1zL0NyeXB0b0FsZ29yaXRobVNIQTUxMi5jcHAKaW5kZXggOWRhOTczNmYzODgzYTQwM2Y3ZWVh
YmQ2ODY0YjBlZjljYjcxMWE2Yi4uMmZlNjdmNGE5MzJlYmFmM2RiNDExOGEyODZjM2Y5OGY0ZDhm
NWRkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRv
QWxnb3JpdGhtU0hBNTEyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGht
cy9DcnlwdG9BbGdvcml0aG1TSEE1MTIuY3BwCkBAIC01Miw3ICs1Miw3IEBAIENyeXB0b0FsZ29y
aXRobUlkZW50aWZpZXIgQ3J5cHRvQWxnb3JpdGhtU0hBNTEyOjppZGVudGlmaWVyKCkgY29uc3QK
ICAgICByZXR1cm4gc19pZGVudGlmaWVyOwogfQogCi12b2lkIENyeXB0b0FsZ29yaXRobVNIQTUx
Mjo6ZGlnZXN0KGNvbnN0IENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnNEZXByZWNhdGVkJiwgY29u
c3QgQ3J5cHRvT3BlcmF0aW9uRGF0YSYgZGF0YSwgVmVjdG9yQ2FsbGJhY2smJiBjYWxsYmFjaywg
Vm9pZENhbGxiYWNrJiYgZmFpbHVyZUNhbGxiYWNrLCBFeGNlcHRpb25Db2RlJikKK3ZvaWQgQ3J5
cHRvQWxnb3JpdGhtU0hBNTEyOjpkaWdlc3QoY29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVy
c0RlcHJlY2F0ZWQmLCBjb25zdCBCdWZmZXJTb3VyY2UmIGRhdGEsIFZlY3RvckNhbGxiYWNrJiYg
Y2FsbGJhY2ssIFZvaWRDYWxsYmFjayYmIGZhaWx1cmVDYWxsYmFjaywgRXhjZXB0aW9uQ29kZSYp
CiB7CiAgICAgc3RkOjp1bmlxdWVfcHRyPENyeXB0b0RpZ2VzdD4gZGlnZXN0ID0gQ3J5cHRvRGln
ZXN0OjpjcmVhdGUoQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV81MTIpOwogICAgIGlmICgh
ZGlnZXN0KSB7CkBAIC02MCw3ICs2MCw3IEBAIHZvaWQgQ3J5cHRvQWxnb3JpdGhtU0hBNTEyOjpk
aWdlc3QoY29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVyc0RlcHJlY2F0ZWQmLCBjCiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAKLSAgICBkaWdlc3QtPmFkZEJ5dGVzKGRhdGEuZmlyc3QsIGRh
dGEuc2Vjb25kKTsKKyAgICBkaWdlc3QtPmFkZEJ5dGVzKGRhdGEuZGF0YSwgZGF0YS5sZW5ndGgp
OwogCiAgICAgY2FsbGJhY2soZGlnZXN0LT5jb21wdXRlSGFzaCgpKTsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVNIQTUxMi5o
IGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtU0hBNTEy
LmgKaW5kZXggNjQwMmEyOWNlM2VhMDUwNTAxMjRiNjA0ZGRkNDMxOTIzYTAxOWI0MS4uYTkzMWY3
YWU4ODQ1ZmU1MzMyMTg4MzA3ZDdlMWFmMzk3NjcwYTk2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtU0hBNTEyLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtU0hBNTEyLmgKQEAg
LTQxLDcgKzQxLDcgQEAgcHVibGljOgogCiAgICAgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllciBp
ZGVudGlmaWVyKCkgY29uc3Qgb3ZlcnJpZGU7CiAKLSAgICB2b2lkIGRpZ2VzdChjb25zdCBDcnlw
dG9BbGdvcml0aG1QYXJhbWV0ZXJzRGVwcmVjYXRlZCYsIGNvbnN0IENyeXB0b09wZXJhdGlvbkRh
dGEmLCBWZWN0b3JDYWxsYmFjayYmLCBWb2lkQ2FsbGJhY2smJiBmYWlsdXJlQ2FsbGJhY2ssIEV4
Y2VwdGlvbkNvZGUmKSBvdmVycmlkZTsKKyAgICB2b2lkIGRpZ2VzdChjb25zdCBDcnlwdG9BbGdv
cml0aG1QYXJhbWV0ZXJzRGVwcmVjYXRlZCYsIGNvbnN0IEJ1ZmZlclNvdXJjZSYsIFZlY3RvckNh
bGxiYWNrJiYsIFZvaWRDYWxsYmFjayYmIGZhaWx1cmVDYWxsYmFjaywgRXhjZXB0aW9uQ29kZSYp
IG92ZXJyaWRlOwogCiBwcml2YXRlOgogICAgIENyeXB0b0FsZ29yaXRobVNIQTUxMigpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2dudXRscy9DcnlwdG9BbGdvcml0aG1BRVNf
Q0JDR251VExTLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9nbnV0bHMvQ3J5cHRvQWxnb3Jp
dGhtQUVTX0NCQ0dudVRMUy5jcHAKaW5kZXggMTQ2MDdkYjZmMWQ3MmEyMWE1ZTc2NGUyYjMxNWFi
YmI2MzI1OWU1Zi4uMGU3NWQ0M2E3ZmI3MGZmZDFmOTE1MWRmMjNhYWEyMGJmZTY3NTU2NSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2dudXRscy9DcnlwdG9BbGdvcml0aG1BRVNf
Q0JDR251VExTLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vZ251dGxzL0NyeXB0b0Fs
Z29yaXRobUFFU19DQkNHbnVUTFMuY3BwCkBAIC0zNSw3ICszNSw3IEBACiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAotdm9pZCBDcnlwdG9BbGdvcml0aG1BRVNfQ0JDOjpwbGF0Zm9ybUVuY3J5cHQo
Y29uc3QgQ3J5cHRvQWxnb3JpdGhtQWVzQ2JjUGFyYW1zRGVwcmVjYXRlZCYgcGFyYW1ldGVycywg
Y29uc3QgQ3J5cHRvS2V5QUVTJiBrZXksIGNvbnN0IENyeXB0b09wZXJhdGlvbkRhdGEmIGRhdGEs
IFZlY3RvckNhbGxiYWNrJiYgY2FsbGJhY2ssIFZvaWRDYWxsYmFjayYmIGZhaWx1cmVDYWxsYmFj
aywgRXhjZXB0aW9uQ29kZSYgZWMpCit2b2lkIENyeXB0b0FsZ29yaXRobUFFU19DQkM6OnBsYXRm
b3JtRW5jcnlwdChjb25zdCBDcnlwdG9BbGdvcml0aG1BZXNDYmNQYXJhbXNEZXByZWNhdGVkJiBw
YXJhbWV0ZXJzLCBjb25zdCBDcnlwdG9LZXlBRVMmIGtleSwgY29uc3QgQnVmZmVyU291cmNlJiBk
YXRhLCBWZWN0b3JDYWxsYmFjayYmIGNhbGxiYWNrLCBWb2lkQ2FsbGJhY2smJiBmYWlsdXJlQ2Fs
bGJhY2ssIEV4Y2VwdGlvbkNvZGUmIGVjKQogewogICAgIG5vdEltcGxlbWVudGVkKCk7CiAgICAg
ZWMgPSBOT1RfU1VQUE9SVEVEX0VSUjsKQEAgLTQ3LDcgKzQ3LDcgQEAgdm9pZCBDcnlwdG9BbGdv
cml0aG1BRVNfQ0JDOjpwbGF0Zm9ybUVuY3J5cHQoY29uc3QgQ3J5cHRvQWxnb3JpdGhtQWVzQ2Jj
UGFyYW1zRGUKICAgICBVTlVTRURfUEFSQU0oZmFpbHVyZUNhbGxiYWNrKTsKIH0KIAotdm9pZCBD
cnlwdG9BbGdvcml0aG1BRVNfQ0JDOjpwbGF0Zm9ybURlY3J5cHQoY29uc3QgQ3J5cHRvQWxnb3Jp
dGhtQWVzQ2JjUGFyYW1zRGVwcmVjYXRlZCYgcGFyYW1ldGVycywgY29uc3QgQ3J5cHRvS2V5QUVT
JiBrZXksIGNvbnN0IENyeXB0b09wZXJhdGlvbkRhdGEmIGRhdGEsIFZlY3RvckNhbGxiYWNrJiYg
Y2FsbGJhY2ssIFZvaWRDYWxsYmFjayYmIGZhaWx1cmVDYWxsYmFjaywgRXhjZXB0aW9uQ29kZSYg
ZWMpCit2b2lkIENyeXB0b0FsZ29yaXRobUFFU19DQkM6OnBsYXRmb3JtRGVjcnlwdChjb25zdCBD
cnlwdG9BbGdvcml0aG1BZXNDYmNQYXJhbXNEZXByZWNhdGVkJiBwYXJhbWV0ZXJzLCBjb25zdCBD
cnlwdG9LZXlBRVMmIGtleSwgY29uc3QgQnVmZmVyU291cmNlJiBkYXRhLCBWZWN0b3JDYWxsYmFj
ayYmIGNhbGxiYWNrLCBWb2lkQ2FsbGJhY2smJiBmYWlsdXJlQ2FsbGJhY2ssIEV4Y2VwdGlvbkNv
ZGUmIGVjKQogewogICAgIG5vdEltcGxlbWVudGVkKCk7CiAgICAgZWMgPSBOT1RfU1VQUE9SVEVE
X0VSUjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9nbnV0bHMvQ3J5cHRvQWxn
b3JpdGhtQUVTX0tXR251VExTLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9nbnV0bHMvQ3J5
cHRvQWxnb3JpdGhtQUVTX0tXR251VExTLmNwcAppbmRleCA5NDU0YzgzMTQxMDJlODhjZjBjOGM2
ODhhNzM5NDRhNDcxODlhMTNmLi40OGU2ZjRjM2RlMjlkYjBhNDA4YzM0NzFjNzY2ZGEyMjZkYzE2
OThhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vZ251dGxzL0NyeXB0b0FsZ29y
aXRobUFFU19LV0dudVRMUy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2dudXRscy9D
cnlwdG9BbGdvcml0aG1BRVNfS1dHbnVUTFMuY3BwCkBAIC0zNCw3ICszNCw3IEBACiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAotdm9pZCBDcnlwdG9BbGdvcml0aG1BRVNfS1c6OnBsYXRmb3JtRW5j
cnlwdChjb25zdCBDcnlwdG9LZXlBRVMmIGtleSwgY29uc3QgQ3J5cHRvT3BlcmF0aW9uRGF0YSYg
ZGF0YSwgVmVjdG9yQ2FsbGJhY2smJiBjYWxsYmFjaywgVm9pZENhbGxiYWNrJiYgZmFpbHVyZUNh
bGxiYWNrLCBFeGNlcHRpb25Db2RlJiBlYykKK3ZvaWQgQ3J5cHRvQWxnb3JpdGhtQUVTX0tXOjpw
bGF0Zm9ybUVuY3J5cHQoY29uc3QgQ3J5cHRvS2V5QUVTJiBrZXksIGNvbnN0IEJ1ZmZlclNvdXJj
ZSYgZGF0YSwgVmVjdG9yQ2FsbGJhY2smJiBjYWxsYmFjaywgVm9pZENhbGxiYWNrJiYgZmFpbHVy
ZUNhbGxiYWNrLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwog
ICAgIGVjID0gTk9UX1NVUFBPUlRFRF9FUlI7CkBAIC00NSw3ICs0NSw3IEBAIHZvaWQgQ3J5cHRv
QWxnb3JpdGhtQUVTX0tXOjpwbGF0Zm9ybUVuY3J5cHQoY29uc3QgQ3J5cHRvS2V5QUVTJiBrZXks
IGNvbnN0IENyeXB0CiAgICAgVU5VU0VEX1BBUkFNKGZhaWx1cmVDYWxsYmFjayk7CiB9CiAKLXZv
aWQgQ3J5cHRvQWxnb3JpdGhtQUVTX0tXOjpwbGF0Zm9ybURlY3J5cHQoY29uc3QgQ3J5cHRvS2V5
QUVTJiBrZXksIGNvbnN0IENyeXB0b09wZXJhdGlvbkRhdGEmIGRhdGEsIFZlY3RvckNhbGxiYWNr
JiYgY2FsbGJhY2ssIFZvaWRDYWxsYmFjayYmIGZhaWx1cmVDYWxsYmFjaywgRXhjZXB0aW9uQ29k
ZSYgZWMpCit2b2lkIENyeXB0b0FsZ29yaXRobUFFU19LVzo6cGxhdGZvcm1EZWNyeXB0KGNvbnN0
IENyeXB0b0tleUFFUyYga2V5LCBjb25zdCBCdWZmZXJTb3VyY2UmIGRhdGEsIFZlY3RvckNhbGxi
YWNrJiYgY2FsbGJhY2ssIFZvaWRDYWxsYmFjayYmIGZhaWx1cmVDYWxsYmFjaywgRXhjZXB0aW9u
Q29kZSYgZWMpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKICAgICBlYyA9IE5PVF9TVVBQT1JU
RURfRVJSOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2dudXRscy9DcnlwdG9B
bGdvcml0aG1ITUFDR251VExTLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9nbnV0bHMvQ3J5
cHRvQWxnb3JpdGhtSE1BQ0dudVRMUy5jcHAKaW5kZXggYTgzMDQ2NTdiMzNlZDAyNGUzODJkNjE5
YWQ2MzJiNjA5YjJiNzVjMy4uZGE5MWNiYzAwZjRkZjYyNjYyOTNhNjQ3ZDk3ZTJmYTY3YTNiYWE0
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2dudXRscy9DcnlwdG9BbGdvcml0
aG1ITUFDR251VExTLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vZ251dGxzL0NyeXB0
b0FsZ29yaXRobUhNQUNHbnVUTFMuY3BwCkBAIC01NSwyMCArNTUsMjAgQEAgc3RhdGljIGdudXRs
c19tYWNfYWxnb3JpdGhtX3QgZ2V0R251dGxzRGlnZXN0QWxnb3JpdGhtKENyeXB0b0FsZ29yaXRo
bUlkZW50aWZpZXIKICAgICB9CiB9CiAKLXN0YXRpYyBWZWN0b3I8dWludDhfdD4gY2FsY3VsYXRl
U2lnbmF0dXJlKGdudXRsc19tYWNfYWxnb3JpdGhtX3QgYWxnb3JpdGhtLCBjb25zdCBWZWN0b3I8
dWludDhfdD4mIGtleSwgY29uc3QgQ3J5cHRvT3BlcmF0aW9uRGF0YSYgZGF0YSkKK3N0YXRpYyBW
ZWN0b3I8dWludDhfdD4gY2FsY3VsYXRlU2lnbmF0dXJlKGdudXRsc19tYWNfYWxnb3JpdGhtX3Qg
YWxnb3JpdGhtLCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGtleSwgY29uc3QgQnVmZmVyU291cmNl
JiBkYXRhKQogewogICAgIHNpemVfdCBkaWdlc3RMZW5ndGggPSBnbnV0bHNfaG1hY19nZXRfbGVu
KGFsZ29yaXRobSk7CiAKICAgICBWZWN0b3I8dWludDhfdD4gcmVzdWx0KGRpZ2VzdExlbmd0aCk7
CiAgICAgY29uc3Qgdm9pZCoga2V5RGF0YSA9IGtleS5kYXRhKCkgPyBrZXkuZGF0YSgpIDogcmVp
bnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oIiIpOwotICAgIGludCByZXQgPSBnbnV0bHNf
aG1hY19mYXN0KGFsZ29yaXRobSwga2V5RGF0YSwga2V5LnNpemUoKSwgZGF0YS5maXJzdCwgZGF0
YS5zZWNvbmQsIHJlc3VsdC5kYXRhKCkpOworICAgIGludCByZXQgPSBnbnV0bHNfaG1hY19mYXN0
KGFsZ29yaXRobSwga2V5RGF0YSwga2V5LnNpemUoKSwgZGF0YS5kYXRhLCBkYXRhLmxlbmd0aCwg
cmVzdWx0LmRhdGEoKSk7CiAgICAgQVNTRVJUKHJldCA9PSBHTlVUTFNfRV9TVUNDRVNTKTsKICAg
ICBVTlVTRURfUEFSQU0ocmV0KTsKIAogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLXZvaWQgQ3J5
cHRvQWxnb3JpdGhtSE1BQzo6cGxhdGZvcm1TaWduKGNvbnN0IENyeXB0b0FsZ29yaXRobUhtYWNQ
YXJhbXNEZXByZWNhdGVkJiBwYXJhbWV0ZXJzLCBjb25zdCBDcnlwdG9LZXlITUFDJiBrZXksIGNv
bnN0IENyeXB0b09wZXJhdGlvbkRhdGEmIGRhdGEsIFZlY3RvckNhbGxiYWNrJiYgY2FsbGJhY2ss
IFZvaWRDYWxsYmFjayYmIGZhaWx1cmVDYWxsYmFjaywgRXhjZXB0aW9uQ29kZSYgZWMpCit2b2lk
IENyeXB0b0FsZ29yaXRobUhNQUM6OnBsYXRmb3JtU2lnbihjb25zdCBDcnlwdG9BbGdvcml0aG1I
bWFjUGFyYW1zRGVwcmVjYXRlZCYgcGFyYW1ldGVycywgY29uc3QgQ3J5cHRvS2V5SE1BQyYga2V5
LCBjb25zdCBCdWZmZXJTb3VyY2UmIGRhdGEsIFZlY3RvckNhbGxiYWNrJiYgY2FsbGJhY2ssIFZv
aWRDYWxsYmFjayYmIGZhaWx1cmVDYWxsYmFjaywgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAg
VU5VU0VEX1BBUkFNKGZhaWx1cmVDYWxsYmFjayk7CiAgICAgZ251dGxzX21hY19hbGdvcml0aG1f
dCBhbGdvcml0aG0gPSBnZXRHbnV0bHNEaWdlc3RBbGdvcml0aG0ocGFyYW1ldGVycy5oYXNoKTsK
QEAgLTgyLDcgKzgyLDcgQEAgdm9pZCBDcnlwdG9BbGdvcml0aG1ITUFDOjpwbGF0Zm9ybVNpZ24o
Y29uc3QgQ3J5cHRvQWxnb3JpdGhtSG1hY1BhcmFtc0RlcHJlY2F0ZWQKICAgICBjYWxsYmFjayhz
aWduYXR1cmUpOwogfQogCi12b2lkIENyeXB0b0FsZ29yaXRobUhNQUM6OnBsYXRmb3JtVmVyaWZ5
KGNvbnN0IENyeXB0b0FsZ29yaXRobUhtYWNQYXJhbXNEZXByZWNhdGVkJiBwYXJhbWV0ZXJzLCBj
b25zdCBDcnlwdG9LZXlITUFDJiBrZXksIGNvbnN0IENyeXB0b09wZXJhdGlvbkRhdGEmIGV4cGVj
dGVkU2lnbmF0dXJlLCBjb25zdCBDcnlwdG9PcGVyYXRpb25EYXRhJiBkYXRhLCBCb29sQ2FsbGJh
Y2smJiBjYWxsYmFjaywgVm9pZENhbGxiYWNrJiYgZmFpbHVyZUNhbGxiYWNrLCBFeGNlcHRpb25D
b2RlJiBlYykKK3ZvaWQgQ3J5cHRvQWxnb3JpdGhtSE1BQzo6cGxhdGZvcm1WZXJpZnkoY29uc3Qg
Q3J5cHRvQWxnb3JpdGhtSG1hY1BhcmFtc0RlcHJlY2F0ZWQmIHBhcmFtZXRlcnMsIGNvbnN0IENy
eXB0b0tleUhNQUMmIGtleSwgY29uc3QgQnVmZmVyU291cmNlJiBleHBlY3RlZFNpZ25hdHVyZSwg
Y29uc3QgQnVmZmVyU291cmNlJiBkYXRhLCBCb29sQ2FsbGJhY2smJiBjYWxsYmFjaywgVm9pZENh
bGxiYWNrJiYgZmFpbHVyZUNhbGxiYWNrLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBVTlVT
RURfUEFSQU0oZmFpbHVyZUNhbGxiYWNrKTsKICAgICBnbnV0bHNfbWFjX2FsZ29yaXRobV90IGFs
Z29yaXRobSA9IGdldEdudXRsc0RpZ2VzdEFsZ29yaXRobShwYXJhbWV0ZXJzLmhhc2gpOwpAQCAt
OTQsNyArOTQsNyBAQCB2b2lkIENyeXB0b0FsZ29yaXRobUhNQUM6OnBsYXRmb3JtVmVyaWZ5KGNv
bnN0IENyeXB0b0FsZ29yaXRobUhtYWNQYXJhbXNEZXByZWNhdAogICAgIFZlY3Rvcjx1aW50OF90
PiBzaWduYXR1cmUgPSBjYWxjdWxhdGVTaWduYXR1cmUoYWxnb3JpdGhtLCBrZXkua2V5KCksIGRh
dGEpOwogCiAgICAgLy8gVXNpbmcgYSBjb25zdGFudCB0aW1lIGNvbXBhcmlzb24gdG8gcHJldmVu
dCB0aW1pbmcgYXR0YWNrcy4KLSAgICBib29sIHJlc3VsdCA9IHNpZ25hdHVyZS5zaXplKCkgPT0g
ZXhwZWN0ZWRTaWduYXR1cmUuc2Vjb25kICYmICFjb25zdGFudFRpbWVNZW1jbXAoc2lnbmF0dXJl
LmRhdGEoKSwgZXhwZWN0ZWRTaWduYXR1cmUuZmlyc3QsIHNpZ25hdHVyZS5zaXplKCkpOworICAg
IGJvb2wgcmVzdWx0ID0gc2lnbmF0dXJlLnNpemUoKSA9PSBleHBlY3RlZFNpZ25hdHVyZS5sZW5n
dGggJiYgIWNvbnN0YW50VGltZU1lbWNtcChzaWduYXR1cmUuZGF0YSgpLCBleHBlY3RlZFNpZ25h
dHVyZS5kYXRhLCBzaWduYXR1cmUuc2l6ZSgpKTsKIAogICAgIGNhbGxiYWNrKHJlc3VsdCk7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vZ251dGxzL0NyeXB0b0FsZ29yaXRo
bVJTQUVTX1BLQ1MxX3YxXzVHbnVUTFMuY3BwIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2dudXRs
cy9DcnlwdG9BbGdvcml0aG1SU0FFU19QS0NTMV92MV81R251VExTLmNwcAppbmRleCA3YTVlODRi
NWZkZTliYzU5MTY4MWE4ODVmODNlNjM1MGFjMmM2OWJhLi42OWIwMGMwMWMxNDIyZGQ3NThiNTk3
NmEzZTU3MjdlYzRiNjhkODVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vZ251
dGxzL0NyeXB0b0FsZ29yaXRobVJTQUVTX1BLQ1MxX3YxXzVHbnVUTFMuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2NyeXB0by9nbnV0bHMvQ3J5cHRvQWxnb3JpdGhtUlNBRVNfUEtDUzFfdjFfNUdu
dVRMUy5jcHAKQEAgLTM0LDcgKzM0LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi12b2lk
IENyeXB0b0FsZ29yaXRobVJTQUVTX1BLQ1MxX3YxXzU6OnBsYXRmb3JtRW5jcnlwdChjb25zdCBD
cnlwdG9LZXlSU0EmIGtleSwgY29uc3QgQ3J5cHRvT3BlcmF0aW9uRGF0YSYgZGF0YSwgVmVjdG9y
Q2FsbGJhY2smJiBjYWxsYmFjaywgVm9pZENhbGxiYWNrJiYgZmFpbHVyZUNhbGxiYWNrLCBFeGNl
cHRpb25Db2RlJiBlYykKK3ZvaWQgQ3J5cHRvQWxnb3JpdGhtUlNBRVNfUEtDUzFfdjFfNTo6cGxh
dGZvcm1FbmNyeXB0KGNvbnN0IENyeXB0b0tleVJTQSYga2V5LCBjb25zdCBCdWZmZXJTb3VyY2Um
IGRhdGEsIFZlY3RvckNhbGxiYWNrJiYgY2FsbGJhY2ssIFZvaWRDYWxsYmFjayYmIGZhaWx1cmVD
YWxsYmFjaywgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKICAg
ICBlYyA9IE5PVF9TVVBQT1JURURfRVJSOwpAQCAtNDUsNyArNDUsNyBAQCB2b2lkIENyeXB0b0Fs
Z29yaXRobVJTQUVTX1BLQ1MxX3YxXzU6OnBsYXRmb3JtRW5jcnlwdChjb25zdCBDcnlwdG9LZXlS
U0EmIGtleSwgYwogICAgIFVOVVNFRF9QQVJBTShmYWlsdXJlQ2FsbGJhY2spOwogfQogCi12b2lk
IENyeXB0b0FsZ29yaXRobVJTQUVTX1BLQ1MxX3YxXzU6OnBsYXRmb3JtRGVjcnlwdChjb25zdCBD
cnlwdG9LZXlSU0EmIGtleSwgY29uc3QgQ3J5cHRvT3BlcmF0aW9uRGF0YSYgZGF0YSwgVmVjdG9y
Q2FsbGJhY2smJiBjYWxsYmFjaywgVm9pZENhbGxiYWNrJiYgZmFpbHVyZUNhbGxiYWNrLCBFeGNl
cHRpb25Db2RlJiBlYykKK3ZvaWQgQ3J5cHRvQWxnb3JpdGhtUlNBRVNfUEtDUzFfdjFfNTo6cGxh
dGZvcm1EZWNyeXB0KGNvbnN0IENyeXB0b0tleVJTQSYga2V5LCBjb25zdCBCdWZmZXJTb3VyY2Um
IGRhdGEsIFZlY3RvckNhbGxiYWNrJiYgY2FsbGJhY2ssIFZvaWRDYWxsYmFjayYmIGZhaWx1cmVD
YWxsYmFjaywgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKICAg
ICBlYyA9IE5PVF9TVVBQT1JURURfRVJSOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3J5
cHRvL2dudXRscy9DcnlwdG9BbGdvcml0aG1SU0FTU0FfUEtDUzFfdjFfNUdudVRMUy5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9jcnlwdG8vZ251dGxzL0NyeXB0b0FsZ29yaXRobVJTQVNTQV9QS0NTMV92
MV81R251VExTLmNwcAppbmRleCA1NjhkNTJiYTQwMzRkZjAwYjc0M2ZhMjc5YzRmYWQxN2IxNWM2
MTNkLi4wNjRiNzBkMDY0ZmNjYTQ1ZmY2YjUzY2U1MDRiMDdhYjliMDdiMGViIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vZ251dGxzL0NyeXB0b0FsZ29yaXRobVJTQVNTQV9QS0NT
MV92MV81R251VExTLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vZ251dGxzL0NyeXB0
b0FsZ29yaXRobVJTQVNTQV9QS0NTMV92MV81R251VExTLmNwcApAQCAtMzUsNyArMzUsNyBAQAog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXZvaWQgQ3J5cHRvQWxnb3JpdGhtUlNBU1NBX1BLQ1Mx
X3YxXzU6OnBsYXRmb3JtU2lnbihjb25zdCBDcnlwdG9BbGdvcml0aG1Sc2FTc2FQYXJhbXNEZXBy
ZWNhdGVkJiBwYXJhbWV0ZXJzLCBjb25zdCBDcnlwdG9LZXlSU0EmIGtleSwgY29uc3QgQ3J5cHRv
T3BlcmF0aW9uRGF0YSYgZGF0YSwgVmVjdG9yQ2FsbGJhY2smJiBjYWxsYmFjaywgVm9pZENhbGxi
YWNrJiYgZmFpbHVyZUNhbGxiYWNrLCBFeGNlcHRpb25Db2RlJiBlYykKK3ZvaWQgQ3J5cHRvQWxn
b3JpdGhtUlNBU1NBX1BLQ1MxX3YxXzU6OnBsYXRmb3JtU2lnbihjb25zdCBDcnlwdG9BbGdvcml0
aG1Sc2FTc2FQYXJhbXNEZXByZWNhdGVkJiBwYXJhbWV0ZXJzLCBjb25zdCBDcnlwdG9LZXlSU0Em
IGtleSwgY29uc3QgQnVmZmVyU291cmNlJiBkYXRhLCBWZWN0b3JDYWxsYmFjayYmIGNhbGxiYWNr
LCBWb2lkQ2FsbGJhY2smJiBmYWlsdXJlQ2FsbGJhY2ssIEV4Y2VwdGlvbkNvZGUmIGVjKQogewog
ICAgIG5vdEltcGxlbWVudGVkKCk7CiAgICAgZWMgPSBOT1RfU1VQUE9SVEVEX0VSUjsKQEAgLTQ3
LDcgKzQ3LDcgQEAgdm9pZCBDcnlwdG9BbGdvcml0aG1SU0FTU0FfUEtDUzFfdjFfNTo6cGxhdGZv
cm1TaWduKGNvbnN0IENyeXB0b0FsZ29yaXRobVJzYVNzYVAKICAgICBVTlVTRURfUEFSQU0oZmFp
bHVyZUNhbGxiYWNrKTsKIH0KIAotdm9pZCBDcnlwdG9BbGdvcml0aG1SU0FTU0FfUEtDUzFfdjFf
NTo6cGxhdGZvcm1WZXJpZnkoY29uc3QgQ3J5cHRvQWxnb3JpdGhtUnNhU3NhUGFyYW1zRGVwcmVj
YXRlZCYgcGFyYW1ldGVycywgY29uc3QgQ3J5cHRvS2V5UlNBJiBrZXksIGNvbnN0IENyeXB0b09w
ZXJhdGlvbkRhdGEmIHNpZ25hdHVyZSwgY29uc3QgQ3J5cHRvT3BlcmF0aW9uRGF0YSYgZGF0YSwg
Qm9vbENhbGxiYWNrJiYgY2FsbGJhY2ssIFZvaWRDYWxsYmFjayYmIGZhaWx1cmVDYWxsYmFjaywg
RXhjZXB0aW9uQ29kZSYgZWMpCit2b2lkIENyeXB0b0FsZ29yaXRobVJTQVNTQV9QS0NTMV92MV81
OjpwbGF0Zm9ybVZlcmlmeShjb25zdCBDcnlwdG9BbGdvcml0aG1Sc2FTc2FQYXJhbXNEZXByZWNh
dGVkJiBwYXJhbWV0ZXJzLCBjb25zdCBDcnlwdG9LZXlSU0EmIGtleSwgY29uc3QgQnVmZmVyU291
cmNlJiBzaWduYXR1cmUsIGNvbnN0IEJ1ZmZlclNvdXJjZSYgZGF0YSwgQm9vbENhbGxiYWNrJiYg
Y2FsbGJhY2ssIFZvaWRDYWxsYmFjayYmIGZhaWx1cmVDYWxsYmFjaywgRXhjZXB0aW9uQ29kZSYg
ZWMpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKICAgICBlYyA9IE5PVF9TVVBQT1JURURfRVJS
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2dudXRscy9DcnlwdG9BbGdvcml0
aG1SU0FfT0FFUEdudVRMUy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vZ251dGxzL0NyeXB0
b0FsZ29yaXRobVJTQV9PQUVQR251VExTLmNwcAppbmRleCBhYjA2YWNkZDQ2MDRmNmU5MGYxNTI3
ZDU2OGFhODIxMDU5YzYwZmViLi5kMjE2NjhiMTVmOTllM2E3MDc4MmE4M2NkNzZlZGE4Y2FlZjMw
NTZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vZ251dGxzL0NyeXB0b0FsZ29y
aXRobVJTQV9PQUVQR251VExTLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vZ251dGxz
L0NyeXB0b0FsZ29yaXRobVJTQV9PQUVQR251VExTLmNwcApAQCAtMzUsNyArMzUsNyBAQAogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKLXZvaWQgQ3J5cHRvQWxnb3JpdGhtUlNBX09BRVA6OnBsYXRm
b3JtRW5jcnlwdChjb25zdCBDcnlwdG9BbGdvcml0aG1Sc2FPYWVwUGFyYW1zRGVwcmVjYXRlZCYg
cGFyYW1ldGVycywgY29uc3QgQ3J5cHRvS2V5UlNBJiBrZXksIGNvbnN0IENyeXB0b09wZXJhdGlv
bkRhdGEmIGRhdGEsIFZlY3RvckNhbGxiYWNrJiYgY2FsbGJhY2ssIFZvaWRDYWxsYmFjayYmIGZh
aWx1cmVDYWxsYmFjaywgRXhjZXB0aW9uQ29kZSYgZWMpCit2b2lkIENyeXB0b0FsZ29yaXRobVJT
QV9PQUVQOjpwbGF0Zm9ybUVuY3J5cHQoY29uc3QgQ3J5cHRvQWxnb3JpdGhtUnNhT2FlcFBhcmFt
c0RlcHJlY2F0ZWQmIHBhcmFtZXRlcnMsIGNvbnN0IENyeXB0b0tleVJTQSYga2V5LCBjb25zdCBC
dWZmZXJTb3VyY2UmIGRhdGEsIFZlY3RvckNhbGxiYWNrJiYgY2FsbGJhY2ssIFZvaWRDYWxsYmFj
ayYmIGZhaWx1cmVDYWxsYmFjaywgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgbm90SW1wbGVt
ZW50ZWQoKTsKICAgICBlYyA9IE5PVF9TVVBQT1JURURfRVJSOwpAQCAtNDcsNyArNDcsNyBAQCB2
b2lkIENyeXB0b0FsZ29yaXRobVJTQV9PQUVQOjpwbGF0Zm9ybUVuY3J5cHQoY29uc3QgQ3J5cHRv
QWxnb3JpdGhtUnNhT2FlcFBhcmFtcwogICAgIFVOVVNFRF9QQVJBTShmYWlsdXJlQ2FsbGJhY2sp
OwogfQogCi12b2lkIENyeXB0b0FsZ29yaXRobVJTQV9PQUVQOjpwbGF0Zm9ybURlY3J5cHQoY29u
c3QgQ3J5cHRvQWxnb3JpdGhtUnNhT2FlcFBhcmFtc0RlcHJlY2F0ZWQmIHBhcmFtZXRlcnMsIGNv
bnN0IENyeXB0b0tleVJTQSYga2V5LCBjb25zdCBDcnlwdG9PcGVyYXRpb25EYXRhJiBkYXRhLCBW
ZWN0b3JDYWxsYmFjayYmIGNhbGxiYWNrLCBWb2lkQ2FsbGJhY2smJiBmYWlsdXJlQ2FsbGJhY2ss
IEV4Y2VwdGlvbkNvZGUmIGVjKQordm9pZCBDcnlwdG9BbGdvcml0aG1SU0FfT0FFUDo6cGxhdGZv
cm1EZWNyeXB0KGNvbnN0IENyeXB0b0FsZ29yaXRobVJzYU9hZXBQYXJhbXNEZXByZWNhdGVkJiBw
YXJhbWV0ZXJzLCBjb25zdCBDcnlwdG9LZXlSU0EmIGtleSwgY29uc3QgQnVmZmVyU291cmNlJiBk
YXRhLCBWZWN0b3JDYWxsYmFjayYmIGNhbGxiYWNrLCBWb2lkQ2FsbGJhY2smJiBmYWlsdXJlQ2Fs
bGJhY2ssIEV4Y2VwdGlvbkNvZGUmIGVjKQogewogICAgIG5vdEltcGxlbWVudGVkKCk7CiAgICAg
ZWMgPSBOT1RfU1VQUE9SVEVEX0VSUjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0
by9rZXlzL0NyeXB0b0tleVNlcmlhbGl6YXRpb25SYXcuY3BwIGIvU291cmNlL1dlYkNvcmUvY3J5
cHRvL2tleXMvQ3J5cHRvS2V5U2VyaWFsaXphdGlvblJhdy5jcHAKaW5kZXggNmQzYjhjODQ1ODk5
YjVlYmZmMTMwMThlOWFmMmE3YjBlODZlZTFiNy4uNjZjOTk3ZmM1Nzk3ZTA2ZTU5ZTAzYWRjY2U3
NTU4NTY4Zjg1Y2E4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2tleXMvQ3J5
cHRvS2V5U2VyaWFsaXphdGlvblJhdy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2tl
eXMvQ3J5cHRvS2V5U2VyaWFsaXphdGlvblJhdy5jcHAKQEAgLTM1LDkgKzM1LDkgQEAKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCi1DcnlwdG9LZXlTZXJpYWxpemF0aW9uUmF3OjpDcnlwdG9LZXlT
ZXJpYWxpemF0aW9uUmF3KGNvbnN0IENyeXB0b09wZXJhdGlvbkRhdGEmIGRhdGEpCitDcnlwdG9L
ZXlTZXJpYWxpemF0aW9uUmF3OjpDcnlwdG9LZXlTZXJpYWxpemF0aW9uUmF3KGNvbnN0IEJ1ZmZl
clNvdXJjZSYgZGF0YSkKIHsKLSAgICBtX2RhdGEuYXBwZW5kKGRhdGEuZmlyc3QsIGRhdGEuc2Vj
b25kKTsKKyAgICBtX2RhdGEuYXBwZW5kKGRhdGEuZGF0YSwgZGF0YS5sZW5ndGgpOwogfQogCiBD
cnlwdG9LZXlTZXJpYWxpemF0aW9uUmF3Ojp+Q3J5cHRvS2V5U2VyaWFsaXphdGlvblJhdygpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8va2V5cy9DcnlwdG9LZXlTZXJpYWxpemF0
aW9uUmF3LmggYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8va2V5cy9DcnlwdG9LZXlTZXJpYWxpemF0
aW9uUmF3LmgKaW5kZXggZWZhM2NkMmMwMWQ5ZjM1YTBlOTBjMmE5OTdjNDE0ODJkNzhlYTUzNi4u
MzRkOTgxZWM0ZmRiN2IwMzZmMzkzY2M2ODU5MDIzOWMzYjcwZmZiOSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvY3J5cHRvL2tleXMvQ3J5cHRvS2V5U2VyaWFsaXphdGlvblJhdy5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2NyeXB0by9rZXlzL0NyeXB0b0tleVNlcmlhbGl6YXRpb25SYXcuaApA
QCAtMjYsNiArMjYsNyBAQAogI2lmbmRlZiBDcnlwdG9LZXlTZXJpYWxpemF0aW9uUmF3X2gKICNk
ZWZpbmUgQ3J5cHRvS2V5U2VyaWFsaXphdGlvblJhd19oCiAKKyNpbmNsdWRlICJCdWZmZXJTb3Vy
Y2UuaCIKICNpbmNsdWRlICJDcnlwdG9LZXlTZXJpYWxpemF0aW9uLmgiCiAjaW5jbHVkZSA8d3Rm
L1ZlY3Rvci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgpAQCAtMzksNyArNDAs
NyBAQCBjbGFzcyBDcnlwdG9LZXk7CiBjbGFzcyBDcnlwdG9LZXlTZXJpYWxpemF0aW9uUmF3IGZp
bmFsIDogcHVibGljIENyeXB0b0tleVNlcmlhbGl6YXRpb24gewogICAgIFdURl9NQUtFX05PTkNP
UFlBQkxFKENyeXB0b0tleVNlcmlhbGl6YXRpb25SYXcpOwogcHVibGljOgotICAgIHN0YXRpYyBz
dGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvS2V5U2VyaWFsaXphdGlvblJhdz4gY3JlYXRlKGNvbnN0IENy
eXB0b09wZXJhdGlvbkRhdGEmIGRhdGEpCisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxDcnlw
dG9LZXlTZXJpYWxpemF0aW9uUmF3PiBjcmVhdGUoY29uc3QgQnVmZmVyU291cmNlJiBkYXRhKQog
ICAgIHsKICAgICAgICAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9LZXlTZXJpYWxpemF0
aW9uUmF3PihuZXcgQ3J5cHRvS2V5U2VyaWFsaXphdGlvblJhdyhkYXRhKSk7CiAgICAgfQpAQCAt
NDksNyArNTAsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGJvb2wgc2VyaWFsaXplKGNvbnN0IENy
eXB0b0tleSYsIFZlY3Rvcjx1aW50OF90PiYpOwogCiBwcml2YXRlOgotICAgIENyeXB0b0tleVNl
cmlhbGl6YXRpb25SYXcoY29uc3QgQ3J5cHRvT3BlcmF0aW9uRGF0YSYpOworICAgIENyeXB0b0tl
eVNlcmlhbGl6YXRpb25SYXcoY29uc3QgQnVmZmVyU291cmNlJik7CiAKICAgICBPcHRpb25hbDxD
cnlwdG9BbGdvcml0aG1QYWlyPiByZWNvbmNpbGVBbGdvcml0aG0oQ3J5cHRvQWxnb3JpdGhtKiwg
Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVyc0RlcHJlY2F0ZWQqKSBjb25zdCBvdmVycmlkZTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL21hYy9DcnlwdG9BbGdvcml0aG1BRVNf
Q0JDTWFjLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9tYWMvQ3J5cHRvQWxnb3JpdGhtQUVT
X0NCQ01hYy5jcHAKaW5kZXggYjEyM2NlY2IxMjNjNTE0YzM4ZjA5MDQ0YmUzODJmMTgxNzZiNDcx
Zi4uMjE4ODQzMzg3ZGNlOTBhMTdkOGVlODc2YTIzMTQ0NjFmYzYyZjg5MCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvY3J5cHRvL21hYy9DcnlwdG9BbGdvcml0aG1BRVNfQ0JDTWFjLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vbWFjL0NyeXB0b0FsZ29yaXRobUFFU19DQkNNYWMu
Y3BwCkBAIC0zNSw3ICszNSw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotc3RhdGljIHZv
aWQgdHJhbnNmb3JtQUVTX0NCQyhDQ09wZXJhdGlvbiBvcGVyYXRpb24sIGNvbnN0IENyeXB0b0Fs
Z29yaXRobUFlc0NiY1BhcmFtc0RlcHJlY2F0ZWQmIHBhcmFtZXRlcnMsIGNvbnN0IENyeXB0b0tl
eUFFUyYga2V5LCBjb25zdCBDcnlwdG9PcGVyYXRpb25EYXRhJiBkYXRhLCBDcnlwdG9BbGdvcml0
aG06OlZlY3RvckNhbGxiYWNrJiYgY2FsbGJhY2ssIENyeXB0b0FsZ29yaXRobTo6Vm9pZENhbGxi
YWNrJiYgZmFpbHVyZUNhbGxiYWNrKQorc3RhdGljIHZvaWQgdHJhbnNmb3JtQUVTX0NCQyhDQ09w
ZXJhdGlvbiBvcGVyYXRpb24sIGNvbnN0IENyeXB0b0FsZ29yaXRobUFlc0NiY1BhcmFtc0RlcHJl
Y2F0ZWQmIHBhcmFtZXRlcnMsIGNvbnN0IENyeXB0b0tleUFFUyYga2V5LCBjb25zdCBCdWZmZXJT
b3VyY2UmIGRhdGEsIENyeXB0b0FsZ29yaXRobTo6VmVjdG9yQ2FsbGJhY2smJiBjYWxsYmFjaywg
Q3J5cHRvQWxnb3JpdGhtOjpWb2lkQ2FsbGJhY2smJiBmYWlsdXJlQ2FsbGJhY2spCiB7CiAgICAg
c3RhdGljX2Fzc2VydChzaXplb2YocGFyYW1ldGVycy5pdikgPT0ga0NDQmxvY2tTaXplQUVTMTI4
LCAiSW5pdGlhbGl6YXRpb24gdmVjdG9yIHNpemUgbXVzdCBiZSB0aGUgc2FtZSBhcyBhbGdvcml0
aG0gYmxvY2sgc2l6ZSIpOwogCkBAIC01NywxMCArNTcsMTAgQEAgc3RhdGljIHZvaWQgdHJhbnNm
b3JtQUVTX0NCQyhDQ09wZXJhdGlvbiBvcGVyYXRpb24sIGNvbnN0IENyeXB0b0FsZ29yaXRobUFl
c0NiY1AKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIFZlY3Rvcjx1aW50OF90PiByZXN1
bHQoQ0NDcnlwdG9yR2V0T3V0cHV0TGVuZ3RoKGNyeXB0b3IsIGRhdGEuc2Vjb25kLCB0cnVlKSk7
CisgICAgVmVjdG9yPHVpbnQ4X3Q+IHJlc3VsdChDQ0NyeXB0b3JHZXRPdXRwdXRMZW5ndGgoY3J5
cHRvciwgZGF0YS5sZW5ndGgsIHRydWUpKTsKIAogICAgIHNpemVfdCBieXRlc1dyaXR0ZW47Ci0g
ICAgc3RhdHVzID0gQ0NDcnlwdG9yVXBkYXRlKGNyeXB0b3IsIGRhdGEuZmlyc3QsIGRhdGEuc2Vj
b25kLCByZXN1bHQuZGF0YSgpLCByZXN1bHQuc2l6ZSgpLCAmYnl0ZXNXcml0dGVuKTsKKyAgICBz
dGF0dXMgPSBDQ0NyeXB0b3JVcGRhdGUoY3J5cHRvciwgZGF0YS5kYXRhLCBkYXRhLmxlbmd0aCwg
cmVzdWx0LmRhdGEoKSwgcmVzdWx0LnNpemUoKSwgJmJ5dGVzV3JpdHRlbik7CiAgICAgaWYgKHN0
YXR1cykgewogICAgICAgICBmYWlsdXJlQ2FsbGJhY2soKTsKICAgICAgICAgcmV0dXJuOwpAQCAt
ODIsMTIgKzgyLDEyIEBAIHN0YXRpYyB2b2lkIHRyYW5zZm9ybUFFU19DQkMoQ0NPcGVyYXRpb24g
b3BlcmF0aW9uLCBjb25zdCBDcnlwdG9BbGdvcml0aG1BZXNDYmNQCiAgICAgY2FsbGJhY2socmVz
dWx0KTsKIH0KIAotdm9pZCBDcnlwdG9BbGdvcml0aG1BRVNfQ0JDOjpwbGF0Zm9ybUVuY3J5cHQo
Y29uc3QgQ3J5cHRvQWxnb3JpdGhtQWVzQ2JjUGFyYW1zRGVwcmVjYXRlZCYgcGFyYW1ldGVycywg
Y29uc3QgQ3J5cHRvS2V5QUVTJiBrZXksIGNvbnN0IENyeXB0b09wZXJhdGlvbkRhdGEmIGRhdGEs
IFZlY3RvckNhbGxiYWNrJiYgY2FsbGJhY2ssIFZvaWRDYWxsYmFjayYmIGZhaWx1cmVDYWxsYmFj
aywgRXhjZXB0aW9uQ29kZSYpCit2b2lkIENyeXB0b0FsZ29yaXRobUFFU19DQkM6OnBsYXRmb3Jt
RW5jcnlwdChjb25zdCBDcnlwdG9BbGdvcml0aG1BZXNDYmNQYXJhbXNEZXByZWNhdGVkJiBwYXJh
bWV0ZXJzLCBjb25zdCBDcnlwdG9LZXlBRVMmIGtleSwgY29uc3QgQnVmZmVyU291cmNlJiBkYXRh
LCBWZWN0b3JDYWxsYmFjayYmIGNhbGxiYWNrLCBWb2lkQ2FsbGJhY2smJiBmYWlsdXJlQ2FsbGJh
Y2ssIEV4Y2VwdGlvbkNvZGUmKQogewogICAgIHRyYW5zZm9ybUFFU19DQkMoa0NDRW5jcnlwdCwg
cGFyYW1ldGVycywga2V5LCBkYXRhLCBXVEZNb3ZlKGNhbGxiYWNrKSwgV1RGTW92ZShmYWlsdXJl
Q2FsbGJhY2spKTsKIH0KIAotdm9pZCBDcnlwdG9BbGdvcml0aG1BRVNfQ0JDOjpwbGF0Zm9ybURl
Y3J5cHQoY29uc3QgQ3J5cHRvQWxnb3JpdGhtQWVzQ2JjUGFyYW1zRGVwcmVjYXRlZCYgcGFyYW1l
dGVycywgY29uc3QgQ3J5cHRvS2V5QUVTJiBrZXksIGNvbnN0IENyeXB0b09wZXJhdGlvbkRhdGEm
IGRhdGEsIFZlY3RvckNhbGxiYWNrJiYgY2FsbGJhY2ssIFZvaWRDYWxsYmFjayYmIGZhaWx1cmVD
YWxsYmFjaywgRXhjZXB0aW9uQ29kZSYpCit2b2lkIENyeXB0b0FsZ29yaXRobUFFU19DQkM6OnBs
YXRmb3JtRGVjcnlwdChjb25zdCBDcnlwdG9BbGdvcml0aG1BZXNDYmNQYXJhbXNEZXByZWNhdGVk
JiBwYXJhbWV0ZXJzLCBjb25zdCBDcnlwdG9LZXlBRVMmIGtleSwgY29uc3QgQnVmZmVyU291cmNl
JiBkYXRhLCBWZWN0b3JDYWxsYmFjayYmIGNhbGxiYWNrLCBWb2lkQ2FsbGJhY2smJiBmYWlsdXJl
Q2FsbGJhY2ssIEV4Y2VwdGlvbkNvZGUmKQogewogICAgIHRyYW5zZm9ybUFFU19DQkMoa0NDRGVj
cnlwdCwgcGFyYW1ldGVycywga2V5LCBkYXRhLCBXVEZNb3ZlKGNhbGxiYWNrKSwgV1RGTW92ZShm
YWlsdXJlQ2FsbGJhY2spKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9t
YWMvQ3J5cHRvQWxnb3JpdGhtQUVTX0tXTWFjLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9t
YWMvQ3J5cHRvQWxnb3JpdGhtQUVTX0tXTWFjLmNwcAppbmRleCA5ODU1NTMwNDYzYjc3MGI1YWVh
N2EzZGM4MjZlOWM3MTEyNGE5NDMzLi5mMzMyYjhiODM4ZjdlYTk1NzIyMzU1YzZhYzU3YWNmNjc1
ZGJmMTgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vbWFjL0NyeXB0b0FsZ29y
aXRobUFFU19LV01hYy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL21hYy9DcnlwdG9B
bGdvcml0aG1BRVNfS1dNYWMuY3BwCkBAIC0zNCwxOCArMzQsMTggQEAKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCi12b2lkIENyeXB0b0FsZ29yaXRobUFFU19LVzo6cGxhdGZvcm1FbmNyeXB0KGNv
bnN0IENyeXB0b0tleUFFUyYga2V5LCBjb25zdCBDcnlwdG9PcGVyYXRpb25EYXRhJiBkYXRhLCBW
ZWN0b3JDYWxsYmFjayYmIGNhbGxiYWNrLCBWb2lkQ2FsbGJhY2smJiBmYWlsdXJlQ2FsbGJhY2ss
IEV4Y2VwdGlvbkNvZGUmKQordm9pZCBDcnlwdG9BbGdvcml0aG1BRVNfS1c6OnBsYXRmb3JtRW5j
cnlwdChjb25zdCBDcnlwdG9LZXlBRVMmIGtleSwgY29uc3QgQnVmZmVyU291cmNlJiBkYXRhLCBW
ZWN0b3JDYWxsYmFjayYmIGNhbGxiYWNrLCBWb2lkQ2FsbGJhY2smJiBmYWlsdXJlQ2FsbGJhY2ss
IEV4Y2VwdGlvbkNvZGUmKQogewotICAgIGlmIChkYXRhLnNlY29uZCAlIDgpIHsKKyAgICBpZiAo
ZGF0YS5sZW5ndGggJSA4KSB7CiAgICAgICAgIC8vIFJGQyAzMzk0IHVzZXMgNjQtYml0IGJsb2Nr
cyBhcyBpbnB1dC4KICAgICAgICAgLy8gPHJkYXI6Ly9wcm9ibGVtLzE1OTQ5OTkyPiBDb21tb25D
cnlwdG8gZG9lc24ndCBkZXRlY3QgaW5jb3JyZWN0IGRhdGEgbGVuZ3RoLCBzaWxlbnRseSBwcm9k
dWNpbmcgYSBiYWQgY3lwaGVydGV4dC4KICAgICAgICAgZmFpbHVyZUNhbGxiYWNrKCk7CiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAKLSAgICBWZWN0b3I8dWludDhfdD4gcmVzdWx0KENDU3ltbWV0
cmljV3JhcHBlZFNpemUoa0NDV1JBUEFFUywgZGF0YS5zZWNvbmQpKTsKKyAgICBWZWN0b3I8dWlu
dDhfdD4gcmVzdWx0KENDU3ltbWV0cmljV3JhcHBlZFNpemUoa0NDV1JBUEFFUywgZGF0YS5sZW5n
dGgpKTsKICAgICBzaXplX3QgcmVzdWx0U2l6ZSA9IHJlc3VsdC5zaXplKCk7Ci0gICAgaW50IHN0
YXR1cyA9IENDU3ltbWV0cmljS2V5V3JhcChrQ0NXUkFQQUVTLCBDQ3JmYzMzOTRfaXYsIENDcmZj
MzM5NF9pdkxlbiwga2V5LmtleSgpLmRhdGEoKSwga2V5LmtleSgpLnNpemUoKSwgZGF0YS5maXJz
dCwgZGF0YS5zZWNvbmQsIHJlc3VsdC5kYXRhKCksICZyZXN1bHRTaXplKTsKKyAgICBpbnQgc3Rh
dHVzID0gQ0NTeW1tZXRyaWNLZXlXcmFwKGtDQ1dSQVBBRVMsIENDcmZjMzM5NF9pdiwgQ0NyZmMz
Mzk0X2l2TGVuLCBrZXkua2V5KCkuZGF0YSgpLCBrZXkua2V5KCkuc2l6ZSgpLCBkYXRhLmRhdGEs
IGRhdGEubGVuZ3RoLCByZXN1bHQuZGF0YSgpLCAmcmVzdWx0U2l6ZSk7CiAgICAgaWYgKHN0YXR1
cykgewogICAgICAgICBmYWlsdXJlQ2FsbGJhY2soKTsKICAgICAgICAgcmV0dXJuOwpAQCAtNTQs
OSArNTQsOSBAQCB2b2lkIENyeXB0b0FsZ29yaXRobUFFU19LVzo6cGxhdGZvcm1FbmNyeXB0KGNv
bnN0IENyeXB0b0tleUFFUyYga2V5LCBjb25zdCBDcnlwdAogICAgIGNhbGxiYWNrKHJlc3VsdCk7
CiB9CiAKLXZvaWQgQ3J5cHRvQWxnb3JpdGhtQUVTX0tXOjpwbGF0Zm9ybURlY3J5cHQoY29uc3Qg
Q3J5cHRvS2V5QUVTJiBrZXksIGNvbnN0IENyeXB0b09wZXJhdGlvbkRhdGEmIGRhdGEsIFZlY3Rv
ckNhbGxiYWNrJiYgY2FsbGJhY2ssIFZvaWRDYWxsYmFjayYmIGZhaWx1cmVDYWxsYmFjaywgRXhj
ZXB0aW9uQ29kZSYpCit2b2lkIENyeXB0b0FsZ29yaXRobUFFU19LVzo6cGxhdGZvcm1EZWNyeXB0
KGNvbnN0IENyeXB0b0tleUFFUyYga2V5LCBjb25zdCBCdWZmZXJTb3VyY2UmIGRhdGEsIFZlY3Rv
ckNhbGxiYWNrJiYgY2FsbGJhY2ssIFZvaWRDYWxsYmFjayYmIGZhaWx1cmVDYWxsYmFjaywgRXhj
ZXB0aW9uQ29kZSYpCiB7Ci0gICAgVmVjdG9yPHVpbnQ4X3Q+IHJlc3VsdChDQ1N5bW1ldHJpY1Vu
d3JhcHBlZFNpemUoa0NDV1JBUEFFUywgZGF0YS5zZWNvbmQpKTsKKyAgICBWZWN0b3I8dWludDhf
dD4gcmVzdWx0KENDU3ltbWV0cmljVW53cmFwcGVkU2l6ZShrQ0NXUkFQQUVTLCBkYXRhLmxlbmd0
aCkpOwogICAgIHNpemVfdCByZXN1bHRTaXplID0gcmVzdWx0LnNpemUoKTsKIAogICAgIGlmIChy
ZXN1bHRTaXplICUgOCkgewpAQCAtNjQsNyArNjQsNyBAQCB2b2lkIENyeXB0b0FsZ29yaXRobUFF
U19LVzo6cGxhdGZvcm1EZWNyeXB0KGNvbnN0IENyeXB0b0tleUFFUyYga2V5LCBjb25zdCBDcnlw
dAogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgaW50IHN0YXR1cyA9IENDU3ltbWV0cmlj
S2V5VW53cmFwKGtDQ1dSQVBBRVMsIENDcmZjMzM5NF9pdiwgQ0NyZmMzMzk0X2l2TGVuLCBrZXku
a2V5KCkuZGF0YSgpLCBrZXkua2V5KCkuc2l6ZSgpLCBkYXRhLmZpcnN0LCBkYXRhLnNlY29uZCwg
cmVzdWx0LmRhdGEoKSwgJnJlc3VsdFNpemUpOworICAgIGludCBzdGF0dXMgPSBDQ1N5bW1ldHJp
Y0tleVVud3JhcChrQ0NXUkFQQUVTLCBDQ3JmYzMzOTRfaXYsIENDcmZjMzM5NF9pdkxlbiwga2V5
LmtleSgpLmRhdGEoKSwga2V5LmtleSgpLnNpemUoKSwgZGF0YS5kYXRhLCBkYXRhLmxlbmd0aCwg
cmVzdWx0LmRhdGEoKSwgJnJlc3VsdFNpemUpOwogICAgIGlmIChzdGF0dXMpIHsKICAgICAgICAg
ZmFpbHVyZUNhbGxiYWNrKCk7CiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2NyeXB0by9tYWMvQ3J5cHRvQWxnb3JpdGhtSE1BQ01hYy5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9jcnlwdG8vbWFjL0NyeXB0b0FsZ29yaXRobUhNQUNNYWMuY3BwCmluZGV4IDI5NmE3OGFi
NTdmZDNiOTViOTNkZWFiOGE2ZjcyNTA5ODY0YzY3NGQuLjZiNjRmOGZiMjRkYzJiYTdmMjViOGEw
MWE5Zjg4Y2M2MGQ4NTY3MDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9tYWMv
Q3J5cHRvQWxnb3JpdGhtSE1BQ01hYy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL21h
Yy9DcnlwdG9BbGdvcml0aG1ITUFDTWFjLmNwcApAQCAtNTksNyArNTksNyBAQCBzdGF0aWMgYm9v
bCBnZXRDb21tb25DcnlwdG9ITUFDQWxnb3JpdGhtKENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXIg
aGFzaEZ1bmN0aW9uLAogICAgIH0KIH0KIAotc3RhdGljIFZlY3Rvcjx1aW50OF90PiBjYWxjdWxh
dGVTaWduYXR1cmUoQ0NIbWFjQWxnb3JpdGhtIGFsZ29yaXRobSwgY29uc3QgVmVjdG9yPHVpbnQ4
X3Q+JiBrZXksIGNvbnN0IENyeXB0b09wZXJhdGlvbkRhdGEmIGRhdGEpCitzdGF0aWMgVmVjdG9y
PHVpbnQ4X3Q+IGNhbGN1bGF0ZVNpZ25hdHVyZShDQ0htYWNBbGdvcml0aG0gYWxnb3JpdGhtLCBj
b25zdCBWZWN0b3I8dWludDhfdD4mIGtleSwgY29uc3QgQnVmZmVyU291cmNlJiBkYXRhKQogewog
ICAgIHNpemVfdCBkaWdlc3RMZW5ndGg7CiAgICAgc3dpdGNoIChhbGdvcml0aG0pIHsKQEAgLTg1
LDExICs4NSwxMSBAQCBzdGF0aWMgVmVjdG9yPHVpbnQ4X3Q+IGNhbGN1bGF0ZVNpZ25hdHVyZShD
Q0htYWNBbGdvcml0aG0gYWxnb3JpdGhtLCBjb25zdCBWZWN0bwogCiAgICAgVmVjdG9yPHVpbnQ4
X3Q+IHJlc3VsdChkaWdlc3RMZW5ndGgpOwogICAgIGNvbnN0IHZvaWQqIGtleURhdGEgPSBrZXku
ZGF0YSgpID8ga2V5LmRhdGEoKSA6IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KCIi
KTsgLy8gPHJkYXI6Ly9wcm9ibGVtLzE1NDY3NDI1PiBITUFDIGNyYXNoZXMgd2hlbiBrZXkgcG9p
bnRlciBpcyBudWxsLgotICAgIENDSG1hYyhhbGdvcml0aG0sIGtleURhdGEsIGtleS5zaXplKCks
IGRhdGEuZmlyc3QsIGRhdGEuc2Vjb25kLCByZXN1bHQuZGF0YSgpKTsKKyAgICBDQ0htYWMoYWxn
b3JpdGhtLCBrZXlEYXRhLCBrZXkuc2l6ZSgpLCBkYXRhLmRhdGEsIGRhdGEubGVuZ3RoLCByZXN1
bHQuZGF0YSgpKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi12b2lkIENyeXB0b0FsZ29yaXRo
bUhNQUM6OnBsYXRmb3JtU2lnbihjb25zdCBDcnlwdG9BbGdvcml0aG1IbWFjUGFyYW1zRGVwcmVj
YXRlZCYgcGFyYW1ldGVycywgY29uc3QgQ3J5cHRvS2V5SE1BQyYga2V5LCBjb25zdCBDcnlwdG9P
cGVyYXRpb25EYXRhJiBkYXRhLCBWZWN0b3JDYWxsYmFjayYmIGNhbGxiYWNrLCBWb2lkQ2FsbGJh
Y2smJiwgRXhjZXB0aW9uQ29kZSYgZWMpCit2b2lkIENyeXB0b0FsZ29yaXRobUhNQUM6OnBsYXRm
b3JtU2lnbihjb25zdCBDcnlwdG9BbGdvcml0aG1IbWFjUGFyYW1zRGVwcmVjYXRlZCYgcGFyYW1l
dGVycywgY29uc3QgQ3J5cHRvS2V5SE1BQyYga2V5LCBjb25zdCBCdWZmZXJTb3VyY2UmIGRhdGEs
IFZlY3RvckNhbGxiYWNrJiYgY2FsbGJhY2ssIFZvaWRDYWxsYmFjayYmLCBFeGNlcHRpb25Db2Rl
JiBlYykKIHsKICAgICBDQ0htYWNBbGdvcml0aG0gYWxnb3JpdGhtOwogICAgIGlmICghZ2V0Q29t
bW9uQ3J5cHRvSE1BQ0FsZ29yaXRobShwYXJhbWV0ZXJzLmhhc2gsIGFsZ29yaXRobSkpIHsKQEAg
LTEwMiw3ICsxMDIsNyBAQCB2b2lkIENyeXB0b0FsZ29yaXRobUhNQUM6OnBsYXRmb3JtU2lnbihj
b25zdCBDcnlwdG9BbGdvcml0aG1IbWFjUGFyYW1zRGVwcmVjYXRlZAogICAgIGNhbGxiYWNrKHNp
Z25hdHVyZSk7CiB9CiAKLXZvaWQgQ3J5cHRvQWxnb3JpdGhtSE1BQzo6cGxhdGZvcm1WZXJpZnko
Y29uc3QgQ3J5cHRvQWxnb3JpdGhtSG1hY1BhcmFtc0RlcHJlY2F0ZWQmIHBhcmFtZXRlcnMsIGNv
bnN0IENyeXB0b0tleUhNQUMmIGtleSwgY29uc3QgQ3J5cHRvT3BlcmF0aW9uRGF0YSYgZXhwZWN0
ZWRTaWduYXR1cmUsIGNvbnN0IENyeXB0b09wZXJhdGlvbkRhdGEmIGRhdGEsIEJvb2xDYWxsYmFj
ayYmIGNhbGxiYWNrLCBWb2lkQ2FsbGJhY2smJiwgRXhjZXB0aW9uQ29kZSYgZWMpCit2b2lkIENy
eXB0b0FsZ29yaXRobUhNQUM6OnBsYXRmb3JtVmVyaWZ5KGNvbnN0IENyeXB0b0FsZ29yaXRobUht
YWNQYXJhbXNEZXByZWNhdGVkJiBwYXJhbWV0ZXJzLCBjb25zdCBDcnlwdG9LZXlITUFDJiBrZXks
IGNvbnN0IEJ1ZmZlclNvdXJjZSYgZXhwZWN0ZWRTaWduYXR1cmUsIGNvbnN0IEJ1ZmZlclNvdXJj
ZSYgZGF0YSwgQm9vbENhbGxiYWNrJiYgY2FsbGJhY2ssIFZvaWRDYWxsYmFjayYmLCBFeGNlcHRp
b25Db2RlJiBlYykKIHsKICAgICBDQ0htYWNBbGdvcml0aG0gYWxnb3JpdGhtOwogICAgIGlmICgh
Z2V0Q29tbW9uQ3J5cHRvSE1BQ0FsZ29yaXRobShwYXJhbWV0ZXJzLmhhc2gsIGFsZ29yaXRobSkp
IHsKQEAgLTExMyw3ICsxMTMsNyBAQCB2b2lkIENyeXB0b0FsZ29yaXRobUhNQUM6OnBsYXRmb3Jt
VmVyaWZ5KGNvbnN0IENyeXB0b0FsZ29yaXRobUhtYWNQYXJhbXNEZXByZWNhdAogICAgIFZlY3Rv
cjx1aW50OF90PiBzaWduYXR1cmUgPSBjYWxjdWxhdGVTaWduYXR1cmUoYWxnb3JpdGhtLCBrZXku
a2V5KCksIGRhdGEpOwogCiAgICAgLy8gVXNpbmcgYSBjb25zdGFudCB0aW1lIGNvbXBhcmlzb24g
dG8gcHJldmVudCB0aW1pbmcgYXR0YWNrcy4KLSAgICBib29sIHJlc3VsdCA9IHNpZ25hdHVyZS5z
aXplKCkgPT0gZXhwZWN0ZWRTaWduYXR1cmUuc2Vjb25kICYmICFjb25zdGFudFRpbWVNZW1jbXAo
c2lnbmF0dXJlLmRhdGEoKSwgZXhwZWN0ZWRTaWduYXR1cmUuZmlyc3QsIHNpZ25hdHVyZS5zaXpl
KCkpOworICAgIGJvb2wgcmVzdWx0ID0gc2lnbmF0dXJlLnNpemUoKSA9PSBleHBlY3RlZFNpZ25h
dHVyZS5sZW5ndGggJiYgIWNvbnN0YW50VGltZU1lbWNtcChzaWduYXR1cmUuZGF0YSgpLCBleHBl
Y3RlZFNpZ25hdHVyZS5kYXRhLCBzaWduYXR1cmUuc2l6ZSgpKTsKIAogICAgIGNhbGxiYWNrKHJl
c3VsdCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vbWFjL0NyeXB0b0Fs
Z29yaXRobVJTQUVTX1BLQ1MxX3YxXzVNYWMuY3BwIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL21h
Yy9DcnlwdG9BbGdvcml0aG1SU0FFU19QS0NTMV92MV81TWFjLmNwcAppbmRleCA3NzU5ODM0NDc4
YTc4Yzg1ZjM0ODM1MDFhMDZiMWU2MDI1NmY4NGY4Li4xN2Q4ZjU2NDlhZDg4M2FmMTFhZDMxMWQx
ODBiMDY2OTM5MjVhOTI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vbWFjL0Ny
eXB0b0FsZ29yaXRobVJTQUVTX1BLQ1MxX3YxXzVNYWMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2NyeXB0by9tYWMvQ3J5cHRvQWxnb3JpdGhtUlNBRVNfUEtDUzFfdjFfNU1hYy5jcHAKQEAgLTMz
LDExICszMywxMSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXZvaWQgQ3J5cHRvQWxnb3Jp
dGhtUlNBRVNfUEtDUzFfdjFfNTo6cGxhdGZvcm1FbmNyeXB0KGNvbnN0IENyeXB0b0tleVJTQSYg
a2V5LCBjb25zdCBDcnlwdG9PcGVyYXRpb25EYXRhJiBkYXRhLCBWZWN0b3JDYWxsYmFjayYmIGNh
bGxiYWNrLCBWb2lkQ2FsbGJhY2smJiBmYWlsdXJlQ2FsbGJhY2ssIEV4Y2VwdGlvbkNvZGUmKQor
dm9pZCBDcnlwdG9BbGdvcml0aG1SU0FFU19QS0NTMV92MV81OjpwbGF0Zm9ybUVuY3J5cHQoY29u
c3QgQ3J5cHRvS2V5UlNBJiBrZXksIGNvbnN0IEJ1ZmZlclNvdXJjZSYgZGF0YSwgVmVjdG9yQ2Fs
bGJhY2smJiBjYWxsYmFjaywgVm9pZENhbGxiYWNrJiYgZmFpbHVyZUNhbGxiYWNrLCBFeGNlcHRp
b25Db2RlJikKIHsKICAgICBWZWN0b3I8dWludDhfdD4gY2lwaGVyVGV4dCgxMDI0KTsKICAgICBz
aXplX3QgY2lwaGVyVGV4dExlbmd0aCA9IGNpcGhlclRleHQuc2l6ZSgpOwotICAgIENDQ3J5cHRv
clN0YXR1cyBzdGF0dXMgPSBDQ1JTQUNyeXB0b3JFbmNyeXB0KGtleS5wbGF0Zm9ybUtleSgpLCBj
Y1BLQ1MxUGFkZGluZywgZGF0YS5maXJzdCwgZGF0YS5zZWNvbmQsIGNpcGhlclRleHQuZGF0YSgp
LCAmY2lwaGVyVGV4dExlbmd0aCwgMCwgMCwga0NDRGlnZXN0Tm9uZSk7CisgICAgQ0NDcnlwdG9y
U3RhdHVzIHN0YXR1cyA9IENDUlNBQ3J5cHRvckVuY3J5cHQoa2V5LnBsYXRmb3JtS2V5KCksIGNj
UEtDUzFQYWRkaW5nLCBkYXRhLmRhdGEsIGRhdGEubGVuZ3RoLCBjaXBoZXJUZXh0LmRhdGEoKSwg
JmNpcGhlclRleHRMZW5ndGgsIDAsIDAsIGtDQ0RpZ2VzdE5vbmUpOwogICAgIGlmIChzdGF0dXMp
IHsKICAgICAgICAgZmFpbHVyZUNhbGxiYWNrKCk7CiAgICAgICAgIHJldHVybjsKQEAgLTQ3LDEx
ICs0NywxMSBAQCB2b2lkIENyeXB0b0FsZ29yaXRobVJTQUVTX1BLQ1MxX3YxXzU6OnBsYXRmb3Jt
RW5jcnlwdChjb25zdCBDcnlwdG9LZXlSU0EmIGtleSwgYwogICAgIGNhbGxiYWNrKGNpcGhlclRl
eHQpOwogfQogCi12b2lkIENyeXB0b0FsZ29yaXRobVJTQUVTX1BLQ1MxX3YxXzU6OnBsYXRmb3Jt
RGVjcnlwdChjb25zdCBDcnlwdG9LZXlSU0EmIGtleSwgY29uc3QgQ3J5cHRvT3BlcmF0aW9uRGF0
YSYgZGF0YSwgVmVjdG9yQ2FsbGJhY2smJiBjYWxsYmFjaywgVm9pZENhbGxiYWNrJiYgZmFpbHVy
ZUNhbGxiYWNrLCBFeGNlcHRpb25Db2RlJikKK3ZvaWQgQ3J5cHRvQWxnb3JpdGhtUlNBRVNfUEtD
UzFfdjFfNTo6cGxhdGZvcm1EZWNyeXB0KGNvbnN0IENyeXB0b0tleVJTQSYga2V5LCBjb25zdCBC
dWZmZXJTb3VyY2UmIGRhdGEsIFZlY3RvckNhbGxiYWNrJiYgY2FsbGJhY2ssIFZvaWRDYWxsYmFj
ayYmIGZhaWx1cmVDYWxsYmFjaywgRXhjZXB0aW9uQ29kZSYpCiB7CiAgICAgVmVjdG9yPHVpbnQ4
X3Q+IHBsYWluVGV4dCgxMDI0KTsKICAgICBzaXplX3QgcGxhaW5UZXh0TGVuZ3RoID0gcGxhaW5U
ZXh0LnNpemUoKTsKLSAgICBDQ0NyeXB0b3JTdGF0dXMgc3RhdHVzID0gQ0NSU0FDcnlwdG9yRGVj
cnlwdChrZXkucGxhdGZvcm1LZXkoKSwgY2NQS0NTMVBhZGRpbmcsIGRhdGEuZmlyc3QsIGRhdGEu
c2Vjb25kLCBwbGFpblRleHQuZGF0YSgpLCAmcGxhaW5UZXh0TGVuZ3RoLCAwLCAwLCBrQ0NEaWdl
c3ROb25lKTsKKyAgICBDQ0NyeXB0b3JTdGF0dXMgc3RhdHVzID0gQ0NSU0FDcnlwdG9yRGVjcnlw
dChrZXkucGxhdGZvcm1LZXkoKSwgY2NQS0NTMVBhZGRpbmcsIGRhdGEuZGF0YSwgZGF0YS5sZW5n
dGgsIHBsYWluVGV4dC5kYXRhKCksICZwbGFpblRleHRMZW5ndGgsIDAsIDAsIGtDQ0RpZ2VzdE5v
bmUpOwogICAgIGlmIChzdGF0dXMpIHsKICAgICAgICAgZmFpbHVyZUNhbGxiYWNrKCk7CiAgICAg
ICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9tYWMvQ3J5cHRv
QWxnb3JpdGhtUlNBU1NBX1BLQ1MxX3YxXzVNYWMuY3BwIGIvU291cmNlL1dlYkNvcmUvY3J5cHRv
L21hYy9DcnlwdG9BbGdvcml0aG1SU0FTU0FfUEtDUzFfdjFfNU1hYy5jcHAKaW5kZXggMGFiOGY0
MmI4NWZiMTlmZjlhNDQ4NTc5NGQxODI3MmNjMDU2MTVjYy4uZjU3ZWJiN2EwM2YxNGQxN2Y2ZWYw
NTgwNTgyNmI1MzdjMmM1ODc2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL21h
Yy9DcnlwdG9BbGdvcml0aG1SU0FTU0FfUEtDUzFfdjFfNU1hYy5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvY3J5cHRvL21hYy9DcnlwdG9BbGdvcml0aG1SU0FTU0FfUEtDUzFfdjFfNU1hYy5jcHAK
QEAgLTU5LDcgKzU5LDcgQEAgaW5saW5lIGJvb2wgZ2V0Q3J5cHRvRGlnZXN0QWxnb3JpdGhtKENy
eXB0b0FsZ29yaXRobUlkZW50aWZpZXIgaGFzaEZ1bmN0aW9uLCBDcnkKICAgICB9CiB9CiAKLXZv
aWQgQ3J5cHRvQWxnb3JpdGhtUlNBU1NBX1BLQ1MxX3YxXzU6OnBsYXRmb3JtU2lnbihjb25zdCBD
cnlwdG9BbGdvcml0aG1Sc2FTc2FQYXJhbXNEZXByZWNhdGVkJiBwYXJhbWV0ZXJzLCBjb25zdCBD
cnlwdG9LZXlSU0EmIGtleSwgY29uc3QgQ3J5cHRvT3BlcmF0aW9uRGF0YSYgZGF0YSwgVmVjdG9y
Q2FsbGJhY2smJiBjYWxsYmFjaywgVm9pZENhbGxiYWNrJiYgZmFpbHVyZUNhbGxiYWNrLCBFeGNl
cHRpb25Db2RlJiBlYykKK3ZvaWQgQ3J5cHRvQWxnb3JpdGhtUlNBU1NBX1BLQ1MxX3YxXzU6OnBs
YXRmb3JtU2lnbihjb25zdCBDcnlwdG9BbGdvcml0aG1Sc2FTc2FQYXJhbXNEZXByZWNhdGVkJiBw
YXJhbWV0ZXJzLCBjb25zdCBDcnlwdG9LZXlSU0EmIGtleSwgY29uc3QgQnVmZmVyU291cmNlJiBk
YXRhLCBWZWN0b3JDYWxsYmFjayYmIGNhbGxiYWNrLCBWb2lkQ2FsbGJhY2smJiBmYWlsdXJlQ2Fs
bGJhY2ssIEV4Y2VwdGlvbkNvZGUmIGVjKQogewogICAgIENDRGlnZXN0QWxnb3JpdGhtIGRpZ2Vz
dEFsZ29yaXRobTsKICAgICBpZiAoIWdldENvbW1vbkNyeXB0b0RpZ2VzdEFsZ29yaXRobShwYXJh
bWV0ZXJzLmhhc2gsIGRpZ2VzdEFsZ29yaXRobSkpIHsKQEAgLTc5LDcgKzc5LDcgQEAgdm9pZCBD
cnlwdG9BbGdvcml0aG1SU0FTU0FfUEtDUzFfdjFfNTo6cGxhdGZvcm1TaWduKGNvbnN0IENyeXB0
b0FsZ29yaXRobVJzYVNzYVAKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGRpZ2VzdC0+
YWRkQnl0ZXMoZGF0YS5maXJzdCwgZGF0YS5zZWNvbmQpOworICAgIGRpZ2VzdC0+YWRkQnl0ZXMo
ZGF0YS5kYXRhLCBkYXRhLmxlbmd0aCk7CiAKICAgICBWZWN0b3I8dWludDhfdD4gZGlnZXN0RGF0
YSA9IGRpZ2VzdC0+Y29tcHV0ZUhhc2goKTsKIApAQCAtOTYsNyArOTYsNyBAQCB2b2lkIENyeXB0
b0FsZ29yaXRobVJTQVNTQV9QS0NTMV92MV81OjpwbGF0Zm9ybVNpZ24oY29uc3QgQ3J5cHRvQWxn
b3JpdGhtUnNhU3NhUAogICAgIGNhbGxiYWNrKHNpZ25hdHVyZSk7CiB9CiAKLXZvaWQgQ3J5cHRv
QWxnb3JpdGhtUlNBU1NBX1BLQ1MxX3YxXzU6OnBsYXRmb3JtVmVyaWZ5KGNvbnN0IENyeXB0b0Fs
Z29yaXRobVJzYVNzYVBhcmFtc0RlcHJlY2F0ZWQmIHBhcmFtZXRlcnMsIGNvbnN0IENyeXB0b0tl
eVJTQSYga2V5LCBjb25zdCBDcnlwdG9PcGVyYXRpb25EYXRhJiBzaWduYXR1cmUsIGNvbnN0IENy
eXB0b09wZXJhdGlvbkRhdGEmIGRhdGEsIEJvb2xDYWxsYmFjayYmIGNhbGxiYWNrLCBWb2lkQ2Fs
bGJhY2smJiBmYWlsdXJlQ2FsbGJhY2ssIEV4Y2VwdGlvbkNvZGUmIGVjKQordm9pZCBDcnlwdG9B
bGdvcml0aG1SU0FTU0FfUEtDUzFfdjFfNTo6cGxhdGZvcm1WZXJpZnkoY29uc3QgQ3J5cHRvQWxn
b3JpdGhtUnNhU3NhUGFyYW1zRGVwcmVjYXRlZCYgcGFyYW1ldGVycywgY29uc3QgQ3J5cHRvS2V5
UlNBJiBrZXksIGNvbnN0IEJ1ZmZlclNvdXJjZSYgc2lnbmF0dXJlLCBjb25zdCBCdWZmZXJTb3Vy
Y2UmIGRhdGEsIEJvb2xDYWxsYmFjayYmIGNhbGxiYWNrLCBWb2lkQ2FsbGJhY2smJiBmYWlsdXJl
Q2FsbGJhY2ssIEV4Y2VwdGlvbkNvZGUmIGVjKQogewogICAgIENDRGlnZXN0QWxnb3JpdGhtIGRp
Z2VzdEFsZ29yaXRobTsKICAgICBpZiAoIWdldENvbW1vbkNyeXB0b0RpZ2VzdEFsZ29yaXRobShw
YXJhbWV0ZXJzLmhhc2gsIGRpZ2VzdEFsZ29yaXRobSkpIHsKQEAgLTExNiwxMSArMTE2LDExIEBA
IHZvaWQgQ3J5cHRvQWxnb3JpdGhtUlNBU1NBX1BLQ1MxX3YxXzU6OnBsYXRmb3JtVmVyaWZ5KGNv
bnN0IENyeXB0b0FsZ29yaXRobVJzYVNzCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBk
aWdlc3QtPmFkZEJ5dGVzKGRhdGEuZmlyc3QsIGRhdGEuc2Vjb25kKTsKKyAgICBkaWdlc3QtPmFk
ZEJ5dGVzKGRhdGEuZGF0YSwgZGF0YS5sZW5ndGgpOwogCiAgICAgVmVjdG9yPHVpbnQ4X3Q+IGRp
Z2VzdERhdGEgPSBkaWdlc3QtPmNvbXB1dGVIYXNoKCk7CiAKLSAgICBDQ0NyeXB0b3JTdGF0dXMg
c3RhdHVzID0gQ0NSU0FDcnlwdG9yVmVyaWZ5KGtleS5wbGF0Zm9ybUtleSgpLCBjY1BLQ1MxUGFk
ZGluZywgZGlnZXN0RGF0YS5kYXRhKCksIGRpZ2VzdERhdGEuc2l6ZSgpLCBkaWdlc3RBbGdvcml0
aG0sIDAsIHNpZ25hdHVyZS5maXJzdCwgc2lnbmF0dXJlLnNlY29uZCk7CisgICAgQ0NDcnlwdG9y
U3RhdHVzIHN0YXR1cyA9IENDUlNBQ3J5cHRvclZlcmlmeShrZXkucGxhdGZvcm1LZXkoKSwgY2NQ
S0NTMVBhZGRpbmcsIGRpZ2VzdERhdGEuZGF0YSgpLCBkaWdlc3REYXRhLnNpemUoKSwgZGlnZXN0
QWxnb3JpdGhtLCAwLCBzaWduYXR1cmUuZGF0YSwgc2lnbmF0dXJlLmxlbmd0aCk7CiAgICAgaWYg
KCFzdGF0dXMpCiAgICAgICAgIGNhbGxiYWNrKHRydWUpOwogICAgIGVsc2UgaWYgKHN0YXR1cyA9
PSBrQ0NOb3RWZXJpZmllZCB8fCBzdGF0dXMgPT0ga0NDRGVjb2RlRXJyb3IpIC8vIDxyZGFyOi8v
cHJvYmxlbS8xNTQ2NDk4Mj4gQ0NSU0FDcnlwdG9yVmVyaWZ5IHJldHVybnMga0NDRGVjb2RlRXJy
b3IgaW5zdGVhZCBvZiBrQ0NOb3RWZXJpZmllZCBzb21ldGltZXMKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2NyeXB0by9tYWMvQ3J5cHRvQWxnb3JpdGhtUlNBX09BRVBNYWMuY3BwIGIvU291
cmNlL1dlYkNvcmUvY3J5cHRvL21hYy9DcnlwdG9BbGdvcml0aG1SU0FfT0FFUE1hYy5jcHAKaW5k
ZXggY2YyODFjYTg3NjAyMjRlZDA3YTdlNGEwMGFmZjFmZGQ4NTdjNWQwNi4uNTMwYWJjNzA1NTA5
N2I3NTcxZWZjNmM4NDk1YzBkOTBjMGE2MjViMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
Y3J5cHRvL21hYy9DcnlwdG9BbGdvcml0aG1SU0FfT0FFUE1hYy5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvY3J5cHRvL21hYy9DcnlwdG9BbGdvcml0aG1SU0FfT0FFUE1hYy5jcHAKQEAgLTM1LDcg
KzM1LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi12b2lkIENyeXB0b0FsZ29yaXRobVJT
QV9PQUVQOjpwbGF0Zm9ybUVuY3J5cHQoY29uc3QgQ3J5cHRvQWxnb3JpdGhtUnNhT2FlcFBhcmFt
c0RlcHJlY2F0ZWQmIHBhcmFtZXRlcnMsIGNvbnN0IENyeXB0b0tleVJTQSYga2V5LCBjb25zdCBD
cnlwdG9PcGVyYXRpb25EYXRhJiBkYXRhLCBWZWN0b3JDYWxsYmFjayYmIGNhbGxiYWNrLCBWb2lk
Q2FsbGJhY2smJiBmYWlsdXJlQ2FsbGJhY2ssIEV4Y2VwdGlvbkNvZGUmIGVjKQordm9pZCBDcnlw
dG9BbGdvcml0aG1SU0FfT0FFUDo6cGxhdGZvcm1FbmNyeXB0KGNvbnN0IENyeXB0b0FsZ29yaXRo
bVJzYU9hZXBQYXJhbXNEZXByZWNhdGVkJiBwYXJhbWV0ZXJzLCBjb25zdCBDcnlwdG9LZXlSU0Em
IGtleSwgY29uc3QgQnVmZmVyU291cmNlJiBkYXRhLCBWZWN0b3JDYWxsYmFjayYmIGNhbGxiYWNr
LCBWb2lkQ2FsbGJhY2smJiBmYWlsdXJlQ2FsbGJhY2ssIEV4Y2VwdGlvbkNvZGUmIGVjKQogewog
ICAgIENDRGlnZXN0QWxnb3JpdGhtIGRpZ2VzdEFsZ29yaXRobTsKICAgICBpZiAoIWdldENvbW1v
bkNyeXB0b0RpZ2VzdEFsZ29yaXRobShwYXJhbWV0ZXJzLmhhc2gsIGRpZ2VzdEFsZ29yaXRobSkp
IHsKQEAgLTQ2LDcgKzQ2LDcgQEAgdm9pZCBDcnlwdG9BbGdvcml0aG1SU0FfT0FFUDo6cGxhdGZv
cm1FbmNyeXB0KGNvbnN0IENyeXB0b0FsZ29yaXRobVJzYU9hZXBQYXJhbXMKICAgICBWZWN0b3I8
dWludDhfdD4gY2lwaGVyVGV4dCgxMDI0KTsKICAgICBzaXplX3QgY2lwaGVyVGV4dExlbmd0aCA9
IGNpcGhlclRleHQuc2l6ZSgpOwogICAgIEFTU0VSVChwYXJhbWV0ZXJzLmhhc0xhYmVsIHx8IHBh
cmFtZXRlcnMubGFiZWwuaXNFbXB0eSgpKTsKLSAgICBDQ0NyeXB0b3JTdGF0dXMgc3RhdHVzID0g
Q0NSU0FDcnlwdG9yRW5jcnlwdChrZXkucGxhdGZvcm1LZXkoKSwgY2NPQUVQUGFkZGluZywgZGF0
YS5maXJzdCwgZGF0YS5zZWNvbmQsIGNpcGhlclRleHQuZGF0YSgpLCAmY2lwaGVyVGV4dExlbmd0
aCwgcGFyYW1ldGVycy5sYWJlbC5kYXRhKCksIHBhcmFtZXRlcnMubGFiZWwuc2l6ZSgpLCBkaWdl
c3RBbGdvcml0aG0pOworICAgIENDQ3J5cHRvclN0YXR1cyBzdGF0dXMgPSBDQ1JTQUNyeXB0b3JF
bmNyeXB0KGtleS5wbGF0Zm9ybUtleSgpLCBjY09BRVBQYWRkaW5nLCBkYXRhLmRhdGEsIGRhdGEu
bGVuZ3RoLCBjaXBoZXJUZXh0LmRhdGEoKSwgJmNpcGhlclRleHRMZW5ndGgsIHBhcmFtZXRlcnMu
bGFiZWwuZGF0YSgpLCBwYXJhbWV0ZXJzLmxhYmVsLnNpemUoKSwgZGlnZXN0QWxnb3JpdGhtKTsK
ICAgICBpZiAoc3RhdHVzKSB7CiAgICAgICAgIGZhaWx1cmVDYWxsYmFjaygpOwogICAgICAgICBy
ZXR1cm47CkBAIC01Niw3ICs1Niw3IEBAIHZvaWQgQ3J5cHRvQWxnb3JpdGhtUlNBX09BRVA6OnBs
YXRmb3JtRW5jcnlwdChjb25zdCBDcnlwdG9BbGdvcml0aG1Sc2FPYWVwUGFyYW1zCiAgICAgY2Fs
bGJhY2soY2lwaGVyVGV4dCk7CiB9CiAKLXZvaWQgQ3J5cHRvQWxnb3JpdGhtUlNBX09BRVA6OnBs
YXRmb3JtRGVjcnlwdChjb25zdCBDcnlwdG9BbGdvcml0aG1Sc2FPYWVwUGFyYW1zRGVwcmVjYXRl
ZCYgcGFyYW1ldGVycywgY29uc3QgQ3J5cHRvS2V5UlNBJiBrZXksIGNvbnN0IENyeXB0b09wZXJh
dGlvbkRhdGEmIGRhdGEsIFZlY3RvckNhbGxiYWNrJiYgY2FsbGJhY2ssIFZvaWRDYWxsYmFjayYm
IGZhaWx1cmVDYWxsYmFjaywgRXhjZXB0aW9uQ29kZSYgZWMpCit2b2lkIENyeXB0b0FsZ29yaXRo
bVJTQV9PQUVQOjpwbGF0Zm9ybURlY3J5cHQoY29uc3QgQ3J5cHRvQWxnb3JpdGhtUnNhT2FlcFBh
cmFtc0RlcHJlY2F0ZWQmIHBhcmFtZXRlcnMsIGNvbnN0IENyeXB0b0tleVJTQSYga2V5LCBjb25z
dCBCdWZmZXJTb3VyY2UmIGRhdGEsIFZlY3RvckNhbGxiYWNrJiYgY2FsbGJhY2ssIFZvaWRDYWxs
YmFjayYmIGZhaWx1cmVDYWxsYmFjaywgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgQ0NEaWdl
c3RBbGdvcml0aG0gZGlnZXN0QWxnb3JpdGhtOwogICAgIGlmICghZ2V0Q29tbW9uQ3J5cHRvRGln
ZXN0QWxnb3JpdGhtKHBhcmFtZXRlcnMuaGFzaCwgZGlnZXN0QWxnb3JpdGhtKSkgewpAQCAtNjYs
NyArNjYsNyBAQCB2b2lkIENyeXB0b0FsZ29yaXRobVJTQV9PQUVQOjpwbGF0Zm9ybURlY3J5cHQo
Y29uc3QgQ3J5cHRvQWxnb3JpdGhtUnNhT2FlcFBhcmFtcwogCiAgICAgVmVjdG9yPHVpbnQ4X3Q+
IHBsYWluVGV4dCgxMDI0KTsKICAgICBzaXplX3QgcGxhaW5UZXh0TGVuZ3RoID0gcGxhaW5UZXh0
LnNpemUoKTsKLSAgICBDQ0NyeXB0b3JTdGF0dXMgc3RhdHVzID0gQ0NSU0FDcnlwdG9yRGVjcnlw
dChrZXkucGxhdGZvcm1LZXkoKSwgY2NPQUVQUGFkZGluZywgZGF0YS5maXJzdCwgZGF0YS5zZWNv
bmQsIHBsYWluVGV4dC5kYXRhKCksICZwbGFpblRleHRMZW5ndGgsIHBhcmFtZXRlcnMubGFiZWwu
ZGF0YSgpLCBwYXJhbWV0ZXJzLmxhYmVsLnNpemUoKSwgZGlnZXN0QWxnb3JpdGhtKTsKKyAgICBD
Q0NyeXB0b3JTdGF0dXMgc3RhdHVzID0gQ0NSU0FDcnlwdG9yRGVjcnlwdChrZXkucGxhdGZvcm1L
ZXkoKSwgY2NPQUVQUGFkZGluZywgZGF0YS5kYXRhLCBkYXRhLmxlbmd0aCwgcGxhaW5UZXh0LmRh
dGEoKSwgJnBsYWluVGV4dExlbmd0aCwgcGFyYW1ldGVycy5sYWJlbC5kYXRhKCksIHBhcmFtZXRl
cnMubGFiZWwuc2l6ZSgpLCBkaWdlc3RBbGdvcml0aG0pOwogICAgIGlmIChzdGF0dXMpIHsKICAg
ICAgICAgZmFpbHVyZUNhbGxiYWNrKCk7CiAgICAgICAgIHJldHVybjsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>291840</attachid>
            <date>2016-10-17 11:25:41 -0700</date>
            <delta_ts>2016-10-17 23:22:21 -0700</delta_ts>
            <desc>WIP</desc>
            <filename>bug-163541-20161017202207.patch</filename>
            <type>text/plain</type>
            <size>17108</size>
            <attacher name="Zan Dobersek">zan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA3NDA4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTJkZGU1OTBmYTY0MDdk
NzRhNjgzNWIxODMwZGM0MGM2OGI4NGIzYS4uYzBlMGNmZmI4NGYyZWJjZDA2YWVmMjc4ZjliYWNi
NTM4ZjgyN2U2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMyIEBACisyMDE2LTEwLTE3ICBaYW4g
RG9iZXJzZWsgIDx6ZG9iZXJzZWtAaWdhbGlhLmNvbT4KKworICAgICAgICBbV2ViSURMXSBTdXBw
b3J0IEJ1ZmZlclNvdXJjZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTYzNTQxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgTm8gbmV3IHRlc3RzIChPT1BTISkuCisKKyAgICAgICAgKiBNb2R1bGVzL21lZGlh
c291cmNlL1NvdXJjZUJ1ZmZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXI6
OmFwcGVuZEJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXI6OmFwcGVuZEJ1
ZmZlckludGVybmFsKToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc291cmNlL1NvdXJjZUJ1ZmZl
ci5oOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzb3VyY2UvU291cmNlQnVmZmVyLmlkbDoKKyAg
ICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogYmlu
ZGluZ3MvZ2VuZXJpYy9JRExUeXBlcy5oOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0J1ZmZlclNv
dXJjZS5oOiBBZGRlZC4KKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuaDoKKyAg
ICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTUNvbnZlcnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNv
bnZlcnRlcjxJRExCdWZmZXJTb3VyY2U+Ojpjb252ZXJ0KToKKyAgICAgICAgKiBiaW5kaW5ncy9z
Y3JpcHRzL0NvZGVHZW5lcmF0b3IucG06CisgICAgICAgIChTa2lwSW5jbHVkZUhlYWRlcik6Cisg
ICAgICAgIChJc0J1ZmZlclNvdXJjZVR5cGUpOgorICAgICAgICAoSXNXcmFwcGVyVHlwZSk6Cisg
ICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG06CisgICAgICAgIChB
ZGRDbGFzc0ZvcndhcmRJZk5lZWRlZCk6CisgICAgICAgIChHZXRCYXNlSURMVHlwZSk6CisgICAg
ICAgIChJc0hhbmRsZWRCeURPTUNvbnZlcnQpOgorCiAyMDE2LTEwLTE3ICBLb25zdGFudGluIFRv
a2FyZXYgIDxhbm51bGVuQHlhbmRleC5ydT4KIAogICAgICAgICBFbGVtaW5hdGUgY29kZSBkdXBs
aWNhdGlvbiBiZXR3ZWVuIFJlc291cmNlUmVxdWVzdCBlbmNvZGluZy9kZWNvZGluZyBpbXBsZW1l
bnRhdGlvbnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2Uv
U291cmNlQnVmZmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvU291
cmNlQnVmZmVyLmNwcAppbmRleCAwYmQxZDVkYzYwNWU5NTVjOGMwYmFjYWUxNDBhOGJlYWYwNWQ0
YTBjLi42MWQ3NDcxY2YwOTdmMDEwNzhmNmYxN2U0MWRlMWY1ODdjNzkzMWMwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL1NvdXJjZUJ1ZmZlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9Tb3VyY2VCdWZmZXIuY3BwCkBA
IC0zNSw2ICszNSw3IEBACiAjaWYgRU5BQkxFKE1FRElBX1NPVVJDRSkKIAogI2luY2x1ZGUgIkF1
ZGlvVHJhY2tMaXN0LmgiCisjaW5jbHVkZSAiQnVmZmVyU291cmNlLmgiCiAjaW5jbHVkZSAiRXZl
bnQuaCIKICNpbmNsdWRlICJFdmVudE5hbWVzLmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZVBs
YWNlaG9sZGVyLmgiCkBAIC0yMzEsMTUgKzIzMiw5IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IFNvdXJj
ZUJ1ZmZlcjo6c2V0QXBwZW5kV2luZG93RW5kKGRvdWJsZSBuZXdWYWx1ZSkKICAgICByZXR1cm4g
eyB9OwogfQogCi0KLUV4Y2VwdGlvbk9yPHZvaWQ+IFNvdXJjZUJ1ZmZlcjo6YXBwZW5kQnVmZmVy
KEFycmF5QnVmZmVyJiBkYXRhKQotewotICAgIHJldHVybiBhcHBlbmRCdWZmZXJJbnRlcm5hbChz
dGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyKj4oZGF0YS5kYXRhKCkpLCBkYXRhLmJ5dGVMZW5ndGgo
KSk7Ci19Ci0KLUV4Y2VwdGlvbk9yPHZvaWQ+IFNvdXJjZUJ1ZmZlcjo6YXBwZW5kQnVmZmVyKEFy
cmF5QnVmZmVyVmlldyYgZGF0YSkKK0V4Y2VwdGlvbk9yPHZvaWQ+IFNvdXJjZUJ1ZmZlcjo6YXBw
ZW5kQnVmZmVyKGNvbnN0IEJ1ZmZlclNvdXJjZSYgZGF0YSkKIHsKLSAgICByZXR1cm4gYXBwZW5k
QnVmZmVySW50ZXJuYWwoc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcio+KGRhdGEuYmFzZUFkZHJl
c3MoKSksIGRhdGEuYnl0ZUxlbmd0aCgpKTsKKyAgICByZXR1cm4gYXBwZW5kQnVmZmVySW50ZXJu
YWwoc3RhdGljX2Nhc3Q8Y29uc3QgdW5zaWduZWQgY2hhcio+KGRhdGEuZGF0YSksIGRhdGEubGVu
Z3RoKTsKIH0KIAogdm9pZCBTb3VyY2VCdWZmZXI6OnJlc2V0UGFyc2VyU3RhdGUoKQpAQCAtNDk2
LDcgKzQ5MSw3IEBAIHZvaWQgU291cmNlQnVmZmVyOjpzY2hlZHVsZUV2ZW50KGNvbnN0IEF0b21p
Y1N0cmluZyYgZXZlbnROYW1lKQogICAgIG1fYXN5bmNFdmVudFF1ZXVlLmVucXVldWVFdmVudChX
VEZNb3ZlKGV2ZW50KSk7CiB9CiAKLUV4Y2VwdGlvbk9yPHZvaWQ+IFNvdXJjZUJ1ZmZlcjo6YXBw
ZW5kQnVmZmVySW50ZXJuYWwodW5zaWduZWQgY2hhciogZGF0YSwgdW5zaWduZWQgc2l6ZSkKK0V4
Y2VwdGlvbk9yPHZvaWQ+IFNvdXJjZUJ1ZmZlcjo6YXBwZW5kQnVmZmVySW50ZXJuYWwoY29uc3Qg
dW5zaWduZWQgY2hhciogZGF0YSwgdW5zaWduZWQgc2l6ZSkKIHsKICAgICAvLyBTZWN0aW9uIDMu
MiBhcHBlbmRCdWZmZXIoKQogICAgIC8vIGh0dHBzOi8vZHZjcy53My5vcmcvaGcvaHRtbC1tZWRp
YS9yYXctZmlsZS9kZWZhdWx0L21lZGlhLXNvdXJjZS9tZWRpYS1zb3VyY2UuaHRtbCN3aWRsLVNv
dXJjZUJ1ZmZlci1hcHBlbmRCdWZmZXItdm9pZC1BcnJheUJ1ZmZlclZpZXctZGF0YQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9Tb3VyY2VCdWZmZXIuaCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvU291cmNlQnVmZmVyLmgKaW5kZXgg
MWNkODU0M2M1N2VlMDNiMDcwMmFhZDg3OGE2YjhjMDZjNjhjZjQwZS4uMGNkZGYyODFmZmY3Y2Jj
MzNkMzIyNTFhYTNmY2Q4NzU0MWE2MjBlOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXNvdXJjZS9Tb3VyY2VCdWZmZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhc291cmNlL1NvdXJjZUJ1ZmZlci5oCkBAIC00Nyw2ICs0Nyw3IEBACiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKIGNsYXNzIEF1ZGlvVHJhY2tMaXN0OworY2xhc3MgQnVmZmVyU291cmNl
OwogY2xhc3MgTWVkaWFTb3VyY2U7CiBjbGFzcyBQbGF0Zm9ybVRpbWVSYW5nZXM7CiBjbGFzcyBU
ZXh0VHJhY2tMaXN0OwpAQCAtNzQsOCArNzUsNyBAQCBwdWJsaWM6CiAgICAgZG91YmxlIGFwcGVu
ZFdpbmRvd0VuZCgpIGNvbnN0OwogICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IHNldEFwcGVuZFdpbmRv
d0VuZChkb3VibGUpOwogCi0gICAgRXhjZXB0aW9uT3I8dm9pZD4gYXBwZW5kQnVmZmVyKEFycmF5
QnVmZmVyJik7Ci0gICAgRXhjZXB0aW9uT3I8dm9pZD4gYXBwZW5kQnVmZmVyKEFycmF5QnVmZmVy
VmlldyYpOworICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IGFwcGVuZEJ1ZmZlcihjb25zdCBCdWZmZXJT
b3VyY2UmKTsKICAgICBFeGNlcHRpb25Pcjx2b2lkPiBhYm9ydCgpOwogICAgIEV4Y2VwdGlvbk9y
PHZvaWQ+IHJlbW92ZShkb3VibGUgc3RhcnQsIGRvdWJsZSBlbmQpOwogICAgIEV4Y2VwdGlvbk9y
PHZvaWQ+IHJlbW92ZShjb25zdCBNZWRpYVRpbWUmLCBjb25zdCBNZWRpYVRpbWUmKTsKQEAgLTE1
MCw3ICsxNTAsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgaXNSZW1vdmVkKCkgY29uc3Q7CiAgICAg
dm9pZCBzY2hlZHVsZUV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnROYW1lKTsKIAotICAg
IEV4Y2VwdGlvbk9yPHZvaWQ+IGFwcGVuZEJ1ZmZlckludGVybmFsKHVuc2lnbmVkIGNoYXIqLCB1
bnNpZ25lZCk7CisgICAgRXhjZXB0aW9uT3I8dm9pZD4gYXBwZW5kQnVmZmVySW50ZXJuYWwoY29u
c3QgdW5zaWduZWQgY2hhciosIHVuc2lnbmVkKTsKICAgICB2b2lkIGFwcGVuZEJ1ZmZlclRpbWVy
RmlyZWQoKTsKICAgICB2b2lkIHJlc2V0UGFyc2VyU3RhdGUoKTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9Tb3VyY2VCdWZmZXIuaWRsIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9Tb3VyY2VCdWZmZXIuaWRsCmluZGV4IGNmZjFi
YjVhY2U5ZTk5N2NlYzUxMzYwZmRhODc0ZTNlMGYwYjgwMjQuLjljODQ3YzcyYTk0NGIxNWNjMzY5
MGI0NTQ4YTU0NmE0ZTBlMjBkZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzb3VyY2UvU291cmNlQnVmZmVyLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc291cmNlL1NvdXJjZUJ1ZmZlci5pZGwKQEAgLTU3LDggKzU3LDcgQEAKICAgICBbU2V0
dGVyTWF5VGhyb3dFeGNlcHRpb25dIGF0dHJpYnV0ZSB1bnJlc3RyaWN0ZWQgZG91YmxlIGFwcGVu
ZFdpbmRvd0VuZDsKIAogICAgIC8vIEFwcGVuZCBzZWdtZW50IGRhdGEuCi0gICAgW01heVRocm93
RXhjZXB0aW9uXSB2b2lkIGFwcGVuZEJ1ZmZlcihBcnJheUJ1ZmZlciBkYXRhKTsKLSAgICBbTWF5
VGhyb3dFeGNlcHRpb25dIHZvaWQgYXBwZW5kQnVmZmVyKEFycmF5QnVmZmVyVmlldyBkYXRhKTsK
KyAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHZvaWQgYXBwZW5kQnVmZmVyKEJ1ZmZlclNvdXJjZSBk
YXRhKTsKIAogICAgIC8vIEFib3J0IHRoZSBjdXJyZW50IHNlZ21lbnQgYXBwZW5kIHNlcXVlbmNl
LgogICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdm9pZCBhYm9ydCgpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDRmMGVjNzdkMTQ5
ZWJhYWI1NWFlMzU4N2E2MjNmZjI3NTE3ZTc4MTYuLmEwN2ZiMTQzNDEzOGI1N2ZmNjk3YmRhMmZm
M2ExMDdmNWZiNTE0NDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKQEAgLTEyMzgsNiArMTIzOCw3IEBACiAJCTJERTcwMDIzMTkyRkU4
MkEwMEIwOTc1QyAvKiBEaXNwbGF5UmVmcmVzaE1vbml0b3JNYWMuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJERTcwMDIyMTkyRkU4MkEwMEIwOTc1QyAv
KiBEaXNwbGF5UmVmcmVzaE1vbml0b3JNYWMuaCAqLzsgfTsKIAkJMkRGNTEyQ0QxRDg3M0U0NzAw
MUQ2NzgwIC8qIFJlcGxhY2VSYW5nZVdpdGhUZXh0Q29tbWFuZC5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyREY1MTJDQjFEODczRTQ3MDAxRDY3ODAg
LyogUmVwbGFjZVJhbmdlV2l0aFRleHRDb21tYW5kLmNwcCAqLzsgfTsKIAkJMkRGNTEyQ0UxRDg3
M0U0NzAwMUQ2NzgwIC8qIFJlcGxhY2VSYW5nZVdpdGhUZXh0Q29tbWFuZC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkRGNTEyQ0MxRDg3M0U0NzAwMUQ2
NzgwIC8qIFJlcGxhY2VSYW5nZVdpdGhUZXh0Q29tbWFuZC5oICovOyB9OworCQkyREZBNDg4RjFE
QjU0MUQwMDAzNjJCOTkgLyogQnVmZmVyU291cmNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyREZBNDg4RTFEQjU0MUMyMDAzNjJCOTkgLyogQnVmZmVy
U291cmNlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJMkUwODg4RDQxMTQ4ODQ4QTAwQUY0MjY1IC8qIEpTRE9NRm9ybURhdGEuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkUwODg4RDIxMTQ4ODQ4QTAw
QUY0MjY1IC8qIEpTRE9NRm9ybURhdGEuY3BwICovOyB9OwogCQkyRTA4ODhENTExNDg4NDhBMDBB
RjQyNjUgLyogSlNET01Gb3JtRGF0YS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMkUwODg4RDMxMTQ4ODQ4QTAwQUY0MjY1IC8qIEpTRE9NRm9ybURhdGEu
aCAqLzsgfTsKIAkJMkUxOTUxNkIxQjY1OThEMjAwREY2RUVGIC8qIFdoZWVsRXZlbnREZWx0YUZp
bHRlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAy
RTE5NTE2QTFCNjU5OEQyMDBERjZFRUYgLyogV2hlZWxFdmVudERlbHRhRmlsdGVyLmNwcCAqLzsg
fTsKQEAgLTU5NTYsNiArNTk1Nyw3IEBACiAJCUUxMjVGODNBMTgyNDEwNDgwMEQ4NENEOSAvKiBD
cnlwdG9BbGdvcml0aG1BZXNDYmNQYXJhbXNEZXByZWNhdGVkLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMTI1RjgzOTE4MjQxMDQ4MDBEODRDRDkgLyog
Q3J5cHRvQWxnb3JpdGhtQWVzQ2JjUGFyYW1zRGVwcmVjYXRlZC5oICovOyB9OwogCQlFMTI1Rjgz
RDE4MjQxMUU3MDBEODRDRDkgLyogSlNDcnlwdG9PcGVyYXRpb25EYXRhLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxMjVGODNCMTgyNDExRTcwMEQ4
NENEOSAvKiBKU0NyeXB0b09wZXJhdGlvbkRhdGEuY3BwICovOyB9OwogCQlFMTI1RjgzRTE4MjQx
MUU3MDBEODRDRDkgLyogSlNDcnlwdG9PcGVyYXRpb25EYXRhLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMTI1RjgzQzE4MjQxMUU3MDBEODRDRDkgLyog
SlNDcnlwdG9PcGVyYXRpb25EYXRhLmggKi87IH07CisKIAkJRTEyNUY4NDExODI0MjUzQTAwRDg0
Q0Q5IC8qIENyeXB0b0FsZ29yaXRobUFFU19DQkMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTEyNUY4M0YxODI0MjUzQTAwRDg0Q0Q5IC8qIENyeXB0
b0FsZ29yaXRobUFFU19DQkMuY3BwICovOyB9OwogCQlFMTI1Rjg0MjE4MjQyNTNBMDBEODRDRDkg
LyogQ3J5cHRvQWxnb3JpdGhtQUVTX0NCQy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRTEyNUY4NDAxODI0MjUzQTAwRDg0Q0Q5IC8qIENyeXB0b0FsZ29y
aXRobUFFU19DQkMuaCAqLzsgfTsKIAkJRTEyNUY4NDUxODI0MjVDOTAwRDg0Q0Q5IC8qIENyeXB0
b0FsZ29yaXRobUFFU19DQkNNYWMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gRTEyNUY4NDMxODI0MjVDOTAwRDg0Q0Q5IC8qIENyeXB0b0FsZ29yaXRo
bUFFU19DQkNNYWMuY3BwICovOyB9OwpAQCAtODE5Miw2ICs4MTk0LDcgQEAKIAkJMkRFNzAwMjIx
OTJGRTgyQTAwQjA5NzVDIC8qIERpc3BsYXlSZWZyZXNoTW9uaXRvck1hYy5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBEaXNwbGF5UmVmcmVzaE1vbml0b3JNYWMuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkRGNTEyQ0IxRDg3M0U0NzAwMUQ2NzgwIC8qIFJlcGxh
Y2VSYW5nZVdpdGhUZXh0Q29tbWFuZC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBSZXBsYWNlUmFuZ2VXaXRoVGV4dENvbW1hbmQuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQkyREY1MTJDQzFEODczRTQ3MDAxRDY3ODAgLyogUmVwbGFjZVJhbmdlV2l0
aFRleHRDb21tYW5kLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlcGxhY2VS
YW5nZVdpdGhUZXh0Q29tbWFuZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkyREZB
NDg4RTFEQjU0MUMyMDAzNjJCOTkgLyogQnVmZmVyU291cmNlLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEJ1ZmZlclNvdXJjZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQkyRTA4ODhDMzExNDg4M0E5MDBBRjQyNjUgLyogRE9NRm9ybURhdGEuaWRsICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gdGV4dDsgcGF0aCA9IERPTUZvcm1EYXRhLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJMkUwODg4RDIxMTQ4ODQ4QTAwQUY0MjY1IC8qIEpTRE9NRm9ybURhdGEuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNET01Gb3JtRGF0YS5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJFMDg4OEQzMTE0ODg0OEEwMEFGNDI2NSAvKiBKU0RP
TUZvcm1EYXRhLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTRE9NRm9ybURh
dGEuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIxMDg4LDYgKzIxMDkxLDcgQEAK
IAkJCQkxNERGQjMzRjBBN0RGNzYzMDAxOEY3NjkgLyogRGVyaXZlZCBTb3VyY2VzICovLAogCQkJ
CTQ5QjM3NjBBMTVDNkM2ODQwMDU5MTMxRCAvKiBBcnJheVZhbHVlLmNwcCAqLywKIAkJCQk0OUIz
NzYwQjE1QzZDNjg0MDA1OTEzMUQgLyogQXJyYXlWYWx1ZS5oICovLAorCQkJCTJERkE0ODhFMURC
NTQxQzIwMDM2MkI5OSAvKiBCdWZmZXJTb3VyY2UuaCAqLywKIAkJCQlCQ0Q1MzM2MzBFRDY4NDg5
MDA4ODc0NjggLyogQ2FjaGVkU2NyaXB0U291cmNlUHJvdmlkZXIuaCAqLywKIAkJCQk5M0Y4QjMw
NjBBMzAwRkVBMDBGNjFBQjggLyogQ29kZUdlbmVyYXRvckpTLnBtICovLAogCQkJCTMxMkQ2N0Iw
MTUzNTY5MUYwMDU2M0QwRCAvKiBEaWN0aW9uYXJ5LmNwcCAqLywKQEAgLTI2NDQ0LDYgKzI2NDQ4
LDcgQEAKIAkJCQkwRkM0RTQwRDE4N0Y4MkUxMDA0NTg4MkMgLyogU2Nyb2xsaW5nQ29vcmRpbmF0
b3JJT1MuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzOTFBOTkxMTYyNzQ2Q0IwMDI5NzMzMCAvKiBT
Y3JvbGxpbmdDb29yZGluYXRvck1hYy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTNDMzhCRkYxNjQ0
NzNDNzAwMDkxRUIyIC8qIFNjcm9sbGluZ1N0YXRlRml4ZWROb2RlLmggaW4gSGVhZGVycyAqLywK
KwkJCQkyREZBNDg4RjFEQjU0MUQwMDAzNjJCOTkgLyogQnVmZmVyU291cmNlLmggaW4gSGVhZGVy
cyAqLywKIAkJCQkwRkVBM0U3QjE5MUIyRkM1MDAwRjFCNTUgLyogU2Nyb2xsaW5nU3RhdGVGcmFt
ZVNjcm9sbGluZ05vZGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzMUNCRDBEMTYxQTQ0RTkwMEU0
Qzg3NCAvKiBTY3JvbGxpbmdTdGF0ZU5vZGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRUEzRTg0
MTkxQjMxQkYwMDBGMUI1NSAvKiBTY3JvbGxpbmdTdGF0ZU92ZXJmbG93U2Nyb2xsaW5nTm9kZS5o
IGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9nZW5l
cmljL0lETFR5cGVzLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9nZW5lcmljL0lETFR5cGVz
LmgKaW5kZXggYmU4ODI2ZWM4MjQ3ZTk2YzJhMTg4MTViMzczZjRlNTc5YzM5OTg2Yi4uMWZlMTY5
ZmUxMmRjYjIxZTYyMTdiZjI4ZGQ3MmExZmE5NjhmMGMxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvZ2VuZXJpYy9JRExUeXBlcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2dlbmVyaWMvSURMVHlwZXMuaApAQCAtMzUsNiArMzUsNyBAQCBjbGFzcyBKU1ZhbHVl
OwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIEJ1ZmZlclNvdXJjZTsKIHRlbXBsYXRl
IDx0eXBlbmFtZSBWYWx1ZT4gY2xhc3MgRE9NUHJvbWlzZTsKIAogdGVtcGxhdGU8dHlwZW5hbWUg
VD4KQEAgLTExOCw2ICsxMTksNyBAQCBzdHJ1Y3QgSURMVW5pb24gOiBJRExUeXBlPHN0ZDo6ZXhw
ZXJpbWVudGFsOjp2YXJpYW50PHR5cGVuYW1lIFRzOjpJbXBsZW1lbnRhdGlvbgogICAgIHVzaW5n
IFR5cGVMaXN0ID0gYnJpZ2FuZDo6bGlzdDxUcy4uLj47CiB9OwogCitzdHJ1Y3QgSURMQnVmZmVy
U291cmNlIDogSURMVHlwZTxCdWZmZXJTb3VyY2U+IHsgfTsKIAogLy8gSGVscGVyIHByZWRpY2F0
ZXMKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvQnVmZmVyU291cmNl
LmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9CdWZmZXJTb3VyY2UuaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5mMTM1NWUzZmJlMjMyY2I0MjNlMWY2YWViMjc4NDU2MTM1NTQ5MjQ3Ci0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvQnVmZmVyU291cmNlLmgKQEAgLTAsMCAr
MSwzNiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBJZ2FsaWEgUy5MLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjcHJhZ21hIG9uY2UKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBCdWZmZXJTb3Vy
Y2UgeworcHVibGljOgorICAgIGNvbnN0IHVpbnQ4X3QqIGRhdGE7CisgICAgc2l6ZV90IGxlbmd0
aDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNET01CaW5kaW5nLmgKaW5kZXggZmUzY2E1NjRlYWYzY2RjYzc4ODQxYjk4OWRlZDQyYzlh
NmMyMWRjMy4uMDhkNTRkMDI4ZjEyNWJjYTE0ZDBhOGViMjAxY2I4NGQ3OTA3N2I0MSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmgKQEAgLTIzLDYgKzIzLDcgQEAK
IAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlICJCdWZmZXJTb3VyY2UuaCIKICNpbmNsdWRlICJE
T01XcmFwcGVyV29ybGQuaCIKICNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCiAjaW5jbHVkZSAi
RXhjZXB0aW9uT3IuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
RE9NQ29udmVydC5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Db252ZXJ0LmgK
aW5kZXggMmE0NzI4OGVmNzcwZWIxM2ViNDYyYzhhZDgxZmYxOTNmMDAxZGQ3Zi4uYmQ5MGYyYmQ0
YWRjODBiNzM0NjQ0YTE1NDZmZDg5M2VhZjg4YjM4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNET01Db252ZXJ0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNET01Db252ZXJ0LmgKQEAgLTYzOCw0ICs2MzgsMjUgQEAgdGVtcGxhdGU8dHlwZW5h
bWUgSURMVHlwZT4gdHlwZW5hbWUgRGV0YWlsOjpWYXJpYWRpY0NvbnZlcnRlcjxJRExUeXBlPjo6
UmVzdWx0IGMKICAgICByZXR1cm4geyBsZW5ndGgsIFdURk1vdmUocmVzdWx0KSB9OwogfQogCisv
LyBNQVJLOiAtCisvLyBNQVJLOiBCdWZmZXJTb3VyY2UgdHlwZQorCit0ZW1wbGF0ZTw+IHN0cnVj
dCBDb252ZXJ0ZXI8SURMQnVmZmVyU291cmNlPiA6IERlZmF1bHRDb252ZXJ0ZXI8SURMQnVmZmVy
U291cmNlPiB7CisgICAgdXNpbmcgUmV0dXJuVHlwZSA9IEJ1ZmZlclNvdXJjZTsKKworICAgIHN0
YXRpYyBSZXR1cm5UeXBlIGNvbnZlcnQoSlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBKU0M6OkpTVmFs
dWUgdmFsdWUpCisgICAgeworICAgICAgICBKU0M6OlZNJiB2bSA9IHN0YXRlLnZtKCk7CisgICAg
ICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgICAgICBpZiAo
SlNDOjpBcnJheUJ1ZmZlciogYnVmZmVyID0gSlNDOjp0b0FycmF5QnVmZmVyKHZhbHVlKSkKKyAg
ICAgICAgICAgIHJldHVybiB7IHN0YXRpY19jYXN0PHVpbnQ4X3QqPihidWZmZXItPmRhdGEoKSks
IGJ1ZmZlci0+Ynl0ZUxlbmd0aCgpIH07CisgICAgICAgIGlmIChSZWZQdHI8SlNDOjpBcnJheUJ1
ZmZlclZpZXc+IGJ1ZmZlclZpZXcgPSB0b0FycmF5QnVmZmVyVmlldyh2YWx1ZSkpCisgICAgICAg
ICAgICByZXR1cm4geyBzdGF0aWNfY2FzdDx1aW50OF90Kj4oYnVmZmVyVmlldy0+YmFzZUFkZHJl
c3MoKSksIGJ1ZmZlclZpZXctPmJ5dGVMZW5ndGgoKSB9OworCisgICAgICAgIHRocm93VHlwZUVy
cm9yKCZzdGF0ZSwgc2NvcGUpOworICAgICAgICByZXR1cm4geyBudWxscHRyLCAwIH07CisgICAg
fQorfTsKKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yLnBtIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yLnBtCmluZGV4IGQ1N2ZkMDUwNjdkMjQzNjljNzRk
MTRiNDI1ODdiYjc1ZWUxNjc5N2YuLjk3OWIyYjdjNDMxZDEyM2Q1OTdjMTU4ZDkyN2IyZjM5NmFm
MjU0OGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdl
bmVyYXRvci5wbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5l
cmF0b3IucG0KQEAgLTM3MCw2ICszNzAsNyBAQCBzdWIgU2tpcEluY2x1ZGVIZWFkZXIKIAogICAg
IHJldHVybiAxIGlmICRvYmplY3QtPklzUHJpbWl0aXZlVHlwZSgkdHlwZSk7CiAgICAgcmV0dXJu
IDEgaWYgJG9iamVjdC0+SXNUeXBlZEFycmF5VHlwZSgkdHlwZSk7CisgICAgcmV0dXJuIDEgaWYg
JG9iamVjdC0+SXNCdWZmZXJTb3VyY2VUeXBlKCR0eXBlKTsKICAgICByZXR1cm4gMSBpZiAkdHlw
ZSBlcSAiQXJyYXkiOwogICAgIHJldHVybiAxIGlmICR0eXBlIGVxICJET01TdHJpbmciIG9yICR0
eXBlIGVxICJVU1ZTdHJpbmciOwogICAgIHJldHVybiAxIGlmICR0eXBlIGVxICJET01UaW1lU3Rh
bXAiOwpAQCAtNTcxLDYgKzU3MiwxNSBAQCBzdWIgSXNUeXBlZEFycmF5VHlwZQogICAgIHJldHVy
biAwOwogfQogCitzdWIgSXNCdWZmZXJTb3VyY2VUeXBlCit7CisgICAgbXkgJG9iamVjdCA9IHNo
aWZ0OworICAgIG15ICR0eXBlID0gc2hpZnQ7CisKKyAgICByZXR1cm4gMSBpZiAkdHlwZSBlcSAi
QnVmZmVyU291cmNlIjsKKyAgICByZXR1cm4gMDsKK30KKwogc3ViIElzUmVmUHRyVHlwZQogewog
ICAgIG15ICRvYmplY3QgPSBzaGlmdDsKQEAgLTg2NSw3ICs4NzUsNyBAQCBzdWIgSXNXcmFwcGVy
VHlwZQogICAgIG15ICR0eXBlID0gc2hpZnQ7CiAKICAgICByZXR1cm4gMCBpZiAhJG9iamVjdC0+
SXNSZWZQdHJUeXBlKCR0eXBlKTsKLSAgICByZXR1cm4gMCBpZiAkb2JqZWN0LT5Jc1R5cGVkQXJy
YXlUeXBlKCR0eXBlKTsKKyAgICByZXR1cm4gMCBpZiAkb2JqZWN0LT5Jc1R5cGVkQXJyYXlUeXBl
KCR0eXBlKSB8fCAkb2JqZWN0LT5Jc0J1ZmZlclNvdXJjZVR5cGUoJHR5cGUpOwogICAgIHJldHVy
biAwIGlmICR0eXBlIGVxICJVTklPTiI7CiAgICAgcmV0dXJuIDAgaWYgJHdlYkNvcmVUeXBlSGFz
aHskdHlwZX07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
Q29kZUdlbmVyYXRvckpTLnBtIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2Rl
R2VuZXJhdG9ySlMucG0KaW5kZXggMGE0MzI2N2Y1OTc0N2NkOWRkZjQ0MzkzZWU4ZWJiOGI3ZGZm
MjMyZC4uMWJiZjUyODBkMjk3ZjM4ZjVhMWQwMjQ1NDI0MzU2NjUwYmZlN2M2MyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KQEAg
LTMxOSw3ICszMTksNyBAQCBzdWIgQWRkQ2xhc3NGb3J3YXJkSWZOZWVkZWQKIAogICAgICMgU1ZH
QW5pbWF0ZWRMZW5ndGgvTnVtYmVyL2V0Yy4gYXJlIG5vdCBjbGFzc2VzIHNvIHRoZXkgY2FuJ3Qg
YmUgZm9yd2FyZCBkZWNsYXJlZCBhcyBjbGFzc2VzLgogICAgIHJldHVybiBpZiAkY29kZUdlbmVy
YXRvci0+SXNTVkdBbmltYXRlZFR5cGUoJGludGVyZmFjZU5hbWUpOwotICAgIHJldHVybiBpZiAk
Y29kZUdlbmVyYXRvci0+SXNUeXBlZEFycmF5VHlwZSgkaW50ZXJmYWNlTmFtZSk7CisgICAgcmV0
dXJuIGlmICRjb2RlR2VuZXJhdG9yLT5Jc1R5cGVkQXJyYXlUeXBlKCRpbnRlcmZhY2VOYW1lKSB8
fCAkY29kZUdlbmVyYXRvci0+SXNCdWZmZXJTb3VyY2VUeXBlKCRpbnRlcmZhY2VOYW1lKTsKIAog
ICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICJjbGFzcyAkaW50ZXJmYWNlTmFtZTtcblxuIik7CiB9
CkBAIC00OTg4LDYgKzQ5ODgsNyBAQCBzdWIgR2V0QmFzZUlETFR5cGUKICAgICApOwogCiAgICAg
cmV0dXJuICRJRExUeXBlc3skaWRsVHlwZS0+bmFtZX0gaWYgZXhpc3RzICRJRExUeXBlc3skaWRs
VHlwZS0+bmFtZX07CisgICAgcmV0dXJuICJJRExCdWZmZXJTb3VyY2UiIGlmICRjb2RlR2VuZXJh
dG9yLT5Jc0J1ZmZlclNvdXJjZVR5cGUoJGlkbFR5cGUtPm5hbWUpOwogICAgIHJldHVybiAiSURM
RW51bWVyYXRpb248IiAuIEdldEVudW1lcmF0aW9uQ2xhc3NOYW1lKCRpZGxUeXBlLT5uYW1lLCAk
aW50ZXJmYWNlKSAuICI+IiBpZiAkY29kZUdlbmVyYXRvci0+SXNFbnVtVHlwZSgkaWRsVHlwZS0+
bmFtZSk7CiAgICAgcmV0dXJuICJJRExEaWN0aW9uYXJ5PCIgLiBHZXREaWN0aW9uYXJ5Q2xhc3NO
YW1lKCRpZGxUeXBlLT5uYW1lLCAkaW50ZXJmYWNlKSAuICI+IiBpZiAkY29kZUdlbmVyYXRvci0+
SXNEaWN0aW9uYXJ5VHlwZSgkaWRsVHlwZS0+bmFtZSk7CiAgICAgcmV0dXJuICJJRExTZXF1ZW5j
ZTwiIC4gR2V0SURMVHlwZSgkaW50ZXJmYWNlLCBAeyRpZGxUeXBlLT5zdWJ0eXBlc31bMF0pIC4g
Ij4iIGlmICRjb2RlR2VuZXJhdG9yLT5Jc1NlcXVlbmNlVHlwZSgkaWRsVHlwZS0+bmFtZSk7CkBA
IC01MTIwLDYgKzUxMjEsNyBAQCBzdWIgSXNIYW5kbGVkQnlET01Db252ZXJ0CiAgICAgcmV0dXJu
IDEgaWYgJGNvZGVHZW5lcmF0b3ItPklzRmxvYXRpbmdQb2ludFR5cGUoJGlkbFR5cGUtPm5hbWUp
OwogICAgIHJldHVybiAxIGlmICRjb2RlR2VuZXJhdG9yLT5Jc1NlcXVlbmNlT3JGcm96ZW5BcnJh
eVR5cGUoJGlkbFR5cGUtPm5hbWUpOwogICAgIHJldHVybiAxIGlmICRjb2RlR2VuZXJhdG9yLT5J
c0RpY3Rpb25hcnlUeXBlKCRpZGxUeXBlLT5uYW1lKTsKKyAgICByZXR1cm4gMSBpZiAkY29kZUdl
bmVyYXRvci0+SXNCdWZmZXJTb3VyY2VUeXBlKCRpZGxUeXBlLT5uYW1lKTsKICAgICByZXR1cm4g
MDsKIH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>291921</attachid>
            <date>2016-10-17 23:22:29 -0700</date>
            <delta_ts>2016-10-18 03:39:07 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-163541-20161017231854.patch</filename>
            <type>text/plain</type>
            <size>23541</size>
            <attacher name="Zan Dobersek">zan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA3NDUzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNWM2MDkwZTAxM2Y4NGEw
Njc3Y2Y1ZjAxZWNmZDc2MDg4ZDgyYmMwZC4uOTk1ZTFkNjYxNGY4MDY0YmE2MTM2OWUxOGQ4YjI4
OTMzN2UwNjlmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ4IEBACisyMDE2LTEwLTE3ICBaYW4g
RG9iZXJzZWsgIDx6ZG9iZXJzZWtAaWdhbGlhLmNvbT4KKworICAgICAgICBbV2ViSURMXSBTdXBw
b3J0IEJ1ZmZlclNvdXJjZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTYzNTQxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgQWRkIHN1cHBvcnQgZm9yIHRoZSBCdWZmZXJTb3VyY2UgdHlwZWRlZiBpbiBXZWJJ
REwuIFRoZSBpbXBsZW1lbnRhdGlvbgorICAgICAgICBhZGRzIHRoZSBuZWNlc3NhcnkgaGFuZGxp
bmcgZm9yIHRoaXMgdHlwZSBpbiB0aGUgZ2VuZXJhdG9yIHNjcmlwdHMgYW5kCisgICAgICAgIHRo
ZSBzcGVjaWFsaXphdGlvbiBvZiB0aGUgQ29udmVydGVyPD4gdGVtcGxhdGUgZm9yIHRoZSBJRExC
dWZmZXJTb3VyY2UKKyAgICAgICAgc3RydWN0IHRoYXQgZW5hYmxlcyBleHBvc2luZyBBcnJheUJ1
ZmZlciBvciBBcnJheUJ1ZmZlclZpZXcgb2JqZWN0cyBieQorICAgICAgICBoYXZpbmcgV2ViQ29y
ZTo6QnVmZmVyU291cmNlIG9iamVjdHMgcG9pbnRpbmcgdG8gdGhlaXIgZGF0YS4KKworICAgICAg
ICBUaGUgU291cmNlQnVmZmVyIGludGVyZmFjZSBpbiB0aGUgTVNFIG1vZHVsZSBoYXMgdGhlIGFw
cGVuZEJ1ZmZlcigpCisgICAgICAgIG9wZXJhdGlvbiBtb2RpZmllZCB0byBhY2NlcHQgYSBCdWZm
ZXJTb3VyY2UgcGFyYW1ldGVyLCBpbnN0ZWFkIG9mCisgICAgICAgIG92ZXJsb2FkaW5nIGl0IGZv
ciBBcnJheUJ1ZmZlciBhbmQgQXJyYXlCdWZmZXJWaWV3IHBhcmFtZXRlcnMuCisKKyAgICAgICAg
VGhlIGJpbmRpbmdzIGdlbmVyYXRvciB0ZXN0cyBjb3ZlciBCdWZmZXJTb3VyY2UgYXMgYm90aCBh
biBvcGVyYXRpb24KKyAgICAgICAgcGFyYW1ldGVyIGFuZCBhcyBhIGRpY3Rpb25hcnkgbWVtYmVy
LgorCisgICAgICAgICogTW9kdWxlcy9tZWRpYXNvdXJjZS9Tb3VyY2VCdWZmZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyOjphcHBlbmRCdWZmZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6U291cmNlQnVmZmVyOjphcHBlbmRCdWZmZXJJbnRlcm5hbCk6CisgICAgICAgICogTW9k
dWxlcy9tZWRpYXNvdXJjZS9Tb3VyY2VCdWZmZXIuaDoKKyAgICAgICAgKiBNb2R1bGVzL21lZGlh
c291cmNlL1NvdXJjZUJ1ZmZlci5pZGw6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qOgorICAgICAgICAqIGJpbmRpbmdzL2dlbmVyaWMvSURMVHlwZXMuaDoKKyAg
ICAgICAgKiBiaW5kaW5ncy9qcy9CdWZmZXJTb3VyY2UuaDogQWRkZWQuCisgICAgICAgICogYmlu
ZGluZ3MvanMvSlNET01CaW5kaW5nLmg6CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01Db252
ZXJ0Lmg6CisgICAgICAgIChXZWJDb3JlOjpDb252ZXJ0ZXI8SURMQnVmZmVyU291cmNlPjo6Y29u
dmVydCk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yLnBtOgorICAg
ICAgICAoU2tpcEluY2x1ZGVIZWFkZXIpOgorICAgICAgICAoSXNCdWZmZXJTb3VyY2VUeXBlKToK
KyAgICAgICAgKElzV3JhcHBlclR5cGUpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvQ29k
ZUdlbmVyYXRvckpTLnBtOgorICAgICAgICAoQWRkQ2xhc3NGb3J3YXJkSWZOZWVkZWQpOgorICAg
ICAgICAoR2V0QmFzZUlETFR5cGUpOgorICAgICAgICAoSXNIYW5kbGVkQnlET01Db252ZXJ0KToK
KyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OmNvbnZlcnREaWN0aW9uYXJ5PFRlc3RPYmo6OkRpY3Rpb25hcnk+KToKKyAg
ICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQnVmZmVyU291cmNlUGFy
YW1ldGVyKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQnVm
ZmVyU291cmNlUGFyYW1ldGVyQ2FsbGVyKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvVGVzdE9iai5pZGw6CisKIDIwMTYtMTAtMTcgIERlYW4gSmFja3NvbiAgPGRpbm9AYXBwbGUu
Y29tPgogCiAgICAgICAgIFJlbW92ZSBkZXBlbmRlbmN5IGN5Y2xlIHdpdGggVUlLaXQKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvU291cmNlQnVmZmVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvU291cmNlQnVmZmVyLmNwcApp
bmRleCAwYmQxZDVkYzYwNWU5NTVjOGMwYmFjYWUxNDBhOGJlYWYwNWQ0YTBjLi42MWQ3NDcxY2Yw
OTdmMDEwNzhmNmYxN2U0MWRlMWY1ODdjNzkzMWMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc291cmNlL1NvdXJjZUJ1ZmZlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9Tb3VyY2VCdWZmZXIuY3BwCkBAIC0zNSw2ICszNSw3IEBA
CiAjaWYgRU5BQkxFKE1FRElBX1NPVVJDRSkKIAogI2luY2x1ZGUgIkF1ZGlvVHJhY2tMaXN0Lmgi
CisjaW5jbHVkZSAiQnVmZmVyU291cmNlLmgiCiAjaW5jbHVkZSAiRXZlbnQuaCIKICNpbmNsdWRl
ICJFdmVudE5hbWVzLmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZVBsYWNlaG9sZGVyLmgiCkBA
IC0yMzEsMTUgKzIzMiw5IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IFNvdXJjZUJ1ZmZlcjo6c2V0QXBw
ZW5kV2luZG93RW5kKGRvdWJsZSBuZXdWYWx1ZSkKICAgICByZXR1cm4geyB9OwogfQogCi0KLUV4
Y2VwdGlvbk9yPHZvaWQ+IFNvdXJjZUJ1ZmZlcjo6YXBwZW5kQnVmZmVyKEFycmF5QnVmZmVyJiBk
YXRhKQotewotICAgIHJldHVybiBhcHBlbmRCdWZmZXJJbnRlcm5hbChzdGF0aWNfY2FzdDx1bnNp
Z25lZCBjaGFyKj4oZGF0YS5kYXRhKCkpLCBkYXRhLmJ5dGVMZW5ndGgoKSk7Ci19Ci0KLUV4Y2Vw
dGlvbk9yPHZvaWQ+IFNvdXJjZUJ1ZmZlcjo6YXBwZW5kQnVmZmVyKEFycmF5QnVmZmVyVmlldyYg
ZGF0YSkKK0V4Y2VwdGlvbk9yPHZvaWQ+IFNvdXJjZUJ1ZmZlcjo6YXBwZW5kQnVmZmVyKGNvbnN0
IEJ1ZmZlclNvdXJjZSYgZGF0YSkKIHsKLSAgICByZXR1cm4gYXBwZW5kQnVmZmVySW50ZXJuYWwo
c3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcio+KGRhdGEuYmFzZUFkZHJlc3MoKSksIGRhdGEuYnl0
ZUxlbmd0aCgpKTsKKyAgICByZXR1cm4gYXBwZW5kQnVmZmVySW50ZXJuYWwoc3RhdGljX2Nhc3Q8
Y29uc3QgdW5zaWduZWQgY2hhcio+KGRhdGEuZGF0YSksIGRhdGEubGVuZ3RoKTsKIH0KIAogdm9p
ZCBTb3VyY2VCdWZmZXI6OnJlc2V0UGFyc2VyU3RhdGUoKQpAQCAtNDk2LDcgKzQ5MSw3IEBAIHZv
aWQgU291cmNlQnVmZmVyOjpzY2hlZHVsZUV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRO
YW1lKQogICAgIG1fYXN5bmNFdmVudFF1ZXVlLmVucXVldWVFdmVudChXVEZNb3ZlKGV2ZW50KSk7
CiB9CiAKLUV4Y2VwdGlvbk9yPHZvaWQ+IFNvdXJjZUJ1ZmZlcjo6YXBwZW5kQnVmZmVySW50ZXJu
YWwodW5zaWduZWQgY2hhciogZGF0YSwgdW5zaWduZWQgc2l6ZSkKK0V4Y2VwdGlvbk9yPHZvaWQ+
IFNvdXJjZUJ1ZmZlcjo6YXBwZW5kQnVmZmVySW50ZXJuYWwoY29uc3QgdW5zaWduZWQgY2hhciog
ZGF0YSwgdW5zaWduZWQgc2l6ZSkKIHsKICAgICAvLyBTZWN0aW9uIDMuMiBhcHBlbmRCdWZmZXIo
KQogICAgIC8vIGh0dHBzOi8vZHZjcy53My5vcmcvaGcvaHRtbC1tZWRpYS9yYXctZmlsZS9kZWZh
dWx0L21lZGlhLXNvdXJjZS9tZWRpYS1zb3VyY2UuaHRtbCN3aWRsLVNvdXJjZUJ1ZmZlci1hcHBl
bmRCdWZmZXItdm9pZC1BcnJheUJ1ZmZlclZpZXctZGF0YQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9Tb3VyY2VCdWZmZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFzb3VyY2UvU291cmNlQnVmZmVyLmgKaW5kZXggMWNkODU0M2M1N2VlMDNi
MDcwMmFhZDg3OGE2YjhjMDZjNjhjZjQwZS4uMGNkZGYyODFmZmY3Y2JjMzNkMzIyNTFhYTNmY2Q4
NzU0MWE2MjBlOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJj
ZS9Tb3VyY2VCdWZmZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNl
L1NvdXJjZUJ1ZmZlci5oCkBAIC00Nyw2ICs0Nyw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IGNsYXNzIEF1ZGlvVHJhY2tMaXN0OworY2xhc3MgQnVmZmVyU291cmNlOwogY2xhc3MgTWVkaWFT
b3VyY2U7CiBjbGFzcyBQbGF0Zm9ybVRpbWVSYW5nZXM7CiBjbGFzcyBUZXh0VHJhY2tMaXN0OwpA
QCAtNzQsOCArNzUsNyBAQCBwdWJsaWM6CiAgICAgZG91YmxlIGFwcGVuZFdpbmRvd0VuZCgpIGNv
bnN0OwogICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IHNldEFwcGVuZFdpbmRvd0VuZChkb3VibGUpOwog
Ci0gICAgRXhjZXB0aW9uT3I8dm9pZD4gYXBwZW5kQnVmZmVyKEFycmF5QnVmZmVyJik7Ci0gICAg
RXhjZXB0aW9uT3I8dm9pZD4gYXBwZW5kQnVmZmVyKEFycmF5QnVmZmVyVmlldyYpOworICAgIEV4
Y2VwdGlvbk9yPHZvaWQ+IGFwcGVuZEJ1ZmZlcihjb25zdCBCdWZmZXJTb3VyY2UmKTsKICAgICBF
eGNlcHRpb25Pcjx2b2lkPiBhYm9ydCgpOwogICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IHJlbW92ZShk
b3VibGUgc3RhcnQsIGRvdWJsZSBlbmQpOwogICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IHJlbW92ZShj
b25zdCBNZWRpYVRpbWUmLCBjb25zdCBNZWRpYVRpbWUmKTsKQEAgLTE1MCw3ICsxNTAsNyBAQCBw
cml2YXRlOgogICAgIGJvb2wgaXNSZW1vdmVkKCkgY29uc3Q7CiAgICAgdm9pZCBzY2hlZHVsZUV2
ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnROYW1lKTsKIAotICAgIEV4Y2VwdGlvbk9yPHZv
aWQ+IGFwcGVuZEJ1ZmZlckludGVybmFsKHVuc2lnbmVkIGNoYXIqLCB1bnNpZ25lZCk7CisgICAg
RXhjZXB0aW9uT3I8dm9pZD4gYXBwZW5kQnVmZmVySW50ZXJuYWwoY29uc3QgdW5zaWduZWQgY2hh
ciosIHVuc2lnbmVkKTsKICAgICB2b2lkIGFwcGVuZEJ1ZmZlclRpbWVyRmlyZWQoKTsKICAgICB2
b2lkIHJlc2V0UGFyc2VyU3RhdGUoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXNvdXJjZS9Tb3VyY2VCdWZmZXIuaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXNvdXJjZS9Tb3VyY2VCdWZmZXIuaWRsCmluZGV4IGNmZjFiYjVhY2U5ZTk5N2NlYzUx
MzYwZmRhODc0ZTNlMGYwYjgwMjQuLjljODQ3YzcyYTk0NGIxNWNjMzY5MGI0NTQ4YTU0NmE0ZTBl
MjBkZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvU291
cmNlQnVmZmVyLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL1Nv
dXJjZUJ1ZmZlci5pZGwKQEAgLTU3LDggKzU3LDcgQEAKICAgICBbU2V0dGVyTWF5VGhyb3dFeGNl
cHRpb25dIGF0dHJpYnV0ZSB1bnJlc3RyaWN0ZWQgZG91YmxlIGFwcGVuZFdpbmRvd0VuZDsKIAog
ICAgIC8vIEFwcGVuZCBzZWdtZW50IGRhdGEuCi0gICAgW01heVRocm93RXhjZXB0aW9uXSB2b2lk
IGFwcGVuZEJ1ZmZlcihBcnJheUJ1ZmZlciBkYXRhKTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25d
IHZvaWQgYXBwZW5kQnVmZmVyKEFycmF5QnVmZmVyVmlldyBkYXRhKTsKKyAgICBbTWF5VGhyb3dF
eGNlcHRpb25dIHZvaWQgYXBwZW5kQnVmZmVyKEJ1ZmZlclNvdXJjZSBkYXRhKTsKIAogICAgIC8v
IEFib3J0IHRoZSBjdXJyZW50IHNlZ21lbnQgYXBwZW5kIHNlcXVlbmNlLgogICAgIFtNYXlUaHJv
d0V4Y2VwdGlvbl0gdm9pZCBhYm9ydCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDM3NmQ1NzMxY2NiODMyODFlZWJmNWJjMzc3
NDdmOTM5MmEyNDFlZjQuLjM0YjA1ZDJmZjUwZGZjZGU0MDAwZTU5MzZhYzUzNjMwMmE2NzIwYzIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKQEAgLTEyNTYsNiArMTI1Niw3IEBACiAJCTJERTcwMDIzMTkyRkU4MkEwMEIwOTc1QyAvKiBE
aXNwbGF5UmVmcmVzaE1vbml0b3JNYWMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDJERTcwMDIyMTkyRkU4MkEwMEIwOTc1QyAvKiBEaXNwbGF5UmVmcmVz
aE1vbml0b3JNYWMuaCAqLzsgfTsKIAkJMkRGNTEyQ0QxRDg3M0U0NzAwMUQ2NzgwIC8qIFJlcGxh
Y2VSYW5nZVdpdGhUZXh0Q29tbWFuZC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAyREY1MTJDQjFEODczRTQ3MDAxRDY3ODAgLyogUmVwbGFjZVJhbmdl
V2l0aFRleHRDb21tYW5kLmNwcCAqLzsgfTsKIAkJMkRGNTEyQ0UxRDg3M0U0NzAwMUQ2NzgwIC8q
IFJlcGxhY2VSYW5nZVdpdGhUZXh0Q29tbWFuZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMkRGNTEyQ0MxRDg3M0U0NzAwMUQ2NzgwIC8qIFJlcGxhY2VS
YW5nZVdpdGhUZXh0Q29tbWFuZC5oICovOyB9OworCQkyREZBNDg4RjFEQjU0MUQwMDAzNjJCOTkg
LyogQnVmZmVyU291cmNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAyREZBNDg4RTFEQjU0MUMyMDAzNjJCOTkgLyogQnVmZmVyU291cmNlLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMkUwODg4RDQxMTQ4
ODQ4QTAwQUY0MjY1IC8qIEpTRE9NRm9ybURhdGEuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkUwODg4RDIxMTQ4ODQ4QTAwQUY0MjY1IC8qIEpTRE9N
Rm9ybURhdGEuY3BwICovOyB9OwogCQkyRTA4ODhENTExNDg4NDhBMDBBRjQyNjUgLyogSlNET01G
b3JtRGF0YS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MkUwODg4RDMxMTQ4ODQ4QTAwQUY0MjY1IC8qIEpTRE9NRm9ybURhdGEuaCAqLzsgfTsKIAkJMkUx
OTUxNkIxQjY1OThEMjAwREY2RUVGIC8qIFdoZWVsRXZlbnREZWx0YUZpbHRlci5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRTE5NTE2QTFCNjU5OEQy
MDBERjZFRUYgLyogV2hlZWxFdmVudERlbHRhRmlsdGVyLmNwcCAqLzsgfTsKQEAgLTU5NzQsNiAr
NTk3NSw3IEBACiAJCUUxMjVGODNBMTgyNDEwNDgwMEQ4NENEOSAvKiBDcnlwdG9BbGdvcml0aG1B
ZXNDYmNQYXJhbXNEZXByZWNhdGVkLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBFMTI1RjgzOTE4MjQxMDQ4MDBEODRDRDkgLyogQ3J5cHRvQWxnb3JpdGht
QWVzQ2JjUGFyYW1zRGVwcmVjYXRlZC5oICovOyB9OwogCQlFMTI1RjgzRDE4MjQxMUU3MDBEODRD
RDkgLyogSlNDcnlwdG9PcGVyYXRpb25EYXRhLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxMjVGODNCMTgyNDExRTcwMEQ4NENEOSAvKiBKU0NyeXB0
b09wZXJhdGlvbkRhdGEuY3BwICovOyB9OwogCQlFMTI1RjgzRTE4MjQxMUU3MDBEODRDRDkgLyog
SlNDcnlwdG9PcGVyYXRpb25EYXRhLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBFMTI1RjgzQzE4MjQxMUU3MDBEODRDRDkgLyogSlNDcnlwdG9PcGVyYXRp
b25EYXRhLmggKi87IH07CisKIAkJRTEyNUY4NDExODI0MjUzQTAwRDg0Q0Q5IC8qIENyeXB0b0Fs
Z29yaXRobUFFU19DQkMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gRTEyNUY4M0YxODI0MjUzQTAwRDg0Q0Q5IC8qIENyeXB0b0FsZ29yaXRobUFFU19D
QkMuY3BwICovOyB9OwogCQlFMTI1Rjg0MjE4MjQyNTNBMDBEODRDRDkgLyogQ3J5cHRvQWxnb3Jp
dGhtQUVTX0NCQy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRTEyNUY4NDAxODI0MjUzQTAwRDg0Q0Q5IC8qIENyeXB0b0FsZ29yaXRobUFFU19DQkMuaCAq
LzsgfTsKIAkJRTEyNUY4NDUxODI0MjVDOTAwRDg0Q0Q5IC8qIENyeXB0b0FsZ29yaXRobUFFU19D
QkNNYWMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RTEyNUY4NDMxODI0MjVDOTAwRDg0Q0Q5IC8qIENyeXB0b0FsZ29yaXRobUFFU19DQkNNYWMuY3Bw
ICovOyB9OwpAQCAtODIzNCw2ICs4MjM2LDcgQEAKIAkJMkRFNzAwMjIxOTJGRTgyQTAwQjA5NzVD
IC8qIERpc3BsYXlSZWZyZXNoTW9uaXRvck1hYy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBEaXNwbGF5UmVmcmVzaE1vbml0b3JNYWMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJMkRGNTEyQ0IxRDg3M0U0NzAwMUQ2NzgwIC8qIFJlcGxhY2VSYW5nZVdpdGhUZXh0
Q29tbWFuZC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZXBsYWNl
UmFuZ2VXaXRoVGV4dENvbW1hbmQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQky
REY1MTJDQzFEODczRTQ3MDAxRDY3ODAgLyogUmVwbGFjZVJhbmdlV2l0aFRleHRDb21tYW5kLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlcGxhY2VSYW5nZVdpdGhUZXh0Q29t
bWFuZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkyREZBNDg4RTFEQjU0MUMyMDAz
NjJCOTkgLyogQnVmZmVyU291cmNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEJ1ZmZlclNvdXJjZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyRTA4ODhDMzEx
NDg4M0E5MDBBRjQyNjUgLyogRE9NRm9ybURhdGEuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9
IERPTUZvcm1EYXRhLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkUwODg4RDIx
MTQ4ODQ4QTAwQUY0MjY1IC8qIEpTRE9NRm9ybURhdGEuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gSlNET01Gb3JtRGF0YS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTJFMDg4OEQzMTE0ODg0OEEwMEFGNDI2NSAvKiBKU0RPTUZvcm1EYXRhLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTRE9NRm9ybURhdGEuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIxNDEzLDYgKzIxNDE2LDcgQEAKIAkJCQkxNERGQjMzRjBB
N0RGNzYzMDAxOEY3NjkgLyogRGVyaXZlZCBTb3VyY2VzICovLAogCQkJCTQ5QjM3NjBBMTVDNkM2
ODQwMDU5MTMxRCAvKiBBcnJheVZhbHVlLmNwcCAqLywKIAkJCQk0OUIzNzYwQjE1QzZDNjg0MDA1
OTEzMUQgLyogQXJyYXlWYWx1ZS5oICovLAorCQkJCTJERkE0ODhFMURCNTQxQzIwMDM2MkI5OSAv
KiBCdWZmZXJTb3VyY2UuaCAqLywKIAkJCQlCQ0Q1MzM2MzBFRDY4NDg5MDA4ODc0NjggLyogQ2Fj
aGVkU2NyaXB0U291cmNlUHJvdmlkZXIuaCAqLywKIAkJCQk5M0Y4QjMwNjBBMzAwRkVBMDBGNjFB
QjggLyogQ29kZUdlbmVyYXRvckpTLnBtICovLAogCQkJCTMxMkQ2N0IwMTUzNTY5MUYwMDU2M0Qw
RCAvKiBEaWN0aW9uYXJ5LmNwcCAqLywKQEAgLTI2NzkzLDYgKzI2Nzk3LDcgQEAKIAkJCQkwRkM0
RTQwRDE4N0Y4MkUxMDA0NTg4MkMgLyogU2Nyb2xsaW5nQ29vcmRpbmF0b3JJT1MuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTkzOTFBOTkxMTYyNzQ2Q0IwMDI5NzMzMCAvKiBTY3JvbGxpbmdDb29yZGlu
YXRvck1hYy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTNDMzhCRkYxNjQ0NzNDNzAwMDkxRUIyIC8q
IFNjcm9sbGluZ1N0YXRlRml4ZWROb2RlLmggaW4gSGVhZGVycyAqLywKKwkJCQkyREZBNDg4RjFE
QjU0MUQwMDAzNjJCOTkgLyogQnVmZmVyU291cmNlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkVB
M0U3QjE5MUIyRkM1MDAwRjFCNTUgLyogU2Nyb2xsaW5nU3RhdGVGcmFtZVNjcm9sbGluZ05vZGUu
aCBpbiBIZWFkZXJzICovLAogCQkJCTkzMUNCRDBEMTYxQTQ0RTkwMEU0Qzg3NCAvKiBTY3JvbGxp
bmdTdGF0ZU5vZGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRUEzRTg0MTkxQjMxQkYwMDBGMUI1
NSAvKiBTY3JvbGxpbmdTdGF0ZU92ZXJmbG93U2Nyb2xsaW5nTm9kZS5oIGluIEhlYWRlcnMgKi8s
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9nZW5lcmljL0lETFR5cGVzLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9nZW5lcmljL0lETFR5cGVzLmgKaW5kZXggYmU4ODI2
ZWM4MjQ3ZTk2YzJhMTg4MTViMzczZjRlNTc5YzM5OTg2Yi4uMWZlMTY5ZmUxMmRjYjIxZTYyMTdi
ZjI4ZGQ3MmExZmE5NjhmMGMxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
Z2VuZXJpYy9JRExUeXBlcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2dlbmVyaWMv
SURMVHlwZXMuaApAQCAtMzUsNiArMzUsNyBAQCBjbGFzcyBKU1ZhbHVlOwogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKK2NsYXNzIEJ1ZmZlclNvdXJjZTsKIHRlbXBsYXRlIDx0eXBlbmFtZSBWYWx1
ZT4gY2xhc3MgRE9NUHJvbWlzZTsKIAogdGVtcGxhdGU8dHlwZW5hbWUgVD4KQEAgLTExOCw2ICsx
MTksNyBAQCBzdHJ1Y3QgSURMVW5pb24gOiBJRExUeXBlPHN0ZDo6ZXhwZXJpbWVudGFsOjp2YXJp
YW50PHR5cGVuYW1lIFRzOjpJbXBsZW1lbnRhdGlvbgogICAgIHVzaW5nIFR5cGVMaXN0ID0gYnJp
Z2FuZDo6bGlzdDxUcy4uLj47CiB9OwogCitzdHJ1Y3QgSURMQnVmZmVyU291cmNlIDogSURMVHlw
ZTxCdWZmZXJTb3VyY2U+IHsgfTsKIAogLy8gSGVscGVyIHByZWRpY2F0ZXMKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvQnVmZmVyU291cmNlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9CdWZmZXJTb3VyY2UuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mMTM1NWUzZmJlMjMy
Y2I0MjNlMWY2YWViMjc4NDU2MTM1NTQ5MjQ3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvQnVmZmVyU291cmNlLmgKQEAgLTAsMCArMSwzNiBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxNiBJZ2FsaWEgUy5MLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UK
KworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBCdWZmZXJTb3VyY2UgeworcHVibGljOgor
ICAgIGNvbnN0IHVpbnQ4X3QqIGRhdGE7CisgICAgc2l6ZV90IGxlbmd0aDsKK307CisKK30gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTRE9NQmluZGluZy5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01CaW5kaW5n
LmgKaW5kZXggZmUzY2E1NjRlYWYzY2RjYzc4ODQxYjk4OWRlZDQyYzlhNmMyMWRjMy4uMDhkNTRk
MDI4ZjEyNWJjYTE0ZDBhOGViMjAxY2I4NGQ3OTA3N2I0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNET01CaW5kaW5nLmgKQEAgLTIzLDYgKzIzLDcgQEAKIAogI3ByYWdtYSBvbmNl
CiAKKyNpbmNsdWRlICJCdWZmZXJTb3VyY2UuaCIKICNpbmNsdWRlICJET01XcmFwcGVyV29ybGQu
aCIKICNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9uT3IuaCIK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQ29udmVydC5oIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Db252ZXJ0LmgKaW5kZXggMmE0NzI4OGVm
NzcwZWIxM2ViNDYyYzhhZDgxZmYxOTNmMDAxZGQ3Zi4uM2FkNDdiMzljYjA3YzNhMWNiYmIxNjY1
YmViYzE5ZGQ4NTdhZTkxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNET01Db252ZXJ0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Db252
ZXJ0LmgKQEAgLTYzOCw0ICs2MzgsMjUgQEAgdGVtcGxhdGU8dHlwZW5hbWUgSURMVHlwZT4gdHlw
ZW5hbWUgRGV0YWlsOjpWYXJpYWRpY0NvbnZlcnRlcjxJRExUeXBlPjo6UmVzdWx0IGMKICAgICBy
ZXR1cm4geyBsZW5ndGgsIFdURk1vdmUocmVzdWx0KSB9OwogfQogCisvLyBNQVJLOiAtCisvLyBN
QVJLOiBCdWZmZXJTb3VyY2UgdHlwZQorCit0ZW1wbGF0ZTw+IHN0cnVjdCBDb252ZXJ0ZXI8SURM
QnVmZmVyU291cmNlPiA6IERlZmF1bHRDb252ZXJ0ZXI8SURMQnVmZmVyU291cmNlPiB7CisgICAg
dXNpbmcgUmV0dXJuVHlwZSA9IEJ1ZmZlclNvdXJjZTsKKworICAgIHN0YXRpYyBSZXR1cm5UeXBl
IGNvbnZlcnQoSlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBKU0M6OkpTVmFsdWUgdmFsdWUpCisgICAg
eworICAgICAgICBKU0M6OlZNJiB2bSA9IHN0YXRlLnZtKCk7CisgICAgICAgIGF1dG8gc2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgICAgICBpZiAoSlNDOjpBcnJheUJ1ZmZl
ciogYnVmZmVyID0gSlNDOjp0b0FycmF5QnVmZmVyKHZhbHVlKSkKKyAgICAgICAgICAgIHJldHVy
biB7IHN0YXRpY19jYXN0PHVpbnQ4X3QqPihidWZmZXItPmRhdGEoKSksIGJ1ZmZlci0+Ynl0ZUxl
bmd0aCgpIH07CisgICAgICAgIGlmIChSZWZQdHI8SlNDOjpBcnJheUJ1ZmZlclZpZXc+IGJ1ZmZl
clZpZXcgPSB0b0FycmF5QnVmZmVyVmlldyh2YWx1ZSkpCisgICAgICAgICAgICByZXR1cm4geyBz
dGF0aWNfY2FzdDx1aW50OF90Kj4oYnVmZmVyVmlldy0+YmFzZUFkZHJlc3MoKSksIGJ1ZmZlclZp
ZXctPmJ5dGVMZW5ndGgoKSB9OworCisgICAgICAgIHRocm93VHlwZUVycm9yKCZzdGF0ZSwgc2Nv
cGUsIEFTQ0lJTGl0ZXJhbCgiT25seSBBcnJheUJ1ZmZlciBhbmQgQXJyYXlCdWZmZXJWaWV3IG9i
amVjdHMgY2FuIGJlIHBhc3NlZCBhcyBCdWZmZXJTb3VyY2UgYXJndW1lbnRzIikpOworICAgICAg
ICByZXR1cm4geyBudWxscHRyLCAwIH07CisgICAgfQorfTsKKwogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2Vu
ZXJhdG9yLnBtIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9y
LnBtCmluZGV4IGQ1N2ZkMDUwNjdkMjQzNjljNzRkMTRiNDI1ODdiYjc1ZWUxNjc5N2YuLjk3OWIy
YjdjNDMxZDEyM2Q1OTdjMTU4ZDkyN2IyZjM5NmFmMjU0OGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvci5wbQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3IucG0KQEAgLTM3MCw2ICszNzAsNyBA
QCBzdWIgU2tpcEluY2x1ZGVIZWFkZXIKIAogICAgIHJldHVybiAxIGlmICRvYmplY3QtPklzUHJp
bWl0aXZlVHlwZSgkdHlwZSk7CiAgICAgcmV0dXJuIDEgaWYgJG9iamVjdC0+SXNUeXBlZEFycmF5
VHlwZSgkdHlwZSk7CisgICAgcmV0dXJuIDEgaWYgJG9iamVjdC0+SXNCdWZmZXJTb3VyY2VUeXBl
KCR0eXBlKTsKICAgICByZXR1cm4gMSBpZiAkdHlwZSBlcSAiQXJyYXkiOwogICAgIHJldHVybiAx
IGlmICR0eXBlIGVxICJET01TdHJpbmciIG9yICR0eXBlIGVxICJVU1ZTdHJpbmciOwogICAgIHJl
dHVybiAxIGlmICR0eXBlIGVxICJET01UaW1lU3RhbXAiOwpAQCAtNTcxLDYgKzU3MiwxNSBAQCBz
dWIgSXNUeXBlZEFycmF5VHlwZQogICAgIHJldHVybiAwOwogfQogCitzdWIgSXNCdWZmZXJTb3Vy
Y2VUeXBlCit7CisgICAgbXkgJG9iamVjdCA9IHNoaWZ0OworICAgIG15ICR0eXBlID0gc2hpZnQ7
CisKKyAgICByZXR1cm4gMSBpZiAkdHlwZSBlcSAiQnVmZmVyU291cmNlIjsKKyAgICByZXR1cm4g
MDsKK30KKwogc3ViIElzUmVmUHRyVHlwZQogewogICAgIG15ICRvYmplY3QgPSBzaGlmdDsKQEAg
LTg2NSw3ICs4NzUsNyBAQCBzdWIgSXNXcmFwcGVyVHlwZQogICAgIG15ICR0eXBlID0gc2hpZnQ7
CiAKICAgICByZXR1cm4gMCBpZiAhJG9iamVjdC0+SXNSZWZQdHJUeXBlKCR0eXBlKTsKLSAgICBy
ZXR1cm4gMCBpZiAkb2JqZWN0LT5Jc1R5cGVkQXJyYXlUeXBlKCR0eXBlKTsKKyAgICByZXR1cm4g
MCBpZiAkb2JqZWN0LT5Jc1R5cGVkQXJyYXlUeXBlKCR0eXBlKSB8fCAkb2JqZWN0LT5Jc0J1ZmZl
clNvdXJjZVR5cGUoJHR5cGUpOwogICAgIHJldHVybiAwIGlmICR0eXBlIGVxICJVTklPTiI7CiAg
ICAgcmV0dXJuIDAgaWYgJHdlYkNvcmVUeXBlSGFzaHskdHlwZX07CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KaW5kZXggMzgxNjky
MjBkNGJhMjdkYWE0OTU3ZTIzMzc5NTgwMDJiZWM0NzRjMy4uOWFiOTI2Y2RlZTg3NjI4NTNkY2M3
NzQ3MGRmZTg5ZjAxNzIwNjdjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KQEAgLTMxOSw3ICszMTksNyBAQCBzdWIgQWRkQ2xh
c3NGb3J3YXJkSWZOZWVkZWQKIAogICAgICMgU1ZHQW5pbWF0ZWRMZW5ndGgvTnVtYmVyL2V0Yy4g
YXJlIG5vdCBjbGFzc2VzIHNvIHRoZXkgY2FuJ3QgYmUgZm9yd2FyZCBkZWNsYXJlZCBhcyBjbGFz
c2VzLgogICAgIHJldHVybiBpZiAkY29kZUdlbmVyYXRvci0+SXNTVkdBbmltYXRlZFR5cGUoJGlu
dGVyZmFjZU5hbWUpOwotICAgIHJldHVybiBpZiAkY29kZUdlbmVyYXRvci0+SXNUeXBlZEFycmF5
VHlwZSgkaW50ZXJmYWNlTmFtZSk7CisgICAgcmV0dXJuIGlmICRjb2RlR2VuZXJhdG9yLT5Jc1R5
cGVkQXJyYXlUeXBlKCRpbnRlcmZhY2VOYW1lKSB8fCAkY29kZUdlbmVyYXRvci0+SXNCdWZmZXJT
b3VyY2VUeXBlKCRpbnRlcmZhY2VOYW1lKTsKIAogICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICJj
bGFzcyAkaW50ZXJmYWNlTmFtZTtcblxuIik7CiB9CkBAIC00OTg4LDYgKzQ5ODgsNyBAQCBzdWIg
R2V0QmFzZUlETFR5cGUKICAgICApOwogCiAgICAgcmV0dXJuICRJRExUeXBlc3skaWRsVHlwZS0+
bmFtZX0gaWYgZXhpc3RzICRJRExUeXBlc3skaWRsVHlwZS0+bmFtZX07CisgICAgcmV0dXJuICJJ
RExCdWZmZXJTb3VyY2UiIGlmICRjb2RlR2VuZXJhdG9yLT5Jc0J1ZmZlclNvdXJjZVR5cGUoJGlk
bFR5cGUtPm5hbWUpOwogICAgIHJldHVybiAiSURMRW51bWVyYXRpb248IiAuIEdldEVudW1lcmF0
aW9uQ2xhc3NOYW1lKCRpZGxUeXBlLT5uYW1lLCAkaW50ZXJmYWNlKSAuICI+IiBpZiAkY29kZUdl
bmVyYXRvci0+SXNFbnVtVHlwZSgkaWRsVHlwZS0+bmFtZSk7CiAgICAgcmV0dXJuICJJRExEaWN0
aW9uYXJ5PCIgLiBHZXREaWN0aW9uYXJ5Q2xhc3NOYW1lKCRpZGxUeXBlLT5uYW1lLCAkaW50ZXJm
YWNlKSAuICI+IiBpZiAkY29kZUdlbmVyYXRvci0+SXNEaWN0aW9uYXJ5VHlwZSgkaWRsVHlwZS0+
bmFtZSk7CiAgICAgcmV0dXJuICJJRExTZXF1ZW5jZTwiIC4gR2V0SURMVHlwZSgkaW50ZXJmYWNl
LCBAeyRpZGxUeXBlLT5zdWJ0eXBlc31bMF0pIC4gIj4iIGlmICRjb2RlR2VuZXJhdG9yLT5Jc1Nl
cXVlbmNlVHlwZSgkaWRsVHlwZS0+bmFtZSk7CkBAIC01MTIwLDYgKzUxMjEsNyBAQCBzdWIgSXNI
YW5kbGVkQnlET01Db252ZXJ0CiAgICAgcmV0dXJuIDEgaWYgJGNvZGVHZW5lcmF0b3ItPklzRmxv
YXRpbmdQb2ludFR5cGUoJGlkbFR5cGUtPm5hbWUpOwogICAgIHJldHVybiAxIGlmICRjb2RlR2Vu
ZXJhdG9yLT5Jc1NlcXVlbmNlT3JGcm96ZW5BcnJheVR5cGUoJGlkbFR5cGUtPm5hbWUpOwogICAg
IHJldHVybiAxIGlmICRjb2RlR2VuZXJhdG9yLT5Jc0RpY3Rpb25hcnlUeXBlKCRpZGxUeXBlLT5u
YW1lKTsKKyAgICByZXR1cm4gMSBpZiAkY29kZUdlbmVyYXRvci0+SXNCdWZmZXJTb3VyY2VUeXBl
KCRpZGxUeXBlLT5uYW1lKTsKICAgICByZXR1cm4gMDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcAppbmRleCA2MTJh
OWJhOWZhYjU0MDMyNGM2NDVjZWRmZDBmMDg3YzdmYmU1M2ZkLi5jNTJhMzkwZjAxYTIwNDZkN2Vl
OWUxMWE2NWEzZGNiMTNkMDFjNjgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcApAQCAtNTAzLDYgKzUwMywxMSBAQCB0
ZW1wbGF0ZTw+IE9wdGlvbmFsPFRlc3RPYmo6OkRpY3Rpb25hcnk+IGNvbnZlcnREaWN0aW9uYXJ5
PFRlc3RPYmo6OkRpY3Rpb25hcnk+KAogICAgICAgICByZXN1bHQuYm9vbGVhbldpdGhvdXREZWZh
dWx0ID0gY29udmVydDxJRExCb29sZWFuPihzdGF0ZSwgYm9vbGVhbldpdGhvdXREZWZhdWx0VmFs
dWUpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIE51bGxvcHQpOwog
ICAgIH0KKyAgICBKU1ZhbHVlIGJ1ZmZlclNvdXJjZVZhbHVlVmFsdWUgPSBpc051bGxPclVuZGVm
aW5lZCA/IGpzVW5kZWZpbmVkKCkgOiBvYmplY3QtPmdldCgmc3RhdGUsIElkZW50aWZpZXI6OmZy
b21TdHJpbmcoJnN0YXRlLCAiYnVmZmVyU291cmNlVmFsdWUiKSk7CisgICAgaWYgKCFidWZmZXJT
b3VyY2VWYWx1ZVZhbHVlLmlzVW5kZWZpbmVkKCkpIHsKKyAgICAgICAgcmVzdWx0LmJ1ZmZlclNv
dXJjZVZhbHVlID0gY29udmVydDxJRExCdWZmZXJTb3VyY2U+KHN0YXRlLCBidWZmZXJTb3VyY2VW
YWx1ZVZhbHVlKTsKKyAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBOdWxs
b3B0KTsKKyAgICB9CiAgICAgSlNWYWx1ZSBkaWN0aW9uYXJ5TWVtYmVyVmFsdWUgPSBpc051bGxP
clVuZGVmaW5lZCA/IGpzVW5kZWZpbmVkKCkgOiBvYmplY3QtPmdldCgmc3RhdGUsIElkZW50aWZp
ZXI6OmZyb21TdHJpbmcoJnN0YXRlLCAiZGljdGlvbmFyeU1lbWJlciIpKTsKICAgICBpZiAoIWRp
Y3Rpb25hcnlNZW1iZXJWYWx1ZS5pc1VuZGVmaW5lZCgpKSB7CiAgICAgICAgIGF1dG8gZGljdGlv
bmFyeU1lbWJlck9wdGlvbmFsID0gY29udmVydDxJRExEaWN0aW9uYXJ5PFRlc3RPYmo6OkRpY3Rp
b25hcnlUaGF0U2hvdWxkVG9sZXJhdGVOdWxsPj4oc3RhdGUsIGRpY3Rpb25hcnlNZW1iZXJWYWx1
ZSk7CkBAIC05OTMsNiArOTk4LDcgQEAgSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQ29uZGl0aW9uYWxPdmVybG9hZCgKIEpTQzo6RW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblNpbmds
ZUNvbmRpdGlvbmFsT3ZlcmxvYWQoSlNDOjpFeGVjU3RhdGUqKTsKIEpTQzo6RW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkF0dGFjaFNoYWRvd1Jv
b3QoSlNDOjpFeGVjU3RhdGUqKTsKIEpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBq
c1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk9wZXJhdGlvbldpdGhFeHRlcm5hbERpY3Rpb25hcnlQ
YXJhbWV0ZXIoSlNDOjpFeGVjU3RhdGUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkJ1ZmZlclNvdXJjZVBhcmFtZXRlcihKU0M6
OkV4ZWNTdGF0ZSopOwogSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9i
alByb3RvdHlwZUZ1bmN0aW9uVG9TdHJpbmcoSlNDOjpFeGVjU3RhdGUqKTsKIEpTQzo6RW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblRvSlNPTihK
U0M6OkV4ZWNTdGF0ZSopOwogCkBAIC0xNjA0LDYgKzE2MTAsNyBAQCBzdGF0aWMgY29uc3QgSGFz
aFRhYmxlVmFsdWUgSlNUZXN0T2JqUHJvdG90eXBlVGFibGVWYWx1ZXNbXSA9CiAgICAgeyAic2lu
Z2xlQ29uZGl0aW9uYWxPdmVybG9hZCIsIEpTQzo6RnVuY3Rpb24sIE5vSW50cmluc2ljLCB7IChp
bnRwdHJfdClzdGF0aWNfY2FzdDxOYXRpdmVGdW5jdGlvbj4oanNUZXN0T2JqUHJvdG90eXBlRnVu
Y3Rpb25TaW5nbGVDb25kaXRpb25hbE92ZXJsb2FkKSwgKGludHB0cl90KSAoMSkgfSB9LAogICAg
IHsgImF0dGFjaFNoYWRvd1Jvb3QiLCBKU0M6OkZ1bmN0aW9uLCBOb0ludHJpbnNpYywgeyAoaW50
cHRyX3Qpc3RhdGljX2Nhc3Q8TmF0aXZlRnVuY3Rpb24+KGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0
aW9uQXR0YWNoU2hhZG93Um9vdCksIChpbnRwdHJfdCkgKDEpIH0gfSwKICAgICB7ICJvcGVyYXRp
b25XaXRoRXh0ZXJuYWxEaWN0aW9uYXJ5UGFyYW1ldGVyIiwgSlNDOjpGdW5jdGlvbiwgTm9JbnRy
aW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PE5hdGl2ZUZ1bmN0aW9uPihqc1Rlc3RPYmpQ
cm90b3R5cGVGdW5jdGlvbk9wZXJhdGlvbldpdGhFeHRlcm5hbERpY3Rpb25hcnlQYXJhbWV0ZXIp
LCAoaW50cHRyX3QpICgxKSB9IH0sCisgICAgeyAiYnVmZmVyU291cmNlUGFyYW1ldGVyIiwgSlND
OjpGdW5jdGlvbiwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PE5hdGl2ZUZ1
bmN0aW9uPihqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkJ1ZmZlclNvdXJjZVBhcmFtZXRlciks
IChpbnRwdHJfdCkgKDEpIH0gfSwKICAgICB7ICJ0b1N0cmluZyIsIEpTQzo6RnVuY3Rpb24sIE5v
SW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxOYXRpdmVGdW5jdGlvbj4oanNUZXN0
T2JqUHJvdG90eXBlRnVuY3Rpb25Ub1N0cmluZyksIChpbnRwdHJfdCkgKDApIH0gfSwKICAgICB7
ICJ0b0pTT04iLCBKU0M6OkZ1bmN0aW9uLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGlj
X2Nhc3Q8TmF0aXZlRnVuY3Rpb24+KGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVG9KU09OKSwg
KGludHB0cl90KSAoMCkgfSB9LAogI2lmIEVOQUJMRShDb25kaXRpb24xKQpAQCAtNzcyOSw2ICs3
NzM2LDI2IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90
b3R5cGVGdW5jdGlvbk9wZXJhdGlvbldpdGhFeHRlcm5hCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAorc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1Zh
bHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQnVmZmVyU291cmNlUGFyYW1ldGVyQ2FsbGVy
KEpTQzo6RXhlY1N0YXRlKiwgSlNUZXN0T2JqKiwgSlNDOjpUaHJvd1Njb3BlJik7CisKK0VuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25CdWZmZXJT
b3VyY2VQYXJhbWV0ZXIoRXhlY1N0YXRlKiBzdGF0ZSkKK3sKKyAgICByZXR1cm4gQmluZGluZ0Nh
bGxlcjxKU1Rlc3RPYmo+OjpjYWxsT3BlcmF0aW9uPGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9u
QnVmZmVyU291cmNlUGFyYW1ldGVyQ2FsbGVyPihzdGF0ZSwgImJ1ZmZlclNvdXJjZVBhcmFtZXRl
ciIpOworfQorCitzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJv
dG90eXBlRnVuY3Rpb25CdWZmZXJTb3VyY2VQYXJhbWV0ZXJDYWxsZXIoSlNDOjpFeGVjU3RhdGUq
IHN0YXRlLCBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMsIEpTQzo6VGhyb3dTY29wZSYgdGhyb3dTY29w
ZSkKK3sKKyAgICBVTlVTRURfUEFSQU0oc3RhdGUpOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Nj
b3BlKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOworICAgIGlmIChV
TkxJS0VMWShzdGF0ZS0+YXJndW1lbnRDb3VudCgpIDwgMSkpCisgICAgICAgIHJldHVybiB0aHJv
d1ZNRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9y
KHN0YXRlKSk7CisgICAgYXV0byBkYXRhID0gY29udmVydDxJRExCdWZmZXJTb3VyY2U+KCpzdGF0
ZSwgc3RhdGUtPnVuY2hlY2tlZEFyZ3VtZW50KDApKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOworICAgIGltcGwuYnVmZmVyU291cmNlUGFy
YW1ldGVyKFdURk1vdmUoZGF0YSkpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRl
ZmluZWQoKSk7Cit9CisKIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RP
YmpQcm90b3R5cGVGdW5jdGlvblRvU3RyaW5nQ2FsbGVyKEpTQzo6RXhlY1N0YXRlKiwgSlNUZXN0
T2JqKiwgSlNDOjpUaHJvd1Njb3BlJik7CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Ub1N0cmluZyhFeGVjU3RhdGUqIHN0YXRlKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RPYmouaWRs
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RPYmouaWRsCmluZGV4
IGFhNmFkZjhiOTM3MWM3NGUyM2FkNmUyMzg1OGFjMTAwYWU3YzlmNGMuLjE3ZWRiZjljYzIwMGQw
MzJlNjFjMTQxYjY2MGY1ZjA5YTU4NDk1MmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0T2JqLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvVGVzdE9iai5pZGwKQEAgLTQxNSw2ICs0MTUsOCBAQCBlbnVtIFRl
c3RDb25maWRlbmNlIHsgImhpZ2giLCAia2luZGEtbG93IiB9OwogICAgIHN0cmluZ2lmaWVyIGF0
dHJpYnV0ZSBVU1ZTdHJpbmcgc3RyaW5naWZpZXJBdHRyaWJ1dGU7CiAKICAgICBzZXJpYWxpemVy
ID0ge2NyZWF0ZSwgcmVhZE9ubHlTdHJpbmdBdHRyLCBlbnVtQXR0ciwgbG9uZ0F0dHJ9OworCisg
ICAgdm9pZCBidWZmZXJTb3VyY2VQYXJhbWV0ZXIoQnVmZmVyU291cmNlIGRhdGEpOwogfTsKIAog
Ly8gVGhlIGZvbGxvd2luZyBjb21tZW50IHNob3VsZCBub3QgZ2VuZXJhdGUgYW55IGNvZGUuCkBA
IC00NjAsNiArNDYyLDcgQEAgZGljdGlvbmFyeSBUZXN0RGljdGlvbmFyeSB7CiAgICAgVGVzdERp
Y3Rpb25hcnlUaGF0U2hvdWxkVG9sZXJhdGVOdWxsIGRpY3Rpb25hcnlNZW1iZXI7CiAgICAgKGxv
bmcgb3IgTm9kZSkgdW5pb25NZW1iZXI7CiAgICAgKGxvbmcgb3IgTm9kZSk/IG51bGxhYmxlVW5p
b25NZW1iZXIgPSBudWxsOworICAgIEJ1ZmZlclNvdXJjZSBidWZmZXJTb3VyY2VWYWx1ZTsKIH07
CiAKIGRpY3Rpb25hcnkgVGVzdERpY3Rpb25hcnlUaGF0U2hvdWxkTm90VG9sZXJhdGVOdWxsIHsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>291935</attachid>
            <date>2016-10-18 03:39:16 -0700</date>
            <delta_ts>2016-10-18 03:39:16 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-163541-20161018033541.patch</filename>
            <type>text/plain</type>
            <size>22721</size>
            <attacher name="Zan Dobersek">zan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA3NDU3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjU0ZDU1NDI0ODJlYTBl
YzBiZjk5OGMxNjM2ZDE2MjUxMGNkZjBhMS4uMDdlYjRjMmVhNzM3NzJlZDI2ZjE3YTkzZGRkZTMx
MDE3YjQ1ZGE1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ2IEBACisyMDE2LTEwLTE4ICBaYW4g
RG9iZXJzZWsgIDx6ZG9iZXJzZWtAaWdhbGlhLmNvbT4KKworICAgICAgICBbV2ViSURMXSBTdXBw
b3J0IEJ1ZmZlclNvdXJjZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTYzNTQxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgWW91ZW5uIEZhYmxldC4KKwor
ICAgICAgICBBZGQgc3VwcG9ydCBmb3IgdGhlIEJ1ZmZlclNvdXJjZSB0eXBlZGVmIGluIFdlYklE
TC4gVGhlIGltcGxlbWVudGF0aW9uCisgICAgICAgIGFkZHMgdGhlIG5lY2Vzc2FyeSBoYW5kbGlu
ZyBmb3IgdGhpcyB0eXBlIGluIHRoZSBnZW5lcmF0b3Igc2NyaXB0cyBhbmQKKyAgICAgICAgdGhl
IHNwZWNpYWxpemF0aW9uIG9mIHRoZSBDb252ZXJ0ZXI8PiB0ZW1wbGF0ZSBmb3IgdGhlIElETEJ1
ZmZlclNvdXJjZQorICAgICAgICBzdHJ1Y3QgdGhhdCBlbmFibGVzIGV4cG9zaW5nIEFycmF5QnVm
ZmVyIG9yIEFycmF5QnVmZmVyVmlldyBvYmplY3RzIGJ5CisgICAgICAgIGhhdmluZyBXZWJDb3Jl
OjpCdWZmZXJTb3VyY2Ugb2JqZWN0cyBwb2ludGluZyB0byB0aGVpciBkYXRhLgorCisgICAgICAg
IFRoZSBTb3VyY2VCdWZmZXIgaW50ZXJmYWNlIGluIHRoZSBNU0UgbW9kdWxlIGhhcyB0aGUgYXBw
ZW5kQnVmZmVyKCkKKyAgICAgICAgb3BlcmF0aW9uIG1vZGlmaWVkIHRvIGFjY2VwdCBhIEJ1ZmZl
clNvdXJjZSBwYXJhbWV0ZXIsIGluc3RlYWQgb2YKKyAgICAgICAgb3ZlcmxvYWRpbmcgaXQgZm9y
IEFycmF5QnVmZmVyIGFuZCBBcnJheUJ1ZmZlclZpZXcgcGFyYW1ldGVycy4KKworICAgICAgICBU
aGUgYmluZGluZ3MgZ2VuZXJhdG9yIHRlc3RzIGNvdmVyIEJ1ZmZlclNvdXJjZSBhcyBib3RoIGFu
IG9wZXJhdGlvbgorICAgICAgICBwYXJhbWV0ZXIgYW5kIGFzIGEgZGljdGlvbmFyeSBtZW1iZXIu
CisKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc291cmNlL1NvdXJjZUJ1ZmZlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXI6OmFwcGVuZEJ1ZmZlcik6CisgICAgICAgIChXZWJD
b3JlOjpTb3VyY2VCdWZmZXI6OmFwcGVuZEJ1ZmZlckludGVybmFsKToKKyAgICAgICAgKiBNb2R1
bGVzL21lZGlhc291cmNlL1NvdXJjZUJ1ZmZlci5oOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFz
b3VyY2UvU291cmNlQnVmZmVyLmlkbDoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2o6CisgICAgICAgICogYmluZGluZ3MvZ2VuZXJpYy9JRExUeXBlcy5oOgorICAg
ICAgICAqIGJpbmRpbmdzL2pzL0J1ZmZlclNvdXJjZS5oOiBBZGRlZC4KKyAgICAgICAgKiBiaW5k
aW5ncy9qcy9KU0RPTUNvbnZlcnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnZlcnRlcjxJRExC
dWZmZXJTb3VyY2U+Ojpjb252ZXJ0KToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0NvZGVH
ZW5lcmF0b3IucG06CisgICAgICAgIChTa2lwSW5jbHVkZUhlYWRlcik6CisgICAgICAgIChJc1dy
YXBwZXJUeXBlKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5w
bToKKyAgICAgICAgKEFkZENsYXNzRm9yd2FyZElmTmVlZGVkKToKKyAgICAgICAgKEdldEJhc2VJ
RExUeXBlKToKKyAgICAgICAgKElzSGFuZGxlZEJ5RE9NQ29udmVydCk6CisgICAgICAgICogYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHA6CisgICAgICAgIChXZWJDb3JlOjpj
b252ZXJ0RGljdGlvbmFyeTxUZXN0T2JqOjpEaWN0aW9uYXJ5Pik6CisgICAgICAgIChXZWJDb3Jl
Ojpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkJ1ZmZlclNvdXJjZVBhcmFtZXRlcik6CisgICAg
ICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkJ1ZmZlclNvdXJjZVBhcmFt
ZXRlckNhbGxlcik6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RPYmouaWRs
OgorCiAyMDE2LTEwLTE3ICBTZXJnaW8gVmlsbGFyIFNlbmluICA8c3ZpbGxhckBpZ2FsaWEuY29t
PgogCiAgICAgICAgIFtjc3MtZ3JpZF0gQ29uc3RyYWluIGJ5IG1pbnxtYXgtaGVpZ2h0IG9uIGF1
dG8gcmVwZWF0IGNvbXB1dGF0aW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc291cmNlL1NvdXJjZUJ1ZmZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21l
ZGlhc291cmNlL1NvdXJjZUJ1ZmZlci5jcHAKaW5kZXggMGJkMWQ1ZGM2MDVlOTU1YzhjMGJhY2Fl
MTQwYThiZWFmMDVkNGEwYy4uNjFkNzQ3MWNmMDk3ZjAxMDc4ZjZmMTdlNDFkZTFmNTg3Yzc5MzFj
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9Tb3VyY2VC
dWZmZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvU291cmNl
QnVmZmVyLmNwcApAQCAtMzUsNiArMzUsNyBAQAogI2lmIEVOQUJMRShNRURJQV9TT1VSQ0UpCiAK
ICNpbmNsdWRlICJBdWRpb1RyYWNrTGlzdC5oIgorI2luY2x1ZGUgIkJ1ZmZlclNvdXJjZS5oIgog
I2luY2x1ZGUgIkV2ZW50LmgiCiAjaW5jbHVkZSAiRXZlbnROYW1lcy5oIgogI2luY2x1ZGUgIkV4
Y2VwdGlvbkNvZGVQbGFjZWhvbGRlci5oIgpAQCAtMjMxLDE1ICsyMzIsOSBAQCBFeGNlcHRpb25P
cjx2b2lkPiBTb3VyY2VCdWZmZXI6OnNldEFwcGVuZFdpbmRvd0VuZChkb3VibGUgbmV3VmFsdWUp
CiAgICAgcmV0dXJuIHsgfTsKIH0KIAotCi1FeGNlcHRpb25Pcjx2b2lkPiBTb3VyY2VCdWZmZXI6
OmFwcGVuZEJ1ZmZlcihBcnJheUJ1ZmZlciYgZGF0YSkKLXsKLSAgICByZXR1cm4gYXBwZW5kQnVm
ZmVySW50ZXJuYWwoc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcio+KGRhdGEuZGF0YSgpKSwgZGF0
YS5ieXRlTGVuZ3RoKCkpOwotfQotCi1FeGNlcHRpb25Pcjx2b2lkPiBTb3VyY2VCdWZmZXI6OmFw
cGVuZEJ1ZmZlcihBcnJheUJ1ZmZlclZpZXcmIGRhdGEpCitFeGNlcHRpb25Pcjx2b2lkPiBTb3Vy
Y2VCdWZmZXI6OmFwcGVuZEJ1ZmZlcihjb25zdCBCdWZmZXJTb3VyY2UmIGRhdGEpCiB7Ci0gICAg
cmV0dXJuIGFwcGVuZEJ1ZmZlckludGVybmFsKHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXIqPihk
YXRhLmJhc2VBZGRyZXNzKCkpLCBkYXRhLmJ5dGVMZW5ndGgoKSk7CisgICAgcmV0dXJuIGFwcGVu
ZEJ1ZmZlckludGVybmFsKHN0YXRpY19jYXN0PGNvbnN0IHVuc2lnbmVkIGNoYXIqPihkYXRhLmRh
dGEpLCBkYXRhLmxlbmd0aCk7CiB9CiAKIHZvaWQgU291cmNlQnVmZmVyOjpyZXNldFBhcnNlclN0
YXRlKCkKQEAgLTQ5Niw3ICs0OTEsNyBAQCB2b2lkIFNvdXJjZUJ1ZmZlcjo6c2NoZWR1bGVFdmVu
dChjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50TmFtZSkKICAgICBtX2FzeW5jRXZlbnRRdWV1ZS5l
bnF1ZXVlRXZlbnQoV1RGTW92ZShldmVudCkpOwogfQogCi1FeGNlcHRpb25Pcjx2b2lkPiBTb3Vy
Y2VCdWZmZXI6OmFwcGVuZEJ1ZmZlckludGVybmFsKHVuc2lnbmVkIGNoYXIqIGRhdGEsIHVuc2ln
bmVkIHNpemUpCitFeGNlcHRpb25Pcjx2b2lkPiBTb3VyY2VCdWZmZXI6OmFwcGVuZEJ1ZmZlcklu
dGVybmFsKGNvbnN0IHVuc2lnbmVkIGNoYXIqIGRhdGEsIHVuc2lnbmVkIHNpemUpCiB7CiAgICAg
Ly8gU2VjdGlvbiAzLjIgYXBwZW5kQnVmZmVyKCkKICAgICAvLyBodHRwczovL2R2Y3MudzMub3Jn
L2hnL2h0bWwtbWVkaWEvcmF3LWZpbGUvZGVmYXVsdC9tZWRpYS1zb3VyY2UvbWVkaWEtc291cmNl
Lmh0bWwjd2lkbC1Tb3VyY2VCdWZmZXItYXBwZW5kQnVmZmVyLXZvaWQtQXJyYXlCdWZmZXJWaWV3
LWRhdGEKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvU291
cmNlQnVmZmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL1NvdXJjZUJ1
ZmZlci5oCmluZGV4IDFjZDg1NDNjNTdlZTAzYjA3MDJhYWQ4NzhhNmI4YzA2YzY4Y2Y0MGUuLjBj
ZGRmMjgxZmZmN2NiYzMzZDMyMjUxYWEzZmNkODc1NDFhNjIwZTggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvU291cmNlQnVmZmVyLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9Tb3VyY2VCdWZmZXIuaApAQCAtNDcsNiArNDcs
NyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBBdWRpb1RyYWNrTGlzdDsKK2NsYXNz
IEJ1ZmZlclNvdXJjZTsKIGNsYXNzIE1lZGlhU291cmNlOwogY2xhc3MgUGxhdGZvcm1UaW1lUmFu
Z2VzOwogY2xhc3MgVGV4dFRyYWNrTGlzdDsKQEAgLTc0LDggKzc1LDcgQEAgcHVibGljOgogICAg
IGRvdWJsZSBhcHBlbmRXaW5kb3dFbmQoKSBjb25zdDsKICAgICBFeGNlcHRpb25Pcjx2b2lkPiBz
ZXRBcHBlbmRXaW5kb3dFbmQoZG91YmxlKTsKIAotICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IGFwcGVu
ZEJ1ZmZlcihBcnJheUJ1ZmZlciYpOwotICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IGFwcGVuZEJ1ZmZl
cihBcnJheUJ1ZmZlclZpZXcmKTsKKyAgICBFeGNlcHRpb25Pcjx2b2lkPiBhcHBlbmRCdWZmZXIo
Y29uc3QgQnVmZmVyU291cmNlJik7CiAgICAgRXhjZXB0aW9uT3I8dm9pZD4gYWJvcnQoKTsKICAg
ICBFeGNlcHRpb25Pcjx2b2lkPiByZW1vdmUoZG91YmxlIHN0YXJ0LCBkb3VibGUgZW5kKTsKICAg
ICBFeGNlcHRpb25Pcjx2b2lkPiByZW1vdmUoY29uc3QgTWVkaWFUaW1lJiwgY29uc3QgTWVkaWFU
aW1lJik7CkBAIC0xNTAsNyArMTUwLDcgQEAgcHJpdmF0ZToKICAgICBib29sIGlzUmVtb3ZlZCgp
IGNvbnN0OwogICAgIHZvaWQgc2NoZWR1bGVFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50
TmFtZSk7CiAKLSAgICBFeGNlcHRpb25Pcjx2b2lkPiBhcHBlbmRCdWZmZXJJbnRlcm5hbCh1bnNp
Z25lZCBjaGFyKiwgdW5zaWduZWQpOworICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IGFwcGVuZEJ1ZmZl
ckludGVybmFsKGNvbnN0IHVuc2lnbmVkIGNoYXIqLCB1bnNpZ25lZCk7CiAgICAgdm9pZCBhcHBl
bmRCdWZmZXJUaW1lckZpcmVkKCk7CiAgICAgdm9pZCByZXNldFBhcnNlclN0YXRlKCk7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvU291cmNlQnVmZmVy
LmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvU291cmNlQnVmZmVyLmlk
bAppbmRleCBjZmYxYmI1YWNlOWU5OTdjZWM1MTM2MGZkYTg3NGUzZTBmMGI4MDI0Li45Yzg0N2M3
MmE5NDRiMTVjYzM2OTBiNDU0OGE1NDZhNGUwZTIwZGZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc291cmNlL1NvdXJjZUJ1ZmZlci5pZGwKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9Tb3VyY2VCdWZmZXIuaWRsCkBAIC01Nyw4ICs1Nyw3
IEBACiAgICAgW1NldHRlck1heVRocm93RXhjZXB0aW9uXSBhdHRyaWJ1dGUgdW5yZXN0cmljdGVk
IGRvdWJsZSBhcHBlbmRXaW5kb3dFbmQ7CiAKICAgICAvLyBBcHBlbmQgc2VnbWVudCBkYXRhLgot
ICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdm9pZCBhcHBlbmRCdWZmZXIoQXJyYXlCdWZmZXIgZGF0
YSk7Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSB2b2lkIGFwcGVuZEJ1ZmZlcihBcnJheUJ1ZmZl
clZpZXcgZGF0YSk7CisgICAgW01heVRocm93RXhjZXB0aW9uXSB2b2lkIGFwcGVuZEJ1ZmZlcihC
dWZmZXJTb3VyY2UgZGF0YSk7CiAKICAgICAvLyBBYm9ydCB0aGUgY3VycmVudCBzZWdtZW50IGFw
cGVuZCBzZXF1ZW5jZS4KICAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHZvaWQgYWJvcnQoKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
aiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRl
eCAzNzZkNTczMWNjYjgzMjgxZWViZjViYzM3NzQ3ZjkzOTJhMjQxZWY0Li4zNGIwNWQyZmY1MGRm
Y2RlNDAwMGU1OTM2YWM1MzYzMDJhNjcyMGMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMjU2LDYgKzEyNTYsNyBAQAogCQky
REU3MDAyMzE5MkZFODJBMDBCMDk3NUMgLyogRGlzcGxheVJlZnJlc2hNb25pdG9yTWFjLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyREU3MDAyMjE5MkZF
ODJBMDBCMDk3NUMgLyogRGlzcGxheVJlZnJlc2hNb25pdG9yTWFjLmggKi87IH07CiAJCTJERjUx
MkNEMUQ4NzNFNDcwMDFENjc4MCAvKiBSZXBsYWNlUmFuZ2VXaXRoVGV4dENvbW1hbmQuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkRGNTEyQ0IxRDg3
M0U0NzAwMUQ2NzgwIC8qIFJlcGxhY2VSYW5nZVdpdGhUZXh0Q29tbWFuZC5jcHAgKi87IH07CiAJ
CTJERjUxMkNFMUQ4NzNFNDcwMDFENjc4MCAvKiBSZXBsYWNlUmFuZ2VXaXRoVGV4dENvbW1hbmQu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJERjUxMkND
MUQ4NzNFNDcwMDFENjc4MCAvKiBSZXBsYWNlUmFuZ2VXaXRoVGV4dENvbW1hbmQuaCAqLzsgfTsK
KwkJMkRGQTQ4OEYxREI1NDFEMDAwMzYyQjk5IC8qIEJ1ZmZlclNvdXJjZS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkRGQTQ4OEUxREI1NDFDMjAwMzYy
Qjk5IC8qIEJ1ZmZlclNvdXJjZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCTJFMDg4OEQ0MTE0ODg0OEEwMEFGNDI2NSAvKiBKU0RPTUZvcm1EYXRh
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJFMDg4
OEQyMTE0ODg0OEEwMEFGNDI2NSAvKiBKU0RPTUZvcm1EYXRhLmNwcCAqLzsgfTsKIAkJMkUwODg4
RDUxMTQ4ODQ4QTAwQUY0MjY1IC8qIEpTRE9NRm9ybURhdGEuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJFMDg4OEQzMTE0ODg0OEEwMEFGNDI2NSAvKiBK
U0RPTUZvcm1EYXRhLmggKi87IH07CiAJCTJFMTk1MTZCMUI2NTk4RDIwMERGNkVFRiAvKiBXaGVl
bEV2ZW50RGVsdGFGaWx0ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMkUxOTUxNkExQjY1OThEMjAwREY2RUVGIC8qIFdoZWVsRXZlbnREZWx0YUZp
bHRlci5jcHAgKi87IH07CkBAIC01OTc0LDYgKzU5NzUsNyBAQAogCQlFMTI1RjgzQTE4MjQxMDQ4
MDBEODRDRDkgLyogQ3J5cHRvQWxnb3JpdGhtQWVzQ2JjUGFyYW1zRGVwcmVjYXRlZC5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTEyNUY4MzkxODI0MTA0
ODAwRDg0Q0Q5IC8qIENyeXB0b0FsZ29yaXRobUFlc0NiY1BhcmFtc0RlcHJlY2F0ZWQuaCAqLzsg
fTsKIAkJRTEyNUY4M0QxODI0MTFFNzAwRDg0Q0Q5IC8qIEpTQ3J5cHRvT3BlcmF0aW9uRGF0YS5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMTI1Rjgz
QjE4MjQxMUU3MDBEODRDRDkgLyogSlNDcnlwdG9PcGVyYXRpb25EYXRhLmNwcCAqLzsgfTsKIAkJ
RTEyNUY4M0UxODI0MTFFNzAwRDg0Q0Q5IC8qIEpTQ3J5cHRvT3BlcmF0aW9uRGF0YS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTEyNUY4M0MxODI0MTFF
NzAwRDg0Q0Q5IC8qIEpTQ3J5cHRvT3BlcmF0aW9uRGF0YS5oICovOyB9OworCiAJCUUxMjVGODQx
MTgyNDI1M0EwMEQ4NENEOSAvKiBDcnlwdG9BbGdvcml0aG1BRVNfQ0JDLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxMjVGODNGMTgyNDI1M0EwMEQ4
NENEOSAvKiBDcnlwdG9BbGdvcml0aG1BRVNfQ0JDLmNwcCAqLzsgfTsKIAkJRTEyNUY4NDIxODI0
MjUzQTAwRDg0Q0Q5IC8qIENyeXB0b0FsZ29yaXRobUFFU19DQkMuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxMjVGODQwMTgyNDI1M0EwMEQ4NENEOSAv
KiBDcnlwdG9BbGdvcml0aG1BRVNfQ0JDLmggKi87IH07CiAJCUUxMjVGODQ1MTgyNDI1QzkwMEQ4
NENEOSAvKiBDcnlwdG9BbGdvcml0aG1BRVNfQ0JDTWFjLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxMjVGODQzMTgyNDI1QzkwMEQ4NENEOSAvKiBD
cnlwdG9BbGdvcml0aG1BRVNfQ0JDTWFjLmNwcCAqLzsgfTsKQEAgLTgyMzQsNiArODIzNiw3IEBA
CiAJCTJERTcwMDIyMTkyRkU4MkEwMEIwOTc1QyAvKiBEaXNwbGF5UmVmcmVzaE1vbml0b3JNYWMu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRGlzcGxheVJlZnJlc2hNb25pdG9y
TWFjLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJERjUxMkNCMUQ4NzNFNDcwMDFE
Njc4MCAvKiBSZXBsYWNlUmFuZ2VXaXRoVGV4dENvbW1hbmQuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gUmVwbGFjZVJhbmdlV2l0aFRleHRDb21tYW5kLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkRGNTEyQ0MxRDg3M0U0NzAwMUQ2NzgwIC8qIFJl
cGxhY2VSYW5nZVdpdGhUZXh0Q29tbWFuZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBSZXBsYWNlUmFuZ2VXaXRoVGV4dENvbW1hbmQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJMkRGQTQ4OEUxREI1NDFDMjAwMzYyQjk5IC8qIEJ1ZmZlclNvdXJjZS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBCdWZmZXJTb3VyY2UuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJMkUwODg4QzMxMTQ4ODNBOTAwQUY0MjY1IC8qIERPTUZvcm1EYXRh
LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBET01Gb3JtRGF0YS5pZGw7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTJFMDg4OEQyMTE0ODg0OEEwMEFGNDI2NSAvKiBKU0RPTUZvcm1E
YXRhLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTRE9NRm9ybURh
dGEuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyRTA4ODhEMzExNDg4NDhBMDBB
RjQyNjUgLyogSlNET01Gb3JtRGF0YS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBKU0RPTUZvcm1EYXRhLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yMTQxMyw2
ICsyMTQxNiw3IEBACiAJCQkJMTRERkIzM0YwQTdERjc2MzAwMThGNzY5IC8qIERlcml2ZWQgU291
cmNlcyAqLywKIAkJCQk0OUIzNzYwQTE1QzZDNjg0MDA1OTEzMUQgLyogQXJyYXlWYWx1ZS5jcHAg
Ki8sCiAJCQkJNDlCMzc2MEIxNUM2QzY4NDAwNTkxMzFEIC8qIEFycmF5VmFsdWUuaCAqLywKKwkJ
CQkyREZBNDg4RTFEQjU0MUMyMDAzNjJCOTkgLyogQnVmZmVyU291cmNlLmggKi8sCiAJCQkJQkNE
NTMzNjMwRUQ2ODQ4OTAwODg3NDY4IC8qIENhY2hlZFNjcmlwdFNvdXJjZVByb3ZpZGVyLmggKi8s
CiAJCQkJOTNGOEIzMDYwQTMwMEZFQTAwRjYxQUI4IC8qIENvZGVHZW5lcmF0b3JKUy5wbSAqLywK
IAkJCQkzMTJENjdCMDE1MzU2OTFGMDA1NjNEMEQgLyogRGljdGlvbmFyeS5jcHAgKi8sCkBAIC0y
Njc5Myw2ICsyNjc5Nyw3IEBACiAJCQkJMEZDNEU0MEQxODdGODJFMTAwNDU4ODJDIC8qIFNjcm9s
bGluZ0Nvb3JkaW5hdG9ySU9TLmggaW4gSGVhZGVycyAqLywKIAkJCQk5MzkxQTk5MTE2Mjc0NkNC
MDAyOTczMzAgLyogU2Nyb2xsaW5nQ29vcmRpbmF0b3JNYWMuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTkzQzM4QkZGMTY0NDczQzcwMDA5MUVCMiAvKiBTY3JvbGxpbmdTdGF0ZUZpeGVkTm9kZS5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJMkRGQTQ4OEYxREI1NDFEMDAwMzYyQjk5IC8qIEJ1ZmZlclNvdXJj
ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZFQTNFN0IxOTFCMkZDNTAwMEYxQjU1IC8qIFNjcm9s
bGluZ1N0YXRlRnJhbWVTY3JvbGxpbmdOb2RlLmggaW4gSGVhZGVycyAqLywKIAkJCQk5MzFDQkQw
RDE2MUE0NEU5MDBFNEM4NzQgLyogU2Nyb2xsaW5nU3RhdGVOb2RlLmggaW4gSGVhZGVycyAqLywK
IAkJCQkwRkVBM0U4NDE5MUIzMUJGMDAwRjFCNTUgLyogU2Nyb2xsaW5nU3RhdGVPdmVyZmxvd1Nj
cm9sbGluZ05vZGUuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvZ2VuZXJpYy9JRExUeXBlcy5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvZ2Vu
ZXJpYy9JRExUeXBlcy5oCmluZGV4IGJlODgyNmVjODI0N2U5NmMyYTE4ODE1YjM3M2Y0ZTU3OWMz
OTk4NmIuLjFmZTE2OWZlMTJkY2IyMWU2MjE3YmYyOGRkNzJhMWZhOTY4ZjBjMTUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2dlbmVyaWMvSURMVHlwZXMuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9nZW5lcmljL0lETFR5cGVzLmgKQEAgLTM1LDYgKzM1LDcgQEAg
Y2xhc3MgSlNWYWx1ZTsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBCdWZmZXJTb3Vy
Y2U7CiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVmFsdWU+IGNsYXNzIERPTVByb21pc2U7CiAKIHRlbXBs
YXRlPHR5cGVuYW1lIFQ+CkBAIC0xMTgsNiArMTE5LDcgQEAgc3RydWN0IElETFVuaW9uIDogSURM
VHlwZTxzdGQ6OmV4cGVyaW1lbnRhbDo6dmFyaWFudDx0eXBlbmFtZSBUczo6SW1wbGVtZW50YXRp
b24KICAgICB1c2luZyBUeXBlTGlzdCA9IGJyaWdhbmQ6Omxpc3Q8VHMuLi4+OwogfTsKIAorc3Ry
dWN0IElETEJ1ZmZlclNvdXJjZSA6IElETFR5cGU8QnVmZmVyU291cmNlPiB7IH07CiAKIC8vIEhl
bHBlciBwcmVkaWNhdGVzCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0J1ZmZlclNvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvQnVmZmVyU291cmNl
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uZjEzNTVlM2ZiZTIzMmNiNDIzZTFmNmFlYjI3ODQ1NjEzNTU0OTI0Nwot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0J1ZmZlclNvdXJj
ZS5oCkBAIC0wLDAgKzEsMzYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgSWdhbGlhIFMu
TC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xh
c3MgQnVmZmVyU291cmNlIHsKK3B1YmxpYzoKKyAgICBjb25zdCB1aW50OF90KiBkYXRhOworICAg
IHNpemVfdCBsZW5ndGg7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUNvbnZlcnQuaCBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTRE9NQ29udmVydC5oCmluZGV4IDJhNDcyODhlZjc3MGViMTNlYjQ2
MmM4YWQ4MWZmMTkzZjAwMWRkN2YuLmFmNjA0M2E4MzkwYjc5NzZlOTNmMWQxYmEzZjQ3YWM5NDMy
MDYwNGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQ29udmVy
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQ29udmVydC5oCkBAIC0y
NSw2ICsyNSw3IEBACiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAiQnVmZmVyU291cmNlLmgi
CiAjaW5jbHVkZSAiSURMVHlwZXMuaCIKICNpbmNsdWRlICJKU0RPTUJpbmRpbmcuaCIKIApAQCAt
NjM4LDQgKzYzOSwyNSBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBJRExUeXBlPiB0eXBlbmFtZSBEZXRh
aWw6OlZhcmlhZGljQ29udmVydGVyPElETFR5cGU+OjpSZXN1bHQgYwogICAgIHJldHVybiB7IGxl
bmd0aCwgV1RGTW92ZShyZXN1bHQpIH07CiB9CiAKKy8vIE1BUks6IC0KKy8vIE1BUks6IEJ1ZmZl
clNvdXJjZSB0eXBlCisKK3RlbXBsYXRlPD4gc3RydWN0IENvbnZlcnRlcjxJRExCdWZmZXJTb3Vy
Y2U+IDogRGVmYXVsdENvbnZlcnRlcjxJRExCdWZmZXJTb3VyY2U+IHsKKyAgICB1c2luZyBSZXR1
cm5UeXBlID0gQnVmZmVyU291cmNlOworCisgICAgc3RhdGljIFJldHVyblR5cGUgY29udmVydChK
U0M6OkV4ZWNTdGF0ZSYgc3RhdGUsIEpTQzo6SlNWYWx1ZSB2YWx1ZSkKKyAgICB7CisgICAgICAg
IEpTQzo6Vk0mIHZtID0gc3RhdGUudm0oKTsKKyAgICAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOworCisgICAgICAgIGlmIChKU0M6OkFycmF5QnVmZmVyKiBidWZmZXIg
PSBKU0M6OnRvQXJyYXlCdWZmZXIodmFsdWUpKQorICAgICAgICAgICAgcmV0dXJuIHsgc3RhdGlj
X2Nhc3Q8dWludDhfdCo+KGJ1ZmZlci0+ZGF0YSgpKSwgYnVmZmVyLT5ieXRlTGVuZ3RoKCkgfTsK
KyAgICAgICAgaWYgKFJlZlB0cjxKU0M6OkFycmF5QnVmZmVyVmlldz4gYnVmZmVyVmlldyA9IHRv
QXJyYXlCdWZmZXJWaWV3KHZhbHVlKSkKKyAgICAgICAgICAgIHJldHVybiB7IHN0YXRpY19jYXN0
PHVpbnQ4X3QqPihidWZmZXJWaWV3LT5iYXNlQWRkcmVzcygpKSwgYnVmZmVyVmlldy0+Ynl0ZUxl
bmd0aCgpIH07CisKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IoJnN0YXRlLCBzY29wZSwgQVNDSUlM
aXRlcmFsKCJPbmx5IEFycmF5QnVmZmVyIGFuZCBBcnJheUJ1ZmZlclZpZXcgb2JqZWN0cyBjYW4g
YmUgcGFzc2VkIGFzIEJ1ZmZlclNvdXJjZSBhcmd1bWVudHMiKSk7CisgICAgICAgIHJldHVybiB7
IG51bGxwdHIsIDAgfTsKKyAgICB9Cit9OworCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3IucG0g
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3IucG0KaW5kZXgg
ZDU3ZmQwNTA2N2QyNDM2OWM3NGQxNGI0MjU4N2JiNzVlZTE2Nzk3Zi4uZDc2MjExMGFmNTUxY2I4
YzYwYzk1NDkwOWI5OWFiMzU0Y2ExODYzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yLnBtCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvci5wbQpAQCAtMzcxLDYgKzM3MSw3IEBAIHN1YiBTa2lw
SW5jbHVkZUhlYWRlcgogICAgIHJldHVybiAxIGlmICRvYmplY3QtPklzUHJpbWl0aXZlVHlwZSgk
dHlwZSk7CiAgICAgcmV0dXJuIDEgaWYgJG9iamVjdC0+SXNUeXBlZEFycmF5VHlwZSgkdHlwZSk7
CiAgICAgcmV0dXJuIDEgaWYgJHR5cGUgZXEgIkFycmF5IjsKKyAgICByZXR1cm4gMSBpZiAkdHlw
ZSBlcSAiQnVmZmVyU291cmNlIjsKICAgICByZXR1cm4gMSBpZiAkdHlwZSBlcSAiRE9NU3RyaW5n
IiBvciAkdHlwZSBlcSAiVVNWU3RyaW5nIjsKICAgICByZXR1cm4gMSBpZiAkdHlwZSBlcSAiRE9N
VGltZVN0YW1wIjsKICAgICByZXR1cm4gMSBpZiAkdHlwZSBlcSAiU1ZHTnVtYmVyIjsKQEAgLTg2
Niw2ICs4NjcsNyBAQCBzdWIgSXNXcmFwcGVyVHlwZQogCiAgICAgcmV0dXJuIDAgaWYgISRvYmpl
Y3QtPklzUmVmUHRyVHlwZSgkdHlwZSk7CiAgICAgcmV0dXJuIDAgaWYgJG9iamVjdC0+SXNUeXBl
ZEFycmF5VHlwZSgkdHlwZSk7CisgICAgcmV0dXJuIDAgaWYgJHR5cGUgZXEgIkJ1ZmZlclNvdXJj
ZSI7CiAgICAgcmV0dXJuIDAgaWYgJHR5cGUgZXEgIlVOSU9OIjsKICAgICByZXR1cm4gMCBpZiAk
d2ViQ29yZVR5cGVIYXNoeyR0eXBlfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0gYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQppbmRleCAzODE2OTIyMGQ0YmEyN2RhYTQ5NTdl
MjMzNzk1ODAwMmJlYzQ3NGMzLi44MzJjYmIyMGE0MzFmNzA5ZmNkYjcwODAzODA4ZGI0YTA5NWZj
ZGVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5l
cmF0b3JKUy5wbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5l
cmF0b3JKUy5wbQpAQCAtMzE5LDcgKzMxOSw5IEBAIHN1YiBBZGRDbGFzc0ZvcndhcmRJZk5lZWRl
ZAogCiAgICAgIyBTVkdBbmltYXRlZExlbmd0aC9OdW1iZXIvZXRjLiBhcmUgbm90IGNsYXNzZXMg
c28gdGhleSBjYW4ndCBiZSBmb3J3YXJkIGRlY2xhcmVkIGFzIGNsYXNzZXMuCiAgICAgcmV0dXJu
IGlmICRjb2RlR2VuZXJhdG9yLT5Jc1NWR0FuaW1hdGVkVHlwZSgkaW50ZXJmYWNlTmFtZSk7CisK
ICAgICByZXR1cm4gaWYgJGNvZGVHZW5lcmF0b3ItPklzVHlwZWRBcnJheVR5cGUoJGludGVyZmFj
ZU5hbWUpOworICAgIHJldHVybiBpZiAkaW50ZXJmYWNlTmFtZSBlcSAiQnVmZmVyU291cmNlIjsK
IAogICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICJjbGFzcyAkaW50ZXJmYWNlTmFtZTtcblxuIik7
CiB9CkBAIC00OTkzLDYgKzQ5OTUsNyBAQCBzdWIgR2V0QmFzZUlETFR5cGUKICAgICByZXR1cm4g
IklETFNlcXVlbmNlPCIgLiBHZXRJRExUeXBlKCRpbnRlcmZhY2UsIEB7JGlkbFR5cGUtPnN1YnR5
cGVzfVswXSkgLiAiPiIgaWYgJGNvZGVHZW5lcmF0b3ItPklzU2VxdWVuY2VUeXBlKCRpZGxUeXBl
LT5uYW1lKTsKICAgICByZXR1cm4gIklETEZyb3plbkFycmF5PCIgLiBHZXRJRExUeXBlKCRpbnRl
cmZhY2UsIEB7JGlkbFR5cGUtPnN1YnR5cGVzfVswXSkgLiAiPiIgaWYgJGNvZGVHZW5lcmF0b3It
PklzRnJvemVuQXJyYXlUeXBlKCRpZGxUeXBlLT5uYW1lKTsKICAgICByZXR1cm4gIklETFVuaW9u
PCIgLiBqb2luKCIsICIsIEdldElETFVuaW9uTWVtYmVyVHlwZXMoJGludGVyZmFjZSwgJGlkbFR5
cGUpKSAuICI+IiBpZiAkaWRsVHlwZS0+aXNVbmlvbjsKKyAgICByZXR1cm4gIklETEJ1ZmZlclNv
dXJjZSIgaWYgJGlkbFR5cGUtPm5hbWUgZXEgIkJ1ZmZlclNvdXJjZSI7CiAgICAgcmV0dXJuICJJ
RExJbnRlcmZhY2U8IiAuICRpZGxUeXBlLT5uYW1lIC4gIj4iOwogfQogCkBAIC01MTE0LDYgKzUx
MTcsNyBAQCBzdWIgSXNIYW5kbGVkQnlET01Db252ZXJ0CiAgICAgbXkgJGlkbFR5cGUgPSBzaGlm
dDsKIAogICAgIHJldHVybiAxIGlmICRpZGxUeXBlLT5pc1VuaW9uOworICAgIHJldHVybiAxIGlm
ICRpZGxUeXBlLT5uYW1lIGVxICJCdWZmZXJTb3VyY2UiOwogICAgIHJldHVybiAxIGlmICRpZGxU
eXBlLT5uYW1lIGVxICJhbnkiOwogICAgIHJldHVybiAxIGlmICRpZGxUeXBlLT5uYW1lIGVxICJi
b29sZWFuIjsKICAgICByZXR1cm4gMSBpZiAkY29kZUdlbmVyYXRvci0+SXNJbnRlZ2VyVHlwZSgk
aWRsVHlwZS0+bmFtZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwCmluZGV4IDYxMmE5YmE5ZmFiNTQwMzI0YzY0NWNlZGZk
MGYwODdjN2ZiZTUzZmQuLmM1MmEzOTBmMDFhMjA0NmQ3ZWU5ZTExYTY1YTNkY2IxM2QwMWM2ODAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RPYmouY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RPYmouY3BwCkBAIC01MDMsNiArNTAzLDExIEBAIHRlbXBsYXRlPD4gT3B0aW9uYWw8VGVz
dE9iajo6RGljdGlvbmFyeT4gY29udmVydERpY3Rpb25hcnk8VGVzdE9iajo6RGljdGlvbmFyeT4o
CiAgICAgICAgIHJlc3VsdC5ib29sZWFuV2l0aG91dERlZmF1bHQgPSBjb252ZXJ0PElETEJvb2xl
YW4+KHN0YXRlLCBib29sZWFuV2l0aG91dERlZmF1bHRWYWx1ZSk7CiAgICAgICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04odGhyb3dTY29wZSwgTnVsbG9wdCk7CiAgICAgfQorICAgIEpTVmFsdWUgYnVm
ZmVyU291cmNlVmFsdWVWYWx1ZSA9IGlzTnVsbE9yVW5kZWZpbmVkID8ganNVbmRlZmluZWQoKSA6
IG9iamVjdC0+Z2V0KCZzdGF0ZSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmc3RhdGUsICJidWZm
ZXJTb3VyY2VWYWx1ZSIpKTsKKyAgICBpZiAoIWJ1ZmZlclNvdXJjZVZhbHVlVmFsdWUuaXNVbmRl
ZmluZWQoKSkgeworICAgICAgICByZXN1bHQuYnVmZmVyU291cmNlVmFsdWUgPSBjb252ZXJ0PElE
TEJ1ZmZlclNvdXJjZT4oc3RhdGUsIGJ1ZmZlclNvdXJjZVZhbHVlVmFsdWUpOworICAgICAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIE51bGxvcHQpOworICAgIH0KICAgICBKU1Zh
bHVlIGRpY3Rpb25hcnlNZW1iZXJWYWx1ZSA9IGlzTnVsbE9yVW5kZWZpbmVkID8ganNVbmRlZmlu
ZWQoKSA6IG9iamVjdC0+Z2V0KCZzdGF0ZSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmc3RhdGUs
ICJkaWN0aW9uYXJ5TWVtYmVyIikpOwogICAgIGlmICghZGljdGlvbmFyeU1lbWJlclZhbHVlLmlz
VW5kZWZpbmVkKCkpIHsKICAgICAgICAgYXV0byBkaWN0aW9uYXJ5TWVtYmVyT3B0aW9uYWwgPSBj
b252ZXJ0PElETERpY3Rpb25hcnk8VGVzdE9iajo6RGljdGlvbmFyeVRoYXRTaG91bGRUb2xlcmF0
ZU51bGw+PihzdGF0ZSwgZGljdGlvbmFyeU1lbWJlclZhbHVlKTsKQEAgLTk5Myw2ICs5OTgsNyBA
QCBKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVu
Y3Rpb25Db25kaXRpb25hbE92ZXJsb2FkKAogSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uU2luZ2xlQ29uZGl0aW9uYWxPdmVybG9hZChK
U0M6OkV4ZWNTdGF0ZSopOwogSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVz
dE9ialByb3RvdHlwZUZ1bmN0aW9uQXR0YWNoU2hhZG93Um9vdChKU0M6OkV4ZWNTdGF0ZSopOwog
SlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0
aW9uT3BlcmF0aW9uV2l0aEV4dGVybmFsRGljdGlvbmFyeVBhcmFtZXRlcihKU0M6OkV4ZWNTdGF0
ZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlw
ZUZ1bmN0aW9uQnVmZmVyU291cmNlUGFyYW1ldGVyKEpTQzo6RXhlY1N0YXRlKik7CiBKU0M6OkVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Ub1N0
cmluZyhKU0M6OkV4ZWNTdGF0ZSopOwogSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVG9KU09OKEpTQzo6RXhlY1N0YXRlKik7CiAKQEAg
LTE2MDQsNiArMTYxMCw3IEBAIHN0YXRpYyBjb25zdCBIYXNoVGFibGVWYWx1ZSBKU1Rlc3RPYmpQ
cm90b3R5cGVUYWJsZVZhbHVlc1tdID0KICAgICB7ICJzaW5nbGVDb25kaXRpb25hbE92ZXJsb2Fk
IiwgSlNDOjpGdW5jdGlvbiwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PE5h
dGl2ZUZ1bmN0aW9uPihqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblNpbmdsZUNvbmRpdGlvbmFs
T3ZlcmxvYWQpLCAoaW50cHRyX3QpICgxKSB9IH0sCiAgICAgeyAiYXR0YWNoU2hhZG93Um9vdCIs
IEpTQzo6RnVuY3Rpb24sIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxOYXRp
dmVGdW5jdGlvbj4oanNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25BdHRhY2hTaGFkb3dSb290KSwg
KGludHB0cl90KSAoMSkgfSB9LAogICAgIHsgIm9wZXJhdGlvbldpdGhFeHRlcm5hbERpY3Rpb25h
cnlQYXJhbWV0ZXIiLCBKU0M6OkZ1bmN0aW9uLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3Rh
dGljX2Nhc3Q8TmF0aXZlRnVuY3Rpb24+KGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3BlcmF0
aW9uV2l0aEV4dGVybmFsRGljdGlvbmFyeVBhcmFtZXRlciksIChpbnRwdHJfdCkgKDEpIH0gfSwK
KyAgICB7ICJidWZmZXJTb3VyY2VQYXJhbWV0ZXIiLCBKU0M6OkZ1bmN0aW9uLCBOb0ludHJpbnNp
YywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8TmF0aXZlRnVuY3Rpb24+KGpzVGVzdE9ialByb3Rv
dHlwZUZ1bmN0aW9uQnVmZmVyU291cmNlUGFyYW1ldGVyKSwgKGludHB0cl90KSAoMSkgfSB9LAog
ICAgIHsgInRvU3RyaW5nIiwgSlNDOjpGdW5jdGlvbiwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90
KXN0YXRpY19jYXN0PE5hdGl2ZUZ1bmN0aW9uPihqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblRv
U3RyaW5nKSwgKGludHB0cl90KSAoMCkgfSB9LAogICAgIHsgInRvSlNPTiIsIEpTQzo6RnVuY3Rp
b24sIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxOYXRpdmVGdW5jdGlvbj4o
anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Ub0pTT04pLCAoaW50cHRyX3QpICgwKSB9IH0sCiAj
aWYgRU5BQkxFKENvbmRpdGlvbjEpCkBAIC03NzI5LDYgKzc3MzYsMjYgQEAgc3RhdGljIGlubGlu
ZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3BlcmF0aW9u
V2l0aEV4dGVybmEKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwog
fQogCitzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBl
RnVuY3Rpb25CdWZmZXJTb3VyY2VQYXJhbWV0ZXJDYWxsZXIoSlNDOjpFeGVjU3RhdGUqLCBKU1Rl
c3RPYmoqLCBKU0M6OlRocm93U2NvcGUmKTsKKworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkJ1ZmZlclNvdXJjZVBhcmFtZXRlcihFeGVjU3Rh
dGUqIHN0YXRlKQoreworICAgIHJldHVybiBCaW5kaW5nQ2FsbGVyPEpTVGVzdE9iaj46OmNhbGxP
cGVyYXRpb248anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25CdWZmZXJTb3VyY2VQYXJhbWV0ZXJD
YWxsZXI+KHN0YXRlLCAiYnVmZmVyU291cmNlUGFyYW1ldGVyIik7Cit9CisKK3N0YXRpYyBpbmxp
bmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkJ1ZmZlclNv
dXJjZVBhcmFtZXRlckNhbGxlcihKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIEpTVGVzdE9iaiogY2Fz
dGVkVGhpcywgSlNDOjpUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKQoreworICAgIFVOVVNFRF9QQVJB
TShzdGF0ZSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOworICAgIGF1dG8mIGltcGwg
PSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CisgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5hcmd1bWVu
dENvdW50KCkgPCAxKSkKKyAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgdGhyb3dT
Y29wZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsKKyAgICBhdXRvIGRh
dGEgPSBjb252ZXJ0PElETEJ1ZmZlclNvdXJjZT4oKnN0YXRlLCBzdGF0ZS0+dW5jaGVja2VkQXJn
dW1lbnQoMCkpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpT
VmFsdWUoKSk7CisgICAgaW1wbC5idWZmZXJTb3VyY2VQYXJhbWV0ZXIoV1RGTW92ZShkYXRhKSk7
CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKK30KKwogc3RhdGlj
IGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVG9T
dHJpbmdDYWxsZXIoSlNDOjpFeGVjU3RhdGUqLCBKU1Rlc3RPYmoqLCBKU0M6OlRocm93U2NvcGUm
KTsKIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5j
dGlvblRvU3RyaW5nKEV4ZWNTdGF0ZSogc3RhdGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdE9iai5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvVGVzdE9iai5pZGwKaW5kZXggYWE2YWRmOGI5MzcxYzc0ZTIzYWQ2
ZTIzODU4YWMxMDBhZTdjOWY0Yy4uMTdlZGJmOWNjMjAwZDAzMmU2MWMxNDFiNjYwZjVmMDlhNTg0
OTUyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rl
c3RPYmouaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0
T2JqLmlkbApAQCAtNDE1LDYgKzQxNSw4IEBAIGVudW0gVGVzdENvbmZpZGVuY2UgeyAiaGlnaCIs
ICJraW5kYS1sb3ciIH07CiAgICAgc3RyaW5naWZpZXIgYXR0cmlidXRlIFVTVlN0cmluZyBzdHJp
bmdpZmllckF0dHJpYnV0ZTsKIAogICAgIHNlcmlhbGl6ZXIgPSB7Y3JlYXRlLCByZWFkT25seVN0
cmluZ0F0dHIsIGVudW1BdHRyLCBsb25nQXR0cn07CisKKyAgICB2b2lkIGJ1ZmZlclNvdXJjZVBh
cmFtZXRlcihCdWZmZXJTb3VyY2UgZGF0YSk7CiB9OwogCiAvLyBUaGUgZm9sbG93aW5nIGNvbW1l
bnQgc2hvdWxkIG5vdCBnZW5lcmF0ZSBhbnkgY29kZS4KQEAgLTQ2MCw2ICs0NjIsNyBAQCBkaWN0
aW9uYXJ5IFRlc3REaWN0aW9uYXJ5IHsKICAgICBUZXN0RGljdGlvbmFyeVRoYXRTaG91bGRUb2xl
cmF0ZU51bGwgZGljdGlvbmFyeU1lbWJlcjsKICAgICAobG9uZyBvciBOb2RlKSB1bmlvbk1lbWJl
cjsKICAgICAobG9uZyBvciBOb2RlKT8gbnVsbGFibGVVbmlvbk1lbWJlciA9IG51bGw7CisgICAg
QnVmZmVyU291cmNlIGJ1ZmZlclNvdXJjZVZhbHVlOwogfTsKIAogZGljdGlvbmFyeSBUZXN0RGlj
dGlvbmFyeVRoYXRTaG91bGROb3RUb2xlcmF0ZU51bGwgewo=
</data>

          </attachment>
      

    </bug>

</bugzilla>