<?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>110653</bug_id>
          
          <creation_ts>2013-02-22 15:32:00 -0800</creation_ts>
          <short_desc>IndexedDB: Properly refactor frontend/backend code by #includes</short_desc>
          <delta_ts>2013-03-05 14:37:07 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>111478</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Alec Flett">alecflett</reporter>
          <assigned_to name="Alec Flett">alecflett</assigned_to>
          <cc>dglazkov</cc>
    
    <cc>dgrogan</cc>
    
    <cc>dpranke</cc>
    
    <cc>jsbell</cc>
    
    <cc>peter+ews</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>840065</commentid>
    <comment_count>0</comment_count>
    <who name="Alec Flett">alecflett</who>
    <bug_when>2013-02-22 15:32:00 -0800</bug_when>
    <thetext>IndexedDB: Properly refactor frontend/backend code by #includes</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>840067</commentid>
    <comment_count>1</comment_count>
      <attachid>189849</attachid>
    <who name="Alec Flett">alecflett</who>
    <bug_when>2013-02-22 15:34:43 -0800</bug_when>
    <thetext>Created attachment 189849
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>840068</commentid>
    <comment_count>2</comment_count>
    <who name="Alec Flett">alecflett</who>
    <bug_when>2013-02-22 15:35:35 -0800</bug_when>
    <thetext>jsbell/dgrogan - this is some much-needed code cleanup that you&apos;ll recognize the need for. I need to clean up the changelog, but mind taking a look at the rest of the patch?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>840076</commentid>
    <comment_count>3</comment_count>
      <attachid>189849</attachid>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2013-02-22 15:42:20 -0800</bug_when>
    <thetext>Comment on attachment 189849
Patch

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

Overall lgtm...

&gt; Source/WebCore/Modules/indexeddb/IDBDatabaseBackendInterface.h:81
&gt; +        ReadOnly = 0,

Out of context, these don&apos;t read clearly: IDBDatabaseBackendInterface::ReadOnly doesn&apos;t imply &quot;it&apos;s a read-only *transaction*&quot;. Although it&apos;d be more verbose, how about including &quot;Transaction&quot; in the member names?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>843564</commentid>
    <comment_count>4</comment_count>
      <attachid>190617</attachid>
    <who name="Alec Flett">alecflett</who>
    <bug_when>2013-02-27 15:30:13 -0800</bug_when>
    <thetext>Created attachment 190617
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>843570</commentid>
    <comment_count>5</comment_count>
      <attachid>190617</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-02-27 15:38:02 -0800</bug_when>
    <thetext>Comment on attachment 190617
Patch

Attachment 190617 did not pass chromium-ews (chromium-xvfb):
Output: http://webkit-commit-queue.appspot.com/results/16793153</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>843575</commentid>
    <comment_count>6</comment_count>
      <attachid>190617</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-02-27 15:46:14 -0800</bug_when>
    <thetext>Comment on attachment 190617
Patch

Attachment 190617 did not pass cr-linux-debug-ews (chromium-xvfb):
Output: http://webkit-commit-queue.appspot.com/results/16797128</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>843665</commentid>
    <comment_count>7</comment_count>
      <attachid>190638</attachid>
    <who name="Alec Flett">alecflett</who>
    <bug_when>2013-02-27 20:23:22 -0800</bug_when>
    <thetext>Created attachment 190638
Patch

This time with the right quoting style</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>843667</commentid>
    <comment_count>8</comment_count>
      <attachid>190638</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-02-27 20:29:28 -0800</bug_when>
    <thetext>Comment on attachment 190638
Patch

Attachment 190638 did not pass chromium-ews (chromium-xvfb):
Output: http://webkit-commit-queue.appspot.com/results/16820090</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>843676</commentid>
    <comment_count>9</comment_count>
      <attachid>190638</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-02-27 20:46:29 -0800</bug_when>
    <thetext>Comment on attachment 190638
Patch

Attachment 190638 did not pass cr-linux-debug-ews (chromium-xvfb):
Output: http://webkit-commit-queue.appspot.com/results/16848023</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>843691</commentid>
    <comment_count>10</comment_count>
      <attachid>190644</attachid>
    <who name="Alec Flett">alecflett</who>
    <bug_when>2013-02-27 21:12:17 -0800</bug_when>
    <thetext>Created attachment 190644
Patch

This time with the tests fixed</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>844428</commentid>
    <comment_count>11</comment_count>
      <attachid>190644</attachid>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2013-02-28 13:34:11 -0800</bug_when>
    <thetext>Comment on attachment 190644
Patch

Transaction modes are more readable than in the previous patch. Thanks!

A few nits...

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

&gt; Source/WebCore/ChangeLog:20
&gt; +        (WebCore::IDBBackingStore::Cursor::continueFunction):

Remove or add details to the (parenthesized) lines.

&gt; Source/WebCore/Modules/indexeddb/IndexedDB.h:2
&gt; + * Copyright (C) 2011 Google Inc. All rights reserved.

Isn&apos;t it 2013 ? :)

&gt; Source/WebKit/chromium/tests/IDBDatabaseBackendTest.cpp:28
&gt; +#include &quot;IDBDatabase.h&quot;

Sort/remove extra whitespace.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>844765</commentid>
    <comment_count>12</comment_count>
      <attachid>190876</attachid>
    <who name="Alec Flett">alecflett</who>
    <bug_when>2013-02-28 20:43:22 -0800</bug_when>
    <thetext>Created attachment 190876
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>844771</commentid>
    <comment_count>13</comment_count>
      <attachid>190877</attachid>
    <who name="Alec Flett">alecflett</who>
    <bug_when>2013-02-28 20:49:21 -0800</bug_when>
    <thetext>Created attachment 190877
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>844773</commentid>
    <comment_count>14</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-02-28 20:52:45 -0800</bug_when>
    <thetext>Attachment 190877 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCore/GNUmakefile.list.am&apos;, u&apos;Source/WebCore/Modules/indexeddb/IDBBackingStore.cpp&apos;, u&apos;Source/WebCore/Modules/indexeddb/IDBBackingStore.h&apos;, u&apos;Source/WebCore/Modules/indexeddb/IDBCursor.cpp&apos;, u&apos;Source/WebCore/Modules/indexeddb/IDBCursor.h&apos;, u&apos;Source/WebCore/Modules/indexeddb/IDBCursorBackendImpl.cpp&apos;, u&apos;Source/WebCore/Modules/indexeddb/IDBCursorBackendImpl.h&apos;, u&apos;Source/WebCore/Modules/indexeddb/IDBCursorBackendInterface.h&apos;, u&apos;Source/WebCore/Modules/indexeddb/IDBCursorWithValue.cpp&apos;, u&apos;Source/WebCore/Modules/indexeddb/IDBCursorWithValue.h&apos;, u&apos;Source/WebCore/Modules/indexeddb/IDBDatabase.cpp&apos;, u&apos;Source/WebCore/Modules/indexeddb/IDBDatabase.h&apos;, u&apos;Source/WebCore/Modules/indexeddb/IDBDatabaseBackendImpl.cpp&apos;, u&apos;Source/WebCore/Modules/indexeddb/IDBDatabaseBackendImpl.h&apos;, u&apos;Source/WebCore/Modules/indexeddb/IDBDatabaseBackendInterface.h&apos;, u&apos;Source/WebCore/Modules/indexeddb/IDBFactory.h&apos;, u&apos;Source/WebCore/Modules/indexeddb/IDBIndex.cpp&apos;, u&apos;Source/WebCore/Modules/indexeddb/IDBObjectStore.cpp&apos;, u&apos;Source/WebCore/Modules/indexeddb/IDBRequest.cpp&apos;, u&apos;Source/WebCore/Modules/indexeddb/IDBRequest.h&apos;, u&apos;Source/WebCore/Modules/indexeddb/IDBTransaction.cpp&apos;, u&apos;Source/WebCore/Modules/indexeddb/IDBTransaction.h&apos;, u&apos;Source/WebCore/Modules/indexeddb/IDBTransactionBackendImpl.cpp&apos;, u&apos;Source/WebCore/Modules/indexeddb/IDBTransactionBackendImpl.h&apos;, u&apos;Source/WebCore/Modules/indexeddb/IDBTransactionCoordinator.cpp&apos;, u&apos;Source/WebCore/Modules/indexeddb/IndexedDB.h&apos;, u&apos;Source/WebCore/Target.pri&apos;, u&apos;Source/WebCore/WebCore.gypi&apos;, u&apos;Source/WebKit/chromium/ChangeLog&apos;, u&apos;Source/WebKit/chromium/src/AssertMatchingEnums.cpp&apos;, u&apos;Source/WebKit/chromium/src/IDBDatabaseBackendProxy.cpp&apos;, u&apos;Source/WebKit/chromium/src/IDBDatabaseBackendProxy.h&apos;, u&apos;Source/WebKit/chromium/src/WebIDBCallbacksImpl.cpp&apos;, u&apos;Source/WebKit/chromium/src/WebIDBDatabaseImpl.cpp&apos;, u&apos;Source/WebKit/chromium/tests/IDBAbortOnCorruptTest.cpp&apos;, u&apos;Source/WebKit/chromium/tests/IDBDatabaseBackendTest.cpp&apos;, u&apos;Source/WebKit/chromium/tests/IDBFakeBackingStore.h&apos;]&quot; exit_code: 1
Source/WebKit/chromium/tests/IDBDatabaseBackendTest.cpp:30:  Found header this file implements after other header. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]
Total errors found: 1 in 36 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>844777</commentid>
    <comment_count>15</comment_count>
    <who name="Alec Flett">alecflett</who>
    <bug_when>2013-02-28 20:56:28 -0800</bug_when>
    <thetext>All nits addressed, except for the #include of IDBDatabase.h - webkit-patch started complaining because that test implements IDBDatabase. I couldn&apos;t figure out a way to shut it up. I&apos;ll keep trying while awaiting the final review.

dglazkov@ - r?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>844783</commentid>
    <comment_count>16</comment_count>
      <attachid>190877</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-02-28 21:14:00 -0800</bug_when>
    <thetext>Comment on attachment 190877
Patch

Attachment 190877 did not pass chromium-ews (chromium-xvfb):
Output: http://webkit-commit-queue.appspot.com/results/16824132</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>844784</commentid>
    <comment_count>17</comment_count>
      <attachid>190877</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-02-28 21:14:19 -0800</bug_when>
    <thetext>Comment on attachment 190877
Patch

Attachment 190877 did not pass cr-linux-debug-ews (chromium-xvfb):
Output: http://webkit-commit-queue.appspot.com/results/16778553</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>845145</commentid>
    <comment_count>18</comment_count>
      <attachid>190877</attachid>
    <who name="Peter Beverloo (cr-android ews)">peter+ews</who>
    <bug_when>2013-03-01 07:08:42 -0800</bug_when>
    <thetext>Comment on attachment 190877
Patch

Attachment 190877 did not pass cr-android-ews (chromium-android):
Output: http://webkit-commit-queue.appspot.com/results/16865098</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>845253</commentid>
    <comment_count>19</comment_count>
      <attachid>190980</attachid>
    <who name="Alec Flett">alecflett</who>
    <bug_when>2013-03-01 09:56:22 -0800</bug_when>
    <thetext>Created attachment 190980
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>845609</commentid>
    <comment_count>20</comment_count>
    <who name="Alec Flett">alecflett</who>
    <bug_when>2013-03-01 16:37:32 -0800</bug_when>
    <thetext>dglazkov@ - r?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>847882</commentid>
    <comment_count>21</comment_count>
      <attachid>191529</attachid>
    <who name="Alec Flett">alecflett</who>
    <bug_when>2013-03-05 11:53:18 -0800</bug_when>
    <thetext>Created attachment 191529
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>847902</commentid>
    <comment_count>22</comment_count>
      <attachid>191529</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-03-05 12:13:48 -0800</bug_when>
    <thetext>Comment on attachment 191529
Patch for landing

Clearing flags on attachment: 191529

Committed r144798: &lt;http://trac.webkit.org/changeset/144798&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>847903</commentid>
    <comment_count>23</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-03-05 12:13:53 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>848016</commentid>
    <comment_count>24</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-03-05 13:38:26 -0800</bug_when>
    <thetext>Re-opened since this is blocked by bug 111478</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>848018</commentid>
    <comment_count>25</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2013-03-05 13:39:16 -0800</bug_when>
    <thetext>Looks like this breaks the windows build, so I&apos;m rolling it out per dglazkov (since alec didn&apos;t appear to be around on #irc). Sorry!

http://build.chromium.org/p/chromium.webkit/builders/WebKit%20Win%20Builder/builds/36731/steps/compile/logs/stdio</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>848040</commentid>
    <comment_count>26</comment_count>
      <attachid>191557</attachid>
    <who name="Alec Flett">alecflett</who>
    <bug_when>2013-03-05 13:59:14 -0800</bug_when>
    <thetext>Created attachment 191557
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>848041</commentid>
    <comment_count>27</comment_count>
    <who name="Alec Flett">alecflett</who>
    <bug_when>2013-03-05 13:59:51 -0800</bug_when>
    <thetext>new patch should fix windows.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>848084</commentid>
    <comment_count>28</comment_count>
      <attachid>191557</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-03-05 14:37:03 -0800</bug_when>
    <thetext>Comment on attachment 191557
Patch for landing

Clearing flags on attachment: 191557

Committed r144820: &lt;http://trac.webkit.org/changeset/144820&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>848085</commentid>
    <comment_count>29</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-03-05 14:37:07 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>189849</attachid>
            <date>2013-02-22 15:34:43 -0800</date>
            <delta_ts>2013-02-27 15:30:11 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-110653-20130222153102.patch</filename>
            <type>text/plain</type>
            <size>78829</size>
            <attacher name="Alec Flett">alecflett</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQzNzE1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDNjODA5MzkyOGE4NjA1
MzdhMTMyYzEzNTQyOTU3YmVkM2E0MDQyZS4uOGMzM2QzN2YyNDQwZTMxNzUzODllMDgwOWM4OTU0
NTVjMzI5YTA0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwOSBAQAorMjAxMy0wMi0yMiAgQWxl
YyBGbGV0dCAgPGFsZWNmbGV0dEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgSW5kZXhlZERCOiBQ
cm9wZXJseSByZWZhY3RvciBmcm9udGVuZC9iYWNrZW5kIGNvZGUgYnkgI2luY2x1ZGVzCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTA2NTMKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbmRleGVkREIgaGFz
IGEgZGlzdGluY3QgZnJvbnRlbmQgYW5kIGJhY2tlbmQsIHdpdGggd2VsbCBkZWZpbmVkCisgICAg
ICAgICpJbnRlcmZhY2UgLyAqQ2FsbGJhY2tzIGNsYXNzZXMgZGlzdGluZ3Vpc2hpbmcgdGhlbS4g
VGhpcyBtYWtlcyBzdXJlCisgICAgICAgIFRoYXQgdGhlIGZyb250ZW5kIGFuZCBiYWNrZW5kIGRv
IG5vdCBpbmNsdWRlIGVhY2ggb3RoZXIsIGFuZAorICAgICAgICBmaXhlcyBidWlsZCBwcm9ibGVt
cyB0aGF0IG9jY3VycmVkIGFzIGEgcmVzdWx0LgorCisgICAgICAgIFNwZWNpZmljYWxseSB0aGlz
IG1vdmVzIGVudW1zIG91dCBvZiBJREJDdXJzb3IgYW5kIElEQlRyYW5zYWN0aW9uCisgICAgICAg
IGludG8gSURCQ3Vyc29yQmFja2VuZEludGVyZmFjZSBhbmQgSURCRGF0YWJhc2VCYWNrZW5kSW50
ZXJmYWNlLAorICAgICAgICByZXNwZWN0aXZlbHkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzIChP
T1BTISkuCisKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJCYWNraW5nU3RvcmUuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SURCQmFja2luZ1N0b3JlOjpDdXJzb3I6OmNvbnRpbnVlRnVu
Y3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6b2JqZWN0U3RvcmVDdXJzb3JPcHRpb25zKToKKyAg
ICAgICAgKFdlYkNvcmU6OmluZGV4Q3Vyc29yT3B0aW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpJ
REJCYWNraW5nU3RvcmU6Om9wZW5PYmplY3RTdG9yZUN1cnNvcik6CisgICAgICAgIChXZWJDb3Jl
OjpJREJCYWNraW5nU3RvcmU6Om9wZW5PYmplY3RTdG9yZUtleUN1cnNvcik6CisgICAgICAgIChX
ZWJDb3JlOjpJREJCYWNraW5nU3RvcmU6Om9wZW5JbmRleEtleUN1cnNvcik6CisgICAgICAgIChX
ZWJDb3JlOjpJREJCYWNraW5nU3RvcmU6Om9wZW5JbmRleEN1cnNvcik6CisgICAgICAgICogTW9k
dWxlcy9pbmRleGVkZGIvSURCQmFja2luZ1N0b3JlLmg6CisgICAgICAgIChJREJCYWNraW5nU3Rv
cmUpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpJREJDdXJzb3I6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJDdXJz
b3I6OklEQkN1cnNvcik6CisgICAgICAgIChXZWJDb3JlOjpJREJDdXJzb3I6OmNvbnRpbnVlRnVu
Y3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6SURCQ3Vyc29yOjpzdHJpbmdUb0RpcmVjdGlvbik6
CisgICAgICAgIChXZWJDb3JlOjpJREJDdXJzb3I6OmRpcmVjdGlvblRvU3RyaW5nKToKKyAgICAg
ICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3IuaDoKKyAgICAgICAgKElEQkN1cnNvcik6
CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yQmFja2VuZEltcGwuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SURCQ3Vyc29yQmFja2VuZEltcGw6OmRlbGV0ZUZ1bmN0aW9uKToK
KyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3JCYWNrZW5kSW1wbC5oOgorICAg
ICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvckJhY2tlbmRJbnRlcmZhY2UuaDoKKyAg
ICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3JXaXRoVmFsdWUuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SURCQ3Vyc29yV2l0aFZhbHVlOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29y
ZTo6SURCQ3Vyc29yV2l0aFZhbHVlOjpJREJDdXJzb3JXaXRoVmFsdWUpOgorICAgICAgICAqIE1v
ZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvcldpdGhWYWx1ZS5oOgorICAgICAgICAoSURCQ3Vyc29y
V2l0aFZhbHVlKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZTo6dHJhbnNhY3Rpb24pOgorICAgICAgICAq
IE1vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQmFja2VuZEltcGwuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6T3BlbkN1cnNvck9wZXJhdGlvbjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6
Ok9wZW5DdXJzb3JPcGVyYXRpb246Ok9wZW5DdXJzb3JPcGVyYXRpb24pOgorICAgICAgICAoT3Bl
bkN1cnNvck9wZXJhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZUJhY2tlbmRJ
bXBsOjpjcmVhdGVPYmplY3RTdG9yZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZUJh
Y2tlbmRJbXBsOjpkZWxldGVPYmplY3RTdG9yZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRh
YmFzZUJhY2tlbmRJbXBsOjpjcmVhdGVJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRh
YmFzZUJhY2tlbmRJbXBsOjpkZWxldGVJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpHZXRPcGVy
YXRpb246OnBlcmZvcm0pOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2VCYWNrZW5kSW1w
bDo6cHV0KToKKyAgICAgICAgKFdlYkNvcmU6OlB1dE9wZXJhdGlvbjo6cGVyZm9ybSk6CisgICAg
ICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpzZXRJbmRleEtleXMpOgorICAg
ICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6b3BlbkN1cnNvcik6CisgICAg
ICAgIChXZWJDb3JlOjpPcGVuQ3Vyc29yT3BlcmF0aW9uOjpwZXJmb3JtKToKKyAgICAgICAgKFdl
YkNvcmU6OkNvdW50T3BlcmF0aW9uOjpwZXJmb3JtKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkRh
dGFiYXNlQmFja2VuZEltcGw6OmRlbGV0ZVJhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OkRlbGV0
ZVJhbmdlT3BlcmF0aW9uOjpwZXJmb3JtKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNl
QmFja2VuZEltcGw6OmNsZWFyKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlQmFja2Vu
ZEltcGw6OnRyYW5zYWN0aW9uU3RhcnRlZCk6CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFz
ZUJhY2tlbmRJbXBsOjp0cmFuc2FjdGlvbkZpbmlzaGVkKToKKyAgICAgICAgKFdlYkNvcmU6OklE
QkRhdGFiYXNlQmFja2VuZEltcGw6OnRyYW5zYWN0aW9uRmluaXNoZWRBbmRBYm9ydEZpcmVkKToK
KyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlQmFja2VuZEltcGw6OnRyYW5zYWN0aW9uRmlu
aXNoZWRBbmRDb21wbGV0ZUZpcmVkKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlQmFj
a2VuZEltcGw6OmNyZWF0ZVRyYW5zYWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFi
YXNlQmFja2VuZEltcGw6OnJ1bkludFZlcnNpb25DaGFuZ2VUcmFuc2FjdGlvbik6CisgICAgICAg
ICogTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VCYWNrZW5kSW1wbC5oOgorICAgICAgICAo
SURCRGF0YWJhc2VCYWNrZW5kSW1wbCk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURC
RGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlLmg6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIv
SURCSW5kZXguY3BwOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJJ
bmRleDo6b3BlbkN1cnNvcik6CisgICAgICAgIChXZWJDb3JlOjpJREJJbmRleDo6b3BlbktleUN1
cnNvcik6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmUuY3BwOgor
ICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJPYmplY3RTdG9yZTo6b3Bl
bkN1cnNvcik6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCUmVxdWVzdC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpJREJSZXF1ZXN0OjpJREJSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNv
cmU6OklEQlJlcXVlc3Q6OnNldEN1cnNvckRldGFpbHMpOgorICAgICAgICAqIE1vZHVsZXMvaW5k
ZXhlZGRiL0lEQlJlcXVlc3QuaDoKKyAgICAgICAgKElEQlJlcXVlc3QpOgorICAgICAgICAqIE1v
ZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklE
QlRyYW5zYWN0aW9uOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb246
OklEQlRyYW5zYWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uOjpzdHJp
bmdUb01vZGUpOgorICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb246Om1vZGVUb1N0cmlu
Zyk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb24uaDoKKyAgICAg
ICAgKFdlYkNvcmUpOgorICAgICAgICAoSURCVHJhbnNhY3Rpb24pOgorICAgICAgICAoV2ViQ29y
ZTo6SURCVHJhbnNhY3Rpb246OmlzUmVhZE9ubHkpOgorICAgICAgICAoV2ViQ29yZTo6SURCVHJh
bnNhY3Rpb246OmlzVmVyc2lvbkNoYW5nZSk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIv
SURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFu
c2FjdGlvbkJhY2tlbmRJbXBsOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNh
Y3Rpb25CYWNrZW5kSW1wbDo6SURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbCk6CisgICAgICAgICog
TW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbC5oOgorICAgICAgICAo
SURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2Fj
dGlvbkJhY2tlbmRJbXBsOjptb2RlKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJU
cmFuc2FjdGlvbkNvb3JkaW5hdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0
aW9uQ29vcmRpbmF0b3I6OnByb2Nlc3NTdGFydGVkVHJhbnNhY3Rpb25zKToKKyAgICAgICAgKFdl
YkNvcmU6OklEQlRyYW5zYWN0aW9uQ29vcmRpbmF0b3I6OmNhblJ1blRyYW5zYWN0aW9uKToKKwog
MjAxMy0wMi0yMiAgQmFsYXpzIEtlbGVtZW4gIDxrYmFsYXpzQHdlYmtpdC5vcmc+CiAKICAgICAg
ICAgW0Nvb3JkR2Z4XSBNaW5vciBjbGVhbnVwIGluIENvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZTo6
cGFpbnRUb0dyYXBoaWNzQ29udGV4dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCAwZGMx
M2RiZDA3NDg1OTRhYzE3MjEyMTFmYjEwNTVmZjVhMTQ4NWEyLi4yZGQwMGI2ZmI5ODE2YzU0NTk3
MWFjOGRlYzllNjQ5ZWZiNDAwMDNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDI0IEBACisyMDEzLTAyLTIyICBBbGVjIEZsZXR0ICA8YWxlY2ZsZXR0QGNocm9taXVtLm9y
Zz4KKworICAgICAgICBJbmRleGVkREI6IFByb3Blcmx5IHJlZmFjdG9yIGZyb250ZW5kL2JhY2tl
bmQgY29kZSBieSAjaW5jbHVkZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTExMDY1MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIENsZWFuIHVwIHRoZSBmcm9udGVuZC9iYWNrZW5kIFdlYklEQiogaW1wbGVt
ZW50YXRpb25zIHRvCisgICAgICAgIG1hdGNoIHRoZSBjaGFuZ2VzIHRvIHdlYmtpdC4KKworICAg
ICAgICAqIHNyYy9Bc3NlcnRNYXRjaGluZ0VudW1zLmNwcDoKKyAgICAgICAgKiBzcmMvSURCRGF0
YWJhc2VCYWNrZW5kUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpJREJEYXRhYmFzZUJhY2tl
bmRQcm94eTo6b3BlbkN1cnNvcik6CisgICAgICAgICogc3JjL0lEQkRhdGFiYXNlQmFja2VuZFBy
b3h5Lmg6CisgICAgICAgIChJREJEYXRhYmFzZUJhY2tlbmRQcm94eSk6CisgICAgICAgICogc3Jj
L1dlYklEQkNhbGxiYWNrc0ltcGwuY3BwOgorICAgICAgICAqIHNyYy9XZWJJREJEYXRhYmFzZUlt
cGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJEYXRhYmFzZUltcGw6Om9wZW5DdXJzb3Ip
OgorICAgICAgICAqIHRlc3RzL0lEQkRhdGFiYXNlQmFja2VuZFRlc3QuY3BwOgorICAgICAgICAq
IHRlc3RzL0lEQkZha2VCYWNraW5nU3RvcmUuaDoKKwogMjAxMy0wMi0yMSAgQWxlYyBGbGV0dCAg
PGFsZWNmbGV0dEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgSW5kZXhlZERCOiBJbXBsZW1lbnQg
U2hhcmVkQnVmZmVyIHZlcnNpb24gb2YgcHV0KCkgLyBvblN1Y2Nlc3MoKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQmFja2luZ1N0b3JlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkJhY2tpbmdTdG9yZS5jcHAKaW5kZXgg
MzcwY2MxNTk1ZmZmZjdjZmExOWUwNDcxZmE0YWViMjU3MzkzY2ZlNi4uYzJjZjhjNjUxMWQ0MTk2
YWI4YmNhOTczOGQ2YzlmNjZhYTlkYzRiNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvSURCQmFja2luZ1N0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9JREJCYWNraW5nU3RvcmUuY3BwCkBAIC0xMjc5LDcgKzEyNzksNyBA
QCBib29sIElEQkJhY2tpbmdTdG9yZTo6Q3Vyc29yOjpjb250aW51ZUZ1bmN0aW9uKGNvbnN0IElE
QktleSoga2V5LCBJdGVyYXRvclN0YXRlCiB7CiAgICAgUmVmUHRyPElEQktleT4gcHJldmlvdXNL
ZXkgPSBtX2N1cnJlbnRLZXk7CiAKLSAgICAvLyBXaGVuIGl0ZXJhdGluZyB3aXRoIFBSRVZfTk9f
RFVQTElDQVRFLCBzcGVjIHJlcXVpcmVzIHRoYXQgdGhlCisgICAgLy8gV2hlbiBpdGVyYXRpbmcg
d2l0aCBQcmV2Tm9EdXBsaWNhdGUsIHNwZWMgcmVxdWlyZXMgdGhhdCB0aGUKICAgICAvLyB2YWx1
ZSB3ZSB5aWVsZCBmb3IgZWFjaCBrZXkgaXMgdGhlIGZpcnN0IGR1cGxpY2F0ZSBpbiBmb3J3YXJk
cwogICAgIC8vIG9yZGVyLgogICAgIFJlZlB0cjxJREJLZXk+IGxhc3REdXBsaWNhdGVLZXk7CkBA
IC0xNjg5LDEyICsxNjg5LDEyIEBAIGJvb2wgSW5kZXhDdXJzb3JJbXBsOjpsb2FkQ3VycmVudFJv
dygpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgb2JqZWN0U3RvcmVDdXJzb3JPcHRpb25z
KExldmVsREJUcmFuc2FjdGlvbiogdHJhbnNhY3Rpb24sIGludDY0X3QgZGF0YWJhc2VJZCwgaW50
NjRfdCBvYmplY3RTdG9yZUlkLCBjb25zdCBJREJLZXlSYW5nZSogcmFuZ2UsIElEQkN1cnNvcjo6
RGlyZWN0aW9uIGRpcmVjdGlvbiwgSURCQmFja2luZ1N0b3JlOjpDdXJzb3I6OkN1cnNvck9wdGlv
bnMmIGN1cnNvck9wdGlvbnMpCitib29sIG9iamVjdFN0b3JlQ3Vyc29yT3B0aW9ucyhMZXZlbERC
VHJhbnNhY3Rpb24qIHRyYW5zYWN0aW9uLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2Jq
ZWN0U3RvcmVJZCwgY29uc3QgSURCS2V5UmFuZ2UqIHJhbmdlLCBJREJDdXJzb3JCYWNrZW5kSW50
ZXJmYWNlOjpEaXJlY3Rpb24gZGlyZWN0aW9uLCBJREJCYWNraW5nU3RvcmU6OkN1cnNvcjo6Q3Vy
c29yT3B0aW9ucyYgY3Vyc29yT3B0aW9ucykKIHsKICAgICBib29sIGxvd2VyQm91bmQgPSByYW5n
ZSAmJiByYW5nZS0+bG93ZXIoKTsKICAgICBib29sIHVwcGVyQm91bmQgPSByYW5nZSAmJiByYW5n
ZS0+dXBwZXIoKTsKLSAgICBjdXJzb3JPcHRpb25zLmZvcndhcmQgPSAoZGlyZWN0aW9uID09IElE
QkN1cnNvcjo6TkVYVF9OT19EVVBMSUNBVEUgfHwgZGlyZWN0aW9uID09IElEQkN1cnNvcjo6TkVY
VCk7Ci0gICAgY3Vyc29yT3B0aW9ucy51bmlxdWUgPSAoZGlyZWN0aW9uID09IElEQkN1cnNvcjo6
TkVYVF9OT19EVVBMSUNBVEUgfHwgZGlyZWN0aW9uID09IElEQkN1cnNvcjo6UFJFVl9OT19EVVBM
SUNBVEUpOworICAgIGN1cnNvck9wdGlvbnMuZm9yd2FyZCA9IChkaXJlY3Rpb24gPT0gSURCQ3Vy
c29yQmFja2VuZEludGVyZmFjZTo6TmV4dE5vRHVwbGljYXRlIHx8IGRpcmVjdGlvbiA9PSBJREJD
dXJzb3JCYWNrZW5kSW50ZXJmYWNlOjpOZXh0KTsKKyAgICBjdXJzb3JPcHRpb25zLnVuaXF1ZSA9
IChkaXJlY3Rpb24gPT0gSURCQ3Vyc29yQmFja2VuZEludGVyZmFjZTo6TmV4dE5vRHVwbGljYXRl
IHx8IGRpcmVjdGlvbiA9PSBJREJDdXJzb3JCYWNrZW5kSW50ZXJmYWNlOjpQcmV2Tm9EdXBsaWNh
dGUpOwogCiAgICAgaWYgKCFsb3dlckJvdW5kKSB7CiAgICAgICAgIGN1cnNvck9wdGlvbnMubG93
S2V5ID0gT2JqZWN0U3RvcmVEYXRhS2V5OjplbmNvZGUoZGF0YWJhc2VJZCwgb2JqZWN0U3RvcmVJ
ZCwgbWluSURCS2V5KCkpOwpAQCAtMTczNiwxMyArMTczNiwxMyBAQCBib29sIG9iamVjdFN0b3Jl
Q3Vyc29yT3B0aW9ucyhMZXZlbERCVHJhbnNhY3Rpb24qIHRyYW5zYWN0aW9uLCBpbnQ2NF90IGRh
dGFiYXNlSQogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIGluZGV4Q3Vyc29yT3B0aW9ucyhM
ZXZlbERCVHJhbnNhY3Rpb24qIHRyYW5zYWN0aW9uLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0
X3Qgb2JqZWN0U3RvcmVJZCwgaW50NjRfdCBpbmRleElkLCBjb25zdCBJREJLZXlSYW5nZSogcmFu
Z2UsIElEQkN1cnNvcjo6RGlyZWN0aW9uIGRpcmVjdGlvbiwgSURCQmFja2luZ1N0b3JlOjpDdXJz
b3I6OkN1cnNvck9wdGlvbnMmIGN1cnNvck9wdGlvbnMpCitib29sIGluZGV4Q3Vyc29yT3B0aW9u
cyhMZXZlbERCVHJhbnNhY3Rpb24qIHRyYW5zYWN0aW9uLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGlu
dDY0X3Qgb2JqZWN0U3RvcmVJZCwgaW50NjRfdCBpbmRleElkLCBjb25zdCBJREJLZXlSYW5nZSog
cmFuZ2UsIElEQkN1cnNvckJhY2tlbmRJbnRlcmZhY2U6OkRpcmVjdGlvbiBkaXJlY3Rpb24sIElE
QkJhY2tpbmdTdG9yZTo6Q3Vyc29yOjpDdXJzb3JPcHRpb25zJiBjdXJzb3JPcHRpb25zKQogewog
ICAgIEFTU0VSVCh0cmFuc2FjdGlvbik7CiAgICAgYm9vbCBsb3dlckJvdW5kID0gcmFuZ2UgJiYg
cmFuZ2UtPmxvd2VyKCk7CiAgICAgYm9vbCB1cHBlckJvdW5kID0gcmFuZ2UgJiYgcmFuZ2UtPnVw
cGVyKCk7Ci0gICAgY3Vyc29yT3B0aW9ucy5mb3J3YXJkID0gKGRpcmVjdGlvbiA9PSBJREJDdXJz
b3I6Ok5FWFRfTk9fRFVQTElDQVRFIHx8IGRpcmVjdGlvbiA9PSBJREJDdXJzb3I6Ok5FWFQpOwot
ICAgIGN1cnNvck9wdGlvbnMudW5pcXVlID0gKGRpcmVjdGlvbiA9PSBJREJDdXJzb3I6Ok5FWFRf
Tk9fRFVQTElDQVRFIHx8IGRpcmVjdGlvbiA9PSBJREJDdXJzb3I6OlBSRVZfTk9fRFVQTElDQVRF
KTsKKyAgICBjdXJzb3JPcHRpb25zLmZvcndhcmQgPSAoZGlyZWN0aW9uID09IElEQkN1cnNvckJh
Y2tlbmRJbnRlcmZhY2U6Ok5leHROb0R1cGxpY2F0ZSB8fCBkaXJlY3Rpb24gPT0gSURCQ3Vyc29y
QmFja2VuZEludGVyZmFjZTo6TmV4dCk7CisgICAgY3Vyc29yT3B0aW9ucy51bmlxdWUgPSAoZGly
ZWN0aW9uID09IElEQkN1cnNvckJhY2tlbmRJbnRlcmZhY2U6Ok5leHROb0R1cGxpY2F0ZSB8fCBk
aXJlY3Rpb24gPT0gSURCQ3Vyc29yQmFja2VuZEludGVyZmFjZTo6UHJldk5vRHVwbGljYXRlKTsK
IAogICAgIGlmICghbG93ZXJCb3VuZCkgewogICAgICAgICBjdXJzb3JPcHRpb25zLmxvd0tleSA9
IEluZGV4RGF0YUtleTo6ZW5jb2RlTWluS2V5KGRhdGFiYXNlSWQsIG9iamVjdFN0b3JlSWQsIGlu
ZGV4SWQpOwpAQCAtMTc3OSw3ICsxNzc5LDcgQEAgYm9vbCBpbmRleEN1cnNvck9wdGlvbnMoTGV2
ZWxEQlRyYW5zYWN0aW9uKiB0cmFuc2FjdGlvbiwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQKICAg
ICByZXR1cm4gdHJ1ZTsKIH0KIAotUGFzc1JlZlB0cjxJREJCYWNraW5nU3RvcmU6OkN1cnNvcj4g
SURCQmFja2luZ1N0b3JlOjpvcGVuT2JqZWN0U3RvcmVDdXJzb3IoSURCQmFja2luZ1N0b3JlOjpU
cmFuc2FjdGlvbiogdHJhbnNhY3Rpb24sIGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmpl
Y3RTdG9yZUlkLCBjb25zdCBJREJLZXlSYW5nZSogcmFuZ2UsIElEQkN1cnNvcjo6RGlyZWN0aW9u
IGRpcmVjdGlvbikKK1Bhc3NSZWZQdHI8SURCQmFja2luZ1N0b3JlOjpDdXJzb3I+IElEQkJhY2tp
bmdTdG9yZTo6b3Blbk9iamVjdFN0b3JlQ3Vyc29yKElEQkJhY2tpbmdTdG9yZTo6VHJhbnNhY3Rp
b24qIHRyYW5zYWN0aW9uLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJ
ZCwgY29uc3QgSURCS2V5UmFuZ2UqIHJhbmdlLCBJREJDdXJzb3JCYWNrZW5kSW50ZXJmYWNlOjpE
aXJlY3Rpb24gZGlyZWN0aW9uKQogewogICAgIElEQl9UUkFDRSgiSURCQmFja2luZ1N0b3JlOjpv
cGVuT2JqZWN0U3RvcmVDdXJzb3IiKTsKICAgICBMZXZlbERCVHJhbnNhY3Rpb24qIGxldmVsREJU
cmFuc2FjdGlvbiA9IElEQkJhY2tpbmdTdG9yZTo6VHJhbnNhY3Rpb246OmxldmVsREJUcmFuc2Fj
dGlvbkZyb20odHJhbnNhY3Rpb24pOwpAQCAtMTc5Myw3ICsxNzkzLDcgQEAgUGFzc1JlZlB0cjxJ
REJCYWNraW5nU3RvcmU6OkN1cnNvcj4gSURCQmFja2luZ1N0b3JlOjpvcGVuT2JqZWN0U3RvcmVD
dXJzb3IoSURCQmEKICAgICByZXR1cm4gY3Vyc29yLnJlbGVhc2UoKTsKIH0KIAotUGFzc1JlZlB0
cjxJREJCYWNraW5nU3RvcmU6OkN1cnNvcj4gSURCQmFja2luZ1N0b3JlOjpvcGVuT2JqZWN0U3Rv
cmVLZXlDdXJzb3IoSURCQmFja2luZ1N0b3JlOjpUcmFuc2FjdGlvbiogdHJhbnNhY3Rpb24sIGlu
dDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBjb25zdCBJREJLZXlSYW5n
ZSogcmFuZ2UsIElEQkN1cnNvcjo6RGlyZWN0aW9uIGRpcmVjdGlvbikKK1Bhc3NSZWZQdHI8SURC
QmFja2luZ1N0b3JlOjpDdXJzb3I+IElEQkJhY2tpbmdTdG9yZTo6b3Blbk9iamVjdFN0b3JlS2V5
Q3Vyc29yKElEQkJhY2tpbmdTdG9yZTo6VHJhbnNhY3Rpb24qIHRyYW5zYWN0aW9uLCBpbnQ2NF90
IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgY29uc3QgSURCS2V5UmFuZ2UqIHJh
bmdlLCBJREJDdXJzb3JCYWNrZW5kSW50ZXJmYWNlOjpEaXJlY3Rpb24gZGlyZWN0aW9uKQogewog
ICAgIElEQl9UUkFDRSgiSURCQmFja2luZ1N0b3JlOjpvcGVuT2JqZWN0U3RvcmVLZXlDdXJzb3Ii
KTsKICAgICBMZXZlbERCVHJhbnNhY3Rpb24qIGxldmVsREJUcmFuc2FjdGlvbiA9IElEQkJhY2tp
bmdTdG9yZTo6VHJhbnNhY3Rpb246OmxldmVsREJUcmFuc2FjdGlvbkZyb20odHJhbnNhY3Rpb24p
OwpAQCAtMTgwNyw3ICsxODA3LDcgQEAgUGFzc1JlZlB0cjxJREJCYWNraW5nU3RvcmU6OkN1cnNv
cj4gSURCQmFja2luZ1N0b3JlOjpvcGVuT2JqZWN0U3RvcmVLZXlDdXJzb3IoSUQKICAgICByZXR1
cm4gY3Vyc29yLnJlbGVhc2UoKTsKIH0KIAotUGFzc1JlZlB0cjxJREJCYWNraW5nU3RvcmU6OkN1
cnNvcj4gSURCQmFja2luZ1N0b3JlOjpvcGVuSW5kZXhLZXlDdXJzb3IoSURCQmFja2luZ1N0b3Jl
OjpUcmFuc2FjdGlvbiogdHJhbnNhY3Rpb24sIGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBv
YmplY3RTdG9yZUlkLCBpbnQ2NF90IGluZGV4SWQsIGNvbnN0IElEQktleVJhbmdlKiByYW5nZSwg
SURCQ3Vyc29yOjpEaXJlY3Rpb24gZGlyZWN0aW9uKQorUGFzc1JlZlB0cjxJREJCYWNraW5nU3Rv
cmU6OkN1cnNvcj4gSURCQmFja2luZ1N0b3JlOjpvcGVuSW5kZXhLZXlDdXJzb3IoSURCQmFja2lu
Z1N0b3JlOjpUcmFuc2FjdGlvbiogdHJhbnNhY3Rpb24sIGludDY0X3QgZGF0YWJhc2VJZCwgaW50
NjRfdCBvYmplY3RTdG9yZUlkLCBpbnQ2NF90IGluZGV4SWQsIGNvbnN0IElEQktleVJhbmdlKiBy
YW5nZSwgSURCQ3Vyc29yQmFja2VuZEludGVyZmFjZTo6RGlyZWN0aW9uIGRpcmVjdGlvbikKIHsK
ICAgICBJREJfVFJBQ0UoIklEQkJhY2tpbmdTdG9yZTo6b3BlbkluZGV4S2V5Q3Vyc29yIik7CiAg
ICAgTGV2ZWxEQlRyYW5zYWN0aW9uKiBsZXZlbERCVHJhbnNhY3Rpb24gPSBJREJCYWNraW5nU3Rv
cmU6OlRyYW5zYWN0aW9uOjpsZXZlbERCVHJhbnNhY3Rpb25Gcm9tKHRyYW5zYWN0aW9uKTsKQEAg
LTE4MjEsNyArMTgyMSw3IEBAIFBhc3NSZWZQdHI8SURCQmFja2luZ1N0b3JlOjpDdXJzb3I+IElE
QkJhY2tpbmdTdG9yZTo6b3BlbkluZGV4S2V5Q3Vyc29yKElEQkJhY2tpCiAgICAgcmV0dXJuIGN1
cnNvci5yZWxlYXNlKCk7CiB9CiAKLVBhc3NSZWZQdHI8SURCQmFja2luZ1N0b3JlOjpDdXJzb3I+
IElEQkJhY2tpbmdTdG9yZTo6b3BlbkluZGV4Q3Vyc29yKElEQkJhY2tpbmdTdG9yZTo6VHJhbnNh
Y3Rpb24qIHRyYW5zYWN0aW9uLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3Rv
cmVJZCwgaW50NjRfdCBpbmRleElkLCBjb25zdCBJREJLZXlSYW5nZSogcmFuZ2UsIElEQkN1cnNv
cjo6RGlyZWN0aW9uIGRpcmVjdGlvbikKK1Bhc3NSZWZQdHI8SURCQmFja2luZ1N0b3JlOjpDdXJz
b3I+IElEQkJhY2tpbmdTdG9yZTo6b3BlbkluZGV4Q3Vyc29yKElEQkJhY2tpbmdTdG9yZTo6VHJh
bnNhY3Rpb24qIHRyYW5zYWN0aW9uLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0
U3RvcmVJZCwgaW50NjRfdCBpbmRleElkLCBjb25zdCBJREJLZXlSYW5nZSogcmFuZ2UsIElEQkN1
cnNvckJhY2tlbmRJbnRlcmZhY2U6OkRpcmVjdGlvbiBkaXJlY3Rpb24pCiB7CiAgICAgSURCX1RS
QUNFKCJJREJCYWNraW5nU3RvcmU6Om9wZW5JbmRleEN1cnNvciIpOwogICAgIExldmVsREJUcmFu
c2FjdGlvbiogbGV2ZWxEQlRyYW5zYWN0aW9uID0gSURCQmFja2luZ1N0b3JlOjpUcmFuc2FjdGlv
bjo6bGV2ZWxEQlRyYW5zYWN0aW9uRnJvbSh0cmFuc2FjdGlvbik7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJCYWNraW5nU3RvcmUuaCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkJhY2tpbmdTdG9yZS5oCmluZGV4IDhiNDliYzhh
NDIxYzYwNjFiZWNhZjYwN2JjZWI4ZTMxYzA2Nzc1M2QuLmFjODVkZTVkMDkzNjU1YThmZjU1MWRj
ZDZmZWUzMzYyYzY5NzgzNDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL0lEQkJhY2tpbmdTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL0lEQkJhY2tpbmdTdG9yZS5oCkBAIC0yOCw3ICsyOCw3IEBACiAKICNpZiBFTkFCTEUo
SU5ERVhFRF9EQVRBQkFTRSkKIAotI2luY2x1ZGUgIklEQkN1cnNvci5oIgorI2luY2x1ZGUgIklE
QkN1cnNvckJhY2tlbmRJbnRlcmZhY2UuaCIKICNpbmNsdWRlICJJREJNZXRhZGF0YS5oIgogI2lu
Y2x1ZGUgIkxldmVsREJUcmFuc2FjdGlvbi5oIgogI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KQEAg
LTEzOCwxMCArMTM4LDEwIEBAIHB1YmxpYzoKICAgICAgICAgSURCQmFja2luZ1N0b3JlOjpSZWNv
cmRJZGVudGlmaWVyIG1fcmVjb3JkSWRlbnRpZmllcjsKICAgICB9OwogCi0gICAgdmlydHVhbCBQ
YXNzUmVmUHRyPEN1cnNvcj4gb3Blbk9iamVjdFN0b3JlS2V5Q3Vyc29yKElEQkJhY2tpbmdTdG9y
ZTo6VHJhbnNhY3Rpb24qLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJ
ZCwgY29uc3QgSURCS2V5UmFuZ2UqLCBJREJDdXJzb3I6OkRpcmVjdGlvbik7Ci0gICAgdmlydHVh
bCBQYXNzUmVmUHRyPEN1cnNvcj4gb3Blbk9iamVjdFN0b3JlQ3Vyc29yKElEQkJhY2tpbmdTdG9y
ZTo6VHJhbnNhY3Rpb24qLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJ
ZCwgY29uc3QgSURCS2V5UmFuZ2UqLCBJREJDdXJzb3I6OkRpcmVjdGlvbik7Ci0gICAgdmlydHVh
bCBQYXNzUmVmUHRyPEN1cnNvcj4gb3BlbkluZGV4S2V5Q3Vyc29yKElEQkJhY2tpbmdTdG9yZTo6
VHJhbnNhY3Rpb24qLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwg
aW50NjRfdCBpbmRleElkLCBjb25zdCBJREJLZXlSYW5nZSosIElEQkN1cnNvcjo6RGlyZWN0aW9u
KTsKLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8Q3Vyc29yPiBvcGVuSW5kZXhDdXJzb3IoSURCQmFj
a2luZ1N0b3JlOjpUcmFuc2FjdGlvbiosIGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmpl
Y3RTdG9yZUlkLCBpbnQ2NF90IGluZGV4SWQsIGNvbnN0IElEQktleVJhbmdlKiwgSURCQ3Vyc29y
OjpEaXJlY3Rpb24pOworICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxDdXJzb3I+IG9wZW5PYmplY3RT
dG9yZUtleUN1cnNvcihJREJCYWNraW5nU3RvcmU6OlRyYW5zYWN0aW9uKiwgaW50NjRfdCBkYXRh
YmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGNvbnN0IElEQktleVJhbmdlKiwgSURCQ3Vy
c29yQmFja2VuZEludGVyZmFjZTo6RGlyZWN0aW9uKTsKKyAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8
Q3Vyc29yPiBvcGVuT2JqZWN0U3RvcmVDdXJzb3IoSURCQmFja2luZ1N0b3JlOjpUcmFuc2FjdGlv
biosIGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBjb25zdCBJREJL
ZXlSYW5nZSosIElEQkN1cnNvckJhY2tlbmRJbnRlcmZhY2U6OkRpcmVjdGlvbik7CisgICAgdmly
dHVhbCBQYXNzUmVmUHRyPEN1cnNvcj4gb3BlbkluZGV4S2V5Q3Vyc29yKElEQkJhY2tpbmdTdG9y
ZTo6VHJhbnNhY3Rpb24qLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJ
ZCwgaW50NjRfdCBpbmRleElkLCBjb25zdCBJREJLZXlSYW5nZSosIElEQkN1cnNvckJhY2tlbmRJ
bnRlcmZhY2U6OkRpcmVjdGlvbik7CisgICAgdmlydHVhbCBQYXNzUmVmUHRyPEN1cnNvcj4gb3Bl
bkluZGV4Q3Vyc29yKElEQkJhY2tpbmdTdG9yZTo6VHJhbnNhY3Rpb24qLCBpbnQ2NF90IGRhdGFi
YXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgaW50NjRfdCBpbmRleElkLCBjb25zdCBJREJL
ZXlSYW5nZSosIElEQkN1cnNvckJhY2tlbmRJbnRlcmZhY2U6OkRpcmVjdGlvbik7CiAKICAgICBj
bGFzcyBUcmFuc2FjdGlvbiB7CiAgICAgcHVibGljOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL0lEQkN1cnNvci5jcHAKaW5kZXggNDY4ZWRiZWJhOTExMTY5YTA5M2EyZTdk
MjM0OTA4OGZjYzI4MzZhNS4uYmVhZWU4YzlmYjczNTY4YWE0YzEwYjkyOTllOWQ1YjE4OGVlNmE1
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29y
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3IuY3Bw
CkBAIC00Myw3ICs0Myw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUGFzc1JlZlB0cjxJ
REJDdXJzb3I+IElEQkN1cnNvcjo6Y3JlYXRlKFBhc3NSZWZQdHI8SURCQ3Vyc29yQmFja2VuZElu
dGVyZmFjZT4gYmFja2VuZCwgRGlyZWN0aW9uIGRpcmVjdGlvbiwgSURCUmVxdWVzdCogcmVxdWVz
dCwgSURCQW55KiBzb3VyY2UsIElEQlRyYW5zYWN0aW9uKiB0cmFuc2FjdGlvbikKK1Bhc3NSZWZQ
dHI8SURCQ3Vyc29yPiBJREJDdXJzb3I6OmNyZWF0ZShQYXNzUmVmUHRyPElEQkN1cnNvckJhY2tl
bmRJbnRlcmZhY2U+IGJhY2tlbmQsIElEQkN1cnNvckJhY2tlbmRJbnRlcmZhY2U6OkRpcmVjdGlv
biBkaXJlY3Rpb24sIElEQlJlcXVlc3QqIHJlcXVlc3QsIElEQkFueSogc291cmNlLCBJREJUcmFu
c2FjdGlvbiogdHJhbnNhY3Rpb24pCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBJREJDdXJz
b3IoYmFja2VuZCwgZGlyZWN0aW9uLCByZXF1ZXN0LCBzb3VyY2UsIHRyYW5zYWN0aW9uKSk7CiB9
CkBAIC03Myw3ICs3Myw3IEBAIGNvbnN0IEF0b21pY1N0cmluZyYgSURCQ3Vyc29yOjpkaXJlY3Rp
b25QcmV2VW5pcXVlKCkKIH0KIAogCi1JREJDdXJzb3I6OklEQkN1cnNvcihQYXNzUmVmUHRyPElE
QkN1cnNvckJhY2tlbmRJbnRlcmZhY2U+IGJhY2tlbmQsIERpcmVjdGlvbiBkaXJlY3Rpb24sIElE
QlJlcXVlc3QqIHJlcXVlc3QsIElEQkFueSogc291cmNlLCBJREJUcmFuc2FjdGlvbiogdHJhbnNh
Y3Rpb24pCitJREJDdXJzb3I6OklEQkN1cnNvcihQYXNzUmVmUHRyPElEQkN1cnNvckJhY2tlbmRJ
bnRlcmZhY2U+IGJhY2tlbmQsIElEQkN1cnNvckJhY2tlbmRJbnRlcmZhY2U6OkRpcmVjdGlvbiBk
aXJlY3Rpb24sIElEQlJlcXVlc3QqIHJlcXVlc3QsIElEQkFueSogc291cmNlLCBJREJUcmFuc2Fj
dGlvbiogdHJhbnNhY3Rpb24pCiAgICAgOiBtX2JhY2tlbmQoYmFja2VuZCkKICAgICAsIG1fcmVx
dWVzdChyZXF1ZXN0KQogICAgICwgbV9kaXJlY3Rpb24oZGlyZWN0aW9uKQpAQCAtMjA2LDcgKzIw
Niw3IEBAIHZvaWQgSURCQ3Vyc29yOjpjb250aW51ZUZ1bmN0aW9uKFBhc3NSZWZQdHI8SURCS2V5
PiBrZXksIEV4Y2VwdGlvbkNvZGUmIGVjKQogCiAgICAgaWYgKGtleSkgewogICAgICAgICBBU1NF
UlQobV9jdXJyZW50S2V5KTsKLSAgICAgICAgaWYgKG1fZGlyZWN0aW9uID09IElEQkN1cnNvcjo6
TkVYVCB8fCBtX2RpcmVjdGlvbiA9PSBJREJDdXJzb3I6Ok5FWFRfTk9fRFVQTElDQVRFKSB7Cisg
ICAgICAgIGlmIChtX2RpcmVjdGlvbiA9PSBJREJDdXJzb3JCYWNrZW5kSW50ZXJmYWNlOjpOZXh0
IHx8IG1fZGlyZWN0aW9uID09IElEQkN1cnNvckJhY2tlbmRJbnRlcmZhY2U6Ok5leHROb0R1cGxp
Y2F0ZSkgewogICAgICAgICAgICAgaWYgKCFtX2N1cnJlbnRLZXktPmlzTGVzc1RoYW4oa2V5Lmdl
dCgpKSkgewogICAgICAgICAgICAgICAgIGVjID0gSURCRGF0YWJhc2VFeGNlcHRpb246OkRhdGFF
cnJvcjsKICAgICAgICAgICAgICAgICByZXR1cm47CkBAIC0yOTgsMzQgKzI5OCwzNCBAQCBQYXNz
UmVmUHRyPElEQk9iamVjdFN0b3JlPiBJREJDdXJzb3I6OmVmZmVjdGl2ZU9iamVjdFN0b3JlKCkK
ICAgICByZXR1cm4gaW5kZXgtPm9iamVjdFN0b3JlKCk7CiB9CiAKLUlEQkN1cnNvcjo6RGlyZWN0
aW9uIElEQkN1cnNvcjo6c3RyaW5nVG9EaXJlY3Rpb24oY29uc3QgU3RyaW5nJiBkaXJlY3Rpb25T
dHJpbmcsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIEV4Y2VwdGlvbkNvZGUmIGVj
KQorSURCQ3Vyc29yQmFja2VuZEludGVyZmFjZTo6RGlyZWN0aW9uIElEQkN1cnNvcjo6c3RyaW5n
VG9EaXJlY3Rpb24oY29uc3QgU3RyaW5nJiBkaXJlY3Rpb25TdHJpbmcsIFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqIGNvbnRleHQsIEV4Y2VwdGlvbkNvZGUmIGVjKQogewogICAgIGlmIChkaXJlY3Rp
b25TdHJpbmcgPT0gSURCQ3Vyc29yOjpkaXJlY3Rpb25OZXh0KCkpCi0gICAgICAgIHJldHVybiBJ
REJDdXJzb3I6Ok5FWFQ7CisgICAgICAgIHJldHVybiBJREJDdXJzb3JCYWNrZW5kSW50ZXJmYWNl
OjpOZXh0OwogICAgIGlmIChkaXJlY3Rpb25TdHJpbmcgPT0gSURCQ3Vyc29yOjpkaXJlY3Rpb25O
ZXh0VW5pcXVlKCkpCi0gICAgICAgIHJldHVybiBJREJDdXJzb3I6Ok5FWFRfTk9fRFVQTElDQVRF
OworICAgICAgICByZXR1cm4gSURCQ3Vyc29yQmFja2VuZEludGVyZmFjZTo6TmV4dE5vRHVwbGlj
YXRlOwogICAgIGlmIChkaXJlY3Rpb25TdHJpbmcgPT0gSURCQ3Vyc29yOjpkaXJlY3Rpb25QcmV2
KCkpCi0gICAgICAgIHJldHVybiBJREJDdXJzb3I6OlBSRVY7CisgICAgICAgIHJldHVybiBJREJD
dXJzb3JCYWNrZW5kSW50ZXJmYWNlOjpQcmV2OwogICAgIGlmIChkaXJlY3Rpb25TdHJpbmcgPT0g
SURCQ3Vyc29yOjpkaXJlY3Rpb25QcmV2VW5pcXVlKCkpCi0gICAgICAgIHJldHVybiBJREJDdXJz
b3I6OlBSRVZfTk9fRFVQTElDQVRFOworICAgICAgICByZXR1cm4gSURCQ3Vyc29yQmFja2VuZElu
dGVyZmFjZTo6UHJldk5vRHVwbGljYXRlOwogCiAgICAgZWMgPSBUeXBlRXJyb3I7Ci0gICAgcmV0
dXJuIElEQkN1cnNvcjo6TkVYVDsKKyAgICByZXR1cm4gSURCQ3Vyc29yQmFja2VuZEludGVyZmFj
ZTo6TmV4dDsKIH0KIAogY29uc3QgQXRvbWljU3RyaW5nJiBJREJDdXJzb3I6OmRpcmVjdGlvblRv
U3RyaW5nKHVuc2lnbmVkIHNob3J0IGRpcmVjdGlvbikKIHsKICAgICBzd2l0Y2ggKGRpcmVjdGlv
bikgewotICAgIGNhc2UgSURCQ3Vyc29yOjpORVhUOgorICAgIGNhc2UgSURCQ3Vyc29yQmFja2Vu
ZEludGVyZmFjZTo6TmV4dDoKICAgICAgICAgcmV0dXJuIElEQkN1cnNvcjo6ZGlyZWN0aW9uTmV4
dCgpOwogCi0gICAgY2FzZSBJREJDdXJzb3I6Ok5FWFRfTk9fRFVQTElDQVRFOgorICAgIGNhc2Ug
SURCQ3Vyc29yQmFja2VuZEludGVyZmFjZTo6TmV4dE5vRHVwbGljYXRlOgogICAgICAgICByZXR1
cm4gSURCQ3Vyc29yOjpkaXJlY3Rpb25OZXh0VW5pcXVlKCk7CiAKLSAgICBjYXNlIElEQkN1cnNv
cjo6UFJFVjoKKyAgICBjYXNlIElEQkN1cnNvckJhY2tlbmRJbnRlcmZhY2U6OlByZXY6CiAgICAg
ICAgIHJldHVybiBJREJDdXJzb3I6OmRpcmVjdGlvblByZXYoKTsKIAotICAgIGNhc2UgSURCQ3Vy
c29yOjpQUkVWX05PX0RVUExJQ0FURToKKyAgICBjYXNlIElEQkN1cnNvckJhY2tlbmRJbnRlcmZh
Y2U6OlByZXZOb0R1cGxpY2F0ZToKICAgICAgICAgcmV0dXJuIElEQkN1cnNvcjo6ZGlyZWN0aW9u
UHJldlVuaXF1ZSgpOwogCiAgICAgZGVmYXVsdDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvSURCQ3Vyc29yLmgKaW5kZXggMWM4MzE2NDAyNmRhNDRiM2YwOGVmOTNmZjQyZTNh
YjQ1ZmZmNTkyYy4uZWNjYWRkZDlmNzM5MjJiYzkxZjEyMmUyNzYwNThjNjQ1Y2M2MDAzNSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yLmgKQEAgLTI4LDYg
KzI4LDcgQEAKIAogI2lmIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQogCisjaW5jbHVkZSAiSURC
Q3Vyc29yQmFja2VuZEludGVyZmFjZS5oIgogI2luY2x1ZGUgIklEQktleS5oIgogI2luY2x1ZGUg
IklEQlRyYW5zYWN0aW9uLmgiCiAjaW5jbHVkZSAiU2NyaXB0VmFsdWUuaCIKQEAgLTQ5LDIyICs1
MCwxNSBAQCB0eXBlZGVmIGludCBFeGNlcHRpb25Db2RlOwogCiBjbGFzcyBJREJDdXJzb3IgOiBw
dWJsaWMgU2NyaXB0V3JhcHBhYmxlLCBwdWJsaWMgUmVmQ291bnRlZDxJREJDdXJzb3I+IHsKIHB1
YmxpYzoKLSAgICBlbnVtIERpcmVjdGlvbiB7Ci0gICAgICAgIE5FWFQgPSAwLAotICAgICAgICBO
RVhUX05PX0RVUExJQ0FURSA9IDEsCi0gICAgICAgIFBSRVYgPSAyLAotICAgICAgICBQUkVWX05P
X0RVUExJQ0FURSA9IDMsCi0gICAgfTsKLQogICAgIHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcm
IGRpcmVjdGlvbk5leHQoKTsKICAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiBkaXJlY3Rp
b25OZXh0VW5pcXVlKCk7CiAgICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYgZGlyZWN0aW9u
UHJldigpOwogICAgIHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcmIGRpcmVjdGlvblByZXZVbmlx
dWUoKTsKIAotICAgIHN0YXRpYyBJREJDdXJzb3I6OkRpcmVjdGlvbiBzdHJpbmdUb0RpcmVjdGlv
bihjb25zdCBTdHJpbmcmIG1vZGVTdHJpbmcsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBFeGNl
cHRpb25Db2RlJik7CisgICAgc3RhdGljIElEQkN1cnNvckJhY2tlbmRJbnRlcmZhY2U6OkRpcmVj
dGlvbiBzdHJpbmdUb0RpcmVjdGlvbihjb25zdCBTdHJpbmcmIG1vZGVTdHJpbmcsIFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqLCBFeGNlcHRpb25Db2RlJik7CiAgICAgc3RhdGljIGNvbnN0IEF0b21p
Y1N0cmluZyYgZGlyZWN0aW9uVG9TdHJpbmcodW5zaWduZWQgc2hvcnQgbW9kZSk7CiAKLSAgICBz
dGF0aWMgUGFzc1JlZlB0cjxJREJDdXJzb3I+IGNyZWF0ZShQYXNzUmVmUHRyPElEQkN1cnNvckJh
Y2tlbmRJbnRlcmZhY2U+LCBEaXJlY3Rpb24sIElEQlJlcXVlc3QqLCBJREJBbnkqIHNvdXJjZSwg
SURCVHJhbnNhY3Rpb24qKTsKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxJREJDdXJzb3I+IGNyZWF0
ZShQYXNzUmVmUHRyPElEQkN1cnNvckJhY2tlbmRJbnRlcmZhY2U+LCBJREJDdXJzb3JCYWNrZW5k
SW50ZXJmYWNlOjpEaXJlY3Rpb24sIElEQlJlcXVlc3QqLCBJREJBbnkqIHNvdXJjZSwgSURCVHJh
bnNhY3Rpb24qKTsKICAgICB2aXJ0dWFsIH5JREJDdXJzb3IoKTsKIAogICAgIC8vIEltcGxlbWVu
dCB0aGUgSURMCkBAIC04OSw3ICs4Myw3IEBAIHB1YmxpYzoKICAgICBQYXNzUmVmUHRyPElEQktl
eT4gaWRiUHJpbWFyeUtleSgpIHsgcmV0dXJuIG1fY3VycmVudFByaW1hcnlLZXk7IH0KIAogcHJv
dGVjdGVkOgotICAgIElEQkN1cnNvcihQYXNzUmVmUHRyPElEQkN1cnNvckJhY2tlbmRJbnRlcmZh
Y2U+LCBEaXJlY3Rpb24sIElEQlJlcXVlc3QqLCBJREJBbnkqIHNvdXJjZSwgSURCVHJhbnNhY3Rp
b24qKTsKKyAgICBJREJDdXJzb3IoUGFzc1JlZlB0cjxJREJDdXJzb3JCYWNrZW5kSW50ZXJmYWNl
PiwgSURCQ3Vyc29yQmFja2VuZEludGVyZmFjZTo6RGlyZWN0aW9uLCBJREJSZXF1ZXN0KiwgSURC
QW55KiBzb3VyY2UsIElEQlRyYW5zYWN0aW9uKik7CiAgICAgdmlydHVhbCBib29sIGlzS2V5Q3Vy
c29yKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQogCiBwcml2YXRlOgpAQCAtOTcsNyArOTEsNyBA
QCBwcml2YXRlOgogCiAgICAgUmVmUHRyPElEQkN1cnNvckJhY2tlbmRJbnRlcmZhY2U+IG1fYmFj
a2VuZDsKICAgICBSZWZQdHI8SURCUmVxdWVzdD4gbV9yZXF1ZXN0OwotICAgIGNvbnN0IERpcmVj
dGlvbiBtX2RpcmVjdGlvbjsKKyAgICBjb25zdCBJREJDdXJzb3JCYWNrZW5kSW50ZXJmYWNlOjpE
aXJlY3Rpb24gbV9kaXJlY3Rpb247CiAgICAgUmVmUHRyPElEQkFueT4gbV9zb3VyY2U7CiAgICAg
UmVmUHRyPElEQlRyYW5zYWN0aW9uPiBtX3RyYW5zYWN0aW9uOwogICAgIElEQlRyYW5zYWN0aW9u
OjpPcGVuQ3Vyc29yTm90aWZpZXIgbV90cmFuc2FjdGlvbk5vdGlmaWVyOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yQmFja2VuZEltcGwuY3Bw
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yQmFja2VuZEltcGwu
Y3BwCmluZGV4IDMzMmQ5MDE0MjVhYjFiYWE0YTQ0ZDg4OWMxZDVkMjEyZDYyODBlZDguLjNiNTZh
MDQyMDdlYTUwZWFhMjc4ZGFiYjM3MjFlYWY2ZmQxZGNmYWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvckJhY2tlbmRJbXBsLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3JCYWNrZW5kSW1wbC5jcHAK
QEAgLTM0LDcgKzM0LDYgQEAKICNpbmNsdWRlICJJREJEYXRhYmFzZUVycm9yLmgiCiAjaW5jbHVk
ZSAiSURCRGF0YWJhc2VFeGNlcHRpb24uaCIKICNpbmNsdWRlICJJREJLZXlSYW5nZS5oIgotI2lu
Y2x1ZGUgIklEQlJlcXVlc3QuaCIKICNpbmNsdWRlICJJREJUcmFjaW5nLmgiCiAjaW5jbHVkZSAi
SURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbC5oIgogI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgpA
QCAtMTYwLDcgKzE1OSw3IEBAIHZvaWQgSURCQ3Vyc29yQmFja2VuZEltcGw6OkN1cnNvckl0ZXJh
dGlvbk9wZXJhdGlvbjo6cGVyZm9ybShJREJUcmFuc2FjdGlvbkJhY2tlCiB2b2lkIElEQkN1cnNv
ckJhY2tlbmRJbXBsOjpkZWxldGVGdW5jdGlvbihQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gcHJw
Q2FsbGJhY2tzLCBFeGNlcHRpb25Db2RlJikKIHsKICAgICBJREJfVFJBQ0UoIklEQkN1cnNvckJh
Y2tlbmRJbXBsOjpkZWxldGUiKTsKLSAgICBBU1NFUlQobV90cmFuc2FjdGlvbi0+bW9kZSgpICE9
IElEQlRyYW5zYWN0aW9uOjpSRUFEX09OTFkpOworICAgIEFTU0VSVChtX3RyYW5zYWN0aW9uLT5t
b2RlKCkgIT0gSURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlOjpSZWFkT25seSk7CiAgICAgUmVm
UHRyPElEQktleVJhbmdlPiBrZXlSYW5nZSA9IElEQktleVJhbmdlOjpjcmVhdGUobV9jdXJzb3It
PnByaW1hcnlLZXkoKSk7CiAgICAgbV9kYXRhYmFzZS0+ZGVsZXRlUmFuZ2UobV90cmFuc2FjdGlv
bi0+aWQoKSwgbV9vYmplY3RTdG9yZUlkLCBrZXlSYW5nZS5yZWxlYXNlKCksIHBycENhbGxiYWNr
cyk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJD
dXJzb3JCYWNrZW5kSW1wbC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURC
Q3Vyc29yQmFja2VuZEltcGwuaAppbmRleCA2OTllMmY1OGQ2ZDE3NjIxZjRjYTEyNGZkMmVjOGIw
YjEzMzEyYTQ4Li5iMTlmZWNmZTYyYzQxNmI2ZGFmNDQ1OWExYTNmOThiZjliYThkYjVmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3JCYWNrZW5k
SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvckJh
Y2tlbmRJbXBsLmgKQEAgLTMwLDcgKzMwLDYgQEAKICNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFT
RSkKIAogI2luY2x1ZGUgIklEQkJhY2tpbmdTdG9yZS5oIgotI2luY2x1ZGUgIklEQkN1cnNvci5o
IgogI2luY2x1ZGUgIklEQkN1cnNvckJhY2tlbmRJbnRlcmZhY2UuaCIKICNpbmNsdWRlICJJREJU
cmFuc2FjdGlvbkJhY2tlbmRJbXBsLmgiCiAjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3JCYWNrZW5k
SW50ZXJmYWNlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3JC
YWNrZW5kSW50ZXJmYWNlLmgKaW5kZXggYWViMjk3NmIwODYyYTc5YWQ0NDM4MTNlOWU3NmNmYTI2
ZTM5MGYxNi4uZWEyZGFlZTUzMjY5ZmQxY2Q2YmUzYWQzMjY1MjViOTQyZDM2M2IwYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yQmFja2VuZElu
dGVyZmFjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNv
ckJhY2tlbmRJbnRlcmZhY2UuaApAQCAtMzMsNyArMzMsNiBAQAogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKLWNsYXNzIElEQkFueTsKIGNsYXNzIElEQkNhbGxiYWNrczsKIGNsYXNzIElEQktleTsK
IGNsYXNzIElEQlJlcXVlc3Q7CkBAIC00OSw2ICs0OCwxMyBAQCBwdWJsaWM6CiAgICAgICAgIEtl
eU9ubHkKICAgICB9OwogCisgICAgZW51bSBEaXJlY3Rpb24geworICAgICAgICBOZXh0ID0gMCwK
KyAgICAgICAgTmV4dE5vRHVwbGljYXRlID0gMSwKKyAgICAgICAgUHJldiA9IDIsCisgICAgICAg
IFByZXZOb0R1cGxpY2F0ZSA9IDMsCisgICAgfTsKKwogICAgIHZpcnR1YWwgdm9pZCBhZHZhbmNl
KHVuc2lnbmVkIGxvbmcgY291bnQsIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiwgRXhjZXB0aW9u
Q29kZSYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgY29udGludWVGdW5jdGlvbihQYXNzUmVmUHRy
PElEQktleT4ga2V5LCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4sIEV4Y2VwdGlvbkNvZGUmKSA9
IDA7CiAgICAgdmlydHVhbCB2b2lkIGRlbGV0ZUZ1bmN0aW9uKFBhc3NSZWZQdHI8SURCQ2FsbGJh
Y2tzPiwgRXhjZXB0aW9uQ29kZSYpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvcldpdGhWYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3JXaXRoVmFsdWUuY3BwCmluZGV4IGI5MGJhM2Q5YjUy
NjUzMTcwOTJiYmU1NTgxNzUwZGMwMjc4NWRhYWEuLjdkZmI3Y2Q4MTY4YTRjZTAyZjEwNTA5YmE4
OTVmNmU4OGEyNWRjMTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL0lEQkN1cnNvcldpdGhWYWx1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvSURCQ3Vyc29yV2l0aFZhbHVlLmNwcApAQCAtMzMsNyArMzMsNyBAQAogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKLVBhc3NSZWZQdHI8SURCQ3Vyc29yV2l0aFZhbHVlPiBJREJDdXJz
b3JXaXRoVmFsdWU6OmNyZWF0ZShQYXNzUmVmUHRyPElEQkN1cnNvckJhY2tlbmRJbnRlcmZhY2U+
IGJhY2tlbmQsIERpcmVjdGlvbiBkaXJlY3Rpb24sIElEQlJlcXVlc3QqIHJlcXVlc3QsIElEQkFu
eSogc291cmNlLCBJREJUcmFuc2FjdGlvbiogdHJhbnNhY3Rpb24pCitQYXNzUmVmUHRyPElEQkN1
cnNvcldpdGhWYWx1ZT4gSURCQ3Vyc29yV2l0aFZhbHVlOjpjcmVhdGUoUGFzc1JlZlB0cjxJREJD
dXJzb3JCYWNrZW5kSW50ZXJmYWNlPiBiYWNrZW5kLCBJREJDdXJzb3JCYWNrZW5kSW50ZXJmYWNl
OjpEaXJlY3Rpb24gZGlyZWN0aW9uLCBJREJSZXF1ZXN0KiByZXF1ZXN0LCBJREJBbnkqIHNvdXJj
ZSwgSURCVHJhbnNhY3Rpb24qIHRyYW5zYWN0aW9uKQogewogICAgIHJldHVybiBhZG9wdFJlZihu
ZXcgSURCQ3Vyc29yV2l0aFZhbHVlKGJhY2tlbmQsIGRpcmVjdGlvbiwgcmVxdWVzdCwgc291cmNl
LCB0cmFuc2FjdGlvbikpOwogfQpAQCAtNDQsNyArNDQsNyBAQCBQYXNzUmVmUHRyPElEQkN1cnNv
cldpdGhWYWx1ZT4gSURCQ3Vyc29yV2l0aFZhbHVlOjpmcm9tQ3Vyc29yKFBhc3NSZWZQdHI8SURC
Q3VycwogICAgIHJldHVybiBjdXJzb3JXaXRoVmFsdWUucmVsZWFzZSgpOwogfQogCi1JREJDdXJz
b3JXaXRoVmFsdWU6OklEQkN1cnNvcldpdGhWYWx1ZShQYXNzUmVmUHRyPElEQkN1cnNvckJhY2tl
bmRJbnRlcmZhY2U+IGJhY2tlbmQsIERpcmVjdGlvbiBkaXJlY3Rpb24sIElEQlJlcXVlc3QqIHJl
cXVlc3QsIElEQkFueSogc291cmNlLCBJREJUcmFuc2FjdGlvbiogdHJhbnNhY3Rpb24pCitJREJD
dXJzb3JXaXRoVmFsdWU6OklEQkN1cnNvcldpdGhWYWx1ZShQYXNzUmVmUHRyPElEQkN1cnNvckJh
Y2tlbmRJbnRlcmZhY2U+IGJhY2tlbmQsIElEQkN1cnNvckJhY2tlbmRJbnRlcmZhY2U6OkRpcmVj
dGlvbiBkaXJlY3Rpb24sIElEQlJlcXVlc3QqIHJlcXVlc3QsIElEQkFueSogc291cmNlLCBJREJU
cmFuc2FjdGlvbiogdHJhbnNhY3Rpb24pCiAgICAgOiBJREJDdXJzb3IoYmFja2VuZCwgZGlyZWN0
aW9uLCByZXF1ZXN0LCBzb3VyY2UsIHRyYW5zYWN0aW9uKQogewogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yV2l0aFZhbHVlLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3JXaXRoVmFsdWUuaAppbmRleCBj
YmI4NTBhMWNkMDJmMGFhMjA5NTJmMmNmZGI4ODhmYzhjMDI4NjUwLi5hZWQ0NTc2NTAxOWZkYmY3
YWNhY2E0N2Q4M2I0OGM3YmNjZTRiNzY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9JREJDdXJzb3JXaXRoVmFsdWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3JXaXRoVmFsdWUuaApAQCAtMzQsNyArMzQsNyBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIElEQkN1cnNvcldpdGhWYWx1ZSA6IHB1YmxpYyBJ
REJDdXJzb3IgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPElEQkN1cnNvcldpdGhW
YWx1ZT4gY3JlYXRlKFBhc3NSZWZQdHI8SURCQ3Vyc29yQmFja2VuZEludGVyZmFjZT4sIERpcmVj
dGlvbiwgSURCUmVxdWVzdCosIElEQkFueSogc291cmNlLCBJREJUcmFuc2FjdGlvbiopOworICAg
IHN0YXRpYyBQYXNzUmVmUHRyPElEQkN1cnNvcldpdGhWYWx1ZT4gY3JlYXRlKFBhc3NSZWZQdHI8
SURCQ3Vyc29yQmFja2VuZEludGVyZmFjZT4sIElEQkN1cnNvckJhY2tlbmRJbnRlcmZhY2U6OkRp
cmVjdGlvbiwgSURCUmVxdWVzdCosIElEQkFueSogc291cmNlLCBJREJUcmFuc2FjdGlvbiopOwog
ICAgIHN0YXRpYyBQYXNzUmVmUHRyPElEQkN1cnNvcldpdGhWYWx1ZT4gZnJvbUN1cnNvcihQYXNz
UmVmUHRyPElEQkN1cnNvcj4pOwogICAgIHZpcnR1YWwgfklEQkN1cnNvcldpdGhWYWx1ZSgpOwog
CkBAIC00NSw3ICs0NSw3IEBAIHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIGJvb2wgaXNLZXlDdXJz
b3IoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiBmYWxzZTsgfQogCiBwcml2YXRlOgotICAgIElE
QkN1cnNvcldpdGhWYWx1ZShQYXNzUmVmUHRyPElEQkN1cnNvckJhY2tlbmRJbnRlcmZhY2U+LCBE
aXJlY3Rpb24sIElEQlJlcXVlc3QqLCBJREJBbnkqIHNvdXJjZSwgSURCVHJhbnNhY3Rpb24qKTsK
KyAgICBJREJDdXJzb3JXaXRoVmFsdWUoUGFzc1JlZlB0cjxJREJDdXJzb3JCYWNrZW5kSW50ZXJm
YWNlPiwgSURCQ3Vyc29yQmFja2VuZEludGVyZmFjZTo6RGlyZWN0aW9uLCBJREJSZXF1ZXN0Kiwg
SURCQW55KiBzb3VyY2UsIElEQlRyYW5zYWN0aW9uKik7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJE
YXRhYmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFz
ZS5jcHAKaW5kZXggYzk5YThkNWM4NGZlMTUyMThmYjA3ZTg4MjMyNDEwYjAxZTkzNzFkMy4uYzIx
Y2M4OWFjZTY0MGY5YWZjYWRiYWM1ZjQ1N2U5Y2JmZTBjMDMzMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2UuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlLmNwcApAQCAtMjI3LDcgKzIyNyw3
IEBAIFBhc3NSZWZQdHI8SURCVHJhbnNhY3Rpb24+IElEQkRhdGFiYXNlOjp0cmFuc2FjdGlvbihT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KIAot
ICAgIElEQlRyYW5zYWN0aW9uOjpNb2RlIG1vZGUgPSBJREJUcmFuc2FjdGlvbjo6c3RyaW5nVG9N
b2RlKG1vZGVTdHJpbmcsIGNvbnRleHQsIGVjKTsKKyAgICBJREJEYXRhYmFzZUJhY2tlbmRJbnRl
cmZhY2U6OlRyYW5zYWN0aW9uTW9kZSBtb2RlID0gSURCVHJhbnNhY3Rpb246OnN0cmluZ1RvTW9k
ZShtb2RlU3RyaW5nLCBjb250ZXh0LCBlYyk7CiAgICAgaWYgKGVjKQogICAgICAgICByZXR1cm4g
MDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0
YWJhc2VCYWNrZW5kSW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9J
REJEYXRhYmFzZUJhY2tlbmRJbXBsLmNwcAppbmRleCA5ODBkMTRmNGZlNjU5NjZlMjA1ZjE2NDcy
MDc2ZGI1ODg3MDBkYTY3Li5kZjM0YmRmYTI4YmVhMmU2ZjQzOGMzMTgyNzEzOTUwMzcyNmU1MWI0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFz
ZUJhY2tlbmRJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9J
REJEYXRhYmFzZUJhY2tlbmRJbXBsLmNwcApAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUgIklE
QkN1cnNvckJhY2tlbmRJbXBsLmgiCiAjaW5jbHVkZSAiSURCRGF0YWJhc2VFeGNlcHRpb24uaCIK
ICNpbmNsdWRlICJJREJGYWN0b3J5QmFja2VuZEltcGwuaCIKKyNpbmNsdWRlICJJREJLZXlSYW5n
ZS5oIgogI2luY2x1ZGUgIklEQk9iamVjdFN0b3JlQmFja2VuZEltcGwuaCIKICNpbmNsdWRlICJJ
REJUcmFjaW5nLmgiCiAjaW5jbHVkZSAiSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbC5oIgpAQCAt
MzIwLDEzICszMjEsMTMgQEAgcHJpdmF0ZToKIAogY2xhc3MgT3BlbkN1cnNvck9wZXJhdGlvbiA6
IHB1YmxpYyBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsOjpPcGVyYXRpb24gewogcHVibGljOgot
ICAgIHN0YXRpYyBQYXNzT3duUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGw6Ok9wZXJhdGlv
bj4gY3JlYXRlKFBhc3NSZWZQdHI8SURCQmFja2luZ1N0b3JlPiBiYWNraW5nU3RvcmUsIGludDY0
X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBpbnQ2NF90IGluZGV4SWQsIFBh
c3NSZWZQdHI8SURCS2V5UmFuZ2U+IGtleVJhbmdlLCB1bnNpZ25lZCBzaG9ydCBkaXJlY3Rpb24s
IElEQkN1cnNvckJhY2tlbmRJbnRlcmZhY2U6OkN1cnNvclR5cGUgY3Vyc29yVHlwZSwgSURCRGF0
YWJhc2VCYWNrZW5kSW50ZXJmYWNlOjpUYXNrVHlwZSB0YXNrVHlwZSwgUGFzc1JlZlB0cjxJREJD
YWxsYmFja3M+IGNhbGxiYWNrcykKKyAgICBzdGF0aWMgUGFzc093blB0cjxJREJUcmFuc2FjdGlv
bkJhY2tlbmRJbXBsOjpPcGVyYXRpb24+IGNyZWF0ZShQYXNzUmVmUHRyPElEQkJhY2tpbmdTdG9y
ZT4gYmFja2luZ1N0b3JlLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJ
ZCwgaW50NjRfdCBpbmRleElkLCBQYXNzUmVmUHRyPElEQktleVJhbmdlPiBrZXlSYW5nZSwgSURC
Q3Vyc29yQmFja2VuZEludGVyZmFjZTo6RGlyZWN0aW9uIGRpcmVjdGlvbiwgSURCQ3Vyc29yQmFj
a2VuZEludGVyZmFjZTo6Q3Vyc29yVHlwZSBjdXJzb3JUeXBlLCBJREJEYXRhYmFzZUJhY2tlbmRJ
bnRlcmZhY2U6OlRhc2tUeXBlIHRhc2tUeXBlLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gY2Fs
bGJhY2tzKQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBPcGVuQ3Vyc29yT3Bl
cmF0aW9uKGJhY2tpbmdTdG9yZSwgZGF0YWJhc2VJZCwgb2JqZWN0U3RvcmVJZCwgaW5kZXhJZCwg
a2V5UmFuZ2UsIGRpcmVjdGlvbiwgY3Vyc29yVHlwZSwgdGFza1R5cGUsIGNhbGxiYWNrcykpOwog
ICAgIH0KICAgICB2aXJ0dWFsIHZvaWQgcGVyZm9ybShJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBs
Kik7CiBwcml2YXRlOgotICAgIE9wZW5DdXJzb3JPcGVyYXRpb24oUGFzc1JlZlB0cjxJREJCYWNr
aW5nU3RvcmU+IGJhY2tpbmdTdG9yZSwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVj
dFN0b3JlSWQsIGludDY0X3QgaW5kZXhJZCwgUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4ga2V5UmFu
Z2UsIHVuc2lnbmVkIHNob3J0IGRpcmVjdGlvbiwgSURCQ3Vyc29yQmFja2VuZEludGVyZmFjZTo6
Q3Vyc29yVHlwZSBjdXJzb3JUeXBlLCBJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2U6OlRhc2tU
eXBlIHRhc2tUeXBlLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tzKQorICAgIE9w
ZW5DdXJzb3JPcGVyYXRpb24oUGFzc1JlZlB0cjxJREJCYWNraW5nU3RvcmU+IGJhY2tpbmdTdG9y
ZSwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGludDY0X3QgaW5k
ZXhJZCwgUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4ga2V5UmFuZ2UsIElEQkN1cnNvckJhY2tlbmRJ
bnRlcmZhY2U6OkRpcmVjdGlvbiBkaXJlY3Rpb24sIElEQkN1cnNvckJhY2tlbmRJbnRlcmZhY2U6
OkN1cnNvclR5cGUgY3Vyc29yVHlwZSwgSURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlOjpUYXNr
VHlwZSB0YXNrVHlwZSwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcykKICAgICAg
ICAgOiBtX2JhY2tpbmdTdG9yZShiYWNraW5nU3RvcmUpCiAgICAgICAgICwgbV9kYXRhYmFzZUlk
KGRhdGFiYXNlSWQpCiAgICAgICAgICwgbV9vYmplY3RTdG9yZUlkKG9iamVjdFN0b3JlSWQpCkBA
IC0zNDQsNyArMzQ1LDcgQEAgcHJpdmF0ZToKICAgICBjb25zdCBpbnQ2NF90IG1fb2JqZWN0U3Rv
cmVJZDsKICAgICBjb25zdCBpbnQ2NF90IG1faW5kZXhJZDsKICAgICBjb25zdCBQYXNzUmVmUHRy
PElEQktleVJhbmdlPiBtX2tleVJhbmdlOwotICAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IG1fZGly
ZWN0aW9uOworICAgIGNvbnN0IElEQkN1cnNvckJhY2tlbmRJbnRlcmZhY2U6OkRpcmVjdGlvbiBt
X2RpcmVjdGlvbjsKICAgICBjb25zdCBJREJDdXJzb3JCYWNrZW5kSW50ZXJmYWNlOjpDdXJzb3JU
eXBlIG1fY3Vyc29yVHlwZTsKICAgICBjb25zdCBJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2U6
OlRhc2tUeXBlIG1fdGFza1R5cGU7CiAgICAgY29uc3QgUmVmUHRyPElEQkNhbGxiYWNrcz4gbV9j
YWxsYmFja3M7CkBAIC01NTUsNyArNTU2LDcgQEAgdm9pZCBJREJEYXRhYmFzZUJhY2tlbmRJbXBs
OjpjcmVhdGVPYmplY3RTdG9yZShpbnQ2NF90IHRyYW5zYWN0aW9uSWQsIGludDY0X3Qgb2IKICAg
ICBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsKiB0cmFuc2FjdGlvbiA9IG1fdHJhbnNhY3Rpb25z
LmdldCh0cmFuc2FjdGlvbklkKTsKICAgICBpZiAoIXRyYW5zYWN0aW9uKQogICAgICAgICByZXR1
cm47Ci0gICAgQVNTRVJUKHRyYW5zYWN0aW9uLT5tb2RlKCkgPT0gSURCVHJhbnNhY3Rpb246OlZF
UlNJT05fQ0hBTkdFKTsKKyAgICBBU1NFUlQodHJhbnNhY3Rpb24tPm1vZGUoKSA9PSBJREJEYXRh
YmFzZUJhY2tlbmRJbnRlcmZhY2U6OlZlcnNpb25DaGFuZ2UpOwogCiAgICAgQVNTRVJUKCFtX21l
dGFkYXRhLm9iamVjdFN0b3Jlcy5jb250YWlucyhvYmplY3RTdG9yZUlkKSk7CiAgICAgSURCT2Jq
ZWN0U3RvcmVNZXRhZGF0YSBvYmplY3RTdG9yZU1ldGFkYXRhKG5hbWUsIG9iamVjdFN0b3JlSWQs
IGtleVBhdGgsIGF1dG9JbmNyZW1lbnQsIElEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZTo6TWlu
aW11bUluZGV4SWQpOwpAQCAtNTgxLDcgKzU4Miw3IEBAIHZvaWQgSURCRGF0YWJhc2VCYWNrZW5k
SW1wbDo6ZGVsZXRlT2JqZWN0U3RvcmUoaW50NjRfdCB0cmFuc2FjdGlvbklkLCBpbnQ2NF90IG9i
CiAgICAgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbCogdHJhbnNhY3Rpb24gPSBtX3RyYW5zYWN0
aW9ucy5nZXQodHJhbnNhY3Rpb25JZCk7CiAgICAgaWYgKCF0cmFuc2FjdGlvbikKICAgICAgICAg
cmV0dXJuOwotICAgIEFTU0VSVCh0cmFuc2FjdGlvbi0+bW9kZSgpID09IElEQlRyYW5zYWN0aW9u
OjpWRVJTSU9OX0NIQU5HRSk7CisgICAgQVNTRVJUKHRyYW5zYWN0aW9uLT5tb2RlKCkgPT0gSURC
RGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlOjpWZXJzaW9uQ2hhbmdlKTsKIAogICAgIEFTU0VSVCht
X21ldGFkYXRhLm9iamVjdFN0b3Jlcy5jb250YWlucyhvYmplY3RTdG9yZUlkKSk7CiAgICAgY29u
c3QgSURCT2JqZWN0U3RvcmVNZXRhZGF0YSYgb2JqZWN0U3RvcmVNZXRhZGF0YSA9IG1fbWV0YWRh
dGEub2JqZWN0U3RvcmVzLmdldChvYmplY3RTdG9yZUlkKTsKQEAgLTU5Niw3ICs1OTcsNyBAQCB2
b2lkIElEQkRhdGFiYXNlQmFja2VuZEltcGw6OmNyZWF0ZUluZGV4KGludDY0X3QgdHJhbnNhY3Rp
b25JZCwgaW50NjRfdCBvYmplY3RTdAogICAgIElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGwqIHRy
YW5zYWN0aW9uID0gbV90cmFuc2FjdGlvbnMuZ2V0KHRyYW5zYWN0aW9uSWQpOwogICAgIGlmICgh
dHJhbnNhY3Rpb24pCiAgICAgICAgIHJldHVybjsKLSAgICBBU1NFUlQodHJhbnNhY3Rpb24tPm1v
ZGUoKSA9PSBJREJUcmFuc2FjdGlvbjo6VkVSU0lPTl9DSEFOR0UpOworICAgIEFTU0VSVCh0cmFu
c2FjdGlvbi0+bW9kZSgpID09IElEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZTo6VmVyc2lvbkNo
YW5nZSk7CiAKICAgICBBU1NFUlQobV9tZXRhZGF0YS5vYmplY3RTdG9yZXMuY29udGFpbnMob2Jq
ZWN0U3RvcmVJZCkpOwogICAgIGNvbnN0IElEQk9iamVjdFN0b3JlTWV0YWRhdGEgb2JqZWN0U3Rv
cmUgPSBtX21ldGFkYXRhLm9iamVjdFN0b3Jlcy5nZXQob2JqZWN0U3RvcmVJZCk7CkBAIC02MzEs
NyArNjMyLDcgQEAgdm9pZCBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpkZWxldGVJbmRleChpbnQ2
NF90IHRyYW5zYWN0aW9uSWQsIGludDY0X3Qgb2JqZWN0U3QKICAgICBJREJUcmFuc2FjdGlvbkJh
Y2tlbmRJbXBsKiB0cmFuc2FjdGlvbiA9IG1fdHJhbnNhY3Rpb25zLmdldCh0cmFuc2FjdGlvbklk
KTsKICAgICBpZiAoIXRyYW5zYWN0aW9uKQogICAgICAgICByZXR1cm47Ci0gICAgQVNTRVJUKHRy
YW5zYWN0aW9uLT5tb2RlKCkgPT0gSURCVHJhbnNhY3Rpb246OlZFUlNJT05fQ0hBTkdFKTsKKyAg
ICBBU1NFUlQodHJhbnNhY3Rpb24tPm1vZGUoKSA9PSBJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZh
Y2U6OlZlcnNpb25DaGFuZ2UpOwogCiAgICAgQVNTRVJUKG1fbWV0YWRhdGEub2JqZWN0U3RvcmVz
LmNvbnRhaW5zKG9iamVjdFN0b3JlSWQpKTsKICAgICBjb25zdCBJREJPYmplY3RTdG9yZU1ldGFk
YXRhIG9iamVjdFN0b3JlID0gbV9tZXRhZGF0YS5vYmplY3RTdG9yZXMuZ2V0KG9iamVjdFN0b3Jl
SWQpOwpAQCAtNzAxLDE0ICs3MDIsMTQgQEAgdm9pZCBHZXRPcGVyYXRpb246OnBlcmZvcm0oSURC
VHJhbnNhY3Rpb25CYWNrZW5kSW1wbCogdHJhbnNhY3Rpb24pCiAgICAgICAgIGlmIChtX2luZGV4
SWQgPT0gSURCSW5kZXhNZXRhZGF0YTo6SW52YWxpZElkKSB7CiAgICAgICAgICAgICBBU1NFUlQo
bV9jdXJzb3JUeXBlICE9IElEQkN1cnNvckJhY2tlbmRJbnRlcmZhY2U6OktleU9ubHkpOwogICAg
ICAgICAgICAgLy8gT2JqZWN0U3RvcmUgUmV0cmlldmFsIE9wZXJhdGlvbgotICAgICAgICAgICAg
YmFja2luZ1N0b3JlQ3Vyc29yID0gbV9iYWNraW5nU3RvcmUtPm9wZW5PYmplY3RTdG9yZUN1cnNv
cih0cmFuc2FjdGlvbi0+YmFja2luZ1N0b3JlVHJhbnNhY3Rpb24oKSwgbV9kYXRhYmFzZUlkLCBt
X29iamVjdFN0b3JlSWQsIG1fa2V5UmFuZ2UuZ2V0KCksIElEQkN1cnNvcjo6TkVYVCk7CisgICAg
ICAgICAgICBiYWNraW5nU3RvcmVDdXJzb3IgPSBtX2JhY2tpbmdTdG9yZS0+b3Blbk9iamVjdFN0
b3JlQ3Vyc29yKHRyYW5zYWN0aW9uLT5iYWNraW5nU3RvcmVUcmFuc2FjdGlvbigpLCBtX2RhdGFi
YXNlSWQsIG1fb2JqZWN0U3RvcmVJZCwgbV9rZXlSYW5nZS5nZXQoKSwgSURCQ3Vyc29yQmFja2Vu
ZEludGVyZmFjZTo6TmV4dCk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBpZiAobV9j
dXJzb3JUeXBlID09IElEQkN1cnNvckJhY2tlbmRJbnRlcmZhY2U6OktleU9ubHkpCiAgICAgICAg
ICAgICAgICAgLy8gSW5kZXggVmFsdWUgUmV0cmlldmFsIE9wZXJhdGlvbgotICAgICAgICAgICAg
ICAgIGJhY2tpbmdTdG9yZUN1cnNvciA9IG1fYmFja2luZ1N0b3JlLT5vcGVuSW5kZXhLZXlDdXJz
b3IodHJhbnNhY3Rpb24tPmJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uKCksIG1fZGF0YWJhc2VJZCwg
bV9vYmplY3RTdG9yZUlkLCBtX2luZGV4SWQsIG1fa2V5UmFuZ2UuZ2V0KCksIElEQkN1cnNvcjo6
TkVYVCk7CisgICAgICAgICAgICAgICAgYmFja2luZ1N0b3JlQ3Vyc29yID0gbV9iYWNraW5nU3Rv
cmUtPm9wZW5JbmRleEtleUN1cnNvcih0cmFuc2FjdGlvbi0+YmFja2luZ1N0b3JlVHJhbnNhY3Rp
b24oKSwgbV9kYXRhYmFzZUlkLCBtX29iamVjdFN0b3JlSWQsIG1faW5kZXhJZCwgbV9rZXlSYW5n
ZS5nZXQoKSwgSURCQ3Vyc29yQmFja2VuZEludGVyZmFjZTo6TmV4dCk7CiAgICAgICAgICAgICBl
bHNlCiAgICAgICAgICAgICAgICAgLy8gSW5kZXggUmVmZXJlbmNlZCBWYWx1ZSBSZXRyaWV2YWwg
T3BlcmF0aW9uCi0gICAgICAgICAgICAgICAgYmFja2luZ1N0b3JlQ3Vyc29yID0gbV9iYWNraW5n
U3RvcmUtPm9wZW5JbmRleEN1cnNvcih0cmFuc2FjdGlvbi0+YmFja2luZ1N0b3JlVHJhbnNhY3Rp
b24oKSwgbV9kYXRhYmFzZUlkLCBtX29iamVjdFN0b3JlSWQsIG1faW5kZXhJZCwgbV9rZXlSYW5n
ZS5nZXQoKSwgSURCQ3Vyc29yOjpORVhUKTsKKyAgICAgICAgICAgICAgICBiYWNraW5nU3RvcmVD
dXJzb3IgPSBtX2JhY2tpbmdTdG9yZS0+b3BlbkluZGV4Q3Vyc29yKHRyYW5zYWN0aW9uLT5iYWNr
aW5nU3RvcmVUcmFuc2FjdGlvbigpLCBtX2RhdGFiYXNlSWQsIG1fb2JqZWN0U3RvcmVJZCwgbV9p
bmRleElkLCBtX2tleVJhbmdlLmdldCgpLCBJREJDdXJzb3JCYWNrZW5kSW50ZXJmYWNlOjpOZXh0
KTsKICAgICAgICAgfQogCiAgICAgICAgIGlmICghYmFja2luZ1N0b3JlQ3Vyc29yKSB7CkBAIC03
ODYsNyArNzg3LDcgQEAgdm9pZCBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpwdXQoaW50NjRfdCB0
cmFuc2FjdGlvbklkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIFAKICAgICBJREJUcmFuc2FjdGlv
bkJhY2tlbmRJbXBsKiB0cmFuc2FjdGlvbiA9IG1fdHJhbnNhY3Rpb25zLmdldCh0cmFuc2FjdGlv
bklkKTsKICAgICBpZiAoIXRyYW5zYWN0aW9uKQogICAgICAgICByZXR1cm47Ci0gICAgQVNTRVJU
KHRyYW5zYWN0aW9uLT5tb2RlKCkgIT0gSURCVHJhbnNhY3Rpb246OlJFQURfT05MWSk7CisgICAg
QVNTRVJUKHRyYW5zYWN0aW9uLT5tb2RlKCkgIT0gSURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNl
OjpSZWFkT25seSk7CiAKICAgICBjb25zdCBJREJPYmplY3RTdG9yZU1ldGFkYXRhIG9iamVjdFN0
b3JlTWV0YWRhdGEgPSBtX21ldGFkYXRhLm9iamVjdFN0b3Jlcy5nZXQob2JqZWN0U3RvcmVJZCk7
CiAKQEAgLTc5OCw3ICs3OTksNyBAQCB2b2lkIElEQkRhdGFiYXNlQmFja2VuZEltcGw6OnB1dChp
bnQ2NF90IHRyYW5zYWN0aW9uSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgUAogdm9pZCBQdXRP
cGVyYXRpb246OnBlcmZvcm0oSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbCogdHJhbnNhY3Rpb24p
CiB7CiAgICAgSURCX1RSQUNFKCJQdXRPcGVyYXRpb24iKTsKLSAgICBBU1NFUlQodHJhbnNhY3Rp
b24tPm1vZGUoKSAhPSBJREJUcmFuc2FjdGlvbjo6UkVBRF9PTkxZKTsKKyAgICBBU1NFUlQodHJh
bnNhY3Rpb24tPm1vZGUoKSAhPSBJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2U6OlJlYWRPbmx5
KTsKICAgICBBU1NFUlQobV9pbmRleElkcy5zaXplKCkgPT0gbV9pbmRleEtleXMuc2l6ZSgpKTsK
ICAgICBib29sIGtleVdhc0dlbmVyYXRlZCA9IGZhbHNlOwogCkBAIC04NzIsNyArODczLDcgQEAg
dm9pZCBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpzZXRJbmRleEtleXMoaW50NjRfdCB0cmFuc2Fj
dGlvbklkLCBpbnQ2NF90IG9iamVjdFMKICAgICBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsKiB0
cmFuc2FjdGlvbiA9IG1fdHJhbnNhY3Rpb25zLmdldCh0cmFuc2FjdGlvbklkKTsKICAgICBpZiAo
IXRyYW5zYWN0aW9uKQogICAgICAgICByZXR1cm47Ci0gICAgQVNTRVJUKHRyYW5zYWN0aW9uLT5t
b2RlKCkgPT0gSURCVHJhbnNhY3Rpb246OlZFUlNJT05fQ0hBTkdFKTsKKyAgICBBU1NFUlQodHJh
bnNhY3Rpb24tPm1vZGUoKSA9PSBJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2U6OlZlcnNpb25D
aGFuZ2UpOwogCiAgICAgUmVmUHRyPElEQktleT4gcHJpbWFyeUtleSA9IHBycFByaW1hcnlLZXk7
CiAgICAgUmVmUHRyPElEQkJhY2tpbmdTdG9yZT4gc3RvcmUgPSBiYWNraW5nU3RvcmUoKTsKQEAg
LTkyOSw3ICs5MzAsNyBAQCB2b2lkIFNldEluZGV4ZXNSZWFkeU9wZXJhdGlvbjo6cGVyZm9ybShJ
REJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsKiB0cmFuc2FjdGlvbikKICAgICAgICAgdHJhbnNhY3Rp
b24tPmRpZENvbXBsZXRlUHJlZW1wdGl2ZUV2ZW50KCk7CiB9CiAKLXZvaWQgSURCRGF0YWJhc2VC
YWNrZW5kSW1wbDo6b3BlbkN1cnNvcihpbnQ2NF90IHRyYW5zYWN0aW9uSWQsIGludDY0X3Qgb2Jq
ZWN0U3RvcmVJZCwgaW50NjRfdCBpbmRleElkLCBQYXNzUmVmUHRyPElEQktleVJhbmdlPiBrZXlS
YW5nZSwgdW5zaWduZWQgc2hvcnQgZGlyZWN0aW9uLCBib29sIGtleU9ubHksIFRhc2tUeXBlIHRh
c2tUeXBlLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tzKQordm9pZCBJREJEYXRh
YmFzZUJhY2tlbmRJbXBsOjpvcGVuQ3Vyc29yKGludDY0X3QgdHJhbnNhY3Rpb25JZCwgaW50NjRf
dCBvYmplY3RTdG9yZUlkLCBpbnQ2NF90IGluZGV4SWQsIFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+
IGtleVJhbmdlLCBJREJDdXJzb3JCYWNrZW5kSW50ZXJmYWNlOjpEaXJlY3Rpb24gZGlyZWN0aW9u
LCBib29sIGtleU9ubHksIFRhc2tUeXBlIHRhc2tUeXBlLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNr
cz4gY2FsbGJhY2tzKQogewogICAgIElEQl9UUkFDRSgiSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6
b3BlbkN1cnNvciIpOwogICAgIElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGwqIHRyYW5zYWN0aW9u
ID0gbV90cmFuc2FjdGlvbnMuZ2V0KHRyYW5zYWN0aW9uSWQpOwpAQCAtOTUwLDE3ICs5NTEsMTYg
QEAgdm9pZCBPcGVuQ3Vyc29yT3BlcmF0aW9uOjpwZXJmb3JtKElEQlRyYW5zYWN0aW9uQmFja2Vu
ZEltcGwqIHRyYW5zYWN0aW9uKQogICAgIGlmIChtX3Rhc2tUeXBlID09IElEQkRhdGFiYXNlQmFj
a2VuZEludGVyZmFjZTo6UHJlZW1wdGl2ZVRhc2spCiAgICAgICAgIHRyYW5zYWN0aW9uLT5hZGRQ
cmVlbXB0aXZlRXZlbnQoKTsKIAotICAgIElEQkN1cnNvcjo6RGlyZWN0aW9uIGRpcmVjdGlvbiA9
IHN0YXRpY19jYXN0PElEQkN1cnNvcjo6RGlyZWN0aW9uPihtX2RpcmVjdGlvbik7CiAgICAgUmVm
UHRyPElEQkJhY2tpbmdTdG9yZTo6Q3Vyc29yPiBiYWNraW5nU3RvcmVDdXJzb3I7CiAgICAgaWYg
KG1faW5kZXhJZCA9PSBJREJJbmRleE1ldGFkYXRhOjpJbnZhbGlkSWQpIHsKICAgICAgICAgQVNT
RVJUKG1fY3Vyc29yVHlwZSAhPSBJREJDdXJzb3JCYWNrZW5kSW50ZXJmYWNlOjpLZXlPbmx5KTsK
LSAgICAgICAgYmFja2luZ1N0b3JlQ3Vyc29yID0gbV9iYWNraW5nU3RvcmUtPm9wZW5PYmplY3RT
dG9yZUN1cnNvcih0cmFuc2FjdGlvbi0+YmFja2luZ1N0b3JlVHJhbnNhY3Rpb24oKSwgbV9kYXRh
YmFzZUlkLCBtX29iamVjdFN0b3JlSWQsIG1fa2V5UmFuZ2UuZ2V0KCksIGRpcmVjdGlvbik7Cisg
ICAgICAgIGJhY2tpbmdTdG9yZUN1cnNvciA9IG1fYmFja2luZ1N0b3JlLT5vcGVuT2JqZWN0U3Rv
cmVDdXJzb3IodHJhbnNhY3Rpb24tPmJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uKCksIG1fZGF0YWJh
c2VJZCwgbV9vYmplY3RTdG9yZUlkLCBtX2tleVJhbmdlLmdldCgpLCBtX2RpcmVjdGlvbik7CiAg
ICAgfSBlbHNlIHsKICAgICAgICAgQVNTRVJUKG1fdGFza1R5cGUgPT0gSURCRGF0YWJhc2VCYWNr
ZW5kSW50ZXJmYWNlOjpOb3JtYWxUYXNrKTsKICAgICAgICAgaWYgKG1fY3Vyc29yVHlwZSA9PSBJ
REJDdXJzb3JCYWNrZW5kSW50ZXJmYWNlOjpLZXlPbmx5KQotICAgICAgICAgICAgYmFja2luZ1N0
b3JlQ3Vyc29yID0gbV9iYWNraW5nU3RvcmUtPm9wZW5JbmRleEtleUN1cnNvcih0cmFuc2FjdGlv
bi0+YmFja2luZ1N0b3JlVHJhbnNhY3Rpb24oKSwgbV9kYXRhYmFzZUlkLCBtX29iamVjdFN0b3Jl
SWQsIG1faW5kZXhJZCwgbV9rZXlSYW5nZS5nZXQoKSwgZGlyZWN0aW9uKTsKKyAgICAgICAgICAg
IGJhY2tpbmdTdG9yZUN1cnNvciA9IG1fYmFja2luZ1N0b3JlLT5vcGVuSW5kZXhLZXlDdXJzb3Io
dHJhbnNhY3Rpb24tPmJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uKCksIG1fZGF0YWJhc2VJZCwgbV9v
YmplY3RTdG9yZUlkLCBtX2luZGV4SWQsIG1fa2V5UmFuZ2UuZ2V0KCksIG1fZGlyZWN0aW9uKTsK
ICAgICAgICAgZWxzZQotICAgICAgICAgICAgYmFja2luZ1N0b3JlQ3Vyc29yID0gbV9iYWNraW5n
U3RvcmUtPm9wZW5JbmRleEN1cnNvcih0cmFuc2FjdGlvbi0+YmFja2luZ1N0b3JlVHJhbnNhY3Rp
b24oKSwgbV9kYXRhYmFzZUlkLCBtX29iamVjdFN0b3JlSWQsIG1faW5kZXhJZCwgbV9rZXlSYW5n
ZS5nZXQoKSwgZGlyZWN0aW9uKTsKKyAgICAgICAgICAgIGJhY2tpbmdTdG9yZUN1cnNvciA9IG1f
YmFja2luZ1N0b3JlLT5vcGVuSW5kZXhDdXJzb3IodHJhbnNhY3Rpb24tPmJhY2tpbmdTdG9yZVRy
YW5zYWN0aW9uKCksIG1fZGF0YWJhc2VJZCwgbV9vYmplY3RTdG9yZUlkLCBtX2luZGV4SWQsIG1f
a2V5UmFuZ2UuZ2V0KCksIG1fZGlyZWN0aW9uKTsKICAgICB9CiAKICAgICBpZiAoIWJhY2tpbmdT
dG9yZUN1cnNvcikgewpAQCAtOTkxLDkgKzk5MSw5IEBAIHZvaWQgQ291bnRPcGVyYXRpb246OnBl
cmZvcm0oSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbCogdHJhbnNhY3Rpb24pCiAgICAgUmVmUHRy
PElEQkJhY2tpbmdTdG9yZTo6Q3Vyc29yPiBiYWNraW5nU3RvcmVDdXJzb3I7CiAKICAgICBpZiAo
bV9pbmRleElkID09IElEQkluZGV4TWV0YWRhdGE6OkludmFsaWRJZCkKLSAgICAgICAgYmFja2lu
Z1N0b3JlQ3Vyc29yID0gbV9iYWNraW5nU3RvcmUtPm9wZW5PYmplY3RTdG9yZUtleUN1cnNvcih0
cmFuc2FjdGlvbi0+YmFja2luZ1N0b3JlVHJhbnNhY3Rpb24oKSwgbV9kYXRhYmFzZUlkLCBtX29i
amVjdFN0b3JlSWQsIG1fa2V5UmFuZ2UuZ2V0KCksIElEQkN1cnNvcjo6TkVYVCk7CisgICAgICAg
IGJhY2tpbmdTdG9yZUN1cnNvciA9IG1fYmFja2luZ1N0b3JlLT5vcGVuT2JqZWN0U3RvcmVLZXlD
dXJzb3IodHJhbnNhY3Rpb24tPmJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uKCksIG1fZGF0YWJhc2VJ
ZCwgbV9vYmplY3RTdG9yZUlkLCBtX2tleVJhbmdlLmdldCgpLCBJREJDdXJzb3JCYWNrZW5kSW50
ZXJmYWNlOjpOZXh0KTsKICAgICBlbHNlCi0gICAgICAgIGJhY2tpbmdTdG9yZUN1cnNvciA9IG1f
YmFja2luZ1N0b3JlLT5vcGVuSW5kZXhLZXlDdXJzb3IodHJhbnNhY3Rpb24tPmJhY2tpbmdTdG9y
ZVRyYW5zYWN0aW9uKCksIG1fZGF0YWJhc2VJZCwgbV9vYmplY3RTdG9yZUlkLCBtX2luZGV4SWQs
IG1fa2V5UmFuZ2UuZ2V0KCksIElEQkN1cnNvcjo6TkVYVCk7CisgICAgICAgIGJhY2tpbmdTdG9y
ZUN1cnNvciA9IG1fYmFja2luZ1N0b3JlLT5vcGVuSW5kZXhLZXlDdXJzb3IodHJhbnNhY3Rpb24t
PmJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uKCksIG1fZGF0YWJhc2VJZCwgbV9vYmplY3RTdG9yZUlk
LCBtX2luZGV4SWQsIG1fa2V5UmFuZ2UuZ2V0KCksIElEQkN1cnNvckJhY2tlbmRJbnRlcmZhY2U6
Ok5leHQpOwogICAgIGlmICghYmFja2luZ1N0b3JlQ3Vyc29yKSB7CiAgICAgICAgIG1fY2FsbGJh
Y2tzLT5vblN1Y2Nlc3MoY291bnQpOwogICAgICAgICByZXR1cm47CkBAIC0xMDEyLDcgKzEwMTIs
NyBAQCB2b2lkIElEQkRhdGFiYXNlQmFja2VuZEltcGw6OmRlbGV0ZVJhbmdlKGludDY0X3QgdHJh
bnNhY3Rpb25JZCwgaW50NjRfdCBvYmplY3RTdAogICAgIElEQlRyYW5zYWN0aW9uQmFja2VuZElt
cGwqIHRyYW5zYWN0aW9uID0gbV90cmFuc2FjdGlvbnMuZ2V0KHRyYW5zYWN0aW9uSWQpOwogICAg
IGlmICghdHJhbnNhY3Rpb24pCiAgICAgICAgIHJldHVybjsKLSAgICBBU1NFUlQodHJhbnNhY3Rp
b24tPm1vZGUoKSAhPSBJREJUcmFuc2FjdGlvbjo6UkVBRF9PTkxZKTsKKyAgICBBU1NFUlQodHJh
bnNhY3Rpb24tPm1vZGUoKSAhPSBJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2U6OlJlYWRPbmx5
KTsKIAogICAgIHRyYW5zYWN0aW9uLT5zY2hlZHVsZVRhc2soRGVsZXRlUmFuZ2VPcGVyYXRpb246
OmNyZWF0ZShtX2JhY2tpbmdTdG9yZSwgaWQoKSwgb2JqZWN0U3RvcmVJZCwga2V5UmFuZ2UsIGNh
bGxiYWNrcykpOwogfQpAQCAtMTAyMCw3ICsxMDIwLDcgQEAgdm9pZCBJREJEYXRhYmFzZUJhY2tl
bmRJbXBsOjpkZWxldGVSYW5nZShpbnQ2NF90IHRyYW5zYWN0aW9uSWQsIGludDY0X3Qgb2JqZWN0
U3QKIHZvaWQgRGVsZXRlUmFuZ2VPcGVyYXRpb246OnBlcmZvcm0oSURCVHJhbnNhY3Rpb25CYWNr
ZW5kSW1wbCogdHJhbnNhY3Rpb24pCiB7CiAgICAgSURCX1RSQUNFKCJEZWxldGVSYW5nZU9wZXJh
dGlvbiIpOwotICAgIFJlZlB0cjxJREJCYWNraW5nU3RvcmU6OkN1cnNvcj4gYmFja2luZ1N0b3Jl
Q3Vyc29yID0gbV9iYWNraW5nU3RvcmUtPm9wZW5PYmplY3RTdG9yZUN1cnNvcih0cmFuc2FjdGlv
bi0+YmFja2luZ1N0b3JlVHJhbnNhY3Rpb24oKSwgbV9kYXRhYmFzZUlkLCBtX29iamVjdFN0b3Jl
SWQsIG1fa2V5UmFuZ2UuZ2V0KCksIElEQkN1cnNvcjo6TkVYVCk7CisgICAgUmVmUHRyPElEQkJh
Y2tpbmdTdG9yZTo6Q3Vyc29yPiBiYWNraW5nU3RvcmVDdXJzb3IgPSBtX2JhY2tpbmdTdG9yZS0+
b3Blbk9iamVjdFN0b3JlQ3Vyc29yKHRyYW5zYWN0aW9uLT5iYWNraW5nU3RvcmVUcmFuc2FjdGlv
bigpLCBtX2RhdGFiYXNlSWQsIG1fb2JqZWN0U3RvcmVJZCwgbV9rZXlSYW5nZS5nZXQoKSwgSURC
Q3Vyc29yQmFja2VuZEludGVyZmFjZTo6TmV4dCk7CiAgICAgaWYgKGJhY2tpbmdTdG9yZUN1cnNv
cikgewogICAgICAgICBkbyB7CiAgICAgICAgICAgICBtX2JhY2tpbmdTdG9yZS0+ZGVsZXRlUmVj
b3JkKHRyYW5zYWN0aW9uLT5iYWNraW5nU3RvcmVUcmFuc2FjdGlvbigpLCBtX2RhdGFiYXNlSWQs
IG1fb2JqZWN0U3RvcmVJZCwgYmFja2luZ1N0b3JlQ3Vyc29yLT5yZWNvcmRJZGVudGlmaWVyKCkp
OwpAQCAtMTAzNiw3ICsxMDM2LDcgQEAgdm9pZCBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpjbGVh
cihpbnQ2NF90IHRyYW5zYWN0aW9uSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwKICAgICBJREJU
cmFuc2FjdGlvbkJhY2tlbmRJbXBsKiB0cmFuc2FjdGlvbiA9IG1fdHJhbnNhY3Rpb25zLmdldCh0
cmFuc2FjdGlvbklkKTsKICAgICBpZiAoIXRyYW5zYWN0aW9uKQogICAgICAgICByZXR1cm47Ci0g
ICAgQVNTRVJUKHRyYW5zYWN0aW9uLT5tb2RlKCkgIT0gSURCVHJhbnNhY3Rpb246OlJFQURfT05M
WSk7CisgICAgQVNTRVJUKHRyYW5zYWN0aW9uLT5tb2RlKCkgIT0gSURCRGF0YWJhc2VCYWNrZW5k
SW50ZXJmYWNlOjpSZWFkT25seSk7CiAKICAgICB0cmFuc2FjdGlvbi0+c2NoZWR1bGVUYXNrKENs
ZWFyT3BlcmF0aW9uOjpjcmVhdGUobV9iYWNraW5nU3RvcmUsIGlkKCksIG9iamVjdFN0b3JlSWQs
IGNhbGxiYWNrcykpOwogfQpAQCAtMTA3OSw3ICsxMDc5LDcgQEAgdm9pZCBJREJEYXRhYmFzZUJh
Y2tlbmRJbXBsOjpWZXJzaW9uQ2hhbmdlT3BlcmF0aW9uOjpwZXJmb3JtKElEQlRyYW5zYWN0aW9u
QmFja2UKIHZvaWQgSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6dHJhbnNhY3Rpb25TdGFydGVkKFBh
c3NSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbD4gcHJwVHJhbnNhY3Rpb24pCiB7CiAg
ICAgUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGw+IHRyYW5zYWN0aW9uID0gcHJwVHJh
bnNhY3Rpb247Ci0gICAgaWYgKHRyYW5zYWN0aW9uLT5tb2RlKCkgPT0gSURCVHJhbnNhY3Rpb246
OlZFUlNJT05fQ0hBTkdFKSB7CisgICAgaWYgKHRyYW5zYWN0aW9uLT5tb2RlKCkgPT0gSURCRGF0
YWJhc2VCYWNrZW5kSW50ZXJmYWNlOjpWZXJzaW9uQ2hhbmdlKSB7CiAgICAgICAgIEFTU0VSVCgh
bV9ydW5uaW5nVmVyc2lvbkNoYW5nZVRyYW5zYWN0aW9uKTsKICAgICAgICAgbV9ydW5uaW5nVmVy
c2lvbkNoYW5nZVRyYW5zYWN0aW9uID0gdHJhbnNhY3Rpb247CiAgICAgfQpAQCAtMTA5MSw3ICsx
MDkxLDcgQEAgdm9pZCBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjp0cmFuc2FjdGlvbkZpbmlzaGVk
KFBhc3NSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW4KICAgICBBU1NFUlQobV90cmFuc2FjdGlv
bnMuY29udGFpbnModHJhbnNhY3Rpb24tPmlkKCkpKTsKICAgICBBU1NFUlQobV90cmFuc2FjdGlv
bnMuZ2V0KHRyYW5zYWN0aW9uLT5pZCgpKSA9PSB0cmFuc2FjdGlvbi5nZXQoKSk7CiAgICAgbV90
cmFuc2FjdGlvbnMucmVtb3ZlKHRyYW5zYWN0aW9uLT5pZCgpKTsKLSAgICBpZiAodHJhbnNhY3Rp
b24tPm1vZGUoKSA9PSBJREJUcmFuc2FjdGlvbjo6VkVSU0lPTl9DSEFOR0UpIHsKKyAgICBpZiAo
dHJhbnNhY3Rpb24tPm1vZGUoKSA9PSBJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2U6OlZlcnNp
b25DaGFuZ2UpIHsKICAgICAgICAgQVNTRVJUKHRyYW5zYWN0aW9uLmdldCgpID09IG1fcnVubmlu
Z1ZlcnNpb25DaGFuZ2VUcmFuc2FjdGlvbi5nZXQoKSk7CiAgICAgICAgIG1fcnVubmluZ1ZlcnNp
b25DaGFuZ2VUcmFuc2FjdGlvbi5jbGVhcigpOwogICAgIH0KQEAgLTExMDAsNyArMTEwMCw3IEBA
IHZvaWQgSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6dHJhbnNhY3Rpb25GaW5pc2hlZChQYXNzUmVm
UHRyPElEQlRyYW5zYWN0aW9uQmFja2VuCiB2b2lkIElEQkRhdGFiYXNlQmFja2VuZEltcGw6OnRy
YW5zYWN0aW9uRmluaXNoZWRBbmRBYm9ydEZpcmVkKFBhc3NSZWZQdHI8SURCVHJhbnNhY3Rpb25C
YWNrZW5kSW1wbD4gcHJwVHJhbnNhY3Rpb24pCiB7CiAgICAgUmVmUHRyPElEQlRyYW5zYWN0aW9u
QmFja2VuZEltcGw+IHRyYW5zYWN0aW9uID0gcHJwVHJhbnNhY3Rpb247Ci0gICAgaWYgKHRyYW5z
YWN0aW9uLT5tb2RlKCkgPT0gSURCVHJhbnNhY3Rpb246OlZFUlNJT05fQ0hBTkdFKSB7CisgICAg
aWYgKHRyYW5zYWN0aW9uLT5tb2RlKCkgPT0gSURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlOjpW
ZXJzaW9uQ2hhbmdlKSB7CiAgICAgICAgIC8vIElmIHRoaXMgd2FzIGFuIG9wZW4td2l0aC12ZXJz
aW9uIGNhbGwsIHRoZXJlIHdpbGwgYmUgYSAic2Vjb25kCiAgICAgICAgIC8vIGhhbGYiIG9wZW4g
Y2FsbCB3YWl0aW5nIGZvciB1cyBpbiBwcm9jZXNzUGVuZGluZ0NhbGxzLgogICAgICAgICAvLyBG
SVhNRTogV2hlbiB3ZSBubyBsb25nZXIgc3VwcG9ydCBzZXRWZXJzaW9uLCBhc3NlcnQgc3VjaCBh
IHRoaW5nLgpAQCAtMTExNSw3ICsxMTE1LDcgQEAgdm9pZCBJREJEYXRhYmFzZUJhY2tlbmRJbXBs
Ojp0cmFuc2FjdGlvbkZpbmlzaGVkQW5kQWJvcnRGaXJlZChQYXNzUmVmUHRyPElEQlRyYW4KIHZv
aWQgSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6dHJhbnNhY3Rpb25GaW5pc2hlZEFuZENvbXBsZXRl
RmlyZWQoUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsPiBwcnBUcmFuc2FjdGlv
bikKIHsKICAgICBSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbD4gdHJhbnNhY3Rpb24g
PSBwcnBUcmFuc2FjdGlvbjsKLSAgICBpZiAodHJhbnNhY3Rpb24tPm1vZGUoKSA9PSBJREJUcmFu
c2FjdGlvbjo6VkVSU0lPTl9DSEFOR0UpCisgICAgaWYgKHRyYW5zYWN0aW9uLT5tb2RlKCkgPT0g
SURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlOjpWZXJzaW9uQ2hhbmdlKQogICAgICAgICBwcm9j
ZXNzUGVuZGluZ0NhbGxzKCk7CiB9CiAKQEAgLTExNjUsNyArMTE2NSw3IEBAIHZvaWQgSURCRGF0
YWJhc2VCYWNrZW5kSW1wbDo6cHJvY2Vzc1BlbmRpbmdDYWxscygpCiAKIHZvaWQgSURCRGF0YWJh
c2VCYWNrZW5kSW1wbDo6Y3JlYXRlVHJhbnNhY3Rpb24oaW50NjRfdCB0cmFuc2FjdGlvbklkLCBQ
YXNzUmVmUHRyPElEQkRhdGFiYXNlQ2FsbGJhY2tzPiBjYWxsYmFja3MsIGNvbnN0IFZlY3Rvcjxp
bnQ2NF90PiYgb2JqZWN0U3RvcmVJZHMsIHVuc2lnbmVkIHNob3J0IG1vZGUpCiB7Ci0gICAgUmVm
UHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGw+IHRyYW5zYWN0aW9uID0gSURCVHJhbnNhY3Rp
b25CYWNrZW5kSW1wbDo6Y3JlYXRlKHRyYW5zYWN0aW9uSWQsIGNhbGxiYWNrcywgb2JqZWN0U3Rv
cmVJZHMsIHN0YXRpY19jYXN0PElEQlRyYW5zYWN0aW9uOjpNb2RlPihtb2RlKSwgdGhpcyk7Cisg
ICAgUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGw+IHRyYW5zYWN0aW9uID0gSURCVHJh
bnNhY3Rpb25CYWNrZW5kSW1wbDo6Y3JlYXRlKHRyYW5zYWN0aW9uSWQsIGNhbGxiYWNrcywgb2Jq
ZWN0U3RvcmVJZHMsIHN0YXRpY19jYXN0PElEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZTo6VHJh
bnNhY3Rpb25Nb2RlPihtb2RlKSwgdGhpcyk7CiAgICAgQVNTRVJUKCFtX3RyYW5zYWN0aW9ucy5j
b250YWlucyh0cmFuc2FjdGlvbklkKSk7CiAgICAgbV90cmFuc2FjdGlvbnMuYWRkKHRyYW5zYWN0
aW9uSWQsIHRyYW5zYWN0aW9uLmdldCgpKTsKIH0KQEAgLTEyNTcsNyArMTI1Nyw3IEBAIHZvaWQg
SURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6cnVuSW50VmVyc2lvbkNoYW5nZVRyYW5zYWN0aW9uKFBh
c3NSZWZQdHI8SURCQ2FsbGJhCiAgICAgfQogCiAgICAgVmVjdG9yPGludDY0X3Q+IG9iamVjdFN0
b3JlSWRzOwotICAgIGNyZWF0ZVRyYW5zYWN0aW9uKHRyYW5zYWN0aW9uSWQsIGRhdGFiYXNlQ2Fs
bGJhY2tzLCBvYmplY3RTdG9yZUlkcywgSURCVHJhbnNhY3Rpb246OlZFUlNJT05fQ0hBTkdFKTsK
KyAgICBjcmVhdGVUcmFuc2FjdGlvbih0cmFuc2FjdGlvbklkLCBkYXRhYmFzZUNhbGxiYWNrcywg
b2JqZWN0U3RvcmVJZHMsIElEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZTo6VmVyc2lvbkNoYW5n
ZSk7CiAgICAgUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGw+IHRyYW5zYWN0aW9uID0g
bV90cmFuc2FjdGlvbnMuZ2V0KHRyYW5zYWN0aW9uSWQpOwogCiAgICAgdHJhbnNhY3Rpb24tPnNj
aGVkdWxlVGFzayhWZXJzaW9uQ2hhbmdlT3BlcmF0aW9uOjpjcmVhdGUodGhpcywgdHJhbnNhY3Rp
b25JZCwgcmVxdWVzdGVkVmVyc2lvbiwgY2FsbGJhY2tzLCBkYXRhYmFzZUNhbGxiYWNrcyksIFZl
cnNpb25DaGFuZ2VBYm9ydE9wZXJhdGlvbjo6Y3JlYXRlKHRoaXMsIG1fbWV0YWRhdGEudmVyc2lv
biwgbV9tZXRhZGF0YS5pbnRWZXJzaW9uKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmRJbXBsLmggYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmRJbXBsLmgKaW5kZXggMWViYzg3
ODEyZTVhZTk2ZGZkYjU4NzdkMWRmM2I5NWFiOWIzMDM2ZC4uNGQ2YjU0NDhmZmU2NDU4MzAxNWJk
N2ZiY2FiODcxZmQ1NWE0NjQ4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvSURCRGF0YWJhc2VCYWNrZW5kSW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQmFja2VuZEltcGwuaApAQCAtMjcsNyArMjcsNyBA
QAogI2RlZmluZSBJREJEYXRhYmFzZUJhY2tlbmRJbXBsX2gKIAogI2luY2x1ZGUgIklEQkNhbGxi
YWNrcy5oIgotI2luY2x1ZGUgIklEQkRhdGFiYXNlLmgiCisjaW5jbHVkZSAiSURCTWV0YWRhdGEu
aCIKICNpbmNsdWRlIDxzdGRpbnQuaD4KICNpbmNsdWRlIDx3dGYvRGVxdWUuaD4KICNpbmNsdWRl
IDx3dGYvSGFzaE1hcC5oPgpAQCAtODQsNyArODQsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2
b2lkIHB1dChpbnQ2NF90IHRyYW5zYWN0aW9uSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgUGFz
c1JlZlB0cjxTaGFyZWRCdWZmZXI+IHZhbHVlLCBQYXNzUmVmUHRyPElEQktleT4sIFB1dE1vZGUs
IFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiwgY29uc3QgVmVjdG9yPGludDY0X3Q+JiBpbmRleElk
cywgY29uc3QgVmVjdG9yPEluZGV4S2V5cz4mKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQg
c2V0SW5kZXhLZXlzKGludDY0X3QgdHJhbnNhY3Rpb25JZCwgaW50NjRfdCBvYmplY3RTdG9yZUlk
LCBQYXNzUmVmUHRyPElEQktleT4gcHJwUHJpbWFyeUtleSwgY29uc3QgVmVjdG9yPGludDY0X3Q+
JiBpbmRleElkcywgY29uc3QgVmVjdG9yPEluZGV4S2V5cz4mKSBPVkVSUklERTsKICAgICB2aXJ0
dWFsIHZvaWQgc2V0SW5kZXhlc1JlYWR5KGludDY0X3QgdHJhbnNhY3Rpb25JZCwgaW50NjRfdCBv
YmplY3RTdG9yZUlkLCBjb25zdCBWZWN0b3I8aW50NjRfdD4mIGluZGV4SWRzKSBPVkVSUklERTsK
LSAgICB2aXJ0dWFsIHZvaWQgb3BlbkN1cnNvcihpbnQ2NF90IHRyYW5zYWN0aW9uSWQsIGludDY0
X3Qgb2JqZWN0U3RvcmVJZCwgaW50NjRfdCBpbmRleElkLCBQYXNzUmVmUHRyPElEQktleVJhbmdl
PiwgdW5zaWduZWQgc2hvcnQgZGlyZWN0aW9uLCBib29sIGtleU9ubHksIFRhc2tUeXBlLCBQYXNz
UmVmUHRyPElEQkNhbGxiYWNrcz4pIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBvcGVuQ3Vy
c29yKGludDY0X3QgdHJhbnNhY3Rpb25JZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBpbnQ2NF90
IGluZGV4SWQsIFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+LCBJREJDdXJzb3JCYWNrZW5kSW50ZXJm
YWNlOjpEaXJlY3Rpb24sIGJvb2wga2V5T25seSwgVGFza1R5cGUsIFBhc3NSZWZQdHI8SURCQ2Fs
bGJhY2tzPikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIGNvdW50KGludDY0X3QgdHJhbnNh
Y3Rpb25JZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBpbnQ2NF90IGluZGV4SWQsIFBhc3NSZWZQ
dHI8SURCS2V5UmFuZ2U+LCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4pIE9WRVJSSURFOwogICAg
IHZpcnR1YWwgdm9pZCBkZWxldGVSYW5nZShpbnQ2NF90IHRyYW5zYWN0aW9uSWQsIGludDY0X3Qg
b2JqZWN0U3RvcmVJZCwgUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4sIFBhc3NSZWZQdHI8SURCQ2Fs
bGJhY2tzPikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIGNsZWFyKGludDY0X3QgdHJhbnNh
Y3Rpb25JZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4p
IE9WRVJSSURFOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
SURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2UuaAppbmRleCBlMDAxNGViM2UyZGNj
MmEzZjQzNDI1MDc0NDU3OTMwNWI3MTY3YzQ2Li5iYThiYzYyNTE0ODIwZDI2NmJjYTEyOTkzZmMz
ZGU2MjM2YjI0ZjRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9JREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2UuaApAQCAtMjYsNyArMjYs
OCBAQAogI2lmbmRlZiBJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2VfaAogI2RlZmluZSBJREJE
YXRhYmFzZUJhY2tlbmRJbnRlcmZhY2VfaAogCi0jaW5jbHVkZSAiSURCVHJhbnNhY3Rpb24uaCIK
KyNpbmNsdWRlICJJREJDdXJzb3JCYWNrZW5kSW50ZXJmYWNlLmgiCisjaW5jbHVkZSAiSURCRGF0
YWJhc2VFcnJvci5oIgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3Rm
L1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KQEAgLTc2LDYg
Kzc3LDEyIEBAIHB1YmxpYzoKICAgICAgICAgQ3Vyc29yVXBkYXRlCiAgICAgfTsKIAorICAgIGVu
dW0gVHJhbnNhY3Rpb25Nb2RlIHsKKyAgICAgICAgUmVhZE9ubHkgPSAwLAorICAgICAgICBSZWFk
V3JpdGUgPSAxLAorICAgICAgICBWZXJzaW9uQ2hhbmdlID0gMgorICAgIH07CisKICAgICBzdGF0
aWMgY29uc3QgaW50NjRfdCBNaW5pbXVtSW5kZXhJZCA9IDMwOwogCiAgICAgdHlwZWRlZiBWZWN0
b3I8UmVmUHRyPElEQktleT4gPiBJbmRleEtleXM7CkBAIC04NSw3ICs5Miw3IEBAIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIHZvaWQgcHV0KGludDY0X3QgdHJhbnNhY3Rpb25JZCwgaW50NjRfdCBvYmpl
Y3RTdG9yZUlkLCBQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gdmFsdWUsIFBhc3NSZWZQdHI8SURC
S2V5PiwgUHV0TW9kZSwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+LCBjb25zdCBWZWN0b3I8aW50
NjRfdD4mIGluZGV4SWRzLCBjb25zdCBWZWN0b3I8SW5kZXhLZXlzPiYpID0gMDsKICAgICB2aXJ0
dWFsIHZvaWQgc2V0SW5kZXhLZXlzKGludDY0X3QgdHJhbnNhY3Rpb25JZCwgaW50NjRfdCBvYmpl
Y3RTdG9yZUlkLCBQYXNzUmVmUHRyPElEQktleT4gcHJwUHJpbWFyeUtleSwgY29uc3QgVmVjdG9y
PGludDY0X3Q+JiBpbmRleElkcywgY29uc3QgVmVjdG9yPEluZGV4S2V5cz4mKSA9IDA7CiAgICAg
dmlydHVhbCB2b2lkIHNldEluZGV4ZXNSZWFkeShpbnQ2NF90IHRyYW5zYWN0aW9uSWQsIGludDY0
X3Qgb2JqZWN0U3RvcmVJZCwgY29uc3QgVmVjdG9yPGludDY0X3Q+JiBpbmRleElkcykgPSAwOwot
ICAgIHZpcnR1YWwgdm9pZCBvcGVuQ3Vyc29yKGludDY0X3QgdHJhbnNhY3Rpb25JZCwgaW50NjRf
dCBvYmplY3RTdG9yZUlkLCBpbnQ2NF90IGluZGV4SWQsIFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+
LCB1bnNpZ25lZCBzaG9ydCBkaXJlY3Rpb24sIGJvb2wga2V5T25seSwgVGFza1R5cGUsIFBhc3NS
ZWZQdHI8SURCQ2FsbGJhY2tzPikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBvcGVuQ3Vyc29yKGlu
dDY0X3QgdHJhbnNhY3Rpb25JZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBpbnQ2NF90IGluZGV4
SWQsIFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+LCBJREJDdXJzb3JCYWNrZW5kSW50ZXJmYWNlOjpE
aXJlY3Rpb24sIGJvb2wga2V5T25seSwgVGFza1R5cGUsIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tz
PikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBjb3VudChpbnQ2NF90IHRyYW5zYWN0aW9uSWQsIGlu
dDY0X3Qgb2JqZWN0U3RvcmVJZCwgaW50NjRfdCBpbmRleElkLCBQYXNzUmVmUHRyPElEQktleVJh
bmdlPiwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRl
bGV0ZVJhbmdlKGludDY0X3QgdHJhbnNhY3Rpb25JZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBQ
YXNzUmVmUHRyPElEQktleVJhbmdlPiwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+KSA9IDA7CiAg
ICAgdmlydHVhbCB2b2lkIGNsZWFyKGludDY0X3QgdHJhbnNhY3Rpb25JZCwgaW50NjRfdCBvYmpl
Y3RTdG9yZUlkLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4pID0gMDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkluZGV4LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkluZGV4LmNwcAppbmRleCBiZWI5ODM2YTU0ZWFhODlh
NWM4N2IyYTU5MTc2ODkyMzdlYzI0MjBlLi4xZTQyZmM1NzY3ZWJlMmJiMWNhZDA0Y2EyOTUwYWE2
ZTIxODFiOGQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9J
REJJbmRleC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCSW5k
ZXguY3BwCkBAIC00MCw3ICs0MCw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotc3RhdGlj
IGNvbnN0IHVuc2lnbmVkIHNob3J0IGRlZmF1bHREaXJlY3Rpb24gPSBJREJDdXJzb3I6Ok5FWFQ7
CitzdGF0aWMgY29uc3QgdW5zaWduZWQgc2hvcnQgZGVmYXVsdERpcmVjdGlvbiA9IElEQkN1cnNv
ckJhY2tlbmRJbnRlcmZhY2U6Ok5leHQ7CiAKIElEQkluZGV4OjpJREJJbmRleChjb25zdCBJREJJ
bmRleE1ldGFkYXRhJiBtZXRhZGF0YSwgSURCT2JqZWN0U3RvcmUqIG9iamVjdFN0b3JlLCBJREJU
cmFuc2FjdGlvbiogdHJhbnNhY3Rpb24pCiAgICAgOiBtX21ldGFkYXRhKG1ldGFkYXRhKQpAQCAt
NjgsNyArNjgsNyBAQCBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IElEQkluZGV4OjpvcGVuQ3Vyc29y
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFBhcwogICAgICAgICBlYyA9IElEQkRh
dGFiYXNlRXhjZXB0aW9uOjpUcmFuc2FjdGlvbkluYWN0aXZlRXJyb3I7CiAgICAgICAgIHJldHVy
biAwOwogICAgIH0KLSAgICBJREJDdXJzb3I6OkRpcmVjdGlvbiBkaXJlY3Rpb24gPSBJREJDdXJz
b3I6OnN0cmluZ1RvRGlyZWN0aW9uKGRpcmVjdGlvblN0cmluZywgY29udGV4dCwgZWMpOworICAg
IElEQkN1cnNvckJhY2tlbmRJbnRlcmZhY2U6OkRpcmVjdGlvbiBkaXJlY3Rpb24gPSBJREJDdXJz
b3I6OnN0cmluZ1RvRGlyZWN0aW9uKGRpcmVjdGlvblN0cmluZywgY29udGV4dCwgZWMpOwogICAg
IGlmIChlYykKICAgICAgICAgcmV0dXJuIDA7CiAKQEAgLTEyMyw3ICsxMjMsNyBAQCBQYXNzUmVm
UHRyPElEQlJlcXVlc3Q+IElEQkluZGV4OjpvcGVuS2V5Q3Vyc29yKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqIGNvbnRleHQsCiAgICAgICAgIGVjID0gSURCRGF0YWJhc2VFeGNlcHRpb246OlRyYW5z
YWN0aW9uSW5hY3RpdmVFcnJvcjsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQotICAgIElEQkN1
cnNvcjo6RGlyZWN0aW9uIGRpcmVjdGlvbiA9IElEQkN1cnNvcjo6c3RyaW5nVG9EaXJlY3Rpb24o
ZGlyZWN0aW9uU3RyaW5nLCBjb250ZXh0LCBlYyk7CisgICAgSURCQ3Vyc29yQmFja2VuZEludGVy
ZmFjZTo6RGlyZWN0aW9uIGRpcmVjdGlvbiA9IElEQkN1cnNvcjo6c3RyaW5nVG9EaXJlY3Rpb24o
ZGlyZWN0aW9uU3RyaW5nLCBjb250ZXh0LCBlYyk7CiAgICAgaWYgKGVjKQogICAgICAgICByZXR1
cm4gMDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURC
T2JqZWN0U3RvcmUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT2Jq
ZWN0U3RvcmUuY3BwCmluZGV4IDNjZjU0OTY3MjRiNzcwYWQ0ZmFhZjViYjcwMzNjYWY1OTEyY2Qy
MGEuLjI3OTk5YWI1MTJkNTU5OGY0MDNjZjIzNzU2ODkzNzM4NDFiYzg0NWIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZS5jcHAKQEAg
LTQ4LDcgKzQ4LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1zdGF0aWMgY29uc3QgdW5z
aWduZWQgc2hvcnQgZGVmYXVsdERpcmVjdGlvbiA9IElEQkN1cnNvcjo6TkVYVDsKK3N0YXRpYyBj
b25zdCB1bnNpZ25lZCBzaG9ydCBkZWZhdWx0RGlyZWN0aW9uID0gSURCQ3Vyc29yQmFja2VuZElu
dGVyZmFjZTo6TmV4dDsKIAogSURCT2JqZWN0U3RvcmU6OklEQk9iamVjdFN0b3JlKGNvbnN0IElE
Qk9iamVjdFN0b3JlTWV0YWRhdGEmIG1ldGFkYXRhLCBJREJUcmFuc2FjdGlvbiogdHJhbnNhY3Rp
b24pCiAgICAgOiBtX21ldGFkYXRhKG1ldGFkYXRhKQpAQCAtNTA0LDcgKzUwNCw3IEBAIFBhc3NS
ZWZQdHI8SURCUmVxdWVzdD4gSURCT2JqZWN0U3RvcmU6Om9wZW5DdXJzb3IoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCogY29udGV4CiAgICAgICAgIGVjID0gSURCRGF0YWJhc2VFeGNlcHRpb246OlRy
YW5zYWN0aW9uSW5hY3RpdmVFcnJvcjsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQotICAgIElE
QkN1cnNvcjo6RGlyZWN0aW9uIGRpcmVjdGlvbiA9IElEQkN1cnNvcjo6c3RyaW5nVG9EaXJlY3Rp
b24oZGlyZWN0aW9uU3RyaW5nLCBjb250ZXh0LCBlYyk7CisgICAgSURCQ3Vyc29yQmFja2VuZElu
dGVyZmFjZTo6RGlyZWN0aW9uIGRpcmVjdGlvbiA9IElEQkN1cnNvcjo6c3RyaW5nVG9EaXJlY3Rp
b24oZGlyZWN0aW9uU3RyaW5nLCBjb250ZXh0LCBlYyk7CiAgICAgaWYgKGVjKQogICAgICAgICBy
ZXR1cm4gMDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
SURCUmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJSZXF1
ZXN0LmNwcAppbmRleCAyYjEzNDM5MTE4NDM0M2FlOWNmYTA0ODUzODAzZjA3MTU5YTg2MzRiLi5i
MTQyZmM3NzQzMTFlNTkwNWIxMWI2OGU4NTBhZjhlMThmYjg4MjE0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJSZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJSZXF1ZXN0LmNwcApAQCAtNzgsNyArNzgsNyBA
QCBJREJSZXF1ZXN0OjpJREJSZXF1ZXN0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQs
IFBhc3NSZWZQdHI8SURCQW55PiBzb3VyYwogICAgICwgbV90YXNrVHlwZSh0YXNrVHlwZSkKICAg
ICAsIG1faGFzUGVuZGluZ0FjdGl2aXR5KHRydWUpCiAgICAgLCBtX2N1cnNvclR5cGUoSURCQ3Vy
c29yQmFja2VuZEludGVyZmFjZTo6S2V5QW5kVmFsdWUpCi0gICAgLCBtX2N1cnNvckRpcmVjdGlv
bihJREJDdXJzb3I6Ok5FWFQpCisgICAgLCBtX2N1cnNvckRpcmVjdGlvbihJREJDdXJzb3JCYWNr
ZW5kSW50ZXJmYWNlOjpOZXh0KQogICAgICwgbV9jdXJzb3JGaW5pc2hlZChmYWxzZSkKICAgICAs
IG1fcGVuZGluZ0N1cnNvcigwKQogICAgICwgbV9kaWRGaXJlVXBncmFkZU5lZWRlZEV2ZW50KGZh
bHNlKQpAQCAtMTg1LDcgKzE4NSw3IEBAIHZvaWQgSURCUmVxdWVzdDo6YWJvcnQoKQogICAgIG1f
cmVxdWVzdEFib3J0ZWQgPSB0cnVlOwogfQogCi12b2lkIElEQlJlcXVlc3Q6OnNldEN1cnNvckRl
dGFpbHMoSURCQ3Vyc29yQmFja2VuZEludGVyZmFjZTo6Q3Vyc29yVHlwZSBjdXJzb3JUeXBlLCBJ
REJDdXJzb3I6OkRpcmVjdGlvbiBkaXJlY3Rpb24pCit2b2lkIElEQlJlcXVlc3Q6OnNldEN1cnNv
ckRldGFpbHMoSURCQ3Vyc29yQmFja2VuZEludGVyZmFjZTo6Q3Vyc29yVHlwZSBjdXJzb3JUeXBl
LCBJREJDdXJzb3JCYWNrZW5kSW50ZXJmYWNlOjpEaXJlY3Rpb24gZGlyZWN0aW9uKQogewogICAg
IEFTU0VSVChtX3JlYWR5U3RhdGUgPT0gUEVORElORyk7CiAgICAgQVNTRVJUKCFtX3BlbmRpbmdD
dXJzb3IpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURC
UmVxdWVzdC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCUmVxdWVzdC5o
CmluZGV4IGQwNjdlYjI5YTg4NTU3OTJjMGMxMjU1Nzc1Y2QwMjQ4ODhjOTUxYjUuLjg4ZDUyOGQ3
ODBiNTEyYTYwZTkzOGJkZWIxYmU2MDY2MmRiOTkzZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlJlcXVlc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9JREJSZXF1ZXN0LmgKQEAgLTc4LDcgKzc4LDcgQEAgcHVibGljOgog
ICAgIERFRklORV9BVFRSSUJVVEVfRVZFTlRfTElTVEVORVIoZXJyb3IpOwogCiAgICAgdm9pZCBt
YXJrRWFybHlEZWF0aCgpOwotICAgIHZvaWQgc2V0Q3Vyc29yRGV0YWlscyhJREJDdXJzb3JCYWNr
ZW5kSW50ZXJmYWNlOjpDdXJzb3JUeXBlLCBJREJDdXJzb3I6OkRpcmVjdGlvbik7CisgICAgdm9p
ZCBzZXRDdXJzb3JEZXRhaWxzKElEQkN1cnNvckJhY2tlbmRJbnRlcmZhY2U6OkN1cnNvclR5cGUs
IElEQkN1cnNvckJhY2tlbmRJbnRlcmZhY2U6OkRpcmVjdGlvbik7CiAgICAgdm9pZCBzZXRQZW5k
aW5nQ3Vyc29yKFBhc3NSZWZQdHI8SURCQ3Vyc29yPik7CiAgICAgdm9pZCBmaW5pc2hDdXJzb3Io
KTsKICAgICB2b2lkIGFib3J0KCk7CkBAIC0xNTAsNyArMTUwLDcgQEAgcHJpdmF0ZToKIAogICAg
IC8vIE9ubHkgdXNlZCBpZiB0aGUgcmVzdWx0IHR5cGUgd2lsbCBiZSBhIGN1cnNvci4KICAgICBJ
REJDdXJzb3JCYWNrZW5kSW50ZXJmYWNlOjpDdXJzb3JUeXBlIG1fY3Vyc29yVHlwZTsKLSAgICBJ
REJDdXJzb3I6OkRpcmVjdGlvbiBtX2N1cnNvckRpcmVjdGlvbjsKKyAgICBJREJDdXJzb3JCYWNr
ZW5kSW50ZXJmYWNlOjpEaXJlY3Rpb24gbV9jdXJzb3JEaXJlY3Rpb247CiAgICAgYm9vbCBtX2N1
cnNvckZpbmlzaGVkOwogICAgIFJlZlB0cjxJREJDdXJzb3I+IG1fcGVuZGluZ0N1cnNvcjsKICAg
ICBSZWZQdHI8SURCS2V5PiBtX2N1cnNvcktleTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmNwcAppbmRleCBiYzBlZGRkZjg0MTAzZmNj
ZTJkZmVkMTNiMmRhMjNiNDIzNDk2N2MzLi43Zjg0ZDk5ZGU4MGU0YTliZDJjYjFkNzgxNjYyNjI2
YmQ2MGY0ZmVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9J
REJUcmFuc2FjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
SURCVHJhbnNhY3Rpb24uY3BwCkBAIC00NCw3ICs0NCw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAotUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbj4gSURCVHJhbnNhY3Rpb246OmNyZWF0ZShT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBpbnQ2NF90IGlkLCBjb25zdCBWZWN0b3I8
U3RyaW5nPiYgb2JqZWN0U3RvcmVOYW1lcywgSURCVHJhbnNhY3Rpb246Ok1vZGUgbW9kZSwgSURC
RGF0YWJhc2UqIGRiKQorUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbj4gSURCVHJhbnNhY3Rpb246
OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBpbnQ2NF90IGlkLCBjb25z
dCBWZWN0b3I8U3RyaW5nPiYgb2JqZWN0U3RvcmVOYW1lcywgSURCRGF0YWJhc2VCYWNrZW5kSW50
ZXJmYWNlOjpUcmFuc2FjdGlvbk1vZGUgbW9kZSwgSURCRGF0YWJhc2UqIGRiKQogewogICAgIElE
Qk9wZW5EQlJlcXVlc3QqIG9wZW5EQlJlcXVlc3QgPSAwOwogICAgIFJlZlB0cjxJREJUcmFuc2Fj
dGlvbj4gdHJhbnNhY3Rpb24oYWRvcHRSZWYobmV3IElEQlRyYW5zYWN0aW9uKGNvbnRleHQsIGlk
LCBvYmplY3RTdG9yZU5hbWVzLCBtb2RlLCBkYiwgb3BlbkRCUmVxdWVzdCwgSURCRGF0YWJhc2VN
ZXRhZGF0YSgpKSkpOwpAQCAtNTQsNyArNTQsNyBAQCBQYXNzUmVmUHRyPElEQlRyYW5zYWN0aW9u
PiBJREJUcmFuc2FjdGlvbjo6Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleAog
CiBQYXNzUmVmUHRyPElEQlRyYW5zYWN0aW9uPiBJREJUcmFuc2FjdGlvbjo6Y3JlYXRlKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGludDY0X3QgaWQsIElEQkRhdGFiYXNlKiBkYiwg
SURCT3BlbkRCUmVxdWVzdCogb3BlbkRCUmVxdWVzdCwgY29uc3QgSURCRGF0YWJhc2VNZXRhZGF0
YSYgcHJldmlvdXNNZXRhZGF0YSkKIHsKLSAgICBSZWZQdHI8SURCVHJhbnNhY3Rpb24+IHRyYW5z
YWN0aW9uKGFkb3B0UmVmKG5ldyBJREJUcmFuc2FjdGlvbihjb250ZXh0LCBpZCwgVmVjdG9yPFN0
cmluZz4oKSwgVkVSU0lPTl9DSEFOR0UsIGRiLCBvcGVuREJSZXF1ZXN0LCBwcmV2aW91c01ldGFk
YXRhKSkpOworICAgIFJlZlB0cjxJREJUcmFuc2FjdGlvbj4gdHJhbnNhY3Rpb24oYWRvcHRSZWYo
bmV3IElEQlRyYW5zYWN0aW9uKGNvbnRleHQsIGlkLCBWZWN0b3I8U3RyaW5nPigpLCBJREJEYXRh
YmFzZUJhY2tlbmRJbnRlcmZhY2U6OlZlcnNpb25DaGFuZ2UsIGRiLCBvcGVuREJSZXF1ZXN0LCBw
cmV2aW91c01ldGFkYXRhKSkpOwogICAgIHRyYW5zYWN0aW9uLT5zdXNwZW5kSWZOZWVkZWQoKTsK
ICAgICByZXR1cm4gdHJhbnNhY3Rpb24ucmVsZWFzZSgpOwogfQpAQCAtOTAsNyArOTAsNyBAQCBj
b25zdCBBdG9taWNTdHJpbmcmIElEQlRyYW5zYWN0aW9uOjptb2RlUmVhZFdyaXRlTGVnYWN5KCkK
IH0KIAogCi1JREJUcmFuc2FjdGlvbjo6SURCVHJhbnNhY3Rpb24oU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCogY29udGV4dCwgaW50NjRfdCBpZCwgY29uc3QgVmVjdG9yPFN0cmluZz4mIG9iamVjdFN0
b3JlTmFtZXMsIElEQlRyYW5zYWN0aW9uOjpNb2RlIG1vZGUsIElEQkRhdGFiYXNlKiBkYiwgSURC
T3BlbkRCUmVxdWVzdCogb3BlbkRCUmVxdWVzdCwgY29uc3QgSURCRGF0YWJhc2VNZXRhZGF0YSYg
cHJldmlvdXNNZXRhZGF0YSkKK0lEQlRyYW5zYWN0aW9uOjpJREJUcmFuc2FjdGlvbihTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBpbnQ2NF90IGlkLCBjb25zdCBWZWN0b3I8U3RyaW5n
PiYgb2JqZWN0U3RvcmVOYW1lcywgSURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlOjpUcmFuc2Fj
dGlvbk1vZGUgbW9kZSwgSURCRGF0YWJhc2UqIGRiLCBJREJPcGVuREJSZXF1ZXN0KiBvcGVuREJS
ZXF1ZXN0LCBjb25zdCBJREJEYXRhYmFzZU1ldGFkYXRhJiBwcmV2aW91c01ldGFkYXRhKQogICAg
IDogQWN0aXZlRE9NT2JqZWN0KGNvbnRleHQsIHRoaXMpCiAgICAgLCBtX2lkKGlkKQogICAgICwg
bV9kYXRhYmFzZShkYikKQEAgLTEwMiw3ICsxMDIsNyBAQCBJREJUcmFuc2FjdGlvbjo6SURCVHJh
bnNhY3Rpb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgaW50NjRfdCBpZCwgY29u
cwogICAgICwgbV9jb250ZXh0U3RvcHBlZChmYWxzZSkKICAgICAsIG1fcHJldmlvdXNNZXRhZGF0
YShwcmV2aW91c01ldGFkYXRhKQogewotICAgIGlmIChtb2RlID09IFZFUlNJT05fQ0hBTkdFKSB7
CisgICAgaWYgKG1vZGUgPT0gSURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlOjpWZXJzaW9uQ2hh
bmdlKSB7CiAgICAgICAgIC8vIE5vdCBhY3RpdmUgdW50aWwgdGhlIGNhbGxiYWNrLgogICAgICAg
ICBtX3N0YXRlID0gSW5hY3RpdmU7CiAgICAgfQpAQCAtMzM2LDMwICszMzYsMzAgQEAgYm9vbCBJ
REJUcmFuc2FjdGlvbjo6aGFzUGVuZGluZ0FjdGl2aXR5KCkgY29uc3QKICAgICByZXR1cm4gbV9o
YXNQZW5kaW5nQWN0aXZpdHk7CiB9CiAKLUlEQlRyYW5zYWN0aW9uOjpNb2RlIElEQlRyYW5zYWN0
aW9uOjpzdHJpbmdUb01vZGUoY29uc3QgU3RyaW5nJiBtb2RlU3RyaW5nLCBTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiBjb250ZXh0LCBFeGNlcHRpb25Db2RlJiBlYykKK0lEQkRhdGFiYXNlQmFja2Vu
ZEludGVyZmFjZTo6VHJhbnNhY3Rpb25Nb2RlIElEQlRyYW5zYWN0aW9uOjpzdHJpbmdUb01vZGUo
Y29uc3QgU3RyaW5nJiBtb2RlU3RyaW5nLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0
LCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBpZiAobW9kZVN0cmluZy5pc051bGwoKQogICAg
ICAgICB8fCBtb2RlU3RyaW5nID09IElEQlRyYW5zYWN0aW9uOjptb2RlUmVhZE9ubHkoKSkKLSAg
ICAgICAgcmV0dXJuIElEQlRyYW5zYWN0aW9uOjpSRUFEX09OTFk7CisgICAgICAgIHJldHVybiBJ
REJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2U6OlJlYWRPbmx5OwogICAgIGlmIChtb2RlU3RyaW5n
ID09IElEQlRyYW5zYWN0aW9uOjptb2RlUmVhZFdyaXRlKCkpCi0gICAgICAgIHJldHVybiBJREJU
cmFuc2FjdGlvbjo6UkVBRF9XUklURTsKKyAgICAgICAgcmV0dXJuIElEQkRhdGFiYXNlQmFja2Vu
ZEludGVyZmFjZTo6UmVhZFdyaXRlOwogCiAgICAgZWMgPSBUeXBlRXJyb3I7Ci0gICAgcmV0dXJu
IElEQlRyYW5zYWN0aW9uOjpSRUFEX09OTFk7CisgICAgcmV0dXJuIElEQkRhdGFiYXNlQmFja2Vu
ZEludGVyZmFjZTo6UmVhZE9ubHk7CiB9CiAKLWNvbnN0IEF0b21pY1N0cmluZyYgSURCVHJhbnNh
Y3Rpb246Om1vZGVUb1N0cmluZyhJREJUcmFuc2FjdGlvbjo6TW9kZSBtb2RlKQorY29uc3QgQXRv
bWljU3RyaW5nJiBJREJUcmFuc2FjdGlvbjo6bW9kZVRvU3RyaW5nKElEQkRhdGFiYXNlQmFja2Vu
ZEludGVyZmFjZTo6VHJhbnNhY3Rpb25Nb2RlIG1vZGUpCiB7CiAgICAgc3dpdGNoIChtb2RlKSB7
Ci0gICAgY2FzZSBJREJUcmFuc2FjdGlvbjo6UkVBRF9PTkxZOgorICAgIGNhc2UgSURCRGF0YWJh
c2VCYWNrZW5kSW50ZXJmYWNlOjpSZWFkT25seToKICAgICAgICAgcmV0dXJuIElEQlRyYW5zYWN0
aW9uOjptb2RlUmVhZE9ubHkoKTsKICAgICAgICAgYnJlYWs7CiAKLSAgICBjYXNlIElEQlRyYW5z
YWN0aW9uOjpSRUFEX1dSSVRFOgorICAgIGNhc2UgSURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNl
OjpSZWFkV3JpdGU6CiAgICAgICAgIHJldHVybiBJREJUcmFuc2FjdGlvbjo6bW9kZVJlYWRXcml0
ZSgpOwogICAgICAgICBicmVhazsKIAotICAgIGNhc2UgSURCVHJhbnNhY3Rpb246OlZFUlNJT05f
Q0hBTkdFOgorICAgIGNhc2UgSURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlOjpWZXJzaW9uQ2hh
bmdlOgogICAgICAgICByZXR1cm4gSURCVHJhbnNhY3Rpb246Om1vZGVWZXJzaW9uQ2hhbmdlKCk7
CiAgICAgICAgIGJyZWFrOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvSURCVHJhbnNhY3Rpb24uaAppbmRleCA2OTc1MGViNzM5ZTY4MDdkYjExODdkYzBlNmM4NDRm
Yzg1MDEyYjI3Li5lODBlNjcxZDExMjhhNWIwMmQyZTRhOTRmOGE3Y2M2YjRiMjAwMWIyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmgK
QEAgLTM0LDYgKzM0LDcgQEAKICNpbmNsdWRlICJFdmVudExpc3RlbmVyLmgiCiAjaW5jbHVkZSAi
RXZlbnROYW1lcy5oIgogI2luY2x1ZGUgIkV2ZW50VGFyZ2V0LmgiCisjaW5jbHVkZSAiSURCRGF0
YWJhc2VCYWNrZW5kSW50ZXJmYWNlLmgiCiAjaW5jbHVkZSAiSURCTWV0YWRhdGEuaCIKICNpbmNs
dWRlICJTY3JpcHRXcmFwcGFibGUuaCIKICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgpAQCAtNDMs
NyArNDQsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIElEQkN1cnNvcjsKIGNsYXNz
IElEQkRhdGFiYXNlOwotY2xhc3MgSURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlOwogY2xhc3Mg
SURCRGF0YWJhc2VFcnJvcjsKIGNsYXNzIElEQk9iamVjdFN0b3JlOwogY2xhc3MgSURCT3BlbkRC
UmVxdWVzdDsKQEAgLTUxLDEzICs1MSw3IEBAIHN0cnVjdCBJREJPYmplY3RTdG9yZU1ldGFkYXRh
OwogCiBjbGFzcyBJREJUcmFuc2FjdGlvbiA6IHB1YmxpYyBTY3JpcHRXcmFwcGFibGUsIHB1Ymxp
YyBSZWZDb3VudGVkPElEQlRyYW5zYWN0aW9uPiwgcHVibGljIEV2ZW50VGFyZ2V0LCBwdWJsaWMg
QWN0aXZlRE9NT2JqZWN0IHsKIHB1YmxpYzoKLSAgICBlbnVtIE1vZGUgewotICAgICAgICBSRUFE
X09OTFkgPSAwLAotICAgICAgICBSRUFEX1dSSVRFID0gMSwKLSAgICAgICAgVkVSU0lPTl9DSEFO
R0UgPSAyCi0gICAgfTsKLQotICAgIHN0YXRpYyBQYXNzUmVmUHRyPElEQlRyYW5zYWN0aW9uPiBj
cmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGludDY0X3QsIGNvbnN0IFZlY3RvcjxTdHJp
bmc+JiBvYmplY3RTdG9yZU5hbWVzLCBNb2RlLCBJREJEYXRhYmFzZSopOworICAgIHN0YXRpYyBQ
YXNzUmVmUHRyPElEQlRyYW5zYWN0aW9uPiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCos
IGludDY0X3QsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBvYmplY3RTdG9yZU5hbWVzLCBJREJEYXRh
YmFzZUJhY2tlbmRJbnRlcmZhY2U6OlRyYW5zYWN0aW9uTW9kZSwgSURCRGF0YWJhc2UqKTsKICAg
ICBzdGF0aWMgUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbj4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqLCBpbnQ2NF90LCBJREJEYXRhYmFzZSosIElEQk9wZW5EQlJlcXVlc3QqLCBjb25z
dCBJREJEYXRhYmFzZU1ldGFkYXRhJiBwcmV2aW91c01ldGFkYXRhKTsKICAgICB2aXJ0dWFsIH5J
REJUcmFuc2FjdGlvbigpOwogCkBAIC02NywxNiArNjEsMTYgQEAgcHVibGljOgogICAgIHN0YXRp
YyBjb25zdCBBdG9taWNTdHJpbmcmIG1vZGVSZWFkT25seUxlZ2FjeSgpOwogICAgIHN0YXRpYyBj
b25zdCBBdG9taWNTdHJpbmcmIG1vZGVSZWFkV3JpdGVMZWdhY3koKTsKIAotICAgIHN0YXRpYyBN
b2RlIHN0cmluZ1RvTW9kZShjb25zdCBTdHJpbmcmLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0Kiwg
RXhjZXB0aW9uQ29kZSYpOwotICAgIHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcmIG1vZGVUb1N0
cmluZyhNb2RlKTsKKyAgICBzdGF0aWMgSURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlOjpUcmFu
c2FjdGlvbk1vZGUgc3RyaW5nVG9Nb2RlKGNvbnN0IFN0cmluZyYsIFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqLCBFeGNlcHRpb25Db2RlJik7CisgICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYg
bW9kZVRvU3RyaW5nKElEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZTo6VHJhbnNhY3Rpb25Nb2Rl
KTsKIAogICAgIElEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZSogYmFja2VuZERCKCkgY29uc3Q7
CiAKICAgICBpbnQ2NF90IGlkKCkgY29uc3QgeyByZXR1cm4gbV9pZDsgfQogICAgIGJvb2wgaXNB
Y3RpdmUoKSBjb25zdCB7IHJldHVybiBtX3N0YXRlID09IEFjdGl2ZTsgfQogICAgIGJvb2wgaXNG
aW5pc2hlZCgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGUgPT0gRmluaXNoZWQ7IH0KLSAgICBib29s
IGlzUmVhZE9ubHkoKSBjb25zdCB7IHJldHVybiBtX21vZGUgPT0gUkVBRF9PTkxZOyB9Ci0gICAg
Ym9vbCBpc1ZlcnNpb25DaGFuZ2UoKSBjb25zdCB7IHJldHVybiBtX21vZGUgPT0gVkVSU0lPTl9D
SEFOR0U7IH0KKyAgICBib29sIGlzUmVhZE9ubHkoKSBjb25zdCB7IHJldHVybiBtX21vZGUgPT0g
SURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlOjpSZWFkT25seTsgfQorICAgIGJvb2wgaXNWZXJz
aW9uQ2hhbmdlKCkgY29uc3QgeyByZXR1cm4gbV9tb2RlID09IElEQkRhdGFiYXNlQmFja2VuZElu
dGVyZmFjZTo6VmVyc2lvbkNoYW5nZTsgfQogCiAgICAgLy8gSW1wbGVtZW50IHRoZSBJREJUcmFu
c2FjdGlvbiBJREwKICAgICBjb25zdCBTdHJpbmcmIG1vZGUoKSBjb25zdDsKQEAgLTEyNiw3ICsx
MjAsNyBAQCBwdWJsaWM6CiAgICAgdXNpbmcgUmVmQ291bnRlZDxJREJUcmFuc2FjdGlvbj46OmRl
cmVmOwogCiBwcml2YXRlOgotICAgIElEQlRyYW5zYWN0aW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqLCBpbnQ2NF90LCBjb25zdCBWZWN0b3I8U3RyaW5nPiYsIE1vZGUsIElEQkRhdGFiYXNlKiwg
SURCT3BlbkRCUmVxdWVzdCosIGNvbnN0IElEQkRhdGFiYXNlTWV0YWRhdGEmKTsKKyAgICBJREJU
cmFuc2FjdGlvbihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgaW50NjRfdCwgY29uc3QgVmVjdG9y
PFN0cmluZz4mLCBJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2U6OlRyYW5zYWN0aW9uTW9kZSwg
SURCRGF0YWJhc2UqLCBJREJPcGVuREJSZXF1ZXN0KiwgY29uc3QgSURCRGF0YWJhc2VNZXRhZGF0
YSYpOwogCiAgICAgdm9pZCBlbnF1ZXVlRXZlbnQoUGFzc1JlZlB0cjxFdmVudD4pOwogICAgIHZv
aWQgY2xvc2VPcGVuQ3Vyc29ycygpOwpAQCAtMTUxLDcgKzE0NSw3IEBAIHByaXZhdGU6CiAgICAg
UmVmUHRyPElEQkRhdGFiYXNlPiBtX2RhdGFiYXNlOwogICAgIGNvbnN0IFZlY3RvcjxTdHJpbmc+
IG1fb2JqZWN0U3RvcmVOYW1lczsKICAgICBJREJPcGVuREJSZXF1ZXN0KiBtX29wZW5EQlJlcXVl
c3Q7Ci0gICAgY29uc3QgTW9kZSBtX21vZGU7CisgICAgY29uc3QgSURCRGF0YWJhc2VCYWNrZW5k
SW50ZXJmYWNlOjpUcmFuc2FjdGlvbk1vZGUgbV9tb2RlOwogICAgIFN0YXRlIG1fc3RhdGU7CiAg
ICAgYm9vbCBtX2hhc1BlbmRpbmdBY3Rpdml0eTsKICAgICBib29sIG1fY29udGV4dFN0b3BwZWQ7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2Fj
dGlvbkJhY2tlbmRJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lE
QlRyYW5zYWN0aW9uQmFja2VuZEltcGwuY3BwCmluZGV4IDdmZTgzYjIzZDJlY2JmZjc2MDJlMzJi
NGViMTllZDFiYWM4NmFlNmYuLmM4M2Q5NDNhZTM5YTk0ZmRlZjNjNmNmZDY4MzU4OWNmZTlkZDg0
ZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5z
YWN0aW9uQmFja2VuZEltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL0lEQlRyYW5zYWN0aW9uQmFja2VuZEltcGwuY3BwCkBAIC0zMSwxMyArMzEsMTQgQEAKICNp
bmNsdWRlICJJREJCYWNraW5nU3RvcmUuaCIKICNpbmNsdWRlICJJREJDdXJzb3JCYWNrZW5kSW1w
bC5oIgogI2luY2x1ZGUgIklEQkRhdGFiYXNlQmFja2VuZEltcGwuaCIKKyNpbmNsdWRlICJJREJE
YXRhYmFzZUNhbGxiYWNrcy5oIgogI2luY2x1ZGUgIklEQkRhdGFiYXNlRXhjZXB0aW9uLmgiCiAj
aW5jbHVkZSAiSURCVHJhY2luZy5oIgogI2luY2x1ZGUgIklEQlRyYW5zYWN0aW9uQ29vcmRpbmF0
b3IuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1QYXNzUmVmUHRyPElEQlRyYW5zYWN0aW9u
QmFja2VuZEltcGw+IElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGw6OmNyZWF0ZShpbnQ2NF90IGlk
LCBQYXNzUmVmUHRyPElEQkRhdGFiYXNlQ2FsbGJhY2tzPiBjYWxsYmFja3MsIGNvbnN0IFZlY3Rv
cjxpbnQ2NF90PiYgb2JqZWN0U3RvcmVJZHMsIElEQlRyYW5zYWN0aW9uOjpNb2RlIG1vZGUsIElE
QkRhdGFiYXNlQmFja2VuZEltcGwqIGRhdGFiYXNlKQorUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlv
bkJhY2tlbmRJbXBsPiBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsOjpjcmVhdGUoaW50NjRfdCBp
ZCwgUGFzc1JlZlB0cjxJREJEYXRhYmFzZUNhbGxiYWNrcz4gY2FsbGJhY2tzLCBjb25zdCBWZWN0
b3I8aW50NjRfdD4mIG9iamVjdFN0b3JlSWRzLCBJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2U6
OlRyYW5zYWN0aW9uTW9kZSBtb2RlLCBJREJEYXRhYmFzZUJhY2tlbmRJbXBsKiBkYXRhYmFzZSkK
IHsKICAgICBIYXNoU2V0PGludDY0X3Q+IG9iamVjdFN0b3JlSGFzaFNldDsKICAgICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IG9iamVjdFN0b3JlSWRzLnNpemUoKTsgKytpKQpAQCAtNDYsNyArNDcs
NyBAQCBQYXNzUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGw+IElEQlRyYW5zYWN0aW9u
QmFja2VuZEltcGw6OmNyZWF0ZShpbnQ2NF90CiAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBJREJU
cmFuc2FjdGlvbkJhY2tlbmRJbXBsKGlkLCBjYWxsYmFja3MsIG9iamVjdFN0b3JlSGFzaFNldCwg
bW9kZSwgZGF0YWJhc2UpKTsKIH0KIAotSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbDo6SURCVHJh
bnNhY3Rpb25CYWNrZW5kSW1wbChpbnQ2NF90IGlkLCBQYXNzUmVmUHRyPElEQkRhdGFiYXNlQ2Fs
bGJhY2tzPiBjYWxsYmFja3MsIGNvbnN0IEhhc2hTZXQ8aW50NjRfdD4mIG9iamVjdFN0b3JlSWRz
LCBJREJUcmFuc2FjdGlvbjo6TW9kZSBtb2RlLCBJREJEYXRhYmFzZUJhY2tlbmRJbXBsKiBkYXRh
YmFzZSkKK0lEQlRyYW5zYWN0aW9uQmFja2VuZEltcGw6OklEQlRyYW5zYWN0aW9uQmFja2VuZElt
cGwoaW50NjRfdCBpZCwgUGFzc1JlZlB0cjxJREJEYXRhYmFzZUNhbGxiYWNrcz4gY2FsbGJhY2tz
LCBjb25zdCBIYXNoU2V0PGludDY0X3Q+JiBvYmplY3RTdG9yZUlkcywgSURCRGF0YWJhc2VCYWNr
ZW5kSW50ZXJmYWNlOjpUcmFuc2FjdGlvbk1vZGUgbW9kZSwgSURCRGF0YWJhc2VCYWNrZW5kSW1w
bCogZGF0YWJhc2UpCiAgICAgOiBtX2lkKGlkKQogICAgICwgbV9vYmplY3RTdG9yZUlkcyhvYmpl
Y3RTdG9yZUlkcykKICAgICAsIG1fbW9kZShtb2RlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbC5oIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbC5oCmlu
ZGV4IDNjZWY5NzYyYWUxMDI3ZTg4ODRlOTgyNmY0NzkxZjYzNjRhMzRiMDYuLmIzMTg3MDMzODRl
MWFkYzlhM2EyZGE0OTdiMTVjY2I5ZjE5ZGZiMzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uQmFja2VuZEltcGwuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsLmgK
QEAgLTMxLDcgKzMxLDYgQEAKICNpbmNsdWRlICJJREJCYWNraW5nU3RvcmUuaCIKICNpbmNsdWRl
ICJJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2UuaCIKICNpbmNsdWRlICJJREJEYXRhYmFzZUVy
cm9yLmgiCi0jaW5jbHVkZSAiSURCVHJhbnNhY3Rpb24uaCIKICNpbmNsdWRlICJUaW1lci5oIgog
I2luY2x1ZGUgPHd0Zi9EZXF1ZS5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CkBAIC00NSw3
ICs0NCw3IEBAIGNsYXNzIElEQkRhdGFiYXNlQ2FsbGJhY2tzOwogCiBjbGFzcyBJREJUcmFuc2Fj
dGlvbkJhY2tlbmRJbXBsIDogcHVibGljIFJlZkNvdW50ZWQ8SURCVHJhbnNhY3Rpb25CYWNrZW5k
SW1wbD4gewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFj
a2VuZEltcGw+IGNyZWF0ZShpbnQ2NF90IHRyYW5zYWN0aW9uSWQsIFBhc3NSZWZQdHI8SURCRGF0
YWJhc2VDYWxsYmFja3M+LCBjb25zdCBWZWN0b3I8aW50NjRfdD4mLCBJREJUcmFuc2FjdGlvbjo6
TW9kZSwgSURCRGF0YWJhc2VCYWNrZW5kSW1wbCopOworICAgIHN0YXRpYyBQYXNzUmVmUHRyPElE
QlRyYW5zYWN0aW9uQmFja2VuZEltcGw+IGNyZWF0ZShpbnQ2NF90IHRyYW5zYWN0aW9uSWQsIFBh
c3NSZWZQdHI8SURCRGF0YWJhc2VDYWxsYmFja3M+LCBjb25zdCBWZWN0b3I8aW50NjRfdD4mLCBJ
REJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2U6OlRyYW5zYWN0aW9uTW9kZSwgSURCRGF0YWJhc2VC
YWNrZW5kSW1wbCopOwogICAgIHZpcnR1YWwgfklEQlRyYW5zYWN0aW9uQmFja2VuZEltcGwoKTsK
IAogICAgIHZpcnR1YWwgdm9pZCBhYm9ydCgpOwpAQCAtNTksNyArNTgsNyBAQCBwdWJsaWM6CiAK
ICAgICB2b2lkIGFib3J0KFBhc3NSZWZQdHI8SURCRGF0YWJhc2VFcnJvcj4pOwogICAgIHZvaWQg
cnVuKCk7Ci0gICAgSURCVHJhbnNhY3Rpb246Ok1vZGUgbW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1f
bW9kZTsgfQorICAgIElEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZTo6VHJhbnNhY3Rpb25Nb2Rl
IG1vZGUoKSBjb25zdCB7IHJldHVybiBtX21vZGU7IH0KICAgICBjb25zdCBIYXNoU2V0PGludDY0
X3Q+JiBzY29wZSgpIGNvbnN0IHsgcmV0dXJuIG1fb2JqZWN0U3RvcmVJZHM7IH0KICAgICB2b2lk
IHNjaGVkdWxlVGFzayhQYXNzT3duUHRyPE9wZXJhdGlvbj4gdGFzaywgUGFzc093blB0cjxPcGVy
YXRpb24+IGFib3J0VGFzayA9IG51bGxwdHIpIHsgc2NoZWR1bGVUYXNrKElEQkRhdGFiYXNlQmFj
a2VuZEludGVyZmFjZTo6Tm9ybWFsVGFzaywgdGFzaywgYWJvcnRUYXNrKTsgfQogICAgIHZvaWQg
c2NoZWR1bGVUYXNrKElEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZTo6VGFza1R5cGUsIFBhc3NP
d25QdHI8T3BlcmF0aW9uPiwgUGFzc093blB0cjxPcGVyYXRpb24+IGFib3J0VGFzayA9IG51bGxw
dHIpOwpAQCAtNzMsNyArNzIsNyBAQCBwdWJsaWM6CiAgICAgSURCRGF0YWJhc2VCYWNrZW5kSW1w
bCogZGF0YWJhc2UoKSBjb25zdCB7IHJldHVybiBtX2RhdGFiYXNlLmdldCgpOyB9CiAKIHByaXZh
dGU6Ci0gICAgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbChpbnQ2NF90IGlkLCBQYXNzUmVmUHRy
PElEQkRhdGFiYXNlQ2FsbGJhY2tzPiwgY29uc3QgSGFzaFNldDxpbnQ2NF90PiYgb2JqZWN0U3Rv
cmVJZHMsIElEQlRyYW5zYWN0aW9uOjpNb2RlLCBJREJEYXRhYmFzZUJhY2tlbmRJbXBsKik7Cisg
ICAgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbChpbnQ2NF90IGlkLCBQYXNzUmVmUHRyPElEQkRh
dGFiYXNlQ2FsbGJhY2tzPiwgY29uc3QgSGFzaFNldDxpbnQ2NF90PiYgb2JqZWN0U3RvcmVJZHMs
IElEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZTo6VHJhbnNhY3Rpb25Nb2RlLCBJREJEYXRhYmFz
ZUJhY2tlbmRJbXBsKik7CiAKICAgICBlbnVtIFN0YXRlIHsKICAgICAgICAgVW51c2VkLCAvLyBD
cmVhdGVkLCBidXQgbm8gdGFza3MgeWV0LgpAQCAtOTIsNyArOTEsNyBAQCBwcml2YXRlOgogCiAg
ICAgY29uc3QgaW50NjRfdCBtX2lkOwogICAgIGNvbnN0IEhhc2hTZXQ8aW50NjRfdD4gbV9vYmpl
Y3RTdG9yZUlkczsKLSAgICBjb25zdCBJREJUcmFuc2FjdGlvbjo6TW9kZSBtX21vZGU7CisgICAg
Y29uc3QgSURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlOjpUcmFuc2FjdGlvbk1vZGUgbV9tb2Rl
OwogCiAgICAgU3RhdGUgbV9zdGF0ZTsKICAgICBib29sIG1fY29tbWl0UGVuZGluZzsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uQ29v
cmRpbmF0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNh
Y3Rpb25Db29yZGluYXRvci5jcHAKaW5kZXggMGJiNWFjYTk1YTA4YzVjNTE2YTM2NTEzMjU0NWI4
ZTQ2OTdkNTBlZi4uMDU2OTE0ZTI1ZTRiZWVmZGI4ZjQxMjAyNDM2MzA5N2E1YTAxNDZkYyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb25D
b29yZGluYXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURC
VHJhbnNhY3Rpb25Db29yZGluYXRvci5jcHAKQEAgLTI5LDcgKzI5LDYgQEAKICNpZiBFTkFCTEUo
SU5ERVhFRF9EQVRBQkFTRSkKIAogI2luY2x1ZGUgIklEQkRhdGFiYXNlQmFja2VuZEltcGwuaCIK
LSNpbmNsdWRlICJJREJUcmFuc2FjdGlvbi5oIgogI2luY2x1ZGUgIklEQlRyYW5zYWN0aW9uQmFj
a2VuZEltcGwuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtOTcsNyArOTYsNyBAQCB2b2lk
IElEQlRyYW5zYWN0aW9uQ29vcmRpbmF0b3I6OnByb2Nlc3NTdGFydGVkVHJhbnNhY3Rpb25zKCkK
ICAgICBpZiAobV9xdWV1ZWRUcmFuc2FjdGlvbnMuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47
CiAKLSAgICBBU1NFUlQobV9zdGFydGVkVHJhbnNhY3Rpb25zLmlzRW1wdHkoKSB8fCAoKm1fc3Rh
cnRlZFRyYW5zYWN0aW9ucy5iZWdpbigpKS0+bW9kZSgpICE9IElEQlRyYW5zYWN0aW9uOjpWRVJT
SU9OX0NIQU5HRSk7CisgICAgQVNTRVJUKG1fc3RhcnRlZFRyYW5zYWN0aW9ucy5pc0VtcHR5KCkg
fHwgKCptX3N0YXJ0ZWRUcmFuc2FjdGlvbnMuYmVnaW4oKSktPm1vZGUoKSAhPSBJREJEYXRhYmFz
ZUJhY2tlbmRJbnRlcmZhY2U6OlZlcnNpb25DaGFuZ2UpOwogCiAgICAgTGlzdEhhc2hTZXQ8SURC
VHJhbnNhY3Rpb25CYWNrZW5kSW1wbCo+Ojpjb25zdF9pdGVyYXRvciBpdCA9IG1fcXVldWVkVHJh
bnNhY3Rpb25zLmJlZ2luKCk7CiAgICAgd2hpbGUgKGl0ICE9IG1fcXVldWVkVHJhbnNhY3Rpb25z
LmVuZCgpKSB7CkBAIC0xMjQsMjIgKzEyMywyMiBAQCBib29sIElEQlRyYW5zYWN0aW9uQ29vcmRp
bmF0b3I6OmNhblJ1blRyYW5zYWN0aW9uKElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGwqIHRyYQog
ewogICAgIEFTU0VSVChtX3F1ZXVlZFRyYW5zYWN0aW9ucy5jb250YWlucyh0cmFuc2FjdGlvbikp
OwogICAgIHN3aXRjaCAodHJhbnNhY3Rpb24tPm1vZGUoKSkgewotICAgIGNhc2UgSURCVHJhbnNh
Y3Rpb246OlZFUlNJT05fQ0hBTkdFOgorICAgIGNhc2UgSURCRGF0YWJhc2VCYWNrZW5kSW50ZXJm
YWNlOjpWZXJzaW9uQ2hhbmdlOgogICAgICAgICBBU1NFUlQobV9xdWV1ZWRUcmFuc2FjdGlvbnMu
c2l6ZSgpID09IDEpOwogICAgICAgICBBU1NFUlQobV9zdGFydGVkVHJhbnNhY3Rpb25zLmlzRW1w
dHkoKSk7CiAgICAgICAgIHJldHVybiB0cnVlOwogCi0gICAgY2FzZSBJREJUcmFuc2FjdGlvbjo6
UkVBRF9PTkxZOgorICAgIGNhc2UgSURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlOjpSZWFkT25s
eToKICAgICAgICAgcmV0dXJuIHRydWU7CiAKLSAgICBjYXNlIElEQlRyYW5zYWN0aW9uOjpSRUFE
X1dSSVRFOgorICAgIGNhc2UgSURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlOjpSZWFkV3JpdGU6
CiAgICAgICAgIGZvciAoSGFzaFNldDxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsKj46OmNvbnN0
X2l0ZXJhdG9yIGl0ID0gbV9zdGFydGVkVHJhbnNhY3Rpb25zLmJlZ2luKCk7IGl0ICE9IG1fc3Rh
cnRlZFRyYW5zYWN0aW9ucy5lbmQoKTsgKytpdCkgewotICAgICAgICAgICAgaWYgKCgqaXQpLT5t
b2RlKCkgPT0gSURCVHJhbnNhY3Rpb246OlJFQURfV1JJVEUgJiYgZG9TY29wZXNPdmVybGFwKHRy
YW5zYWN0aW9uLT5zY29wZSgpLCAoKml0KS0+c2NvcGUoKSkpCisgICAgICAgICAgICBpZiAoKCpp
dCktPm1vZGUoKSA9PSBJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2U6OlJlYWRXcml0ZSAmJiBk
b1Njb3Blc092ZXJsYXAodHJhbnNhY3Rpb24tPnNjb3BlKCksICgqaXQpLT5zY29wZSgpKSkKICAg
ICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KICAgICAgICAgZm9yIChMaXN0
SGFzaFNldDxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsKj46OmNvbnN0X2l0ZXJhdG9yIGl0ID0g
bV9xdWV1ZWRUcmFuc2FjdGlvbnMuYmVnaW4oKTsgKml0ICE9IHRyYW5zYWN0aW9uOyArK2l0KSB7
CiAgICAgICAgICAgICBBU1NFUlQoaXQgIT0gbV9xdWV1ZWRUcmFuc2FjdGlvbnMuZW5kKCkpOwot
ICAgICAgICAgICAgaWYgKCgqaXQpLT5tb2RlKCkgPT0gSURCVHJhbnNhY3Rpb246OlJFQURfV1JJ
VEUgJiYgZG9TY29wZXNPdmVybGFwKHRyYW5zYWN0aW9uLT5zY29wZSgpLCAoKml0KS0+c2NvcGUo
KSkpCisgICAgICAgICAgICBpZiAoKCppdCktPm1vZGUoKSA9PSBJREJEYXRhYmFzZUJhY2tlbmRJ
bnRlcmZhY2U6OlJlYWRXcml0ZSAmJiBkb1Njb3Blc092ZXJsYXAodHJhbnNhY3Rpb24tPnNjb3Bl
KCksICgqaXQpLT5zY29wZSgpKSkKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
ICAgIH0KICAgICAgICAgcmV0dXJuIHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9Bc3NlcnRNYXRjaGluZ0VudW1zLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL0Fzc2VydE1hdGNoaW5nRW51bXMuY3BwCmluZGV4IGI5NzI1MTY1M2RhMmQwODNkZWUz
ZDMxZWMxNDRjYTU3ZjIxNTcxZGEuLmE0YjMzYzk3ZTQ5NzRhYTFiMDU5NWJhNzMxNjA2ZGY4MDdj
ZjljN2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0Fzc2VydE1hdGNo
aW5nRW51bXMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0Fzc2VydE1hdGNo
aW5nRW51bXMuY3BwCkBAIC01MDIsMTAgKzUwMiwxMCBAQCBDT01QSUxFX0FTU0VSVF9NQVRDSElO
R19FTlVNKFdlYklEQktleVBhdGg6OkFycmF5VHlwZSwgSURCS2V5UGF0aDo6QXJyYXlUeXBlKTsK
IAogQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShXZWJJREJNZXRhZGF0YTo6Tm9JbnRWZXJz
aW9uLCBJREJEYXRhYmFzZU1ldGFkYXRhOjpOb0ludFZlcnNpb24pOwogCi1DT01QSUxFX0FTU0VS
VF9NQVRDSElOR19FTlVNKFdlYklEQkN1cnNvcjo6TmV4dCwgSURCQ3Vyc29yOjpORVhUKTsKLUNP
TVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oV2ViSURCQ3Vyc29yOjpOZXh0Tm9EdXBsaWNhdGUs
IElEQkN1cnNvcjo6TkVYVF9OT19EVVBMSUNBVEUpOwotQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdf
RU5VTShXZWJJREJDdXJzb3I6OlByZXYsIElEQkN1cnNvcjo6UFJFVik7Ci1DT01QSUxFX0FTU0VS
VF9NQVRDSElOR19FTlVNKFdlYklEQkN1cnNvcjo6UHJldk5vRHVwbGljYXRlLCBJREJDdXJzb3I6
OlBSRVZfTk9fRFVQTElDQVRFKTsKK0NPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oV2ViSURC
Q3Vyc29yOjpOZXh0LCBJREJDdXJzb3JCYWNrZW5kSW50ZXJmYWNlOjpOZXh0KTsKK0NPTVBJTEVf
QVNTRVJUX01BVENISU5HX0VOVU0oV2ViSURCQ3Vyc29yOjpOZXh0Tm9EdXBsaWNhdGUsIElEQkN1
cnNvckJhY2tlbmRJbnRlcmZhY2U6Ok5leHROb0R1cGxpY2F0ZSk7CitDT01QSUxFX0FTU0VSVF9N
QVRDSElOR19FTlVNKFdlYklEQkN1cnNvcjo6UHJldiwgSURCQ3Vyc29yQmFja2VuZEludGVyZmFj
ZTo6UHJldik7CitDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKFdlYklEQkN1cnNvcjo6UHJl
dk5vRHVwbGljYXRlLCBJREJDdXJzb3JCYWNrZW5kSW50ZXJmYWNlOjpQcmV2Tm9EdXBsaWNhdGUp
OwogCiBDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKFdlYklEQkRhdGFiYXNlOjpQcmVlbXB0
aXZlVGFzaywgSURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlOjpQcmVlbXB0aXZlVGFzayk7CiBD
T01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKFdlYklEQkRhdGFiYXNlOjpOb3JtYWxUYXNrLCBJ
REJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2U6Ok5vcm1hbFRhc2spOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCRGF0YWJhc2VCYWNrZW5kUHJveHkuY3BwIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCRGF0YWJhc2VCYWNrZW5kUHJveHkuY3BwCmluZGV4
IDM1NWQ4MDg5ZWVjYzZkM2M0NGJkOGNiYTA0MTExZjI2ZWZmMTkzNGYuLjI3Mjg4NzdiNmE3OTVm
MjQ0Yzg4ODY1MjBiMTNjYmNkNGIwZDBiMGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL0lEQkRhdGFiYXNlQmFja2VuZFByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9JREJEYXRhYmFzZUJhY2tlbmRQcm94eS5jcHAKQEAgLTkzLDcgKzkzLDcg
QEAgdm9pZCBJREJEYXRhYmFzZUJhY2tlbmRQcm94eTo6YWJvcnQoaW50NjRfdCB0cmFuc2FjdGlv
bklkLCBQYXNzUmVmUHRyPElEQkRhdGFiYXMKICAgICBtX3dlYklEQkRhdGFiYXNlLT5hYm9ydCh0
cmFuc2FjdGlvbklkLCBlcnJvcik7CiB9CiAKLXZvaWQgSURCRGF0YWJhc2VCYWNrZW5kUHJveHk6
Om9wZW5DdXJzb3IoaW50NjRfdCB0cmFuc2FjdGlvbklkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQs
IGludDY0X3QgaW5kZXhJZCwgUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4ga2V5UmFuZ2UsIHVuc2ln
bmVkIHNob3J0IGRpcmVjdGlvbiwgYm9vbCBrZXlPbmx5LCBUYXNrVHlwZSB0YXNrVHlwZSwgUGFz
c1JlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcykKK3ZvaWQgSURCRGF0YWJhc2VCYWNrZW5k
UHJveHk6Om9wZW5DdXJzb3IoaW50NjRfdCB0cmFuc2FjdGlvbklkLCBpbnQ2NF90IG9iamVjdFN0
b3JlSWQsIGludDY0X3QgaW5kZXhJZCwgUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4ga2V5UmFuZ2Us
IElEQkN1cnNvckJhY2tlbmRJbnRlcmZhY2U6OkRpcmVjdGlvbiBkaXJlY3Rpb24sIGJvb2wga2V5
T25seSwgVGFza1R5cGUgdGFza1R5cGUsIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFj
a3MpCiB7CiAgICAgbV93ZWJJREJEYXRhYmFzZS0+b3BlbkN1cnNvcih0cmFuc2FjdGlvbklkLCBv
YmplY3RTdG9yZUlkLCBpbmRleElkLCBrZXlSYW5nZSwgc3RhdGljX2Nhc3Q8V2ViSURCQ3Vyc29y
OjpEaXJlY3Rpb24+KGRpcmVjdGlvbiksIGtleU9ubHksIHN0YXRpY19jYXN0PFdlYklEQkRhdGFi
YXNlOjpUYXNrVHlwZT4odGFza1R5cGUpLCBuZXcgV2ViSURCQ2FsbGJhY2tzSW1wbChjYWxsYmFj
a3MpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkRhdGFi
YXNlQmFja2VuZFByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJEYXRhYmFz
ZUJhY2tlbmRQcm94eS5oCmluZGV4IGRiZDk2NDJmMTEyMGQ5OThkYWY5N2NiNWZhOWE1MjBiYmQ1
ZDZkNTEuLmE3MzkzOTVhMTcwZTc2Nzc1NjY1MWU3NDllMDg0MjE2MjdkMjZlNWEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkRhdGFiYXNlQmFja2VuZFByb3h5LmgK
KysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCRGF0YWJhc2VCYWNrZW5kUHJveHku
aApAQCAtNTUsNyArNTUsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHB1dChpbnQ2NF90
IHRyYW5zYWN0aW9uSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgUGFzc1JlZlB0cjxXZWJDb3Jl
OjpTaGFyZWRCdWZmZXI+IHZhbHVlLCBQYXNzUmVmUHRyPFdlYkNvcmU6OklEQktleT4sIFB1dE1v
ZGUsIFBhc3NSZWZQdHI8V2ViQ29yZTo6SURCQ2FsbGJhY2tzPiwgY29uc3QgVmVjdG9yPGludDY0
X3Q+JiBpbmRleElkcywgY29uc3QgVmVjdG9yPEluZGV4S2V5cz4mKSBPVkVSUklERTsKICAgICB2
aXJ0dWFsIHZvaWQgc2V0SW5kZXhLZXlzKGludDY0X3QgdHJhbnNhY3Rpb25JZCwgaW50NjRfdCBv
YmplY3RTdG9yZUlkLCBQYXNzUmVmUHRyPFdlYkNvcmU6OklEQktleT4gcHJwUHJpbWFyeUtleSwg
Y29uc3QgVmVjdG9yPGludDY0X3Q+JiBpbmRleElkcywgY29uc3QgVmVjdG9yPEluZGV4S2V5cz4m
KSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0SW5kZXhlc1JlYWR5KGludDY0X3QgdHJh
bnNhY3Rpb25JZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBjb25zdCBWZWN0b3I8aW50NjRfdD4m
IGluZGV4SWRzKSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIHZvaWQgb3BlbkN1cnNvcihpbnQ2NF90
IHRyYW5zYWN0aW9uSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgaW50NjRfdCBpbmRleElkLCBQ
YXNzUmVmUHRyPFdlYkNvcmU6OklEQktleVJhbmdlPiwgdW5zaWduZWQgc2hvcnQgZGlyZWN0aW9u
LCBib29sIGtleU9ubHksIFRhc2tUeXBlLCBQYXNzUmVmUHRyPFdlYkNvcmU6OklEQkNhbGxiYWNr
cz4pIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBvcGVuQ3Vyc29yKGludDY0X3QgdHJhbnNh
Y3Rpb25JZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBpbnQ2NF90IGluZGV4SWQsIFBhc3NSZWZQ
dHI8V2ViQ29yZTo6SURCS2V5UmFuZ2U+LCBXZWJDb3JlOjpJREJDdXJzb3JCYWNrZW5kSW50ZXJm
YWNlOjpEaXJlY3Rpb24sIGJvb2wga2V5T25seSwgVGFza1R5cGUsIFBhc3NSZWZQdHI8V2ViQ29y
ZTo6SURCQ2FsbGJhY2tzPikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIGNvdW50KGludDY0
X3QgdHJhbnNhY3Rpb25JZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBpbnQ2NF90IGluZGV4SWQs
IFBhc3NSZWZQdHI8V2ViQ29yZTo6SURCS2V5UmFuZ2U+LCBQYXNzUmVmUHRyPFdlYkNvcmU6OklE
QkNhbGxiYWNrcz4pIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBkZWxldGVSYW5nZShpbnQ2
NF90IHRyYW5zYWN0aW9uSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgUGFzc1JlZlB0cjxXZWJD
b3JlOjpJREJLZXlSYW5nZT4sIFBhc3NSZWZQdHI8V2ViQ29yZTo6SURCQ2FsbGJhY2tzPikgT1ZF
UlJJREU7CiAgICAgdmlydHVhbCB2b2lkIGNsZWFyKGludDY0X3QgdHJhbnNhY3Rpb25JZCwgaW50
NjRfdCBvYmplY3RTdG9yZUlkLCBQYXNzUmVmUHRyPFdlYkNvcmU6OklEQkNhbGxiYWNrcz4pIE9W
RVJSSURFOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCQ2Fs
bGJhY2tzSW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJDYWxsYmFj
a3NJbXBsLmNwcAppbmRleCAwNWZjODhmNWJjYjM1M2Q4M2FkNGU0NGVjMGIxYjljZDc2Yzg0NGVi
Li4zMzkwNThlZGRmMzRjN2JmNDJiNjQwNGM4OTZjNWZlMzNmNmE4ZmIyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJDYWxsYmFja3NJbXBsLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJDYWxsYmFja3NJbXBsLmNwcApAQCAtMzQs
NiArMzQsNyBAQAogI2luY2x1ZGUgIklEQkRhdGFiYXNlQmFja2VuZFByb3h5LmgiCiAjaW5jbHVk
ZSAiSURCRGF0YWJhc2VFcnJvci5oIgogI2luY2x1ZGUgIklEQktleS5oIgorI2luY2x1ZGUgIklE
Qk1ldGFkYXRhLmgiCiAjaW5jbHVkZSAiV2ViRE9NU3RyaW5nTGlzdC5oIgogI2luY2x1ZGUgIldl
YklEQkNhbGxiYWNrcy5oIgogI2luY2x1ZGUgIldlYklEQkRhdGFiYXNlLmgiCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJEYXRhYmFzZUltcGwuY3BwIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCRGF0YWJhc2VJbXBsLmNwcAppbmRleCBhMTgw
NTE1MGQyY2E2ZGM3N2RmODYxYjYyZDBhYWIzYTllNWRiMmFiLi5hNTJjYTE1NWM5ZTMzMTdlZWFk
YjBkZjYwYmY1YjgyOGIyNDNmNWY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9XZWJJREJEYXRhYmFzZUltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL1dlYklEQkRhdGFiYXNlSW1wbC5jcHAKQEAgLTExOCw3ICsxMTgsNyBAQCB2b2lkIFdlYklE
QkRhdGFiYXNlSW1wbDo6Y29tbWl0KGxvbmcgbG9uZyB0cmFuc2FjdGlvbklkKQogdm9pZCBXZWJJ
REJEYXRhYmFzZUltcGw6Om9wZW5DdXJzb3IobG9uZyBsb25nIHRyYW5zYWN0aW9uSWQsIGxvbmcg
bG9uZyBvYmplY3RTdG9yZUlkLCBsb25nIGxvbmcgaW5kZXhJZCwgY29uc3QgV2ViSURCS2V5UmFu
Z2UmIGtleVJhbmdlLCB1bnNpZ25lZCBzaG9ydCBkaXJlY3Rpb24sIGJvb2wga2V5T25seSwgVGFz
a1R5cGUgdGFza1R5cGUsIFdlYklEQkNhbGxiYWNrcyogY2FsbGJhY2tzKQogewogICAgIGlmICht
X2RhdGFiYXNlQmFja2VuZCkKLSAgICAgICAgbV9kYXRhYmFzZUJhY2tlbmQtPm9wZW5DdXJzb3Io
dHJhbnNhY3Rpb25JZCwgb2JqZWN0U3RvcmVJZCwgaW5kZXhJZCwga2V5UmFuZ2UsIHN0YXRpY19j
YXN0PElEQkN1cnNvcjo6RGlyZWN0aW9uPihkaXJlY3Rpb24pLCBrZXlPbmx5LCBzdGF0aWNfY2Fz
dDxJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2U6OlRhc2tUeXBlPih0YXNrVHlwZSksIElEQkNh
bGxiYWNrc1Byb3h5OjpjcmVhdGUoYWRvcHRQdHIoY2FsbGJhY2tzKSkpOworICAgICAgICBtX2Rh
dGFiYXNlQmFja2VuZC0+b3BlbkN1cnNvcih0cmFuc2FjdGlvbklkLCBvYmplY3RTdG9yZUlkLCBp
bmRleElkLCBrZXlSYW5nZSwgc3RhdGljX2Nhc3Q8SURCQ3Vyc29yQmFja2VuZEludGVyZmFjZTo6
RGlyZWN0aW9uPihkaXJlY3Rpb24pLCBrZXlPbmx5LCBzdGF0aWNfY2FzdDxJREJEYXRhYmFzZUJh
Y2tlbmRJbnRlcmZhY2U6OlRhc2tUeXBlPih0YXNrVHlwZSksIElEQkNhbGxiYWNrc1Byb3h5Ojpj
cmVhdGUoYWRvcHRQdHIoY2FsbGJhY2tzKSkpOwogfQogCiB2b2lkIFdlYklEQkRhdGFiYXNlSW1w
bDo6Y291bnQobG9uZyBsb25nIHRyYW5zYWN0aW9uSWQsIGxvbmcgbG9uZyBvYmplY3RTdG9yZUlk
LCBsb25nIGxvbmcgaW5kZXhJZCwgY29uc3QgV2ViSURCS2V5UmFuZ2UmIGtleVJhbmdlLCBXZWJJ
REJDYWxsYmFja3MqIGNhbGxiYWNrcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vdGVzdHMvSURCRGF0YWJhc2VCYWNrZW5kVGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3Rlc3RzL0lEQkRhdGFiYXNlQmFja2VuZFRlc3QuY3BwCmluZGV4IDQ1YjllMmJiMmJmYWNh
MWYwYWMxMTliN2Y1NWUyYTVjNDFiMTQ1ZWQuLjgxNmRiN2Q0NTNlYzMzNGRjM2YxNGRlYTc1MDQ3
ZjViNTFiMDAxMDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvSURC
RGF0YWJhc2VCYWNrZW5kVGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0
cy9JREJEYXRhYmFzZUJhY2tlbmRUZXN0LmNwcApAQCAtMjQsNiArMjQsOSBAQAogICovCiAKICNp
bmNsdWRlICJjb25maWcuaCIKKworI2luY2x1ZGUgIklEQkRhdGFiYXNlLmgiCisKICNpbmNsdWRl
ICJJREJCYWNraW5nU3RvcmUuaCIKICNpbmNsdWRlICJJREJDdXJzb3JCYWNrZW5kSW50ZXJmYWNl
LmgiCiAjaW5jbHVkZSAiSURCRGF0YWJhc2VCYWNrZW5kSW1wbC5oIgpAQCAtMTUxLDcgKzE1NCw3
IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgYWJvcnQoaW50NjRfdCB0cmFuc2FjdGlvbklk
LCBQYXNzUmVmUHRyPElEQkRhdGFiYXNlRXJyb3I+KSBPVkVSUklERSB7IH0KICAgICB2aXJ0dWFs
IHZvaWQgY29tbWl0KGludDY0X3QgdHJhbnNhY3Rpb25JZCkgT1ZFUlJJREUgeyB9CiAKLSAgICB2
aXJ0dWFsIHZvaWQgb3BlbkN1cnNvcihpbnQ2NF90IHRyYW5zYWN0aW9uSWQsIGludDY0X3Qgb2Jq
ZWN0U3RvcmVJZCwgaW50NjRfdCBpbmRleElkLCBQYXNzUmVmUHRyPElEQktleVJhbmdlPiwgdW5z
aWduZWQgc2hvcnQgZGlyZWN0aW9uLCBib29sIGtleU9ubHksIFRhc2tUeXBlLCBQYXNzUmVmUHRy
PElEQkNhbGxiYWNrcz4pIE9WRVJSSURFIHsgfQorICAgIHZpcnR1YWwgdm9pZCBvcGVuQ3Vyc29y
KGludDY0X3QgdHJhbnNhY3Rpb25JZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBpbnQ2NF90IGlu
ZGV4SWQsIFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+LCBJREJDdXJzb3JCYWNrZW5kSW50ZXJmYWNl
OjpEaXJlY3Rpb24sIGJvb2wga2V5T25seSwgVGFza1R5cGUsIFBhc3NSZWZQdHI8SURCQ2FsbGJh
Y2tzPikgT1ZFUlJJREUgeyB9CiAgICAgdmlydHVhbCB2b2lkIGNvdW50KGludDY0X3Qgb2JqZWN0
U3RvcmVJZCwgaW50NjRfdCBpbmRleElkLCBpbnQ2NF90IHRyYW5zYWN0aW9uSWQsIFBhc3NSZWZQ
dHI8SURCS2V5UmFuZ2U+LCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4pIE9WRVJSSURFIHsgfQog
ICAgIHZpcnR1YWwgdm9pZCBnZXQoaW50NjRfdCBvYmplY3RTdG9yZUlkLCBpbnQ2NF90IGluZGV4
SWQsIGludDY0X3QgdHJhbnNhY3Rpb25JZCwgUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4sIGJvb2wg
a2V5T25seSwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+KSBPVkVSUklERSB7IH0KICAgICB2aXJ0
dWFsIHZvaWQgcHV0KGludDY0X3QgdHJhbnNhY3Rpb25JZCwgaW50NjRfdCBvYmplY3RTdG9yZUlk
LCBQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4sIFBhc3NSZWZQdHI8SURCS2V5PiwgUHV0TW9kZSwg
UGFzc1JlZlB0cjxJREJDYWxsYmFja3M+LCBjb25zdCBWZWN0b3I8aW50NjRfdD4mIGluZGV4SWRz
LCBjb25zdCBWZWN0b3I8SW5kZXhLZXlzPiYpIE9WRVJSSURFIHsgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9JREJGYWtlQmFja2luZ1N0b3JlLmggYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3Rlc3RzL0lEQkZha2VCYWNraW5nU3RvcmUuaAppbmRleCAzZWQ3MjRi
YjRlYjBhMmJiZjg4YjY0NjFhNTJmZjQyN2I2OGViYjMyLi4zYmE0ZjlkYTYwMTViOWVmNWE1YzJj
NGE0NjI0ZDlhMWZlZDg2ZDI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rl
c3RzL0lEQkZha2VCYWNraW5nU3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rl
c3RzL0lEQkZha2VCYWNraW5nU3RvcmUuaApAQCAtNTEsMTAgKzUxLDEwIEBAIHB1YmxpYzoKICAg
ICB2aXJ0dWFsIHZvaWQgZGVsZXRlSW5kZXgoVHJhbnNhY3Rpb24qLCBpbnQ2NF90IGRhdGFiYXNl
SWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgaW50NjRfdCBpbmRleElkKSBPVkVSUklERSB7IH0K
ICAgICB2aXJ0dWFsIHZvaWQgcHV0SW5kZXhEYXRhRm9yUmVjb3JkKFRyYW5zYWN0aW9uKiwgaW50
NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGludDY0X3QgaW5kZXhJZCwg
Y29uc3QgSURCS2V5JiwgY29uc3QgUmVjb3JkSWRlbnRpZmllciYpIE9WRVJSSURFIHsgfQogCi0g
ICAgdmlydHVhbCBQYXNzUmVmUHRyPEN1cnNvcj4gb3Blbk9iamVjdFN0b3JlS2V5Q3Vyc29yKFRy
YW5zYWN0aW9uKiwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGNv
bnN0IElEQktleVJhbmdlKiwgSURCQ3Vyc29yOjpEaXJlY3Rpb24pIE9WRVJSSURFIHsgcmV0dXJu
IFBhc3NSZWZQdHI8Q3Vyc29yPigpOyB9Ci0gICAgdmlydHVhbCBQYXNzUmVmUHRyPEN1cnNvcj4g
b3Blbk9iamVjdFN0b3JlQ3Vyc29yKFRyYW5zYWN0aW9uKiwgaW50NjRfdCBkYXRhYmFzZUlkLCBp
bnQ2NF90IG9iamVjdFN0b3JlSWQsIGNvbnN0IElEQktleVJhbmdlKiwgSURCQ3Vyc29yOjpEaXJl
Y3Rpb24pIE9WRVJSSURFIHsgcmV0dXJuIFBhc3NSZWZQdHI8Q3Vyc29yPigpOyB9Ci0gICAgdmly
dHVhbCBQYXNzUmVmUHRyPEN1cnNvcj4gb3BlbkluZGV4S2V5Q3Vyc29yKFRyYW5zYWN0aW9uKiwg
aW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGludDY0X3QgaW5kZXhJ
ZCwgY29uc3QgSURCS2V5UmFuZ2UqLCBJREJDdXJzb3I6OkRpcmVjdGlvbikgT1ZFUlJJREUgeyBy
ZXR1cm4gUGFzc1JlZlB0cjxDdXJzb3I+KCk7IH0KLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8Q3Vy
c29yPiBvcGVuSW5kZXhDdXJzb3IoVHJhbnNhY3Rpb24qLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGlu
dDY0X3Qgb2JqZWN0U3RvcmVJZCwgaW50NjRfdCBpbmRleElkLCBjb25zdCBJREJLZXlSYW5nZSos
IElEQkN1cnNvcjo6RGlyZWN0aW9uKSBPVkVSUklERSB7IHJldHVybiBQYXNzUmVmUHRyPEN1cnNv
cj4oKTsgfQorICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxDdXJzb3I+IG9wZW5PYmplY3RTdG9yZUtl
eUN1cnNvcihUcmFuc2FjdGlvbiosIGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RT
dG9yZUlkLCBjb25zdCBJREJLZXlSYW5nZSosIElEQkN1cnNvckJhY2tlbmRJbnRlcmZhY2U6OkRp
cmVjdGlvbikgT1ZFUlJJREUgeyByZXR1cm4gUGFzc1JlZlB0cjxDdXJzb3I+KCk7IH0KKyAgICB2
aXJ0dWFsIFBhc3NSZWZQdHI8Q3Vyc29yPiBvcGVuT2JqZWN0U3RvcmVDdXJzb3IoVHJhbnNhY3Rp
b24qLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgY29uc3QgSURC
S2V5UmFuZ2UqLCBJREJDdXJzb3JCYWNrZW5kSW50ZXJmYWNlOjpEaXJlY3Rpb24pIE9WRVJSSURF
IHsgcmV0dXJuIFBhc3NSZWZQdHI8Q3Vyc29yPigpOyB9CisgICAgdmlydHVhbCBQYXNzUmVmUHRy
PEN1cnNvcj4gb3BlbkluZGV4S2V5Q3Vyc29yKFRyYW5zYWN0aW9uKiwgaW50NjRfdCBkYXRhYmFz
ZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGludDY0X3QgaW5kZXhJZCwgY29uc3QgSURCS2V5
UmFuZ2UqLCBJREJDdXJzb3JCYWNrZW5kSW50ZXJmYWNlOjpEaXJlY3Rpb24pIE9WRVJSSURFIHsg
cmV0dXJuIFBhc3NSZWZQdHI8Q3Vyc29yPigpOyB9CisgICAgdmlydHVhbCBQYXNzUmVmUHRyPEN1
cnNvcj4gb3BlbkluZGV4Q3Vyc29yKFRyYW5zYWN0aW9uKiwgaW50NjRfdCBkYXRhYmFzZUlkLCBp
bnQ2NF90IG9iamVjdFN0b3JlSWQsIGludDY0X3QgaW5kZXhJZCwgY29uc3QgSURCS2V5UmFuZ2Uq
LCBJREJDdXJzb3JCYWNrZW5kSW50ZXJmYWNlOjpEaXJlY3Rpb24pIE9WRVJSSURFIHsgcmV0dXJu
IFBhc3NSZWZQdHI8Q3Vyc29yPigpOyB9CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>190617</attachid>
            <date>2013-02-27 15:30:13 -0800</date>
            <delta_ts>2013-02-27 20:23:20 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-110653-20130227152626.patch</filename>
            <type>text/plain</type>
            <size>94950</size>
            <attacher name="Alec Flett">alecflett</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ0MDg1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNmU1NzcyOGVjY2JlMmI4
MjIyZjBiZDhkMTk5N2ZiM2Y4ZjgzMDhiOC4uNzNmMTg2YTNmYmYxY2IyOWIxZWJjZDQ0MDI3NmIw
ODU3NDJmMjZmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwOSBAQAorMjAxMy0wMi0yMiAgQWxl
YyBGbGV0dCAgPGFsZWNmbGV0dEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgSW5kZXhlZERCOiBQ
cm9wZXJseSByZWZhY3RvciBmcm9udGVuZC9iYWNrZW5kIGNvZGUgYnkgI2luY2x1ZGVzCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTA2NTMKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbmRleGVkREIgaGFz
IGEgZGlzdGluY3QgYmFja2VuZCBhbmQgZnJvbnRlbmQsIHdpdGggd2VsbCBkZWZpbmVkCisgICAg
ICAgICpJbnRlcmZhY2UgLyAqQ2FsbGJhY2tzIGNsYXNzZXMgZGlzdGluZ3Vpc2hpbmcgdGhlbSwg
cmVzcGVjdGl2ZWx5LgorICAgICAgICAKKyAgICAgICAgVGhpcyBtYWtlcyBzdXJlIHRoYXQgdGhl
IGZyb250ZW5kIGFuZCBiYWNrZW5kIGRvIG5vdCBpbmNsdWRlIGVhY2gKKyAgICAgICAgb3RoZXIg
YW5kIGZpeGVzIGJ1aWxkIHByb2JsZW1zIHRoYXQgb2NjdXJyZWQgYXMgYSByZXN1bHQuCisKKyAg
ICAgICAgU3BlY2lmaWNhbGx5IHRoaXMgbW92ZXMgZW51bXMgb3V0IG9mIElEQkN1cnNvciBhbmQg
SURCVHJhbnNhY3Rpb24KKyAgICAgICAgaW50byBJbmRleGVkREIuaCBpbiBhIG5ldyBXZWJDb3Jl
OjpJbmRleGVkREIgbmFtZXNwYWNlLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cywgYXMgdGhpcyBp
cyBqdXN0IGEgcmVmYWN0b3IuCisKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJCYWNr
aW5nU3RvcmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCQmFja2luZ1N0b3JlOjpDdXJzb3I6
OmNvbnRpbnVlRnVuY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6b2JqZWN0U3RvcmVDdXJzb3JP
cHRpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OmluZGV4Q3Vyc29yT3B0aW9ucyk6CisgICAgICAg
IChXZWJDb3JlOjpJREJCYWNraW5nU3RvcmU6Om9wZW5PYmplY3RTdG9yZUN1cnNvcik6CisgICAg
ICAgIChXZWJDb3JlOjpJREJCYWNraW5nU3RvcmU6Om9wZW5PYmplY3RTdG9yZUtleUN1cnNvcik6
CisgICAgICAgIChXZWJDb3JlOjpJREJCYWNraW5nU3RvcmU6Om9wZW5JbmRleEtleUN1cnNvcik6
CisgICAgICAgIChXZWJDb3JlOjpJREJCYWNraW5nU3RvcmU6Om9wZW5JbmRleEN1cnNvcik6Cisg
ICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCQmFja2luZ1N0b3JlLmg6CisgICAgICAgIChJ
REJCYWNraW5nU3RvcmUpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpJREJDdXJzb3I6OmNyZWF0ZSk6CisgICAgICAgIChXZWJD
b3JlOjpJREJDdXJzb3I6OklEQkN1cnNvcik6CisgICAgICAgIChXZWJDb3JlOjpJREJDdXJzb3I6
OmNvbnRpbnVlRnVuY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6SURCQ3Vyc29yOjpzdHJpbmdU
b0RpcmVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpJREJDdXJzb3I6OmRpcmVjdGlvblRvU3Ry
aW5nKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3IuaDoKKyAgICAgICAg
KElEQkN1cnNvcik6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yQmFja2Vu
ZEltcGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCQ3Vyc29yQmFja2VuZEltcGw6OmRlbGV0
ZUZ1bmN0aW9uKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3JCYWNrZW5k
SW1wbC5oOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvckJhY2tlbmRJbnRl
cmZhY2UuaDoKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3JXaXRoVmFsdWUu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCQ3Vyc29yV2l0aFZhbHVlOjpjcmVhdGUpOgorICAg
ICAgICAoV2ViQ29yZTo6SURCQ3Vyc29yV2l0aFZhbHVlOjpJREJDdXJzb3JXaXRoVmFsdWUpOgor
ICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvcldpdGhWYWx1ZS5oOgorICAgICAg
ICAoSURCQ3Vyc29yV2l0aFZhbHVlKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJE
YXRhYmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZTo6dHJhbnNhY3Rpb24p
OgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQmFja2VuZEltcGwuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6T3BlbkN1cnNvck9wZXJhdGlvbjo6Y3JlYXRlKToKKyAgICAg
ICAgKFdlYkNvcmU6Ok9wZW5DdXJzb3JPcGVyYXRpb246Ok9wZW5DdXJzb3JPcGVyYXRpb24pOgor
ICAgICAgICAoT3BlbkN1cnNvck9wZXJhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRh
YmFzZUJhY2tlbmRJbXBsOjpjcmVhdGVPYmplY3RTdG9yZSk6CisgICAgICAgIChXZWJDb3JlOjpJ
REJEYXRhYmFzZUJhY2tlbmRJbXBsOjpkZWxldGVPYmplY3RTdG9yZSk6CisgICAgICAgIChXZWJD
b3JlOjpJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpjcmVhdGVJbmRleCk6CisgICAgICAgIChXZWJD
b3JlOjpJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpkZWxldGVJbmRleCk6CisgICAgICAgIChXZWJD
b3JlOjpHZXRPcGVyYXRpb246OnBlcmZvcm0pOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJh
c2VCYWNrZW5kSW1wbDo6cHV0KToKKyAgICAgICAgKFdlYkNvcmU6OlB1dE9wZXJhdGlvbjo6cGVy
Zm9ybSk6CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpzZXRJbmRl
eEtleXMpOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6b3BlbkN1
cnNvcik6CisgICAgICAgIChXZWJDb3JlOjpPcGVuQ3Vyc29yT3BlcmF0aW9uOjpwZXJmb3JtKToK
KyAgICAgICAgKFdlYkNvcmU6OkNvdW50T3BlcmF0aW9uOjpwZXJmb3JtKToKKyAgICAgICAgKFdl
YkNvcmU6OklEQkRhdGFiYXNlQmFja2VuZEltcGw6OmRlbGV0ZVJhbmdlKToKKyAgICAgICAgKFdl
YkNvcmU6OkRlbGV0ZVJhbmdlT3BlcmF0aW9uOjpwZXJmb3JtKToKKyAgICAgICAgKFdlYkNvcmU6
OklEQkRhdGFiYXNlQmFja2VuZEltcGw6OmNsZWFyKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkRh
dGFiYXNlQmFja2VuZEltcGw6OnRyYW5zYWN0aW9uU3RhcnRlZCk6CisgICAgICAgIChXZWJDb3Jl
OjpJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjp0cmFuc2FjdGlvbkZpbmlzaGVkKToKKyAgICAgICAg
KFdlYkNvcmU6OklEQkRhdGFiYXNlQmFja2VuZEltcGw6OnRyYW5zYWN0aW9uRmluaXNoZWRBbmRB
Ym9ydEZpcmVkKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlQmFja2VuZEltcGw6OnRy
YW5zYWN0aW9uRmluaXNoZWRBbmRDb21wbGV0ZUZpcmVkKToKKyAgICAgICAgKFdlYkNvcmU6OklE
QkRhdGFiYXNlQmFja2VuZEltcGw6OmNyZWF0ZVRyYW5zYWN0aW9uKToKKyAgICAgICAgKFdlYkNv
cmU6OklEQkRhdGFiYXNlQmFja2VuZEltcGw6OnJ1bkludFZlcnNpb25DaGFuZ2VUcmFuc2FjdGlv
bik6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VCYWNrZW5kSW1wbC5o
OgorICAgICAgICAoSURCRGF0YWJhc2VCYWNrZW5kSW1wbCk6CisgICAgICAgICogTW9kdWxlcy9p
bmRleGVkZGIvSURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlLmg6CisgICAgICAgICogTW9kdWxl
cy9pbmRleGVkZGIvSURCSW5kZXguY3BwOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChX
ZWJDb3JlOjpJREJJbmRleDo6b3BlbkN1cnNvcik6CisgICAgICAgIChXZWJDb3JlOjpJREJJbmRl
eDo6b3BlbktleUN1cnNvcik6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0
U3RvcmUuY3BwOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJPYmpl
Y3RTdG9yZTo6b3BlbkN1cnNvcik6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCUmVx
dWVzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJSZXF1ZXN0OjpJREJSZXF1ZXN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OklEQlJlcXVlc3Q6OnNldEN1cnNvckRldGFpbHMpOgorICAgICAgICAq
IE1vZHVsZXMvaW5kZXhlZGRiL0lEQlJlcXVlc3QuaDoKKyAgICAgICAgKElEQlJlcXVlc3QpOgor
ICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6SURC
VHJhbnNhY3Rpb246OklEQlRyYW5zYWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5z
YWN0aW9uOjpzdHJpbmdUb01vZGUpOgorICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb246
Om1vZGVUb1N0cmluZyk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rp
b24uaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoSURCVHJhbnNhY3Rpb24pOgorICAg
ICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb246OmlzUmVhZE9ubHkpOgorICAgICAgICAoV2Vi
Q29yZTo6SURCVHJhbnNhY3Rpb246OmlzVmVyc2lvbkNoYW5nZSk6CisgICAgICAgICogTW9kdWxl
cy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29y
ZTo6SURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbDo6SURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbCk6
CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbC5o
OgorICAgICAgICAoSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbCk6CisgICAgICAgIChXZWJDb3Jl
OjpJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsOjptb2RlKToKKyAgICAgICAgKiBNb2R1bGVzL2lu
ZGV4ZWRkYi9JREJUcmFuc2FjdGlvbkNvb3JkaW5hdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OklEQlRyYW5zYWN0aW9uQ29vcmRpbmF0b3I6OnByb2Nlc3NTdGFydGVkVHJhbnNhY3Rpb25zKToK
KyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uQ29vcmRpbmF0b3I6OmNhblJ1blRyYW5z
YWN0aW9uKToKKwogMjAxMy0wMi0yNiAgQW5kcmV3IExvICA8YW5sb0ByaW0uY29tPgogCiAgICAg
ICAgIFtCbGFja0JlcnJ5XSBBbmltYXRlZCBpbWFnZXMgbm90IGFuaW1hdGluZyBvbiBhY2NlbGVy
YXRlZCBjb21wb3NpdGluZyBsYXllcnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggODlh
NjcyOGZiZTAxYzM4ZmFmYjliZjQxYTI0MjUxMDViMjE2NDFlYy4uNjBmMzMzMDBmNDlmMjhiYjJh
NGZmYTAwMzY2MjY4MTFlZGIzMWNhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMyBAQAorMjAxMy0wMi0yMiAgQWxlYyBGbGV0dCAgPGFsZWNmbGV0dEBjaHJvbWl1bS5v
cmc+CisKKyAgICAgICAgSW5kZXhlZERCOiBQcm9wZXJseSByZWZhY3RvciBmcm9udGVuZC9iYWNr
ZW5kIGNvZGUgYnkgI2luY2x1ZGVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xMTA2NTMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBDbGVhbiB1cCB0aGUgZnJvbnRlbmQvYmFja2VuZCBXZWJJREIqIGltcGxl
bWVudGF0aW9ucyB0bworICAgICAgICBtYXRjaCB0aGUgY2hhbmdlcyB0byB3ZWJraXQuCisKIDIw
MTMtMDItMjYgIFNoZXJpZmYgQm90ICA8d2Via2l0LnJldmlldy5ib3RAZ21haWwuY29tPgogCiAg
ICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIxNDQwNjUuCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZp
bGUubGlzdC5hbQppbmRleCBkZTM1ZGMxZjZlZDhiZWZmYTdhNmRiYWFhOGMwNWE5NGJlNDU3Y2Rm
Li41MDY2NjNjNTkzNzVhODY2NzQ3N2Y5YTk4NzUzZWUzNjcyNTRlNDVlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCisrKyBiL1NvdXJjZS9XZWJDb3JlL0dO
VW1ha2VmaWxlLmxpc3QuYW0KQEAgLTE5MTcsNiArMTkxNyw3IEBAIHdlYmNvcmVfbW9kdWxlc19z
b3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2Fj
dGlvbi5oIFwKIAlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJWZXJzaW9uQ2hh
bmdlRXZlbnQuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJWZXJz
aW9uQ2hhbmdlRXZlbnQuaCBcCisJU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSW5k
ZXhlZERCLmggXAogCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL1BhZ2VHcm91cElu
ZGV4ZWREYXRhYmFzZS5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL1Bh
Z2VHcm91cEluZGV4ZWREYXRhYmFzZS5oIFwKIAlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9Xb3JrZXJDb250ZXh0SW5kZXhlZERhdGFiYXNlLmNwcCBcCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJCYWNraW5nU3RvcmUuY3BwIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQmFja2luZ1N0b3JlLmNwcAppbmRleCAzNzBj
YzE1OTVmZmZmN2NmYTE5ZTA0NzFmYTRhZWIyNTczOTNjZmU2Li4xNjBlZDJkMTUwMGRlNTU0NTli
NDRmYjJhMzBkMzAwNmFmZmYwZTIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9JREJCYWNraW5nU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL0lEQkJhY2tpbmdTdG9yZS5jcHAKQEAgLTEyNzksNyArMTI3OSw3IEBAIGJv
b2wgSURCQmFja2luZ1N0b3JlOjpDdXJzb3I6OmNvbnRpbnVlRnVuY3Rpb24oY29uc3QgSURCS2V5
KiBrZXksIEl0ZXJhdG9yU3RhdGUKIHsKICAgICBSZWZQdHI8SURCS2V5PiBwcmV2aW91c0tleSA9
IG1fY3VycmVudEtleTsKIAotICAgIC8vIFdoZW4gaXRlcmF0aW5nIHdpdGggUFJFVl9OT19EVVBM
SUNBVEUsIHNwZWMgcmVxdWlyZXMgdGhhdCB0aGUKKyAgICAvLyBXaGVuIGl0ZXJhdGluZyB3aXRo
IFByZXZOb0R1cGxpY2F0ZSwgc3BlYyByZXF1aXJlcyB0aGF0IHRoZQogICAgIC8vIHZhbHVlIHdl
IHlpZWxkIGZvciBlYWNoIGtleSBpcyB0aGUgZmlyc3QgZHVwbGljYXRlIGluIGZvcndhcmRzCiAg
ICAgLy8gb3JkZXIuCiAgICAgUmVmUHRyPElEQktleT4gbGFzdER1cGxpY2F0ZUtleTsKQEAgLTE2
ODksMTIgKzE2ODksMTIgQEAgYm9vbCBJbmRleEN1cnNvckltcGw6OmxvYWRDdXJyZW50Um93KCkK
ICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBvYmplY3RTdG9yZUN1cnNvck9wdGlvbnMoTGV2
ZWxEQlRyYW5zYWN0aW9uKiB0cmFuc2FjdGlvbiwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90
IG9iamVjdFN0b3JlSWQsIGNvbnN0IElEQktleVJhbmdlKiByYW5nZSwgSURCQ3Vyc29yOjpEaXJl
Y3Rpb24gZGlyZWN0aW9uLCBJREJCYWNraW5nU3RvcmU6OkN1cnNvcjo6Q3Vyc29yT3B0aW9ucyYg
Y3Vyc29yT3B0aW9ucykKK2Jvb2wgb2JqZWN0U3RvcmVDdXJzb3JPcHRpb25zKExldmVsREJUcmFu
c2FjdGlvbiogdHJhbnNhY3Rpb24sIGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RT
dG9yZUlkLCBjb25zdCBJREJLZXlSYW5nZSogcmFuZ2UsIEluZGV4ZWREQjo6Q3Vyc29yRGlyZWN0
aW9uIGRpcmVjdGlvbiwgSURCQmFja2luZ1N0b3JlOjpDdXJzb3I6OkN1cnNvck9wdGlvbnMmIGN1
cnNvck9wdGlvbnMpCiB7CiAgICAgYm9vbCBsb3dlckJvdW5kID0gcmFuZ2UgJiYgcmFuZ2UtPmxv
d2VyKCk7CiAgICAgYm9vbCB1cHBlckJvdW5kID0gcmFuZ2UgJiYgcmFuZ2UtPnVwcGVyKCk7Ci0g
ICAgY3Vyc29yT3B0aW9ucy5mb3J3YXJkID0gKGRpcmVjdGlvbiA9PSBJREJDdXJzb3I6Ok5FWFRf
Tk9fRFVQTElDQVRFIHx8IGRpcmVjdGlvbiA9PSBJREJDdXJzb3I6Ok5FWFQpOwotICAgIGN1cnNv
ck9wdGlvbnMudW5pcXVlID0gKGRpcmVjdGlvbiA9PSBJREJDdXJzb3I6Ok5FWFRfTk9fRFVQTElD
QVRFIHx8IGRpcmVjdGlvbiA9PSBJREJDdXJzb3I6OlBSRVZfTk9fRFVQTElDQVRFKTsKKyAgICBj
dXJzb3JPcHRpb25zLmZvcndhcmQgPSAoZGlyZWN0aW9uID09IEluZGV4ZWREQjo6Q3Vyc29yTmV4
dE5vRHVwbGljYXRlIHx8IGRpcmVjdGlvbiA9PSBJbmRleGVkREI6OkN1cnNvck5leHQpOworICAg
IGN1cnNvck9wdGlvbnMudW5pcXVlID0gKGRpcmVjdGlvbiA9PSBJbmRleGVkREI6OkN1cnNvck5l
eHROb0R1cGxpY2F0ZSB8fCBkaXJlY3Rpb24gPT0gSW5kZXhlZERCOjpDdXJzb3JQcmV2Tm9EdXBs
aWNhdGUpOwogCiAgICAgaWYgKCFsb3dlckJvdW5kKSB7CiAgICAgICAgIGN1cnNvck9wdGlvbnMu
bG93S2V5ID0gT2JqZWN0U3RvcmVEYXRhS2V5OjplbmNvZGUoZGF0YWJhc2VJZCwgb2JqZWN0U3Rv
cmVJZCwgbWluSURCS2V5KCkpOwpAQCAtMTczNiwxMyArMTczNiwxMyBAQCBib29sIG9iamVjdFN0
b3JlQ3Vyc29yT3B0aW9ucyhMZXZlbERCVHJhbnNhY3Rpb24qIHRyYW5zYWN0aW9uLCBpbnQ2NF90
IGRhdGFiYXNlSQogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIGluZGV4Q3Vyc29yT3B0aW9u
cyhMZXZlbERCVHJhbnNhY3Rpb24qIHRyYW5zYWN0aW9uLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGlu
dDY0X3Qgb2JqZWN0U3RvcmVJZCwgaW50NjRfdCBpbmRleElkLCBjb25zdCBJREJLZXlSYW5nZSog
cmFuZ2UsIElEQkN1cnNvcjo6RGlyZWN0aW9uIGRpcmVjdGlvbiwgSURCQmFja2luZ1N0b3JlOjpD
dXJzb3I6OkN1cnNvck9wdGlvbnMmIGN1cnNvck9wdGlvbnMpCitib29sIGluZGV4Q3Vyc29yT3B0
aW9ucyhMZXZlbERCVHJhbnNhY3Rpb24qIHRyYW5zYWN0aW9uLCBpbnQ2NF90IGRhdGFiYXNlSWQs
IGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgaW50NjRfdCBpbmRleElkLCBjb25zdCBJREJLZXlSYW5n
ZSogcmFuZ2UsIEluZGV4ZWREQjo6Q3Vyc29yRGlyZWN0aW9uIGRpcmVjdGlvbiwgSURCQmFja2lu
Z1N0b3JlOjpDdXJzb3I6OkN1cnNvck9wdGlvbnMmIGN1cnNvck9wdGlvbnMpCiB7CiAgICAgQVNT
RVJUKHRyYW5zYWN0aW9uKTsKICAgICBib29sIGxvd2VyQm91bmQgPSByYW5nZSAmJiByYW5nZS0+
bG93ZXIoKTsKICAgICBib29sIHVwcGVyQm91bmQgPSByYW5nZSAmJiByYW5nZS0+dXBwZXIoKTsK
LSAgICBjdXJzb3JPcHRpb25zLmZvcndhcmQgPSAoZGlyZWN0aW9uID09IElEQkN1cnNvcjo6TkVY
VF9OT19EVVBMSUNBVEUgfHwgZGlyZWN0aW9uID09IElEQkN1cnNvcjo6TkVYVCk7Ci0gICAgY3Vy
c29yT3B0aW9ucy51bmlxdWUgPSAoZGlyZWN0aW9uID09IElEQkN1cnNvcjo6TkVYVF9OT19EVVBM
SUNBVEUgfHwgZGlyZWN0aW9uID09IElEQkN1cnNvcjo6UFJFVl9OT19EVVBMSUNBVEUpOworICAg
IGN1cnNvck9wdGlvbnMuZm9yd2FyZCA9IChkaXJlY3Rpb24gPT0gSW5kZXhlZERCOjpDdXJzb3JO
ZXh0Tm9EdXBsaWNhdGUgfHwgZGlyZWN0aW9uID09IEluZGV4ZWREQjo6Q3Vyc29yTmV4dCk7Cisg
ICAgY3Vyc29yT3B0aW9ucy51bmlxdWUgPSAoZGlyZWN0aW9uID09IEluZGV4ZWREQjo6Q3Vyc29y
TmV4dE5vRHVwbGljYXRlIHx8IGRpcmVjdGlvbiA9PSBJbmRleGVkREI6OkN1cnNvclByZXZOb0R1
cGxpY2F0ZSk7CiAKICAgICBpZiAoIWxvd2VyQm91bmQpIHsKICAgICAgICAgY3Vyc29yT3B0aW9u
cy5sb3dLZXkgPSBJbmRleERhdGFLZXk6OmVuY29kZU1pbktleShkYXRhYmFzZUlkLCBvYmplY3RT
dG9yZUlkLCBpbmRleElkKTsKQEAgLTE3NzksNyArMTc3OSw3IEBAIGJvb2wgaW5kZXhDdXJzb3JP
cHRpb25zKExldmVsREJUcmFuc2FjdGlvbiogdHJhbnNhY3Rpb24sIGludDY0X3QgZGF0YWJhc2VJ
ZCwgaW50CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLVBhc3NSZWZQdHI8SURCQmFja2luZ1N0b3Jl
OjpDdXJzb3I+IElEQkJhY2tpbmdTdG9yZTo6b3Blbk9iamVjdFN0b3JlQ3Vyc29yKElEQkJhY2tp
bmdTdG9yZTo6VHJhbnNhY3Rpb24qIHRyYW5zYWN0aW9uLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGlu
dDY0X3Qgb2JqZWN0U3RvcmVJZCwgY29uc3QgSURCS2V5UmFuZ2UqIHJhbmdlLCBJREJDdXJzb3I6
OkRpcmVjdGlvbiBkaXJlY3Rpb24pCitQYXNzUmVmUHRyPElEQkJhY2tpbmdTdG9yZTo6Q3Vyc29y
PiBJREJCYWNraW5nU3RvcmU6Om9wZW5PYmplY3RTdG9yZUN1cnNvcihJREJCYWNraW5nU3RvcmU6
OlRyYW5zYWN0aW9uKiB0cmFuc2FjdGlvbiwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9i
amVjdFN0b3JlSWQsIGNvbnN0IElEQktleVJhbmdlKiByYW5nZSwgSW5kZXhlZERCOjpDdXJzb3JE
aXJlY3Rpb24gZGlyZWN0aW9uKQogewogICAgIElEQl9UUkFDRSgiSURCQmFja2luZ1N0b3JlOjpv
cGVuT2JqZWN0U3RvcmVDdXJzb3IiKTsKICAgICBMZXZlbERCVHJhbnNhY3Rpb24qIGxldmVsREJU
cmFuc2FjdGlvbiA9IElEQkJhY2tpbmdTdG9yZTo6VHJhbnNhY3Rpb246OmxldmVsREJUcmFuc2Fj
dGlvbkZyb20odHJhbnNhY3Rpb24pOwpAQCAtMTc5Myw3ICsxNzkzLDcgQEAgUGFzc1JlZlB0cjxJ
REJCYWNraW5nU3RvcmU6OkN1cnNvcj4gSURCQmFja2luZ1N0b3JlOjpvcGVuT2JqZWN0U3RvcmVD
dXJzb3IoSURCQmEKICAgICByZXR1cm4gY3Vyc29yLnJlbGVhc2UoKTsKIH0KIAotUGFzc1JlZlB0
cjxJREJCYWNraW5nU3RvcmU6OkN1cnNvcj4gSURCQmFja2luZ1N0b3JlOjpvcGVuT2JqZWN0U3Rv
cmVLZXlDdXJzb3IoSURCQmFja2luZ1N0b3JlOjpUcmFuc2FjdGlvbiogdHJhbnNhY3Rpb24sIGlu
dDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBjb25zdCBJREJLZXlSYW5n
ZSogcmFuZ2UsIElEQkN1cnNvcjo6RGlyZWN0aW9uIGRpcmVjdGlvbikKK1Bhc3NSZWZQdHI8SURC
QmFja2luZ1N0b3JlOjpDdXJzb3I+IElEQkJhY2tpbmdTdG9yZTo6b3Blbk9iamVjdFN0b3JlS2V5
Q3Vyc29yKElEQkJhY2tpbmdTdG9yZTo6VHJhbnNhY3Rpb24qIHRyYW5zYWN0aW9uLCBpbnQ2NF90
IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgY29uc3QgSURCS2V5UmFuZ2UqIHJh
bmdlLCBJbmRleGVkREI6OkN1cnNvckRpcmVjdGlvbiBkaXJlY3Rpb24pCiB7CiAgICAgSURCX1RS
QUNFKCJJREJCYWNraW5nU3RvcmU6Om9wZW5PYmplY3RTdG9yZUtleUN1cnNvciIpOwogICAgIExl
dmVsREJUcmFuc2FjdGlvbiogbGV2ZWxEQlRyYW5zYWN0aW9uID0gSURCQmFja2luZ1N0b3JlOjpU
cmFuc2FjdGlvbjo6bGV2ZWxEQlRyYW5zYWN0aW9uRnJvbSh0cmFuc2FjdGlvbik7CkBAIC0xODA3
LDcgKzE4MDcsNyBAQCBQYXNzUmVmUHRyPElEQkJhY2tpbmdTdG9yZTo6Q3Vyc29yPiBJREJCYWNr
aW5nU3RvcmU6Om9wZW5PYmplY3RTdG9yZUtleUN1cnNvcihJRAogICAgIHJldHVybiBjdXJzb3Iu
cmVsZWFzZSgpOwogfQogCi1QYXNzUmVmUHRyPElEQkJhY2tpbmdTdG9yZTo6Q3Vyc29yPiBJREJC
YWNraW5nU3RvcmU6Om9wZW5JbmRleEtleUN1cnNvcihJREJCYWNraW5nU3RvcmU6OlRyYW5zYWN0
aW9uKiB0cmFuc2FjdGlvbiwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3Jl
SWQsIGludDY0X3QgaW5kZXhJZCwgY29uc3QgSURCS2V5UmFuZ2UqIHJhbmdlLCBJREJDdXJzb3I6
OkRpcmVjdGlvbiBkaXJlY3Rpb24pCitQYXNzUmVmUHRyPElEQkJhY2tpbmdTdG9yZTo6Q3Vyc29y
PiBJREJCYWNraW5nU3RvcmU6Om9wZW5JbmRleEtleUN1cnNvcihJREJCYWNraW5nU3RvcmU6OlRy
YW5zYWN0aW9uKiB0cmFuc2FjdGlvbiwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVj
dFN0b3JlSWQsIGludDY0X3QgaW5kZXhJZCwgY29uc3QgSURCS2V5UmFuZ2UqIHJhbmdlLCBJbmRl
eGVkREI6OkN1cnNvckRpcmVjdGlvbiBkaXJlY3Rpb24pCiB7CiAgICAgSURCX1RSQUNFKCJJREJC
YWNraW5nU3RvcmU6Om9wZW5JbmRleEtleUN1cnNvciIpOwogICAgIExldmVsREJUcmFuc2FjdGlv
biogbGV2ZWxEQlRyYW5zYWN0aW9uID0gSURCQmFja2luZ1N0b3JlOjpUcmFuc2FjdGlvbjo6bGV2
ZWxEQlRyYW5zYWN0aW9uRnJvbSh0cmFuc2FjdGlvbik7CkBAIC0xODIxLDcgKzE4MjEsNyBAQCBQ
YXNzUmVmUHRyPElEQkJhY2tpbmdTdG9yZTo6Q3Vyc29yPiBJREJCYWNraW5nU3RvcmU6Om9wZW5J
bmRleEtleUN1cnNvcihJREJCYWNraQogICAgIHJldHVybiBjdXJzb3IucmVsZWFzZSgpOwogfQog
Ci1QYXNzUmVmUHRyPElEQkJhY2tpbmdTdG9yZTo6Q3Vyc29yPiBJREJCYWNraW5nU3RvcmU6Om9w
ZW5JbmRleEN1cnNvcihJREJCYWNraW5nU3RvcmU6OlRyYW5zYWN0aW9uKiB0cmFuc2FjdGlvbiwg
aW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGludDY0X3QgaW5kZXhJ
ZCwgY29uc3QgSURCS2V5UmFuZ2UqIHJhbmdlLCBJREJDdXJzb3I6OkRpcmVjdGlvbiBkaXJlY3Rp
b24pCitQYXNzUmVmUHRyPElEQkJhY2tpbmdTdG9yZTo6Q3Vyc29yPiBJREJCYWNraW5nU3RvcmU6
Om9wZW5JbmRleEN1cnNvcihJREJCYWNraW5nU3RvcmU6OlRyYW5zYWN0aW9uKiB0cmFuc2FjdGlv
biwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGludDY0X3QgaW5k
ZXhJZCwgY29uc3QgSURCS2V5UmFuZ2UqIHJhbmdlLCBJbmRleGVkREI6OkN1cnNvckRpcmVjdGlv
biBkaXJlY3Rpb24pCiB7CiAgICAgSURCX1RSQUNFKCJJREJCYWNraW5nU3RvcmU6Om9wZW5JbmRl
eEN1cnNvciIpOwogICAgIExldmVsREJUcmFuc2FjdGlvbiogbGV2ZWxEQlRyYW5zYWN0aW9uID0g
SURCQmFja2luZ1N0b3JlOjpUcmFuc2FjdGlvbjo6bGV2ZWxEQlRyYW5zYWN0aW9uRnJvbSh0cmFu
c2FjdGlvbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9J
REJCYWNraW5nU3RvcmUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkJh
Y2tpbmdTdG9yZS5oCmluZGV4IDhiNDliYzhhNDIxYzYwNjFiZWNhZjYwN2JjZWI4ZTMxYzA2Nzc1
M2QuLjE3MmM4MmRkZmE1ZDA4NDFlMWQ5ZDJhMTU4MTNkMjQwOGQxYjRmMDggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkJhY2tpbmdTdG9yZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkJhY2tpbmdTdG9yZS5oCkBAIC0y
OCw4ICsyOCw4IEBACiAKICNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKIAotI2luY2x1ZGUg
IklEQkN1cnNvci5oIgogI2luY2x1ZGUgIklEQk1ldGFkYXRhLmgiCisjaW5jbHVkZSAiSW5kZXhl
ZERCLmgiCiAjaW5jbHVkZSAiTGV2ZWxEQlRyYW5zYWN0aW9uLmgiCiAjaW5jbHVkZSA8d3RmL093
blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CkBAIC0xMzgsMTAgKzEzOCwxMCBA
QCBwdWJsaWM6CiAgICAgICAgIElEQkJhY2tpbmdTdG9yZTo6UmVjb3JkSWRlbnRpZmllciBtX3Jl
Y29yZElkZW50aWZpZXI7CiAgICAgfTsKIAotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxDdXJzb3I+
IG9wZW5PYmplY3RTdG9yZUtleUN1cnNvcihJREJCYWNraW5nU3RvcmU6OlRyYW5zYWN0aW9uKiwg
aW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGNvbnN0IElEQktleVJh
bmdlKiwgSURCQ3Vyc29yOjpEaXJlY3Rpb24pOwotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxDdXJz
b3I+IG9wZW5PYmplY3RTdG9yZUN1cnNvcihJREJCYWNraW5nU3RvcmU6OlRyYW5zYWN0aW9uKiwg
aW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGNvbnN0IElEQktleVJh
bmdlKiwgSURCQ3Vyc29yOjpEaXJlY3Rpb24pOwotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxDdXJz
b3I+IG9wZW5JbmRleEtleUN1cnNvcihJREJCYWNraW5nU3RvcmU6OlRyYW5zYWN0aW9uKiwgaW50
NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGludDY0X3QgaW5kZXhJZCwg
Y29uc3QgSURCS2V5UmFuZ2UqLCBJREJDdXJzb3I6OkRpcmVjdGlvbik7Ci0gICAgdmlydHVhbCBQ
YXNzUmVmUHRyPEN1cnNvcj4gb3BlbkluZGV4Q3Vyc29yKElEQkJhY2tpbmdTdG9yZTo6VHJhbnNh
Y3Rpb24qLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgaW50NjRf
dCBpbmRleElkLCBjb25zdCBJREJLZXlSYW5nZSosIElEQkN1cnNvcjo6RGlyZWN0aW9uKTsKKyAg
ICB2aXJ0dWFsIFBhc3NSZWZQdHI8Q3Vyc29yPiBvcGVuT2JqZWN0U3RvcmVLZXlDdXJzb3IoSURC
QmFja2luZ1N0b3JlOjpUcmFuc2FjdGlvbiosIGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBv
YmplY3RTdG9yZUlkLCBjb25zdCBJREJLZXlSYW5nZSosIEluZGV4ZWREQjo6Q3Vyc29yRGlyZWN0
aW9uKTsKKyAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8Q3Vyc29yPiBvcGVuT2JqZWN0U3RvcmVDdXJz
b3IoSURCQmFja2luZ1N0b3JlOjpUcmFuc2FjdGlvbiosIGludDY0X3QgZGF0YWJhc2VJZCwgaW50
NjRfdCBvYmplY3RTdG9yZUlkLCBjb25zdCBJREJLZXlSYW5nZSosIEluZGV4ZWREQjo6Q3Vyc29y
RGlyZWN0aW9uKTsKKyAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8Q3Vyc29yPiBvcGVuSW5kZXhLZXlD
dXJzb3IoSURCQmFja2luZ1N0b3JlOjpUcmFuc2FjdGlvbiosIGludDY0X3QgZGF0YWJhc2VJZCwg
aW50NjRfdCBvYmplY3RTdG9yZUlkLCBpbnQ2NF90IGluZGV4SWQsIGNvbnN0IElEQktleVJhbmdl
KiwgSW5kZXhlZERCOjpDdXJzb3JEaXJlY3Rpb24pOworICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxD
dXJzb3I+IG9wZW5JbmRleEN1cnNvcihJREJCYWNraW5nU3RvcmU6OlRyYW5zYWN0aW9uKiwgaW50
NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGludDY0X3QgaW5kZXhJZCwg
Y29uc3QgSURCS2V5UmFuZ2UqLCBJbmRleGVkREI6OkN1cnNvckRpcmVjdGlvbik7CiAKICAgICBj
bGFzcyBUcmFuc2FjdGlvbiB7CiAgICAgcHVibGljOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL0lEQkN1cnNvci5jcHAKaW5kZXggNDY4ZWRiZWJhOTExMTY5YTA5M2EyZTdk
MjM0OTA4OGZjYzI4MzZhNS4uN2JiMGY1MDBlNDdiNDI2MTM0MGE5MzI4MTU4YWRlOTNlMzQ4NTZj
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29y
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3IuY3Bw
CkBAIC00Myw3ICs0Myw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUGFzc1JlZlB0cjxJ
REJDdXJzb3I+IElEQkN1cnNvcjo6Y3JlYXRlKFBhc3NSZWZQdHI8SURCQ3Vyc29yQmFja2VuZElu
dGVyZmFjZT4gYmFja2VuZCwgRGlyZWN0aW9uIGRpcmVjdGlvbiwgSURCUmVxdWVzdCogcmVxdWVz
dCwgSURCQW55KiBzb3VyY2UsIElEQlRyYW5zYWN0aW9uKiB0cmFuc2FjdGlvbikKK1Bhc3NSZWZQ
dHI8SURCQ3Vyc29yPiBJREJDdXJzb3I6OmNyZWF0ZShQYXNzUmVmUHRyPElEQkN1cnNvckJhY2tl
bmRJbnRlcmZhY2U+IGJhY2tlbmQsIEluZGV4ZWREQjo6Q3Vyc29yRGlyZWN0aW9uIGRpcmVjdGlv
biwgSURCUmVxdWVzdCogcmVxdWVzdCwgSURCQW55KiBzb3VyY2UsIElEQlRyYW5zYWN0aW9uKiB0
cmFuc2FjdGlvbikKIHsKICAgICByZXR1cm4gYWRvcHRSZWYobmV3IElEQkN1cnNvcihiYWNrZW5k
LCBkaXJlY3Rpb24sIHJlcXVlc3QsIHNvdXJjZSwgdHJhbnNhY3Rpb24pKTsKIH0KQEAgLTczLDcg
KzczLDcgQEAgY29uc3QgQXRvbWljU3RyaW5nJiBJREJDdXJzb3I6OmRpcmVjdGlvblByZXZVbmlx
dWUoKQogfQogCiAKLUlEQkN1cnNvcjo6SURCQ3Vyc29yKFBhc3NSZWZQdHI8SURCQ3Vyc29yQmFj
a2VuZEludGVyZmFjZT4gYmFja2VuZCwgRGlyZWN0aW9uIGRpcmVjdGlvbiwgSURCUmVxdWVzdCog
cmVxdWVzdCwgSURCQW55KiBzb3VyY2UsIElEQlRyYW5zYWN0aW9uKiB0cmFuc2FjdGlvbikKK0lE
QkN1cnNvcjo6SURCQ3Vyc29yKFBhc3NSZWZQdHI8SURCQ3Vyc29yQmFja2VuZEludGVyZmFjZT4g
YmFja2VuZCwgSW5kZXhlZERCOjpDdXJzb3JEaXJlY3Rpb24gZGlyZWN0aW9uLCBJREJSZXF1ZXN0
KiByZXF1ZXN0LCBJREJBbnkqIHNvdXJjZSwgSURCVHJhbnNhY3Rpb24qIHRyYW5zYWN0aW9uKQog
ICAgIDogbV9iYWNrZW5kKGJhY2tlbmQpCiAgICAgLCBtX3JlcXVlc3QocmVxdWVzdCkKICAgICAs
IG1fZGlyZWN0aW9uKGRpcmVjdGlvbikKQEAgLTIwNiw3ICsyMDYsNyBAQCB2b2lkIElEQkN1cnNv
cjo6Y29udGludWVGdW5jdGlvbihQYXNzUmVmUHRyPElEQktleT4ga2V5LCBFeGNlcHRpb25Db2Rl
JiBlYykKIAogICAgIGlmIChrZXkpIHsKICAgICAgICAgQVNTRVJUKG1fY3VycmVudEtleSk7Ci0g
ICAgICAgIGlmIChtX2RpcmVjdGlvbiA9PSBJREJDdXJzb3I6Ok5FWFQgfHwgbV9kaXJlY3Rpb24g
PT0gSURCQ3Vyc29yOjpORVhUX05PX0RVUExJQ0FURSkgeworICAgICAgICBpZiAobV9kaXJlY3Rp
b24gPT0gSW5kZXhlZERCOjpDdXJzb3JOZXh0IHx8IG1fZGlyZWN0aW9uID09IEluZGV4ZWREQjo6
Q3Vyc29yTmV4dE5vRHVwbGljYXRlKSB7CiAgICAgICAgICAgICBpZiAoIW1fY3VycmVudEtleS0+
aXNMZXNzVGhhbihrZXkuZ2V0KCkpKSB7CiAgICAgICAgICAgICAgICAgZWMgPSBJREJEYXRhYmFz
ZUV4Y2VwdGlvbjo6RGF0YUVycm9yOwogICAgICAgICAgICAgICAgIHJldHVybjsKQEAgLTI5OCwz
NCArMjk4LDM0IEBAIFBhc3NSZWZQdHI8SURCT2JqZWN0U3RvcmU+IElEQkN1cnNvcjo6ZWZmZWN0
aXZlT2JqZWN0U3RvcmUoKQogICAgIHJldHVybiBpbmRleC0+b2JqZWN0U3RvcmUoKTsKIH0KIAot
SURCQ3Vyc29yOjpEaXJlY3Rpb24gSURCQ3Vyc29yOjpzdHJpbmdUb0RpcmVjdGlvbihjb25zdCBT
dHJpbmcmIGRpcmVjdGlvblN0cmluZywgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwg
RXhjZXB0aW9uQ29kZSYgZWMpCitJbmRleGVkREI6OkN1cnNvckRpcmVjdGlvbiBJREJDdXJzb3I6
OnN0cmluZ1RvRGlyZWN0aW9uKGNvbnN0IFN0cmluZyYgZGlyZWN0aW9uU3RyaW5nLCBTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBpZiAo
ZGlyZWN0aW9uU3RyaW5nID09IElEQkN1cnNvcjo6ZGlyZWN0aW9uTmV4dCgpKQotICAgICAgICBy
ZXR1cm4gSURCQ3Vyc29yOjpORVhUOworICAgICAgICByZXR1cm4gSW5kZXhlZERCOjpDdXJzb3JO
ZXh0OwogICAgIGlmIChkaXJlY3Rpb25TdHJpbmcgPT0gSURCQ3Vyc29yOjpkaXJlY3Rpb25OZXh0
VW5pcXVlKCkpCi0gICAgICAgIHJldHVybiBJREJDdXJzb3I6Ok5FWFRfTk9fRFVQTElDQVRFOwor
ICAgICAgICByZXR1cm4gSW5kZXhlZERCOjpDdXJzb3JOZXh0Tm9EdXBsaWNhdGU7CiAgICAgaWYg
KGRpcmVjdGlvblN0cmluZyA9PSBJREJDdXJzb3I6OmRpcmVjdGlvblByZXYoKSkKLSAgICAgICAg
cmV0dXJuIElEQkN1cnNvcjo6UFJFVjsKKyAgICAgICAgcmV0dXJuIEluZGV4ZWREQjo6Q3Vyc29y
UHJldjsKICAgICBpZiAoZGlyZWN0aW9uU3RyaW5nID09IElEQkN1cnNvcjo6ZGlyZWN0aW9uUHJl
dlVuaXF1ZSgpKQotICAgICAgICByZXR1cm4gSURCQ3Vyc29yOjpQUkVWX05PX0RVUExJQ0FURTsK
KyAgICAgICAgcmV0dXJuIEluZGV4ZWREQjo6Q3Vyc29yUHJldk5vRHVwbGljYXRlOwogCiAgICAg
ZWMgPSBUeXBlRXJyb3I7Ci0gICAgcmV0dXJuIElEQkN1cnNvcjo6TkVYVDsKKyAgICByZXR1cm4g
SW5kZXhlZERCOjpDdXJzb3JOZXh0OwogfQogCiBjb25zdCBBdG9taWNTdHJpbmcmIElEQkN1cnNv
cjo6ZGlyZWN0aW9uVG9TdHJpbmcodW5zaWduZWQgc2hvcnQgZGlyZWN0aW9uKQogewogICAgIHN3
aXRjaCAoZGlyZWN0aW9uKSB7Ci0gICAgY2FzZSBJREJDdXJzb3I6Ok5FWFQ6CisgICAgY2FzZSBJ
bmRleGVkREI6OkN1cnNvck5leHQ6CiAgICAgICAgIHJldHVybiBJREJDdXJzb3I6OmRpcmVjdGlv
bk5leHQoKTsKIAotICAgIGNhc2UgSURCQ3Vyc29yOjpORVhUX05PX0RVUExJQ0FURToKKyAgICBj
YXNlIEluZGV4ZWREQjo6Q3Vyc29yTmV4dE5vRHVwbGljYXRlOgogICAgICAgICByZXR1cm4gSURC
Q3Vyc29yOjpkaXJlY3Rpb25OZXh0VW5pcXVlKCk7CiAKLSAgICBjYXNlIElEQkN1cnNvcjo6UFJF
VjoKKyAgICBjYXNlIEluZGV4ZWREQjo6Q3Vyc29yUHJldjoKICAgICAgICAgcmV0dXJuIElEQkN1
cnNvcjo6ZGlyZWN0aW9uUHJldigpOwogCi0gICAgY2FzZSBJREJDdXJzb3I6OlBSRVZfTk9fRFVQ
TElDQVRFOgorICAgIGNhc2UgSW5kZXhlZERCOjpDdXJzb3JQcmV2Tm9EdXBsaWNhdGU6CiAgICAg
ICAgIHJldHVybiBJREJDdXJzb3I6OmRpcmVjdGlvblByZXZVbmlxdWUoKTsKIAogICAgIGRlZmF1
bHQ6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJz
b3IuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvci5oCmluZGV4
IDFjODMxNjQwMjZkYTQ0YjNmMDhlZjkzZmY0MmUzYWI0NWZmZjU5MmMuLjE4ZDIwMGVhNjEwNjc3
OTdlYTRjOWVkYzUxNjFkMTVkYjRiM2RhZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL0lEQkN1cnNvci5oCkBAIC0zMCw2ICszMCw3IEBACiAKICNpbmNsdWRlICJJREJL
ZXkuaCIKICNpbmNsdWRlICJJREJUcmFuc2FjdGlvbi5oIgorI2luY2x1ZGUgIkluZGV4ZWREQi5o
IgogI2luY2x1ZGUgIlNjcmlwdFZhbHVlLmgiCiAjaW5jbHVkZSAiU2NyaXB0V3JhcHBhYmxlLmgi
CiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KQEAgLTQ5LDIyICs1MCwxNSBAQCB0eXBlZGVm
IGludCBFeGNlcHRpb25Db2RlOwogCiBjbGFzcyBJREJDdXJzb3IgOiBwdWJsaWMgU2NyaXB0V3Jh
cHBhYmxlLCBwdWJsaWMgUmVmQ291bnRlZDxJREJDdXJzb3I+IHsKIHB1YmxpYzoKLSAgICBlbnVt
IERpcmVjdGlvbiB7Ci0gICAgICAgIE5FWFQgPSAwLAotICAgICAgICBORVhUX05PX0RVUExJQ0FU
RSA9IDEsCi0gICAgICAgIFBSRVYgPSAyLAotICAgICAgICBQUkVWX05PX0RVUExJQ0FURSA9IDMs
Ci0gICAgfTsKLQogICAgIHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcmIGRpcmVjdGlvbk5leHQo
KTsKICAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiBkaXJlY3Rpb25OZXh0VW5pcXVlKCk7
CiAgICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYgZGlyZWN0aW9uUHJldigpOwogICAgIHN0
YXRpYyBjb25zdCBBdG9taWNTdHJpbmcmIGRpcmVjdGlvblByZXZVbmlxdWUoKTsKIAotICAgIHN0
YXRpYyBJREJDdXJzb3I6OkRpcmVjdGlvbiBzdHJpbmdUb0RpcmVjdGlvbihjb25zdCBTdHJpbmcm
IG1vZGVTdHJpbmcsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBFeGNlcHRpb25Db2RlJik7Cisg
ICAgc3RhdGljIEluZGV4ZWREQjo6Q3Vyc29yRGlyZWN0aW9uIHN0cmluZ1RvRGlyZWN0aW9uKGNv
bnN0IFN0cmluZyYgbW9kZVN0cmluZywgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIEV4Y2VwdGlv
bkNvZGUmKTsKICAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiBkaXJlY3Rpb25Ub1N0cmlu
Zyh1bnNpZ25lZCBzaG9ydCBtb2RlKTsKIAotICAgIHN0YXRpYyBQYXNzUmVmUHRyPElEQkN1cnNv
cj4gY3JlYXRlKFBhc3NSZWZQdHI8SURCQ3Vyc29yQmFja2VuZEludGVyZmFjZT4sIERpcmVjdGlv
biwgSURCUmVxdWVzdCosIElEQkFueSogc291cmNlLCBJREJUcmFuc2FjdGlvbiopOworICAgIHN0
YXRpYyBQYXNzUmVmUHRyPElEQkN1cnNvcj4gY3JlYXRlKFBhc3NSZWZQdHI8SURCQ3Vyc29yQmFj
a2VuZEludGVyZmFjZT4sIEluZGV4ZWREQjo6Q3Vyc29yRGlyZWN0aW9uLCBJREJSZXF1ZXN0Kiwg
SURCQW55KiBzb3VyY2UsIElEQlRyYW5zYWN0aW9uKik7CiAgICAgdmlydHVhbCB+SURCQ3Vyc29y
KCk7CiAKICAgICAvLyBJbXBsZW1lbnQgdGhlIElETApAQCAtODksNyArODMsNyBAQCBwdWJsaWM6
CiAgICAgUGFzc1JlZlB0cjxJREJLZXk+IGlkYlByaW1hcnlLZXkoKSB7IHJldHVybiBtX2N1cnJl
bnRQcmltYXJ5S2V5OyB9CiAKIHByb3RlY3RlZDoKLSAgICBJREJDdXJzb3IoUGFzc1JlZlB0cjxJ
REJDdXJzb3JCYWNrZW5kSW50ZXJmYWNlPiwgRGlyZWN0aW9uLCBJREJSZXF1ZXN0KiwgSURCQW55
KiBzb3VyY2UsIElEQlRyYW5zYWN0aW9uKik7CisgICAgSURCQ3Vyc29yKFBhc3NSZWZQdHI8SURC
Q3Vyc29yQmFja2VuZEludGVyZmFjZT4sIEluZGV4ZWREQjo6Q3Vyc29yRGlyZWN0aW9uLCBJREJS
ZXF1ZXN0KiwgSURCQW55KiBzb3VyY2UsIElEQlRyYW5zYWN0aW9uKik7CiAgICAgdmlydHVhbCBi
b29sIGlzS2V5Q3Vyc29yKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQogCiBwcml2YXRlOgpAQCAt
OTcsNyArOTEsNyBAQCBwcml2YXRlOgogCiAgICAgUmVmUHRyPElEQkN1cnNvckJhY2tlbmRJbnRl
cmZhY2U+IG1fYmFja2VuZDsKICAgICBSZWZQdHI8SURCUmVxdWVzdD4gbV9yZXF1ZXN0OwotICAg
IGNvbnN0IERpcmVjdGlvbiBtX2RpcmVjdGlvbjsKKyAgICBjb25zdCBJbmRleGVkREI6OkN1cnNv
ckRpcmVjdGlvbiBtX2RpcmVjdGlvbjsKICAgICBSZWZQdHI8SURCQW55PiBtX3NvdXJjZTsKICAg
ICBSZWZQdHI8SURCVHJhbnNhY3Rpb24+IG1fdHJhbnNhY3Rpb247CiAgICAgSURCVHJhbnNhY3Rp
b246Ok9wZW5DdXJzb3JOb3RpZmllciBtX3RyYW5zYWN0aW9uTm90aWZpZXI7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3JCYWNrZW5kSW1wbC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3JCYWNrZW5kSW1w
bC5jcHAKaW5kZXggMzMyZDkwMTQyNWFiMWJhYTRhNDRkODg5YzFkNWQyMTJkNjI4MGVkOC4uMTM2
MGZiOTAyMDVlYTE5OGY3OGMwMzA3Zjk2YzYyOWU5ODJmZTM1OCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yQmFja2VuZEltcGwuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvckJhY2tlbmRJbXBsLmNw
cApAQCAtMzQsNyArMzQsNiBAQAogI2luY2x1ZGUgIklEQkRhdGFiYXNlRXJyb3IuaCIKICNpbmNs
dWRlICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5oIgogI2luY2x1ZGUgIklEQktleVJhbmdlLmgiCi0j
aW5jbHVkZSAiSURCUmVxdWVzdC5oIgogI2luY2x1ZGUgIklEQlRyYWNpbmcuaCIKICNpbmNsdWRl
ICJJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsLmgiCiAjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgi
CkBAIC0xMDEsNyArMTAwLDcgQEAgcHJpdmF0ZToKICAgICBSZWZQdHI8SURCQ2FsbGJhY2tzPiBt
X2NhbGxiYWNrczsKIH07CiAKLUlEQkN1cnNvckJhY2tlbmRJbXBsOjpJREJDdXJzb3JCYWNrZW5k
SW1wbChQYXNzUmVmUHRyPElEQkJhY2tpbmdTdG9yZTo6Q3Vyc29yPiBjdXJzb3IsIEN1cnNvclR5
cGUgY3Vyc29yVHlwZSwgSURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlOjpUYXNrVHlwZSB0YXNr
VHlwZSwgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbCogdHJhbnNhY3Rpb24sIGludDY0X3Qgb2Jq
ZWN0U3RvcmVJZCkKK0lEQkN1cnNvckJhY2tlbmRJbXBsOjpJREJDdXJzb3JCYWNrZW5kSW1wbChQ
YXNzUmVmUHRyPElEQkJhY2tpbmdTdG9yZTo6Q3Vyc29yPiBjdXJzb3IsIEluZGV4ZWREQjo6Q3Vy
c29yVHlwZSBjdXJzb3JUeXBlLCBJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2U6OlRhc2tUeXBl
IHRhc2tUeXBlLCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsKiB0cmFuc2FjdGlvbiwgaW50NjRf
dCBvYmplY3RTdG9yZUlkKQogICAgIDogbV90YXNrVHlwZSh0YXNrVHlwZSkKICAgICAsIG1fY3Vy
c29yVHlwZShjdXJzb3JUeXBlKQogICAgICwgbV9kYXRhYmFzZSh0cmFuc2FjdGlvbi0+ZGF0YWJh
c2UoKSkKQEAgLTE2MCw3ICsxNTksNyBAQCB2b2lkIElEQkN1cnNvckJhY2tlbmRJbXBsOjpDdXJz
b3JJdGVyYXRpb25PcGVyYXRpb246OnBlcmZvcm0oSURCVHJhbnNhY3Rpb25CYWNrZQogdm9pZCBJ
REJDdXJzb3JCYWNrZW5kSW1wbDo6ZGVsZXRlRnVuY3Rpb24oUGFzc1JlZlB0cjxJREJDYWxsYmFj
a3M+IHBycENhbGxiYWNrcywgRXhjZXB0aW9uQ29kZSYpCiB7CiAgICAgSURCX1RSQUNFKCJJREJD
dXJzb3JCYWNrZW5kSW1wbDo6ZGVsZXRlIik7Ci0gICAgQVNTRVJUKG1fdHJhbnNhY3Rpb24tPm1v
ZGUoKSAhPSBJREJUcmFuc2FjdGlvbjo6UkVBRF9PTkxZKTsKKyAgICBBU1NFUlQobV90cmFuc2Fj
dGlvbi0+bW9kZSgpICE9IEluZGV4ZWREQjo6VHJhbnNhY3Rpb25SZWFkT25seSk7CiAgICAgUmVm
UHRyPElEQktleVJhbmdlPiBrZXlSYW5nZSA9IElEQktleVJhbmdlOjpjcmVhdGUobV9jdXJzb3It
PnByaW1hcnlLZXkoKSk7CiAgICAgbV9kYXRhYmFzZS0+ZGVsZXRlUmFuZ2UobV90cmFuc2FjdGlv
bi0+aWQoKSwgbV9vYmplY3RTdG9yZUlkLCBrZXlSYW5nZS5yZWxlYXNlKCksIHBycENhbGxiYWNr
cyk7CiB9CkBAIC0xOTYsMTAgKzE5NSwxMCBAQCB2b2lkIElEQkN1cnNvckJhY2tlbmRJbXBsOjpD
dXJzb3JQcmVmZXRjaEl0ZXJhdGlvbk9wZXJhdGlvbjo6cGVyZm9ybShJREJUcmFuc2FjdAogICAg
ICAgICBmb3VuZFByaW1hcnlLZXlzLmFwcGVuZChtX2N1cnNvci0+bV9jdXJzb3ItPnByaW1hcnlL
ZXkoKSk7CiAKICAgICAgICAgc3dpdGNoIChtX2N1cnNvci0+bV9jdXJzb3JUeXBlKSB7Ci0gICAg
ICAgIGNhc2UgS2V5T25seToKKyAgICAgICAgY2FzZSBJbmRleGVkREI6OkN1cnNvcktleU9ubHk6
CiAgICAgICAgICAgICBmb3VuZFZhbHVlcy5hcHBlbmQoU2hhcmVkQnVmZmVyOjpjcmVhdGUoKSk7
CiAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBLZXlBbmRWYWx1ZToKKyAgICAgICAg
Y2FzZSBJbmRleGVkREI6OkN1cnNvcktleUFuZFZhbHVlOgogICAgICAgICAgICAgc2l6ZUVzdGlt
YXRlICs9IG1fY3Vyc29yLT5tX2N1cnNvci0+dmFsdWUoKS0+c2l6ZSgpOwogICAgICAgICAgICAg
Zm91bmRWYWx1ZXMuYXBwZW5kKG1fY3Vyc29yLT5tX2N1cnNvci0+dmFsdWUoKSk7CiAgICAgICAg
ICAgICBicmVhazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L0lEQkN1cnNvckJhY2tlbmRJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9JREJDdXJzb3JCYWNrZW5kSW1wbC5oCmluZGV4IDY5OWUyZjU4ZDZkMTc2MjFmNGNhMTI0ZmQy
ZWM4YjBiMTMzMTJhNDguLjU1ZTI2YmI3ZDQ0OGZkNGIxZTE2NWE1Y2JkMzZlODM4Y2EyZTM1NDYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvckJh
Y2tlbmRJbXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vy
c29yQmFja2VuZEltcGwuaApAQCAtMzAsNyArMzAsNiBAQAogI2lmIEVOQUJMRShJTkRFWEVEX0RB
VEFCQVNFKQogCiAjaW5jbHVkZSAiSURCQmFja2luZ1N0b3JlLmgiCi0jaW5jbHVkZSAiSURCQ3Vy
c29yLmgiCiAjaW5jbHVkZSAiSURCQ3Vyc29yQmFja2VuZEludGVyZmFjZS5oIgogI2luY2x1ZGUg
IklEQlRyYW5zYWN0aW9uQmFja2VuZEltcGwuaCIKICNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIK
QEAgLTQ1LDExICs0NCwxMSBAQCBjbGFzcyBJREJLZXlSYW5nZTsKIAogY2xhc3MgSURCQ3Vyc29y
QmFja2VuZEltcGwgOiBwdWJsaWMgSURCQ3Vyc29yQmFja2VuZEludGVyZmFjZSB7CiBwdWJsaWM6
Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8SURCQ3Vyc29yQmFja2VuZEltcGw+IGNyZWF0ZShQYXNz
UmVmUHRyPElEQkJhY2tpbmdTdG9yZTo6Q3Vyc29yPiBjdXJzb3IsIEN1cnNvclR5cGUgY3Vyc29y
VHlwZSwgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbCogdHJhbnNhY3Rpb24sIGludDY0X3Qgb2Jq
ZWN0U3RvcmVJZCkKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxJREJDdXJzb3JCYWNrZW5kSW1wbD4g
Y3JlYXRlKFBhc3NSZWZQdHI8SURCQmFja2luZ1N0b3JlOjpDdXJzb3I+IGN1cnNvciwgSW5kZXhl
ZERCOjpDdXJzb3JUeXBlIGN1cnNvclR5cGUsIElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGwqIHRy
YW5zYWN0aW9uLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQpCiAgICAgewogICAgICAgICByZXR1cm4g
YWRvcHRSZWYobmV3IElEQkN1cnNvckJhY2tlbmRJbXBsKGN1cnNvciwgY3Vyc29yVHlwZSwgSURC
RGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlOjpOb3JtYWxUYXNrLCB0cmFuc2FjdGlvbiwgb2JqZWN0
U3RvcmVJZCkpOwogICAgIH0KLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxJREJDdXJzb3JCYWNrZW5k
SW1wbD4gY3JlYXRlKFBhc3NSZWZQdHI8SURCQmFja2luZ1N0b3JlOjpDdXJzb3I+IGN1cnNvciwg
Q3Vyc29yVHlwZSBjdXJzb3JUeXBlLCBJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2U6OlRhc2tU
eXBlIHRhc2tUeXBlLCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsKiB0cmFuc2FjdGlvbiwgaW50
NjRfdCBvYmplY3RTdG9yZUlkKQorICAgIHN0YXRpYyBQYXNzUmVmUHRyPElEQkN1cnNvckJhY2tl
bmRJbXBsPiBjcmVhdGUoUGFzc1JlZlB0cjxJREJCYWNraW5nU3RvcmU6OkN1cnNvcj4gY3Vyc29y
LCBJbmRleGVkREI6OkN1cnNvclR5cGUgY3Vyc29yVHlwZSwgSURCRGF0YWJhc2VCYWNrZW5kSW50
ZXJmYWNlOjpUYXNrVHlwZSB0YXNrVHlwZSwgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbCogdHJh
bnNhY3Rpb24sIGludDY0X3Qgb2JqZWN0U3RvcmVJZCkKICAgICB7CiAgICAgICAgIHJldHVybiBh
ZG9wdFJlZihuZXcgSURCQ3Vyc29yQmFja2VuZEltcGwoY3Vyc29yLCBjdXJzb3JUeXBlLCB0YXNr
VHlwZSwgdHJhbnNhY3Rpb24sIG9iamVjdFN0b3JlSWQpKTsKICAgICB9CkBAIC02NSwxOCArNjQs
MTggQEAgcHVibGljOgogCiAgICAgUGFzc1JlZlB0cjxJREJLZXk+IGtleSgpIGNvbnN0IHsgcmV0
dXJuIG1fY3Vyc29yLT5rZXkoKTsgfQogICAgIFBhc3NSZWZQdHI8SURCS2V5PiBwcmltYXJ5S2V5
KCkgY29uc3QgeyByZXR1cm4gbV9jdXJzb3ItPnByaW1hcnlLZXkoKTsgfQotICAgIFBhc3NSZWZQ
dHI8U2hhcmVkQnVmZmVyPiB2YWx1ZSgpIGNvbnN0IHsgcmV0dXJuIChtX2N1cnNvclR5cGUgPT0g
S2V5T25seSkgPyAwIDogbV9jdXJzb3ItPnZhbHVlKCk7IH0KKyAgICBQYXNzUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gdmFsdWUoKSBjb25zdCB7IHJldHVybiAobV9jdXJzb3JUeXBlID09IEluZGV4ZWRE
Qjo6Q3Vyc29yS2V5T25seSkgPyAwIDogbV9jdXJzb3ItPnZhbHVlKCk7IH0KICAgICB2b2lkIGNs
b3NlKCk7CiAKIHByaXZhdGU6Ci0gICAgSURCQ3Vyc29yQmFja2VuZEltcGwoUGFzc1JlZlB0cjxJ
REJCYWNraW5nU3RvcmU6OkN1cnNvcj4sIEN1cnNvclR5cGUsIElEQkRhdGFiYXNlQmFja2VuZElu
dGVyZmFjZTo6VGFza1R5cGUsIElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGwqLCBpbnQ2NF90IG9i
amVjdFN0b3JlSWQpOworICAgIElEQkN1cnNvckJhY2tlbmRJbXBsKFBhc3NSZWZQdHI8SURCQmFj
a2luZ1N0b3JlOjpDdXJzb3I+LCBJbmRleGVkREI6OkN1cnNvclR5cGUsIElEQkRhdGFiYXNlQmFj
a2VuZEludGVyZmFjZTo6VGFza1R5cGUsIElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGwqLCBpbnQ2
NF90IG9iamVjdFN0b3JlSWQpOwogCiAgICAgY2xhc3MgQ3Vyc29ySXRlcmF0aW9uT3BlcmF0aW9u
OwogICAgIGNsYXNzIEN1cnNvckFkdmFuY2VPcGVyYXRpb247CiAgICAgY2xhc3MgQ3Vyc29yUHJl
ZmV0Y2hJdGVyYXRpb25PcGVyYXRpb247CiAKICAgICBJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZh
Y2U6OlRhc2tUeXBlIG1fdGFza1R5cGU7Ci0gICAgQ3Vyc29yVHlwZSBtX2N1cnNvclR5cGU7Cisg
ICAgSW5kZXhlZERCOjpDdXJzb3JUeXBlIG1fY3Vyc29yVHlwZTsKICAgICBjb25zdCBSZWZQdHI8
SURCRGF0YWJhc2VCYWNrZW5kSW1wbD4gbV9kYXRhYmFzZTsKICAgICBjb25zdCBSZWZQdHI8SURC
VHJhbnNhY3Rpb25CYWNrZW5kSW1wbD4gbV90cmFuc2FjdGlvbjsKICAgICBjb25zdCBpbnQ2NF90
IG1fb2JqZWN0U3RvcmVJZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL0lEQkN1cnNvckJhY2tlbmRJbnRlcmZhY2UuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL0lEQkN1cnNvckJhY2tlbmRJbnRlcmZhY2UuaAppbmRleCBhZWIyOTc2YjA4
NjJhNzlhZDQ0MzgxM2U5ZTc2Y2ZhMjZlMzkwZjE2Li45NjNmMzJiMDBhYjMwOTNhOWNmYjhiZWNh
YTJlYzg1MWJlYzg4YWM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9JREJDdXJzb3JCYWNrZW5kSW50ZXJmYWNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yQmFja2VuZEludGVyZmFjZS5oCkBAIC0zMyw3ICszMyw2
IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgSURCQW55OwogY2xhc3MgSURCQ2Fs
bGJhY2tzOwogY2xhc3MgSURCS2V5OwogY2xhc3MgSURCUmVxdWVzdDsKQEAgLTQ0LDExICs0Myw2
IEBAIGNsYXNzIElEQkN1cnNvckJhY2tlbmRJbnRlcmZhY2UgOiBwdWJsaWMgUmVmQ291bnRlZDxJ
REJDdXJzb3JCYWNrZW5kSW50ZXJmYWNlPiB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+SURCQ3Vy
c29yQmFja2VuZEludGVyZmFjZSgpIHt9CiAKLSAgICBlbnVtIEN1cnNvclR5cGUgewotICAgICAg
ICBLZXlBbmRWYWx1ZSA9IDAsCi0gICAgICAgIEtleU9ubHkKLSAgICB9OwotCiAgICAgdmlydHVh
bCB2b2lkIGFkdmFuY2UodW5zaWduZWQgbG9uZyBjb3VudCwgUGFzc1JlZlB0cjxJREJDYWxsYmFj
a3M+LCBFeGNlcHRpb25Db2RlJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBjb250aW51ZUZ1bmN0
aW9uKFBhc3NSZWZQdHI8SURCS2V5PiBrZXksIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiwgRXhj
ZXB0aW9uQ29kZSYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlRnVuY3Rpb24oUGFzc1Jl
ZlB0cjxJREJDYWxsYmFja3M+LCBFeGNlcHRpb25Db2RlJikgPSAwOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yV2l0aFZhbHVlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvcldpdGhWYWx1ZS5jcHAKaW5k
ZXggYjkwYmEzZDliNTI2NTMxNzA5MmJiZTU1ODE3NTBkYzAyNzg1ZGFhYS4uNDAzNjExMTA0OWVi
NWQ5MjlhZGIyMjdjNmZlM2EzY2JlYzM2ZjE4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yV2l0aFZhbHVlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3JXaXRoVmFsdWUuY3BwCkBAIC0zMyw3ICsz
Myw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUGFzc1JlZlB0cjxJREJDdXJzb3JXaXRo
VmFsdWU+IElEQkN1cnNvcldpdGhWYWx1ZTo6Y3JlYXRlKFBhc3NSZWZQdHI8SURCQ3Vyc29yQmFj
a2VuZEludGVyZmFjZT4gYmFja2VuZCwgRGlyZWN0aW9uIGRpcmVjdGlvbiwgSURCUmVxdWVzdCog
cmVxdWVzdCwgSURCQW55KiBzb3VyY2UsIElEQlRyYW5zYWN0aW9uKiB0cmFuc2FjdGlvbikKK1Bh
c3NSZWZQdHI8SURCQ3Vyc29yV2l0aFZhbHVlPiBJREJDdXJzb3JXaXRoVmFsdWU6OmNyZWF0ZShQ
YXNzUmVmUHRyPElEQkN1cnNvckJhY2tlbmRJbnRlcmZhY2U+IGJhY2tlbmQsIEluZGV4ZWREQjo6
Q3Vyc29yRGlyZWN0aW9uIGRpcmVjdGlvbiwgSURCUmVxdWVzdCogcmVxdWVzdCwgSURCQW55KiBz
b3VyY2UsIElEQlRyYW5zYWN0aW9uKiB0cmFuc2FjdGlvbikKIHsKICAgICByZXR1cm4gYWRvcHRS
ZWYobmV3IElEQkN1cnNvcldpdGhWYWx1ZShiYWNrZW5kLCBkaXJlY3Rpb24sIHJlcXVlc3QsIHNv
dXJjZSwgdHJhbnNhY3Rpb24pKTsKIH0KQEAgLTQ0LDcgKzQ0LDcgQEAgUGFzc1JlZlB0cjxJREJD
dXJzb3JXaXRoVmFsdWU+IElEQkN1cnNvcldpdGhWYWx1ZTo6ZnJvbUN1cnNvcihQYXNzUmVmUHRy
PElEQkN1cnMKICAgICByZXR1cm4gY3Vyc29yV2l0aFZhbHVlLnJlbGVhc2UoKTsKIH0KIAotSURC
Q3Vyc29yV2l0aFZhbHVlOjpJREJDdXJzb3JXaXRoVmFsdWUoUGFzc1JlZlB0cjxJREJDdXJzb3JC
YWNrZW5kSW50ZXJmYWNlPiBiYWNrZW5kLCBEaXJlY3Rpb24gZGlyZWN0aW9uLCBJREJSZXF1ZXN0
KiByZXF1ZXN0LCBJREJBbnkqIHNvdXJjZSwgSURCVHJhbnNhY3Rpb24qIHRyYW5zYWN0aW9uKQor
SURCQ3Vyc29yV2l0aFZhbHVlOjpJREJDdXJzb3JXaXRoVmFsdWUoUGFzc1JlZlB0cjxJREJDdXJz
b3JCYWNrZW5kSW50ZXJmYWNlPiBiYWNrZW5kLCBJbmRleGVkREI6OkN1cnNvckRpcmVjdGlvbiBk
aXJlY3Rpb24sIElEQlJlcXVlc3QqIHJlcXVlc3QsIElEQkFueSogc291cmNlLCBJREJUcmFuc2Fj
dGlvbiogdHJhbnNhY3Rpb24pCiAgICAgOiBJREJDdXJzb3IoYmFja2VuZCwgZGlyZWN0aW9uLCBy
ZXF1ZXN0LCBzb3VyY2UsIHRyYW5zYWN0aW9uKQogewogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yV2l0aFZhbHVlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3JXaXRoVmFsdWUuaAppbmRleCBjYmI4NTBh
MWNkMDJmMGFhMjA5NTJmMmNmZGI4ODhmYzhjMDI4NjUwLi4xNTgyM2EwNjI0YTMxZGU5ZjJjMmRk
NDNkYzBjOTMzZjRjN2M2MDRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9JREJDdXJzb3JXaXRoVmFsdWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9JREJDdXJzb3JXaXRoVmFsdWUuaApAQCAtMzQsNyArMzQsNyBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKIGNsYXNzIElEQkN1cnNvcldpdGhWYWx1ZSA6IHB1YmxpYyBJREJDdXJz
b3IgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPElEQkN1cnNvcldpdGhWYWx1ZT4g
Y3JlYXRlKFBhc3NSZWZQdHI8SURCQ3Vyc29yQmFja2VuZEludGVyZmFjZT4sIERpcmVjdGlvbiwg
SURCUmVxdWVzdCosIElEQkFueSogc291cmNlLCBJREJUcmFuc2FjdGlvbiopOworICAgIHN0YXRp
YyBQYXNzUmVmUHRyPElEQkN1cnNvcldpdGhWYWx1ZT4gY3JlYXRlKFBhc3NSZWZQdHI8SURCQ3Vy
c29yQmFja2VuZEludGVyZmFjZT4sIEluZGV4ZWREQjo6Q3Vyc29yRGlyZWN0aW9uLCBJREJSZXF1
ZXN0KiwgSURCQW55KiBzb3VyY2UsIElEQlRyYW5zYWN0aW9uKik7CiAgICAgc3RhdGljIFBhc3NS
ZWZQdHI8SURCQ3Vyc29yV2l0aFZhbHVlPiBmcm9tQ3Vyc29yKFBhc3NSZWZQdHI8SURCQ3Vyc29y
Pik7CiAgICAgdmlydHVhbCB+SURCQ3Vyc29yV2l0aFZhbHVlKCk7CiAKQEAgLTQ1LDcgKzQ1LDcg
QEAgcHJvdGVjdGVkOgogICAgIHZpcnR1YWwgYm9vbCBpc0tleUN1cnNvcigpIGNvbnN0IE9WRVJS
SURFIHsgcmV0dXJuIGZhbHNlOyB9CiAKIHByaXZhdGU6Ci0gICAgSURCQ3Vyc29yV2l0aFZhbHVl
KFBhc3NSZWZQdHI8SURCQ3Vyc29yQmFja2VuZEludGVyZmFjZT4sIERpcmVjdGlvbiwgSURCUmVx
dWVzdCosIElEQkFueSogc291cmNlLCBJREJUcmFuc2FjdGlvbiopOworICAgIElEQkN1cnNvcldp
dGhWYWx1ZShQYXNzUmVmUHRyPElEQkN1cnNvckJhY2tlbmRJbnRlcmZhY2U+LCBJbmRleGVkREI6
OkN1cnNvckRpcmVjdGlvbiwgSURCUmVxdWVzdCosIElEQkFueSogc291cmNlLCBJREJUcmFuc2Fj
dGlvbiopOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2UuY3BwIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2UuY3BwCmluZGV4IGM5OWE4ZDVjODRmZTE1
MjE4ZmIwN2U4ODIzMjQxMGIwMWU5MzcxZDMuLjljZTY2NWJiN2E3YzZkZDdhZjk4NGI3NDY4MTVi
MTgwYjQ0NjRmOWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L0lEQkRhdGFiYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9J
REJEYXRhYmFzZS5jcHAKQEAgLTIyNyw3ICsyMjcsNyBAQCBQYXNzUmVmUHRyPElEQlRyYW5zYWN0
aW9uPiBJREJEYXRhYmFzZTo6dHJhbnNhY3Rpb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29u
dAogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAKLSAgICBJREJUcmFuc2FjdGlvbjo6TW9kZSBt
b2RlID0gSURCVHJhbnNhY3Rpb246OnN0cmluZ1RvTW9kZShtb2RlU3RyaW5nLCBjb250ZXh0LCBl
Yyk7CisgICAgSW5kZXhlZERCOjpUcmFuc2FjdGlvbk1vZGUgbW9kZSA9IElEQlRyYW5zYWN0aW9u
OjpzdHJpbmdUb01vZGUobW9kZVN0cmluZywgY29udGV4dCwgZWMpOwogICAgIGlmIChlYykKICAg
ICAgICAgcmV0dXJuIDA7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL0lEQkRhdGFiYXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9J
REJEYXRhYmFzZS5oCmluZGV4IGRlMTNiNjdmYmU4ZjBkODZjYTk1NDZhMmIwMzIzMDAxMmEyMjI5
ZTAuLjhkZDUyYzk2MDA1ZjJjMDFmMzBjZTc3ZTE1MDk5MDgyNDkyODUzZTMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2UuaApAQCAtMzEsMTEgKzMx
LDExIEBACiAjaW5jbHVkZSAiRGljdGlvbmFyeS5oIgogI2luY2x1ZGUgIkV2ZW50LmgiCiAjaW5j
bHVkZSAiRXZlbnRUYXJnZXQuaCIKLSNpbmNsdWRlICJJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZh
Y2UuaCIKICNpbmNsdWRlICJJREJEYXRhYmFzZUNhbGxiYWNrcy5oIgogI2luY2x1ZGUgIklEQk1l
dGFkYXRhLmgiCiAjaW5jbHVkZSAiSURCT2JqZWN0U3RvcmUuaCIKICNpbmNsdWRlICJJREJUcmFu
c2FjdGlvbi5oIgorI2luY2x1ZGUgIkluZGV4ZWREQi5oIgogI2luY2x1ZGUgIlNjcmlwdFdyYXBw
YWJsZS5oIgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNv
dW50ZWQuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lE
QkRhdGFiYXNlQmFja2VuZEltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvSURCRGF0YWJhc2VCYWNrZW5kSW1wbC5jcHAKaW5kZXggOTgwZDE0ZjRmZTY1OTY2ZTIwNWYx
NjQ3MjA3NmRiNTg4NzAwZGE2Ny4uMmMzMDMyMGE1NGYzNGNjMjMyODcxY2RjZjdiM2NkYWIxYzQ3
Y2M2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0
YWJhc2VCYWNrZW5kSW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvSURCRGF0YWJhc2VCYWNrZW5kSW1wbC5jcHAKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRl
ICJJREJDdXJzb3JCYWNrZW5kSW1wbC5oIgogI2luY2x1ZGUgIklEQkRhdGFiYXNlRXhjZXB0aW9u
LmgiCiAjaW5jbHVkZSAiSURCRmFjdG9yeUJhY2tlbmRJbXBsLmgiCisjaW5jbHVkZSAiSURCS2V5
UmFuZ2UuaCIKICNpbmNsdWRlICJJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsLmgiCiAjaW5jbHVk
ZSAiSURCVHJhY2luZy5oIgogI2luY2x1ZGUgIklEQlRyYW5zYWN0aW9uQmFja2VuZEltcGwuaCIK
QEAgLTIzOCwxMyArMjM5LDEzIEBAIHByaXZhdGU6CiAKIGNsYXNzIEdldE9wZXJhdGlvbiA6IHB1
YmxpYyBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsOjpPcGVyYXRpb24gewogcHVibGljOgotICAg
IHN0YXRpYyBQYXNzT3duUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGw6Ok9wZXJhdGlvbj4g
Y3JlYXRlKFBhc3NSZWZQdHI8SURCQmFja2luZ1N0b3JlPiBiYWNraW5nU3RvcmUsIGNvbnN0IElE
QkRhdGFiYXNlTWV0YWRhdGEmIG1ldGFkYXRhLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGludDY0
X3QgaW5kZXhJZCwgUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4ga2V5UmFuZ2UsIElEQkN1cnNvckJh
Y2tlbmRJbnRlcmZhY2U6OkN1cnNvclR5cGUgY3Vyc29yVHlwZSwgUGFzc1JlZlB0cjxJREJDYWxs
YmFja3M+IGNhbGxiYWNrcykKKyAgICBzdGF0aWMgUGFzc093blB0cjxJREJUcmFuc2FjdGlvbkJh
Y2tlbmRJbXBsOjpPcGVyYXRpb24+IGNyZWF0ZShQYXNzUmVmUHRyPElEQkJhY2tpbmdTdG9yZT4g
YmFja2luZ1N0b3JlLCBjb25zdCBJREJEYXRhYmFzZU1ldGFkYXRhJiBtZXRhZGF0YSwgaW50NjRf
dCBvYmplY3RTdG9yZUlkLCBpbnQ2NF90IGluZGV4SWQsIFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+
IGtleVJhbmdlLCBJbmRleGVkREI6OkN1cnNvclR5cGUgY3Vyc29yVHlwZSwgUGFzc1JlZlB0cjxJ
REJDYWxsYmFja3M+IGNhbGxiYWNrcykKICAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFB0cihu
ZXcgR2V0T3BlcmF0aW9uKGJhY2tpbmdTdG9yZSwgbWV0YWRhdGEsIG9iamVjdFN0b3JlSWQsIGlu
ZGV4SWQsIGtleVJhbmdlLCBjdXJzb3JUeXBlLCBjYWxsYmFja3MpKTsKICAgICB9CiAgICAgdmly
dHVhbCB2b2lkIHBlcmZvcm0oSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbCopOwogcHJpdmF0ZToK
LSAgICBHZXRPcGVyYXRpb24oUGFzc1JlZlB0cjxJREJCYWNraW5nU3RvcmU+IGJhY2tpbmdTdG9y
ZSwgY29uc3QgSURCRGF0YWJhc2VNZXRhZGF0YSYgbWV0YWRhdGEsIGludDY0X3Qgb2JqZWN0U3Rv
cmVJZCwgaW50NjRfdCBpbmRleElkLCBQYXNzUmVmUHRyPElEQktleVJhbmdlPiBrZXlSYW5nZSwg
SURCQ3Vyc29yQmFja2VuZEludGVyZmFjZTo6Q3Vyc29yVHlwZSBjdXJzb3JUeXBlLCBQYXNzUmVm
UHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tzKQorICAgIEdldE9wZXJhdGlvbihQYXNzUmVmUHRy
PElEQkJhY2tpbmdTdG9yZT4gYmFja2luZ1N0b3JlLCBjb25zdCBJREJEYXRhYmFzZU1ldGFkYXRh
JiBtZXRhZGF0YSwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBpbnQ2NF90IGluZGV4SWQsIFBhc3NS
ZWZQdHI8SURCS2V5UmFuZ2U+IGtleVJhbmdlLCBJbmRleGVkREI6OkN1cnNvclR5cGUgY3Vyc29y
VHlwZSwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcykKICAgICAgICAgOiBtX2Jh
Y2tpbmdTdG9yZShiYWNraW5nU3RvcmUpCiAgICAgICAgICwgbV9kYXRhYmFzZUlkKG1ldGFkYXRh
LmlkKQogICAgICAgICAsIG1fb2JqZWN0U3RvcmVJZChvYmplY3RTdG9yZUlkKQpAQCAtMjY2LDcg
KzI2Nyw3IEBAIHByaXZhdGU6CiAgICAgY29uc3QgSURCS2V5UGF0aCBtX2tleVBhdGg7CiAgICAg
Y29uc3QgYm9vbCBtX2F1dG9JbmNyZW1lbnQ7CiAgICAgY29uc3QgUmVmUHRyPElEQktleVJhbmdl
PiBtX2tleVJhbmdlOwotICAgIGNvbnN0IElEQkN1cnNvckJhY2tlbmRJbnRlcmZhY2U6OkN1cnNv
clR5cGUgbV9jdXJzb3JUeXBlOworICAgIGNvbnN0IEluZGV4ZWREQjo6Q3Vyc29yVHlwZSBtX2N1
cnNvclR5cGU7CiAgICAgY29uc3QgUmVmUHRyPElEQkNhbGxiYWNrcz4gbV9jYWxsYmFja3M7CiB9
OwogCkBAIC0zMjAsMTMgKzMyMSwxMyBAQCBwcml2YXRlOgogCiBjbGFzcyBPcGVuQ3Vyc29yT3Bl
cmF0aW9uIDogcHVibGljIElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGw6Ok9wZXJhdGlvbiB7CiBw
dWJsaWM6Ci0gICAgc3RhdGljIFBhc3NPd25QdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbDo6
T3BlcmF0aW9uPiBjcmVhdGUoUGFzc1JlZlB0cjxJREJCYWNraW5nU3RvcmU+IGJhY2tpbmdTdG9y
ZSwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGludDY0X3QgaW5k
ZXhJZCwgUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4ga2V5UmFuZ2UsIHVuc2lnbmVkIHNob3J0IGRp
cmVjdGlvbiwgSURCQ3Vyc29yQmFja2VuZEludGVyZmFjZTo6Q3Vyc29yVHlwZSBjdXJzb3JUeXBl
LCBJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2U6OlRhc2tUeXBlIHRhc2tUeXBlLCBQYXNzUmVm
UHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tzKQorICAgIHN0YXRpYyBQYXNzT3duUHRyPElEQlRy
YW5zYWN0aW9uQmFja2VuZEltcGw6Ok9wZXJhdGlvbj4gY3JlYXRlKFBhc3NSZWZQdHI8SURCQmFj
a2luZ1N0b3JlPiBiYWNraW5nU3RvcmUsIGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmpl
Y3RTdG9yZUlkLCBpbnQ2NF90IGluZGV4SWQsIFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+IGtleVJh
bmdlLCBJbmRleGVkREI6OkN1cnNvckRpcmVjdGlvbiBkaXJlY3Rpb24sIEluZGV4ZWREQjo6Q3Vy
c29yVHlwZSBjdXJzb3JUeXBlLCBJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2U6OlRhc2tUeXBl
IHRhc2tUeXBlLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tzKQogICAgIHsKICAg
ICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBPcGVuQ3Vyc29yT3BlcmF0aW9uKGJhY2tpbmdTdG9y
ZSwgZGF0YWJhc2VJZCwgb2JqZWN0U3RvcmVJZCwgaW5kZXhJZCwga2V5UmFuZ2UsIGRpcmVjdGlv
biwgY3Vyc29yVHlwZSwgdGFza1R5cGUsIGNhbGxiYWNrcykpOwogICAgIH0KICAgICB2aXJ0dWFs
IHZvaWQgcGVyZm9ybShJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsKik7CiBwcml2YXRlOgotICAg
IE9wZW5DdXJzb3JPcGVyYXRpb24oUGFzc1JlZlB0cjxJREJCYWNraW5nU3RvcmU+IGJhY2tpbmdT
dG9yZSwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGludDY0X3Qg
aW5kZXhJZCwgUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4ga2V5UmFuZ2UsIHVuc2lnbmVkIHNob3J0
IGRpcmVjdGlvbiwgSURCQ3Vyc29yQmFja2VuZEludGVyZmFjZTo6Q3Vyc29yVHlwZSBjdXJzb3JU
eXBlLCBJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2U6OlRhc2tUeXBlIHRhc2tUeXBlLCBQYXNz
UmVmUHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tzKQorICAgIE9wZW5DdXJzb3JPcGVyYXRpb24o
UGFzc1JlZlB0cjxJREJCYWNraW5nU3RvcmU+IGJhY2tpbmdTdG9yZSwgaW50NjRfdCBkYXRhYmFz
ZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGludDY0X3QgaW5kZXhJZCwgUGFzc1JlZlB0cjxJ
REJLZXlSYW5nZT4ga2V5UmFuZ2UsIEluZGV4ZWREQjo6Q3Vyc29yRGlyZWN0aW9uIGRpcmVjdGlv
biwgSW5kZXhlZERCOjpDdXJzb3JUeXBlIGN1cnNvclR5cGUsIElEQkRhdGFiYXNlQmFja2VuZElu
dGVyZmFjZTo6VGFza1R5cGUgdGFza1R5cGUsIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxs
YmFja3MpCiAgICAgICAgIDogbV9iYWNraW5nU3RvcmUoYmFja2luZ1N0b3JlKQogICAgICAgICAs
IG1fZGF0YWJhc2VJZChkYXRhYmFzZUlkKQogICAgICAgICAsIG1fb2JqZWN0U3RvcmVJZChvYmpl
Y3RTdG9yZUlkKQpAQCAtMzQ0LDggKzM0NSw4IEBAIHByaXZhdGU6CiAgICAgY29uc3QgaW50NjRf
dCBtX29iamVjdFN0b3JlSWQ7CiAgICAgY29uc3QgaW50NjRfdCBtX2luZGV4SWQ7CiAgICAgY29u
c3QgUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4gbV9rZXlSYW5nZTsKLSAgICBjb25zdCB1bnNpZ25l
ZCBzaG9ydCBtX2RpcmVjdGlvbjsKLSAgICBjb25zdCBJREJDdXJzb3JCYWNrZW5kSW50ZXJmYWNl
OjpDdXJzb3JUeXBlIG1fY3Vyc29yVHlwZTsKKyAgICBjb25zdCBJbmRleGVkREI6OkN1cnNvckRp
cmVjdGlvbiBtX2RpcmVjdGlvbjsKKyAgICBjb25zdCBJbmRleGVkREI6OkN1cnNvclR5cGUgbV9j
dXJzb3JUeXBlOwogICAgIGNvbnN0IElEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZTo6VGFza1R5
cGUgbV90YXNrVHlwZTsKICAgICBjb25zdCBSZWZQdHI8SURCQ2FsbGJhY2tzPiBtX2NhbGxiYWNr
czsKIH07CkBAIC01NTUsNyArNTU2LDcgQEAgdm9pZCBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpj
cmVhdGVPYmplY3RTdG9yZShpbnQ2NF90IHRyYW5zYWN0aW9uSWQsIGludDY0X3Qgb2IKICAgICBJ
REJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsKiB0cmFuc2FjdGlvbiA9IG1fdHJhbnNhY3Rpb25zLmdl
dCh0cmFuc2FjdGlvbklkKTsKICAgICBpZiAoIXRyYW5zYWN0aW9uKQogICAgICAgICByZXR1cm47
Ci0gICAgQVNTRVJUKHRyYW5zYWN0aW9uLT5tb2RlKCkgPT0gSURCVHJhbnNhY3Rpb246OlZFUlNJ
T05fQ0hBTkdFKTsKKyAgICBBU1NFUlQodHJhbnNhY3Rpb24tPm1vZGUoKSA9PSBJbmRleGVkREI6
OlRyYW5zYWN0aW9uVmVyc2lvbkNoYW5nZSk7CiAKICAgICBBU1NFUlQoIW1fbWV0YWRhdGEub2Jq
ZWN0U3RvcmVzLmNvbnRhaW5zKG9iamVjdFN0b3JlSWQpKTsKICAgICBJREJPYmplY3RTdG9yZU1l
dGFkYXRhIG9iamVjdFN0b3JlTWV0YWRhdGEobmFtZSwgb2JqZWN0U3RvcmVJZCwga2V5UGF0aCwg
YXV0b0luY3JlbWVudCwgSURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlOjpNaW5pbXVtSW5kZXhJ
ZCk7CkBAIC01ODEsNyArNTgyLDcgQEAgdm9pZCBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpkZWxl
dGVPYmplY3RTdG9yZShpbnQ2NF90IHRyYW5zYWN0aW9uSWQsIGludDY0X3Qgb2IKICAgICBJREJU
cmFuc2FjdGlvbkJhY2tlbmRJbXBsKiB0cmFuc2FjdGlvbiA9IG1fdHJhbnNhY3Rpb25zLmdldCh0
cmFuc2FjdGlvbklkKTsKICAgICBpZiAoIXRyYW5zYWN0aW9uKQogICAgICAgICByZXR1cm47Ci0g
ICAgQVNTRVJUKHRyYW5zYWN0aW9uLT5tb2RlKCkgPT0gSURCVHJhbnNhY3Rpb246OlZFUlNJT05f
Q0hBTkdFKTsKKyAgICBBU1NFUlQodHJhbnNhY3Rpb24tPm1vZGUoKSA9PSBJbmRleGVkREI6OlRy
YW5zYWN0aW9uVmVyc2lvbkNoYW5nZSk7CiAKICAgICBBU1NFUlQobV9tZXRhZGF0YS5vYmplY3RT
dG9yZXMuY29udGFpbnMob2JqZWN0U3RvcmVJZCkpOwogICAgIGNvbnN0IElEQk9iamVjdFN0b3Jl
TWV0YWRhdGEmIG9iamVjdFN0b3JlTWV0YWRhdGEgPSBtX21ldGFkYXRhLm9iamVjdFN0b3Jlcy5n
ZXQob2JqZWN0U3RvcmVJZCk7CkBAIC01OTYsNyArNTk3LDcgQEAgdm9pZCBJREJEYXRhYmFzZUJh
Y2tlbmRJbXBsOjpjcmVhdGVJbmRleChpbnQ2NF90IHRyYW5zYWN0aW9uSWQsIGludDY0X3Qgb2Jq
ZWN0U3QKICAgICBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsKiB0cmFuc2FjdGlvbiA9IG1fdHJh
bnNhY3Rpb25zLmdldCh0cmFuc2FjdGlvbklkKTsKICAgICBpZiAoIXRyYW5zYWN0aW9uKQogICAg
ICAgICByZXR1cm47Ci0gICAgQVNTRVJUKHRyYW5zYWN0aW9uLT5tb2RlKCkgPT0gSURCVHJhbnNh
Y3Rpb246OlZFUlNJT05fQ0hBTkdFKTsKKyAgICBBU1NFUlQodHJhbnNhY3Rpb24tPm1vZGUoKSA9
PSBJbmRleGVkREI6OlRyYW5zYWN0aW9uVmVyc2lvbkNoYW5nZSk7CiAKICAgICBBU1NFUlQobV9t
ZXRhZGF0YS5vYmplY3RTdG9yZXMuY29udGFpbnMob2JqZWN0U3RvcmVJZCkpOwogICAgIGNvbnN0
IElEQk9iamVjdFN0b3JlTWV0YWRhdGEgb2JqZWN0U3RvcmUgPSBtX21ldGFkYXRhLm9iamVjdFN0
b3Jlcy5nZXQob2JqZWN0U3RvcmVJZCk7CkBAIC02MzEsNyArNjMyLDcgQEAgdm9pZCBJREJEYXRh
YmFzZUJhY2tlbmRJbXBsOjpkZWxldGVJbmRleChpbnQ2NF90IHRyYW5zYWN0aW9uSWQsIGludDY0
X3Qgb2JqZWN0U3QKICAgICBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsKiB0cmFuc2FjdGlvbiA9
IG1fdHJhbnNhY3Rpb25zLmdldCh0cmFuc2FjdGlvbklkKTsKICAgICBpZiAoIXRyYW5zYWN0aW9u
KQogICAgICAgICByZXR1cm47Ci0gICAgQVNTRVJUKHRyYW5zYWN0aW9uLT5tb2RlKCkgPT0gSURC
VHJhbnNhY3Rpb246OlZFUlNJT05fQ0hBTkdFKTsKKyAgICBBU1NFUlQodHJhbnNhY3Rpb24tPm1v
ZGUoKSA9PSBJbmRleGVkREI6OlRyYW5zYWN0aW9uVmVyc2lvbkNoYW5nZSk7CiAKICAgICBBU1NF
UlQobV9tZXRhZGF0YS5vYmplY3RTdG9yZXMuY29udGFpbnMob2JqZWN0U3RvcmVJZCkpOwogICAg
IGNvbnN0IElEQk9iamVjdFN0b3JlTWV0YWRhdGEgb2JqZWN0U3RvcmUgPSBtX21ldGFkYXRhLm9i
amVjdFN0b3Jlcy5nZXQob2JqZWN0U3RvcmVJZCk7CkBAIC02ODUsNyArNjg2LDcgQEAgdm9pZCBJ
REJEYXRhYmFzZUJhY2tlbmRJbXBsOjpnZXQoaW50NjRfdCB0cmFuc2FjdGlvbklkLCBpbnQ2NF90
IG9iamVjdFN0b3JlSWQsIGkKICAgICBpZiAoIXRyYW5zYWN0aW9uKQogICAgICAgICByZXR1cm47
CiAKLSAgICB0cmFuc2FjdGlvbi0+c2NoZWR1bGVUYXNrKEdldE9wZXJhdGlvbjo6Y3JlYXRlKG1f
YmFja2luZ1N0b3JlLCBtX21ldGFkYXRhLCBvYmplY3RTdG9yZUlkLCBpbmRleElkLCBrZXlSYW5n
ZSwga2V5T25seSA/IElEQkN1cnNvckJhY2tlbmRJbnRlcmZhY2U6OktleU9ubHkgOiBJREJDdXJz
b3JCYWNrZW5kSW50ZXJmYWNlOjpLZXlBbmRWYWx1ZSwgY2FsbGJhY2tzKSk7CisgICAgdHJhbnNh
Y3Rpb24tPnNjaGVkdWxlVGFzayhHZXRPcGVyYXRpb246OmNyZWF0ZShtX2JhY2tpbmdTdG9yZSwg
bV9tZXRhZGF0YSwgb2JqZWN0U3RvcmVJZCwgaW5kZXhJZCwga2V5UmFuZ2UsIGtleU9ubHkgPyBJ
bmRleGVkREI6OkN1cnNvcktleU9ubHkgOiBJbmRleGVkREI6OkN1cnNvcktleUFuZFZhbHVlLCBj
YWxsYmFja3MpKTsKIH0KIAogdm9pZCBHZXRPcGVyYXRpb246OnBlcmZvcm0oSURCVHJhbnNhY3Rp
b25CYWNrZW5kSW1wbCogdHJhbnNhY3Rpb24pCkBAIC02OTksMTYgKzcwMCwxNiBAQCB2b2lkIEdl
dE9wZXJhdGlvbjo6cGVyZm9ybShJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsKiB0cmFuc2FjdGlv
bikKICAgICBlbHNlIHsKICAgICAgICAgUmVmUHRyPElEQkJhY2tpbmdTdG9yZTo6Q3Vyc29yPiBi
YWNraW5nU3RvcmVDdXJzb3I7CiAgICAgICAgIGlmIChtX2luZGV4SWQgPT0gSURCSW5kZXhNZXRh
ZGF0YTo6SW52YWxpZElkKSB7Ci0gICAgICAgICAgICBBU1NFUlQobV9jdXJzb3JUeXBlICE9IElE
QkN1cnNvckJhY2tlbmRJbnRlcmZhY2U6OktleU9ubHkpOworICAgICAgICAgICAgQVNTRVJUKG1f
Y3Vyc29yVHlwZSAhPSBJbmRleGVkREI6OkN1cnNvcktleU9ubHkpOwogICAgICAgICAgICAgLy8g
T2JqZWN0U3RvcmUgUmV0cmlldmFsIE9wZXJhdGlvbgotICAgICAgICAgICAgYmFja2luZ1N0b3Jl
Q3Vyc29yID0gbV9iYWNraW5nU3RvcmUtPm9wZW5PYmplY3RTdG9yZUN1cnNvcih0cmFuc2FjdGlv
bi0+YmFja2luZ1N0b3JlVHJhbnNhY3Rpb24oKSwgbV9kYXRhYmFzZUlkLCBtX29iamVjdFN0b3Jl
SWQsIG1fa2V5UmFuZ2UuZ2V0KCksIElEQkN1cnNvcjo6TkVYVCk7CisgICAgICAgICAgICBiYWNr
aW5nU3RvcmVDdXJzb3IgPSBtX2JhY2tpbmdTdG9yZS0+b3Blbk9iamVjdFN0b3JlQ3Vyc29yKHRy
YW5zYWN0aW9uLT5iYWNraW5nU3RvcmVUcmFuc2FjdGlvbigpLCBtX2RhdGFiYXNlSWQsIG1fb2Jq
ZWN0U3RvcmVJZCwgbV9rZXlSYW5nZS5nZXQoKSwgSW5kZXhlZERCOjpDdXJzb3JOZXh0KTsKICAg
ICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGlmIChtX2N1cnNvclR5cGUgPT0gSURCQ3Vyc29y
QmFja2VuZEludGVyZmFjZTo6S2V5T25seSkKKyAgICAgICAgICAgIGlmIChtX2N1cnNvclR5cGUg
PT0gSW5kZXhlZERCOjpDdXJzb3JLZXlPbmx5KQogICAgICAgICAgICAgICAgIC8vIEluZGV4IFZh
bHVlIFJldHJpZXZhbCBPcGVyYXRpb24KLSAgICAgICAgICAgICAgICBiYWNraW5nU3RvcmVDdXJz
b3IgPSBtX2JhY2tpbmdTdG9yZS0+b3BlbkluZGV4S2V5Q3Vyc29yKHRyYW5zYWN0aW9uLT5iYWNr
aW5nU3RvcmVUcmFuc2FjdGlvbigpLCBtX2RhdGFiYXNlSWQsIG1fb2JqZWN0U3RvcmVJZCwgbV9p
bmRleElkLCBtX2tleVJhbmdlLmdldCgpLCBJREJDdXJzb3I6Ok5FWFQpOworICAgICAgICAgICAg
ICAgIGJhY2tpbmdTdG9yZUN1cnNvciA9IG1fYmFja2luZ1N0b3JlLT5vcGVuSW5kZXhLZXlDdXJz
b3IodHJhbnNhY3Rpb24tPmJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uKCksIG1fZGF0YWJhc2VJZCwg
bV9vYmplY3RTdG9yZUlkLCBtX2luZGV4SWQsIG1fa2V5UmFuZ2UuZ2V0KCksIEluZGV4ZWREQjo6
Q3Vyc29yTmV4dCk7CiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgLy8gSW5kZXgg
UmVmZXJlbmNlZCBWYWx1ZSBSZXRyaWV2YWwgT3BlcmF0aW9uCi0gICAgICAgICAgICAgICAgYmFj
a2luZ1N0b3JlQ3Vyc29yID0gbV9iYWNraW5nU3RvcmUtPm9wZW5JbmRleEN1cnNvcih0cmFuc2Fj
dGlvbi0+YmFja2luZ1N0b3JlVHJhbnNhY3Rpb24oKSwgbV9kYXRhYmFzZUlkLCBtX29iamVjdFN0
b3JlSWQsIG1faW5kZXhJZCwgbV9rZXlSYW5nZS5nZXQoKSwgSURCQ3Vyc29yOjpORVhUKTsKKyAg
ICAgICAgICAgICAgICBiYWNraW5nU3RvcmVDdXJzb3IgPSBtX2JhY2tpbmdTdG9yZS0+b3Blbklu
ZGV4Q3Vyc29yKHRyYW5zYWN0aW9uLT5iYWNraW5nU3RvcmVUcmFuc2FjdGlvbigpLCBtX2RhdGFi
YXNlSWQsIG1fb2JqZWN0U3RvcmVJZCwgbV9pbmRleElkLCBtX2tleVJhbmdlLmdldCgpLCBJbmRl
eGVkREI6OkN1cnNvck5leHQpOwogICAgICAgICB9CiAKICAgICAgICAgaWYgKCFiYWNraW5nU3Rv
cmVDdXJzb3IpIHsKQEAgLTc1NSw3ICs3NTYsNyBAQCB2b2lkIEdldE9wZXJhdGlvbjo6cGVyZm9y
bShJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsKiB0cmFuc2FjdGlvbikKICAgICAgICAgbV9jYWxs
YmFja3MtPm9uU3VjY2VzcygpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIGlmIChtX2N1
cnNvclR5cGUgPT0gSURCQ3Vyc29yQmFja2VuZEludGVyZmFjZTo6S2V5T25seSkgeworICAgIGlm
IChtX2N1cnNvclR5cGUgPT0gSW5kZXhlZERCOjpDdXJzb3JLZXlPbmx5KSB7CiAgICAgICAgIC8v
IEluZGV4IFZhbHVlIFJldHJpZXZhbCBPcGVyYXRpb24KICAgICAgICAgbV9jYWxsYmFja3MtPm9u
U3VjY2VzcyhwcmltYXJ5S2V5LmdldCgpKTsKICAgICAgICAgcmV0dXJuOwpAQCAtNzg2LDcgKzc4
Nyw3IEBAIHZvaWQgSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6cHV0KGludDY0X3QgdHJhbnNhY3Rp
b25JZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBQCiAgICAgSURCVHJhbnNhY3Rpb25CYWNrZW5k
SW1wbCogdHJhbnNhY3Rpb24gPSBtX3RyYW5zYWN0aW9ucy5nZXQodHJhbnNhY3Rpb25JZCk7CiAg
ICAgaWYgKCF0cmFuc2FjdGlvbikKICAgICAgICAgcmV0dXJuOwotICAgIEFTU0VSVCh0cmFuc2Fj
dGlvbi0+bW9kZSgpICE9IElEQlRyYW5zYWN0aW9uOjpSRUFEX09OTFkpOworICAgIEFTU0VSVCh0
cmFuc2FjdGlvbi0+bW9kZSgpICE9IEluZGV4ZWREQjo6VHJhbnNhY3Rpb25SZWFkT25seSk7CiAK
ICAgICBjb25zdCBJREJPYmplY3RTdG9yZU1ldGFkYXRhIG9iamVjdFN0b3JlTWV0YWRhdGEgPSBt
X21ldGFkYXRhLm9iamVjdFN0b3Jlcy5nZXQob2JqZWN0U3RvcmVJZCk7CiAKQEAgLTc5OCw3ICs3
OTksNyBAQCB2b2lkIElEQkRhdGFiYXNlQmFja2VuZEltcGw6OnB1dChpbnQ2NF90IHRyYW5zYWN0
aW9uSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgUAogdm9pZCBQdXRPcGVyYXRpb246OnBlcmZv
cm0oSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbCogdHJhbnNhY3Rpb24pCiB7CiAgICAgSURCX1RS
QUNFKCJQdXRPcGVyYXRpb24iKTsKLSAgICBBU1NFUlQodHJhbnNhY3Rpb24tPm1vZGUoKSAhPSBJ
REJUcmFuc2FjdGlvbjo6UkVBRF9PTkxZKTsKKyAgICBBU1NFUlQodHJhbnNhY3Rpb24tPm1vZGUo
KSAhPSBJbmRleGVkREI6OlRyYW5zYWN0aW9uUmVhZE9ubHkpOwogICAgIEFTU0VSVChtX2luZGV4
SWRzLnNpemUoKSA9PSBtX2luZGV4S2V5cy5zaXplKCkpOwogICAgIGJvb2wga2V5V2FzR2VuZXJh
dGVkID0gZmFsc2U7CiAKQEAgLTg3Miw3ICs4NzMsNyBAQCB2b2lkIElEQkRhdGFiYXNlQmFja2Vu
ZEltcGw6OnNldEluZGV4S2V5cyhpbnQ2NF90IHRyYW5zYWN0aW9uSWQsIGludDY0X3Qgb2JqZWN0
UwogICAgIElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGwqIHRyYW5zYWN0aW9uID0gbV90cmFuc2Fj
dGlvbnMuZ2V0KHRyYW5zYWN0aW9uSWQpOwogICAgIGlmICghdHJhbnNhY3Rpb24pCiAgICAgICAg
IHJldHVybjsKLSAgICBBU1NFUlQodHJhbnNhY3Rpb24tPm1vZGUoKSA9PSBJREJUcmFuc2FjdGlv
bjo6VkVSU0lPTl9DSEFOR0UpOworICAgIEFTU0VSVCh0cmFuc2FjdGlvbi0+bW9kZSgpID09IElu
ZGV4ZWREQjo6VHJhbnNhY3Rpb25WZXJzaW9uQ2hhbmdlKTsKIAogICAgIFJlZlB0cjxJREJLZXk+
IHByaW1hcnlLZXkgPSBwcnBQcmltYXJ5S2V5OwogICAgIFJlZlB0cjxJREJCYWNraW5nU3RvcmU+
IHN0b3JlID0gYmFja2luZ1N0b3JlKCk7CkBAIC05MjksMTQgKzkzMCwxNCBAQCB2b2lkIFNldElu
ZGV4ZXNSZWFkeU9wZXJhdGlvbjo6cGVyZm9ybShJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsKiB0
cmFuc2FjdGlvbikKICAgICAgICAgdHJhbnNhY3Rpb24tPmRpZENvbXBsZXRlUHJlZW1wdGl2ZUV2
ZW50KCk7CiB9CiAKLXZvaWQgSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6b3BlbkN1cnNvcihpbnQ2
NF90IHRyYW5zYWN0aW9uSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgaW50NjRfdCBpbmRleElk
LCBQYXNzUmVmUHRyPElEQktleVJhbmdlPiBrZXlSYW5nZSwgdW5zaWduZWQgc2hvcnQgZGlyZWN0
aW9uLCBib29sIGtleU9ubHksIFRhc2tUeXBlIHRhc2tUeXBlLCBQYXNzUmVmUHRyPElEQkNhbGxi
YWNrcz4gY2FsbGJhY2tzKQordm9pZCBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpvcGVuQ3Vyc29y
KGludDY0X3QgdHJhbnNhY3Rpb25JZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBpbnQ2NF90IGlu
ZGV4SWQsIFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+IGtleVJhbmdlLCBJbmRleGVkREI6OkN1cnNv
ckRpcmVjdGlvbiBkaXJlY3Rpb24sIGJvb2wga2V5T25seSwgVGFza1R5cGUgdGFza1R5cGUsIFBh
c3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MpCiB7CiAgICAgSURCX1RSQUNFKCJJREJE
YXRhYmFzZUJhY2tlbmRJbXBsOjpvcGVuQ3Vyc29yIik7CiAgICAgSURCVHJhbnNhY3Rpb25CYWNr
ZW5kSW1wbCogdHJhbnNhY3Rpb24gPSBtX3RyYW5zYWN0aW9ucy5nZXQodHJhbnNhY3Rpb25JZCk7
CiAgICAgaWYgKCF0cmFuc2FjdGlvbikKICAgICAgICAgcmV0dXJuOwogCi0gICAgdHJhbnNhY3Rp
b24tPnNjaGVkdWxlVGFzayhPcGVuQ3Vyc29yT3BlcmF0aW9uOjpjcmVhdGUobV9iYWNraW5nU3Rv
cmUsIGlkKCksIG9iamVjdFN0b3JlSWQsIGluZGV4SWQsIGtleVJhbmdlLCBkaXJlY3Rpb24sIGtl
eU9ubHkgPyBJREJDdXJzb3JCYWNrZW5kSW50ZXJmYWNlOjpLZXlPbmx5IDogSURCQ3Vyc29yQmFj
a2VuZEludGVyZmFjZTo6S2V5QW5kVmFsdWUsIHRhc2tUeXBlLCBjYWxsYmFja3MpKTsKKyAgICB0
cmFuc2FjdGlvbi0+c2NoZWR1bGVUYXNrKE9wZW5DdXJzb3JPcGVyYXRpb246OmNyZWF0ZShtX2Jh
Y2tpbmdTdG9yZSwgaWQoKSwgb2JqZWN0U3RvcmVJZCwgaW5kZXhJZCwga2V5UmFuZ2UsIGRpcmVj
dGlvbiwga2V5T25seSA/IEluZGV4ZWREQjo6Q3Vyc29yS2V5T25seSA6IEluZGV4ZWREQjo6Q3Vy
c29yS2V5QW5kVmFsdWUsIHRhc2tUeXBlLCBjYWxsYmFja3MpKTsKIH0KIAogdm9pZCBPcGVuQ3Vy
c29yT3BlcmF0aW9uOjpwZXJmb3JtKElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGwqIHRyYW5zYWN0
aW9uKQpAQCAtOTUwLDE3ICs5NTEsMTYgQEAgdm9pZCBPcGVuQ3Vyc29yT3BlcmF0aW9uOjpwZXJm
b3JtKElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGwqIHRyYW5zYWN0aW9uKQogICAgIGlmIChtX3Rh
c2tUeXBlID09IElEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZTo6UHJlZW1wdGl2ZVRhc2spCiAg
ICAgICAgIHRyYW5zYWN0aW9uLT5hZGRQcmVlbXB0aXZlRXZlbnQoKTsKIAotICAgIElEQkN1cnNv
cjo6RGlyZWN0aW9uIGRpcmVjdGlvbiA9IHN0YXRpY19jYXN0PElEQkN1cnNvcjo6RGlyZWN0aW9u
PihtX2RpcmVjdGlvbik7CiAgICAgUmVmUHRyPElEQkJhY2tpbmdTdG9yZTo6Q3Vyc29yPiBiYWNr
aW5nU3RvcmVDdXJzb3I7CiAgICAgaWYgKG1faW5kZXhJZCA9PSBJREJJbmRleE1ldGFkYXRhOjpJ
bnZhbGlkSWQpIHsKLSAgICAgICAgQVNTRVJUKG1fY3Vyc29yVHlwZSAhPSBJREJDdXJzb3JCYWNr
ZW5kSW50ZXJmYWNlOjpLZXlPbmx5KTsKLSAgICAgICAgYmFja2luZ1N0b3JlQ3Vyc29yID0gbV9i
YWNraW5nU3RvcmUtPm9wZW5PYmplY3RTdG9yZUN1cnNvcih0cmFuc2FjdGlvbi0+YmFja2luZ1N0
b3JlVHJhbnNhY3Rpb24oKSwgbV9kYXRhYmFzZUlkLCBtX29iamVjdFN0b3JlSWQsIG1fa2V5UmFu
Z2UuZ2V0KCksIGRpcmVjdGlvbik7CisgICAgICAgIEFTU0VSVChtX2N1cnNvclR5cGUgIT0gSW5k
ZXhlZERCOjpDdXJzb3JLZXlPbmx5KTsKKyAgICAgICAgYmFja2luZ1N0b3JlQ3Vyc29yID0gbV9i
YWNraW5nU3RvcmUtPm9wZW5PYmplY3RTdG9yZUN1cnNvcih0cmFuc2FjdGlvbi0+YmFja2luZ1N0
b3JlVHJhbnNhY3Rpb24oKSwgbV9kYXRhYmFzZUlkLCBtX29iamVjdFN0b3JlSWQsIG1fa2V5UmFu
Z2UuZ2V0KCksIG1fZGlyZWN0aW9uKTsKICAgICB9IGVsc2UgewogICAgICAgICBBU1NFUlQobV90
YXNrVHlwZSA9PSBJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2U6Ok5vcm1hbFRhc2spOwotICAg
ICAgICBpZiAobV9jdXJzb3JUeXBlID09IElEQkN1cnNvckJhY2tlbmRJbnRlcmZhY2U6OktleU9u
bHkpCi0gICAgICAgICAgICBiYWNraW5nU3RvcmVDdXJzb3IgPSBtX2JhY2tpbmdTdG9yZS0+b3Bl
bkluZGV4S2V5Q3Vyc29yKHRyYW5zYWN0aW9uLT5iYWNraW5nU3RvcmVUcmFuc2FjdGlvbigpLCBt
X2RhdGFiYXNlSWQsIG1fb2JqZWN0U3RvcmVJZCwgbV9pbmRleElkLCBtX2tleVJhbmdlLmdldCgp
LCBkaXJlY3Rpb24pOworICAgICAgICBpZiAobV9jdXJzb3JUeXBlID09IEluZGV4ZWREQjo6Q3Vy
c29yS2V5T25seSkKKyAgICAgICAgICAgIGJhY2tpbmdTdG9yZUN1cnNvciA9IG1fYmFja2luZ1N0
b3JlLT5vcGVuSW5kZXhLZXlDdXJzb3IodHJhbnNhY3Rpb24tPmJhY2tpbmdTdG9yZVRyYW5zYWN0
aW9uKCksIG1fZGF0YWJhc2VJZCwgbV9vYmplY3RTdG9yZUlkLCBtX2luZGV4SWQsIG1fa2V5UmFu
Z2UuZ2V0KCksIG1fZGlyZWN0aW9uKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgYmFja2lu
Z1N0b3JlQ3Vyc29yID0gbV9iYWNraW5nU3RvcmUtPm9wZW5JbmRleEN1cnNvcih0cmFuc2FjdGlv
bi0+YmFja2luZ1N0b3JlVHJhbnNhY3Rpb24oKSwgbV9kYXRhYmFzZUlkLCBtX29iamVjdFN0b3Jl
SWQsIG1faW5kZXhJZCwgbV9rZXlSYW5nZS5nZXQoKSwgZGlyZWN0aW9uKTsKKyAgICAgICAgICAg
IGJhY2tpbmdTdG9yZUN1cnNvciA9IG1fYmFja2luZ1N0b3JlLT5vcGVuSW5kZXhDdXJzb3IodHJh
bnNhY3Rpb24tPmJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uKCksIG1fZGF0YWJhc2VJZCwgbV9vYmpl
Y3RTdG9yZUlkLCBtX2luZGV4SWQsIG1fa2V5UmFuZ2UuZ2V0KCksIG1fZGlyZWN0aW9uKTsKICAg
ICB9CiAKICAgICBpZiAoIWJhY2tpbmdTdG9yZUN1cnNvcikgewpAQCAtOTkxLDkgKzk5MSw5IEBA
IHZvaWQgQ291bnRPcGVyYXRpb246OnBlcmZvcm0oSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbCog
dHJhbnNhY3Rpb24pCiAgICAgUmVmUHRyPElEQkJhY2tpbmdTdG9yZTo6Q3Vyc29yPiBiYWNraW5n
U3RvcmVDdXJzb3I7CiAKICAgICBpZiAobV9pbmRleElkID09IElEQkluZGV4TWV0YWRhdGE6Oklu
dmFsaWRJZCkKLSAgICAgICAgYmFja2luZ1N0b3JlQ3Vyc29yID0gbV9iYWNraW5nU3RvcmUtPm9w
ZW5PYmplY3RTdG9yZUtleUN1cnNvcih0cmFuc2FjdGlvbi0+YmFja2luZ1N0b3JlVHJhbnNhY3Rp
b24oKSwgbV9kYXRhYmFzZUlkLCBtX29iamVjdFN0b3JlSWQsIG1fa2V5UmFuZ2UuZ2V0KCksIElE
QkN1cnNvcjo6TkVYVCk7CisgICAgICAgIGJhY2tpbmdTdG9yZUN1cnNvciA9IG1fYmFja2luZ1N0
b3JlLT5vcGVuT2JqZWN0U3RvcmVLZXlDdXJzb3IodHJhbnNhY3Rpb24tPmJhY2tpbmdTdG9yZVRy
YW5zYWN0aW9uKCksIG1fZGF0YWJhc2VJZCwgbV9vYmplY3RTdG9yZUlkLCBtX2tleVJhbmdlLmdl
dCgpLCBJbmRleGVkREI6OkN1cnNvck5leHQpOwogICAgIGVsc2UKLSAgICAgICAgYmFja2luZ1N0
b3JlQ3Vyc29yID0gbV9iYWNraW5nU3RvcmUtPm9wZW5JbmRleEtleUN1cnNvcih0cmFuc2FjdGlv
bi0+YmFja2luZ1N0b3JlVHJhbnNhY3Rpb24oKSwgbV9kYXRhYmFzZUlkLCBtX29iamVjdFN0b3Jl
SWQsIG1faW5kZXhJZCwgbV9rZXlSYW5nZS5nZXQoKSwgSURCQ3Vyc29yOjpORVhUKTsKKyAgICAg
ICAgYmFja2luZ1N0b3JlQ3Vyc29yID0gbV9iYWNraW5nU3RvcmUtPm9wZW5JbmRleEtleUN1cnNv
cih0cmFuc2FjdGlvbi0+YmFja2luZ1N0b3JlVHJhbnNhY3Rpb24oKSwgbV9kYXRhYmFzZUlkLCBt
X29iamVjdFN0b3JlSWQsIG1faW5kZXhJZCwgbV9rZXlSYW5nZS5nZXQoKSwgSW5kZXhlZERCOjpD
dXJzb3JOZXh0KTsKICAgICBpZiAoIWJhY2tpbmdTdG9yZUN1cnNvcikgewogICAgICAgICBtX2Nh
bGxiYWNrcy0+b25TdWNjZXNzKGNvdW50KTsKICAgICAgICAgcmV0dXJuOwpAQCAtMTAxMiw3ICsx
MDEyLDcgQEAgdm9pZCBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpkZWxldGVSYW5nZShpbnQ2NF90
IHRyYW5zYWN0aW9uSWQsIGludDY0X3Qgb2JqZWN0U3QKICAgICBJREJUcmFuc2FjdGlvbkJhY2tl
bmRJbXBsKiB0cmFuc2FjdGlvbiA9IG1fdHJhbnNhY3Rpb25zLmdldCh0cmFuc2FjdGlvbklkKTsK
ICAgICBpZiAoIXRyYW5zYWN0aW9uKQogICAgICAgICByZXR1cm47Ci0gICAgQVNTRVJUKHRyYW5z
YWN0aW9uLT5tb2RlKCkgIT0gSURCVHJhbnNhY3Rpb246OlJFQURfT05MWSk7CisgICAgQVNTRVJU
KHRyYW5zYWN0aW9uLT5tb2RlKCkgIT0gSW5kZXhlZERCOjpUcmFuc2FjdGlvblJlYWRPbmx5KTsK
IAogICAgIHRyYW5zYWN0aW9uLT5zY2hlZHVsZVRhc2soRGVsZXRlUmFuZ2VPcGVyYXRpb246OmNy
ZWF0ZShtX2JhY2tpbmdTdG9yZSwgaWQoKSwgb2JqZWN0U3RvcmVJZCwga2V5UmFuZ2UsIGNhbGxi
YWNrcykpOwogfQpAQCAtMTAyMCw3ICsxMDIwLDcgQEAgdm9pZCBJREJEYXRhYmFzZUJhY2tlbmRJ
bXBsOjpkZWxldGVSYW5nZShpbnQ2NF90IHRyYW5zYWN0aW9uSWQsIGludDY0X3Qgb2JqZWN0U3QK
IHZvaWQgRGVsZXRlUmFuZ2VPcGVyYXRpb246OnBlcmZvcm0oSURCVHJhbnNhY3Rpb25CYWNrZW5k
SW1wbCogdHJhbnNhY3Rpb24pCiB7CiAgICAgSURCX1RSQUNFKCJEZWxldGVSYW5nZU9wZXJhdGlv
biIpOwotICAgIFJlZlB0cjxJREJCYWNraW5nU3RvcmU6OkN1cnNvcj4gYmFja2luZ1N0b3JlQ3Vy
c29yID0gbV9iYWNraW5nU3RvcmUtPm9wZW5PYmplY3RTdG9yZUN1cnNvcih0cmFuc2FjdGlvbi0+
YmFja2luZ1N0b3JlVHJhbnNhY3Rpb24oKSwgbV9kYXRhYmFzZUlkLCBtX29iamVjdFN0b3JlSWQs
IG1fa2V5UmFuZ2UuZ2V0KCksIElEQkN1cnNvcjo6TkVYVCk7CisgICAgUmVmUHRyPElEQkJhY2tp
bmdTdG9yZTo6Q3Vyc29yPiBiYWNraW5nU3RvcmVDdXJzb3IgPSBtX2JhY2tpbmdTdG9yZS0+b3Bl
bk9iamVjdFN0b3JlQ3Vyc29yKHRyYW5zYWN0aW9uLT5iYWNraW5nU3RvcmVUcmFuc2FjdGlvbigp
LCBtX2RhdGFiYXNlSWQsIG1fb2JqZWN0U3RvcmVJZCwgbV9rZXlSYW5nZS5nZXQoKSwgSW5kZXhl
ZERCOjpDdXJzb3JOZXh0KTsKICAgICBpZiAoYmFja2luZ1N0b3JlQ3Vyc29yKSB7CiAgICAgICAg
IGRvIHsKICAgICAgICAgICAgIG1fYmFja2luZ1N0b3JlLT5kZWxldGVSZWNvcmQodHJhbnNhY3Rp
b24tPmJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uKCksIG1fZGF0YWJhc2VJZCwgbV9vYmplY3RTdG9y
ZUlkLCBiYWNraW5nU3RvcmVDdXJzb3ItPnJlY29yZElkZW50aWZpZXIoKSk7CkBAIC0xMDM2LDcg
KzEwMzYsNyBAQCB2b2lkIElEQkRhdGFiYXNlQmFja2VuZEltcGw6OmNsZWFyKGludDY0X3QgdHJh
bnNhY3Rpb25JZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLAogICAgIElEQlRyYW5zYWN0aW9uQmFj
a2VuZEltcGwqIHRyYW5zYWN0aW9uID0gbV90cmFuc2FjdGlvbnMuZ2V0KHRyYW5zYWN0aW9uSWQp
OwogICAgIGlmICghdHJhbnNhY3Rpb24pCiAgICAgICAgIHJldHVybjsKLSAgICBBU1NFUlQodHJh
bnNhY3Rpb24tPm1vZGUoKSAhPSBJREJUcmFuc2FjdGlvbjo6UkVBRF9PTkxZKTsKKyAgICBBU1NF
UlQodHJhbnNhY3Rpb24tPm1vZGUoKSAhPSBJbmRleGVkREI6OlRyYW5zYWN0aW9uUmVhZE9ubHkp
OwogCiAgICAgdHJhbnNhY3Rpb24tPnNjaGVkdWxlVGFzayhDbGVhck9wZXJhdGlvbjo6Y3JlYXRl
KG1fYmFja2luZ1N0b3JlLCBpZCgpLCBvYmplY3RTdG9yZUlkLCBjYWxsYmFja3MpKTsKIH0KQEAg
LTEwNzksNyArMTA3OSw3IEBAIHZvaWQgSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6VmVyc2lvbkNo
YW5nZU9wZXJhdGlvbjo6cGVyZm9ybShJREJUcmFuc2FjdGlvbkJhY2tlCiB2b2lkIElEQkRhdGFi
YXNlQmFja2VuZEltcGw6OnRyYW5zYWN0aW9uU3RhcnRlZChQYXNzUmVmUHRyPElEQlRyYW5zYWN0
aW9uQmFja2VuZEltcGw+IHBycFRyYW5zYWN0aW9uKQogewogICAgIFJlZlB0cjxJREJUcmFuc2Fj
dGlvbkJhY2tlbmRJbXBsPiB0cmFuc2FjdGlvbiA9IHBycFRyYW5zYWN0aW9uOwotICAgIGlmICh0
cmFuc2FjdGlvbi0+bW9kZSgpID09IElEQlRyYW5zYWN0aW9uOjpWRVJTSU9OX0NIQU5HRSkgewor
ICAgIGlmICh0cmFuc2FjdGlvbi0+bW9kZSgpID09IEluZGV4ZWREQjo6VHJhbnNhY3Rpb25WZXJz
aW9uQ2hhbmdlKSB7CiAgICAgICAgIEFTU0VSVCghbV9ydW5uaW5nVmVyc2lvbkNoYW5nZVRyYW5z
YWN0aW9uKTsKICAgICAgICAgbV9ydW5uaW5nVmVyc2lvbkNoYW5nZVRyYW5zYWN0aW9uID0gdHJh
bnNhY3Rpb247CiAgICAgfQpAQCAtMTA5MSw3ICsxMDkxLDcgQEAgdm9pZCBJREJEYXRhYmFzZUJh
Y2tlbmRJbXBsOjp0cmFuc2FjdGlvbkZpbmlzaGVkKFBhc3NSZWZQdHI8SURCVHJhbnNhY3Rpb25C
YWNrZW4KICAgICBBU1NFUlQobV90cmFuc2FjdGlvbnMuY29udGFpbnModHJhbnNhY3Rpb24tPmlk
KCkpKTsKICAgICBBU1NFUlQobV90cmFuc2FjdGlvbnMuZ2V0KHRyYW5zYWN0aW9uLT5pZCgpKSA9
PSB0cmFuc2FjdGlvbi5nZXQoKSk7CiAgICAgbV90cmFuc2FjdGlvbnMucmVtb3ZlKHRyYW5zYWN0
aW9uLT5pZCgpKTsKLSAgICBpZiAodHJhbnNhY3Rpb24tPm1vZGUoKSA9PSBJREJUcmFuc2FjdGlv
bjo6VkVSU0lPTl9DSEFOR0UpIHsKKyAgICBpZiAodHJhbnNhY3Rpb24tPm1vZGUoKSA9PSBJbmRl
eGVkREI6OlRyYW5zYWN0aW9uVmVyc2lvbkNoYW5nZSkgewogICAgICAgICBBU1NFUlQodHJhbnNh
Y3Rpb24uZ2V0KCkgPT0gbV9ydW5uaW5nVmVyc2lvbkNoYW5nZVRyYW5zYWN0aW9uLmdldCgpKTsK
ICAgICAgICAgbV9ydW5uaW5nVmVyc2lvbkNoYW5nZVRyYW5zYWN0aW9uLmNsZWFyKCk7CiAgICAg
fQpAQCAtMTEwMCw3ICsxMTAwLDcgQEAgdm9pZCBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjp0cmFu
c2FjdGlvbkZpbmlzaGVkKFBhc3NSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW4KIHZvaWQgSURC
RGF0YWJhc2VCYWNrZW5kSW1wbDo6dHJhbnNhY3Rpb25GaW5pc2hlZEFuZEFib3J0RmlyZWQoUGFz
c1JlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsPiBwcnBUcmFuc2FjdGlvbikKIHsKICAg
ICBSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbD4gdHJhbnNhY3Rpb24gPSBwcnBUcmFu
c2FjdGlvbjsKLSAgICBpZiAodHJhbnNhY3Rpb24tPm1vZGUoKSA9PSBJREJUcmFuc2FjdGlvbjo6
VkVSU0lPTl9DSEFOR0UpIHsKKyAgICBpZiAodHJhbnNhY3Rpb24tPm1vZGUoKSA9PSBJbmRleGVk
REI6OlRyYW5zYWN0aW9uVmVyc2lvbkNoYW5nZSkgewogICAgICAgICAvLyBJZiB0aGlzIHdhcyBh
biBvcGVuLXdpdGgtdmVyc2lvbiBjYWxsLCB0aGVyZSB3aWxsIGJlIGEgInNlY29uZAogICAgICAg
ICAvLyBoYWxmIiBvcGVuIGNhbGwgd2FpdGluZyBmb3IgdXMgaW4gcHJvY2Vzc1BlbmRpbmdDYWxs
cy4KICAgICAgICAgLy8gRklYTUU6IFdoZW4gd2Ugbm8gbG9uZ2VyIHN1cHBvcnQgc2V0VmVyc2lv
biwgYXNzZXJ0IHN1Y2ggYSB0aGluZy4KQEAgLTExMTUsNyArMTExNSw3IEBAIHZvaWQgSURCRGF0
YWJhc2VCYWNrZW5kSW1wbDo6dHJhbnNhY3Rpb25GaW5pc2hlZEFuZEFib3J0RmlyZWQoUGFzc1Jl
ZlB0cjxJREJUcmFuCiB2b2lkIElEQkRhdGFiYXNlQmFja2VuZEltcGw6OnRyYW5zYWN0aW9uRmlu
aXNoZWRBbmRDb21wbGV0ZUZpcmVkKFBhc3NSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW1w
bD4gcHJwVHJhbnNhY3Rpb24pCiB7CiAgICAgUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZElt
cGw+IHRyYW5zYWN0aW9uID0gcHJwVHJhbnNhY3Rpb247Ci0gICAgaWYgKHRyYW5zYWN0aW9uLT5t
b2RlKCkgPT0gSURCVHJhbnNhY3Rpb246OlZFUlNJT05fQ0hBTkdFKQorICAgIGlmICh0cmFuc2Fj
dGlvbi0+bW9kZSgpID09IEluZGV4ZWREQjo6VHJhbnNhY3Rpb25WZXJzaW9uQ2hhbmdlKQogICAg
ICAgICBwcm9jZXNzUGVuZGluZ0NhbGxzKCk7CiB9CiAKQEAgLTExNjUsNyArMTE2NSw3IEBAIHZv
aWQgSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6cHJvY2Vzc1BlbmRpbmdDYWxscygpCiAKIHZvaWQg
SURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6Y3JlYXRlVHJhbnNhY3Rpb24oaW50NjRfdCB0cmFuc2Fj
dGlvbklkLCBQYXNzUmVmUHRyPElEQkRhdGFiYXNlQ2FsbGJhY2tzPiBjYWxsYmFja3MsIGNvbnN0
IFZlY3RvcjxpbnQ2NF90PiYgb2JqZWN0U3RvcmVJZHMsIHVuc2lnbmVkIHNob3J0IG1vZGUpCiB7
Ci0gICAgUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGw+IHRyYW5zYWN0aW9uID0gSURC
VHJhbnNhY3Rpb25CYWNrZW5kSW1wbDo6Y3JlYXRlKHRyYW5zYWN0aW9uSWQsIGNhbGxiYWNrcywg
b2JqZWN0U3RvcmVJZHMsIHN0YXRpY19jYXN0PElEQlRyYW5zYWN0aW9uOjpNb2RlPihtb2RlKSwg
dGhpcyk7CisgICAgUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGw+IHRyYW5zYWN0aW9u
ID0gSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbDo6Y3JlYXRlKHRyYW5zYWN0aW9uSWQsIGNhbGxi
YWNrcywgb2JqZWN0U3RvcmVJZHMsIHN0YXRpY19jYXN0PEluZGV4ZWREQjo6VHJhbnNhY3Rpb25N
b2RlPihtb2RlKSwgdGhpcyk7CiAgICAgQVNTRVJUKCFtX3RyYW5zYWN0aW9ucy5jb250YWlucyh0
cmFuc2FjdGlvbklkKSk7CiAgICAgbV90cmFuc2FjdGlvbnMuYWRkKHRyYW5zYWN0aW9uSWQsIHRy
YW5zYWN0aW9uLmdldCgpKTsKIH0KQEAgLTEyNTcsNyArMTI1Nyw3IEBAIHZvaWQgSURCRGF0YWJh
c2VCYWNrZW5kSW1wbDo6cnVuSW50VmVyc2lvbkNoYW5nZVRyYW5zYWN0aW9uKFBhc3NSZWZQdHI8
SURCQ2FsbGJhCiAgICAgfQogCiAgICAgVmVjdG9yPGludDY0X3Q+IG9iamVjdFN0b3JlSWRzOwot
ICAgIGNyZWF0ZVRyYW5zYWN0aW9uKHRyYW5zYWN0aW9uSWQsIGRhdGFiYXNlQ2FsbGJhY2tzLCBv
YmplY3RTdG9yZUlkcywgSURCVHJhbnNhY3Rpb246OlZFUlNJT05fQ0hBTkdFKTsKKyAgICBjcmVh
dGVUcmFuc2FjdGlvbih0cmFuc2FjdGlvbklkLCBkYXRhYmFzZUNhbGxiYWNrcywgb2JqZWN0U3Rv
cmVJZHMsIEluZGV4ZWREQjo6VHJhbnNhY3Rpb25WZXJzaW9uQ2hhbmdlKTsKICAgICBSZWZQdHI8
SURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbD4gdHJhbnNhY3Rpb24gPSBtX3RyYW5zYWN0aW9ucy5n
ZXQodHJhbnNhY3Rpb25JZCk7CiAKICAgICB0cmFuc2FjdGlvbi0+c2NoZWR1bGVUYXNrKFZlcnNp
b25DaGFuZ2VPcGVyYXRpb246OmNyZWF0ZSh0aGlzLCB0cmFuc2FjdGlvbklkLCByZXF1ZXN0ZWRW
ZXJzaW9uLCBjYWxsYmFja3MsIGRhdGFiYXNlQ2FsbGJhY2tzKSwgVmVyc2lvbkNoYW5nZUFib3J0
T3BlcmF0aW9uOjpjcmVhdGUodGhpcywgbV9tZXRhZGF0YS52ZXJzaW9uLCBtX21ldGFkYXRhLmlu
dFZlcnNpb24pKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L0lEQkRhdGFiYXNlQmFja2VuZEltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL0lEQkRhdGFiYXNlQmFja2VuZEltcGwuaAppbmRleCAxZWJjODc4MTJlNWFlOTZkZmRiNTg3
N2QxZGYzYjk1YWI5YjMwMzZkLi4zNTNiZmEwOTMxODlkMWQ4NGJkZmEwNjkxOTk3NzVkNTgwMTVj
YjkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRh
YmFzZUJhY2tlbmRJbXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
SURCRGF0YWJhc2VCYWNrZW5kSW1wbC5oCkBAIC0yNyw3ICsyNyw3IEBACiAjZGVmaW5lIElEQkRh
dGFiYXNlQmFja2VuZEltcGxfaAogCiAjaW5jbHVkZSAiSURCQ2FsbGJhY2tzLmgiCi0jaW5jbHVk
ZSAiSURCRGF0YWJhc2UuaCIKKyNpbmNsdWRlICJJREJNZXRhZGF0YS5oIgogI2luY2x1ZGUgPHN0
ZGludC5oPgogI2luY2x1ZGUgPHd0Zi9EZXF1ZS5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+
CkBAIC04NCw3ICs4NCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgcHV0KGludDY0X3Qg
dHJhbnNhY3Rpb25JZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBQYXNzUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gdmFsdWUsIFBhc3NSZWZQdHI8SURCS2V5PiwgUHV0TW9kZSwgUGFzc1JlZlB0cjxJREJD
YWxsYmFja3M+LCBjb25zdCBWZWN0b3I8aW50NjRfdD4mIGluZGV4SWRzLCBjb25zdCBWZWN0b3I8
SW5kZXhLZXlzPiYpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBzZXRJbmRleEtleXMoaW50
NjRfdCB0cmFuc2FjdGlvbklkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIFBhc3NSZWZQdHI8SURC
S2V5PiBwcnBQcmltYXJ5S2V5LCBjb25zdCBWZWN0b3I8aW50NjRfdD4mIGluZGV4SWRzLCBjb25z
dCBWZWN0b3I8SW5kZXhLZXlzPiYpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBzZXRJbmRl
eGVzUmVhZHkoaW50NjRfdCB0cmFuc2FjdGlvbklkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGNv
bnN0IFZlY3RvcjxpbnQ2NF90PiYgaW5kZXhJZHMpIE9WRVJSSURFOwotICAgIHZpcnR1YWwgdm9p
ZCBvcGVuQ3Vyc29yKGludDY0X3QgdHJhbnNhY3Rpb25JZCwgaW50NjRfdCBvYmplY3RTdG9yZUlk
LCBpbnQ2NF90IGluZGV4SWQsIFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+LCB1bnNpZ25lZCBzaG9y
dCBkaXJlY3Rpb24sIGJvb2wga2V5T25seSwgVGFza1R5cGUsIFBhc3NSZWZQdHI8SURCQ2FsbGJh
Y2tzPikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIG9wZW5DdXJzb3IoaW50NjRfdCB0cmFu
c2FjdGlvbklkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGludDY0X3QgaW5kZXhJZCwgUGFzc1Jl
ZlB0cjxJREJLZXlSYW5nZT4sIEluZGV4ZWREQjo6Q3Vyc29yRGlyZWN0aW9uLCBib29sIGtleU9u
bHksIFRhc2tUeXBlLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4pIE9WRVJSSURFOwogICAgIHZp
cnR1YWwgdm9pZCBjb3VudChpbnQ2NF90IHRyYW5zYWN0aW9uSWQsIGludDY0X3Qgb2JqZWN0U3Rv
cmVJZCwgaW50NjRfdCBpbmRleElkLCBQYXNzUmVmUHRyPElEQktleVJhbmdlPiwgUGFzc1JlZlB0
cjxJREJDYWxsYmFja3M+KSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlUmFuZ2Uo
aW50NjRfdCB0cmFuc2FjdGlvbklkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIFBhc3NSZWZQdHI8
SURCS2V5UmFuZ2U+LCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4pIE9WRVJSSURFOwogICAgIHZp
cnR1YWwgdm9pZCBjbGVhcihpbnQ2NF90IHRyYW5zYWN0aW9uSWQsIGludDY0X3Qgb2JqZWN0U3Rv
cmVJZCwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+KSBPVkVSUklERTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQmFja2VuZEludGVyZmFj
ZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VCYWNrZW5k
SW50ZXJmYWNlLmgKaW5kZXggZTAwMTRlYjNlMmRjYzJhM2Y0MzQyNTA3NDQ1NzkzMDViNzE2N2M0
Ni4uM2U1MWNjMDZhMjIzOWFjZThlNzk4YzRhODM2MDM2NGFmMGEyOTQwNiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VCYWNrZW5kSW50ZXJm
YWNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VC
YWNrZW5kSW50ZXJmYWNlLmgKQEAgLTI2LDcgKzI2LDggQEAKICNpZm5kZWYgSURCRGF0YWJhc2VC
YWNrZW5kSW50ZXJmYWNlX2gKICNkZWZpbmUgSURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlX2gK
IAotI2luY2x1ZGUgIklEQlRyYW5zYWN0aW9uLmgiCisjaW5jbHVkZSAiSURCRGF0YWJhc2VFcnJv
ci5oIgorI2luY2x1ZGUgIkluZGV4ZWREQi5oIgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+
CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJp
bmcuaD4KQEAgLTg1LDcgKzg2LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBwdXQoaW50
NjRfdCB0cmFuc2FjdGlvbklkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIFBhc3NSZWZQdHI8U2hh
cmVkQnVmZmVyPiB2YWx1ZSwgUGFzc1JlZlB0cjxJREJLZXk+LCBQdXRNb2RlLCBQYXNzUmVmUHRy
PElEQkNhbGxiYWNrcz4sIGNvbnN0IFZlY3RvcjxpbnQ2NF90PiYgaW5kZXhJZHMsIGNvbnN0IFZl
Y3RvcjxJbmRleEtleXM+JikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzZXRJbmRleEtleXMoaW50
NjRfdCB0cmFuc2FjdGlvbklkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIFBhc3NSZWZQdHI8SURC
S2V5PiBwcnBQcmltYXJ5S2V5LCBjb25zdCBWZWN0b3I8aW50NjRfdD4mIGluZGV4SWRzLCBjb25z
dCBWZWN0b3I8SW5kZXhLZXlzPiYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc2V0SW5kZXhlc1Jl
YWR5KGludDY0X3QgdHJhbnNhY3Rpb25JZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBjb25zdCBW
ZWN0b3I8aW50NjRfdD4mIGluZGV4SWRzKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIG9wZW5DdXJz
b3IoaW50NjRfdCB0cmFuc2FjdGlvbklkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGludDY0X3Qg
aW5kZXhJZCwgUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4sIHVuc2lnbmVkIHNob3J0IGRpcmVjdGlv
biwgYm9vbCBrZXlPbmx5LCBUYXNrVHlwZSwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+KSA9IDA7
CisgICAgdmlydHVhbCB2b2lkIG9wZW5DdXJzb3IoaW50NjRfdCB0cmFuc2FjdGlvbklkLCBpbnQ2
NF90IG9iamVjdFN0b3JlSWQsIGludDY0X3QgaW5kZXhJZCwgUGFzc1JlZlB0cjxJREJLZXlSYW5n
ZT4sIEluZGV4ZWREQjo6Q3Vyc29yRGlyZWN0aW9uLCBib29sIGtleU9ubHksIFRhc2tUeXBlLCBQ
YXNzUmVmUHRyPElEQkNhbGxiYWNrcz4pID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgY291bnQoaW50
NjRfdCB0cmFuc2FjdGlvbklkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGludDY0X3QgaW5kZXhJ
ZCwgUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4sIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPikgPSAw
OwogICAgIHZpcnR1YWwgdm9pZCBkZWxldGVSYW5nZShpbnQ2NF90IHRyYW5zYWN0aW9uSWQsIGlu
dDY0X3Qgb2JqZWN0U3RvcmVJZCwgUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4sIFBhc3NSZWZQdHI8
SURCQ2FsbGJhY2tzPikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBjbGVhcihpbnQ2NF90IHRyYW5z
YWN0aW9uSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+
KSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJG
YWN0b3J5LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5LmgK
aW5kZXggY2IxYjdiMGIzNzZiN2FhNmQ4NDljNjg0OGIzMGUzZTFjZTYwMmVmOC4uY2M2MWNkN2M2
ZmJkMTJlNGUwOWE3N2VjOWRkMGRhMjBjZmU3NzBiOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRmFjdG9yeS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL0lEQkZhY3RvcnkuaApAQCAtMjgsNyArMjgsNiBAQAogI2lmbmRlZiBJ
REJGYWN0b3J5X2gKICNkZWZpbmUgSURCRmFjdG9yeV9oCiAKLSNpbmNsdWRlICJJREJGYWN0b3J5
QmFja2VuZEludGVyZmFjZS5oIgogI2luY2x1ZGUgIklEQk9wZW5EQlJlcXVlc3QuaCIKICNpbmNs
dWRlICJTY3JpcHRXcmFwcGFibGUuaCIKICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCSW5kZXguY3BwIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCSW5kZXguY3BwCmluZGV4IGJlYjk4
MzZhNTRlYWE4OWE1Yzg3YjJhNTkxNzY4OTIzN2VjMjQyMGUuLmZmNWQ0MzY3YjgzYjkwODViODM5
YTc0NmI4NmNiODYwNjNhZmIxODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL0lEQkluZGV4LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9JREJJbmRleC5jcHAKQEAgLTI4LDcgKzI4LDYgQEAKIAogI2lmIEVOQUJMRShJTkRFWEVE
X0RBVEFCQVNFKQogCi0jaW5jbHVkZSAiSURCQ3Vyc29yQmFja2VuZEludGVyZmFjZS5oIgogI2lu
Y2x1ZGUgIklEQkRhdGFiYXNlRXhjZXB0aW9uLmgiCiAjaW5jbHVkZSAiSURCS2V5LmgiCiAjaW5j
bHVkZSAiSURCS2V5UmFuZ2UuaCIKQEAgLTQwLDcgKzM5LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCi1zdGF0aWMgY29uc3QgdW5zaWduZWQgc2hvcnQgZGVmYXVsdERpcmVjdGlvbiA9IElE
QkN1cnNvcjo6TkVYVDsKK3N0YXRpYyBjb25zdCB1bnNpZ25lZCBzaG9ydCBkZWZhdWx0RGlyZWN0
aW9uID0gSW5kZXhlZERCOjpDdXJzb3JOZXh0OwogCiBJREJJbmRleDo6SURCSW5kZXgoY29uc3Qg
SURCSW5kZXhNZXRhZGF0YSYgbWV0YWRhdGEsIElEQk9iamVjdFN0b3JlKiBvYmplY3RTdG9yZSwg
SURCVHJhbnNhY3Rpb24qIHRyYW5zYWN0aW9uKQogICAgIDogbV9tZXRhZGF0YShtZXRhZGF0YSkK
QEAgLTY4LDEyICs2NywxMiBAQCBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IElEQkluZGV4OjpvcGVu
Q3Vyc29yKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFBhcwogICAgICAgICBlYyA9
IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpUcmFuc2FjdGlvbkluYWN0aXZlRXJyb3I7CiAgICAgICAg
IHJldHVybiAwOwogICAgIH0KLSAgICBJREJDdXJzb3I6OkRpcmVjdGlvbiBkaXJlY3Rpb24gPSBJ
REJDdXJzb3I6OnN0cmluZ1RvRGlyZWN0aW9uKGRpcmVjdGlvblN0cmluZywgY29udGV4dCwgZWMp
OworICAgIEluZGV4ZWREQjo6Q3Vyc29yRGlyZWN0aW9uIGRpcmVjdGlvbiA9IElEQkN1cnNvcjo6
c3RyaW5nVG9EaXJlY3Rpb24oZGlyZWN0aW9uU3RyaW5nLCBjb250ZXh0LCBlYyk7CiAgICAgaWYg
KGVjKQogICAgICAgICByZXR1cm4gMDsKIAogICAgIFJlZlB0cjxJREJSZXF1ZXN0PiByZXF1ZXN0
ID0gSURCUmVxdWVzdDo6Y3JlYXRlKGNvbnRleHQsIElEQkFueTo6Y3JlYXRlKHRoaXMpLCBtX3Ry
YW5zYWN0aW9uLmdldCgpKTsKLSAgICByZXF1ZXN0LT5zZXRDdXJzb3JEZXRhaWxzKElEQkN1cnNv
ckJhY2tlbmRJbnRlcmZhY2U6OktleUFuZFZhbHVlLCBkaXJlY3Rpb24pOworICAgIHJlcXVlc3Qt
PnNldEN1cnNvckRldGFpbHMoSW5kZXhlZERCOjpDdXJzb3JLZXlBbmRWYWx1ZSwgZGlyZWN0aW9u
KTsKICAgICBiYWNrZW5kREIoKS0+b3BlbkN1cnNvcihtX3RyYW5zYWN0aW9uLT5pZCgpLCBtX29i
amVjdFN0b3JlLT5pZCgpLCBtX21ldGFkYXRhLmlkLCBrZXlSYW5nZSwgZGlyZWN0aW9uLCBmYWxz
ZSwgSURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlOjpOb3JtYWxUYXNrLCByZXF1ZXN0KTsKICAg
ICByZXR1cm4gcmVxdWVzdDsKIH0KQEAgLTEyMywxMiArMTIyLDEyIEBAIFBhc3NSZWZQdHI8SURC
UmVxdWVzdD4gSURCSW5kZXg6Om9wZW5LZXlDdXJzb3IoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCog
Y29udGV4dCwKICAgICAgICAgZWMgPSBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6VHJhbnNhY3Rpb25J
bmFjdGl2ZUVycm9yOwogICAgICAgICByZXR1cm4gMDsKICAgICB9Ci0gICAgSURCQ3Vyc29yOjpE
aXJlY3Rpb24gZGlyZWN0aW9uID0gSURCQ3Vyc29yOjpzdHJpbmdUb0RpcmVjdGlvbihkaXJlY3Rp
b25TdHJpbmcsIGNvbnRleHQsIGVjKTsKKyAgICBJbmRleGVkREI6OkN1cnNvckRpcmVjdGlvbiBk
aXJlY3Rpb24gPSBJREJDdXJzb3I6OnN0cmluZ1RvRGlyZWN0aW9uKGRpcmVjdGlvblN0cmluZywg
Y29udGV4dCwgZWMpOwogICAgIGlmIChlYykKICAgICAgICAgcmV0dXJuIDA7CiAKICAgICBSZWZQ
dHI8SURCUmVxdWVzdD4gcmVxdWVzdCA9IElEQlJlcXVlc3Q6OmNyZWF0ZShjb250ZXh0LCBJREJB
bnk6OmNyZWF0ZSh0aGlzKSwgbV90cmFuc2FjdGlvbi5nZXQoKSk7Ci0gICAgcmVxdWVzdC0+c2V0
Q3Vyc29yRGV0YWlscyhJREJDdXJzb3JCYWNrZW5kSW50ZXJmYWNlOjpLZXlPbmx5LCBkaXJlY3Rp
b24pOworICAgIHJlcXVlc3QtPnNldEN1cnNvckRldGFpbHMoSW5kZXhlZERCOjpDdXJzb3JLZXlP
bmx5LCBkaXJlY3Rpb24pOwogICAgIGJhY2tlbmREQigpLT5vcGVuQ3Vyc29yKG1fdHJhbnNhY3Rp
b24tPmlkKCksIG1fb2JqZWN0U3RvcmUtPmlkKCksIG1fbWV0YWRhdGEuaWQsIGtleVJhbmdlLCBk
aXJlY3Rpb24sIHRydWUsIElEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZTo6Tm9ybWFsVGFzaywg
cmVxdWVzdCk7CiAgICAgcmV0dXJuIHJlcXVlc3Q7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZS5jcHAKaW5kZXggZmFhNWNiZTI2MWNj
YjA0ZDRjODkzOTdkNmNmYzNiMmZlMjdhOGEzZi4uNTg5MGVjMzdmYzFjMjU3ZGVhZDJmZmU1ZmVl
ODYxMzdlMDdiZTUyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvSURCT2JqZWN0U3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL0lEQk9iamVjdFN0b3JlLmNwcApAQCAtMzEsNyArMzEsNiBAQAogI2luY2x1ZGUgIkRPTVN0
cmluZ0xpc3QuaCIKICNpbmNsdWRlICJJREJBbnkuaCIKICNpbmNsdWRlICJJREJCaW5kaW5nVXRp
bGl0aWVzLmgiCi0jaW5jbHVkZSAiSURCQ3Vyc29yQmFja2VuZEludGVyZmFjZS5oIgogI2luY2x1
ZGUgIklEQkN1cnNvcldpdGhWYWx1ZS5oIgogI2luY2x1ZGUgIklEQkRhdGFiYXNlLmgiCiAjaW5j
bHVkZSAiSURCRGF0YWJhc2VFeGNlcHRpb24uaCIKQEAgLTQ4LDcgKzQ3LDcgQEAKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCi1zdGF0aWMgY29uc3QgdW5zaWduZWQgc2hvcnQgZGVmYXVsdERpcmVj
dGlvbiA9IElEQkN1cnNvcjo6TkVYVDsKK3N0YXRpYyBjb25zdCB1bnNpZ25lZCBzaG9ydCBkZWZh
dWx0RGlyZWN0aW9uID0gSW5kZXhlZERCOjpDdXJzb3JOZXh0OwogCiBJREJPYmplY3RTdG9yZTo6
SURCT2JqZWN0U3RvcmUoY29uc3QgSURCT2JqZWN0U3RvcmVNZXRhZGF0YSYgbWV0YWRhdGEsIElE
QlRyYW5zYWN0aW9uKiB0cmFuc2FjdGlvbikKICAgICA6IG1fbWV0YWRhdGEobWV0YWRhdGEpCkBA
IC01MDUsMTIgKzUwNCwxMiBAQCBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IElEQk9iamVjdFN0b3Jl
OjpvcGVuQ3Vyc29yKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleAogICAgICAgICBlYyA9
IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpUcmFuc2FjdGlvbkluYWN0aXZlRXJyb3I7CiAgICAgICAg
IHJldHVybiAwOwogICAgIH0KLSAgICBJREJDdXJzb3I6OkRpcmVjdGlvbiBkaXJlY3Rpb24gPSBJ
REJDdXJzb3I6OnN0cmluZ1RvRGlyZWN0aW9uKGRpcmVjdGlvblN0cmluZywgY29udGV4dCwgZWMp
OworICAgIEluZGV4ZWREQjo6Q3Vyc29yRGlyZWN0aW9uIGRpcmVjdGlvbiA9IElEQkN1cnNvcjo6
c3RyaW5nVG9EaXJlY3Rpb24oZGlyZWN0aW9uU3RyaW5nLCBjb250ZXh0LCBlYyk7CiAgICAgaWYg
KGVjKQogICAgICAgICByZXR1cm4gMDsKIAogICAgIFJlZlB0cjxJREJSZXF1ZXN0PiByZXF1ZXN0
ID0gSURCUmVxdWVzdDo6Y3JlYXRlKGNvbnRleHQsIElEQkFueTo6Y3JlYXRlKHRoaXMpLCBtX3Ry
YW5zYWN0aW9uLmdldCgpKTsKLSAgICByZXF1ZXN0LT5zZXRDdXJzb3JEZXRhaWxzKElEQkN1cnNv
ckJhY2tlbmRJbnRlcmZhY2U6OktleUFuZFZhbHVlLCBkaXJlY3Rpb24pOworICAgIHJlcXVlc3Qt
PnNldEN1cnNvckRldGFpbHMoSW5kZXhlZERCOjpDdXJzb3JLZXlBbmRWYWx1ZSwgZGlyZWN0aW9u
KTsKIAogICAgIGJhY2tlbmREQigpLT5vcGVuQ3Vyc29yKG1fdHJhbnNhY3Rpb24tPmlkKCksIGlk
KCksIElEQkluZGV4TWV0YWRhdGE6OkludmFsaWRJZCwgcmFuZ2UsIGRpcmVjdGlvbiwgZmFsc2Us
IHN0YXRpY19jYXN0PElEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZTo6VGFza1R5cGU+KHRhc2tU
eXBlKSwgcmVxdWVzdCk7CiAgICAgcmV0dXJuIHJlcXVlc3QucmVsZWFzZSgpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCUmVxdWVzdC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJSZXF1ZXN0LmNwcAppbmRleCAyYjEzNDM5
MTE4NDM0M2FlOWNmYTA0ODUzODAzZjA3MTU5YTg2MzRiLi42NjVlM2ZmYWViN2YyYjQzM2Q3NWE3
ZjhkNDZlN2ZhYmEwODY2YzJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9JREJSZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9JREJSZXF1ZXN0LmNwcApAQCAtMzcsNiArMzcsNyBAQAogI2luY2x1ZGUgIkV2ZW50UXVl
dWUuaCIKICNpbmNsdWRlICJFeGNlcHRpb25Db2RlUGxhY2Vob2xkZXIuaCIKICNpbmNsdWRlICJJ
REJCaW5kaW5nVXRpbGl0aWVzLmgiCisjaW5jbHVkZSAiSURCQ3Vyc29yQmFja2VuZEludGVyZmFj
ZS5oIgogI2luY2x1ZGUgIklEQkN1cnNvcldpdGhWYWx1ZS5oIgogI2luY2x1ZGUgIklEQkRhdGFi
YXNlLmgiCiAjaW5jbHVkZSAiSURCRXZlbnREaXNwYXRjaGVyLmgiCkBAIC03Nyw4ICs3OCw4IEBA
IElEQlJlcXVlc3Q6OklEQlJlcXVlc3QoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwg
UGFzc1JlZlB0cjxJREJBbnk+IHNvdXJjCiAgICAgLCBtX3NvdXJjZShzb3VyY2UpCiAgICAgLCBt
X3Rhc2tUeXBlKHRhc2tUeXBlKQogICAgICwgbV9oYXNQZW5kaW5nQWN0aXZpdHkodHJ1ZSkKLSAg
ICAsIG1fY3Vyc29yVHlwZShJREJDdXJzb3JCYWNrZW5kSW50ZXJmYWNlOjpLZXlBbmRWYWx1ZSkK
LSAgICAsIG1fY3Vyc29yRGlyZWN0aW9uKElEQkN1cnNvcjo6TkVYVCkKKyAgICAsIG1fY3Vyc29y
VHlwZShJbmRleGVkREI6OkN1cnNvcktleUFuZFZhbHVlKQorICAgICwgbV9jdXJzb3JEaXJlY3Rp
b24oSW5kZXhlZERCOjpDdXJzb3JOZXh0KQogICAgICwgbV9jdXJzb3JGaW5pc2hlZChmYWxzZSkK
ICAgICAsIG1fcGVuZGluZ0N1cnNvcigwKQogICAgICwgbV9kaWRGaXJlVXBncmFkZU5lZWRlZEV2
ZW50KGZhbHNlKQpAQCAtMTg1LDcgKzE4Niw3IEBAIHZvaWQgSURCUmVxdWVzdDo6YWJvcnQoKQog
ICAgIG1fcmVxdWVzdEFib3J0ZWQgPSB0cnVlOwogfQogCi12b2lkIElEQlJlcXVlc3Q6OnNldEN1
cnNvckRldGFpbHMoSURCQ3Vyc29yQmFja2VuZEludGVyZmFjZTo6Q3Vyc29yVHlwZSBjdXJzb3JU
eXBlLCBJREJDdXJzb3I6OkRpcmVjdGlvbiBkaXJlY3Rpb24pCit2b2lkIElEQlJlcXVlc3Q6OnNl
dEN1cnNvckRldGFpbHMoSW5kZXhlZERCOjpDdXJzb3JUeXBlIGN1cnNvclR5cGUsIEluZGV4ZWRE
Qjo6Q3Vyc29yRGlyZWN0aW9uIGRpcmVjdGlvbikKIHsKICAgICBBU1NFUlQobV9yZWFkeVN0YXRl
ID09IFBFTkRJTkcpOwogICAgIEFTU0VSVCghbV9wZW5kaW5nQ3Vyc29yKTsKQEAgLTIyOCw3ICsy
MjksNyBAQCB2b2lkIElEQlJlcXVlc3Q6OnNldFJlc3VsdEN1cnNvcihQYXNzUmVmUHRyPElEQkN1
cnNvcj4gY3Vyc29yLCBQYXNzUmVmUHRyPElEQktleQogICAgIG1fY3Vyc29yUHJpbWFyeUtleSA9
IHByaW1hcnlLZXk7CiAgICAgbV9jdXJzb3JWYWx1ZSA9IHZhbHVlOwogCi0gICAgaWYgKG1fY3Vy
c29yVHlwZSA9PSBJREJDdXJzb3JCYWNrZW5kSW50ZXJmYWNlOjpLZXlPbmx5KSB7CisgICAgaWYg
KG1fY3Vyc29yVHlwZSA9PSBJbmRleGVkREI6OkN1cnNvcktleU9ubHkpIHsKICAgICAgICAgbV9y
ZXN1bHQgPSBJREJBbnk6OmNyZWF0ZShjdXJzb3IpOwogICAgICAgICByZXR1cm47CiAgICAgfQpA
QCAtMjk0LDEwICsyOTUsMTAgQEAgdm9pZCBJREJSZXF1ZXN0OjpvblN1Y2Nlc3MoUGFzc1JlZlB0
cjxJREJDdXJzb3JCYWNrZW5kSW50ZXJmYWNlPiBiYWNrZW5kLCBQYXNzUmUKICAgICBBU1NFUlQo
IW1fcGVuZGluZ0N1cnNvcik7CiAgICAgUmVmUHRyPElEQkN1cnNvcj4gY3Vyc29yOwogICAgIHN3
aXRjaCAobV9jdXJzb3JUeXBlKSB7Ci0gICAgY2FzZSBJREJDdXJzb3JCYWNrZW5kSW50ZXJmYWNl
OjpLZXlPbmx5OgorICAgIGNhc2UgSW5kZXhlZERCOjpDdXJzb3JLZXlPbmx5OgogICAgICAgICBj
dXJzb3IgPSBJREJDdXJzb3I6OmNyZWF0ZShiYWNrZW5kLCBtX2N1cnNvckRpcmVjdGlvbiwgdGhp
cywgbV9zb3VyY2UuZ2V0KCksIG1fdHJhbnNhY3Rpb24uZ2V0KCkpOwogICAgICAgICBicmVhazsK
LSAgICBjYXNlIElEQkN1cnNvckJhY2tlbmRJbnRlcmZhY2U6OktleUFuZFZhbHVlOgorICAgIGNh
c2UgSW5kZXhlZERCOjpDdXJzb3JLZXlBbmRWYWx1ZToKICAgICAgICAgY3Vyc29yID0gSURCQ3Vy
c29yV2l0aFZhbHVlOjpjcmVhdGUoYmFja2VuZCwgbV9jdXJzb3JEaXJlY3Rpb24sIHRoaXMsIG1f
c291cmNlLmdldCgpLCBtX3RyYW5zYWN0aW9uLmdldCgpKTsKICAgICAgICAgYnJlYWs7CiAgICAg
ZGVmYXVsdDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lE
QlJlcXVlc3QuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlJlcXVlc3Qu
aAppbmRleCBkMDY3ZWIyOWE4ODU1NzkyYzBjMTI1NTc3NWNkMDI0ODg4Yzk1MWI1Li5iODMwNjQw
NzAwM2MxMjBiYmExNzYzODI0YjhkMmE5Mzk2Y2ZhMjc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJSZXF1ZXN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvSURCUmVxdWVzdC5oCkBAIC00Miw3ICs0Miw2IEBACiAjaW5jbHVk
ZSAiSURCQW55LmgiCiAjaW5jbHVkZSAiSURCQ2FsbGJhY2tzLmgiCiAjaW5jbHVkZSAiSURCQ3Vy
c29yLmgiCi0jaW5jbHVkZSAiSURCQ3Vyc29yQmFja2VuZEludGVyZmFjZS5oIgogI2luY2x1ZGUg
IlNjcmlwdFdyYXBwYWJsZS5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC03OCw3ICs3Nyw3
IEBAIHB1YmxpYzoKICAgICBERUZJTkVfQVRUUklCVVRFX0VWRU5UX0xJU1RFTkVSKGVycm9yKTsK
IAogICAgIHZvaWQgbWFya0Vhcmx5RGVhdGgoKTsKLSAgICB2b2lkIHNldEN1cnNvckRldGFpbHMo
SURCQ3Vyc29yQmFja2VuZEludGVyZmFjZTo6Q3Vyc29yVHlwZSwgSURCQ3Vyc29yOjpEaXJlY3Rp
b24pOworICAgIHZvaWQgc2V0Q3Vyc29yRGV0YWlscyhJbmRleGVkREI6OkN1cnNvclR5cGUsIElu
ZGV4ZWREQjo6Q3Vyc29yRGlyZWN0aW9uKTsKICAgICB2b2lkIHNldFBlbmRpbmdDdXJzb3IoUGFz
c1JlZlB0cjxJREJDdXJzb3I+KTsKICAgICB2b2lkIGZpbmlzaEN1cnNvcigpOwogICAgIHZvaWQg
YWJvcnQoKTsKQEAgLTE0OSw4ICsxNDgsOCBAQCBwcml2YXRlOgogICAgIFZlY3RvcjxSZWZQdHI8
RXZlbnQ+ID4gbV9lbnF1ZXVlZEV2ZW50czsKIAogICAgIC8vIE9ubHkgdXNlZCBpZiB0aGUgcmVz
dWx0IHR5cGUgd2lsbCBiZSBhIGN1cnNvci4KLSAgICBJREJDdXJzb3JCYWNrZW5kSW50ZXJmYWNl
OjpDdXJzb3JUeXBlIG1fY3Vyc29yVHlwZTsKLSAgICBJREJDdXJzb3I6OkRpcmVjdGlvbiBtX2N1
cnNvckRpcmVjdGlvbjsKKyAgICBJbmRleGVkREI6OkN1cnNvclR5cGUgbV9jdXJzb3JUeXBlOwor
ICAgIEluZGV4ZWREQjo6Q3Vyc29yRGlyZWN0aW9uIG1fY3Vyc29yRGlyZWN0aW9uOwogICAgIGJv
b2wgbV9jdXJzb3JGaW5pc2hlZDsKICAgICBSZWZQdHI8SURCQ3Vyc29yPiBtX3BlbmRpbmdDdXJz
b3I7CiAgICAgUmVmUHRyPElEQktleT4gbV9jdXJzb3JLZXk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5jcHAKaW5kZXggYmMwZWRkZGY4
NDEwM2ZjY2UyZGZlZDEzYjJkYTIzYjQyMzQ5NjdjMy4uZjU1NTk0M2Q4MDMzZDg4MDk1ODM1NjM4
MjVhZGYwYTUxNjRiZDI0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvSURCVHJhbnNhY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmNwcApAQCAtNDQsNyArNDQsNyBAQAogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKLVBhc3NSZWZQdHI8SURCVHJhbnNhY3Rpb24+IElEQlRyYW5zYWN0aW9uOjpj
cmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgaW50NjRfdCBpZCwgY29uc3Qg
VmVjdG9yPFN0cmluZz4mIG9iamVjdFN0b3JlTmFtZXMsIElEQlRyYW5zYWN0aW9uOjpNb2RlIG1v
ZGUsIElEQkRhdGFiYXNlKiBkYikKK1Bhc3NSZWZQdHI8SURCVHJhbnNhY3Rpb24+IElEQlRyYW5z
YWN0aW9uOjpjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgaW50NjRfdCBp
ZCwgY29uc3QgVmVjdG9yPFN0cmluZz4mIG9iamVjdFN0b3JlTmFtZXMsIEluZGV4ZWREQjo6VHJh
bnNhY3Rpb25Nb2RlIG1vZGUsIElEQkRhdGFiYXNlKiBkYikKIHsKICAgICBJREJPcGVuREJSZXF1
ZXN0KiBvcGVuREJSZXF1ZXN0ID0gMDsKICAgICBSZWZQdHI8SURCVHJhbnNhY3Rpb24+IHRyYW5z
YWN0aW9uKGFkb3B0UmVmKG5ldyBJREJUcmFuc2FjdGlvbihjb250ZXh0LCBpZCwgb2JqZWN0U3Rv
cmVOYW1lcywgbW9kZSwgZGIsIG9wZW5EQlJlcXVlc3QsIElEQkRhdGFiYXNlTWV0YWRhdGEoKSkp
KTsKQEAgLTU0LDcgKzU0LDcgQEAgUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbj4gSURCVHJhbnNh
Y3Rpb246OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXgKIAogUGFzc1JlZlB0
cjxJREJUcmFuc2FjdGlvbj4gSURCVHJhbnNhY3Rpb246OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiBjb250ZXh0LCBpbnQ2NF90IGlkLCBJREJEYXRhYmFzZSogZGIsIElEQk9wZW5EQlJl
cXVlc3QqIG9wZW5EQlJlcXVlc3QsIGNvbnN0IElEQkRhdGFiYXNlTWV0YWRhdGEmIHByZXZpb3Vz
TWV0YWRhdGEpCiB7Ci0gICAgUmVmUHRyPElEQlRyYW5zYWN0aW9uPiB0cmFuc2FjdGlvbihhZG9w
dFJlZihuZXcgSURCVHJhbnNhY3Rpb24oY29udGV4dCwgaWQsIFZlY3RvcjxTdHJpbmc+KCksIFZF
UlNJT05fQ0hBTkdFLCBkYiwgb3BlbkRCUmVxdWVzdCwgcHJldmlvdXNNZXRhZGF0YSkpKTsKKyAg
ICBSZWZQdHI8SURCVHJhbnNhY3Rpb24+IHRyYW5zYWN0aW9uKGFkb3B0UmVmKG5ldyBJREJUcmFu
c2FjdGlvbihjb250ZXh0LCBpZCwgVmVjdG9yPFN0cmluZz4oKSwgSW5kZXhlZERCOjpUcmFuc2Fj
dGlvblZlcnNpb25DaGFuZ2UsIGRiLCBvcGVuREJSZXF1ZXN0LCBwcmV2aW91c01ldGFkYXRhKSkp
OwogICAgIHRyYW5zYWN0aW9uLT5zdXNwZW5kSWZOZWVkZWQoKTsKICAgICByZXR1cm4gdHJhbnNh
Y3Rpb24ucmVsZWFzZSgpOwogfQpAQCAtOTAsNyArOTAsNyBAQCBjb25zdCBBdG9taWNTdHJpbmcm
IElEQlRyYW5zYWN0aW9uOjptb2RlUmVhZFdyaXRlTGVnYWN5KCkKIH0KIAogCi1JREJUcmFuc2Fj
dGlvbjo6SURCVHJhbnNhY3Rpb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgaW50
NjRfdCBpZCwgY29uc3QgVmVjdG9yPFN0cmluZz4mIG9iamVjdFN0b3JlTmFtZXMsIElEQlRyYW5z
YWN0aW9uOjpNb2RlIG1vZGUsIElEQkRhdGFiYXNlKiBkYiwgSURCT3BlbkRCUmVxdWVzdCogb3Bl
bkRCUmVxdWVzdCwgY29uc3QgSURCRGF0YWJhc2VNZXRhZGF0YSYgcHJldmlvdXNNZXRhZGF0YSkK
K0lEQlRyYW5zYWN0aW9uOjpJREJUcmFuc2FjdGlvbihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBj
b250ZXh0LCBpbnQ2NF90IGlkLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgb2JqZWN0U3RvcmVOYW1l
cywgSW5kZXhlZERCOjpUcmFuc2FjdGlvbk1vZGUgbW9kZSwgSURCRGF0YWJhc2UqIGRiLCBJREJP
cGVuREJSZXF1ZXN0KiBvcGVuREJSZXF1ZXN0LCBjb25zdCBJREJEYXRhYmFzZU1ldGFkYXRhJiBw
cmV2aW91c01ldGFkYXRhKQogICAgIDogQWN0aXZlRE9NT2JqZWN0KGNvbnRleHQsIHRoaXMpCiAg
ICAgLCBtX2lkKGlkKQogICAgICwgbV9kYXRhYmFzZShkYikKQEAgLTEwMiw3ICsxMDIsNyBAQCBJ
REJUcmFuc2FjdGlvbjo6SURCVHJhbnNhY3Rpb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29u
dGV4dCwgaW50NjRfdCBpZCwgY29ucwogICAgICwgbV9jb250ZXh0U3RvcHBlZChmYWxzZSkKICAg
ICAsIG1fcHJldmlvdXNNZXRhZGF0YShwcmV2aW91c01ldGFkYXRhKQogewotICAgIGlmIChtb2Rl
ID09IFZFUlNJT05fQ0hBTkdFKSB7CisgICAgaWYgKG1vZGUgPT0gSW5kZXhlZERCOjpUcmFuc2Fj
dGlvblZlcnNpb25DaGFuZ2UpIHsKICAgICAgICAgLy8gTm90IGFjdGl2ZSB1bnRpbCB0aGUgY2Fs
bGJhY2suCiAgICAgICAgIG1fc3RhdGUgPSBJbmFjdGl2ZTsKICAgICB9CkBAIC0zMzYsMzAgKzMz
NiwzMCBAQCBib29sIElEQlRyYW5zYWN0aW9uOjpoYXNQZW5kaW5nQWN0aXZpdHkoKSBjb25zdAog
ICAgIHJldHVybiBtX2hhc1BlbmRpbmdBY3Rpdml0eTsKIH0KIAotSURCVHJhbnNhY3Rpb246Ok1v
ZGUgSURCVHJhbnNhY3Rpb246OnN0cmluZ1RvTW9kZShjb25zdCBTdHJpbmcmIG1vZGVTdHJpbmcs
IFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIEV4Y2VwdGlvbkNvZGUmIGVjKQorSW5k
ZXhlZERCOjpUcmFuc2FjdGlvbk1vZGUgSURCVHJhbnNhY3Rpb246OnN0cmluZ1RvTW9kZShjb25z
dCBTdHJpbmcmIG1vZGVTdHJpbmcsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIEV4
Y2VwdGlvbkNvZGUmIGVjKQogewogICAgIGlmIChtb2RlU3RyaW5nLmlzTnVsbCgpCiAgICAgICAg
IHx8IG1vZGVTdHJpbmcgPT0gSURCVHJhbnNhY3Rpb246Om1vZGVSZWFkT25seSgpKQotICAgICAg
ICByZXR1cm4gSURCVHJhbnNhY3Rpb246OlJFQURfT05MWTsKKyAgICAgICAgcmV0dXJuIEluZGV4
ZWREQjo6VHJhbnNhY3Rpb25SZWFkT25seTsKICAgICBpZiAobW9kZVN0cmluZyA9PSBJREJUcmFu
c2FjdGlvbjo6bW9kZVJlYWRXcml0ZSgpKQotICAgICAgICByZXR1cm4gSURCVHJhbnNhY3Rpb246
OlJFQURfV1JJVEU7CisgICAgICAgIHJldHVybiBJbmRleGVkREI6OlRyYW5zYWN0aW9uUmVhZFdy
aXRlOwogCiAgICAgZWMgPSBUeXBlRXJyb3I7Ci0gICAgcmV0dXJuIElEQlRyYW5zYWN0aW9uOjpS
RUFEX09OTFk7CisgICAgcmV0dXJuIEluZGV4ZWREQjo6VHJhbnNhY3Rpb25SZWFkT25seTsKIH0K
IAotY29uc3QgQXRvbWljU3RyaW5nJiBJREJUcmFuc2FjdGlvbjo6bW9kZVRvU3RyaW5nKElEQlRy
YW5zYWN0aW9uOjpNb2RlIG1vZGUpCitjb25zdCBBdG9taWNTdHJpbmcmIElEQlRyYW5zYWN0aW9u
Ojptb2RlVG9TdHJpbmcoSW5kZXhlZERCOjpUcmFuc2FjdGlvbk1vZGUgbW9kZSkKIHsKICAgICBz
d2l0Y2ggKG1vZGUpIHsKLSAgICBjYXNlIElEQlRyYW5zYWN0aW9uOjpSRUFEX09OTFk6CisgICAg
Y2FzZSBJbmRleGVkREI6OlRyYW5zYWN0aW9uUmVhZE9ubHk6CiAgICAgICAgIHJldHVybiBJREJU
cmFuc2FjdGlvbjo6bW9kZVJlYWRPbmx5KCk7CiAgICAgICAgIGJyZWFrOwogCi0gICAgY2FzZSBJ
REJUcmFuc2FjdGlvbjo6UkVBRF9XUklURToKKyAgICBjYXNlIEluZGV4ZWREQjo6VHJhbnNhY3Rp
b25SZWFkV3JpdGU6CiAgICAgICAgIHJldHVybiBJREJUcmFuc2FjdGlvbjo6bW9kZVJlYWRXcml0
ZSgpOwogICAgICAgICBicmVhazsKIAotICAgIGNhc2UgSURCVHJhbnNhY3Rpb246OlZFUlNJT05f
Q0hBTkdFOgorICAgIGNhc2UgSW5kZXhlZERCOjpUcmFuc2FjdGlvblZlcnNpb25DaGFuZ2U6CiAg
ICAgICAgIHJldHVybiBJREJUcmFuc2FjdGlvbjo6bW9kZVZlcnNpb25DaGFuZ2UoKTsKICAgICAg
ICAgYnJlYWs7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L0lEQlRyYW5zYWN0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJU
cmFuc2FjdGlvbi5oCmluZGV4IDY5NzUwZWI3MzllNjgwN2RiMTE4N2RjMGU2Yzg0NGZjODUwMTJi
MjcuLmY0ZDY0Y2I3ZDEzZmUzNTMyNTZjNmUxNWU3Mjk3OWU1MjU1NzU5NzkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb24uaApAQCAtMzUs
NiArMzUsNyBAQAogI2luY2x1ZGUgIkV2ZW50TmFtZXMuaCIKICNpbmNsdWRlICJFdmVudFRhcmdl
dC5oIgogI2luY2x1ZGUgIklEQk1ldGFkYXRhLmgiCisjaW5jbHVkZSAiSW5kZXhlZERCLmgiCiAj
aW5jbHVkZSAiU2NyaXB0V3JhcHBhYmxlLmgiCiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KICNp
bmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgpAQCAtNTEsMTMgKzUyLDcgQEAgc3RydWN0IElEQk9i
amVjdFN0b3JlTWV0YWRhdGE7CiAKIGNsYXNzIElEQlRyYW5zYWN0aW9uIDogcHVibGljIFNjcmlw
dFdyYXBwYWJsZSwgcHVibGljIFJlZkNvdW50ZWQ8SURCVHJhbnNhY3Rpb24+LCBwdWJsaWMgRXZl
bnRUYXJnZXQsIHB1YmxpYyBBY3RpdmVET01PYmplY3QgewogcHVibGljOgotICAgIGVudW0gTW9k
ZSB7Ci0gICAgICAgIFJFQURfT05MWSA9IDAsCi0gICAgICAgIFJFQURfV1JJVEUgPSAxLAotICAg
ICAgICBWRVJTSU9OX0NIQU5HRSA9IDIKLSAgICB9OwotCi0gICAgc3RhdGljIFBhc3NSZWZQdHI8
SURCVHJhbnNhY3Rpb24+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgaW50NjRfdCwg
Y29uc3QgVmVjdG9yPFN0cmluZz4mIG9iamVjdFN0b3JlTmFtZXMsIE1vZGUsIElEQkRhdGFiYXNl
Kik7CisgICAgc3RhdGljIFBhc3NSZWZQdHI8SURCVHJhbnNhY3Rpb24+IGNyZWF0ZShTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiwgaW50NjRfdCwgY29uc3QgVmVjdG9yPFN0cmluZz4mIG9iamVjdFN0
b3JlTmFtZXMsIEluZGV4ZWREQjo6VHJhbnNhY3Rpb25Nb2RlLCBJREJEYXRhYmFzZSopOwogICAg
IHN0YXRpYyBQYXNzUmVmUHRyPElEQlRyYW5zYWN0aW9uPiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCosIGludDY0X3QsIElEQkRhdGFiYXNlKiwgSURCT3BlbkRCUmVxdWVzdCosIGNvbnN0
IElEQkRhdGFiYXNlTWV0YWRhdGEmIHByZXZpb3VzTWV0YWRhdGEpOwogICAgIHZpcnR1YWwgfklE
QlRyYW5zYWN0aW9uKCk7CiAKQEAgLTY3LDE2ICs2MiwxNiBAQCBwdWJsaWM6CiAgICAgc3RhdGlj
IGNvbnN0IEF0b21pY1N0cmluZyYgbW9kZVJlYWRPbmx5TGVnYWN5KCk7CiAgICAgc3RhdGljIGNv
bnN0IEF0b21pY1N0cmluZyYgbW9kZVJlYWRXcml0ZUxlZ2FjeSgpOwogCi0gICAgc3RhdGljIE1v
ZGUgc3RyaW5nVG9Nb2RlKGNvbnN0IFN0cmluZyYsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBF
eGNlcHRpb25Db2RlJik7Ci0gICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYgbW9kZVRvU3Ry
aW5nKE1vZGUpOworICAgIHN0YXRpYyBJbmRleGVkREI6OlRyYW5zYWN0aW9uTW9kZSBzdHJpbmdU
b01vZGUoY29uc3QgU3RyaW5nJiwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIEV4Y2VwdGlvbkNv
ZGUmKTsKKyAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiBtb2RlVG9TdHJpbmcoSW5kZXhl
ZERCOjpUcmFuc2FjdGlvbk1vZGUpOwogCiAgICAgSURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNl
KiBiYWNrZW5kREIoKSBjb25zdDsKIAogICAgIGludDY0X3QgaWQoKSBjb25zdCB7IHJldHVybiBt
X2lkOyB9CiAgICAgYm9vbCBpc0FjdGl2ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGUgPT0gQWN0
aXZlOyB9CiAgICAgYm9vbCBpc0ZpbmlzaGVkKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0ZSA9PSBG
aW5pc2hlZDsgfQotICAgIGJvb2wgaXNSZWFkT25seSgpIGNvbnN0IHsgcmV0dXJuIG1fbW9kZSA9
PSBSRUFEX09OTFk7IH0KLSAgICBib29sIGlzVmVyc2lvbkNoYW5nZSgpIGNvbnN0IHsgcmV0dXJu
IG1fbW9kZSA9PSBWRVJTSU9OX0NIQU5HRTsgfQorICAgIGJvb2wgaXNSZWFkT25seSgpIGNvbnN0
IHsgcmV0dXJuIG1fbW9kZSA9PSBJbmRleGVkREI6OlRyYW5zYWN0aW9uUmVhZE9ubHk7IH0KKyAg
ICBib29sIGlzVmVyc2lvbkNoYW5nZSgpIGNvbnN0IHsgcmV0dXJuIG1fbW9kZSA9PSBJbmRleGVk
REI6OlRyYW5zYWN0aW9uVmVyc2lvbkNoYW5nZTsgfQogCiAgICAgLy8gSW1wbGVtZW50IHRoZSBJ
REJUcmFuc2FjdGlvbiBJREwKICAgICBjb25zdCBTdHJpbmcmIG1vZGUoKSBjb25zdDsKQEAgLTEy
Niw3ICsxMjEsNyBAQCBwdWJsaWM6CiAgICAgdXNpbmcgUmVmQ291bnRlZDxJREJUcmFuc2FjdGlv
bj46OmRlcmVmOwogCiBwcml2YXRlOgotICAgIElEQlRyYW5zYWN0aW9uKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqLCBpbnQ2NF90LCBjb25zdCBWZWN0b3I8U3RyaW5nPiYsIE1vZGUsIElEQkRhdGFi
YXNlKiwgSURCT3BlbkRCUmVxdWVzdCosIGNvbnN0IElEQkRhdGFiYXNlTWV0YWRhdGEmKTsKKyAg
ICBJREJUcmFuc2FjdGlvbihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgaW50NjRfdCwgY29uc3Qg
VmVjdG9yPFN0cmluZz4mLCBJbmRleGVkREI6OlRyYW5zYWN0aW9uTW9kZSwgSURCRGF0YWJhc2Uq
LCBJREJPcGVuREJSZXF1ZXN0KiwgY29uc3QgSURCRGF0YWJhc2VNZXRhZGF0YSYpOwogCiAgICAg
dm9pZCBlbnF1ZXVlRXZlbnQoUGFzc1JlZlB0cjxFdmVudD4pOwogICAgIHZvaWQgY2xvc2VPcGVu
Q3Vyc29ycygpOwpAQCAtMTUxLDcgKzE0Niw3IEBAIHByaXZhdGU6CiAgICAgUmVmUHRyPElEQkRh
dGFiYXNlPiBtX2RhdGFiYXNlOwogICAgIGNvbnN0IFZlY3RvcjxTdHJpbmc+IG1fb2JqZWN0U3Rv
cmVOYW1lczsKICAgICBJREJPcGVuREJSZXF1ZXN0KiBtX29wZW5EQlJlcXVlc3Q7Ci0gICAgY29u
c3QgTW9kZSBtX21vZGU7CisgICAgY29uc3QgSW5kZXhlZERCOjpUcmFuc2FjdGlvbk1vZGUgbV9t
b2RlOwogICAgIFN0YXRlIG1fc3RhdGU7CiAgICAgYm9vbCBtX2hhc1BlbmRpbmdBY3Rpdml0eTsK
ICAgICBib29sIG1fY29udGV4dFN0b3BwZWQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uQmFja2VuZEltcGwuY3BwCmlu
ZGV4IDdmZTgzYjIzZDJlY2JmZjc2MDJlMzJiNGViMTllZDFiYWM4NmFlNmYuLjY1NjI1NTc3MDYx
MTJmMzkxNjAyY2Y1MGY2OTI3ZWJkZTQ4OWM4YzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uQmFja2VuZEltcGwuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uQmFja2VuZEltcGwu
Y3BwCkBAIC0zMSwxMyArMzEsMTQgQEAKICNpbmNsdWRlICJJREJCYWNraW5nU3RvcmUuaCIKICNp
bmNsdWRlICJJREJDdXJzb3JCYWNrZW5kSW1wbC5oIgogI2luY2x1ZGUgIklEQkRhdGFiYXNlQmFj
a2VuZEltcGwuaCIKKyNpbmNsdWRlICJJREJEYXRhYmFzZUNhbGxiYWNrcy5oIgogI2luY2x1ZGUg
IklEQkRhdGFiYXNlRXhjZXB0aW9uLmgiCiAjaW5jbHVkZSAiSURCVHJhY2luZy5oIgogI2luY2x1
ZGUgIklEQlRyYW5zYWN0aW9uQ29vcmRpbmF0b3IuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
Ci1QYXNzUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGw+IElEQlRyYW5zYWN0aW9uQmFj
a2VuZEltcGw6OmNyZWF0ZShpbnQ2NF90IGlkLCBQYXNzUmVmUHRyPElEQkRhdGFiYXNlQ2FsbGJh
Y2tzPiBjYWxsYmFja3MsIGNvbnN0IFZlY3RvcjxpbnQ2NF90PiYgb2JqZWN0U3RvcmVJZHMsIElE
QlRyYW5zYWN0aW9uOjpNb2RlIG1vZGUsIElEQkRhdGFiYXNlQmFja2VuZEltcGwqIGRhdGFiYXNl
KQorUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsPiBJREJUcmFuc2FjdGlvbkJh
Y2tlbmRJbXBsOjpjcmVhdGUoaW50NjRfdCBpZCwgUGFzc1JlZlB0cjxJREJEYXRhYmFzZUNhbGxi
YWNrcz4gY2FsbGJhY2tzLCBjb25zdCBWZWN0b3I8aW50NjRfdD4mIG9iamVjdFN0b3JlSWRzLCBJ
bmRleGVkREI6OlRyYW5zYWN0aW9uTW9kZSBtb2RlLCBJREJEYXRhYmFzZUJhY2tlbmRJbXBsKiBk
YXRhYmFzZSkKIHsKICAgICBIYXNoU2V0PGludDY0X3Q+IG9iamVjdFN0b3JlSGFzaFNldDsKICAg
ICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG9iamVjdFN0b3JlSWRzLnNpemUoKTsgKytpKQpAQCAt
NDYsNyArNDcsNyBAQCBQYXNzUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGw+IElEQlRy
YW5zYWN0aW9uQmFja2VuZEltcGw6OmNyZWF0ZShpbnQ2NF90CiAgICAgcmV0dXJuIGFkb3B0UmVm
KG5ldyBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsKGlkLCBjYWxsYmFja3MsIG9iamVjdFN0b3Jl
SGFzaFNldCwgbW9kZSwgZGF0YWJhc2UpKTsKIH0KIAotSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1w
bDo6SURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbChpbnQ2NF90IGlkLCBQYXNzUmVmUHRyPElEQkRh
dGFiYXNlQ2FsbGJhY2tzPiBjYWxsYmFja3MsIGNvbnN0IEhhc2hTZXQ8aW50NjRfdD4mIG9iamVj
dFN0b3JlSWRzLCBJREJUcmFuc2FjdGlvbjo6TW9kZSBtb2RlLCBJREJEYXRhYmFzZUJhY2tlbmRJ
bXBsKiBkYXRhYmFzZSkKK0lEQlRyYW5zYWN0aW9uQmFja2VuZEltcGw6OklEQlRyYW5zYWN0aW9u
QmFja2VuZEltcGwoaW50NjRfdCBpZCwgUGFzc1JlZlB0cjxJREJEYXRhYmFzZUNhbGxiYWNrcz4g
Y2FsbGJhY2tzLCBjb25zdCBIYXNoU2V0PGludDY0X3Q+JiBvYmplY3RTdG9yZUlkcywgSW5kZXhl
ZERCOjpUcmFuc2FjdGlvbk1vZGUgbW9kZSwgSURCRGF0YWJhc2VCYWNrZW5kSW1wbCogZGF0YWJh
c2UpCiAgICAgOiBtX2lkKGlkKQogICAgICwgbV9vYmplY3RTdG9yZUlkcyhvYmplY3RTdG9yZUlk
cykKICAgICAsIG1fbW9kZShtb2RlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbC5oIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbC5oCmluZGV4IDNjZWY5
NzYyYWUxMDI3ZTg4ODRlOTgyNmY0NzkxZjYzNjRhMzRiMDYuLmU2MThmYTA2ODhhOWMwZGRjOWY5
YTFhNzhjZGQ5MmJmZjI4MTFlYjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uQmFja2VuZEltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsLmgKQEAgLTMxLDcg
KzMxLDYgQEAKICNpbmNsdWRlICJJREJCYWNraW5nU3RvcmUuaCIKICNpbmNsdWRlICJJREJEYXRh
YmFzZUJhY2tlbmRJbnRlcmZhY2UuaCIKICNpbmNsdWRlICJJREJEYXRhYmFzZUVycm9yLmgiCi0j
aW5jbHVkZSAiSURCVHJhbnNhY3Rpb24uaCIKICNpbmNsdWRlICJUaW1lci5oIgogI2luY2x1ZGUg
PHd0Zi9EZXF1ZS5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CkBAIC00NSw3ICs0NCw3IEBA
IGNsYXNzIElEQkRhdGFiYXNlQ2FsbGJhY2tzOwogCiBjbGFzcyBJREJUcmFuc2FjdGlvbkJhY2tl
bmRJbXBsIDogcHVibGljIFJlZkNvdW50ZWQ8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbD4gewog
cHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGw+
IGNyZWF0ZShpbnQ2NF90IHRyYW5zYWN0aW9uSWQsIFBhc3NSZWZQdHI8SURCRGF0YWJhc2VDYWxs
YmFja3M+LCBjb25zdCBWZWN0b3I8aW50NjRfdD4mLCBJREJUcmFuc2FjdGlvbjo6TW9kZSwgSURC
RGF0YWJhc2VCYWNrZW5kSW1wbCopOworICAgIHN0YXRpYyBQYXNzUmVmUHRyPElEQlRyYW5zYWN0
aW9uQmFja2VuZEltcGw+IGNyZWF0ZShpbnQ2NF90IHRyYW5zYWN0aW9uSWQsIFBhc3NSZWZQdHI8
SURCRGF0YWJhc2VDYWxsYmFja3M+LCBjb25zdCBWZWN0b3I8aW50NjRfdD4mLCBJbmRleGVkREI6
OlRyYW5zYWN0aW9uTW9kZSwgSURCRGF0YWJhc2VCYWNrZW5kSW1wbCopOwogICAgIHZpcnR1YWwg
fklEQlRyYW5zYWN0aW9uQmFja2VuZEltcGwoKTsKIAogICAgIHZpcnR1YWwgdm9pZCBhYm9ydCgp
OwpAQCAtNTksNyArNTgsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGFib3J0KFBhc3NSZWZQdHI8
SURCRGF0YWJhc2VFcnJvcj4pOwogICAgIHZvaWQgcnVuKCk7Ci0gICAgSURCVHJhbnNhY3Rpb246
Ok1vZGUgbW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fbW9kZTsgfQorICAgIEluZGV4ZWREQjo6VHJh
bnNhY3Rpb25Nb2RlIG1vZGUoKSBjb25zdCB7IHJldHVybiBtX21vZGU7IH0KICAgICBjb25zdCBI
YXNoU2V0PGludDY0X3Q+JiBzY29wZSgpIGNvbnN0IHsgcmV0dXJuIG1fb2JqZWN0U3RvcmVJZHM7
IH0KICAgICB2b2lkIHNjaGVkdWxlVGFzayhQYXNzT3duUHRyPE9wZXJhdGlvbj4gdGFzaywgUGFz
c093blB0cjxPcGVyYXRpb24+IGFib3J0VGFzayA9IG51bGxwdHIpIHsgc2NoZWR1bGVUYXNrKElE
QkRhdGFiYXNlQmFja2VuZEludGVyZmFjZTo6Tm9ybWFsVGFzaywgdGFzaywgYWJvcnRUYXNrKTsg
fQogICAgIHZvaWQgc2NoZWR1bGVUYXNrKElEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZTo6VGFz
a1R5cGUsIFBhc3NPd25QdHI8T3BlcmF0aW9uPiwgUGFzc093blB0cjxPcGVyYXRpb24+IGFib3J0
VGFzayA9IG51bGxwdHIpOwpAQCAtNzMsNyArNzIsNyBAQCBwdWJsaWM6CiAgICAgSURCRGF0YWJh
c2VCYWNrZW5kSW1wbCogZGF0YWJhc2UoKSBjb25zdCB7IHJldHVybiBtX2RhdGFiYXNlLmdldCgp
OyB9CiAKIHByaXZhdGU6Ci0gICAgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbChpbnQ2NF90IGlk
LCBQYXNzUmVmUHRyPElEQkRhdGFiYXNlQ2FsbGJhY2tzPiwgY29uc3QgSGFzaFNldDxpbnQ2NF90
PiYgb2JqZWN0U3RvcmVJZHMsIElEQlRyYW5zYWN0aW9uOjpNb2RlLCBJREJEYXRhYmFzZUJhY2tl
bmRJbXBsKik7CisgICAgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbChpbnQ2NF90IGlkLCBQYXNz
UmVmUHRyPElEQkRhdGFiYXNlQ2FsbGJhY2tzPiwgY29uc3QgSGFzaFNldDxpbnQ2NF90PiYgb2Jq
ZWN0U3RvcmVJZHMsIEluZGV4ZWREQjo6VHJhbnNhY3Rpb25Nb2RlLCBJREJEYXRhYmFzZUJhY2tl
bmRJbXBsKik7CiAKICAgICBlbnVtIFN0YXRlIHsKICAgICAgICAgVW51c2VkLCAvLyBDcmVhdGVk
LCBidXQgbm8gdGFza3MgeWV0LgpAQCAtOTIsNyArOTEsNyBAQCBwcml2YXRlOgogCiAgICAgY29u
c3QgaW50NjRfdCBtX2lkOwogICAgIGNvbnN0IEhhc2hTZXQ8aW50NjRfdD4gbV9vYmplY3RTdG9y
ZUlkczsKLSAgICBjb25zdCBJREJUcmFuc2FjdGlvbjo6TW9kZSBtX21vZGU7CisgICAgY29uc3Qg
SW5kZXhlZERCOjpUcmFuc2FjdGlvbk1vZGUgbV9tb2RlOwogCiAgICAgU3RhdGUgbV9zdGF0ZTsK
ICAgICBib29sIG1fY29tbWl0UGVuZGluZzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uQ29vcmRpbmF0b3IuY3BwIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb25Db29yZGluYXRvci5jcHAKaW5k
ZXggMGJiNWFjYTk1YTA4YzVjNTE2YTM2NTEzMjU0NWI4ZTQ2OTdkNTBlZi4uYTZmY2Q4ZWEzZTZl
MWQ4MmUxYjkyODkwYWRlNTRmZDc1ZWVlODcxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb25Db29yZGluYXRvci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb25Db29yZGluYXRvci5j
cHAKQEAgLTI5LDcgKzI5LDYgQEAKICNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKIAogI2lu
Y2x1ZGUgIklEQkRhdGFiYXNlQmFja2VuZEltcGwuaCIKLSNpbmNsdWRlICJJREJUcmFuc2FjdGlv
bi5oIgogI2luY2x1ZGUgIklEQlRyYW5zYWN0aW9uQmFja2VuZEltcGwuaCIKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewpAQCAtOTcsNyArOTYsNyBAQCB2b2lkIElEQlRyYW5zYWN0aW9uQ29vcmRpbmF0
b3I6OnByb2Nlc3NTdGFydGVkVHJhbnNhY3Rpb25zKCkKICAgICBpZiAobV9xdWV1ZWRUcmFuc2Fj
dGlvbnMuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBBU1NFUlQobV9zdGFydGVk
VHJhbnNhY3Rpb25zLmlzRW1wdHkoKSB8fCAoKm1fc3RhcnRlZFRyYW5zYWN0aW9ucy5iZWdpbigp
KS0+bW9kZSgpICE9IElEQlRyYW5zYWN0aW9uOjpWRVJTSU9OX0NIQU5HRSk7CisgICAgQVNTRVJU
KG1fc3RhcnRlZFRyYW5zYWN0aW9ucy5pc0VtcHR5KCkgfHwgKCptX3N0YXJ0ZWRUcmFuc2FjdGlv
bnMuYmVnaW4oKSktPm1vZGUoKSAhPSBJbmRleGVkREI6OlRyYW5zYWN0aW9uVmVyc2lvbkNoYW5n
ZSk7CiAKICAgICBMaXN0SGFzaFNldDxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsKj46OmNvbnN0
X2l0ZXJhdG9yIGl0ID0gbV9xdWV1ZWRUcmFuc2FjdGlvbnMuYmVnaW4oKTsKICAgICB3aGlsZSAo
aXQgIT0gbV9xdWV1ZWRUcmFuc2FjdGlvbnMuZW5kKCkpIHsKQEAgLTEyNCwyMiArMTIzLDIyIEBA
IGJvb2wgSURCVHJhbnNhY3Rpb25Db29yZGluYXRvcjo6Y2FuUnVuVHJhbnNhY3Rpb24oSURCVHJh
bnNhY3Rpb25CYWNrZW5kSW1wbCogdHJhCiB7CiAgICAgQVNTRVJUKG1fcXVldWVkVHJhbnNhY3Rp
b25zLmNvbnRhaW5zKHRyYW5zYWN0aW9uKSk7CiAgICAgc3dpdGNoICh0cmFuc2FjdGlvbi0+bW9k
ZSgpKSB7Ci0gICAgY2FzZSBJREJUcmFuc2FjdGlvbjo6VkVSU0lPTl9DSEFOR0U6CisgICAgY2Fz
ZSBJbmRleGVkREI6OlRyYW5zYWN0aW9uVmVyc2lvbkNoYW5nZToKICAgICAgICAgQVNTRVJUKG1f
cXVldWVkVHJhbnNhY3Rpb25zLnNpemUoKSA9PSAxKTsKICAgICAgICAgQVNTRVJUKG1fc3RhcnRl
ZFRyYW5zYWN0aW9ucy5pc0VtcHR5KCkpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAgIGNh
c2UgSURCVHJhbnNhY3Rpb246OlJFQURfT05MWToKKyAgICBjYXNlIEluZGV4ZWREQjo6VHJhbnNh
Y3Rpb25SZWFkT25seToKICAgICAgICAgcmV0dXJuIHRydWU7CiAKLSAgICBjYXNlIElEQlRyYW5z
YWN0aW9uOjpSRUFEX1dSSVRFOgorICAgIGNhc2UgSW5kZXhlZERCOjpUcmFuc2FjdGlvblJlYWRX
cml0ZToKICAgICAgICAgZm9yIChIYXNoU2V0PElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGwqPjo6
Y29uc3RfaXRlcmF0b3IgaXQgPSBtX3N0YXJ0ZWRUcmFuc2FjdGlvbnMuYmVnaW4oKTsgaXQgIT0g
bV9zdGFydGVkVHJhbnNhY3Rpb25zLmVuZCgpOyArK2l0KSB7Ci0gICAgICAgICAgICBpZiAoKCpp
dCktPm1vZGUoKSA9PSBJREJUcmFuc2FjdGlvbjo6UkVBRF9XUklURSAmJiBkb1Njb3Blc092ZXJs
YXAodHJhbnNhY3Rpb24tPnNjb3BlKCksICgqaXQpLT5zY29wZSgpKSkKKyAgICAgICAgICAgIGlm
ICgoKml0KS0+bW9kZSgpID09IEluZGV4ZWREQjo6VHJhbnNhY3Rpb25SZWFkV3JpdGUgJiYgZG9T
Y29wZXNPdmVybGFwKHRyYW5zYWN0aW9uLT5zY29wZSgpLCAoKml0KS0+c2NvcGUoKSkpCiAgICAg
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAgICAgICAgIGZvciAoTGlzdEhh
c2hTZXQ8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbCo+Ojpjb25zdF9pdGVyYXRvciBpdCA9IG1f
cXVldWVkVHJhbnNhY3Rpb25zLmJlZ2luKCk7ICppdCAhPSB0cmFuc2FjdGlvbjsgKytpdCkgewog
ICAgICAgICAgICAgQVNTRVJUKGl0ICE9IG1fcXVldWVkVHJhbnNhY3Rpb25zLmVuZCgpKTsKLSAg
ICAgICAgICAgIGlmICgoKml0KS0+bW9kZSgpID09IElEQlRyYW5zYWN0aW9uOjpSRUFEX1dSSVRF
ICYmIGRvU2NvcGVzT3ZlcmxhcCh0cmFuc2FjdGlvbi0+c2NvcGUoKSwgKCppdCktPnNjb3BlKCkp
KQorICAgICAgICAgICAgaWYgKCgqaXQpLT5tb2RlKCkgPT0gSW5kZXhlZERCOjpUcmFuc2FjdGlv
blJlYWRXcml0ZSAmJiBkb1Njb3Blc092ZXJsYXAodHJhbnNhY3Rpb24tPnNjb3BlKCksICgqaXQp
LT5zY29wZSgpKSkKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KICAg
ICAgICAgcmV0dXJuIHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9JbmRleGVkREIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lu
ZGV4ZWREQi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjkzMjM4MTgzOTU2YWFlZjAzZDg5MWUyNDdjMTAzMTZjYTdh
MzU0ZmQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9JbmRleGVkREIuaApAQCAtMCwwICsxLDU5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEx
IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9S
UyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUK
KyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBJbmRleGVkREJf
aAorI2RlZmluZSBJbmRleGVkREJfaAorCisjaWYgRU5BQkxFKElOREVYRURfREFUQUJBU0UpCisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKworbmFtZXNwYWNlIEluZGV4ZWREQiB7CisKK2VudW0gVHJh
bnNhY3Rpb25Nb2RlIHsKKyAgICBUcmFuc2FjdGlvblJlYWRPbmx5ID0gMCwKKyAgICBUcmFuc2Fj
dGlvblJlYWRXcml0ZSA9IDEsCisgICAgVHJhbnNhY3Rpb25WZXJzaW9uQ2hhbmdlID0gMgorfTsK
KworZW51bSBDdXJzb3JEaXJlY3Rpb24geworICAgIEN1cnNvck5leHQgPSAwLAorICAgIEN1cnNv
ck5leHROb0R1cGxpY2F0ZSA9IDEsCisgICAgQ3Vyc29yUHJldiA9IDIsCisgICAgQ3Vyc29yUHJl
dk5vRHVwbGljYXRlID0gMywKK307CisKK2VudW0gQ3Vyc29yVHlwZSB7CisgICAgQ3Vyc29yS2V5
QW5kVmFsdWUgPSAwLAorICAgIEN1cnNvcktleU9ubHkKK307CisKK30gLy8gbmFtZXNwYWNlIElu
ZGV4ZWREQgorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEVEKElO
REVYRURfREFUQUJBU0UpCisKKyNlbmRpZiAvLyBJbmRleGVkREJfaApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvVGFyZ2V0LnByaSBiL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkKaW5kZXgg
Y2EyNGI2NjA0NDZhMzBmYzNmMjc3N2U0ODM4N2Q1ZTg4OTY3MDMyYi4uOGRkOWFjYjEwYTU2N2Jk
MjZiYTkyM2ZmZjEyMzM1NmIxYWRjM2Y3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvVGFy
Z2V0LnByaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCkBAIC0zMTA3LDggKzMxMDcs
OCBAQCBlbmFibGU/KElOREVYRURfREFUQUJBU0UpIHsKICAgICAgICAgTW9kdWxlcy9pbmRleGVk
ZGIvSURCRGF0YWJhc2VFeGNlcHRpb24uaCBcCiAgICAgICAgIE1vZHVsZXMvaW5kZXhlZGRiL0lE
QkV2ZW50RGlzcGF0Y2hlci5oIFwKICAgICAgICAgTW9kdWxlcy9pbmRleGVkZGIvSURCRmFjdG9y
eS5oIFwKLSAgICAgICAgTW9kdWxlcy9pbmRleGVkZGIvSURCRmFjdG9yeUJhY2tlbmRJbnRlcmZh
Y2UuaCBcCiAgICAgICAgIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkZhY3RvcnlCYWNrZW5kSW1wbC5o
IFwKKyAgICAgICAgTW9kdWxlcy9pbmRleGVkZGIvSURCRmFjdG9yeUJhY2tlbmRJbnRlcmZhY2Uu
aCBcCiAgICAgICAgIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkhpc3RvZ3JhbXMuaCBcCiAgICAgICAg
IE1vZHVsZXMvaW5kZXhlZGRiL0lEQkluZGV4LmggXAogICAgICAgICBNb2R1bGVzL2luZGV4ZWRk
Yi9JREJLZXkuaCBcCkBAIC0zMTE2LDcgKzMxMTYsOCBAQCBlbmFibGU/KElOREVYRURfREFUQUJB
U0UpIHsKICAgICAgICAgTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmUuaCBcCiAgICAg
ICAgIE1vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlQmFja2VuZEltcGwuaCBcCiAgICAg
ICAgIE1vZHVsZXMvaW5kZXhlZGRiL0lEQlJlcXVlc3QuaCBcCi0gICAgICAgIE1vZHVsZXMvaW5k
ZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmgKKyAgICAgICAgTW9kdWxlcy9pbmRleGVkZGIvSURCVHJh
bnNhY3Rpb24uaCBcCisgICAgICAgIE1vZHVsZXMvaW5kZXhlZGRiL0luZGV4ZWREQi5oCiAKICAg
ICBTT1VSQ0VTICs9IFwKICAgICAgICAgYmluZGluZ3MvanMvSURCQmluZGluZ1V0aWxpdGllcy5j
cHAgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpIGIvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS5neXBpCmluZGV4IGViNGZhYjk5OTMwMDAzYjVjNGRjYTUyNDZhYTQ0NzQw
M2Y1MDg3ZTcuLjIwNWM3ODFiZmJjZTg5MmUzYjRhY2Y5NjllMTIxZTA4ZDhkNTcyMTYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLmd5cGkKQEAgLTcxMSw2ICs3MTEsNyBAQAogICAgICAgICAgICAgJ01vZHVsZXMvaW5k
ZXhlZGRiL0RPTVdpbmRvd0luZGV4ZWREYXRhYmFzZS5oJywKICAgICAgICAgICAgICdNb2R1bGVz
L2luZGV4ZWRkYi9JREJBbnkuY3BwJywKICAgICAgICAgICAgICdNb2R1bGVzL2luZGV4ZWRkYi9J
REJBbnkuaCcsCisgICAgICAgICAgICAnTW9kdWxlcy9pbmRleGVkZGIvSURCQmFja2luZ1N0b3Jl
LmNwcCcsCiAgICAgICAgICAgICAnTW9kdWxlcy9pbmRleGVkZGIvSURCQmFja2luZ1N0b3JlLmgn
LAogICAgICAgICAgICAgJ01vZHVsZXMvaW5kZXhlZGRiL0lEQkNhbGxiYWNrcy5oJywKICAgICAg
ICAgICAgICdNb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3IuY3BwJywKQEAgLTc1MSw3ICs3NTIs
NiBAQAogICAgICAgICAgICAgJ01vZHVsZXMvaW5kZXhlZGRiL0lEQktleVJhbmdlLmgnLAogICAg
ICAgICAgICAgJ01vZHVsZXMvaW5kZXhlZGRiL0lEQkxldmVsREJDb2RpbmcuY3BwJywKICAgICAg
ICAgICAgICdNb2R1bGVzL2luZGV4ZWRkYi9JREJMZXZlbERCQ29kaW5nLmgnLAotICAgICAgICAg
ICAgJ01vZHVsZXMvaW5kZXhlZGRiL0lEQkJhY2tpbmdTdG9yZS5jcHAnLAogICAgICAgICAgICAg
J01vZHVsZXMvaW5kZXhlZGRiL0lEQk1ldGFkYXRhLmgnLAogICAgICAgICAgICAgJ01vZHVsZXMv
aW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlLmNwcCcsCiAgICAgICAgICAgICAnTW9kdWxlcy9pbmRl
eGVkZGIvSURCT2JqZWN0U3RvcmUuaCcsCkBAIC03NzIsNiArNzcyLDcgQEAKICAgICAgICAgICAg
ICdNb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbkNvb3JkaW5hdG9yLmgnLAogICAgICAg
ICAgICAgJ01vZHVsZXMvaW5kZXhlZGRiL0lEQlZlcnNpb25DaGFuZ2VFdmVudC5jcHAnLAogICAg
ICAgICAgICAgJ01vZHVsZXMvaW5kZXhlZGRiL0lEQlZlcnNpb25DaGFuZ2VFdmVudC5oJywKKyAg
ICAgICAgICAgICdNb2R1bGVzL2luZGV4ZWRkYi9JbmRleGVkREIuaCIKICAgICAgICAgICAgICdN
b2R1bGVzL2luZGV4ZWRkYi9QYWdlR3JvdXBJbmRleGVkRGF0YWJhc2UuY3BwJywKICAgICAgICAg
ICAgICdNb2R1bGVzL2luZGV4ZWRkYi9QYWdlR3JvdXBJbmRleGVkRGF0YWJhc2UuaCcsCiAgICAg
ICAgICAgICAnTW9kdWxlcy9pbmRleGVkZGIvV29ya2VyQ29udGV4dEluZGV4ZWREYXRhYmFzZS5j
cHAnLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvQXNzZXJ0TWF0Y2hp
bmdFbnVtcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9Bc3NlcnRNYXRjaGluZ0Vu
dW1zLmNwcAppbmRleCA4YWQwODQ0NDJjZjEyYjA5ZTE0MmRlODEzYTQzNTJjMWY0MDc4ZDFlLi4w
YjBlNDQ4ZDkzNjYwYjQzMzU4MGViYjY1NGFjN2YzNDA1Y2NkNTY3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9Bc3NlcnRNYXRjaGluZ0VudW1zLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9Bc3NlcnRNYXRjaGluZ0VudW1zLmNwcApAQCAtNTA0LDEw
ICs1MDQsMTAgQEAgQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShXZWJJREJLZXlQYXRoOjpB
cnJheVR5cGUsIElEQktleVBhdGg6OkFycmF5VHlwZSk7CiAKIENPTVBJTEVfQVNTRVJUX01BVENI
SU5HX0VOVU0oV2ViSURCTWV0YWRhdGE6Ok5vSW50VmVyc2lvbiwgSURCRGF0YWJhc2VNZXRhZGF0
YTo6Tm9JbnRWZXJzaW9uKTsKIAotQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShXZWJJREJD
dXJzb3I6Ok5leHQsIElEQkN1cnNvcjo6TkVYVCk7Ci1DT01QSUxFX0FTU0VSVF9NQVRDSElOR19F
TlVNKFdlYklEQkN1cnNvcjo6TmV4dE5vRHVwbGljYXRlLCBJREJDdXJzb3I6Ok5FWFRfTk9fRFVQ
TElDQVRFKTsKLUNPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oV2ViSURCQ3Vyc29yOjpQcmV2
LCBJREJDdXJzb3I6OlBSRVYpOwotQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShXZWJJREJD
dXJzb3I6OlByZXZOb0R1cGxpY2F0ZSwgSURCQ3Vyc29yOjpQUkVWX05PX0RVUExJQ0FURSk7CitD
T01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKFdlYklEQkN1cnNvcjo6TmV4dCwgSW5kZXhlZERC
OjpDdXJzb3JOZXh0KTsKK0NPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oV2ViSURCQ3Vyc29y
OjpOZXh0Tm9EdXBsaWNhdGUsIEluZGV4ZWREQjo6Q3Vyc29yTmV4dE5vRHVwbGljYXRlKTsKK0NP
TVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oV2ViSURCQ3Vyc29yOjpQcmV2LCBJbmRleGVkREI6
OkN1cnNvclByZXYpOworQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShXZWJJREJDdXJzb3I6
OlByZXZOb0R1cGxpY2F0ZSwgSW5kZXhlZERCOjpDdXJzb3JQcmV2Tm9EdXBsaWNhdGUpOwogCiBD
T01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKFdlYklEQkRhdGFiYXNlOjpQcmVlbXB0aXZlVGFz
aywgSURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlOjpQcmVlbXB0aXZlVGFzayk7CiBDT01QSUxF
X0FTU0VSVF9NQVRDSElOR19FTlVNKFdlYklEQkRhdGFiYXNlOjpOb3JtYWxUYXNrLCBJREJEYXRh
YmFzZUJhY2tlbmRJbnRlcmZhY2U6Ok5vcm1hbFRhc2spOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvSURCRGF0YWJhc2VCYWNrZW5kUHJveHkuY3BwIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvSURCRGF0YWJhc2VCYWNrZW5kUHJveHkuY3BwCmluZGV4IDM1NWQ4
MDg5ZWVjYzZkM2M0NGJkOGNiYTA0MTExZjI2ZWZmMTkzNGYuLjJjMmE1ZTdlOWZkNTY0MmE1OTcy
MDQ4YjI5YTZjMDJhN2JlMGRiYjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL0lEQkRhdGFiYXNlQmFja2VuZFByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9JREJEYXRhYmFzZUJhY2tlbmRQcm94eS5jcHAKQEAgLTkzLDcgKzkzLDcgQEAgdm9p
ZCBJREJEYXRhYmFzZUJhY2tlbmRQcm94eTo6YWJvcnQoaW50NjRfdCB0cmFuc2FjdGlvbklkLCBQ
YXNzUmVmUHRyPElEQkRhdGFiYXMKICAgICBtX3dlYklEQkRhdGFiYXNlLT5hYm9ydCh0cmFuc2Fj
dGlvbklkLCBlcnJvcik7CiB9CiAKLXZvaWQgSURCRGF0YWJhc2VCYWNrZW5kUHJveHk6Om9wZW5D
dXJzb3IoaW50NjRfdCB0cmFuc2FjdGlvbklkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGludDY0
X3QgaW5kZXhJZCwgUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4ga2V5UmFuZ2UsIHVuc2lnbmVkIHNo
b3J0IGRpcmVjdGlvbiwgYm9vbCBrZXlPbmx5LCBUYXNrVHlwZSB0YXNrVHlwZSwgUGFzc1JlZlB0
cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcykKK3ZvaWQgSURCRGF0YWJhc2VCYWNrZW5kUHJveHk6
Om9wZW5DdXJzb3IoaW50NjRfdCB0cmFuc2FjdGlvbklkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQs
IGludDY0X3QgaW5kZXhJZCwgUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4ga2V5UmFuZ2UsIEluZGV4
ZWREQjo6Q3Vyc29yRGlyZWN0aW9uIGRpcmVjdGlvbiwgYm9vbCBrZXlPbmx5LCBUYXNrVHlwZSB0
YXNrVHlwZSwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcykKIHsKICAgICBtX3dl
YklEQkRhdGFiYXNlLT5vcGVuQ3Vyc29yKHRyYW5zYWN0aW9uSWQsIG9iamVjdFN0b3JlSWQsIGlu
ZGV4SWQsIGtleVJhbmdlLCBzdGF0aWNfY2FzdDxXZWJJREJDdXJzb3I6OkRpcmVjdGlvbj4oZGly
ZWN0aW9uKSwga2V5T25seSwgc3RhdGljX2Nhc3Q8V2ViSURCRGF0YWJhc2U6OlRhc2tUeXBlPih0
YXNrVHlwZSksIG5ldyBXZWJJREJDYWxsYmFja3NJbXBsKGNhbGxiYWNrcykpOwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCRGF0YWJhc2VCYWNrZW5kUHJveHku
aCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkRhdGFiYXNlQmFja2VuZFByb3h5LmgK
aW5kZXggZGJkOTY0MmYxMTIwZDk5OGRhZjk3Y2I1ZmE5YTUyMGJiZDVkNmQ1MS4uNWQ1ZDkwOGY5
OGJlM2FhODVjMjVkNjM0YzVmYjEwNDJlZWIyZjc4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvSURCRGF0YWJhc2VCYWNrZW5kUHJveHkuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9JREJEYXRhYmFzZUJhY2tlbmRQcm94eS5oCkBAIC01NSw3ICs1NSw3
IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgcHV0KGludDY0X3QgdHJhbnNhY3Rpb25JZCwg
aW50NjRfdCBvYmplY3RTdG9yZUlkLCBQYXNzUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4g
dmFsdWUsIFBhc3NSZWZQdHI8V2ViQ29yZTo6SURCS2V5PiwgUHV0TW9kZSwgUGFzc1JlZlB0cjxX
ZWJDb3JlOjpJREJDYWxsYmFja3M+LCBjb25zdCBWZWN0b3I8aW50NjRfdD4mIGluZGV4SWRzLCBj
b25zdCBWZWN0b3I8SW5kZXhLZXlzPiYpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBzZXRJ
bmRleEtleXMoaW50NjRfdCB0cmFuc2FjdGlvbklkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIFBh
c3NSZWZQdHI8V2ViQ29yZTo6SURCS2V5PiBwcnBQcmltYXJ5S2V5LCBjb25zdCBWZWN0b3I8aW50
NjRfdD4mIGluZGV4SWRzLCBjb25zdCBWZWN0b3I8SW5kZXhLZXlzPiYpIE9WRVJSSURFOwogICAg
IHZpcnR1YWwgdm9pZCBzZXRJbmRleGVzUmVhZHkoaW50NjRfdCB0cmFuc2FjdGlvbklkLCBpbnQ2
NF90IG9iamVjdFN0b3JlSWQsIGNvbnN0IFZlY3RvcjxpbnQ2NF90PiYgaW5kZXhJZHMpIE9WRVJS
SURFOwotICAgIHZpcnR1YWwgdm9pZCBvcGVuQ3Vyc29yKGludDY0X3QgdHJhbnNhY3Rpb25JZCwg
aW50NjRfdCBvYmplY3RTdG9yZUlkLCBpbnQ2NF90IGluZGV4SWQsIFBhc3NSZWZQdHI8V2ViQ29y
ZTo6SURCS2V5UmFuZ2U+LCB1bnNpZ25lZCBzaG9ydCBkaXJlY3Rpb24sIGJvb2wga2V5T25seSwg
VGFza1R5cGUsIFBhc3NSZWZQdHI8V2ViQ29yZTo6SURCQ2FsbGJhY2tzPikgT1ZFUlJJREU7Cisg
ICAgdmlydHVhbCB2b2lkIG9wZW5DdXJzb3IoaW50NjRfdCB0cmFuc2FjdGlvbklkLCBpbnQ2NF90
IG9iamVjdFN0b3JlSWQsIGludDY0X3QgaW5kZXhJZCwgUGFzc1JlZlB0cjxXZWJDb3JlOjpJREJL
ZXlSYW5nZT4sIFdlYkNvcmU6OkluZGV4ZWREQjo6Q3Vyc29yRGlyZWN0aW9uLCBib29sIGtleU9u
bHksIFRhc2tUeXBlLCBQYXNzUmVmUHRyPFdlYkNvcmU6OklEQkNhbGxiYWNrcz4pIE9WRVJSSURF
OwogICAgIHZpcnR1YWwgdm9pZCBjb3VudChpbnQ2NF90IHRyYW5zYWN0aW9uSWQsIGludDY0X3Qg
b2JqZWN0U3RvcmVJZCwgaW50NjRfdCBpbmRleElkLCBQYXNzUmVmUHRyPFdlYkNvcmU6OklEQktl
eVJhbmdlPiwgUGFzc1JlZlB0cjxXZWJDb3JlOjpJREJDYWxsYmFja3M+KSBPVkVSUklERTsKICAg
ICB2aXJ0dWFsIHZvaWQgZGVsZXRlUmFuZ2UoaW50NjRfdCB0cmFuc2FjdGlvbklkLCBpbnQ2NF90
IG9iamVjdFN0b3JlSWQsIFBhc3NSZWZQdHI8V2ViQ29yZTo6SURCS2V5UmFuZ2U+LCBQYXNzUmVm
UHRyPFdlYkNvcmU6OklEQkNhbGxiYWNrcz4pIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBj
bGVhcihpbnQ2NF90IHRyYW5zYWN0aW9uSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgUGFzc1Jl
ZlB0cjxXZWJDb3JlOjpJREJDYWxsYmFja3M+KSBPVkVSUklERTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkNhbGxiYWNrc0ltcGwuY3BwIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvV2ViSURCQ2FsbGJhY2tzSW1wbC5jcHAKaW5kZXggMDVmYzg4ZjVi
Y2IzNTNkODNhZDRlNDRlYzBiMWI5Y2Q3NmM4NDRlYi4uMzM5MDU4ZWRkZjM0YzdiZjQyYjY0MDRj
ODk2YzVmZTMzZjZhOGZiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
V2ViSURCQ2FsbGJhY2tzSW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
V2ViSURCQ2FsbGJhY2tzSW1wbC5jcHAKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNsdWRlICJJREJE
YXRhYmFzZUJhY2tlbmRQcm94eS5oIgogI2luY2x1ZGUgIklEQkRhdGFiYXNlRXJyb3IuaCIKICNp
bmNsdWRlICJJREJLZXkuaCIKKyNpbmNsdWRlICJJREJNZXRhZGF0YS5oIgogI2luY2x1ZGUgIldl
YkRPTVN0cmluZ0xpc3QuaCIKICNpbmNsdWRlICJXZWJJREJDYWxsYmFja3MuaCIKICNpbmNsdWRl
ICJXZWJJREJEYXRhYmFzZS5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvV2ViSURCRGF0YWJhc2VJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dl
YklEQkRhdGFiYXNlSW1wbC5jcHAKaW5kZXggYTE4MDUxNTBkMmNhNmRjNzdkZjg2MWI2MmQwYWFi
M2E5ZTVkYjJhYi4uZTRkYTdlZTIzMTI5ZjZmNjljODMwZDYwYTAwOWNlNWRmMTk0MzJmZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCRGF0YWJhc2VJbXBsLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJEYXRhYmFzZUltcGwuY3Bw
CkBAIC0xMTgsNyArMTE4LDcgQEAgdm9pZCBXZWJJREJEYXRhYmFzZUltcGw6OmNvbW1pdChsb25n
IGxvbmcgdHJhbnNhY3Rpb25JZCkKIHZvaWQgV2ViSURCRGF0YWJhc2VJbXBsOjpvcGVuQ3Vyc29y
KGxvbmcgbG9uZyB0cmFuc2FjdGlvbklkLCBsb25nIGxvbmcgb2JqZWN0U3RvcmVJZCwgbG9uZyBs
b25nIGluZGV4SWQsIGNvbnN0IFdlYklEQktleVJhbmdlJiBrZXlSYW5nZSwgdW5zaWduZWQgc2hv
cnQgZGlyZWN0aW9uLCBib29sIGtleU9ubHksIFRhc2tUeXBlIHRhc2tUeXBlLCBXZWJJREJDYWxs
YmFja3MqIGNhbGxiYWNrcykKIHsKICAgICBpZiAobV9kYXRhYmFzZUJhY2tlbmQpCi0gICAgICAg
IG1fZGF0YWJhc2VCYWNrZW5kLT5vcGVuQ3Vyc29yKHRyYW5zYWN0aW9uSWQsIG9iamVjdFN0b3Jl
SWQsIGluZGV4SWQsIGtleVJhbmdlLCBzdGF0aWNfY2FzdDxJREJDdXJzb3I6OkRpcmVjdGlvbj4o
ZGlyZWN0aW9uKSwga2V5T25seSwgc3RhdGljX2Nhc3Q8SURCRGF0YWJhc2VCYWNrZW5kSW50ZXJm
YWNlOjpUYXNrVHlwZT4odGFza1R5cGUpLCBJREJDYWxsYmFja3NQcm94eTo6Y3JlYXRlKGFkb3B0
UHRyKGNhbGxiYWNrcykpKTsKKyAgICAgICAgbV9kYXRhYmFzZUJhY2tlbmQtPm9wZW5DdXJzb3Io
dHJhbnNhY3Rpb25JZCwgb2JqZWN0U3RvcmVJZCwgaW5kZXhJZCwga2V5UmFuZ2UsIHN0YXRpY19j
YXN0PEluZGV4ZWREQjo6Q3Vyc29yRGlyZWN0aW9uPihkaXJlY3Rpb24pLCBrZXlPbmx5LCBzdGF0
aWNfY2FzdDxJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2U6OlRhc2tUeXBlPih0YXNrVHlwZSks
IElEQkNhbGxiYWNrc1Byb3h5OjpjcmVhdGUoYWRvcHRQdHIoY2FsbGJhY2tzKSkpOwogfQogCiB2
b2lkIFdlYklEQkRhdGFiYXNlSW1wbDo6Y291bnQobG9uZyBsb25nIHRyYW5zYWN0aW9uSWQsIGxv
bmcgbG9uZyBvYmplY3RTdG9yZUlkLCBsb25nIGxvbmcgaW5kZXhJZCwgY29uc3QgV2ViSURCS2V5
UmFuZ2UmIGtleVJhbmdlLCBXZWJJREJDYWxsYmFja3MqIGNhbGxiYWNrcykKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvSURCQWJvcnRPbkNvcnJ1cHRUZXN0LmNwcCBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvSURCQWJvcnRPbkNvcnJ1cHRUZXN0LmNwcApp
bmRleCBlNjNjZTJhODZiMmE5M2Q2YjIyZTZmODA0MzhiZmQ3ODJiZDkxMWI5Li5jNDNjYTNmNDhm
YzU1NzJmYjVhZTFjOGNhY2MwY2IzMzQ0ZTMwMGFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3Rlc3RzL0lEQkFib3J0T25Db3JydXB0VGVzdC5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS90ZXN0cy9JREJBYm9ydE9uQ29ycnVwdFRlc3QuY3BwCkBAIC0zMSw2ICsz
MSw3IEBACiAjaW5jbHVkZSAiSURCRGF0YWJhc2VDYWxsYmFja3MuaCIKICNpbmNsdWRlICJJREJG
YWN0b3J5QmFja2VuZEltcGwuaCIKICNpbmNsdWRlICJJREJGYWtlQmFja2luZ1N0b3JlLmgiCisj
aW5jbHVkZSAiSW5kZXhlZERCLmgiCiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKICNpbmNs
dWRlIDxndGVzdC9ndGVzdC5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvSURCRGF0YWJhc2VCYWNrZW5kVGVzdC5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0lEQkRhdGFiYXNlQmFja2VuZFRlc3QuY3Bw
CmluZGV4IDQ1YjllMmJiMmJmYWNhMWYwYWMxMTliN2Y1NWUyYTVjNDFiMTQ1ZWQuLmE4YTY3NmJk
MDA3ZTRjMDMxYzUwOTAxZDY3YTkwNjEzZmRiMjQxZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vdGVzdHMvSURCRGF0YWJhc2VCYWNrZW5kVGVzdC5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS90ZXN0cy9JREJEYXRhYmFzZUJhY2tlbmRUZXN0LmNwcApAQCAtMjQs
NiArMjQsOSBAQAogICovCiAKICNpbmNsdWRlICJjb25maWcuaCIKKworI2luY2x1ZGUgIklEQkRh
dGFiYXNlLmgiCisKICNpbmNsdWRlICJJREJCYWNraW5nU3RvcmUuaCIKICNpbmNsdWRlICJJREJD
dXJzb3JCYWNrZW5kSW50ZXJmYWNlLmgiCiAjaW5jbHVkZSAiSURCRGF0YWJhc2VCYWNrZW5kSW1w
bC5oIgpAQCAtMzEsNiArMzQsNyBAQAogI2luY2x1ZGUgIklEQkZhY3RvcnlCYWNrZW5kSW1wbC5o
IgogI2luY2x1ZGUgIklEQkZha2VCYWNraW5nU3RvcmUuaCIKICNpbmNsdWRlICJJREJUcmFuc2Fj
dGlvbkJhY2tlbmRJbXBsLmgiCisjaW5jbHVkZSAiSW5kZXhlZERCLmgiCiAjaW5jbHVkZSAiU2hh
cmVkQnVmZmVyLmgiCiAjaW5jbHVkZSAiV2ViSURCRGF0YWJhc2VDYWxsYmFja3NJbXBsLmgiCiAj
aW5jbHVkZSAiV2ViSURCRGF0YWJhc2VJbXBsLmgiCkBAIC0xNTEsNyArMTU1LDcgQEAgcHVibGlj
OgogICAgIHZpcnR1YWwgdm9pZCBhYm9ydChpbnQ2NF90IHRyYW5zYWN0aW9uSWQsIFBhc3NSZWZQ
dHI8SURCRGF0YWJhc2VFcnJvcj4pIE9WRVJSSURFIHsgfQogICAgIHZpcnR1YWwgdm9pZCBjb21t
aXQoaW50NjRfdCB0cmFuc2FjdGlvbklkKSBPVkVSUklERSB7IH0KIAotICAgIHZpcnR1YWwgdm9p
ZCBvcGVuQ3Vyc29yKGludDY0X3QgdHJhbnNhY3Rpb25JZCwgaW50NjRfdCBvYmplY3RTdG9yZUlk
LCBpbnQ2NF90IGluZGV4SWQsIFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+LCB1bnNpZ25lZCBzaG9y
dCBkaXJlY3Rpb24sIGJvb2wga2V5T25seSwgVGFza1R5cGUsIFBhc3NSZWZQdHI8SURCQ2FsbGJh
Y2tzPikgT1ZFUlJJREUgeyB9CisgICAgdmlydHVhbCB2b2lkIG9wZW5DdXJzb3IoaW50NjRfdCB0
cmFuc2FjdGlvbklkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGludDY0X3QgaW5kZXhJZCwgUGFz
c1JlZlB0cjxJREJLZXlSYW5nZT4sIElEQkN1cnNvckJhY2tlbmRJbnRlcmZhY2U6OkRpcmVjdGlv
biwgYm9vbCBrZXlPbmx5LCBUYXNrVHlwZSwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+KSBPVkVS
UklERSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgY291bnQoaW50NjRfdCBvYmplY3RTdG9yZUlkLCBp
bnQ2NF90IGluZGV4SWQsIGludDY0X3QgdHJhbnNhY3Rpb25JZCwgUGFzc1JlZlB0cjxJREJLZXlS
YW5nZT4sIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPikgT1ZFUlJJREUgeyB9CiAgICAgdmlydHVh
bCB2b2lkIGdldChpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGludDY0X3QgaW5kZXhJZCwgaW50NjRf
dCB0cmFuc2FjdGlvbklkLCBQYXNzUmVmUHRyPElEQktleVJhbmdlPiwgYm9vbCBrZXlPbmx5LCBQ
YXNzUmVmUHRyPElEQkNhbGxiYWNrcz4pIE9WRVJSSURFIHsgfQogICAgIHZpcnR1YWwgdm9pZCBw
dXQoaW50NjRfdCB0cmFuc2FjdGlvbklkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIFBhc3NSZWZQ
dHI8U2hhcmVkQnVmZmVyPiwgUGFzc1JlZlB0cjxJREJLZXk+LCBQdXRNb2RlLCBQYXNzUmVmUHRy
PElEQkNhbGxiYWNrcz4sIGNvbnN0IFZlY3RvcjxpbnQ2NF90PiYgaW5kZXhJZHMsIGNvbnN0IFZl
Y3RvcjxJbmRleEtleXM+JikgT1ZFUlJJREUgeyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3Rlc3RzL0lEQkZha2VCYWNraW5nU3RvcmUuaCBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vdGVzdHMvSURCRmFrZUJhY2tpbmdTdG9yZS5oCmluZGV4IDNlZDcyNGJiNGViMGEyYmJm
ODhiNjQ2MWE1MmZmNDI3YjY4ZWJiMzIuLjNiYTRmOWRhNjAxNWI5ZWY1YTVjMmM0YTQ2MjRkOWEx
ZmVkODZkMjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvSURCRmFr
ZUJhY2tpbmdTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvSURCRmFr
ZUJhY2tpbmdTdG9yZS5oCkBAIC01MSwxMCArNTEsMTAgQEAgcHVibGljOgogICAgIHZpcnR1YWwg
dm9pZCBkZWxldGVJbmRleChUcmFuc2FjdGlvbiosIGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRf
dCBvYmplY3RTdG9yZUlkLCBpbnQ2NF90IGluZGV4SWQpIE9WRVJSSURFIHsgfQogICAgIHZpcnR1
YWwgdm9pZCBwdXRJbmRleERhdGFGb3JSZWNvcmQoVHJhbnNhY3Rpb24qLCBpbnQ2NF90IGRhdGFi
YXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgaW50NjRfdCBpbmRleElkLCBjb25zdCBJREJL
ZXkmLCBjb25zdCBSZWNvcmRJZGVudGlmaWVyJikgT1ZFUlJJREUgeyB9CiAKLSAgICB2aXJ0dWFs
IFBhc3NSZWZQdHI8Q3Vyc29yPiBvcGVuT2JqZWN0U3RvcmVLZXlDdXJzb3IoVHJhbnNhY3Rpb24q
LCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgY29uc3QgSURCS2V5
UmFuZ2UqLCBJREJDdXJzb3I6OkRpcmVjdGlvbikgT1ZFUlJJREUgeyByZXR1cm4gUGFzc1JlZlB0
cjxDdXJzb3I+KCk7IH0KLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8Q3Vyc29yPiBvcGVuT2JqZWN0
U3RvcmVDdXJzb3IoVHJhbnNhY3Rpb24qLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2Jq
ZWN0U3RvcmVJZCwgY29uc3QgSURCS2V5UmFuZ2UqLCBJREJDdXJzb3I6OkRpcmVjdGlvbikgT1ZF
UlJJREUgeyByZXR1cm4gUGFzc1JlZlB0cjxDdXJzb3I+KCk7IH0KLSAgICB2aXJ0dWFsIFBhc3NS
ZWZQdHI8Q3Vyc29yPiBvcGVuSW5kZXhLZXlDdXJzb3IoVHJhbnNhY3Rpb24qLCBpbnQ2NF90IGRh
dGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgaW50NjRfdCBpbmRleElkLCBjb25zdCBJ
REJLZXlSYW5nZSosIElEQkN1cnNvcjo6RGlyZWN0aW9uKSBPVkVSUklERSB7IHJldHVybiBQYXNz
UmVmUHRyPEN1cnNvcj4oKTsgfQotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxDdXJzb3I+IG9wZW5J
bmRleEN1cnNvcihUcmFuc2FjdGlvbiosIGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmpl
Y3RTdG9yZUlkLCBpbnQ2NF90IGluZGV4SWQsIGNvbnN0IElEQktleVJhbmdlKiwgSURCQ3Vyc29y
OjpEaXJlY3Rpb24pIE9WRVJSSURFIHsgcmV0dXJuIFBhc3NSZWZQdHI8Q3Vyc29yPigpOyB9Cisg
ICAgdmlydHVhbCBQYXNzUmVmUHRyPEN1cnNvcj4gb3Blbk9iamVjdFN0b3JlS2V5Q3Vyc29yKFRy
YW5zYWN0aW9uKiwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGNv
bnN0IElEQktleVJhbmdlKiwgSURCQ3Vyc29yQmFja2VuZEludGVyZmFjZTo6RGlyZWN0aW9uKSBP
VkVSUklERSB7IHJldHVybiBQYXNzUmVmUHRyPEN1cnNvcj4oKTsgfQorICAgIHZpcnR1YWwgUGFz
c1JlZlB0cjxDdXJzb3I+IG9wZW5PYmplY3RTdG9yZUN1cnNvcihUcmFuc2FjdGlvbiosIGludDY0
X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBjb25zdCBJREJLZXlSYW5nZSos
IElEQkN1cnNvckJhY2tlbmRJbnRlcmZhY2U6OkRpcmVjdGlvbikgT1ZFUlJJREUgeyByZXR1cm4g
UGFzc1JlZlB0cjxDdXJzb3I+KCk7IH0KKyAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8Q3Vyc29yPiBv
cGVuSW5kZXhLZXlDdXJzb3IoVHJhbnNhY3Rpb24qLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0
X3Qgb2JqZWN0U3RvcmVJZCwgaW50NjRfdCBpbmRleElkLCBjb25zdCBJREJLZXlSYW5nZSosIElE
QkN1cnNvckJhY2tlbmRJbnRlcmZhY2U6OkRpcmVjdGlvbikgT1ZFUlJJREUgeyByZXR1cm4gUGFz
c1JlZlB0cjxDdXJzb3I+KCk7IH0KKyAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8Q3Vyc29yPiBvcGVu
SW5kZXhDdXJzb3IoVHJhbnNhY3Rpb24qLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2Jq
ZWN0U3RvcmVJZCwgaW50NjRfdCBpbmRleElkLCBjb25zdCBJREJLZXlSYW5nZSosIElEQkN1cnNv
ckJhY2tlbmRJbnRlcmZhY2U6OkRpcmVjdGlvbikgT1ZFUlJJREUgeyByZXR1cm4gUGFzc1JlZlB0
cjxDdXJzb3I+KCk7IH0KIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>190638</attachid>
            <date>2013-02-27 20:23:22 -0800</date>
            <delta_ts>2013-02-27 21:12:15 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-110653-20130227201935.patch</filename>
            <type>text/plain</type>
            <size>94951</size>
            <attacher name="Alec Flett">alecflett</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ0MDg1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNmU1NzcyOGVjY2JlMmI4
MjIyZjBiZDhkMTk5N2ZiM2Y4ZjgzMDhiOC4uNzNmMTg2YTNmYmYxY2IyOWIxZWJjZDQ0MDI3NmIw
ODU3NDJmMjZmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwOSBAQAorMjAxMy0wMi0yMiAgQWxl
YyBGbGV0dCAgPGFsZWNmbGV0dEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgSW5kZXhlZERCOiBQ
cm9wZXJseSByZWZhY3RvciBmcm9udGVuZC9iYWNrZW5kIGNvZGUgYnkgI2luY2x1ZGVzCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTA2NTMKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbmRleGVkREIgaGFz
IGEgZGlzdGluY3QgYmFja2VuZCBhbmQgZnJvbnRlbmQsIHdpdGggd2VsbCBkZWZpbmVkCisgICAg
ICAgICpJbnRlcmZhY2UgLyAqQ2FsbGJhY2tzIGNsYXNzZXMgZGlzdGluZ3Vpc2hpbmcgdGhlbSwg
cmVzcGVjdGl2ZWx5LgorICAgICAgICAKKyAgICAgICAgVGhpcyBtYWtlcyBzdXJlIHRoYXQgdGhl
IGZyb250ZW5kIGFuZCBiYWNrZW5kIGRvIG5vdCBpbmNsdWRlIGVhY2gKKyAgICAgICAgb3RoZXIg
YW5kIGZpeGVzIGJ1aWxkIHByb2JsZW1zIHRoYXQgb2NjdXJyZWQgYXMgYSByZXN1bHQuCisKKyAg
ICAgICAgU3BlY2lmaWNhbGx5IHRoaXMgbW92ZXMgZW51bXMgb3V0IG9mIElEQkN1cnNvciBhbmQg
SURCVHJhbnNhY3Rpb24KKyAgICAgICAgaW50byBJbmRleGVkREIuaCBpbiBhIG5ldyBXZWJDb3Jl
OjpJbmRleGVkREIgbmFtZXNwYWNlLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cywgYXMgdGhpcyBp
cyBqdXN0IGEgcmVmYWN0b3IuCisKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJCYWNr
aW5nU3RvcmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCQmFja2luZ1N0b3JlOjpDdXJzb3I6
OmNvbnRpbnVlRnVuY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6b2JqZWN0U3RvcmVDdXJzb3JP
cHRpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OmluZGV4Q3Vyc29yT3B0aW9ucyk6CisgICAgICAg
IChXZWJDb3JlOjpJREJCYWNraW5nU3RvcmU6Om9wZW5PYmplY3RTdG9yZUN1cnNvcik6CisgICAg
ICAgIChXZWJDb3JlOjpJREJCYWNraW5nU3RvcmU6Om9wZW5PYmplY3RTdG9yZUtleUN1cnNvcik6
CisgICAgICAgIChXZWJDb3JlOjpJREJCYWNraW5nU3RvcmU6Om9wZW5JbmRleEtleUN1cnNvcik6
CisgICAgICAgIChXZWJDb3JlOjpJREJCYWNraW5nU3RvcmU6Om9wZW5JbmRleEN1cnNvcik6Cisg
ICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCQmFja2luZ1N0b3JlLmg6CisgICAgICAgIChJ
REJCYWNraW5nU3RvcmUpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpJREJDdXJzb3I6OmNyZWF0ZSk6CisgICAgICAgIChXZWJD
b3JlOjpJREJDdXJzb3I6OklEQkN1cnNvcik6CisgICAgICAgIChXZWJDb3JlOjpJREJDdXJzb3I6
OmNvbnRpbnVlRnVuY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6SURCQ3Vyc29yOjpzdHJpbmdU
b0RpcmVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpJREJDdXJzb3I6OmRpcmVjdGlvblRvU3Ry
aW5nKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3IuaDoKKyAgICAgICAg
KElEQkN1cnNvcik6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yQmFja2Vu
ZEltcGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCQ3Vyc29yQmFja2VuZEltcGw6OmRlbGV0
ZUZ1bmN0aW9uKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3JCYWNrZW5k
SW1wbC5oOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvckJhY2tlbmRJbnRl
cmZhY2UuaDoKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3JXaXRoVmFsdWUu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCQ3Vyc29yV2l0aFZhbHVlOjpjcmVhdGUpOgorICAg
ICAgICAoV2ViQ29yZTo6SURCQ3Vyc29yV2l0aFZhbHVlOjpJREJDdXJzb3JXaXRoVmFsdWUpOgor
ICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvcldpdGhWYWx1ZS5oOgorICAgICAg
ICAoSURCQ3Vyc29yV2l0aFZhbHVlKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJE
YXRhYmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZTo6dHJhbnNhY3Rpb24p
OgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQmFja2VuZEltcGwuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6T3BlbkN1cnNvck9wZXJhdGlvbjo6Y3JlYXRlKToKKyAgICAg
ICAgKFdlYkNvcmU6Ok9wZW5DdXJzb3JPcGVyYXRpb246Ok9wZW5DdXJzb3JPcGVyYXRpb24pOgor
ICAgICAgICAoT3BlbkN1cnNvck9wZXJhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRh
YmFzZUJhY2tlbmRJbXBsOjpjcmVhdGVPYmplY3RTdG9yZSk6CisgICAgICAgIChXZWJDb3JlOjpJ
REJEYXRhYmFzZUJhY2tlbmRJbXBsOjpkZWxldGVPYmplY3RTdG9yZSk6CisgICAgICAgIChXZWJD
b3JlOjpJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpjcmVhdGVJbmRleCk6CisgICAgICAgIChXZWJD
b3JlOjpJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpkZWxldGVJbmRleCk6CisgICAgICAgIChXZWJD
b3JlOjpHZXRPcGVyYXRpb246OnBlcmZvcm0pOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJh
c2VCYWNrZW5kSW1wbDo6cHV0KToKKyAgICAgICAgKFdlYkNvcmU6OlB1dE9wZXJhdGlvbjo6cGVy
Zm9ybSk6CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpzZXRJbmRl
eEtleXMpOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6b3BlbkN1
cnNvcik6CisgICAgICAgIChXZWJDb3JlOjpPcGVuQ3Vyc29yT3BlcmF0aW9uOjpwZXJmb3JtKToK
KyAgICAgICAgKFdlYkNvcmU6OkNvdW50T3BlcmF0aW9uOjpwZXJmb3JtKToKKyAgICAgICAgKFdl
YkNvcmU6OklEQkRhdGFiYXNlQmFja2VuZEltcGw6OmRlbGV0ZVJhbmdlKToKKyAgICAgICAgKFdl
YkNvcmU6OkRlbGV0ZVJhbmdlT3BlcmF0aW9uOjpwZXJmb3JtKToKKyAgICAgICAgKFdlYkNvcmU6
OklEQkRhdGFiYXNlQmFja2VuZEltcGw6OmNsZWFyKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkRh
dGFiYXNlQmFja2VuZEltcGw6OnRyYW5zYWN0aW9uU3RhcnRlZCk6CisgICAgICAgIChXZWJDb3Jl
OjpJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjp0cmFuc2FjdGlvbkZpbmlzaGVkKToKKyAgICAgICAg
KFdlYkNvcmU6OklEQkRhdGFiYXNlQmFja2VuZEltcGw6OnRyYW5zYWN0aW9uRmluaXNoZWRBbmRB
Ym9ydEZpcmVkKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlQmFja2VuZEltcGw6OnRy
YW5zYWN0aW9uRmluaXNoZWRBbmRDb21wbGV0ZUZpcmVkKToKKyAgICAgICAgKFdlYkNvcmU6OklE
QkRhdGFiYXNlQmFja2VuZEltcGw6OmNyZWF0ZVRyYW5zYWN0aW9uKToKKyAgICAgICAgKFdlYkNv
cmU6OklEQkRhdGFiYXNlQmFja2VuZEltcGw6OnJ1bkludFZlcnNpb25DaGFuZ2VUcmFuc2FjdGlv
bik6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VCYWNrZW5kSW1wbC5o
OgorICAgICAgICAoSURCRGF0YWJhc2VCYWNrZW5kSW1wbCk6CisgICAgICAgICogTW9kdWxlcy9p
bmRleGVkZGIvSURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlLmg6CisgICAgICAgICogTW9kdWxl
cy9pbmRleGVkZGIvSURCSW5kZXguY3BwOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChX
ZWJDb3JlOjpJREJJbmRleDo6b3BlbkN1cnNvcik6CisgICAgICAgIChXZWJDb3JlOjpJREJJbmRl
eDo6b3BlbktleUN1cnNvcik6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0
U3RvcmUuY3BwOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJPYmpl
Y3RTdG9yZTo6b3BlbkN1cnNvcik6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCUmVx
dWVzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJSZXF1ZXN0OjpJREJSZXF1ZXN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OklEQlJlcXVlc3Q6OnNldEN1cnNvckRldGFpbHMpOgorICAgICAgICAq
IE1vZHVsZXMvaW5kZXhlZGRiL0lEQlJlcXVlc3QuaDoKKyAgICAgICAgKElEQlJlcXVlc3QpOgor
ICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6SURC
VHJhbnNhY3Rpb246OklEQlRyYW5zYWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5z
YWN0aW9uOjpzdHJpbmdUb01vZGUpOgorICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb246
Om1vZGVUb1N0cmluZyk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rp
b24uaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoSURCVHJhbnNhY3Rpb24pOgorICAg
ICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb246OmlzUmVhZE9ubHkpOgorICAgICAgICAoV2Vi
Q29yZTo6SURCVHJhbnNhY3Rpb246OmlzVmVyc2lvbkNoYW5nZSk6CisgICAgICAgICogTW9kdWxl
cy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29y
ZTo6SURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbDo6SURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbCk6
CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbC5o
OgorICAgICAgICAoSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbCk6CisgICAgICAgIChXZWJDb3Jl
OjpJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsOjptb2RlKToKKyAgICAgICAgKiBNb2R1bGVzL2lu
ZGV4ZWRkYi9JREJUcmFuc2FjdGlvbkNvb3JkaW5hdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OklEQlRyYW5zYWN0aW9uQ29vcmRpbmF0b3I6OnByb2Nlc3NTdGFydGVkVHJhbnNhY3Rpb25zKToK
KyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uQ29vcmRpbmF0b3I6OmNhblJ1blRyYW5z
YWN0aW9uKToKKwogMjAxMy0wMi0yNiAgQW5kcmV3IExvICA8YW5sb0ByaW0uY29tPgogCiAgICAg
ICAgIFtCbGFja0JlcnJ5XSBBbmltYXRlZCBpbWFnZXMgbm90IGFuaW1hdGluZyBvbiBhY2NlbGVy
YXRlZCBjb21wb3NpdGluZyBsYXllcnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggODlh
NjcyOGZiZTAxYzM4ZmFmYjliZjQxYTI0MjUxMDViMjE2NDFlYy4uNjBmMzMzMDBmNDlmMjhiYjJh
NGZmYTAwMzY2MjY4MTFlZGIzMWNhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMyBAQAorMjAxMy0wMi0yMiAgQWxlYyBGbGV0dCAgPGFsZWNmbGV0dEBjaHJvbWl1bS5v
cmc+CisKKyAgICAgICAgSW5kZXhlZERCOiBQcm9wZXJseSByZWZhY3RvciBmcm9udGVuZC9iYWNr
ZW5kIGNvZGUgYnkgI2luY2x1ZGVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xMTA2NTMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBDbGVhbiB1cCB0aGUgZnJvbnRlbmQvYmFja2VuZCBXZWJJREIqIGltcGxl
bWVudGF0aW9ucyB0bworICAgICAgICBtYXRjaCB0aGUgY2hhbmdlcyB0byB3ZWJraXQuCisKIDIw
MTMtMDItMjYgIFNoZXJpZmYgQm90ICA8d2Via2l0LnJldmlldy5ib3RAZ21haWwuY29tPgogCiAg
ICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIxNDQwNjUuCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZp
bGUubGlzdC5hbQppbmRleCBkZTM1ZGMxZjZlZDhiZWZmYTdhNmRiYWFhOGMwNWE5NGJlNDU3Y2Rm
Li41MDY2NjNjNTkzNzVhODY2NzQ3N2Y5YTk4NzUzZWUzNjcyNTRlNDVlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCisrKyBiL1NvdXJjZS9XZWJDb3JlL0dO
VW1ha2VmaWxlLmxpc3QuYW0KQEAgLTE5MTcsNiArMTkxNyw3IEBAIHdlYmNvcmVfbW9kdWxlc19z
b3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2Fj
dGlvbi5oIFwKIAlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJWZXJzaW9uQ2hh
bmdlRXZlbnQuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJWZXJz
aW9uQ2hhbmdlRXZlbnQuaCBcCisJU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSW5k
ZXhlZERCLmggXAogCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL1BhZ2VHcm91cElu
ZGV4ZWREYXRhYmFzZS5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL1Bh
Z2VHcm91cEluZGV4ZWREYXRhYmFzZS5oIFwKIAlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9Xb3JrZXJDb250ZXh0SW5kZXhlZERhdGFiYXNlLmNwcCBcCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJCYWNraW5nU3RvcmUuY3BwIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQmFja2luZ1N0b3JlLmNwcAppbmRleCAzNzBj
YzE1OTVmZmZmN2NmYTE5ZTA0NzFmYTRhZWIyNTczOTNjZmU2Li4xNjBlZDJkMTUwMGRlNTU0NTli
NDRmYjJhMzBkMzAwNmFmZmYwZTIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9JREJCYWNraW5nU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL0lEQkJhY2tpbmdTdG9yZS5jcHAKQEAgLTEyNzksNyArMTI3OSw3IEBAIGJv
b2wgSURCQmFja2luZ1N0b3JlOjpDdXJzb3I6OmNvbnRpbnVlRnVuY3Rpb24oY29uc3QgSURCS2V5
KiBrZXksIEl0ZXJhdG9yU3RhdGUKIHsKICAgICBSZWZQdHI8SURCS2V5PiBwcmV2aW91c0tleSA9
IG1fY3VycmVudEtleTsKIAotICAgIC8vIFdoZW4gaXRlcmF0aW5nIHdpdGggUFJFVl9OT19EVVBM
SUNBVEUsIHNwZWMgcmVxdWlyZXMgdGhhdCB0aGUKKyAgICAvLyBXaGVuIGl0ZXJhdGluZyB3aXRo
IFByZXZOb0R1cGxpY2F0ZSwgc3BlYyByZXF1aXJlcyB0aGF0IHRoZQogICAgIC8vIHZhbHVlIHdl
IHlpZWxkIGZvciBlYWNoIGtleSBpcyB0aGUgZmlyc3QgZHVwbGljYXRlIGluIGZvcndhcmRzCiAg
ICAgLy8gb3JkZXIuCiAgICAgUmVmUHRyPElEQktleT4gbGFzdER1cGxpY2F0ZUtleTsKQEAgLTE2
ODksMTIgKzE2ODksMTIgQEAgYm9vbCBJbmRleEN1cnNvckltcGw6OmxvYWRDdXJyZW50Um93KCkK
ICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBvYmplY3RTdG9yZUN1cnNvck9wdGlvbnMoTGV2
ZWxEQlRyYW5zYWN0aW9uKiB0cmFuc2FjdGlvbiwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90
IG9iamVjdFN0b3JlSWQsIGNvbnN0IElEQktleVJhbmdlKiByYW5nZSwgSURCQ3Vyc29yOjpEaXJl
Y3Rpb24gZGlyZWN0aW9uLCBJREJCYWNraW5nU3RvcmU6OkN1cnNvcjo6Q3Vyc29yT3B0aW9ucyYg
Y3Vyc29yT3B0aW9ucykKK2Jvb2wgb2JqZWN0U3RvcmVDdXJzb3JPcHRpb25zKExldmVsREJUcmFu
c2FjdGlvbiogdHJhbnNhY3Rpb24sIGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RT
dG9yZUlkLCBjb25zdCBJREJLZXlSYW5nZSogcmFuZ2UsIEluZGV4ZWREQjo6Q3Vyc29yRGlyZWN0
aW9uIGRpcmVjdGlvbiwgSURCQmFja2luZ1N0b3JlOjpDdXJzb3I6OkN1cnNvck9wdGlvbnMmIGN1
cnNvck9wdGlvbnMpCiB7CiAgICAgYm9vbCBsb3dlckJvdW5kID0gcmFuZ2UgJiYgcmFuZ2UtPmxv
d2VyKCk7CiAgICAgYm9vbCB1cHBlckJvdW5kID0gcmFuZ2UgJiYgcmFuZ2UtPnVwcGVyKCk7Ci0g
ICAgY3Vyc29yT3B0aW9ucy5mb3J3YXJkID0gKGRpcmVjdGlvbiA9PSBJREJDdXJzb3I6Ok5FWFRf
Tk9fRFVQTElDQVRFIHx8IGRpcmVjdGlvbiA9PSBJREJDdXJzb3I6Ok5FWFQpOwotICAgIGN1cnNv
ck9wdGlvbnMudW5pcXVlID0gKGRpcmVjdGlvbiA9PSBJREJDdXJzb3I6Ok5FWFRfTk9fRFVQTElD
QVRFIHx8IGRpcmVjdGlvbiA9PSBJREJDdXJzb3I6OlBSRVZfTk9fRFVQTElDQVRFKTsKKyAgICBj
dXJzb3JPcHRpb25zLmZvcndhcmQgPSAoZGlyZWN0aW9uID09IEluZGV4ZWREQjo6Q3Vyc29yTmV4
dE5vRHVwbGljYXRlIHx8IGRpcmVjdGlvbiA9PSBJbmRleGVkREI6OkN1cnNvck5leHQpOworICAg
IGN1cnNvck9wdGlvbnMudW5pcXVlID0gKGRpcmVjdGlvbiA9PSBJbmRleGVkREI6OkN1cnNvck5l
eHROb0R1cGxpY2F0ZSB8fCBkaXJlY3Rpb24gPT0gSW5kZXhlZERCOjpDdXJzb3JQcmV2Tm9EdXBs
aWNhdGUpOwogCiAgICAgaWYgKCFsb3dlckJvdW5kKSB7CiAgICAgICAgIGN1cnNvck9wdGlvbnMu
bG93S2V5ID0gT2JqZWN0U3RvcmVEYXRhS2V5OjplbmNvZGUoZGF0YWJhc2VJZCwgb2JqZWN0U3Rv
cmVJZCwgbWluSURCS2V5KCkpOwpAQCAtMTczNiwxMyArMTczNiwxMyBAQCBib29sIG9iamVjdFN0
b3JlQ3Vyc29yT3B0aW9ucyhMZXZlbERCVHJhbnNhY3Rpb24qIHRyYW5zYWN0aW9uLCBpbnQ2NF90
IGRhdGFiYXNlSQogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIGluZGV4Q3Vyc29yT3B0aW9u
cyhMZXZlbERCVHJhbnNhY3Rpb24qIHRyYW5zYWN0aW9uLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGlu
dDY0X3Qgb2JqZWN0U3RvcmVJZCwgaW50NjRfdCBpbmRleElkLCBjb25zdCBJREJLZXlSYW5nZSog
cmFuZ2UsIElEQkN1cnNvcjo6RGlyZWN0aW9uIGRpcmVjdGlvbiwgSURCQmFja2luZ1N0b3JlOjpD
dXJzb3I6OkN1cnNvck9wdGlvbnMmIGN1cnNvck9wdGlvbnMpCitib29sIGluZGV4Q3Vyc29yT3B0
aW9ucyhMZXZlbERCVHJhbnNhY3Rpb24qIHRyYW5zYWN0aW9uLCBpbnQ2NF90IGRhdGFiYXNlSWQs
IGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgaW50NjRfdCBpbmRleElkLCBjb25zdCBJREJLZXlSYW5n
ZSogcmFuZ2UsIEluZGV4ZWREQjo6Q3Vyc29yRGlyZWN0aW9uIGRpcmVjdGlvbiwgSURCQmFja2lu
Z1N0b3JlOjpDdXJzb3I6OkN1cnNvck9wdGlvbnMmIGN1cnNvck9wdGlvbnMpCiB7CiAgICAgQVNT
RVJUKHRyYW5zYWN0aW9uKTsKICAgICBib29sIGxvd2VyQm91bmQgPSByYW5nZSAmJiByYW5nZS0+
bG93ZXIoKTsKICAgICBib29sIHVwcGVyQm91bmQgPSByYW5nZSAmJiByYW5nZS0+dXBwZXIoKTsK
LSAgICBjdXJzb3JPcHRpb25zLmZvcndhcmQgPSAoZGlyZWN0aW9uID09IElEQkN1cnNvcjo6TkVY
VF9OT19EVVBMSUNBVEUgfHwgZGlyZWN0aW9uID09IElEQkN1cnNvcjo6TkVYVCk7Ci0gICAgY3Vy
c29yT3B0aW9ucy51bmlxdWUgPSAoZGlyZWN0aW9uID09IElEQkN1cnNvcjo6TkVYVF9OT19EVVBM
SUNBVEUgfHwgZGlyZWN0aW9uID09IElEQkN1cnNvcjo6UFJFVl9OT19EVVBMSUNBVEUpOworICAg
IGN1cnNvck9wdGlvbnMuZm9yd2FyZCA9IChkaXJlY3Rpb24gPT0gSW5kZXhlZERCOjpDdXJzb3JO
ZXh0Tm9EdXBsaWNhdGUgfHwgZGlyZWN0aW9uID09IEluZGV4ZWREQjo6Q3Vyc29yTmV4dCk7Cisg
ICAgY3Vyc29yT3B0aW9ucy51bmlxdWUgPSAoZGlyZWN0aW9uID09IEluZGV4ZWREQjo6Q3Vyc29y
TmV4dE5vRHVwbGljYXRlIHx8IGRpcmVjdGlvbiA9PSBJbmRleGVkREI6OkN1cnNvclByZXZOb0R1
cGxpY2F0ZSk7CiAKICAgICBpZiAoIWxvd2VyQm91bmQpIHsKICAgICAgICAgY3Vyc29yT3B0aW9u
cy5sb3dLZXkgPSBJbmRleERhdGFLZXk6OmVuY29kZU1pbktleShkYXRhYmFzZUlkLCBvYmplY3RT
dG9yZUlkLCBpbmRleElkKTsKQEAgLTE3NzksNyArMTc3OSw3IEBAIGJvb2wgaW5kZXhDdXJzb3JP
cHRpb25zKExldmVsREJUcmFuc2FjdGlvbiogdHJhbnNhY3Rpb24sIGludDY0X3QgZGF0YWJhc2VJ
ZCwgaW50CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLVBhc3NSZWZQdHI8SURCQmFja2luZ1N0b3Jl
OjpDdXJzb3I+IElEQkJhY2tpbmdTdG9yZTo6b3Blbk9iamVjdFN0b3JlQ3Vyc29yKElEQkJhY2tp
bmdTdG9yZTo6VHJhbnNhY3Rpb24qIHRyYW5zYWN0aW9uLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGlu
dDY0X3Qgb2JqZWN0U3RvcmVJZCwgY29uc3QgSURCS2V5UmFuZ2UqIHJhbmdlLCBJREJDdXJzb3I6
OkRpcmVjdGlvbiBkaXJlY3Rpb24pCitQYXNzUmVmUHRyPElEQkJhY2tpbmdTdG9yZTo6Q3Vyc29y
PiBJREJCYWNraW5nU3RvcmU6Om9wZW5PYmplY3RTdG9yZUN1cnNvcihJREJCYWNraW5nU3RvcmU6
OlRyYW5zYWN0aW9uKiB0cmFuc2FjdGlvbiwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9i
amVjdFN0b3JlSWQsIGNvbnN0IElEQktleVJhbmdlKiByYW5nZSwgSW5kZXhlZERCOjpDdXJzb3JE
aXJlY3Rpb24gZGlyZWN0aW9uKQogewogICAgIElEQl9UUkFDRSgiSURCQmFja2luZ1N0b3JlOjpv
cGVuT2JqZWN0U3RvcmVDdXJzb3IiKTsKICAgICBMZXZlbERCVHJhbnNhY3Rpb24qIGxldmVsREJU
cmFuc2FjdGlvbiA9IElEQkJhY2tpbmdTdG9yZTo6VHJhbnNhY3Rpb246OmxldmVsREJUcmFuc2Fj
dGlvbkZyb20odHJhbnNhY3Rpb24pOwpAQCAtMTc5Myw3ICsxNzkzLDcgQEAgUGFzc1JlZlB0cjxJ
REJCYWNraW5nU3RvcmU6OkN1cnNvcj4gSURCQmFja2luZ1N0b3JlOjpvcGVuT2JqZWN0U3RvcmVD
dXJzb3IoSURCQmEKICAgICByZXR1cm4gY3Vyc29yLnJlbGVhc2UoKTsKIH0KIAotUGFzc1JlZlB0
cjxJREJCYWNraW5nU3RvcmU6OkN1cnNvcj4gSURCQmFja2luZ1N0b3JlOjpvcGVuT2JqZWN0U3Rv
cmVLZXlDdXJzb3IoSURCQmFja2luZ1N0b3JlOjpUcmFuc2FjdGlvbiogdHJhbnNhY3Rpb24sIGlu
dDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBjb25zdCBJREJLZXlSYW5n
ZSogcmFuZ2UsIElEQkN1cnNvcjo6RGlyZWN0aW9uIGRpcmVjdGlvbikKK1Bhc3NSZWZQdHI8SURC
QmFja2luZ1N0b3JlOjpDdXJzb3I+IElEQkJhY2tpbmdTdG9yZTo6b3Blbk9iamVjdFN0b3JlS2V5
Q3Vyc29yKElEQkJhY2tpbmdTdG9yZTo6VHJhbnNhY3Rpb24qIHRyYW5zYWN0aW9uLCBpbnQ2NF90
IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgY29uc3QgSURCS2V5UmFuZ2UqIHJh
bmdlLCBJbmRleGVkREI6OkN1cnNvckRpcmVjdGlvbiBkaXJlY3Rpb24pCiB7CiAgICAgSURCX1RS
QUNFKCJJREJCYWNraW5nU3RvcmU6Om9wZW5PYmplY3RTdG9yZUtleUN1cnNvciIpOwogICAgIExl
dmVsREJUcmFuc2FjdGlvbiogbGV2ZWxEQlRyYW5zYWN0aW9uID0gSURCQmFja2luZ1N0b3JlOjpU
cmFuc2FjdGlvbjo6bGV2ZWxEQlRyYW5zYWN0aW9uRnJvbSh0cmFuc2FjdGlvbik7CkBAIC0xODA3
LDcgKzE4MDcsNyBAQCBQYXNzUmVmUHRyPElEQkJhY2tpbmdTdG9yZTo6Q3Vyc29yPiBJREJCYWNr
aW5nU3RvcmU6Om9wZW5PYmplY3RTdG9yZUtleUN1cnNvcihJRAogICAgIHJldHVybiBjdXJzb3Iu
cmVsZWFzZSgpOwogfQogCi1QYXNzUmVmUHRyPElEQkJhY2tpbmdTdG9yZTo6Q3Vyc29yPiBJREJC
YWNraW5nU3RvcmU6Om9wZW5JbmRleEtleUN1cnNvcihJREJCYWNraW5nU3RvcmU6OlRyYW5zYWN0
aW9uKiB0cmFuc2FjdGlvbiwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3Jl
SWQsIGludDY0X3QgaW5kZXhJZCwgY29uc3QgSURCS2V5UmFuZ2UqIHJhbmdlLCBJREJDdXJzb3I6
OkRpcmVjdGlvbiBkaXJlY3Rpb24pCitQYXNzUmVmUHRyPElEQkJhY2tpbmdTdG9yZTo6Q3Vyc29y
PiBJREJCYWNraW5nU3RvcmU6Om9wZW5JbmRleEtleUN1cnNvcihJREJCYWNraW5nU3RvcmU6OlRy
YW5zYWN0aW9uKiB0cmFuc2FjdGlvbiwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVj
dFN0b3JlSWQsIGludDY0X3QgaW5kZXhJZCwgY29uc3QgSURCS2V5UmFuZ2UqIHJhbmdlLCBJbmRl
eGVkREI6OkN1cnNvckRpcmVjdGlvbiBkaXJlY3Rpb24pCiB7CiAgICAgSURCX1RSQUNFKCJJREJC
YWNraW5nU3RvcmU6Om9wZW5JbmRleEtleUN1cnNvciIpOwogICAgIExldmVsREJUcmFuc2FjdGlv
biogbGV2ZWxEQlRyYW5zYWN0aW9uID0gSURCQmFja2luZ1N0b3JlOjpUcmFuc2FjdGlvbjo6bGV2
ZWxEQlRyYW5zYWN0aW9uRnJvbSh0cmFuc2FjdGlvbik7CkBAIC0xODIxLDcgKzE4MjEsNyBAQCBQ
YXNzUmVmUHRyPElEQkJhY2tpbmdTdG9yZTo6Q3Vyc29yPiBJREJCYWNraW5nU3RvcmU6Om9wZW5J
bmRleEtleUN1cnNvcihJREJCYWNraQogICAgIHJldHVybiBjdXJzb3IucmVsZWFzZSgpOwogfQog
Ci1QYXNzUmVmUHRyPElEQkJhY2tpbmdTdG9yZTo6Q3Vyc29yPiBJREJCYWNraW5nU3RvcmU6Om9w
ZW5JbmRleEN1cnNvcihJREJCYWNraW5nU3RvcmU6OlRyYW5zYWN0aW9uKiB0cmFuc2FjdGlvbiwg
aW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGludDY0X3QgaW5kZXhJ
ZCwgY29uc3QgSURCS2V5UmFuZ2UqIHJhbmdlLCBJREJDdXJzb3I6OkRpcmVjdGlvbiBkaXJlY3Rp
b24pCitQYXNzUmVmUHRyPElEQkJhY2tpbmdTdG9yZTo6Q3Vyc29yPiBJREJCYWNraW5nU3RvcmU6
Om9wZW5JbmRleEN1cnNvcihJREJCYWNraW5nU3RvcmU6OlRyYW5zYWN0aW9uKiB0cmFuc2FjdGlv
biwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGludDY0X3QgaW5k
ZXhJZCwgY29uc3QgSURCS2V5UmFuZ2UqIHJhbmdlLCBJbmRleGVkREI6OkN1cnNvckRpcmVjdGlv
biBkaXJlY3Rpb24pCiB7CiAgICAgSURCX1RSQUNFKCJJREJCYWNraW5nU3RvcmU6Om9wZW5JbmRl
eEN1cnNvciIpOwogICAgIExldmVsREJUcmFuc2FjdGlvbiogbGV2ZWxEQlRyYW5zYWN0aW9uID0g
SURCQmFja2luZ1N0b3JlOjpUcmFuc2FjdGlvbjo6bGV2ZWxEQlRyYW5zYWN0aW9uRnJvbSh0cmFu
c2FjdGlvbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9J
REJCYWNraW5nU3RvcmUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkJh
Y2tpbmdTdG9yZS5oCmluZGV4IDhiNDliYzhhNDIxYzYwNjFiZWNhZjYwN2JjZWI4ZTMxYzA2Nzc1
M2QuLjE3MmM4MmRkZmE1ZDA4NDFlMWQ5ZDJhMTU4MTNkMjQwOGQxYjRmMDggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkJhY2tpbmdTdG9yZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkJhY2tpbmdTdG9yZS5oCkBAIC0y
OCw4ICsyOCw4IEBACiAKICNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKIAotI2luY2x1ZGUg
IklEQkN1cnNvci5oIgogI2luY2x1ZGUgIklEQk1ldGFkYXRhLmgiCisjaW5jbHVkZSAiSW5kZXhl
ZERCLmgiCiAjaW5jbHVkZSAiTGV2ZWxEQlRyYW5zYWN0aW9uLmgiCiAjaW5jbHVkZSA8d3RmL093
blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CkBAIC0xMzgsMTAgKzEzOCwxMCBA
QCBwdWJsaWM6CiAgICAgICAgIElEQkJhY2tpbmdTdG9yZTo6UmVjb3JkSWRlbnRpZmllciBtX3Jl
Y29yZElkZW50aWZpZXI7CiAgICAgfTsKIAotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxDdXJzb3I+
IG9wZW5PYmplY3RTdG9yZUtleUN1cnNvcihJREJCYWNraW5nU3RvcmU6OlRyYW5zYWN0aW9uKiwg
aW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGNvbnN0IElEQktleVJh
bmdlKiwgSURCQ3Vyc29yOjpEaXJlY3Rpb24pOwotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxDdXJz
b3I+IG9wZW5PYmplY3RTdG9yZUN1cnNvcihJREJCYWNraW5nU3RvcmU6OlRyYW5zYWN0aW9uKiwg
aW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGNvbnN0IElEQktleVJh
bmdlKiwgSURCQ3Vyc29yOjpEaXJlY3Rpb24pOwotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxDdXJz
b3I+IG9wZW5JbmRleEtleUN1cnNvcihJREJCYWNraW5nU3RvcmU6OlRyYW5zYWN0aW9uKiwgaW50
NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGludDY0X3QgaW5kZXhJZCwg
Y29uc3QgSURCS2V5UmFuZ2UqLCBJREJDdXJzb3I6OkRpcmVjdGlvbik7Ci0gICAgdmlydHVhbCBQ
YXNzUmVmUHRyPEN1cnNvcj4gb3BlbkluZGV4Q3Vyc29yKElEQkJhY2tpbmdTdG9yZTo6VHJhbnNh
Y3Rpb24qLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgaW50NjRf
dCBpbmRleElkLCBjb25zdCBJREJLZXlSYW5nZSosIElEQkN1cnNvcjo6RGlyZWN0aW9uKTsKKyAg
ICB2aXJ0dWFsIFBhc3NSZWZQdHI8Q3Vyc29yPiBvcGVuT2JqZWN0U3RvcmVLZXlDdXJzb3IoSURC
QmFja2luZ1N0b3JlOjpUcmFuc2FjdGlvbiosIGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBv
YmplY3RTdG9yZUlkLCBjb25zdCBJREJLZXlSYW5nZSosIEluZGV4ZWREQjo6Q3Vyc29yRGlyZWN0
aW9uKTsKKyAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8Q3Vyc29yPiBvcGVuT2JqZWN0U3RvcmVDdXJz
b3IoSURCQmFja2luZ1N0b3JlOjpUcmFuc2FjdGlvbiosIGludDY0X3QgZGF0YWJhc2VJZCwgaW50
NjRfdCBvYmplY3RTdG9yZUlkLCBjb25zdCBJREJLZXlSYW5nZSosIEluZGV4ZWREQjo6Q3Vyc29y
RGlyZWN0aW9uKTsKKyAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8Q3Vyc29yPiBvcGVuSW5kZXhLZXlD
dXJzb3IoSURCQmFja2luZ1N0b3JlOjpUcmFuc2FjdGlvbiosIGludDY0X3QgZGF0YWJhc2VJZCwg
aW50NjRfdCBvYmplY3RTdG9yZUlkLCBpbnQ2NF90IGluZGV4SWQsIGNvbnN0IElEQktleVJhbmdl
KiwgSW5kZXhlZERCOjpDdXJzb3JEaXJlY3Rpb24pOworICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxD
dXJzb3I+IG9wZW5JbmRleEN1cnNvcihJREJCYWNraW5nU3RvcmU6OlRyYW5zYWN0aW9uKiwgaW50
NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGludDY0X3QgaW5kZXhJZCwg
Y29uc3QgSURCS2V5UmFuZ2UqLCBJbmRleGVkREI6OkN1cnNvckRpcmVjdGlvbik7CiAKICAgICBj
bGFzcyBUcmFuc2FjdGlvbiB7CiAgICAgcHVibGljOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL0lEQkN1cnNvci5jcHAKaW5kZXggNDY4ZWRiZWJhOTExMTY5YTA5M2EyZTdk
MjM0OTA4OGZjYzI4MzZhNS4uN2JiMGY1MDBlNDdiNDI2MTM0MGE5MzI4MTU4YWRlOTNlMzQ4NTZj
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29y
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3IuY3Bw
CkBAIC00Myw3ICs0Myw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUGFzc1JlZlB0cjxJ
REJDdXJzb3I+IElEQkN1cnNvcjo6Y3JlYXRlKFBhc3NSZWZQdHI8SURCQ3Vyc29yQmFja2VuZElu
dGVyZmFjZT4gYmFja2VuZCwgRGlyZWN0aW9uIGRpcmVjdGlvbiwgSURCUmVxdWVzdCogcmVxdWVz
dCwgSURCQW55KiBzb3VyY2UsIElEQlRyYW5zYWN0aW9uKiB0cmFuc2FjdGlvbikKK1Bhc3NSZWZQ
dHI8SURCQ3Vyc29yPiBJREJDdXJzb3I6OmNyZWF0ZShQYXNzUmVmUHRyPElEQkN1cnNvckJhY2tl
bmRJbnRlcmZhY2U+IGJhY2tlbmQsIEluZGV4ZWREQjo6Q3Vyc29yRGlyZWN0aW9uIGRpcmVjdGlv
biwgSURCUmVxdWVzdCogcmVxdWVzdCwgSURCQW55KiBzb3VyY2UsIElEQlRyYW5zYWN0aW9uKiB0
cmFuc2FjdGlvbikKIHsKICAgICByZXR1cm4gYWRvcHRSZWYobmV3IElEQkN1cnNvcihiYWNrZW5k
LCBkaXJlY3Rpb24sIHJlcXVlc3QsIHNvdXJjZSwgdHJhbnNhY3Rpb24pKTsKIH0KQEAgLTczLDcg
KzczLDcgQEAgY29uc3QgQXRvbWljU3RyaW5nJiBJREJDdXJzb3I6OmRpcmVjdGlvblByZXZVbmlx
dWUoKQogfQogCiAKLUlEQkN1cnNvcjo6SURCQ3Vyc29yKFBhc3NSZWZQdHI8SURCQ3Vyc29yQmFj
a2VuZEludGVyZmFjZT4gYmFja2VuZCwgRGlyZWN0aW9uIGRpcmVjdGlvbiwgSURCUmVxdWVzdCog
cmVxdWVzdCwgSURCQW55KiBzb3VyY2UsIElEQlRyYW5zYWN0aW9uKiB0cmFuc2FjdGlvbikKK0lE
QkN1cnNvcjo6SURCQ3Vyc29yKFBhc3NSZWZQdHI8SURCQ3Vyc29yQmFja2VuZEludGVyZmFjZT4g
YmFja2VuZCwgSW5kZXhlZERCOjpDdXJzb3JEaXJlY3Rpb24gZGlyZWN0aW9uLCBJREJSZXF1ZXN0
KiByZXF1ZXN0LCBJREJBbnkqIHNvdXJjZSwgSURCVHJhbnNhY3Rpb24qIHRyYW5zYWN0aW9uKQog
ICAgIDogbV9iYWNrZW5kKGJhY2tlbmQpCiAgICAgLCBtX3JlcXVlc3QocmVxdWVzdCkKICAgICAs
IG1fZGlyZWN0aW9uKGRpcmVjdGlvbikKQEAgLTIwNiw3ICsyMDYsNyBAQCB2b2lkIElEQkN1cnNv
cjo6Y29udGludWVGdW5jdGlvbihQYXNzUmVmUHRyPElEQktleT4ga2V5LCBFeGNlcHRpb25Db2Rl
JiBlYykKIAogICAgIGlmIChrZXkpIHsKICAgICAgICAgQVNTRVJUKG1fY3VycmVudEtleSk7Ci0g
ICAgICAgIGlmIChtX2RpcmVjdGlvbiA9PSBJREJDdXJzb3I6Ok5FWFQgfHwgbV9kaXJlY3Rpb24g
PT0gSURCQ3Vyc29yOjpORVhUX05PX0RVUExJQ0FURSkgeworICAgICAgICBpZiAobV9kaXJlY3Rp
b24gPT0gSW5kZXhlZERCOjpDdXJzb3JOZXh0IHx8IG1fZGlyZWN0aW9uID09IEluZGV4ZWREQjo6
Q3Vyc29yTmV4dE5vRHVwbGljYXRlKSB7CiAgICAgICAgICAgICBpZiAoIW1fY3VycmVudEtleS0+
aXNMZXNzVGhhbihrZXkuZ2V0KCkpKSB7CiAgICAgICAgICAgICAgICAgZWMgPSBJREJEYXRhYmFz
ZUV4Y2VwdGlvbjo6RGF0YUVycm9yOwogICAgICAgICAgICAgICAgIHJldHVybjsKQEAgLTI5OCwz
NCArMjk4LDM0IEBAIFBhc3NSZWZQdHI8SURCT2JqZWN0U3RvcmU+IElEQkN1cnNvcjo6ZWZmZWN0
aXZlT2JqZWN0U3RvcmUoKQogICAgIHJldHVybiBpbmRleC0+b2JqZWN0U3RvcmUoKTsKIH0KIAot
SURCQ3Vyc29yOjpEaXJlY3Rpb24gSURCQ3Vyc29yOjpzdHJpbmdUb0RpcmVjdGlvbihjb25zdCBT
dHJpbmcmIGRpcmVjdGlvblN0cmluZywgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwg
RXhjZXB0aW9uQ29kZSYgZWMpCitJbmRleGVkREI6OkN1cnNvckRpcmVjdGlvbiBJREJDdXJzb3I6
OnN0cmluZ1RvRGlyZWN0aW9uKGNvbnN0IFN0cmluZyYgZGlyZWN0aW9uU3RyaW5nLCBTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBpZiAo
ZGlyZWN0aW9uU3RyaW5nID09IElEQkN1cnNvcjo6ZGlyZWN0aW9uTmV4dCgpKQotICAgICAgICBy
ZXR1cm4gSURCQ3Vyc29yOjpORVhUOworICAgICAgICByZXR1cm4gSW5kZXhlZERCOjpDdXJzb3JO
ZXh0OwogICAgIGlmIChkaXJlY3Rpb25TdHJpbmcgPT0gSURCQ3Vyc29yOjpkaXJlY3Rpb25OZXh0
VW5pcXVlKCkpCi0gICAgICAgIHJldHVybiBJREJDdXJzb3I6Ok5FWFRfTk9fRFVQTElDQVRFOwor
ICAgICAgICByZXR1cm4gSW5kZXhlZERCOjpDdXJzb3JOZXh0Tm9EdXBsaWNhdGU7CiAgICAgaWYg
KGRpcmVjdGlvblN0cmluZyA9PSBJREJDdXJzb3I6OmRpcmVjdGlvblByZXYoKSkKLSAgICAgICAg
cmV0dXJuIElEQkN1cnNvcjo6UFJFVjsKKyAgICAgICAgcmV0dXJuIEluZGV4ZWREQjo6Q3Vyc29y
UHJldjsKICAgICBpZiAoZGlyZWN0aW9uU3RyaW5nID09IElEQkN1cnNvcjo6ZGlyZWN0aW9uUHJl
dlVuaXF1ZSgpKQotICAgICAgICByZXR1cm4gSURCQ3Vyc29yOjpQUkVWX05PX0RVUExJQ0FURTsK
KyAgICAgICAgcmV0dXJuIEluZGV4ZWREQjo6Q3Vyc29yUHJldk5vRHVwbGljYXRlOwogCiAgICAg
ZWMgPSBUeXBlRXJyb3I7Ci0gICAgcmV0dXJuIElEQkN1cnNvcjo6TkVYVDsKKyAgICByZXR1cm4g
SW5kZXhlZERCOjpDdXJzb3JOZXh0OwogfQogCiBjb25zdCBBdG9taWNTdHJpbmcmIElEQkN1cnNv
cjo6ZGlyZWN0aW9uVG9TdHJpbmcodW5zaWduZWQgc2hvcnQgZGlyZWN0aW9uKQogewogICAgIHN3
aXRjaCAoZGlyZWN0aW9uKSB7Ci0gICAgY2FzZSBJREJDdXJzb3I6Ok5FWFQ6CisgICAgY2FzZSBJ
bmRleGVkREI6OkN1cnNvck5leHQ6CiAgICAgICAgIHJldHVybiBJREJDdXJzb3I6OmRpcmVjdGlv
bk5leHQoKTsKIAotICAgIGNhc2UgSURCQ3Vyc29yOjpORVhUX05PX0RVUExJQ0FURToKKyAgICBj
YXNlIEluZGV4ZWREQjo6Q3Vyc29yTmV4dE5vRHVwbGljYXRlOgogICAgICAgICByZXR1cm4gSURC
Q3Vyc29yOjpkaXJlY3Rpb25OZXh0VW5pcXVlKCk7CiAKLSAgICBjYXNlIElEQkN1cnNvcjo6UFJF
VjoKKyAgICBjYXNlIEluZGV4ZWREQjo6Q3Vyc29yUHJldjoKICAgICAgICAgcmV0dXJuIElEQkN1
cnNvcjo6ZGlyZWN0aW9uUHJldigpOwogCi0gICAgY2FzZSBJREJDdXJzb3I6OlBSRVZfTk9fRFVQ
TElDQVRFOgorICAgIGNhc2UgSW5kZXhlZERCOjpDdXJzb3JQcmV2Tm9EdXBsaWNhdGU6CiAgICAg
ICAgIHJldHVybiBJREJDdXJzb3I6OmRpcmVjdGlvblByZXZVbmlxdWUoKTsKIAogICAgIGRlZmF1
bHQ6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJz
b3IuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvci5oCmluZGV4
IDFjODMxNjQwMjZkYTQ0YjNmMDhlZjkzZmY0MmUzYWI0NWZmZjU5MmMuLjE4ZDIwMGVhNjEwNjc3
OTdlYTRjOWVkYzUxNjFkMTVkYjRiM2RhZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL0lEQkN1cnNvci5oCkBAIC0zMCw2ICszMCw3IEBACiAKICNpbmNsdWRlICJJREJL
ZXkuaCIKICNpbmNsdWRlICJJREJUcmFuc2FjdGlvbi5oIgorI2luY2x1ZGUgIkluZGV4ZWREQi5o
IgogI2luY2x1ZGUgIlNjcmlwdFZhbHVlLmgiCiAjaW5jbHVkZSAiU2NyaXB0V3JhcHBhYmxlLmgi
CiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KQEAgLTQ5LDIyICs1MCwxNSBAQCB0eXBlZGVm
IGludCBFeGNlcHRpb25Db2RlOwogCiBjbGFzcyBJREJDdXJzb3IgOiBwdWJsaWMgU2NyaXB0V3Jh
cHBhYmxlLCBwdWJsaWMgUmVmQ291bnRlZDxJREJDdXJzb3I+IHsKIHB1YmxpYzoKLSAgICBlbnVt
IERpcmVjdGlvbiB7Ci0gICAgICAgIE5FWFQgPSAwLAotICAgICAgICBORVhUX05PX0RVUExJQ0FU
RSA9IDEsCi0gICAgICAgIFBSRVYgPSAyLAotICAgICAgICBQUkVWX05PX0RVUExJQ0FURSA9IDMs
Ci0gICAgfTsKLQogICAgIHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcmIGRpcmVjdGlvbk5leHQo
KTsKICAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiBkaXJlY3Rpb25OZXh0VW5pcXVlKCk7
CiAgICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYgZGlyZWN0aW9uUHJldigpOwogICAgIHN0
YXRpYyBjb25zdCBBdG9taWNTdHJpbmcmIGRpcmVjdGlvblByZXZVbmlxdWUoKTsKIAotICAgIHN0
YXRpYyBJREJDdXJzb3I6OkRpcmVjdGlvbiBzdHJpbmdUb0RpcmVjdGlvbihjb25zdCBTdHJpbmcm
IG1vZGVTdHJpbmcsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBFeGNlcHRpb25Db2RlJik7Cisg
ICAgc3RhdGljIEluZGV4ZWREQjo6Q3Vyc29yRGlyZWN0aW9uIHN0cmluZ1RvRGlyZWN0aW9uKGNv
bnN0IFN0cmluZyYgbW9kZVN0cmluZywgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIEV4Y2VwdGlv
bkNvZGUmKTsKICAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiBkaXJlY3Rpb25Ub1N0cmlu
Zyh1bnNpZ25lZCBzaG9ydCBtb2RlKTsKIAotICAgIHN0YXRpYyBQYXNzUmVmUHRyPElEQkN1cnNv
cj4gY3JlYXRlKFBhc3NSZWZQdHI8SURCQ3Vyc29yQmFja2VuZEludGVyZmFjZT4sIERpcmVjdGlv
biwgSURCUmVxdWVzdCosIElEQkFueSogc291cmNlLCBJREJUcmFuc2FjdGlvbiopOworICAgIHN0
YXRpYyBQYXNzUmVmUHRyPElEQkN1cnNvcj4gY3JlYXRlKFBhc3NSZWZQdHI8SURCQ3Vyc29yQmFj
a2VuZEludGVyZmFjZT4sIEluZGV4ZWREQjo6Q3Vyc29yRGlyZWN0aW9uLCBJREJSZXF1ZXN0Kiwg
SURCQW55KiBzb3VyY2UsIElEQlRyYW5zYWN0aW9uKik7CiAgICAgdmlydHVhbCB+SURCQ3Vyc29y
KCk7CiAKICAgICAvLyBJbXBsZW1lbnQgdGhlIElETApAQCAtODksNyArODMsNyBAQCBwdWJsaWM6
CiAgICAgUGFzc1JlZlB0cjxJREJLZXk+IGlkYlByaW1hcnlLZXkoKSB7IHJldHVybiBtX2N1cnJl
bnRQcmltYXJ5S2V5OyB9CiAKIHByb3RlY3RlZDoKLSAgICBJREJDdXJzb3IoUGFzc1JlZlB0cjxJ
REJDdXJzb3JCYWNrZW5kSW50ZXJmYWNlPiwgRGlyZWN0aW9uLCBJREJSZXF1ZXN0KiwgSURCQW55
KiBzb3VyY2UsIElEQlRyYW5zYWN0aW9uKik7CisgICAgSURCQ3Vyc29yKFBhc3NSZWZQdHI8SURC
Q3Vyc29yQmFja2VuZEludGVyZmFjZT4sIEluZGV4ZWREQjo6Q3Vyc29yRGlyZWN0aW9uLCBJREJS
ZXF1ZXN0KiwgSURCQW55KiBzb3VyY2UsIElEQlRyYW5zYWN0aW9uKik7CiAgICAgdmlydHVhbCBi
b29sIGlzS2V5Q3Vyc29yKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQogCiBwcml2YXRlOgpAQCAt
OTcsNyArOTEsNyBAQCBwcml2YXRlOgogCiAgICAgUmVmUHRyPElEQkN1cnNvckJhY2tlbmRJbnRl
cmZhY2U+IG1fYmFja2VuZDsKICAgICBSZWZQdHI8SURCUmVxdWVzdD4gbV9yZXF1ZXN0OwotICAg
IGNvbnN0IERpcmVjdGlvbiBtX2RpcmVjdGlvbjsKKyAgICBjb25zdCBJbmRleGVkREI6OkN1cnNv
ckRpcmVjdGlvbiBtX2RpcmVjdGlvbjsKICAgICBSZWZQdHI8SURCQW55PiBtX3NvdXJjZTsKICAg
ICBSZWZQdHI8SURCVHJhbnNhY3Rpb24+IG1fdHJhbnNhY3Rpb247CiAgICAgSURCVHJhbnNhY3Rp
b246Ok9wZW5DdXJzb3JOb3RpZmllciBtX3RyYW5zYWN0aW9uTm90aWZpZXI7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3JCYWNrZW5kSW1wbC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3JCYWNrZW5kSW1w
bC5jcHAKaW5kZXggMzMyZDkwMTQyNWFiMWJhYTRhNDRkODg5YzFkNWQyMTJkNjI4MGVkOC4uMTM2
MGZiOTAyMDVlYTE5OGY3OGMwMzA3Zjk2YzYyOWU5ODJmZTM1OCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yQmFja2VuZEltcGwuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvckJhY2tlbmRJbXBsLmNw
cApAQCAtMzQsNyArMzQsNiBAQAogI2luY2x1ZGUgIklEQkRhdGFiYXNlRXJyb3IuaCIKICNpbmNs
dWRlICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5oIgogI2luY2x1ZGUgIklEQktleVJhbmdlLmgiCi0j
aW5jbHVkZSAiSURCUmVxdWVzdC5oIgogI2luY2x1ZGUgIklEQlRyYWNpbmcuaCIKICNpbmNsdWRl
ICJJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsLmgiCiAjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgi
CkBAIC0xMDEsNyArMTAwLDcgQEAgcHJpdmF0ZToKICAgICBSZWZQdHI8SURCQ2FsbGJhY2tzPiBt
X2NhbGxiYWNrczsKIH07CiAKLUlEQkN1cnNvckJhY2tlbmRJbXBsOjpJREJDdXJzb3JCYWNrZW5k
SW1wbChQYXNzUmVmUHRyPElEQkJhY2tpbmdTdG9yZTo6Q3Vyc29yPiBjdXJzb3IsIEN1cnNvclR5
cGUgY3Vyc29yVHlwZSwgSURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlOjpUYXNrVHlwZSB0YXNr
VHlwZSwgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbCogdHJhbnNhY3Rpb24sIGludDY0X3Qgb2Jq
ZWN0U3RvcmVJZCkKK0lEQkN1cnNvckJhY2tlbmRJbXBsOjpJREJDdXJzb3JCYWNrZW5kSW1wbChQ
YXNzUmVmUHRyPElEQkJhY2tpbmdTdG9yZTo6Q3Vyc29yPiBjdXJzb3IsIEluZGV4ZWREQjo6Q3Vy
c29yVHlwZSBjdXJzb3JUeXBlLCBJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2U6OlRhc2tUeXBl
IHRhc2tUeXBlLCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsKiB0cmFuc2FjdGlvbiwgaW50NjRf
dCBvYmplY3RTdG9yZUlkKQogICAgIDogbV90YXNrVHlwZSh0YXNrVHlwZSkKICAgICAsIG1fY3Vy
c29yVHlwZShjdXJzb3JUeXBlKQogICAgICwgbV9kYXRhYmFzZSh0cmFuc2FjdGlvbi0+ZGF0YWJh
c2UoKSkKQEAgLTE2MCw3ICsxNTksNyBAQCB2b2lkIElEQkN1cnNvckJhY2tlbmRJbXBsOjpDdXJz
b3JJdGVyYXRpb25PcGVyYXRpb246OnBlcmZvcm0oSURCVHJhbnNhY3Rpb25CYWNrZQogdm9pZCBJ
REJDdXJzb3JCYWNrZW5kSW1wbDo6ZGVsZXRlRnVuY3Rpb24oUGFzc1JlZlB0cjxJREJDYWxsYmFj
a3M+IHBycENhbGxiYWNrcywgRXhjZXB0aW9uQ29kZSYpCiB7CiAgICAgSURCX1RSQUNFKCJJREJD
dXJzb3JCYWNrZW5kSW1wbDo6ZGVsZXRlIik7Ci0gICAgQVNTRVJUKG1fdHJhbnNhY3Rpb24tPm1v
ZGUoKSAhPSBJREJUcmFuc2FjdGlvbjo6UkVBRF9PTkxZKTsKKyAgICBBU1NFUlQobV90cmFuc2Fj
dGlvbi0+bW9kZSgpICE9IEluZGV4ZWREQjo6VHJhbnNhY3Rpb25SZWFkT25seSk7CiAgICAgUmVm
UHRyPElEQktleVJhbmdlPiBrZXlSYW5nZSA9IElEQktleVJhbmdlOjpjcmVhdGUobV9jdXJzb3It
PnByaW1hcnlLZXkoKSk7CiAgICAgbV9kYXRhYmFzZS0+ZGVsZXRlUmFuZ2UobV90cmFuc2FjdGlv
bi0+aWQoKSwgbV9vYmplY3RTdG9yZUlkLCBrZXlSYW5nZS5yZWxlYXNlKCksIHBycENhbGxiYWNr
cyk7CiB9CkBAIC0xOTYsMTAgKzE5NSwxMCBAQCB2b2lkIElEQkN1cnNvckJhY2tlbmRJbXBsOjpD
dXJzb3JQcmVmZXRjaEl0ZXJhdGlvbk9wZXJhdGlvbjo6cGVyZm9ybShJREJUcmFuc2FjdAogICAg
ICAgICBmb3VuZFByaW1hcnlLZXlzLmFwcGVuZChtX2N1cnNvci0+bV9jdXJzb3ItPnByaW1hcnlL
ZXkoKSk7CiAKICAgICAgICAgc3dpdGNoIChtX2N1cnNvci0+bV9jdXJzb3JUeXBlKSB7Ci0gICAg
ICAgIGNhc2UgS2V5T25seToKKyAgICAgICAgY2FzZSBJbmRleGVkREI6OkN1cnNvcktleU9ubHk6
CiAgICAgICAgICAgICBmb3VuZFZhbHVlcy5hcHBlbmQoU2hhcmVkQnVmZmVyOjpjcmVhdGUoKSk7
CiAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBLZXlBbmRWYWx1ZToKKyAgICAgICAg
Y2FzZSBJbmRleGVkREI6OkN1cnNvcktleUFuZFZhbHVlOgogICAgICAgICAgICAgc2l6ZUVzdGlt
YXRlICs9IG1fY3Vyc29yLT5tX2N1cnNvci0+dmFsdWUoKS0+c2l6ZSgpOwogICAgICAgICAgICAg
Zm91bmRWYWx1ZXMuYXBwZW5kKG1fY3Vyc29yLT5tX2N1cnNvci0+dmFsdWUoKSk7CiAgICAgICAg
ICAgICBicmVhazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L0lEQkN1cnNvckJhY2tlbmRJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9JREJDdXJzb3JCYWNrZW5kSW1wbC5oCmluZGV4IDY5OWUyZjU4ZDZkMTc2MjFmNGNhMTI0ZmQy
ZWM4YjBiMTMzMTJhNDguLjU1ZTI2YmI3ZDQ0OGZkNGIxZTE2NWE1Y2JkMzZlODM4Y2EyZTM1NDYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvckJh
Y2tlbmRJbXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vy
c29yQmFja2VuZEltcGwuaApAQCAtMzAsNyArMzAsNiBAQAogI2lmIEVOQUJMRShJTkRFWEVEX0RB
VEFCQVNFKQogCiAjaW5jbHVkZSAiSURCQmFja2luZ1N0b3JlLmgiCi0jaW5jbHVkZSAiSURCQ3Vy
c29yLmgiCiAjaW5jbHVkZSAiSURCQ3Vyc29yQmFja2VuZEludGVyZmFjZS5oIgogI2luY2x1ZGUg
IklEQlRyYW5zYWN0aW9uQmFja2VuZEltcGwuaCIKICNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIK
QEAgLTQ1LDExICs0NCwxMSBAQCBjbGFzcyBJREJLZXlSYW5nZTsKIAogY2xhc3MgSURCQ3Vyc29y
QmFja2VuZEltcGwgOiBwdWJsaWMgSURCQ3Vyc29yQmFja2VuZEludGVyZmFjZSB7CiBwdWJsaWM6
Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8SURCQ3Vyc29yQmFja2VuZEltcGw+IGNyZWF0ZShQYXNz
UmVmUHRyPElEQkJhY2tpbmdTdG9yZTo6Q3Vyc29yPiBjdXJzb3IsIEN1cnNvclR5cGUgY3Vyc29y
VHlwZSwgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbCogdHJhbnNhY3Rpb24sIGludDY0X3Qgb2Jq
ZWN0U3RvcmVJZCkKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxJREJDdXJzb3JCYWNrZW5kSW1wbD4g
Y3JlYXRlKFBhc3NSZWZQdHI8SURCQmFja2luZ1N0b3JlOjpDdXJzb3I+IGN1cnNvciwgSW5kZXhl
ZERCOjpDdXJzb3JUeXBlIGN1cnNvclR5cGUsIElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGwqIHRy
YW5zYWN0aW9uLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQpCiAgICAgewogICAgICAgICByZXR1cm4g
YWRvcHRSZWYobmV3IElEQkN1cnNvckJhY2tlbmRJbXBsKGN1cnNvciwgY3Vyc29yVHlwZSwgSURC
RGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlOjpOb3JtYWxUYXNrLCB0cmFuc2FjdGlvbiwgb2JqZWN0
U3RvcmVJZCkpOwogICAgIH0KLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxJREJDdXJzb3JCYWNrZW5k
SW1wbD4gY3JlYXRlKFBhc3NSZWZQdHI8SURCQmFja2luZ1N0b3JlOjpDdXJzb3I+IGN1cnNvciwg
Q3Vyc29yVHlwZSBjdXJzb3JUeXBlLCBJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2U6OlRhc2tU
eXBlIHRhc2tUeXBlLCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsKiB0cmFuc2FjdGlvbiwgaW50
NjRfdCBvYmplY3RTdG9yZUlkKQorICAgIHN0YXRpYyBQYXNzUmVmUHRyPElEQkN1cnNvckJhY2tl
bmRJbXBsPiBjcmVhdGUoUGFzc1JlZlB0cjxJREJCYWNraW5nU3RvcmU6OkN1cnNvcj4gY3Vyc29y
LCBJbmRleGVkREI6OkN1cnNvclR5cGUgY3Vyc29yVHlwZSwgSURCRGF0YWJhc2VCYWNrZW5kSW50
ZXJmYWNlOjpUYXNrVHlwZSB0YXNrVHlwZSwgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbCogdHJh
bnNhY3Rpb24sIGludDY0X3Qgb2JqZWN0U3RvcmVJZCkKICAgICB7CiAgICAgICAgIHJldHVybiBh
ZG9wdFJlZihuZXcgSURCQ3Vyc29yQmFja2VuZEltcGwoY3Vyc29yLCBjdXJzb3JUeXBlLCB0YXNr
VHlwZSwgdHJhbnNhY3Rpb24sIG9iamVjdFN0b3JlSWQpKTsKICAgICB9CkBAIC02NSwxOCArNjQs
MTggQEAgcHVibGljOgogCiAgICAgUGFzc1JlZlB0cjxJREJLZXk+IGtleSgpIGNvbnN0IHsgcmV0
dXJuIG1fY3Vyc29yLT5rZXkoKTsgfQogICAgIFBhc3NSZWZQdHI8SURCS2V5PiBwcmltYXJ5S2V5
KCkgY29uc3QgeyByZXR1cm4gbV9jdXJzb3ItPnByaW1hcnlLZXkoKTsgfQotICAgIFBhc3NSZWZQ
dHI8U2hhcmVkQnVmZmVyPiB2YWx1ZSgpIGNvbnN0IHsgcmV0dXJuIChtX2N1cnNvclR5cGUgPT0g
S2V5T25seSkgPyAwIDogbV9jdXJzb3ItPnZhbHVlKCk7IH0KKyAgICBQYXNzUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gdmFsdWUoKSBjb25zdCB7IHJldHVybiAobV9jdXJzb3JUeXBlID09IEluZGV4ZWRE
Qjo6Q3Vyc29yS2V5T25seSkgPyAwIDogbV9jdXJzb3ItPnZhbHVlKCk7IH0KICAgICB2b2lkIGNs
b3NlKCk7CiAKIHByaXZhdGU6Ci0gICAgSURCQ3Vyc29yQmFja2VuZEltcGwoUGFzc1JlZlB0cjxJ
REJCYWNraW5nU3RvcmU6OkN1cnNvcj4sIEN1cnNvclR5cGUsIElEQkRhdGFiYXNlQmFja2VuZElu
dGVyZmFjZTo6VGFza1R5cGUsIElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGwqLCBpbnQ2NF90IG9i
amVjdFN0b3JlSWQpOworICAgIElEQkN1cnNvckJhY2tlbmRJbXBsKFBhc3NSZWZQdHI8SURCQmFj
a2luZ1N0b3JlOjpDdXJzb3I+LCBJbmRleGVkREI6OkN1cnNvclR5cGUsIElEQkRhdGFiYXNlQmFj
a2VuZEludGVyZmFjZTo6VGFza1R5cGUsIElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGwqLCBpbnQ2
NF90IG9iamVjdFN0b3JlSWQpOwogCiAgICAgY2xhc3MgQ3Vyc29ySXRlcmF0aW9uT3BlcmF0aW9u
OwogICAgIGNsYXNzIEN1cnNvckFkdmFuY2VPcGVyYXRpb247CiAgICAgY2xhc3MgQ3Vyc29yUHJl
ZmV0Y2hJdGVyYXRpb25PcGVyYXRpb247CiAKICAgICBJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZh
Y2U6OlRhc2tUeXBlIG1fdGFza1R5cGU7Ci0gICAgQ3Vyc29yVHlwZSBtX2N1cnNvclR5cGU7Cisg
ICAgSW5kZXhlZERCOjpDdXJzb3JUeXBlIG1fY3Vyc29yVHlwZTsKICAgICBjb25zdCBSZWZQdHI8
SURCRGF0YWJhc2VCYWNrZW5kSW1wbD4gbV9kYXRhYmFzZTsKICAgICBjb25zdCBSZWZQdHI8SURC
VHJhbnNhY3Rpb25CYWNrZW5kSW1wbD4gbV90cmFuc2FjdGlvbjsKICAgICBjb25zdCBpbnQ2NF90
IG1fb2JqZWN0U3RvcmVJZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL0lEQkN1cnNvckJhY2tlbmRJbnRlcmZhY2UuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL0lEQkN1cnNvckJhY2tlbmRJbnRlcmZhY2UuaAppbmRleCBhZWIyOTc2YjA4
NjJhNzlhZDQ0MzgxM2U5ZTc2Y2ZhMjZlMzkwZjE2Li45NjNmMzJiMDBhYjMwOTNhOWNmYjhiZWNh
YTJlYzg1MWJlYzg4YWM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9JREJDdXJzb3JCYWNrZW5kSW50ZXJmYWNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yQmFja2VuZEludGVyZmFjZS5oCkBAIC0zMyw3ICszMyw2
IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgSURCQW55OwogY2xhc3MgSURCQ2Fs
bGJhY2tzOwogY2xhc3MgSURCS2V5OwogY2xhc3MgSURCUmVxdWVzdDsKQEAgLTQ0LDExICs0Myw2
IEBAIGNsYXNzIElEQkN1cnNvckJhY2tlbmRJbnRlcmZhY2UgOiBwdWJsaWMgUmVmQ291bnRlZDxJ
REJDdXJzb3JCYWNrZW5kSW50ZXJmYWNlPiB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+SURCQ3Vy
c29yQmFja2VuZEludGVyZmFjZSgpIHt9CiAKLSAgICBlbnVtIEN1cnNvclR5cGUgewotICAgICAg
ICBLZXlBbmRWYWx1ZSA9IDAsCi0gICAgICAgIEtleU9ubHkKLSAgICB9OwotCiAgICAgdmlydHVh
bCB2b2lkIGFkdmFuY2UodW5zaWduZWQgbG9uZyBjb3VudCwgUGFzc1JlZlB0cjxJREJDYWxsYmFj
a3M+LCBFeGNlcHRpb25Db2RlJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBjb250aW51ZUZ1bmN0
aW9uKFBhc3NSZWZQdHI8SURCS2V5PiBrZXksIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiwgRXhj
ZXB0aW9uQ29kZSYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlRnVuY3Rpb24oUGFzc1Jl
ZlB0cjxJREJDYWxsYmFja3M+LCBFeGNlcHRpb25Db2RlJikgPSAwOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yV2l0aFZhbHVlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvcldpdGhWYWx1ZS5jcHAKaW5k
ZXggYjkwYmEzZDliNTI2NTMxNzA5MmJiZTU1ODE3NTBkYzAyNzg1ZGFhYS4uNDAzNjExMTA0OWVi
NWQ5MjlhZGIyMjdjNmZlM2EzY2JlYzM2ZjE4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yV2l0aFZhbHVlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3JXaXRoVmFsdWUuY3BwCkBAIC0zMyw3ICsz
Myw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUGFzc1JlZlB0cjxJREJDdXJzb3JXaXRo
VmFsdWU+IElEQkN1cnNvcldpdGhWYWx1ZTo6Y3JlYXRlKFBhc3NSZWZQdHI8SURCQ3Vyc29yQmFj
a2VuZEludGVyZmFjZT4gYmFja2VuZCwgRGlyZWN0aW9uIGRpcmVjdGlvbiwgSURCUmVxdWVzdCog
cmVxdWVzdCwgSURCQW55KiBzb3VyY2UsIElEQlRyYW5zYWN0aW9uKiB0cmFuc2FjdGlvbikKK1Bh
c3NSZWZQdHI8SURCQ3Vyc29yV2l0aFZhbHVlPiBJREJDdXJzb3JXaXRoVmFsdWU6OmNyZWF0ZShQ
YXNzUmVmUHRyPElEQkN1cnNvckJhY2tlbmRJbnRlcmZhY2U+IGJhY2tlbmQsIEluZGV4ZWREQjo6
Q3Vyc29yRGlyZWN0aW9uIGRpcmVjdGlvbiwgSURCUmVxdWVzdCogcmVxdWVzdCwgSURCQW55KiBz
b3VyY2UsIElEQlRyYW5zYWN0aW9uKiB0cmFuc2FjdGlvbikKIHsKICAgICByZXR1cm4gYWRvcHRS
ZWYobmV3IElEQkN1cnNvcldpdGhWYWx1ZShiYWNrZW5kLCBkaXJlY3Rpb24sIHJlcXVlc3QsIHNv
dXJjZSwgdHJhbnNhY3Rpb24pKTsKIH0KQEAgLTQ0LDcgKzQ0LDcgQEAgUGFzc1JlZlB0cjxJREJD
dXJzb3JXaXRoVmFsdWU+IElEQkN1cnNvcldpdGhWYWx1ZTo6ZnJvbUN1cnNvcihQYXNzUmVmUHRy
PElEQkN1cnMKICAgICByZXR1cm4gY3Vyc29yV2l0aFZhbHVlLnJlbGVhc2UoKTsKIH0KIAotSURC
Q3Vyc29yV2l0aFZhbHVlOjpJREJDdXJzb3JXaXRoVmFsdWUoUGFzc1JlZlB0cjxJREJDdXJzb3JC
YWNrZW5kSW50ZXJmYWNlPiBiYWNrZW5kLCBEaXJlY3Rpb24gZGlyZWN0aW9uLCBJREJSZXF1ZXN0
KiByZXF1ZXN0LCBJREJBbnkqIHNvdXJjZSwgSURCVHJhbnNhY3Rpb24qIHRyYW5zYWN0aW9uKQor
SURCQ3Vyc29yV2l0aFZhbHVlOjpJREJDdXJzb3JXaXRoVmFsdWUoUGFzc1JlZlB0cjxJREJDdXJz
b3JCYWNrZW5kSW50ZXJmYWNlPiBiYWNrZW5kLCBJbmRleGVkREI6OkN1cnNvckRpcmVjdGlvbiBk
aXJlY3Rpb24sIElEQlJlcXVlc3QqIHJlcXVlc3QsIElEQkFueSogc291cmNlLCBJREJUcmFuc2Fj
dGlvbiogdHJhbnNhY3Rpb24pCiAgICAgOiBJREJDdXJzb3IoYmFja2VuZCwgZGlyZWN0aW9uLCBy
ZXF1ZXN0LCBzb3VyY2UsIHRyYW5zYWN0aW9uKQogewogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yV2l0aFZhbHVlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3JXaXRoVmFsdWUuaAppbmRleCBjYmI4NTBh
MWNkMDJmMGFhMjA5NTJmMmNmZGI4ODhmYzhjMDI4NjUwLi4xNTgyM2EwNjI0YTMxZGU5ZjJjMmRk
NDNkYzBjOTMzZjRjN2M2MDRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9JREJDdXJzb3JXaXRoVmFsdWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9JREJDdXJzb3JXaXRoVmFsdWUuaApAQCAtMzQsNyArMzQsNyBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKIGNsYXNzIElEQkN1cnNvcldpdGhWYWx1ZSA6IHB1YmxpYyBJREJDdXJz
b3IgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPElEQkN1cnNvcldpdGhWYWx1ZT4g
Y3JlYXRlKFBhc3NSZWZQdHI8SURCQ3Vyc29yQmFja2VuZEludGVyZmFjZT4sIERpcmVjdGlvbiwg
SURCUmVxdWVzdCosIElEQkFueSogc291cmNlLCBJREJUcmFuc2FjdGlvbiopOworICAgIHN0YXRp
YyBQYXNzUmVmUHRyPElEQkN1cnNvcldpdGhWYWx1ZT4gY3JlYXRlKFBhc3NSZWZQdHI8SURCQ3Vy
c29yQmFja2VuZEludGVyZmFjZT4sIEluZGV4ZWREQjo6Q3Vyc29yRGlyZWN0aW9uLCBJREJSZXF1
ZXN0KiwgSURCQW55KiBzb3VyY2UsIElEQlRyYW5zYWN0aW9uKik7CiAgICAgc3RhdGljIFBhc3NS
ZWZQdHI8SURCQ3Vyc29yV2l0aFZhbHVlPiBmcm9tQ3Vyc29yKFBhc3NSZWZQdHI8SURCQ3Vyc29y
Pik7CiAgICAgdmlydHVhbCB+SURCQ3Vyc29yV2l0aFZhbHVlKCk7CiAKQEAgLTQ1LDcgKzQ1LDcg
QEAgcHJvdGVjdGVkOgogICAgIHZpcnR1YWwgYm9vbCBpc0tleUN1cnNvcigpIGNvbnN0IE9WRVJS
SURFIHsgcmV0dXJuIGZhbHNlOyB9CiAKIHByaXZhdGU6Ci0gICAgSURCQ3Vyc29yV2l0aFZhbHVl
KFBhc3NSZWZQdHI8SURCQ3Vyc29yQmFja2VuZEludGVyZmFjZT4sIERpcmVjdGlvbiwgSURCUmVx
dWVzdCosIElEQkFueSogc291cmNlLCBJREJUcmFuc2FjdGlvbiopOworICAgIElEQkN1cnNvcldp
dGhWYWx1ZShQYXNzUmVmUHRyPElEQkN1cnNvckJhY2tlbmRJbnRlcmZhY2U+LCBJbmRleGVkREI6
OkN1cnNvckRpcmVjdGlvbiwgSURCUmVxdWVzdCosIElEQkFueSogc291cmNlLCBJREJUcmFuc2Fj
dGlvbiopOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2UuY3BwIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2UuY3BwCmluZGV4IGM5OWE4ZDVjODRmZTE1
MjE4ZmIwN2U4ODIzMjQxMGIwMWU5MzcxZDMuLjljZTY2NWJiN2E3YzZkZDdhZjk4NGI3NDY4MTVi
MTgwYjQ0NjRmOWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L0lEQkRhdGFiYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9J
REJEYXRhYmFzZS5jcHAKQEAgLTIyNyw3ICsyMjcsNyBAQCBQYXNzUmVmUHRyPElEQlRyYW5zYWN0
aW9uPiBJREJEYXRhYmFzZTo6dHJhbnNhY3Rpb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29u
dAogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAKLSAgICBJREJUcmFuc2FjdGlvbjo6TW9kZSBt
b2RlID0gSURCVHJhbnNhY3Rpb246OnN0cmluZ1RvTW9kZShtb2RlU3RyaW5nLCBjb250ZXh0LCBl
Yyk7CisgICAgSW5kZXhlZERCOjpUcmFuc2FjdGlvbk1vZGUgbW9kZSA9IElEQlRyYW5zYWN0aW9u
OjpzdHJpbmdUb01vZGUobW9kZVN0cmluZywgY29udGV4dCwgZWMpOwogICAgIGlmIChlYykKICAg
ICAgICAgcmV0dXJuIDA7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL0lEQkRhdGFiYXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9J
REJEYXRhYmFzZS5oCmluZGV4IGRlMTNiNjdmYmU4ZjBkODZjYTk1NDZhMmIwMzIzMDAxMmEyMjI5
ZTAuLjhkZDUyYzk2MDA1ZjJjMDFmMzBjZTc3ZTE1MDk5MDgyNDkyODUzZTMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2UuaApAQCAtMzEsMTEgKzMx
LDExIEBACiAjaW5jbHVkZSAiRGljdGlvbmFyeS5oIgogI2luY2x1ZGUgIkV2ZW50LmgiCiAjaW5j
bHVkZSAiRXZlbnRUYXJnZXQuaCIKLSNpbmNsdWRlICJJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZh
Y2UuaCIKICNpbmNsdWRlICJJREJEYXRhYmFzZUNhbGxiYWNrcy5oIgogI2luY2x1ZGUgIklEQk1l
dGFkYXRhLmgiCiAjaW5jbHVkZSAiSURCT2JqZWN0U3RvcmUuaCIKICNpbmNsdWRlICJJREJUcmFu
c2FjdGlvbi5oIgorI2luY2x1ZGUgIkluZGV4ZWREQi5oIgogI2luY2x1ZGUgIlNjcmlwdFdyYXBw
YWJsZS5oIgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNv
dW50ZWQuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lE
QkRhdGFiYXNlQmFja2VuZEltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvSURCRGF0YWJhc2VCYWNrZW5kSW1wbC5jcHAKaW5kZXggOTgwZDE0ZjRmZTY1OTY2ZTIwNWYx
NjQ3MjA3NmRiNTg4NzAwZGE2Ny4uMmMzMDMyMGE1NGYzNGNjMjMyODcxY2RjZjdiM2NkYWIxYzQ3
Y2M2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0
YWJhc2VCYWNrZW5kSW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvSURCRGF0YWJhc2VCYWNrZW5kSW1wbC5jcHAKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRl
ICJJREJDdXJzb3JCYWNrZW5kSW1wbC5oIgogI2luY2x1ZGUgIklEQkRhdGFiYXNlRXhjZXB0aW9u
LmgiCiAjaW5jbHVkZSAiSURCRmFjdG9yeUJhY2tlbmRJbXBsLmgiCisjaW5jbHVkZSAiSURCS2V5
UmFuZ2UuaCIKICNpbmNsdWRlICJJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsLmgiCiAjaW5jbHVk
ZSAiSURCVHJhY2luZy5oIgogI2luY2x1ZGUgIklEQlRyYW5zYWN0aW9uQmFja2VuZEltcGwuaCIK
QEAgLTIzOCwxMyArMjM5LDEzIEBAIHByaXZhdGU6CiAKIGNsYXNzIEdldE9wZXJhdGlvbiA6IHB1
YmxpYyBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsOjpPcGVyYXRpb24gewogcHVibGljOgotICAg
IHN0YXRpYyBQYXNzT3duUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGw6Ok9wZXJhdGlvbj4g
Y3JlYXRlKFBhc3NSZWZQdHI8SURCQmFja2luZ1N0b3JlPiBiYWNraW5nU3RvcmUsIGNvbnN0IElE
QkRhdGFiYXNlTWV0YWRhdGEmIG1ldGFkYXRhLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGludDY0
X3QgaW5kZXhJZCwgUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4ga2V5UmFuZ2UsIElEQkN1cnNvckJh
Y2tlbmRJbnRlcmZhY2U6OkN1cnNvclR5cGUgY3Vyc29yVHlwZSwgUGFzc1JlZlB0cjxJREJDYWxs
YmFja3M+IGNhbGxiYWNrcykKKyAgICBzdGF0aWMgUGFzc093blB0cjxJREJUcmFuc2FjdGlvbkJh
Y2tlbmRJbXBsOjpPcGVyYXRpb24+IGNyZWF0ZShQYXNzUmVmUHRyPElEQkJhY2tpbmdTdG9yZT4g
YmFja2luZ1N0b3JlLCBjb25zdCBJREJEYXRhYmFzZU1ldGFkYXRhJiBtZXRhZGF0YSwgaW50NjRf
dCBvYmplY3RTdG9yZUlkLCBpbnQ2NF90IGluZGV4SWQsIFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+
IGtleVJhbmdlLCBJbmRleGVkREI6OkN1cnNvclR5cGUgY3Vyc29yVHlwZSwgUGFzc1JlZlB0cjxJ
REJDYWxsYmFja3M+IGNhbGxiYWNrcykKICAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFB0cihu
ZXcgR2V0T3BlcmF0aW9uKGJhY2tpbmdTdG9yZSwgbWV0YWRhdGEsIG9iamVjdFN0b3JlSWQsIGlu
ZGV4SWQsIGtleVJhbmdlLCBjdXJzb3JUeXBlLCBjYWxsYmFja3MpKTsKICAgICB9CiAgICAgdmly
dHVhbCB2b2lkIHBlcmZvcm0oSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbCopOwogcHJpdmF0ZToK
LSAgICBHZXRPcGVyYXRpb24oUGFzc1JlZlB0cjxJREJCYWNraW5nU3RvcmU+IGJhY2tpbmdTdG9y
ZSwgY29uc3QgSURCRGF0YWJhc2VNZXRhZGF0YSYgbWV0YWRhdGEsIGludDY0X3Qgb2JqZWN0U3Rv
cmVJZCwgaW50NjRfdCBpbmRleElkLCBQYXNzUmVmUHRyPElEQktleVJhbmdlPiBrZXlSYW5nZSwg
SURCQ3Vyc29yQmFja2VuZEludGVyZmFjZTo6Q3Vyc29yVHlwZSBjdXJzb3JUeXBlLCBQYXNzUmVm
UHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tzKQorICAgIEdldE9wZXJhdGlvbihQYXNzUmVmUHRy
PElEQkJhY2tpbmdTdG9yZT4gYmFja2luZ1N0b3JlLCBjb25zdCBJREJEYXRhYmFzZU1ldGFkYXRh
JiBtZXRhZGF0YSwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBpbnQ2NF90IGluZGV4SWQsIFBhc3NS
ZWZQdHI8SURCS2V5UmFuZ2U+IGtleVJhbmdlLCBJbmRleGVkREI6OkN1cnNvclR5cGUgY3Vyc29y
VHlwZSwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcykKICAgICAgICAgOiBtX2Jh
Y2tpbmdTdG9yZShiYWNraW5nU3RvcmUpCiAgICAgICAgICwgbV9kYXRhYmFzZUlkKG1ldGFkYXRh
LmlkKQogICAgICAgICAsIG1fb2JqZWN0U3RvcmVJZChvYmplY3RTdG9yZUlkKQpAQCAtMjY2LDcg
KzI2Nyw3IEBAIHByaXZhdGU6CiAgICAgY29uc3QgSURCS2V5UGF0aCBtX2tleVBhdGg7CiAgICAg
Y29uc3QgYm9vbCBtX2F1dG9JbmNyZW1lbnQ7CiAgICAgY29uc3QgUmVmUHRyPElEQktleVJhbmdl
PiBtX2tleVJhbmdlOwotICAgIGNvbnN0IElEQkN1cnNvckJhY2tlbmRJbnRlcmZhY2U6OkN1cnNv
clR5cGUgbV9jdXJzb3JUeXBlOworICAgIGNvbnN0IEluZGV4ZWREQjo6Q3Vyc29yVHlwZSBtX2N1
cnNvclR5cGU7CiAgICAgY29uc3QgUmVmUHRyPElEQkNhbGxiYWNrcz4gbV9jYWxsYmFja3M7CiB9
OwogCkBAIC0zMjAsMTMgKzMyMSwxMyBAQCBwcml2YXRlOgogCiBjbGFzcyBPcGVuQ3Vyc29yT3Bl
cmF0aW9uIDogcHVibGljIElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGw6Ok9wZXJhdGlvbiB7CiBw
dWJsaWM6Ci0gICAgc3RhdGljIFBhc3NPd25QdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbDo6
T3BlcmF0aW9uPiBjcmVhdGUoUGFzc1JlZlB0cjxJREJCYWNraW5nU3RvcmU+IGJhY2tpbmdTdG9y
ZSwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGludDY0X3QgaW5k
ZXhJZCwgUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4ga2V5UmFuZ2UsIHVuc2lnbmVkIHNob3J0IGRp
cmVjdGlvbiwgSURCQ3Vyc29yQmFja2VuZEludGVyZmFjZTo6Q3Vyc29yVHlwZSBjdXJzb3JUeXBl
LCBJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2U6OlRhc2tUeXBlIHRhc2tUeXBlLCBQYXNzUmVm
UHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tzKQorICAgIHN0YXRpYyBQYXNzT3duUHRyPElEQlRy
YW5zYWN0aW9uQmFja2VuZEltcGw6Ok9wZXJhdGlvbj4gY3JlYXRlKFBhc3NSZWZQdHI8SURCQmFj
a2luZ1N0b3JlPiBiYWNraW5nU3RvcmUsIGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmpl
Y3RTdG9yZUlkLCBpbnQ2NF90IGluZGV4SWQsIFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+IGtleVJh
bmdlLCBJbmRleGVkREI6OkN1cnNvckRpcmVjdGlvbiBkaXJlY3Rpb24sIEluZGV4ZWREQjo6Q3Vy
c29yVHlwZSBjdXJzb3JUeXBlLCBJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2U6OlRhc2tUeXBl
IHRhc2tUeXBlLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tzKQogICAgIHsKICAg
ICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBPcGVuQ3Vyc29yT3BlcmF0aW9uKGJhY2tpbmdTdG9y
ZSwgZGF0YWJhc2VJZCwgb2JqZWN0U3RvcmVJZCwgaW5kZXhJZCwga2V5UmFuZ2UsIGRpcmVjdGlv
biwgY3Vyc29yVHlwZSwgdGFza1R5cGUsIGNhbGxiYWNrcykpOwogICAgIH0KICAgICB2aXJ0dWFs
IHZvaWQgcGVyZm9ybShJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsKik7CiBwcml2YXRlOgotICAg
IE9wZW5DdXJzb3JPcGVyYXRpb24oUGFzc1JlZlB0cjxJREJCYWNraW5nU3RvcmU+IGJhY2tpbmdT
dG9yZSwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGludDY0X3Qg
aW5kZXhJZCwgUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4ga2V5UmFuZ2UsIHVuc2lnbmVkIHNob3J0
IGRpcmVjdGlvbiwgSURCQ3Vyc29yQmFja2VuZEludGVyZmFjZTo6Q3Vyc29yVHlwZSBjdXJzb3JU
eXBlLCBJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2U6OlRhc2tUeXBlIHRhc2tUeXBlLCBQYXNz
UmVmUHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tzKQorICAgIE9wZW5DdXJzb3JPcGVyYXRpb24o
UGFzc1JlZlB0cjxJREJCYWNraW5nU3RvcmU+IGJhY2tpbmdTdG9yZSwgaW50NjRfdCBkYXRhYmFz
ZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGludDY0X3QgaW5kZXhJZCwgUGFzc1JlZlB0cjxJ
REJLZXlSYW5nZT4ga2V5UmFuZ2UsIEluZGV4ZWREQjo6Q3Vyc29yRGlyZWN0aW9uIGRpcmVjdGlv
biwgSW5kZXhlZERCOjpDdXJzb3JUeXBlIGN1cnNvclR5cGUsIElEQkRhdGFiYXNlQmFja2VuZElu
dGVyZmFjZTo6VGFza1R5cGUgdGFza1R5cGUsIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxs
YmFja3MpCiAgICAgICAgIDogbV9iYWNraW5nU3RvcmUoYmFja2luZ1N0b3JlKQogICAgICAgICAs
IG1fZGF0YWJhc2VJZChkYXRhYmFzZUlkKQogICAgICAgICAsIG1fb2JqZWN0U3RvcmVJZChvYmpl
Y3RTdG9yZUlkKQpAQCAtMzQ0LDggKzM0NSw4IEBAIHByaXZhdGU6CiAgICAgY29uc3QgaW50NjRf
dCBtX29iamVjdFN0b3JlSWQ7CiAgICAgY29uc3QgaW50NjRfdCBtX2luZGV4SWQ7CiAgICAgY29u
c3QgUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4gbV9rZXlSYW5nZTsKLSAgICBjb25zdCB1bnNpZ25l
ZCBzaG9ydCBtX2RpcmVjdGlvbjsKLSAgICBjb25zdCBJREJDdXJzb3JCYWNrZW5kSW50ZXJmYWNl
OjpDdXJzb3JUeXBlIG1fY3Vyc29yVHlwZTsKKyAgICBjb25zdCBJbmRleGVkREI6OkN1cnNvckRp
cmVjdGlvbiBtX2RpcmVjdGlvbjsKKyAgICBjb25zdCBJbmRleGVkREI6OkN1cnNvclR5cGUgbV9j
dXJzb3JUeXBlOwogICAgIGNvbnN0IElEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZTo6VGFza1R5
cGUgbV90YXNrVHlwZTsKICAgICBjb25zdCBSZWZQdHI8SURCQ2FsbGJhY2tzPiBtX2NhbGxiYWNr
czsKIH07CkBAIC01NTUsNyArNTU2LDcgQEAgdm9pZCBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpj
cmVhdGVPYmplY3RTdG9yZShpbnQ2NF90IHRyYW5zYWN0aW9uSWQsIGludDY0X3Qgb2IKICAgICBJ
REJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsKiB0cmFuc2FjdGlvbiA9IG1fdHJhbnNhY3Rpb25zLmdl
dCh0cmFuc2FjdGlvbklkKTsKICAgICBpZiAoIXRyYW5zYWN0aW9uKQogICAgICAgICByZXR1cm47
Ci0gICAgQVNTRVJUKHRyYW5zYWN0aW9uLT5tb2RlKCkgPT0gSURCVHJhbnNhY3Rpb246OlZFUlNJ
T05fQ0hBTkdFKTsKKyAgICBBU1NFUlQodHJhbnNhY3Rpb24tPm1vZGUoKSA9PSBJbmRleGVkREI6
OlRyYW5zYWN0aW9uVmVyc2lvbkNoYW5nZSk7CiAKICAgICBBU1NFUlQoIW1fbWV0YWRhdGEub2Jq
ZWN0U3RvcmVzLmNvbnRhaW5zKG9iamVjdFN0b3JlSWQpKTsKICAgICBJREJPYmplY3RTdG9yZU1l
dGFkYXRhIG9iamVjdFN0b3JlTWV0YWRhdGEobmFtZSwgb2JqZWN0U3RvcmVJZCwga2V5UGF0aCwg
YXV0b0luY3JlbWVudCwgSURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlOjpNaW5pbXVtSW5kZXhJ
ZCk7CkBAIC01ODEsNyArNTgyLDcgQEAgdm9pZCBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpkZWxl
dGVPYmplY3RTdG9yZShpbnQ2NF90IHRyYW5zYWN0aW9uSWQsIGludDY0X3Qgb2IKICAgICBJREJU
cmFuc2FjdGlvbkJhY2tlbmRJbXBsKiB0cmFuc2FjdGlvbiA9IG1fdHJhbnNhY3Rpb25zLmdldCh0
cmFuc2FjdGlvbklkKTsKICAgICBpZiAoIXRyYW5zYWN0aW9uKQogICAgICAgICByZXR1cm47Ci0g
ICAgQVNTRVJUKHRyYW5zYWN0aW9uLT5tb2RlKCkgPT0gSURCVHJhbnNhY3Rpb246OlZFUlNJT05f
Q0hBTkdFKTsKKyAgICBBU1NFUlQodHJhbnNhY3Rpb24tPm1vZGUoKSA9PSBJbmRleGVkREI6OlRy
YW5zYWN0aW9uVmVyc2lvbkNoYW5nZSk7CiAKICAgICBBU1NFUlQobV9tZXRhZGF0YS5vYmplY3RT
dG9yZXMuY29udGFpbnMob2JqZWN0U3RvcmVJZCkpOwogICAgIGNvbnN0IElEQk9iamVjdFN0b3Jl
TWV0YWRhdGEmIG9iamVjdFN0b3JlTWV0YWRhdGEgPSBtX21ldGFkYXRhLm9iamVjdFN0b3Jlcy5n
ZXQob2JqZWN0U3RvcmVJZCk7CkBAIC01OTYsNyArNTk3LDcgQEAgdm9pZCBJREJEYXRhYmFzZUJh
Y2tlbmRJbXBsOjpjcmVhdGVJbmRleChpbnQ2NF90IHRyYW5zYWN0aW9uSWQsIGludDY0X3Qgb2Jq
ZWN0U3QKICAgICBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsKiB0cmFuc2FjdGlvbiA9IG1fdHJh
bnNhY3Rpb25zLmdldCh0cmFuc2FjdGlvbklkKTsKICAgICBpZiAoIXRyYW5zYWN0aW9uKQogICAg
ICAgICByZXR1cm47Ci0gICAgQVNTRVJUKHRyYW5zYWN0aW9uLT5tb2RlKCkgPT0gSURCVHJhbnNh
Y3Rpb246OlZFUlNJT05fQ0hBTkdFKTsKKyAgICBBU1NFUlQodHJhbnNhY3Rpb24tPm1vZGUoKSA9
PSBJbmRleGVkREI6OlRyYW5zYWN0aW9uVmVyc2lvbkNoYW5nZSk7CiAKICAgICBBU1NFUlQobV9t
ZXRhZGF0YS5vYmplY3RTdG9yZXMuY29udGFpbnMob2JqZWN0U3RvcmVJZCkpOwogICAgIGNvbnN0
IElEQk9iamVjdFN0b3JlTWV0YWRhdGEgb2JqZWN0U3RvcmUgPSBtX21ldGFkYXRhLm9iamVjdFN0
b3Jlcy5nZXQob2JqZWN0U3RvcmVJZCk7CkBAIC02MzEsNyArNjMyLDcgQEAgdm9pZCBJREJEYXRh
YmFzZUJhY2tlbmRJbXBsOjpkZWxldGVJbmRleChpbnQ2NF90IHRyYW5zYWN0aW9uSWQsIGludDY0
X3Qgb2JqZWN0U3QKICAgICBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsKiB0cmFuc2FjdGlvbiA9
IG1fdHJhbnNhY3Rpb25zLmdldCh0cmFuc2FjdGlvbklkKTsKICAgICBpZiAoIXRyYW5zYWN0aW9u
KQogICAgICAgICByZXR1cm47Ci0gICAgQVNTRVJUKHRyYW5zYWN0aW9uLT5tb2RlKCkgPT0gSURC
VHJhbnNhY3Rpb246OlZFUlNJT05fQ0hBTkdFKTsKKyAgICBBU1NFUlQodHJhbnNhY3Rpb24tPm1v
ZGUoKSA9PSBJbmRleGVkREI6OlRyYW5zYWN0aW9uVmVyc2lvbkNoYW5nZSk7CiAKICAgICBBU1NF
UlQobV9tZXRhZGF0YS5vYmplY3RTdG9yZXMuY29udGFpbnMob2JqZWN0U3RvcmVJZCkpOwogICAg
IGNvbnN0IElEQk9iamVjdFN0b3JlTWV0YWRhdGEgb2JqZWN0U3RvcmUgPSBtX21ldGFkYXRhLm9i
amVjdFN0b3Jlcy5nZXQob2JqZWN0U3RvcmVJZCk7CkBAIC02ODUsNyArNjg2LDcgQEAgdm9pZCBJ
REJEYXRhYmFzZUJhY2tlbmRJbXBsOjpnZXQoaW50NjRfdCB0cmFuc2FjdGlvbklkLCBpbnQ2NF90
IG9iamVjdFN0b3JlSWQsIGkKICAgICBpZiAoIXRyYW5zYWN0aW9uKQogICAgICAgICByZXR1cm47
CiAKLSAgICB0cmFuc2FjdGlvbi0+c2NoZWR1bGVUYXNrKEdldE9wZXJhdGlvbjo6Y3JlYXRlKG1f
YmFja2luZ1N0b3JlLCBtX21ldGFkYXRhLCBvYmplY3RTdG9yZUlkLCBpbmRleElkLCBrZXlSYW5n
ZSwga2V5T25seSA/IElEQkN1cnNvckJhY2tlbmRJbnRlcmZhY2U6OktleU9ubHkgOiBJREJDdXJz
b3JCYWNrZW5kSW50ZXJmYWNlOjpLZXlBbmRWYWx1ZSwgY2FsbGJhY2tzKSk7CisgICAgdHJhbnNh
Y3Rpb24tPnNjaGVkdWxlVGFzayhHZXRPcGVyYXRpb246OmNyZWF0ZShtX2JhY2tpbmdTdG9yZSwg
bV9tZXRhZGF0YSwgb2JqZWN0U3RvcmVJZCwgaW5kZXhJZCwga2V5UmFuZ2UsIGtleU9ubHkgPyBJ
bmRleGVkREI6OkN1cnNvcktleU9ubHkgOiBJbmRleGVkREI6OkN1cnNvcktleUFuZFZhbHVlLCBj
YWxsYmFja3MpKTsKIH0KIAogdm9pZCBHZXRPcGVyYXRpb246OnBlcmZvcm0oSURCVHJhbnNhY3Rp
b25CYWNrZW5kSW1wbCogdHJhbnNhY3Rpb24pCkBAIC02OTksMTYgKzcwMCwxNiBAQCB2b2lkIEdl
dE9wZXJhdGlvbjo6cGVyZm9ybShJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsKiB0cmFuc2FjdGlv
bikKICAgICBlbHNlIHsKICAgICAgICAgUmVmUHRyPElEQkJhY2tpbmdTdG9yZTo6Q3Vyc29yPiBi
YWNraW5nU3RvcmVDdXJzb3I7CiAgICAgICAgIGlmIChtX2luZGV4SWQgPT0gSURCSW5kZXhNZXRh
ZGF0YTo6SW52YWxpZElkKSB7Ci0gICAgICAgICAgICBBU1NFUlQobV9jdXJzb3JUeXBlICE9IElE
QkN1cnNvckJhY2tlbmRJbnRlcmZhY2U6OktleU9ubHkpOworICAgICAgICAgICAgQVNTRVJUKG1f
Y3Vyc29yVHlwZSAhPSBJbmRleGVkREI6OkN1cnNvcktleU9ubHkpOwogICAgICAgICAgICAgLy8g
T2JqZWN0U3RvcmUgUmV0cmlldmFsIE9wZXJhdGlvbgotICAgICAgICAgICAgYmFja2luZ1N0b3Jl
Q3Vyc29yID0gbV9iYWNraW5nU3RvcmUtPm9wZW5PYmplY3RTdG9yZUN1cnNvcih0cmFuc2FjdGlv
bi0+YmFja2luZ1N0b3JlVHJhbnNhY3Rpb24oKSwgbV9kYXRhYmFzZUlkLCBtX29iamVjdFN0b3Jl
SWQsIG1fa2V5UmFuZ2UuZ2V0KCksIElEQkN1cnNvcjo6TkVYVCk7CisgICAgICAgICAgICBiYWNr
aW5nU3RvcmVDdXJzb3IgPSBtX2JhY2tpbmdTdG9yZS0+b3Blbk9iamVjdFN0b3JlQ3Vyc29yKHRy
YW5zYWN0aW9uLT5iYWNraW5nU3RvcmVUcmFuc2FjdGlvbigpLCBtX2RhdGFiYXNlSWQsIG1fb2Jq
ZWN0U3RvcmVJZCwgbV9rZXlSYW5nZS5nZXQoKSwgSW5kZXhlZERCOjpDdXJzb3JOZXh0KTsKICAg
ICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGlmIChtX2N1cnNvclR5cGUgPT0gSURCQ3Vyc29y
QmFja2VuZEludGVyZmFjZTo6S2V5T25seSkKKyAgICAgICAgICAgIGlmIChtX2N1cnNvclR5cGUg
PT0gSW5kZXhlZERCOjpDdXJzb3JLZXlPbmx5KQogICAgICAgICAgICAgICAgIC8vIEluZGV4IFZh
bHVlIFJldHJpZXZhbCBPcGVyYXRpb24KLSAgICAgICAgICAgICAgICBiYWNraW5nU3RvcmVDdXJz
b3IgPSBtX2JhY2tpbmdTdG9yZS0+b3BlbkluZGV4S2V5Q3Vyc29yKHRyYW5zYWN0aW9uLT5iYWNr
aW5nU3RvcmVUcmFuc2FjdGlvbigpLCBtX2RhdGFiYXNlSWQsIG1fb2JqZWN0U3RvcmVJZCwgbV9p
bmRleElkLCBtX2tleVJhbmdlLmdldCgpLCBJREJDdXJzb3I6Ok5FWFQpOworICAgICAgICAgICAg
ICAgIGJhY2tpbmdTdG9yZUN1cnNvciA9IG1fYmFja2luZ1N0b3JlLT5vcGVuSW5kZXhLZXlDdXJz
b3IodHJhbnNhY3Rpb24tPmJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uKCksIG1fZGF0YWJhc2VJZCwg
bV9vYmplY3RTdG9yZUlkLCBtX2luZGV4SWQsIG1fa2V5UmFuZ2UuZ2V0KCksIEluZGV4ZWREQjo6
Q3Vyc29yTmV4dCk7CiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgLy8gSW5kZXgg
UmVmZXJlbmNlZCBWYWx1ZSBSZXRyaWV2YWwgT3BlcmF0aW9uCi0gICAgICAgICAgICAgICAgYmFj
a2luZ1N0b3JlQ3Vyc29yID0gbV9iYWNraW5nU3RvcmUtPm9wZW5JbmRleEN1cnNvcih0cmFuc2Fj
dGlvbi0+YmFja2luZ1N0b3JlVHJhbnNhY3Rpb24oKSwgbV9kYXRhYmFzZUlkLCBtX29iamVjdFN0
b3JlSWQsIG1faW5kZXhJZCwgbV9rZXlSYW5nZS5nZXQoKSwgSURCQ3Vyc29yOjpORVhUKTsKKyAg
ICAgICAgICAgICAgICBiYWNraW5nU3RvcmVDdXJzb3IgPSBtX2JhY2tpbmdTdG9yZS0+b3Blbklu
ZGV4Q3Vyc29yKHRyYW5zYWN0aW9uLT5iYWNraW5nU3RvcmVUcmFuc2FjdGlvbigpLCBtX2RhdGFi
YXNlSWQsIG1fb2JqZWN0U3RvcmVJZCwgbV9pbmRleElkLCBtX2tleVJhbmdlLmdldCgpLCBJbmRl
eGVkREI6OkN1cnNvck5leHQpOwogICAgICAgICB9CiAKICAgICAgICAgaWYgKCFiYWNraW5nU3Rv
cmVDdXJzb3IpIHsKQEAgLTc1NSw3ICs3NTYsNyBAQCB2b2lkIEdldE9wZXJhdGlvbjo6cGVyZm9y
bShJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsKiB0cmFuc2FjdGlvbikKICAgICAgICAgbV9jYWxs
YmFja3MtPm9uU3VjY2VzcygpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIGlmIChtX2N1
cnNvclR5cGUgPT0gSURCQ3Vyc29yQmFja2VuZEludGVyZmFjZTo6S2V5T25seSkgeworICAgIGlm
IChtX2N1cnNvclR5cGUgPT0gSW5kZXhlZERCOjpDdXJzb3JLZXlPbmx5KSB7CiAgICAgICAgIC8v
IEluZGV4IFZhbHVlIFJldHJpZXZhbCBPcGVyYXRpb24KICAgICAgICAgbV9jYWxsYmFja3MtPm9u
U3VjY2VzcyhwcmltYXJ5S2V5LmdldCgpKTsKICAgICAgICAgcmV0dXJuOwpAQCAtNzg2LDcgKzc4
Nyw3IEBAIHZvaWQgSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6cHV0KGludDY0X3QgdHJhbnNhY3Rp
b25JZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBQCiAgICAgSURCVHJhbnNhY3Rpb25CYWNrZW5k
SW1wbCogdHJhbnNhY3Rpb24gPSBtX3RyYW5zYWN0aW9ucy5nZXQodHJhbnNhY3Rpb25JZCk7CiAg
ICAgaWYgKCF0cmFuc2FjdGlvbikKICAgICAgICAgcmV0dXJuOwotICAgIEFTU0VSVCh0cmFuc2Fj
dGlvbi0+bW9kZSgpICE9IElEQlRyYW5zYWN0aW9uOjpSRUFEX09OTFkpOworICAgIEFTU0VSVCh0
cmFuc2FjdGlvbi0+bW9kZSgpICE9IEluZGV4ZWREQjo6VHJhbnNhY3Rpb25SZWFkT25seSk7CiAK
ICAgICBjb25zdCBJREJPYmplY3RTdG9yZU1ldGFkYXRhIG9iamVjdFN0b3JlTWV0YWRhdGEgPSBt
X21ldGFkYXRhLm9iamVjdFN0b3Jlcy5nZXQob2JqZWN0U3RvcmVJZCk7CiAKQEAgLTc5OCw3ICs3
OTksNyBAQCB2b2lkIElEQkRhdGFiYXNlQmFja2VuZEltcGw6OnB1dChpbnQ2NF90IHRyYW5zYWN0
aW9uSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgUAogdm9pZCBQdXRPcGVyYXRpb246OnBlcmZv
cm0oSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbCogdHJhbnNhY3Rpb24pCiB7CiAgICAgSURCX1RS
QUNFKCJQdXRPcGVyYXRpb24iKTsKLSAgICBBU1NFUlQodHJhbnNhY3Rpb24tPm1vZGUoKSAhPSBJ
REJUcmFuc2FjdGlvbjo6UkVBRF9PTkxZKTsKKyAgICBBU1NFUlQodHJhbnNhY3Rpb24tPm1vZGUo
KSAhPSBJbmRleGVkREI6OlRyYW5zYWN0aW9uUmVhZE9ubHkpOwogICAgIEFTU0VSVChtX2luZGV4
SWRzLnNpemUoKSA9PSBtX2luZGV4S2V5cy5zaXplKCkpOwogICAgIGJvb2wga2V5V2FzR2VuZXJh
dGVkID0gZmFsc2U7CiAKQEAgLTg3Miw3ICs4NzMsNyBAQCB2b2lkIElEQkRhdGFiYXNlQmFja2Vu
ZEltcGw6OnNldEluZGV4S2V5cyhpbnQ2NF90IHRyYW5zYWN0aW9uSWQsIGludDY0X3Qgb2JqZWN0
UwogICAgIElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGwqIHRyYW5zYWN0aW9uID0gbV90cmFuc2Fj
dGlvbnMuZ2V0KHRyYW5zYWN0aW9uSWQpOwogICAgIGlmICghdHJhbnNhY3Rpb24pCiAgICAgICAg
IHJldHVybjsKLSAgICBBU1NFUlQodHJhbnNhY3Rpb24tPm1vZGUoKSA9PSBJREJUcmFuc2FjdGlv
bjo6VkVSU0lPTl9DSEFOR0UpOworICAgIEFTU0VSVCh0cmFuc2FjdGlvbi0+bW9kZSgpID09IElu
ZGV4ZWREQjo6VHJhbnNhY3Rpb25WZXJzaW9uQ2hhbmdlKTsKIAogICAgIFJlZlB0cjxJREJLZXk+
IHByaW1hcnlLZXkgPSBwcnBQcmltYXJ5S2V5OwogICAgIFJlZlB0cjxJREJCYWNraW5nU3RvcmU+
IHN0b3JlID0gYmFja2luZ1N0b3JlKCk7CkBAIC05MjksMTQgKzkzMCwxNCBAQCB2b2lkIFNldElu
ZGV4ZXNSZWFkeU9wZXJhdGlvbjo6cGVyZm9ybShJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsKiB0
cmFuc2FjdGlvbikKICAgICAgICAgdHJhbnNhY3Rpb24tPmRpZENvbXBsZXRlUHJlZW1wdGl2ZUV2
ZW50KCk7CiB9CiAKLXZvaWQgSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6b3BlbkN1cnNvcihpbnQ2
NF90IHRyYW5zYWN0aW9uSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgaW50NjRfdCBpbmRleElk
LCBQYXNzUmVmUHRyPElEQktleVJhbmdlPiBrZXlSYW5nZSwgdW5zaWduZWQgc2hvcnQgZGlyZWN0
aW9uLCBib29sIGtleU9ubHksIFRhc2tUeXBlIHRhc2tUeXBlLCBQYXNzUmVmUHRyPElEQkNhbGxi
YWNrcz4gY2FsbGJhY2tzKQordm9pZCBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpvcGVuQ3Vyc29y
KGludDY0X3QgdHJhbnNhY3Rpb25JZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBpbnQ2NF90IGlu
ZGV4SWQsIFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+IGtleVJhbmdlLCBJbmRleGVkREI6OkN1cnNv
ckRpcmVjdGlvbiBkaXJlY3Rpb24sIGJvb2wga2V5T25seSwgVGFza1R5cGUgdGFza1R5cGUsIFBh
c3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MpCiB7CiAgICAgSURCX1RSQUNFKCJJREJE
YXRhYmFzZUJhY2tlbmRJbXBsOjpvcGVuQ3Vyc29yIik7CiAgICAgSURCVHJhbnNhY3Rpb25CYWNr
ZW5kSW1wbCogdHJhbnNhY3Rpb24gPSBtX3RyYW5zYWN0aW9ucy5nZXQodHJhbnNhY3Rpb25JZCk7
CiAgICAgaWYgKCF0cmFuc2FjdGlvbikKICAgICAgICAgcmV0dXJuOwogCi0gICAgdHJhbnNhY3Rp
b24tPnNjaGVkdWxlVGFzayhPcGVuQ3Vyc29yT3BlcmF0aW9uOjpjcmVhdGUobV9iYWNraW5nU3Rv
cmUsIGlkKCksIG9iamVjdFN0b3JlSWQsIGluZGV4SWQsIGtleVJhbmdlLCBkaXJlY3Rpb24sIGtl
eU9ubHkgPyBJREJDdXJzb3JCYWNrZW5kSW50ZXJmYWNlOjpLZXlPbmx5IDogSURCQ3Vyc29yQmFj
a2VuZEludGVyZmFjZTo6S2V5QW5kVmFsdWUsIHRhc2tUeXBlLCBjYWxsYmFja3MpKTsKKyAgICB0
cmFuc2FjdGlvbi0+c2NoZWR1bGVUYXNrKE9wZW5DdXJzb3JPcGVyYXRpb246OmNyZWF0ZShtX2Jh
Y2tpbmdTdG9yZSwgaWQoKSwgb2JqZWN0U3RvcmVJZCwgaW5kZXhJZCwga2V5UmFuZ2UsIGRpcmVj
dGlvbiwga2V5T25seSA/IEluZGV4ZWREQjo6Q3Vyc29yS2V5T25seSA6IEluZGV4ZWREQjo6Q3Vy
c29yS2V5QW5kVmFsdWUsIHRhc2tUeXBlLCBjYWxsYmFja3MpKTsKIH0KIAogdm9pZCBPcGVuQ3Vy
c29yT3BlcmF0aW9uOjpwZXJmb3JtKElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGwqIHRyYW5zYWN0
aW9uKQpAQCAtOTUwLDE3ICs5NTEsMTYgQEAgdm9pZCBPcGVuQ3Vyc29yT3BlcmF0aW9uOjpwZXJm
b3JtKElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGwqIHRyYW5zYWN0aW9uKQogICAgIGlmIChtX3Rh
c2tUeXBlID09IElEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZTo6UHJlZW1wdGl2ZVRhc2spCiAg
ICAgICAgIHRyYW5zYWN0aW9uLT5hZGRQcmVlbXB0aXZlRXZlbnQoKTsKIAotICAgIElEQkN1cnNv
cjo6RGlyZWN0aW9uIGRpcmVjdGlvbiA9IHN0YXRpY19jYXN0PElEQkN1cnNvcjo6RGlyZWN0aW9u
PihtX2RpcmVjdGlvbik7CiAgICAgUmVmUHRyPElEQkJhY2tpbmdTdG9yZTo6Q3Vyc29yPiBiYWNr
aW5nU3RvcmVDdXJzb3I7CiAgICAgaWYgKG1faW5kZXhJZCA9PSBJREJJbmRleE1ldGFkYXRhOjpJ
bnZhbGlkSWQpIHsKLSAgICAgICAgQVNTRVJUKG1fY3Vyc29yVHlwZSAhPSBJREJDdXJzb3JCYWNr
ZW5kSW50ZXJmYWNlOjpLZXlPbmx5KTsKLSAgICAgICAgYmFja2luZ1N0b3JlQ3Vyc29yID0gbV9i
YWNraW5nU3RvcmUtPm9wZW5PYmplY3RTdG9yZUN1cnNvcih0cmFuc2FjdGlvbi0+YmFja2luZ1N0
b3JlVHJhbnNhY3Rpb24oKSwgbV9kYXRhYmFzZUlkLCBtX29iamVjdFN0b3JlSWQsIG1fa2V5UmFu
Z2UuZ2V0KCksIGRpcmVjdGlvbik7CisgICAgICAgIEFTU0VSVChtX2N1cnNvclR5cGUgIT0gSW5k
ZXhlZERCOjpDdXJzb3JLZXlPbmx5KTsKKyAgICAgICAgYmFja2luZ1N0b3JlQ3Vyc29yID0gbV9i
YWNraW5nU3RvcmUtPm9wZW5PYmplY3RTdG9yZUN1cnNvcih0cmFuc2FjdGlvbi0+YmFja2luZ1N0
b3JlVHJhbnNhY3Rpb24oKSwgbV9kYXRhYmFzZUlkLCBtX29iamVjdFN0b3JlSWQsIG1fa2V5UmFu
Z2UuZ2V0KCksIG1fZGlyZWN0aW9uKTsKICAgICB9IGVsc2UgewogICAgICAgICBBU1NFUlQobV90
YXNrVHlwZSA9PSBJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2U6Ok5vcm1hbFRhc2spOwotICAg
ICAgICBpZiAobV9jdXJzb3JUeXBlID09IElEQkN1cnNvckJhY2tlbmRJbnRlcmZhY2U6OktleU9u
bHkpCi0gICAgICAgICAgICBiYWNraW5nU3RvcmVDdXJzb3IgPSBtX2JhY2tpbmdTdG9yZS0+b3Bl
bkluZGV4S2V5Q3Vyc29yKHRyYW5zYWN0aW9uLT5iYWNraW5nU3RvcmVUcmFuc2FjdGlvbigpLCBt
X2RhdGFiYXNlSWQsIG1fb2JqZWN0U3RvcmVJZCwgbV9pbmRleElkLCBtX2tleVJhbmdlLmdldCgp
LCBkaXJlY3Rpb24pOworICAgICAgICBpZiAobV9jdXJzb3JUeXBlID09IEluZGV4ZWREQjo6Q3Vy
c29yS2V5T25seSkKKyAgICAgICAgICAgIGJhY2tpbmdTdG9yZUN1cnNvciA9IG1fYmFja2luZ1N0
b3JlLT5vcGVuSW5kZXhLZXlDdXJzb3IodHJhbnNhY3Rpb24tPmJhY2tpbmdTdG9yZVRyYW5zYWN0
aW9uKCksIG1fZGF0YWJhc2VJZCwgbV9vYmplY3RTdG9yZUlkLCBtX2luZGV4SWQsIG1fa2V5UmFu
Z2UuZ2V0KCksIG1fZGlyZWN0aW9uKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgYmFja2lu
Z1N0b3JlQ3Vyc29yID0gbV9iYWNraW5nU3RvcmUtPm9wZW5JbmRleEN1cnNvcih0cmFuc2FjdGlv
bi0+YmFja2luZ1N0b3JlVHJhbnNhY3Rpb24oKSwgbV9kYXRhYmFzZUlkLCBtX29iamVjdFN0b3Jl
SWQsIG1faW5kZXhJZCwgbV9rZXlSYW5nZS5nZXQoKSwgZGlyZWN0aW9uKTsKKyAgICAgICAgICAg
IGJhY2tpbmdTdG9yZUN1cnNvciA9IG1fYmFja2luZ1N0b3JlLT5vcGVuSW5kZXhDdXJzb3IodHJh
bnNhY3Rpb24tPmJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uKCksIG1fZGF0YWJhc2VJZCwgbV9vYmpl
Y3RTdG9yZUlkLCBtX2luZGV4SWQsIG1fa2V5UmFuZ2UuZ2V0KCksIG1fZGlyZWN0aW9uKTsKICAg
ICB9CiAKICAgICBpZiAoIWJhY2tpbmdTdG9yZUN1cnNvcikgewpAQCAtOTkxLDkgKzk5MSw5IEBA
IHZvaWQgQ291bnRPcGVyYXRpb246OnBlcmZvcm0oSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbCog
dHJhbnNhY3Rpb24pCiAgICAgUmVmUHRyPElEQkJhY2tpbmdTdG9yZTo6Q3Vyc29yPiBiYWNraW5n
U3RvcmVDdXJzb3I7CiAKICAgICBpZiAobV9pbmRleElkID09IElEQkluZGV4TWV0YWRhdGE6Oklu
dmFsaWRJZCkKLSAgICAgICAgYmFja2luZ1N0b3JlQ3Vyc29yID0gbV9iYWNraW5nU3RvcmUtPm9w
ZW5PYmplY3RTdG9yZUtleUN1cnNvcih0cmFuc2FjdGlvbi0+YmFja2luZ1N0b3JlVHJhbnNhY3Rp
b24oKSwgbV9kYXRhYmFzZUlkLCBtX29iamVjdFN0b3JlSWQsIG1fa2V5UmFuZ2UuZ2V0KCksIElE
QkN1cnNvcjo6TkVYVCk7CisgICAgICAgIGJhY2tpbmdTdG9yZUN1cnNvciA9IG1fYmFja2luZ1N0
b3JlLT5vcGVuT2JqZWN0U3RvcmVLZXlDdXJzb3IodHJhbnNhY3Rpb24tPmJhY2tpbmdTdG9yZVRy
YW5zYWN0aW9uKCksIG1fZGF0YWJhc2VJZCwgbV9vYmplY3RTdG9yZUlkLCBtX2tleVJhbmdlLmdl
dCgpLCBJbmRleGVkREI6OkN1cnNvck5leHQpOwogICAgIGVsc2UKLSAgICAgICAgYmFja2luZ1N0
b3JlQ3Vyc29yID0gbV9iYWNraW5nU3RvcmUtPm9wZW5JbmRleEtleUN1cnNvcih0cmFuc2FjdGlv
bi0+YmFja2luZ1N0b3JlVHJhbnNhY3Rpb24oKSwgbV9kYXRhYmFzZUlkLCBtX29iamVjdFN0b3Jl
SWQsIG1faW5kZXhJZCwgbV9rZXlSYW5nZS5nZXQoKSwgSURCQ3Vyc29yOjpORVhUKTsKKyAgICAg
ICAgYmFja2luZ1N0b3JlQ3Vyc29yID0gbV9iYWNraW5nU3RvcmUtPm9wZW5JbmRleEtleUN1cnNv
cih0cmFuc2FjdGlvbi0+YmFja2luZ1N0b3JlVHJhbnNhY3Rpb24oKSwgbV9kYXRhYmFzZUlkLCBt
X29iamVjdFN0b3JlSWQsIG1faW5kZXhJZCwgbV9rZXlSYW5nZS5nZXQoKSwgSW5kZXhlZERCOjpD
dXJzb3JOZXh0KTsKICAgICBpZiAoIWJhY2tpbmdTdG9yZUN1cnNvcikgewogICAgICAgICBtX2Nh
bGxiYWNrcy0+b25TdWNjZXNzKGNvdW50KTsKICAgICAgICAgcmV0dXJuOwpAQCAtMTAxMiw3ICsx
MDEyLDcgQEAgdm9pZCBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpkZWxldGVSYW5nZShpbnQ2NF90
IHRyYW5zYWN0aW9uSWQsIGludDY0X3Qgb2JqZWN0U3QKICAgICBJREJUcmFuc2FjdGlvbkJhY2tl
bmRJbXBsKiB0cmFuc2FjdGlvbiA9IG1fdHJhbnNhY3Rpb25zLmdldCh0cmFuc2FjdGlvbklkKTsK
ICAgICBpZiAoIXRyYW5zYWN0aW9uKQogICAgICAgICByZXR1cm47Ci0gICAgQVNTRVJUKHRyYW5z
YWN0aW9uLT5tb2RlKCkgIT0gSURCVHJhbnNhY3Rpb246OlJFQURfT05MWSk7CisgICAgQVNTRVJU
KHRyYW5zYWN0aW9uLT5tb2RlKCkgIT0gSW5kZXhlZERCOjpUcmFuc2FjdGlvblJlYWRPbmx5KTsK
IAogICAgIHRyYW5zYWN0aW9uLT5zY2hlZHVsZVRhc2soRGVsZXRlUmFuZ2VPcGVyYXRpb246OmNy
ZWF0ZShtX2JhY2tpbmdTdG9yZSwgaWQoKSwgb2JqZWN0U3RvcmVJZCwga2V5UmFuZ2UsIGNhbGxi
YWNrcykpOwogfQpAQCAtMTAyMCw3ICsxMDIwLDcgQEAgdm9pZCBJREJEYXRhYmFzZUJhY2tlbmRJ
bXBsOjpkZWxldGVSYW5nZShpbnQ2NF90IHRyYW5zYWN0aW9uSWQsIGludDY0X3Qgb2JqZWN0U3QK
IHZvaWQgRGVsZXRlUmFuZ2VPcGVyYXRpb246OnBlcmZvcm0oSURCVHJhbnNhY3Rpb25CYWNrZW5k
SW1wbCogdHJhbnNhY3Rpb24pCiB7CiAgICAgSURCX1RSQUNFKCJEZWxldGVSYW5nZU9wZXJhdGlv
biIpOwotICAgIFJlZlB0cjxJREJCYWNraW5nU3RvcmU6OkN1cnNvcj4gYmFja2luZ1N0b3JlQ3Vy
c29yID0gbV9iYWNraW5nU3RvcmUtPm9wZW5PYmplY3RTdG9yZUN1cnNvcih0cmFuc2FjdGlvbi0+
YmFja2luZ1N0b3JlVHJhbnNhY3Rpb24oKSwgbV9kYXRhYmFzZUlkLCBtX29iamVjdFN0b3JlSWQs
IG1fa2V5UmFuZ2UuZ2V0KCksIElEQkN1cnNvcjo6TkVYVCk7CisgICAgUmVmUHRyPElEQkJhY2tp
bmdTdG9yZTo6Q3Vyc29yPiBiYWNraW5nU3RvcmVDdXJzb3IgPSBtX2JhY2tpbmdTdG9yZS0+b3Bl
bk9iamVjdFN0b3JlQ3Vyc29yKHRyYW5zYWN0aW9uLT5iYWNraW5nU3RvcmVUcmFuc2FjdGlvbigp
LCBtX2RhdGFiYXNlSWQsIG1fb2JqZWN0U3RvcmVJZCwgbV9rZXlSYW5nZS5nZXQoKSwgSW5kZXhl
ZERCOjpDdXJzb3JOZXh0KTsKICAgICBpZiAoYmFja2luZ1N0b3JlQ3Vyc29yKSB7CiAgICAgICAg
IGRvIHsKICAgICAgICAgICAgIG1fYmFja2luZ1N0b3JlLT5kZWxldGVSZWNvcmQodHJhbnNhY3Rp
b24tPmJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uKCksIG1fZGF0YWJhc2VJZCwgbV9vYmplY3RTdG9y
ZUlkLCBiYWNraW5nU3RvcmVDdXJzb3ItPnJlY29yZElkZW50aWZpZXIoKSk7CkBAIC0xMDM2LDcg
KzEwMzYsNyBAQCB2b2lkIElEQkRhdGFiYXNlQmFja2VuZEltcGw6OmNsZWFyKGludDY0X3QgdHJh
bnNhY3Rpb25JZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLAogICAgIElEQlRyYW5zYWN0aW9uQmFj
a2VuZEltcGwqIHRyYW5zYWN0aW9uID0gbV90cmFuc2FjdGlvbnMuZ2V0KHRyYW5zYWN0aW9uSWQp
OwogICAgIGlmICghdHJhbnNhY3Rpb24pCiAgICAgICAgIHJldHVybjsKLSAgICBBU1NFUlQodHJh
bnNhY3Rpb24tPm1vZGUoKSAhPSBJREJUcmFuc2FjdGlvbjo6UkVBRF9PTkxZKTsKKyAgICBBU1NF
UlQodHJhbnNhY3Rpb24tPm1vZGUoKSAhPSBJbmRleGVkREI6OlRyYW5zYWN0aW9uUmVhZE9ubHkp
OwogCiAgICAgdHJhbnNhY3Rpb24tPnNjaGVkdWxlVGFzayhDbGVhck9wZXJhdGlvbjo6Y3JlYXRl
KG1fYmFja2luZ1N0b3JlLCBpZCgpLCBvYmplY3RTdG9yZUlkLCBjYWxsYmFja3MpKTsKIH0KQEAg
LTEwNzksNyArMTA3OSw3IEBAIHZvaWQgSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6VmVyc2lvbkNo
YW5nZU9wZXJhdGlvbjo6cGVyZm9ybShJREJUcmFuc2FjdGlvbkJhY2tlCiB2b2lkIElEQkRhdGFi
YXNlQmFja2VuZEltcGw6OnRyYW5zYWN0aW9uU3RhcnRlZChQYXNzUmVmUHRyPElEQlRyYW5zYWN0
aW9uQmFja2VuZEltcGw+IHBycFRyYW5zYWN0aW9uKQogewogICAgIFJlZlB0cjxJREJUcmFuc2Fj
dGlvbkJhY2tlbmRJbXBsPiB0cmFuc2FjdGlvbiA9IHBycFRyYW5zYWN0aW9uOwotICAgIGlmICh0
cmFuc2FjdGlvbi0+bW9kZSgpID09IElEQlRyYW5zYWN0aW9uOjpWRVJTSU9OX0NIQU5HRSkgewor
ICAgIGlmICh0cmFuc2FjdGlvbi0+bW9kZSgpID09IEluZGV4ZWREQjo6VHJhbnNhY3Rpb25WZXJz
aW9uQ2hhbmdlKSB7CiAgICAgICAgIEFTU0VSVCghbV9ydW5uaW5nVmVyc2lvbkNoYW5nZVRyYW5z
YWN0aW9uKTsKICAgICAgICAgbV9ydW5uaW5nVmVyc2lvbkNoYW5nZVRyYW5zYWN0aW9uID0gdHJh
bnNhY3Rpb247CiAgICAgfQpAQCAtMTA5MSw3ICsxMDkxLDcgQEAgdm9pZCBJREJEYXRhYmFzZUJh
Y2tlbmRJbXBsOjp0cmFuc2FjdGlvbkZpbmlzaGVkKFBhc3NSZWZQdHI8SURCVHJhbnNhY3Rpb25C
YWNrZW4KICAgICBBU1NFUlQobV90cmFuc2FjdGlvbnMuY29udGFpbnModHJhbnNhY3Rpb24tPmlk
KCkpKTsKICAgICBBU1NFUlQobV90cmFuc2FjdGlvbnMuZ2V0KHRyYW5zYWN0aW9uLT5pZCgpKSA9
PSB0cmFuc2FjdGlvbi5nZXQoKSk7CiAgICAgbV90cmFuc2FjdGlvbnMucmVtb3ZlKHRyYW5zYWN0
aW9uLT5pZCgpKTsKLSAgICBpZiAodHJhbnNhY3Rpb24tPm1vZGUoKSA9PSBJREJUcmFuc2FjdGlv
bjo6VkVSU0lPTl9DSEFOR0UpIHsKKyAgICBpZiAodHJhbnNhY3Rpb24tPm1vZGUoKSA9PSBJbmRl
eGVkREI6OlRyYW5zYWN0aW9uVmVyc2lvbkNoYW5nZSkgewogICAgICAgICBBU1NFUlQodHJhbnNh
Y3Rpb24uZ2V0KCkgPT0gbV9ydW5uaW5nVmVyc2lvbkNoYW5nZVRyYW5zYWN0aW9uLmdldCgpKTsK
ICAgICAgICAgbV9ydW5uaW5nVmVyc2lvbkNoYW5nZVRyYW5zYWN0aW9uLmNsZWFyKCk7CiAgICAg
fQpAQCAtMTEwMCw3ICsxMTAwLDcgQEAgdm9pZCBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjp0cmFu
c2FjdGlvbkZpbmlzaGVkKFBhc3NSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW4KIHZvaWQgSURC
RGF0YWJhc2VCYWNrZW5kSW1wbDo6dHJhbnNhY3Rpb25GaW5pc2hlZEFuZEFib3J0RmlyZWQoUGFz
c1JlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsPiBwcnBUcmFuc2FjdGlvbikKIHsKICAg
ICBSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbD4gdHJhbnNhY3Rpb24gPSBwcnBUcmFu
c2FjdGlvbjsKLSAgICBpZiAodHJhbnNhY3Rpb24tPm1vZGUoKSA9PSBJREJUcmFuc2FjdGlvbjo6
VkVSU0lPTl9DSEFOR0UpIHsKKyAgICBpZiAodHJhbnNhY3Rpb24tPm1vZGUoKSA9PSBJbmRleGVk
REI6OlRyYW5zYWN0aW9uVmVyc2lvbkNoYW5nZSkgewogICAgICAgICAvLyBJZiB0aGlzIHdhcyBh
biBvcGVuLXdpdGgtdmVyc2lvbiBjYWxsLCB0aGVyZSB3aWxsIGJlIGEgInNlY29uZAogICAgICAg
ICAvLyBoYWxmIiBvcGVuIGNhbGwgd2FpdGluZyBmb3IgdXMgaW4gcHJvY2Vzc1BlbmRpbmdDYWxs
cy4KICAgICAgICAgLy8gRklYTUU6IFdoZW4gd2Ugbm8gbG9uZ2VyIHN1cHBvcnQgc2V0VmVyc2lv
biwgYXNzZXJ0IHN1Y2ggYSB0aGluZy4KQEAgLTExMTUsNyArMTExNSw3IEBAIHZvaWQgSURCRGF0
YWJhc2VCYWNrZW5kSW1wbDo6dHJhbnNhY3Rpb25GaW5pc2hlZEFuZEFib3J0RmlyZWQoUGFzc1Jl
ZlB0cjxJREJUcmFuCiB2b2lkIElEQkRhdGFiYXNlQmFja2VuZEltcGw6OnRyYW5zYWN0aW9uRmlu
aXNoZWRBbmRDb21wbGV0ZUZpcmVkKFBhc3NSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW1w
bD4gcHJwVHJhbnNhY3Rpb24pCiB7CiAgICAgUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZElt
cGw+IHRyYW5zYWN0aW9uID0gcHJwVHJhbnNhY3Rpb247Ci0gICAgaWYgKHRyYW5zYWN0aW9uLT5t
b2RlKCkgPT0gSURCVHJhbnNhY3Rpb246OlZFUlNJT05fQ0hBTkdFKQorICAgIGlmICh0cmFuc2Fj
dGlvbi0+bW9kZSgpID09IEluZGV4ZWREQjo6VHJhbnNhY3Rpb25WZXJzaW9uQ2hhbmdlKQogICAg
ICAgICBwcm9jZXNzUGVuZGluZ0NhbGxzKCk7CiB9CiAKQEAgLTExNjUsNyArMTE2NSw3IEBAIHZv
aWQgSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6cHJvY2Vzc1BlbmRpbmdDYWxscygpCiAKIHZvaWQg
SURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6Y3JlYXRlVHJhbnNhY3Rpb24oaW50NjRfdCB0cmFuc2Fj
dGlvbklkLCBQYXNzUmVmUHRyPElEQkRhdGFiYXNlQ2FsbGJhY2tzPiBjYWxsYmFja3MsIGNvbnN0
IFZlY3RvcjxpbnQ2NF90PiYgb2JqZWN0U3RvcmVJZHMsIHVuc2lnbmVkIHNob3J0IG1vZGUpCiB7
Ci0gICAgUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGw+IHRyYW5zYWN0aW9uID0gSURC
VHJhbnNhY3Rpb25CYWNrZW5kSW1wbDo6Y3JlYXRlKHRyYW5zYWN0aW9uSWQsIGNhbGxiYWNrcywg
b2JqZWN0U3RvcmVJZHMsIHN0YXRpY19jYXN0PElEQlRyYW5zYWN0aW9uOjpNb2RlPihtb2RlKSwg
dGhpcyk7CisgICAgUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGw+IHRyYW5zYWN0aW9u
ID0gSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbDo6Y3JlYXRlKHRyYW5zYWN0aW9uSWQsIGNhbGxi
YWNrcywgb2JqZWN0U3RvcmVJZHMsIHN0YXRpY19jYXN0PEluZGV4ZWREQjo6VHJhbnNhY3Rpb25N
b2RlPihtb2RlKSwgdGhpcyk7CiAgICAgQVNTRVJUKCFtX3RyYW5zYWN0aW9ucy5jb250YWlucyh0
cmFuc2FjdGlvbklkKSk7CiAgICAgbV90cmFuc2FjdGlvbnMuYWRkKHRyYW5zYWN0aW9uSWQsIHRy
YW5zYWN0aW9uLmdldCgpKTsKIH0KQEAgLTEyNTcsNyArMTI1Nyw3IEBAIHZvaWQgSURCRGF0YWJh
c2VCYWNrZW5kSW1wbDo6cnVuSW50VmVyc2lvbkNoYW5nZVRyYW5zYWN0aW9uKFBhc3NSZWZQdHI8
SURCQ2FsbGJhCiAgICAgfQogCiAgICAgVmVjdG9yPGludDY0X3Q+IG9iamVjdFN0b3JlSWRzOwot
ICAgIGNyZWF0ZVRyYW5zYWN0aW9uKHRyYW5zYWN0aW9uSWQsIGRhdGFiYXNlQ2FsbGJhY2tzLCBv
YmplY3RTdG9yZUlkcywgSURCVHJhbnNhY3Rpb246OlZFUlNJT05fQ0hBTkdFKTsKKyAgICBjcmVh
dGVUcmFuc2FjdGlvbih0cmFuc2FjdGlvbklkLCBkYXRhYmFzZUNhbGxiYWNrcywgb2JqZWN0U3Rv
cmVJZHMsIEluZGV4ZWREQjo6VHJhbnNhY3Rpb25WZXJzaW9uQ2hhbmdlKTsKICAgICBSZWZQdHI8
SURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbD4gdHJhbnNhY3Rpb24gPSBtX3RyYW5zYWN0aW9ucy5n
ZXQodHJhbnNhY3Rpb25JZCk7CiAKICAgICB0cmFuc2FjdGlvbi0+c2NoZWR1bGVUYXNrKFZlcnNp
b25DaGFuZ2VPcGVyYXRpb246OmNyZWF0ZSh0aGlzLCB0cmFuc2FjdGlvbklkLCByZXF1ZXN0ZWRW
ZXJzaW9uLCBjYWxsYmFja3MsIGRhdGFiYXNlQ2FsbGJhY2tzKSwgVmVyc2lvbkNoYW5nZUFib3J0
T3BlcmF0aW9uOjpjcmVhdGUodGhpcywgbV9tZXRhZGF0YS52ZXJzaW9uLCBtX21ldGFkYXRhLmlu
dFZlcnNpb24pKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L0lEQkRhdGFiYXNlQmFja2VuZEltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL0lEQkRhdGFiYXNlQmFja2VuZEltcGwuaAppbmRleCAxZWJjODc4MTJlNWFlOTZkZmRiNTg3
N2QxZGYzYjk1YWI5YjMwMzZkLi4zNTNiZmEwOTMxODlkMWQ4NGJkZmEwNjkxOTk3NzVkNTgwMTVj
YjkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRh
YmFzZUJhY2tlbmRJbXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
SURCRGF0YWJhc2VCYWNrZW5kSW1wbC5oCkBAIC0yNyw3ICsyNyw3IEBACiAjZGVmaW5lIElEQkRh
dGFiYXNlQmFja2VuZEltcGxfaAogCiAjaW5jbHVkZSAiSURCQ2FsbGJhY2tzLmgiCi0jaW5jbHVk
ZSAiSURCRGF0YWJhc2UuaCIKKyNpbmNsdWRlICJJREJNZXRhZGF0YS5oIgogI2luY2x1ZGUgPHN0
ZGludC5oPgogI2luY2x1ZGUgPHd0Zi9EZXF1ZS5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+
CkBAIC04NCw3ICs4NCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgcHV0KGludDY0X3Qg
dHJhbnNhY3Rpb25JZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBQYXNzUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gdmFsdWUsIFBhc3NSZWZQdHI8SURCS2V5PiwgUHV0TW9kZSwgUGFzc1JlZlB0cjxJREJD
YWxsYmFja3M+LCBjb25zdCBWZWN0b3I8aW50NjRfdD4mIGluZGV4SWRzLCBjb25zdCBWZWN0b3I8
SW5kZXhLZXlzPiYpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBzZXRJbmRleEtleXMoaW50
NjRfdCB0cmFuc2FjdGlvbklkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIFBhc3NSZWZQdHI8SURC
S2V5PiBwcnBQcmltYXJ5S2V5LCBjb25zdCBWZWN0b3I8aW50NjRfdD4mIGluZGV4SWRzLCBjb25z
dCBWZWN0b3I8SW5kZXhLZXlzPiYpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBzZXRJbmRl
eGVzUmVhZHkoaW50NjRfdCB0cmFuc2FjdGlvbklkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGNv
bnN0IFZlY3RvcjxpbnQ2NF90PiYgaW5kZXhJZHMpIE9WRVJSSURFOwotICAgIHZpcnR1YWwgdm9p
ZCBvcGVuQ3Vyc29yKGludDY0X3QgdHJhbnNhY3Rpb25JZCwgaW50NjRfdCBvYmplY3RTdG9yZUlk
LCBpbnQ2NF90IGluZGV4SWQsIFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+LCB1bnNpZ25lZCBzaG9y
dCBkaXJlY3Rpb24sIGJvb2wga2V5T25seSwgVGFza1R5cGUsIFBhc3NSZWZQdHI8SURCQ2FsbGJh
Y2tzPikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIG9wZW5DdXJzb3IoaW50NjRfdCB0cmFu
c2FjdGlvbklkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGludDY0X3QgaW5kZXhJZCwgUGFzc1Jl
ZlB0cjxJREJLZXlSYW5nZT4sIEluZGV4ZWREQjo6Q3Vyc29yRGlyZWN0aW9uLCBib29sIGtleU9u
bHksIFRhc2tUeXBlLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4pIE9WRVJSSURFOwogICAgIHZp
cnR1YWwgdm9pZCBjb3VudChpbnQ2NF90IHRyYW5zYWN0aW9uSWQsIGludDY0X3Qgb2JqZWN0U3Rv
cmVJZCwgaW50NjRfdCBpbmRleElkLCBQYXNzUmVmUHRyPElEQktleVJhbmdlPiwgUGFzc1JlZlB0
cjxJREJDYWxsYmFja3M+KSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlUmFuZ2Uo
aW50NjRfdCB0cmFuc2FjdGlvbklkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIFBhc3NSZWZQdHI8
SURCS2V5UmFuZ2U+LCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4pIE9WRVJSSURFOwogICAgIHZp
cnR1YWwgdm9pZCBjbGVhcihpbnQ2NF90IHRyYW5zYWN0aW9uSWQsIGludDY0X3Qgb2JqZWN0U3Rv
cmVJZCwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+KSBPVkVSUklERTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQmFja2VuZEludGVyZmFj
ZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VCYWNrZW5k
SW50ZXJmYWNlLmgKaW5kZXggZTAwMTRlYjNlMmRjYzJhM2Y0MzQyNTA3NDQ1NzkzMDViNzE2N2M0
Ni4uM2U1MWNjMDZhMjIzOWFjZThlNzk4YzRhODM2MDM2NGFmMGEyOTQwNiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VCYWNrZW5kSW50ZXJm
YWNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VC
YWNrZW5kSW50ZXJmYWNlLmgKQEAgLTI2LDcgKzI2LDggQEAKICNpZm5kZWYgSURCRGF0YWJhc2VC
YWNrZW5kSW50ZXJmYWNlX2gKICNkZWZpbmUgSURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlX2gK
IAotI2luY2x1ZGUgIklEQlRyYW5zYWN0aW9uLmgiCisjaW5jbHVkZSAiSURCRGF0YWJhc2VFcnJv
ci5oIgorI2luY2x1ZGUgIkluZGV4ZWREQi5oIgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+
CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJp
bmcuaD4KQEAgLTg1LDcgKzg2LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBwdXQoaW50
NjRfdCB0cmFuc2FjdGlvbklkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIFBhc3NSZWZQdHI8U2hh
cmVkQnVmZmVyPiB2YWx1ZSwgUGFzc1JlZlB0cjxJREJLZXk+LCBQdXRNb2RlLCBQYXNzUmVmUHRy
PElEQkNhbGxiYWNrcz4sIGNvbnN0IFZlY3RvcjxpbnQ2NF90PiYgaW5kZXhJZHMsIGNvbnN0IFZl
Y3RvcjxJbmRleEtleXM+JikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzZXRJbmRleEtleXMoaW50
NjRfdCB0cmFuc2FjdGlvbklkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIFBhc3NSZWZQdHI8SURC
S2V5PiBwcnBQcmltYXJ5S2V5LCBjb25zdCBWZWN0b3I8aW50NjRfdD4mIGluZGV4SWRzLCBjb25z
dCBWZWN0b3I8SW5kZXhLZXlzPiYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc2V0SW5kZXhlc1Jl
YWR5KGludDY0X3QgdHJhbnNhY3Rpb25JZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBjb25zdCBW
ZWN0b3I8aW50NjRfdD4mIGluZGV4SWRzKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIG9wZW5DdXJz
b3IoaW50NjRfdCB0cmFuc2FjdGlvbklkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGludDY0X3Qg
aW5kZXhJZCwgUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4sIHVuc2lnbmVkIHNob3J0IGRpcmVjdGlv
biwgYm9vbCBrZXlPbmx5LCBUYXNrVHlwZSwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+KSA9IDA7
CisgICAgdmlydHVhbCB2b2lkIG9wZW5DdXJzb3IoaW50NjRfdCB0cmFuc2FjdGlvbklkLCBpbnQ2
NF90IG9iamVjdFN0b3JlSWQsIGludDY0X3QgaW5kZXhJZCwgUGFzc1JlZlB0cjxJREJLZXlSYW5n
ZT4sIEluZGV4ZWREQjo6Q3Vyc29yRGlyZWN0aW9uLCBib29sIGtleU9ubHksIFRhc2tUeXBlLCBQ
YXNzUmVmUHRyPElEQkNhbGxiYWNrcz4pID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgY291bnQoaW50
NjRfdCB0cmFuc2FjdGlvbklkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGludDY0X3QgaW5kZXhJ
ZCwgUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4sIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPikgPSAw
OwogICAgIHZpcnR1YWwgdm9pZCBkZWxldGVSYW5nZShpbnQ2NF90IHRyYW5zYWN0aW9uSWQsIGlu
dDY0X3Qgb2JqZWN0U3RvcmVJZCwgUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4sIFBhc3NSZWZQdHI8
SURCQ2FsbGJhY2tzPikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBjbGVhcihpbnQ2NF90IHRyYW5z
YWN0aW9uSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+
KSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJG
YWN0b3J5LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5LmgK
aW5kZXggY2IxYjdiMGIzNzZiN2FhNmQ4NDljNjg0OGIzMGUzZTFjZTYwMmVmOC4uY2M2MWNkN2M2
ZmJkMTJlNGUwOWE3N2VjOWRkMGRhMjBjZmU3NzBiOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRmFjdG9yeS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL0lEQkZhY3RvcnkuaApAQCAtMjgsNyArMjgsNiBAQAogI2lmbmRlZiBJ
REJGYWN0b3J5X2gKICNkZWZpbmUgSURCRmFjdG9yeV9oCiAKLSNpbmNsdWRlICJJREJGYWN0b3J5
QmFja2VuZEludGVyZmFjZS5oIgogI2luY2x1ZGUgIklEQk9wZW5EQlJlcXVlc3QuaCIKICNpbmNs
dWRlICJTY3JpcHRXcmFwcGFibGUuaCIKICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCSW5kZXguY3BwIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCSW5kZXguY3BwCmluZGV4IGJlYjk4
MzZhNTRlYWE4OWE1Yzg3YjJhNTkxNzY4OTIzN2VjMjQyMGUuLmZmNWQ0MzY3YjgzYjkwODViODM5
YTc0NmI4NmNiODYwNjNhZmIxODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL0lEQkluZGV4LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9JREJJbmRleC5jcHAKQEAgLTI4LDcgKzI4LDYgQEAKIAogI2lmIEVOQUJMRShJTkRFWEVE
X0RBVEFCQVNFKQogCi0jaW5jbHVkZSAiSURCQ3Vyc29yQmFja2VuZEludGVyZmFjZS5oIgogI2lu
Y2x1ZGUgIklEQkRhdGFiYXNlRXhjZXB0aW9uLmgiCiAjaW5jbHVkZSAiSURCS2V5LmgiCiAjaW5j
bHVkZSAiSURCS2V5UmFuZ2UuaCIKQEAgLTQwLDcgKzM5LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCi1zdGF0aWMgY29uc3QgdW5zaWduZWQgc2hvcnQgZGVmYXVsdERpcmVjdGlvbiA9IElE
QkN1cnNvcjo6TkVYVDsKK3N0YXRpYyBjb25zdCB1bnNpZ25lZCBzaG9ydCBkZWZhdWx0RGlyZWN0
aW9uID0gSW5kZXhlZERCOjpDdXJzb3JOZXh0OwogCiBJREJJbmRleDo6SURCSW5kZXgoY29uc3Qg
SURCSW5kZXhNZXRhZGF0YSYgbWV0YWRhdGEsIElEQk9iamVjdFN0b3JlKiBvYmplY3RTdG9yZSwg
SURCVHJhbnNhY3Rpb24qIHRyYW5zYWN0aW9uKQogICAgIDogbV9tZXRhZGF0YShtZXRhZGF0YSkK
QEAgLTY4LDEyICs2NywxMiBAQCBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IElEQkluZGV4OjpvcGVu
Q3Vyc29yKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFBhcwogICAgICAgICBlYyA9
IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpUcmFuc2FjdGlvbkluYWN0aXZlRXJyb3I7CiAgICAgICAg
IHJldHVybiAwOwogICAgIH0KLSAgICBJREJDdXJzb3I6OkRpcmVjdGlvbiBkaXJlY3Rpb24gPSBJ
REJDdXJzb3I6OnN0cmluZ1RvRGlyZWN0aW9uKGRpcmVjdGlvblN0cmluZywgY29udGV4dCwgZWMp
OworICAgIEluZGV4ZWREQjo6Q3Vyc29yRGlyZWN0aW9uIGRpcmVjdGlvbiA9IElEQkN1cnNvcjo6
c3RyaW5nVG9EaXJlY3Rpb24oZGlyZWN0aW9uU3RyaW5nLCBjb250ZXh0LCBlYyk7CiAgICAgaWYg
KGVjKQogICAgICAgICByZXR1cm4gMDsKIAogICAgIFJlZlB0cjxJREJSZXF1ZXN0PiByZXF1ZXN0
ID0gSURCUmVxdWVzdDo6Y3JlYXRlKGNvbnRleHQsIElEQkFueTo6Y3JlYXRlKHRoaXMpLCBtX3Ry
YW5zYWN0aW9uLmdldCgpKTsKLSAgICByZXF1ZXN0LT5zZXRDdXJzb3JEZXRhaWxzKElEQkN1cnNv
ckJhY2tlbmRJbnRlcmZhY2U6OktleUFuZFZhbHVlLCBkaXJlY3Rpb24pOworICAgIHJlcXVlc3Qt
PnNldEN1cnNvckRldGFpbHMoSW5kZXhlZERCOjpDdXJzb3JLZXlBbmRWYWx1ZSwgZGlyZWN0aW9u
KTsKICAgICBiYWNrZW5kREIoKS0+b3BlbkN1cnNvcihtX3RyYW5zYWN0aW9uLT5pZCgpLCBtX29i
amVjdFN0b3JlLT5pZCgpLCBtX21ldGFkYXRhLmlkLCBrZXlSYW5nZSwgZGlyZWN0aW9uLCBmYWxz
ZSwgSURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlOjpOb3JtYWxUYXNrLCByZXF1ZXN0KTsKICAg
ICByZXR1cm4gcmVxdWVzdDsKIH0KQEAgLTEyMywxMiArMTIyLDEyIEBAIFBhc3NSZWZQdHI8SURC
UmVxdWVzdD4gSURCSW5kZXg6Om9wZW5LZXlDdXJzb3IoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCog
Y29udGV4dCwKICAgICAgICAgZWMgPSBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6VHJhbnNhY3Rpb25J
bmFjdGl2ZUVycm9yOwogICAgICAgICByZXR1cm4gMDsKICAgICB9Ci0gICAgSURCQ3Vyc29yOjpE
aXJlY3Rpb24gZGlyZWN0aW9uID0gSURCQ3Vyc29yOjpzdHJpbmdUb0RpcmVjdGlvbihkaXJlY3Rp
b25TdHJpbmcsIGNvbnRleHQsIGVjKTsKKyAgICBJbmRleGVkREI6OkN1cnNvckRpcmVjdGlvbiBk
aXJlY3Rpb24gPSBJREJDdXJzb3I6OnN0cmluZ1RvRGlyZWN0aW9uKGRpcmVjdGlvblN0cmluZywg
Y29udGV4dCwgZWMpOwogICAgIGlmIChlYykKICAgICAgICAgcmV0dXJuIDA7CiAKICAgICBSZWZQ
dHI8SURCUmVxdWVzdD4gcmVxdWVzdCA9IElEQlJlcXVlc3Q6OmNyZWF0ZShjb250ZXh0LCBJREJB
bnk6OmNyZWF0ZSh0aGlzKSwgbV90cmFuc2FjdGlvbi5nZXQoKSk7Ci0gICAgcmVxdWVzdC0+c2V0
Q3Vyc29yRGV0YWlscyhJREJDdXJzb3JCYWNrZW5kSW50ZXJmYWNlOjpLZXlPbmx5LCBkaXJlY3Rp
b24pOworICAgIHJlcXVlc3QtPnNldEN1cnNvckRldGFpbHMoSW5kZXhlZERCOjpDdXJzb3JLZXlP
bmx5LCBkaXJlY3Rpb24pOwogICAgIGJhY2tlbmREQigpLT5vcGVuQ3Vyc29yKG1fdHJhbnNhY3Rp
b24tPmlkKCksIG1fb2JqZWN0U3RvcmUtPmlkKCksIG1fbWV0YWRhdGEuaWQsIGtleVJhbmdlLCBk
aXJlY3Rpb24sIHRydWUsIElEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZTo6Tm9ybWFsVGFzaywg
cmVxdWVzdCk7CiAgICAgcmV0dXJuIHJlcXVlc3Q7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZS5jcHAKaW5kZXggZmFhNWNiZTI2MWNj
YjA0ZDRjODkzOTdkNmNmYzNiMmZlMjdhOGEzZi4uNTg5MGVjMzdmYzFjMjU3ZGVhZDJmZmU1ZmVl
ODYxMzdlMDdiZTUyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvSURCT2JqZWN0U3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL0lEQk9iamVjdFN0b3JlLmNwcApAQCAtMzEsNyArMzEsNiBAQAogI2luY2x1ZGUgIkRPTVN0
cmluZ0xpc3QuaCIKICNpbmNsdWRlICJJREJBbnkuaCIKICNpbmNsdWRlICJJREJCaW5kaW5nVXRp
bGl0aWVzLmgiCi0jaW5jbHVkZSAiSURCQ3Vyc29yQmFja2VuZEludGVyZmFjZS5oIgogI2luY2x1
ZGUgIklEQkN1cnNvcldpdGhWYWx1ZS5oIgogI2luY2x1ZGUgIklEQkRhdGFiYXNlLmgiCiAjaW5j
bHVkZSAiSURCRGF0YWJhc2VFeGNlcHRpb24uaCIKQEAgLTQ4LDcgKzQ3LDcgQEAKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCi1zdGF0aWMgY29uc3QgdW5zaWduZWQgc2hvcnQgZGVmYXVsdERpcmVj
dGlvbiA9IElEQkN1cnNvcjo6TkVYVDsKK3N0YXRpYyBjb25zdCB1bnNpZ25lZCBzaG9ydCBkZWZh
dWx0RGlyZWN0aW9uID0gSW5kZXhlZERCOjpDdXJzb3JOZXh0OwogCiBJREJPYmplY3RTdG9yZTo6
SURCT2JqZWN0U3RvcmUoY29uc3QgSURCT2JqZWN0U3RvcmVNZXRhZGF0YSYgbWV0YWRhdGEsIElE
QlRyYW5zYWN0aW9uKiB0cmFuc2FjdGlvbikKICAgICA6IG1fbWV0YWRhdGEobWV0YWRhdGEpCkBA
IC01MDUsMTIgKzUwNCwxMiBAQCBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IElEQk9iamVjdFN0b3Jl
OjpvcGVuQ3Vyc29yKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleAogICAgICAgICBlYyA9
IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpUcmFuc2FjdGlvbkluYWN0aXZlRXJyb3I7CiAgICAgICAg
IHJldHVybiAwOwogICAgIH0KLSAgICBJREJDdXJzb3I6OkRpcmVjdGlvbiBkaXJlY3Rpb24gPSBJ
REJDdXJzb3I6OnN0cmluZ1RvRGlyZWN0aW9uKGRpcmVjdGlvblN0cmluZywgY29udGV4dCwgZWMp
OworICAgIEluZGV4ZWREQjo6Q3Vyc29yRGlyZWN0aW9uIGRpcmVjdGlvbiA9IElEQkN1cnNvcjo6
c3RyaW5nVG9EaXJlY3Rpb24oZGlyZWN0aW9uU3RyaW5nLCBjb250ZXh0LCBlYyk7CiAgICAgaWYg
KGVjKQogICAgICAgICByZXR1cm4gMDsKIAogICAgIFJlZlB0cjxJREJSZXF1ZXN0PiByZXF1ZXN0
ID0gSURCUmVxdWVzdDo6Y3JlYXRlKGNvbnRleHQsIElEQkFueTo6Y3JlYXRlKHRoaXMpLCBtX3Ry
YW5zYWN0aW9uLmdldCgpKTsKLSAgICByZXF1ZXN0LT5zZXRDdXJzb3JEZXRhaWxzKElEQkN1cnNv
ckJhY2tlbmRJbnRlcmZhY2U6OktleUFuZFZhbHVlLCBkaXJlY3Rpb24pOworICAgIHJlcXVlc3Qt
PnNldEN1cnNvckRldGFpbHMoSW5kZXhlZERCOjpDdXJzb3JLZXlBbmRWYWx1ZSwgZGlyZWN0aW9u
KTsKIAogICAgIGJhY2tlbmREQigpLT5vcGVuQ3Vyc29yKG1fdHJhbnNhY3Rpb24tPmlkKCksIGlk
KCksIElEQkluZGV4TWV0YWRhdGE6OkludmFsaWRJZCwgcmFuZ2UsIGRpcmVjdGlvbiwgZmFsc2Us
IHN0YXRpY19jYXN0PElEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZTo6VGFza1R5cGU+KHRhc2tU
eXBlKSwgcmVxdWVzdCk7CiAgICAgcmV0dXJuIHJlcXVlc3QucmVsZWFzZSgpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCUmVxdWVzdC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJSZXF1ZXN0LmNwcAppbmRleCAyYjEzNDM5
MTE4NDM0M2FlOWNmYTA0ODUzODAzZjA3MTU5YTg2MzRiLi42NjVlM2ZmYWViN2YyYjQzM2Q3NWE3
ZjhkNDZlN2ZhYmEwODY2YzJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9JREJSZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9JREJSZXF1ZXN0LmNwcApAQCAtMzcsNiArMzcsNyBAQAogI2luY2x1ZGUgIkV2ZW50UXVl
dWUuaCIKICNpbmNsdWRlICJFeGNlcHRpb25Db2RlUGxhY2Vob2xkZXIuaCIKICNpbmNsdWRlICJJ
REJCaW5kaW5nVXRpbGl0aWVzLmgiCisjaW5jbHVkZSAiSURCQ3Vyc29yQmFja2VuZEludGVyZmFj
ZS5oIgogI2luY2x1ZGUgIklEQkN1cnNvcldpdGhWYWx1ZS5oIgogI2luY2x1ZGUgIklEQkRhdGFi
YXNlLmgiCiAjaW5jbHVkZSAiSURCRXZlbnREaXNwYXRjaGVyLmgiCkBAIC03Nyw4ICs3OCw4IEBA
IElEQlJlcXVlc3Q6OklEQlJlcXVlc3QoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwg
UGFzc1JlZlB0cjxJREJBbnk+IHNvdXJjCiAgICAgLCBtX3NvdXJjZShzb3VyY2UpCiAgICAgLCBt
X3Rhc2tUeXBlKHRhc2tUeXBlKQogICAgICwgbV9oYXNQZW5kaW5nQWN0aXZpdHkodHJ1ZSkKLSAg
ICAsIG1fY3Vyc29yVHlwZShJREJDdXJzb3JCYWNrZW5kSW50ZXJmYWNlOjpLZXlBbmRWYWx1ZSkK
LSAgICAsIG1fY3Vyc29yRGlyZWN0aW9uKElEQkN1cnNvcjo6TkVYVCkKKyAgICAsIG1fY3Vyc29y
VHlwZShJbmRleGVkREI6OkN1cnNvcktleUFuZFZhbHVlKQorICAgICwgbV9jdXJzb3JEaXJlY3Rp
b24oSW5kZXhlZERCOjpDdXJzb3JOZXh0KQogICAgICwgbV9jdXJzb3JGaW5pc2hlZChmYWxzZSkK
ICAgICAsIG1fcGVuZGluZ0N1cnNvcigwKQogICAgICwgbV9kaWRGaXJlVXBncmFkZU5lZWRlZEV2
ZW50KGZhbHNlKQpAQCAtMTg1LDcgKzE4Niw3IEBAIHZvaWQgSURCUmVxdWVzdDo6YWJvcnQoKQog
ICAgIG1fcmVxdWVzdEFib3J0ZWQgPSB0cnVlOwogfQogCi12b2lkIElEQlJlcXVlc3Q6OnNldEN1
cnNvckRldGFpbHMoSURCQ3Vyc29yQmFja2VuZEludGVyZmFjZTo6Q3Vyc29yVHlwZSBjdXJzb3JU
eXBlLCBJREJDdXJzb3I6OkRpcmVjdGlvbiBkaXJlY3Rpb24pCit2b2lkIElEQlJlcXVlc3Q6OnNl
dEN1cnNvckRldGFpbHMoSW5kZXhlZERCOjpDdXJzb3JUeXBlIGN1cnNvclR5cGUsIEluZGV4ZWRE
Qjo6Q3Vyc29yRGlyZWN0aW9uIGRpcmVjdGlvbikKIHsKICAgICBBU1NFUlQobV9yZWFkeVN0YXRl
ID09IFBFTkRJTkcpOwogICAgIEFTU0VSVCghbV9wZW5kaW5nQ3Vyc29yKTsKQEAgLTIyOCw3ICsy
MjksNyBAQCB2b2lkIElEQlJlcXVlc3Q6OnNldFJlc3VsdEN1cnNvcihQYXNzUmVmUHRyPElEQkN1
cnNvcj4gY3Vyc29yLCBQYXNzUmVmUHRyPElEQktleQogICAgIG1fY3Vyc29yUHJpbWFyeUtleSA9
IHByaW1hcnlLZXk7CiAgICAgbV9jdXJzb3JWYWx1ZSA9IHZhbHVlOwogCi0gICAgaWYgKG1fY3Vy
c29yVHlwZSA9PSBJREJDdXJzb3JCYWNrZW5kSW50ZXJmYWNlOjpLZXlPbmx5KSB7CisgICAgaWYg
KG1fY3Vyc29yVHlwZSA9PSBJbmRleGVkREI6OkN1cnNvcktleU9ubHkpIHsKICAgICAgICAgbV9y
ZXN1bHQgPSBJREJBbnk6OmNyZWF0ZShjdXJzb3IpOwogICAgICAgICByZXR1cm47CiAgICAgfQpA
QCAtMjk0LDEwICsyOTUsMTAgQEAgdm9pZCBJREJSZXF1ZXN0OjpvblN1Y2Nlc3MoUGFzc1JlZlB0
cjxJREJDdXJzb3JCYWNrZW5kSW50ZXJmYWNlPiBiYWNrZW5kLCBQYXNzUmUKICAgICBBU1NFUlQo
IW1fcGVuZGluZ0N1cnNvcik7CiAgICAgUmVmUHRyPElEQkN1cnNvcj4gY3Vyc29yOwogICAgIHN3
aXRjaCAobV9jdXJzb3JUeXBlKSB7Ci0gICAgY2FzZSBJREJDdXJzb3JCYWNrZW5kSW50ZXJmYWNl
OjpLZXlPbmx5OgorICAgIGNhc2UgSW5kZXhlZERCOjpDdXJzb3JLZXlPbmx5OgogICAgICAgICBj
dXJzb3IgPSBJREJDdXJzb3I6OmNyZWF0ZShiYWNrZW5kLCBtX2N1cnNvckRpcmVjdGlvbiwgdGhp
cywgbV9zb3VyY2UuZ2V0KCksIG1fdHJhbnNhY3Rpb24uZ2V0KCkpOwogICAgICAgICBicmVhazsK
LSAgICBjYXNlIElEQkN1cnNvckJhY2tlbmRJbnRlcmZhY2U6OktleUFuZFZhbHVlOgorICAgIGNh
c2UgSW5kZXhlZERCOjpDdXJzb3JLZXlBbmRWYWx1ZToKICAgICAgICAgY3Vyc29yID0gSURCQ3Vy
c29yV2l0aFZhbHVlOjpjcmVhdGUoYmFja2VuZCwgbV9jdXJzb3JEaXJlY3Rpb24sIHRoaXMsIG1f
c291cmNlLmdldCgpLCBtX3RyYW5zYWN0aW9uLmdldCgpKTsKICAgICAgICAgYnJlYWs7CiAgICAg
ZGVmYXVsdDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lE
QlJlcXVlc3QuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlJlcXVlc3Qu
aAppbmRleCBkMDY3ZWIyOWE4ODU1NzkyYzBjMTI1NTc3NWNkMDI0ODg4Yzk1MWI1Li5iODMwNjQw
NzAwM2MxMjBiYmExNzYzODI0YjhkMmE5Mzk2Y2ZhMjc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJSZXF1ZXN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvSURCUmVxdWVzdC5oCkBAIC00Miw3ICs0Miw2IEBACiAjaW5jbHVk
ZSAiSURCQW55LmgiCiAjaW5jbHVkZSAiSURCQ2FsbGJhY2tzLmgiCiAjaW5jbHVkZSAiSURCQ3Vy
c29yLmgiCi0jaW5jbHVkZSAiSURCQ3Vyc29yQmFja2VuZEludGVyZmFjZS5oIgogI2luY2x1ZGUg
IlNjcmlwdFdyYXBwYWJsZS5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC03OCw3ICs3Nyw3
IEBAIHB1YmxpYzoKICAgICBERUZJTkVfQVRUUklCVVRFX0VWRU5UX0xJU1RFTkVSKGVycm9yKTsK
IAogICAgIHZvaWQgbWFya0Vhcmx5RGVhdGgoKTsKLSAgICB2b2lkIHNldEN1cnNvckRldGFpbHMo
SURCQ3Vyc29yQmFja2VuZEludGVyZmFjZTo6Q3Vyc29yVHlwZSwgSURCQ3Vyc29yOjpEaXJlY3Rp
b24pOworICAgIHZvaWQgc2V0Q3Vyc29yRGV0YWlscyhJbmRleGVkREI6OkN1cnNvclR5cGUsIElu
ZGV4ZWREQjo6Q3Vyc29yRGlyZWN0aW9uKTsKICAgICB2b2lkIHNldFBlbmRpbmdDdXJzb3IoUGFz
c1JlZlB0cjxJREJDdXJzb3I+KTsKICAgICB2b2lkIGZpbmlzaEN1cnNvcigpOwogICAgIHZvaWQg
YWJvcnQoKTsKQEAgLTE0OSw4ICsxNDgsOCBAQCBwcml2YXRlOgogICAgIFZlY3RvcjxSZWZQdHI8
RXZlbnQ+ID4gbV9lbnF1ZXVlZEV2ZW50czsKIAogICAgIC8vIE9ubHkgdXNlZCBpZiB0aGUgcmVz
dWx0IHR5cGUgd2lsbCBiZSBhIGN1cnNvci4KLSAgICBJREJDdXJzb3JCYWNrZW5kSW50ZXJmYWNl
OjpDdXJzb3JUeXBlIG1fY3Vyc29yVHlwZTsKLSAgICBJREJDdXJzb3I6OkRpcmVjdGlvbiBtX2N1
cnNvckRpcmVjdGlvbjsKKyAgICBJbmRleGVkREI6OkN1cnNvclR5cGUgbV9jdXJzb3JUeXBlOwor
ICAgIEluZGV4ZWREQjo6Q3Vyc29yRGlyZWN0aW9uIG1fY3Vyc29yRGlyZWN0aW9uOwogICAgIGJv
b2wgbV9jdXJzb3JGaW5pc2hlZDsKICAgICBSZWZQdHI8SURCQ3Vyc29yPiBtX3BlbmRpbmdDdXJz
b3I7CiAgICAgUmVmUHRyPElEQktleT4gbV9jdXJzb3JLZXk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5jcHAKaW5kZXggYmMwZWRkZGY4
NDEwM2ZjY2UyZGZlZDEzYjJkYTIzYjQyMzQ5NjdjMy4uZjU1NTk0M2Q4MDMzZDg4MDk1ODM1NjM4
MjVhZGYwYTUxNjRiZDI0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvSURCVHJhbnNhY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmNwcApAQCAtNDQsNyArNDQsNyBAQAogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKLVBhc3NSZWZQdHI8SURCVHJhbnNhY3Rpb24+IElEQlRyYW5zYWN0aW9uOjpj
cmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgaW50NjRfdCBpZCwgY29uc3Qg
VmVjdG9yPFN0cmluZz4mIG9iamVjdFN0b3JlTmFtZXMsIElEQlRyYW5zYWN0aW9uOjpNb2RlIG1v
ZGUsIElEQkRhdGFiYXNlKiBkYikKK1Bhc3NSZWZQdHI8SURCVHJhbnNhY3Rpb24+IElEQlRyYW5z
YWN0aW9uOjpjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgaW50NjRfdCBp
ZCwgY29uc3QgVmVjdG9yPFN0cmluZz4mIG9iamVjdFN0b3JlTmFtZXMsIEluZGV4ZWREQjo6VHJh
bnNhY3Rpb25Nb2RlIG1vZGUsIElEQkRhdGFiYXNlKiBkYikKIHsKICAgICBJREJPcGVuREJSZXF1
ZXN0KiBvcGVuREJSZXF1ZXN0ID0gMDsKICAgICBSZWZQdHI8SURCVHJhbnNhY3Rpb24+IHRyYW5z
YWN0aW9uKGFkb3B0UmVmKG5ldyBJREJUcmFuc2FjdGlvbihjb250ZXh0LCBpZCwgb2JqZWN0U3Rv
cmVOYW1lcywgbW9kZSwgZGIsIG9wZW5EQlJlcXVlc3QsIElEQkRhdGFiYXNlTWV0YWRhdGEoKSkp
KTsKQEAgLTU0LDcgKzU0LDcgQEAgUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbj4gSURCVHJhbnNh
Y3Rpb246OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXgKIAogUGFzc1JlZlB0
cjxJREJUcmFuc2FjdGlvbj4gSURCVHJhbnNhY3Rpb246OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiBjb250ZXh0LCBpbnQ2NF90IGlkLCBJREJEYXRhYmFzZSogZGIsIElEQk9wZW5EQlJl
cXVlc3QqIG9wZW5EQlJlcXVlc3QsIGNvbnN0IElEQkRhdGFiYXNlTWV0YWRhdGEmIHByZXZpb3Vz
TWV0YWRhdGEpCiB7Ci0gICAgUmVmUHRyPElEQlRyYW5zYWN0aW9uPiB0cmFuc2FjdGlvbihhZG9w
dFJlZihuZXcgSURCVHJhbnNhY3Rpb24oY29udGV4dCwgaWQsIFZlY3RvcjxTdHJpbmc+KCksIFZF
UlNJT05fQ0hBTkdFLCBkYiwgb3BlbkRCUmVxdWVzdCwgcHJldmlvdXNNZXRhZGF0YSkpKTsKKyAg
ICBSZWZQdHI8SURCVHJhbnNhY3Rpb24+IHRyYW5zYWN0aW9uKGFkb3B0UmVmKG5ldyBJREJUcmFu
c2FjdGlvbihjb250ZXh0LCBpZCwgVmVjdG9yPFN0cmluZz4oKSwgSW5kZXhlZERCOjpUcmFuc2Fj
dGlvblZlcnNpb25DaGFuZ2UsIGRiLCBvcGVuREJSZXF1ZXN0LCBwcmV2aW91c01ldGFkYXRhKSkp
OwogICAgIHRyYW5zYWN0aW9uLT5zdXNwZW5kSWZOZWVkZWQoKTsKICAgICByZXR1cm4gdHJhbnNh
Y3Rpb24ucmVsZWFzZSgpOwogfQpAQCAtOTAsNyArOTAsNyBAQCBjb25zdCBBdG9taWNTdHJpbmcm
IElEQlRyYW5zYWN0aW9uOjptb2RlUmVhZFdyaXRlTGVnYWN5KCkKIH0KIAogCi1JREJUcmFuc2Fj
dGlvbjo6SURCVHJhbnNhY3Rpb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgaW50
NjRfdCBpZCwgY29uc3QgVmVjdG9yPFN0cmluZz4mIG9iamVjdFN0b3JlTmFtZXMsIElEQlRyYW5z
YWN0aW9uOjpNb2RlIG1vZGUsIElEQkRhdGFiYXNlKiBkYiwgSURCT3BlbkRCUmVxdWVzdCogb3Bl
bkRCUmVxdWVzdCwgY29uc3QgSURCRGF0YWJhc2VNZXRhZGF0YSYgcHJldmlvdXNNZXRhZGF0YSkK
K0lEQlRyYW5zYWN0aW9uOjpJREJUcmFuc2FjdGlvbihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBj
b250ZXh0LCBpbnQ2NF90IGlkLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgb2JqZWN0U3RvcmVOYW1l
cywgSW5kZXhlZERCOjpUcmFuc2FjdGlvbk1vZGUgbW9kZSwgSURCRGF0YWJhc2UqIGRiLCBJREJP
cGVuREJSZXF1ZXN0KiBvcGVuREJSZXF1ZXN0LCBjb25zdCBJREJEYXRhYmFzZU1ldGFkYXRhJiBw
cmV2aW91c01ldGFkYXRhKQogICAgIDogQWN0aXZlRE9NT2JqZWN0KGNvbnRleHQsIHRoaXMpCiAg
ICAgLCBtX2lkKGlkKQogICAgICwgbV9kYXRhYmFzZShkYikKQEAgLTEwMiw3ICsxMDIsNyBAQCBJ
REJUcmFuc2FjdGlvbjo6SURCVHJhbnNhY3Rpb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29u
dGV4dCwgaW50NjRfdCBpZCwgY29ucwogICAgICwgbV9jb250ZXh0U3RvcHBlZChmYWxzZSkKICAg
ICAsIG1fcHJldmlvdXNNZXRhZGF0YShwcmV2aW91c01ldGFkYXRhKQogewotICAgIGlmIChtb2Rl
ID09IFZFUlNJT05fQ0hBTkdFKSB7CisgICAgaWYgKG1vZGUgPT0gSW5kZXhlZERCOjpUcmFuc2Fj
dGlvblZlcnNpb25DaGFuZ2UpIHsKICAgICAgICAgLy8gTm90IGFjdGl2ZSB1bnRpbCB0aGUgY2Fs
bGJhY2suCiAgICAgICAgIG1fc3RhdGUgPSBJbmFjdGl2ZTsKICAgICB9CkBAIC0zMzYsMzAgKzMz
NiwzMCBAQCBib29sIElEQlRyYW5zYWN0aW9uOjpoYXNQZW5kaW5nQWN0aXZpdHkoKSBjb25zdAog
ICAgIHJldHVybiBtX2hhc1BlbmRpbmdBY3Rpdml0eTsKIH0KIAotSURCVHJhbnNhY3Rpb246Ok1v
ZGUgSURCVHJhbnNhY3Rpb246OnN0cmluZ1RvTW9kZShjb25zdCBTdHJpbmcmIG1vZGVTdHJpbmcs
IFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIEV4Y2VwdGlvbkNvZGUmIGVjKQorSW5k
ZXhlZERCOjpUcmFuc2FjdGlvbk1vZGUgSURCVHJhbnNhY3Rpb246OnN0cmluZ1RvTW9kZShjb25z
dCBTdHJpbmcmIG1vZGVTdHJpbmcsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIEV4
Y2VwdGlvbkNvZGUmIGVjKQogewogICAgIGlmIChtb2RlU3RyaW5nLmlzTnVsbCgpCiAgICAgICAg
IHx8IG1vZGVTdHJpbmcgPT0gSURCVHJhbnNhY3Rpb246Om1vZGVSZWFkT25seSgpKQotICAgICAg
ICByZXR1cm4gSURCVHJhbnNhY3Rpb246OlJFQURfT05MWTsKKyAgICAgICAgcmV0dXJuIEluZGV4
ZWREQjo6VHJhbnNhY3Rpb25SZWFkT25seTsKICAgICBpZiAobW9kZVN0cmluZyA9PSBJREJUcmFu
c2FjdGlvbjo6bW9kZVJlYWRXcml0ZSgpKQotICAgICAgICByZXR1cm4gSURCVHJhbnNhY3Rpb246
OlJFQURfV1JJVEU7CisgICAgICAgIHJldHVybiBJbmRleGVkREI6OlRyYW5zYWN0aW9uUmVhZFdy
aXRlOwogCiAgICAgZWMgPSBUeXBlRXJyb3I7Ci0gICAgcmV0dXJuIElEQlRyYW5zYWN0aW9uOjpS
RUFEX09OTFk7CisgICAgcmV0dXJuIEluZGV4ZWREQjo6VHJhbnNhY3Rpb25SZWFkT25seTsKIH0K
IAotY29uc3QgQXRvbWljU3RyaW5nJiBJREJUcmFuc2FjdGlvbjo6bW9kZVRvU3RyaW5nKElEQlRy
YW5zYWN0aW9uOjpNb2RlIG1vZGUpCitjb25zdCBBdG9taWNTdHJpbmcmIElEQlRyYW5zYWN0aW9u
Ojptb2RlVG9TdHJpbmcoSW5kZXhlZERCOjpUcmFuc2FjdGlvbk1vZGUgbW9kZSkKIHsKICAgICBz
d2l0Y2ggKG1vZGUpIHsKLSAgICBjYXNlIElEQlRyYW5zYWN0aW9uOjpSRUFEX09OTFk6CisgICAg
Y2FzZSBJbmRleGVkREI6OlRyYW5zYWN0aW9uUmVhZE9ubHk6CiAgICAgICAgIHJldHVybiBJREJU
cmFuc2FjdGlvbjo6bW9kZVJlYWRPbmx5KCk7CiAgICAgICAgIGJyZWFrOwogCi0gICAgY2FzZSBJ
REJUcmFuc2FjdGlvbjo6UkVBRF9XUklURToKKyAgICBjYXNlIEluZGV4ZWREQjo6VHJhbnNhY3Rp
b25SZWFkV3JpdGU6CiAgICAgICAgIHJldHVybiBJREJUcmFuc2FjdGlvbjo6bW9kZVJlYWRXcml0
ZSgpOwogICAgICAgICBicmVhazsKIAotICAgIGNhc2UgSURCVHJhbnNhY3Rpb246OlZFUlNJT05f
Q0hBTkdFOgorICAgIGNhc2UgSW5kZXhlZERCOjpUcmFuc2FjdGlvblZlcnNpb25DaGFuZ2U6CiAg
ICAgICAgIHJldHVybiBJREJUcmFuc2FjdGlvbjo6bW9kZVZlcnNpb25DaGFuZ2UoKTsKICAgICAg
ICAgYnJlYWs7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L0lEQlRyYW5zYWN0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJU
cmFuc2FjdGlvbi5oCmluZGV4IDY5NzUwZWI3MzllNjgwN2RiMTE4N2RjMGU2Yzg0NGZjODUwMTJi
MjcuLmY0ZDY0Y2I3ZDEzZmUzNTMyNTZjNmUxNWU3Mjk3OWU1MjU1NzU5NzkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb24uaApAQCAtMzUs
NiArMzUsNyBAQAogI2luY2x1ZGUgIkV2ZW50TmFtZXMuaCIKICNpbmNsdWRlICJFdmVudFRhcmdl
dC5oIgogI2luY2x1ZGUgIklEQk1ldGFkYXRhLmgiCisjaW5jbHVkZSAiSW5kZXhlZERCLmgiCiAj
aW5jbHVkZSAiU2NyaXB0V3JhcHBhYmxlLmgiCiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KICNp
bmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgpAQCAtNTEsMTMgKzUyLDcgQEAgc3RydWN0IElEQk9i
amVjdFN0b3JlTWV0YWRhdGE7CiAKIGNsYXNzIElEQlRyYW5zYWN0aW9uIDogcHVibGljIFNjcmlw
dFdyYXBwYWJsZSwgcHVibGljIFJlZkNvdW50ZWQ8SURCVHJhbnNhY3Rpb24+LCBwdWJsaWMgRXZl
bnRUYXJnZXQsIHB1YmxpYyBBY3RpdmVET01PYmplY3QgewogcHVibGljOgotICAgIGVudW0gTW9k
ZSB7Ci0gICAgICAgIFJFQURfT05MWSA9IDAsCi0gICAgICAgIFJFQURfV1JJVEUgPSAxLAotICAg
ICAgICBWRVJTSU9OX0NIQU5HRSA9IDIKLSAgICB9OwotCi0gICAgc3RhdGljIFBhc3NSZWZQdHI8
SURCVHJhbnNhY3Rpb24+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgaW50NjRfdCwg
Y29uc3QgVmVjdG9yPFN0cmluZz4mIG9iamVjdFN0b3JlTmFtZXMsIE1vZGUsIElEQkRhdGFiYXNl
Kik7CisgICAgc3RhdGljIFBhc3NSZWZQdHI8SURCVHJhbnNhY3Rpb24+IGNyZWF0ZShTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiwgaW50NjRfdCwgY29uc3QgVmVjdG9yPFN0cmluZz4mIG9iamVjdFN0
b3JlTmFtZXMsIEluZGV4ZWREQjo6VHJhbnNhY3Rpb25Nb2RlLCBJREJEYXRhYmFzZSopOwogICAg
IHN0YXRpYyBQYXNzUmVmUHRyPElEQlRyYW5zYWN0aW9uPiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCosIGludDY0X3QsIElEQkRhdGFiYXNlKiwgSURCT3BlbkRCUmVxdWVzdCosIGNvbnN0
IElEQkRhdGFiYXNlTWV0YWRhdGEmIHByZXZpb3VzTWV0YWRhdGEpOwogICAgIHZpcnR1YWwgfklE
QlRyYW5zYWN0aW9uKCk7CiAKQEAgLTY3LDE2ICs2MiwxNiBAQCBwdWJsaWM6CiAgICAgc3RhdGlj
IGNvbnN0IEF0b21pY1N0cmluZyYgbW9kZVJlYWRPbmx5TGVnYWN5KCk7CiAgICAgc3RhdGljIGNv
bnN0IEF0b21pY1N0cmluZyYgbW9kZVJlYWRXcml0ZUxlZ2FjeSgpOwogCi0gICAgc3RhdGljIE1v
ZGUgc3RyaW5nVG9Nb2RlKGNvbnN0IFN0cmluZyYsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBF
eGNlcHRpb25Db2RlJik7Ci0gICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYgbW9kZVRvU3Ry
aW5nKE1vZGUpOworICAgIHN0YXRpYyBJbmRleGVkREI6OlRyYW5zYWN0aW9uTW9kZSBzdHJpbmdU
b01vZGUoY29uc3QgU3RyaW5nJiwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIEV4Y2VwdGlvbkNv
ZGUmKTsKKyAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiBtb2RlVG9TdHJpbmcoSW5kZXhl
ZERCOjpUcmFuc2FjdGlvbk1vZGUpOwogCiAgICAgSURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNl
KiBiYWNrZW5kREIoKSBjb25zdDsKIAogICAgIGludDY0X3QgaWQoKSBjb25zdCB7IHJldHVybiBt
X2lkOyB9CiAgICAgYm9vbCBpc0FjdGl2ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGUgPT0gQWN0
aXZlOyB9CiAgICAgYm9vbCBpc0ZpbmlzaGVkKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0ZSA9PSBG
aW5pc2hlZDsgfQotICAgIGJvb2wgaXNSZWFkT25seSgpIGNvbnN0IHsgcmV0dXJuIG1fbW9kZSA9
PSBSRUFEX09OTFk7IH0KLSAgICBib29sIGlzVmVyc2lvbkNoYW5nZSgpIGNvbnN0IHsgcmV0dXJu
IG1fbW9kZSA9PSBWRVJTSU9OX0NIQU5HRTsgfQorICAgIGJvb2wgaXNSZWFkT25seSgpIGNvbnN0
IHsgcmV0dXJuIG1fbW9kZSA9PSBJbmRleGVkREI6OlRyYW5zYWN0aW9uUmVhZE9ubHk7IH0KKyAg
ICBib29sIGlzVmVyc2lvbkNoYW5nZSgpIGNvbnN0IHsgcmV0dXJuIG1fbW9kZSA9PSBJbmRleGVk
REI6OlRyYW5zYWN0aW9uVmVyc2lvbkNoYW5nZTsgfQogCiAgICAgLy8gSW1wbGVtZW50IHRoZSBJ
REJUcmFuc2FjdGlvbiBJREwKICAgICBjb25zdCBTdHJpbmcmIG1vZGUoKSBjb25zdDsKQEAgLTEy
Niw3ICsxMjEsNyBAQCBwdWJsaWM6CiAgICAgdXNpbmcgUmVmQ291bnRlZDxJREJUcmFuc2FjdGlv
bj46OmRlcmVmOwogCiBwcml2YXRlOgotICAgIElEQlRyYW5zYWN0aW9uKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqLCBpbnQ2NF90LCBjb25zdCBWZWN0b3I8U3RyaW5nPiYsIE1vZGUsIElEQkRhdGFi
YXNlKiwgSURCT3BlbkRCUmVxdWVzdCosIGNvbnN0IElEQkRhdGFiYXNlTWV0YWRhdGEmKTsKKyAg
ICBJREJUcmFuc2FjdGlvbihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgaW50NjRfdCwgY29uc3Qg
VmVjdG9yPFN0cmluZz4mLCBJbmRleGVkREI6OlRyYW5zYWN0aW9uTW9kZSwgSURCRGF0YWJhc2Uq
LCBJREJPcGVuREJSZXF1ZXN0KiwgY29uc3QgSURCRGF0YWJhc2VNZXRhZGF0YSYpOwogCiAgICAg
dm9pZCBlbnF1ZXVlRXZlbnQoUGFzc1JlZlB0cjxFdmVudD4pOwogICAgIHZvaWQgY2xvc2VPcGVu
Q3Vyc29ycygpOwpAQCAtMTUxLDcgKzE0Niw3IEBAIHByaXZhdGU6CiAgICAgUmVmUHRyPElEQkRh
dGFiYXNlPiBtX2RhdGFiYXNlOwogICAgIGNvbnN0IFZlY3RvcjxTdHJpbmc+IG1fb2JqZWN0U3Rv
cmVOYW1lczsKICAgICBJREJPcGVuREJSZXF1ZXN0KiBtX29wZW5EQlJlcXVlc3Q7Ci0gICAgY29u
c3QgTW9kZSBtX21vZGU7CisgICAgY29uc3QgSW5kZXhlZERCOjpUcmFuc2FjdGlvbk1vZGUgbV9t
b2RlOwogICAgIFN0YXRlIG1fc3RhdGU7CiAgICAgYm9vbCBtX2hhc1BlbmRpbmdBY3Rpdml0eTsK
ICAgICBib29sIG1fY29udGV4dFN0b3BwZWQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uQmFja2VuZEltcGwuY3BwCmlu
ZGV4IDdmZTgzYjIzZDJlY2JmZjc2MDJlMzJiNGViMTllZDFiYWM4NmFlNmYuLjY1NjI1NTc3MDYx
MTJmMzkxNjAyY2Y1MGY2OTI3ZWJkZTQ4OWM4YzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uQmFja2VuZEltcGwuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uQmFja2VuZEltcGwu
Y3BwCkBAIC0zMSwxMyArMzEsMTQgQEAKICNpbmNsdWRlICJJREJCYWNraW5nU3RvcmUuaCIKICNp
bmNsdWRlICJJREJDdXJzb3JCYWNrZW5kSW1wbC5oIgogI2luY2x1ZGUgIklEQkRhdGFiYXNlQmFj
a2VuZEltcGwuaCIKKyNpbmNsdWRlICJJREJEYXRhYmFzZUNhbGxiYWNrcy5oIgogI2luY2x1ZGUg
IklEQkRhdGFiYXNlRXhjZXB0aW9uLmgiCiAjaW5jbHVkZSAiSURCVHJhY2luZy5oIgogI2luY2x1
ZGUgIklEQlRyYW5zYWN0aW9uQ29vcmRpbmF0b3IuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
Ci1QYXNzUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGw+IElEQlRyYW5zYWN0aW9uQmFj
a2VuZEltcGw6OmNyZWF0ZShpbnQ2NF90IGlkLCBQYXNzUmVmUHRyPElEQkRhdGFiYXNlQ2FsbGJh
Y2tzPiBjYWxsYmFja3MsIGNvbnN0IFZlY3RvcjxpbnQ2NF90PiYgb2JqZWN0U3RvcmVJZHMsIElE
QlRyYW5zYWN0aW9uOjpNb2RlIG1vZGUsIElEQkRhdGFiYXNlQmFja2VuZEltcGwqIGRhdGFiYXNl
KQorUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsPiBJREJUcmFuc2FjdGlvbkJh
Y2tlbmRJbXBsOjpjcmVhdGUoaW50NjRfdCBpZCwgUGFzc1JlZlB0cjxJREJEYXRhYmFzZUNhbGxi
YWNrcz4gY2FsbGJhY2tzLCBjb25zdCBWZWN0b3I8aW50NjRfdD4mIG9iamVjdFN0b3JlSWRzLCBJ
bmRleGVkREI6OlRyYW5zYWN0aW9uTW9kZSBtb2RlLCBJREJEYXRhYmFzZUJhY2tlbmRJbXBsKiBk
YXRhYmFzZSkKIHsKICAgICBIYXNoU2V0PGludDY0X3Q+IG9iamVjdFN0b3JlSGFzaFNldDsKICAg
ICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG9iamVjdFN0b3JlSWRzLnNpemUoKTsgKytpKQpAQCAt
NDYsNyArNDcsNyBAQCBQYXNzUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGw+IElEQlRy
YW5zYWN0aW9uQmFja2VuZEltcGw6OmNyZWF0ZShpbnQ2NF90CiAgICAgcmV0dXJuIGFkb3B0UmVm
KG5ldyBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsKGlkLCBjYWxsYmFja3MsIG9iamVjdFN0b3Jl
SGFzaFNldCwgbW9kZSwgZGF0YWJhc2UpKTsKIH0KIAotSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1w
bDo6SURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbChpbnQ2NF90IGlkLCBQYXNzUmVmUHRyPElEQkRh
dGFiYXNlQ2FsbGJhY2tzPiBjYWxsYmFja3MsIGNvbnN0IEhhc2hTZXQ8aW50NjRfdD4mIG9iamVj
dFN0b3JlSWRzLCBJREJUcmFuc2FjdGlvbjo6TW9kZSBtb2RlLCBJREJEYXRhYmFzZUJhY2tlbmRJ
bXBsKiBkYXRhYmFzZSkKK0lEQlRyYW5zYWN0aW9uQmFja2VuZEltcGw6OklEQlRyYW5zYWN0aW9u
QmFja2VuZEltcGwoaW50NjRfdCBpZCwgUGFzc1JlZlB0cjxJREJEYXRhYmFzZUNhbGxiYWNrcz4g
Y2FsbGJhY2tzLCBjb25zdCBIYXNoU2V0PGludDY0X3Q+JiBvYmplY3RTdG9yZUlkcywgSW5kZXhl
ZERCOjpUcmFuc2FjdGlvbk1vZGUgbW9kZSwgSURCRGF0YWJhc2VCYWNrZW5kSW1wbCogZGF0YWJh
c2UpCiAgICAgOiBtX2lkKGlkKQogICAgICwgbV9vYmplY3RTdG9yZUlkcyhvYmplY3RTdG9yZUlk
cykKICAgICAsIG1fbW9kZShtb2RlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbC5oIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbC5oCmluZGV4IDNjZWY5
NzYyYWUxMDI3ZTg4ODRlOTgyNmY0NzkxZjYzNjRhMzRiMDYuLmU2MThmYTA2ODhhOWMwZGRjOWY5
YTFhNzhjZGQ5MmJmZjI4MTFlYjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uQmFja2VuZEltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsLmgKQEAgLTMxLDcg
KzMxLDYgQEAKICNpbmNsdWRlICJJREJCYWNraW5nU3RvcmUuaCIKICNpbmNsdWRlICJJREJEYXRh
YmFzZUJhY2tlbmRJbnRlcmZhY2UuaCIKICNpbmNsdWRlICJJREJEYXRhYmFzZUVycm9yLmgiCi0j
aW5jbHVkZSAiSURCVHJhbnNhY3Rpb24uaCIKICNpbmNsdWRlICJUaW1lci5oIgogI2luY2x1ZGUg
PHd0Zi9EZXF1ZS5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CkBAIC00NSw3ICs0NCw3IEBA
IGNsYXNzIElEQkRhdGFiYXNlQ2FsbGJhY2tzOwogCiBjbGFzcyBJREJUcmFuc2FjdGlvbkJhY2tl
bmRJbXBsIDogcHVibGljIFJlZkNvdW50ZWQ8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbD4gewog
cHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGw+
IGNyZWF0ZShpbnQ2NF90IHRyYW5zYWN0aW9uSWQsIFBhc3NSZWZQdHI8SURCRGF0YWJhc2VDYWxs
YmFja3M+LCBjb25zdCBWZWN0b3I8aW50NjRfdD4mLCBJREJUcmFuc2FjdGlvbjo6TW9kZSwgSURC
RGF0YWJhc2VCYWNrZW5kSW1wbCopOworICAgIHN0YXRpYyBQYXNzUmVmUHRyPElEQlRyYW5zYWN0
aW9uQmFja2VuZEltcGw+IGNyZWF0ZShpbnQ2NF90IHRyYW5zYWN0aW9uSWQsIFBhc3NSZWZQdHI8
SURCRGF0YWJhc2VDYWxsYmFja3M+LCBjb25zdCBWZWN0b3I8aW50NjRfdD4mLCBJbmRleGVkREI6
OlRyYW5zYWN0aW9uTW9kZSwgSURCRGF0YWJhc2VCYWNrZW5kSW1wbCopOwogICAgIHZpcnR1YWwg
fklEQlRyYW5zYWN0aW9uQmFja2VuZEltcGwoKTsKIAogICAgIHZpcnR1YWwgdm9pZCBhYm9ydCgp
OwpAQCAtNTksNyArNTgsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGFib3J0KFBhc3NSZWZQdHI8
SURCRGF0YWJhc2VFcnJvcj4pOwogICAgIHZvaWQgcnVuKCk7Ci0gICAgSURCVHJhbnNhY3Rpb246
Ok1vZGUgbW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fbW9kZTsgfQorICAgIEluZGV4ZWREQjo6VHJh
bnNhY3Rpb25Nb2RlIG1vZGUoKSBjb25zdCB7IHJldHVybiBtX21vZGU7IH0KICAgICBjb25zdCBI
YXNoU2V0PGludDY0X3Q+JiBzY29wZSgpIGNvbnN0IHsgcmV0dXJuIG1fb2JqZWN0U3RvcmVJZHM7
IH0KICAgICB2b2lkIHNjaGVkdWxlVGFzayhQYXNzT3duUHRyPE9wZXJhdGlvbj4gdGFzaywgUGFz
c093blB0cjxPcGVyYXRpb24+IGFib3J0VGFzayA9IG51bGxwdHIpIHsgc2NoZWR1bGVUYXNrKElE
QkRhdGFiYXNlQmFja2VuZEludGVyZmFjZTo6Tm9ybWFsVGFzaywgdGFzaywgYWJvcnRUYXNrKTsg
fQogICAgIHZvaWQgc2NoZWR1bGVUYXNrKElEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZTo6VGFz
a1R5cGUsIFBhc3NPd25QdHI8T3BlcmF0aW9uPiwgUGFzc093blB0cjxPcGVyYXRpb24+IGFib3J0
VGFzayA9IG51bGxwdHIpOwpAQCAtNzMsNyArNzIsNyBAQCBwdWJsaWM6CiAgICAgSURCRGF0YWJh
c2VCYWNrZW5kSW1wbCogZGF0YWJhc2UoKSBjb25zdCB7IHJldHVybiBtX2RhdGFiYXNlLmdldCgp
OyB9CiAKIHByaXZhdGU6Ci0gICAgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbChpbnQ2NF90IGlk
LCBQYXNzUmVmUHRyPElEQkRhdGFiYXNlQ2FsbGJhY2tzPiwgY29uc3QgSGFzaFNldDxpbnQ2NF90
PiYgb2JqZWN0U3RvcmVJZHMsIElEQlRyYW5zYWN0aW9uOjpNb2RlLCBJREJEYXRhYmFzZUJhY2tl
bmRJbXBsKik7CisgICAgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbChpbnQ2NF90IGlkLCBQYXNz
UmVmUHRyPElEQkRhdGFiYXNlQ2FsbGJhY2tzPiwgY29uc3QgSGFzaFNldDxpbnQ2NF90PiYgb2Jq
ZWN0U3RvcmVJZHMsIEluZGV4ZWREQjo6VHJhbnNhY3Rpb25Nb2RlLCBJREJEYXRhYmFzZUJhY2tl
bmRJbXBsKik7CiAKICAgICBlbnVtIFN0YXRlIHsKICAgICAgICAgVW51c2VkLCAvLyBDcmVhdGVk
LCBidXQgbm8gdGFza3MgeWV0LgpAQCAtOTIsNyArOTEsNyBAQCBwcml2YXRlOgogCiAgICAgY29u
c3QgaW50NjRfdCBtX2lkOwogICAgIGNvbnN0IEhhc2hTZXQ8aW50NjRfdD4gbV9vYmplY3RTdG9y
ZUlkczsKLSAgICBjb25zdCBJREJUcmFuc2FjdGlvbjo6TW9kZSBtX21vZGU7CisgICAgY29uc3Qg
SW5kZXhlZERCOjpUcmFuc2FjdGlvbk1vZGUgbV9tb2RlOwogCiAgICAgU3RhdGUgbV9zdGF0ZTsK
ICAgICBib29sIG1fY29tbWl0UGVuZGluZzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uQ29vcmRpbmF0b3IuY3BwIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb25Db29yZGluYXRvci5jcHAKaW5k
ZXggMGJiNWFjYTk1YTA4YzVjNTE2YTM2NTEzMjU0NWI4ZTQ2OTdkNTBlZi4uYTZmY2Q4ZWEzZTZl
MWQ4MmUxYjkyODkwYWRlNTRmZDc1ZWVlODcxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb25Db29yZGluYXRvci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb25Db29yZGluYXRvci5j
cHAKQEAgLTI5LDcgKzI5LDYgQEAKICNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKIAogI2lu
Y2x1ZGUgIklEQkRhdGFiYXNlQmFja2VuZEltcGwuaCIKLSNpbmNsdWRlICJJREJUcmFuc2FjdGlv
bi5oIgogI2luY2x1ZGUgIklEQlRyYW5zYWN0aW9uQmFja2VuZEltcGwuaCIKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewpAQCAtOTcsNyArOTYsNyBAQCB2b2lkIElEQlRyYW5zYWN0aW9uQ29vcmRpbmF0
b3I6OnByb2Nlc3NTdGFydGVkVHJhbnNhY3Rpb25zKCkKICAgICBpZiAobV9xdWV1ZWRUcmFuc2Fj
dGlvbnMuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBBU1NFUlQobV9zdGFydGVk
VHJhbnNhY3Rpb25zLmlzRW1wdHkoKSB8fCAoKm1fc3RhcnRlZFRyYW5zYWN0aW9ucy5iZWdpbigp
KS0+bW9kZSgpICE9IElEQlRyYW5zYWN0aW9uOjpWRVJTSU9OX0NIQU5HRSk7CisgICAgQVNTRVJU
KG1fc3RhcnRlZFRyYW5zYWN0aW9ucy5pc0VtcHR5KCkgfHwgKCptX3N0YXJ0ZWRUcmFuc2FjdGlv
bnMuYmVnaW4oKSktPm1vZGUoKSAhPSBJbmRleGVkREI6OlRyYW5zYWN0aW9uVmVyc2lvbkNoYW5n
ZSk7CiAKICAgICBMaXN0SGFzaFNldDxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsKj46OmNvbnN0
X2l0ZXJhdG9yIGl0ID0gbV9xdWV1ZWRUcmFuc2FjdGlvbnMuYmVnaW4oKTsKICAgICB3aGlsZSAo
aXQgIT0gbV9xdWV1ZWRUcmFuc2FjdGlvbnMuZW5kKCkpIHsKQEAgLTEyNCwyMiArMTIzLDIyIEBA
IGJvb2wgSURCVHJhbnNhY3Rpb25Db29yZGluYXRvcjo6Y2FuUnVuVHJhbnNhY3Rpb24oSURCVHJh
bnNhY3Rpb25CYWNrZW5kSW1wbCogdHJhCiB7CiAgICAgQVNTRVJUKG1fcXVldWVkVHJhbnNhY3Rp
b25zLmNvbnRhaW5zKHRyYW5zYWN0aW9uKSk7CiAgICAgc3dpdGNoICh0cmFuc2FjdGlvbi0+bW9k
ZSgpKSB7Ci0gICAgY2FzZSBJREJUcmFuc2FjdGlvbjo6VkVSU0lPTl9DSEFOR0U6CisgICAgY2Fz
ZSBJbmRleGVkREI6OlRyYW5zYWN0aW9uVmVyc2lvbkNoYW5nZToKICAgICAgICAgQVNTRVJUKG1f
cXVldWVkVHJhbnNhY3Rpb25zLnNpemUoKSA9PSAxKTsKICAgICAgICAgQVNTRVJUKG1fc3RhcnRl
ZFRyYW5zYWN0aW9ucy5pc0VtcHR5KCkpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAgIGNh
c2UgSURCVHJhbnNhY3Rpb246OlJFQURfT05MWToKKyAgICBjYXNlIEluZGV4ZWREQjo6VHJhbnNh
Y3Rpb25SZWFkT25seToKICAgICAgICAgcmV0dXJuIHRydWU7CiAKLSAgICBjYXNlIElEQlRyYW5z
YWN0aW9uOjpSRUFEX1dSSVRFOgorICAgIGNhc2UgSW5kZXhlZERCOjpUcmFuc2FjdGlvblJlYWRX
cml0ZToKICAgICAgICAgZm9yIChIYXNoU2V0PElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGwqPjo6
Y29uc3RfaXRlcmF0b3IgaXQgPSBtX3N0YXJ0ZWRUcmFuc2FjdGlvbnMuYmVnaW4oKTsgaXQgIT0g
bV9zdGFydGVkVHJhbnNhY3Rpb25zLmVuZCgpOyArK2l0KSB7Ci0gICAgICAgICAgICBpZiAoKCpp
dCktPm1vZGUoKSA9PSBJREJUcmFuc2FjdGlvbjo6UkVBRF9XUklURSAmJiBkb1Njb3Blc092ZXJs
YXAodHJhbnNhY3Rpb24tPnNjb3BlKCksICgqaXQpLT5zY29wZSgpKSkKKyAgICAgICAgICAgIGlm
ICgoKml0KS0+bW9kZSgpID09IEluZGV4ZWREQjo6VHJhbnNhY3Rpb25SZWFkV3JpdGUgJiYgZG9T
Y29wZXNPdmVybGFwKHRyYW5zYWN0aW9uLT5zY29wZSgpLCAoKml0KS0+c2NvcGUoKSkpCiAgICAg
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAgICAgICAgIGZvciAoTGlzdEhh
c2hTZXQ8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbCo+Ojpjb25zdF9pdGVyYXRvciBpdCA9IG1f
cXVldWVkVHJhbnNhY3Rpb25zLmJlZ2luKCk7ICppdCAhPSB0cmFuc2FjdGlvbjsgKytpdCkgewog
ICAgICAgICAgICAgQVNTRVJUKGl0ICE9IG1fcXVldWVkVHJhbnNhY3Rpb25zLmVuZCgpKTsKLSAg
ICAgICAgICAgIGlmICgoKml0KS0+bW9kZSgpID09IElEQlRyYW5zYWN0aW9uOjpSRUFEX1dSSVRF
ICYmIGRvU2NvcGVzT3ZlcmxhcCh0cmFuc2FjdGlvbi0+c2NvcGUoKSwgKCppdCktPnNjb3BlKCkp
KQorICAgICAgICAgICAgaWYgKCgqaXQpLT5tb2RlKCkgPT0gSW5kZXhlZERCOjpUcmFuc2FjdGlv
blJlYWRXcml0ZSAmJiBkb1Njb3Blc092ZXJsYXAodHJhbnNhY3Rpb24tPnNjb3BlKCksICgqaXQp
LT5zY29wZSgpKSkKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KICAg
ICAgICAgcmV0dXJuIHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9JbmRleGVkREIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lu
ZGV4ZWREQi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjkzMjM4MTgzOTU2YWFlZjAzZDg5MWUyNDdjMTAzMTZjYTdh
MzU0ZmQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9JbmRleGVkREIuaApAQCAtMCwwICsxLDU5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEx
IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9S
UyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUK
KyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBJbmRleGVkREJf
aAorI2RlZmluZSBJbmRleGVkREJfaAorCisjaWYgRU5BQkxFKElOREVYRURfREFUQUJBU0UpCisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKworbmFtZXNwYWNlIEluZGV4ZWREQiB7CisKK2VudW0gVHJh
bnNhY3Rpb25Nb2RlIHsKKyAgICBUcmFuc2FjdGlvblJlYWRPbmx5ID0gMCwKKyAgICBUcmFuc2Fj
dGlvblJlYWRXcml0ZSA9IDEsCisgICAgVHJhbnNhY3Rpb25WZXJzaW9uQ2hhbmdlID0gMgorfTsK
KworZW51bSBDdXJzb3JEaXJlY3Rpb24geworICAgIEN1cnNvck5leHQgPSAwLAorICAgIEN1cnNv
ck5leHROb0R1cGxpY2F0ZSA9IDEsCisgICAgQ3Vyc29yUHJldiA9IDIsCisgICAgQ3Vyc29yUHJl
dk5vRHVwbGljYXRlID0gMywKK307CisKK2VudW0gQ3Vyc29yVHlwZSB7CisgICAgQ3Vyc29yS2V5
QW5kVmFsdWUgPSAwLAorICAgIEN1cnNvcktleU9ubHkKK307CisKK30gLy8gbmFtZXNwYWNlIElu
ZGV4ZWREQgorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEVEKElO
REVYRURfREFUQUJBU0UpCisKKyNlbmRpZiAvLyBJbmRleGVkREJfaApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvVGFyZ2V0LnByaSBiL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkKaW5kZXgg
Y2EyNGI2NjA0NDZhMzBmYzNmMjc3N2U0ODM4N2Q1ZTg4OTY3MDMyYi4uOGRkOWFjYjEwYTU2N2Jk
MjZiYTkyM2ZmZjEyMzM1NmIxYWRjM2Y3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvVGFy
Z2V0LnByaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCkBAIC0zMTA3LDggKzMxMDcs
OCBAQCBlbmFibGU/KElOREVYRURfREFUQUJBU0UpIHsKICAgICAgICAgTW9kdWxlcy9pbmRleGVk
ZGIvSURCRGF0YWJhc2VFeGNlcHRpb24uaCBcCiAgICAgICAgIE1vZHVsZXMvaW5kZXhlZGRiL0lE
QkV2ZW50RGlzcGF0Y2hlci5oIFwKICAgICAgICAgTW9kdWxlcy9pbmRleGVkZGIvSURCRmFjdG9y
eS5oIFwKLSAgICAgICAgTW9kdWxlcy9pbmRleGVkZGIvSURCRmFjdG9yeUJhY2tlbmRJbnRlcmZh
Y2UuaCBcCiAgICAgICAgIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkZhY3RvcnlCYWNrZW5kSW1wbC5o
IFwKKyAgICAgICAgTW9kdWxlcy9pbmRleGVkZGIvSURCRmFjdG9yeUJhY2tlbmRJbnRlcmZhY2Uu
aCBcCiAgICAgICAgIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkhpc3RvZ3JhbXMuaCBcCiAgICAgICAg
IE1vZHVsZXMvaW5kZXhlZGRiL0lEQkluZGV4LmggXAogICAgICAgICBNb2R1bGVzL2luZGV4ZWRk
Yi9JREJLZXkuaCBcCkBAIC0zMTE2LDcgKzMxMTYsOCBAQCBlbmFibGU/KElOREVYRURfREFUQUJB
U0UpIHsKICAgICAgICAgTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmUuaCBcCiAgICAg
ICAgIE1vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlQmFja2VuZEltcGwuaCBcCiAgICAg
ICAgIE1vZHVsZXMvaW5kZXhlZGRiL0lEQlJlcXVlc3QuaCBcCi0gICAgICAgIE1vZHVsZXMvaW5k
ZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmgKKyAgICAgICAgTW9kdWxlcy9pbmRleGVkZGIvSURCVHJh
bnNhY3Rpb24uaCBcCisgICAgICAgIE1vZHVsZXMvaW5kZXhlZGRiL0luZGV4ZWREQi5oCiAKICAg
ICBTT1VSQ0VTICs9IFwKICAgICAgICAgYmluZGluZ3MvanMvSURCQmluZGluZ1V0aWxpdGllcy5j
cHAgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpIGIvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS5neXBpCmluZGV4IGViNGZhYjk5OTMwMDAzYjVjNGRjYTUyNDZhYTQ0NzQw
M2Y1MDg3ZTcuLjM3ZDI1YmQyNjdjZGIxNmQ0YWY5MDgyYzZiNzNmYWY0MzcxZmMwYmUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLmd5cGkKQEAgLTcxMSw2ICs3MTEsNyBAQAogICAgICAgICAgICAgJ01vZHVsZXMvaW5k
ZXhlZGRiL0RPTVdpbmRvd0luZGV4ZWREYXRhYmFzZS5oJywKICAgICAgICAgICAgICdNb2R1bGVz
L2luZGV4ZWRkYi9JREJBbnkuY3BwJywKICAgICAgICAgICAgICdNb2R1bGVzL2luZGV4ZWRkYi9J
REJBbnkuaCcsCisgICAgICAgICAgICAnTW9kdWxlcy9pbmRleGVkZGIvSURCQmFja2luZ1N0b3Jl
LmNwcCcsCiAgICAgICAgICAgICAnTW9kdWxlcy9pbmRleGVkZGIvSURCQmFja2luZ1N0b3JlLmgn
LAogICAgICAgICAgICAgJ01vZHVsZXMvaW5kZXhlZGRiL0lEQkNhbGxiYWNrcy5oJywKICAgICAg
ICAgICAgICdNb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3IuY3BwJywKQEAgLTc1MSw3ICs3NTIs
NiBAQAogICAgICAgICAgICAgJ01vZHVsZXMvaW5kZXhlZGRiL0lEQktleVJhbmdlLmgnLAogICAg
ICAgICAgICAgJ01vZHVsZXMvaW5kZXhlZGRiL0lEQkxldmVsREJDb2RpbmcuY3BwJywKICAgICAg
ICAgICAgICdNb2R1bGVzL2luZGV4ZWRkYi9JREJMZXZlbERCQ29kaW5nLmgnLAotICAgICAgICAg
ICAgJ01vZHVsZXMvaW5kZXhlZGRiL0lEQkJhY2tpbmdTdG9yZS5jcHAnLAogICAgICAgICAgICAg
J01vZHVsZXMvaW5kZXhlZGRiL0lEQk1ldGFkYXRhLmgnLAogICAgICAgICAgICAgJ01vZHVsZXMv
aW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlLmNwcCcsCiAgICAgICAgICAgICAnTW9kdWxlcy9pbmRl
eGVkZGIvSURCT2JqZWN0U3RvcmUuaCcsCkBAIC03NzIsNiArNzcyLDcgQEAKICAgICAgICAgICAg
ICdNb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbkNvb3JkaW5hdG9yLmgnLAogICAgICAg
ICAgICAgJ01vZHVsZXMvaW5kZXhlZGRiL0lEQlZlcnNpb25DaGFuZ2VFdmVudC5jcHAnLAogICAg
ICAgICAgICAgJ01vZHVsZXMvaW5kZXhlZGRiL0lEQlZlcnNpb25DaGFuZ2VFdmVudC5oJywKKyAg
ICAgICAgICAgICdNb2R1bGVzL2luZGV4ZWRkYi9JbmRleGVkREIuaCcsCiAgICAgICAgICAgICAn
TW9kdWxlcy9pbmRleGVkZGIvUGFnZUdyb3VwSW5kZXhlZERhdGFiYXNlLmNwcCcsCiAgICAgICAg
ICAgICAnTW9kdWxlcy9pbmRleGVkZGIvUGFnZUdyb3VwSW5kZXhlZERhdGFiYXNlLmgnLAogICAg
ICAgICAgICAgJ01vZHVsZXMvaW5kZXhlZGRiL1dvcmtlckNvbnRleHRJbmRleGVkRGF0YWJhc2Uu
Y3BwJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0Fzc2VydE1hdGNo
aW5nRW51bXMuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvQXNzZXJ0TWF0Y2hpbmdF
bnVtcy5jcHAKaW5kZXggOGFkMDg0NDQyY2YxMmIwOWUxNDJkZTgxM2E0MzUyYzFmNDA3OGQxZS4u
MGIwZTQ0OGQ5MzY2MGI0MzM1ODBlYmI2NTRhYzdmMzQwNWNjZDU2NyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvQXNzZXJ0TWF0Y2hpbmdFbnVtcy5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvQXNzZXJ0TWF0Y2hpbmdFbnVtcy5jcHAKQEAgLTUwNCwx
MCArNTA0LDEwIEBAIENPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oV2ViSURCS2V5UGF0aDo6
QXJyYXlUeXBlLCBJREJLZXlQYXRoOjpBcnJheVR5cGUpOwogCiBDT01QSUxFX0FTU0VSVF9NQVRD
SElOR19FTlVNKFdlYklEQk1ldGFkYXRhOjpOb0ludFZlcnNpb24sIElEQkRhdGFiYXNlTWV0YWRh
dGE6Ok5vSW50VmVyc2lvbik7CiAKLUNPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oV2ViSURC
Q3Vyc29yOjpOZXh0LCBJREJDdXJzb3I6Ok5FWFQpOwotQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdf
RU5VTShXZWJJREJDdXJzb3I6Ok5leHROb0R1cGxpY2F0ZSwgSURCQ3Vyc29yOjpORVhUX05PX0RV
UExJQ0FURSk7Ci1DT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKFdlYklEQkN1cnNvcjo6UHJl
diwgSURCQ3Vyc29yOjpQUkVWKTsKLUNPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oV2ViSURC
Q3Vyc29yOjpQcmV2Tm9EdXBsaWNhdGUsIElEQkN1cnNvcjo6UFJFVl9OT19EVVBMSUNBVEUpOwor
Q09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShXZWJJREJDdXJzb3I6Ok5leHQsIEluZGV4ZWRE
Qjo6Q3Vyc29yTmV4dCk7CitDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKFdlYklEQkN1cnNv
cjo6TmV4dE5vRHVwbGljYXRlLCBJbmRleGVkREI6OkN1cnNvck5leHROb0R1cGxpY2F0ZSk7CitD
T01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKFdlYklEQkN1cnNvcjo6UHJldiwgSW5kZXhlZERC
OjpDdXJzb3JQcmV2KTsKK0NPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oV2ViSURCQ3Vyc29y
OjpQcmV2Tm9EdXBsaWNhdGUsIEluZGV4ZWREQjo6Q3Vyc29yUHJldk5vRHVwbGljYXRlKTsKIAog
Q09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShXZWJJREJEYXRhYmFzZTo6UHJlZW1wdGl2ZVRh
c2ssIElEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZTo6UHJlZW1wdGl2ZVRhc2spOwogQ09NUElM
RV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShXZWJJREJEYXRhYmFzZTo6Tm9ybWFsVGFzaywgSURCRGF0
YWJhc2VCYWNrZW5kSW50ZXJmYWNlOjpOb3JtYWxUYXNrKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL0lEQkRhdGFiYXNlQmFja2VuZFByb3h5LmNwcCBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL0lEQkRhdGFiYXNlQmFja2VuZFByb3h5LmNwcAppbmRleCAzNTVk
ODA4OWVlY2M2ZDNjNDRiZDhjYmEwNDExMWYyNmVmZjE5MzRmLi4yYzJhNWU3ZTlmZDU2NDJhNTk3
MjA0OGIyOWE2YzAyYTdiZTBkYmIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9JREJEYXRhYmFzZUJhY2tlbmRQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvSURCRGF0YWJhc2VCYWNrZW5kUHJveHkuY3BwCkBAIC05Myw3ICs5Myw3IEBAIHZv
aWQgSURCRGF0YWJhc2VCYWNrZW5kUHJveHk6OmFib3J0KGludDY0X3QgdHJhbnNhY3Rpb25JZCwg
UGFzc1JlZlB0cjxJREJEYXRhYmFzCiAgICAgbV93ZWJJREJEYXRhYmFzZS0+YWJvcnQodHJhbnNh
Y3Rpb25JZCwgZXJyb3IpOwogfQogCi12b2lkIElEQkRhdGFiYXNlQmFja2VuZFByb3h5OjpvcGVu
Q3Vyc29yKGludDY0X3QgdHJhbnNhY3Rpb25JZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBpbnQ2
NF90IGluZGV4SWQsIFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+IGtleVJhbmdlLCB1bnNpZ25lZCBz
aG9ydCBkaXJlY3Rpb24sIGJvb2wga2V5T25seSwgVGFza1R5cGUgdGFza1R5cGUsIFBhc3NSZWZQ
dHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MpCit2b2lkIElEQkRhdGFiYXNlQmFja2VuZFByb3h5
OjpvcGVuQ3Vyc29yKGludDY0X3QgdHJhbnNhY3Rpb25JZCwgaW50NjRfdCBvYmplY3RTdG9yZUlk
LCBpbnQ2NF90IGluZGV4SWQsIFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+IGtleVJhbmdlLCBJbmRl
eGVkREI6OkN1cnNvckRpcmVjdGlvbiBkaXJlY3Rpb24sIGJvb2wga2V5T25seSwgVGFza1R5cGUg
dGFza1R5cGUsIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MpCiB7CiAgICAgbV93
ZWJJREJEYXRhYmFzZS0+b3BlbkN1cnNvcih0cmFuc2FjdGlvbklkLCBvYmplY3RTdG9yZUlkLCBp
bmRleElkLCBrZXlSYW5nZSwgc3RhdGljX2Nhc3Q8V2ViSURCQ3Vyc29yOjpEaXJlY3Rpb24+KGRp
cmVjdGlvbiksIGtleU9ubHksIHN0YXRpY19jYXN0PFdlYklEQkRhdGFiYXNlOjpUYXNrVHlwZT4o
dGFza1R5cGUpLCBuZXcgV2ViSURCQ2FsbGJhY2tzSW1wbChjYWxsYmFja3MpKTsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkRhdGFiYXNlQmFja2VuZFByb3h5
LmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJEYXRhYmFzZUJhY2tlbmRQcm94eS5o
CmluZGV4IGRiZDk2NDJmMTEyMGQ5OThkYWY5N2NiNWZhOWE1MjBiYmQ1ZDZkNTEuLjVkNWQ5MDhm
OThiZTNhYTg1YzI1ZDYzNGM1ZmIxMDQyZWViMmY3OGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL0lEQkRhdGFiYXNlQmFja2VuZFByb3h5LmgKKysrIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvSURCRGF0YWJhc2VCYWNrZW5kUHJveHkuaApAQCAtNTUsNyArNTUs
NyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHB1dChpbnQ2NF90IHRyYW5zYWN0aW9uSWQs
IGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgUGFzc1JlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+
IHZhbHVlLCBQYXNzUmVmUHRyPFdlYkNvcmU6OklEQktleT4sIFB1dE1vZGUsIFBhc3NSZWZQdHI8
V2ViQ29yZTo6SURCQ2FsbGJhY2tzPiwgY29uc3QgVmVjdG9yPGludDY0X3Q+JiBpbmRleElkcywg
Y29uc3QgVmVjdG9yPEluZGV4S2V5cz4mKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0
SW5kZXhLZXlzKGludDY0X3QgdHJhbnNhY3Rpb25JZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBQ
YXNzUmVmUHRyPFdlYkNvcmU6OklEQktleT4gcHJwUHJpbWFyeUtleSwgY29uc3QgVmVjdG9yPGlu
dDY0X3Q+JiBpbmRleElkcywgY29uc3QgVmVjdG9yPEluZGV4S2V5cz4mKSBPVkVSUklERTsKICAg
ICB2aXJ0dWFsIHZvaWQgc2V0SW5kZXhlc1JlYWR5KGludDY0X3QgdHJhbnNhY3Rpb25JZCwgaW50
NjRfdCBvYmplY3RTdG9yZUlkLCBjb25zdCBWZWN0b3I8aW50NjRfdD4mIGluZGV4SWRzKSBPVkVS
UklERTsKLSAgICB2aXJ0dWFsIHZvaWQgb3BlbkN1cnNvcihpbnQ2NF90IHRyYW5zYWN0aW9uSWQs
IGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgaW50NjRfdCBpbmRleElkLCBQYXNzUmVmUHRyPFdlYkNv
cmU6OklEQktleVJhbmdlPiwgdW5zaWduZWQgc2hvcnQgZGlyZWN0aW9uLCBib29sIGtleU9ubHks
IFRhc2tUeXBlLCBQYXNzUmVmUHRyPFdlYkNvcmU6OklEQkNhbGxiYWNrcz4pIE9WRVJSSURFOwor
ICAgIHZpcnR1YWwgdm9pZCBvcGVuQ3Vyc29yKGludDY0X3QgdHJhbnNhY3Rpb25JZCwgaW50NjRf
dCBvYmplY3RTdG9yZUlkLCBpbnQ2NF90IGluZGV4SWQsIFBhc3NSZWZQdHI8V2ViQ29yZTo6SURC
S2V5UmFuZ2U+LCBXZWJDb3JlOjpJbmRleGVkREI6OkN1cnNvckRpcmVjdGlvbiwgYm9vbCBrZXlP
bmx5LCBUYXNrVHlwZSwgUGFzc1JlZlB0cjxXZWJDb3JlOjpJREJDYWxsYmFja3M+KSBPVkVSUklE
RTsKICAgICB2aXJ0dWFsIHZvaWQgY291bnQoaW50NjRfdCB0cmFuc2FjdGlvbklkLCBpbnQ2NF90
IG9iamVjdFN0b3JlSWQsIGludDY0X3QgaW5kZXhJZCwgUGFzc1JlZlB0cjxXZWJDb3JlOjpJREJL
ZXlSYW5nZT4sIFBhc3NSZWZQdHI8V2ViQ29yZTo6SURCQ2FsbGJhY2tzPikgT1ZFUlJJREU7CiAg
ICAgdmlydHVhbCB2b2lkIGRlbGV0ZVJhbmdlKGludDY0X3QgdHJhbnNhY3Rpb25JZCwgaW50NjRf
dCBvYmplY3RTdG9yZUlkLCBQYXNzUmVmUHRyPFdlYkNvcmU6OklEQktleVJhbmdlPiwgUGFzc1Jl
ZlB0cjxXZWJDb3JlOjpJREJDYWxsYmFja3M+KSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQg
Y2xlYXIoaW50NjRfdCB0cmFuc2FjdGlvbklkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIFBhc3NS
ZWZQdHI8V2ViQ29yZTo6SURCQ2FsbGJhY2tzPikgT1ZFUlJJREU7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJDYWxsYmFja3NJbXBsLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkNhbGxiYWNrc0ltcGwuY3BwCmluZGV4IDA1ZmM4OGY1
YmNiMzUzZDgzYWQ0ZTQ0ZWMwYjFiOWNkNzZjODQ0ZWIuLjMzOTA1OGVkZGYzNGM3YmY0MmI2NDA0
Yzg5NmM1ZmUzM2Y2YThmYjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L1dlYklEQkNhbGxiYWNrc0ltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L1dlYklEQkNhbGxiYWNrc0ltcGwuY3BwCkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSAiSURC
RGF0YWJhc2VCYWNrZW5kUHJveHkuaCIKICNpbmNsdWRlICJJREJEYXRhYmFzZUVycm9yLmgiCiAj
aW5jbHVkZSAiSURCS2V5LmgiCisjaW5jbHVkZSAiSURCTWV0YWRhdGEuaCIKICNpbmNsdWRlICJX
ZWJET01TdHJpbmdMaXN0LmgiCiAjaW5jbHVkZSAiV2ViSURCQ2FsbGJhY2tzLmgiCiAjaW5jbHVk
ZSAiV2ViSURCRGF0YWJhc2UuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL1dlYklEQkRhdGFiYXNlSW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9X
ZWJJREJEYXRhYmFzZUltcGwuY3BwCmluZGV4IGExODA1MTUwZDJjYTZkYzc3ZGY4NjFiNjJkMGFh
YjNhOWU1ZGIyYWIuLmU0ZGE3ZWUyMzEyOWY2ZjY5YzgzMGQ2MGEwMDljZTVkZjE5NDMyZmQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkRhdGFiYXNlSW1wbC5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCRGF0YWJhc2VJbXBsLmNw
cApAQCAtMTE4LDcgKzExOCw3IEBAIHZvaWQgV2ViSURCRGF0YWJhc2VJbXBsOjpjb21taXQobG9u
ZyBsb25nIHRyYW5zYWN0aW9uSWQpCiB2b2lkIFdlYklEQkRhdGFiYXNlSW1wbDo6b3BlbkN1cnNv
cihsb25nIGxvbmcgdHJhbnNhY3Rpb25JZCwgbG9uZyBsb25nIG9iamVjdFN0b3JlSWQsIGxvbmcg
bG9uZyBpbmRleElkLCBjb25zdCBXZWJJREJLZXlSYW5nZSYga2V5UmFuZ2UsIHVuc2lnbmVkIHNo
b3J0IGRpcmVjdGlvbiwgYm9vbCBrZXlPbmx5LCBUYXNrVHlwZSB0YXNrVHlwZSwgV2ViSURCQ2Fs
bGJhY2tzKiBjYWxsYmFja3MpCiB7CiAgICAgaWYgKG1fZGF0YWJhc2VCYWNrZW5kKQotICAgICAg
ICBtX2RhdGFiYXNlQmFja2VuZC0+b3BlbkN1cnNvcih0cmFuc2FjdGlvbklkLCBvYmplY3RTdG9y
ZUlkLCBpbmRleElkLCBrZXlSYW5nZSwgc3RhdGljX2Nhc3Q8SURCQ3Vyc29yOjpEaXJlY3Rpb24+
KGRpcmVjdGlvbiksIGtleU9ubHksIHN0YXRpY19jYXN0PElEQkRhdGFiYXNlQmFja2VuZEludGVy
ZmFjZTo6VGFza1R5cGU+KHRhc2tUeXBlKSwgSURCQ2FsbGJhY2tzUHJveHk6OmNyZWF0ZShhZG9w
dFB0cihjYWxsYmFja3MpKSk7CisgICAgICAgIG1fZGF0YWJhc2VCYWNrZW5kLT5vcGVuQ3Vyc29y
KHRyYW5zYWN0aW9uSWQsIG9iamVjdFN0b3JlSWQsIGluZGV4SWQsIGtleVJhbmdlLCBzdGF0aWNf
Y2FzdDxJbmRleGVkREI6OkN1cnNvckRpcmVjdGlvbj4oZGlyZWN0aW9uKSwga2V5T25seSwgc3Rh
dGljX2Nhc3Q8SURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlOjpUYXNrVHlwZT4odGFza1R5cGUp
LCBJREJDYWxsYmFja3NQcm94eTo6Y3JlYXRlKGFkb3B0UHRyKGNhbGxiYWNrcykpKTsKIH0KIAog
dm9pZCBXZWJJREJEYXRhYmFzZUltcGw6OmNvdW50KGxvbmcgbG9uZyB0cmFuc2FjdGlvbklkLCBs
b25nIGxvbmcgb2JqZWN0U3RvcmVJZCwgbG9uZyBsb25nIGluZGV4SWQsIGNvbnN0IFdlYklEQktl
eVJhbmdlJiBrZXlSYW5nZSwgV2ViSURCQ2FsbGJhY2tzKiBjYWxsYmFja3MpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0lEQkFib3J0T25Db3JydXB0VGVzdC5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0lEQkFib3J0T25Db3JydXB0VGVzdC5jcHAK
aW5kZXggZTYzY2UyYTg2YjJhOTNkNmIyMmU2ZjgwNDM4YmZkNzgyYmQ5MTFiOS4uYzQzY2EzZjQ4
ZmM1NTcyZmI1YWUxYzhjYWNjMGNiMzM0NGUzMDBhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS90ZXN0cy9JREJBYm9ydE9uQ29ycnVwdFRlc3QuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vdGVzdHMvSURCQWJvcnRPbkNvcnJ1cHRUZXN0LmNwcApAQCAtMzEsNiAr
MzEsNyBAQAogI2luY2x1ZGUgIklEQkRhdGFiYXNlQ2FsbGJhY2tzLmgiCiAjaW5jbHVkZSAiSURC
RmFjdG9yeUJhY2tlbmRJbXBsLmgiCiAjaW5jbHVkZSAiSURCRmFrZUJhY2tpbmdTdG9yZS5oIgor
I2luY2x1ZGUgIkluZGV4ZWREQi5oIgogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCiAjaW5j
bHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0lEQkRhdGFiYXNlQmFja2VuZFRlc3QuY3Bw
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9JREJEYXRhYmFzZUJhY2tlbmRUZXN0LmNw
cAppbmRleCA0NWI5ZTJiYjJiZmFjYTFmMGFjMTE5YjdmNTVlMmE1YzQxYjE0NWVkLi5hOGE2NzZi
ZDAwN2U0YzAzMWM1MDkwMWQ2N2E5MDYxM2ZkYjI0MWUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3Rlc3RzL0lEQkRhdGFiYXNlQmFja2VuZFRlc3QuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvSURCRGF0YWJhc2VCYWNrZW5kVGVzdC5jcHAKQEAgLTI0
LDYgKzI0LDkgQEAKICAqLwogCiAjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpbmNsdWRlICJJREJE
YXRhYmFzZS5oIgorCiAjaW5jbHVkZSAiSURCQmFja2luZ1N0b3JlLmgiCiAjaW5jbHVkZSAiSURC
Q3Vyc29yQmFja2VuZEludGVyZmFjZS5oIgogI2luY2x1ZGUgIklEQkRhdGFiYXNlQmFja2VuZElt
cGwuaCIKQEAgLTMxLDYgKzM0LDcgQEAKICNpbmNsdWRlICJJREJGYWN0b3J5QmFja2VuZEltcGwu
aCIKICNpbmNsdWRlICJJREJGYWtlQmFja2luZ1N0b3JlLmgiCiAjaW5jbHVkZSAiSURCVHJhbnNh
Y3Rpb25CYWNrZW5kSW1wbC5oIgorI2luY2x1ZGUgIkluZGV4ZWREQi5oIgogI2luY2x1ZGUgIlNo
YXJlZEJ1ZmZlci5oIgogI2luY2x1ZGUgIldlYklEQkRhdGFiYXNlQ2FsbGJhY2tzSW1wbC5oIgog
I2luY2x1ZGUgIldlYklEQkRhdGFiYXNlSW1wbC5oIgpAQCAtMTUxLDcgKzE1NSw3IEBAIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIHZvaWQgYWJvcnQoaW50NjRfdCB0cmFuc2FjdGlvbklkLCBQYXNzUmVm
UHRyPElEQkRhdGFiYXNlRXJyb3I+KSBPVkVSUklERSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgY29t
bWl0KGludDY0X3QgdHJhbnNhY3Rpb25JZCkgT1ZFUlJJREUgeyB9CiAKLSAgICB2aXJ0dWFsIHZv
aWQgb3BlbkN1cnNvcihpbnQ2NF90IHRyYW5zYWN0aW9uSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJ
ZCwgaW50NjRfdCBpbmRleElkLCBQYXNzUmVmUHRyPElEQktleVJhbmdlPiwgdW5zaWduZWQgc2hv
cnQgZGlyZWN0aW9uLCBib29sIGtleU9ubHksIFRhc2tUeXBlLCBQYXNzUmVmUHRyPElEQkNhbGxi
YWNrcz4pIE9WRVJSSURFIHsgfQorICAgIHZpcnR1YWwgdm9pZCBvcGVuQ3Vyc29yKGludDY0X3Qg
dHJhbnNhY3Rpb25JZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBpbnQ2NF90IGluZGV4SWQsIFBh
c3NSZWZQdHI8SURCS2V5UmFuZ2U+LCBJREJDdXJzb3JCYWNrZW5kSW50ZXJmYWNlOjpEaXJlY3Rp
b24sIGJvb2wga2V5T25seSwgVGFza1R5cGUsIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPikgT1ZF
UlJJREUgeyB9CiAgICAgdmlydHVhbCB2b2lkIGNvdW50KGludDY0X3Qgb2JqZWN0U3RvcmVJZCwg
aW50NjRfdCBpbmRleElkLCBpbnQ2NF90IHRyYW5zYWN0aW9uSWQsIFBhc3NSZWZQdHI8SURCS2V5
UmFuZ2U+LCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4pIE9WRVJSSURFIHsgfQogICAgIHZpcnR1
YWwgdm9pZCBnZXQoaW50NjRfdCBvYmplY3RTdG9yZUlkLCBpbnQ2NF90IGluZGV4SWQsIGludDY0
X3QgdHJhbnNhY3Rpb25JZCwgUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4sIGJvb2wga2V5T25seSwg
UGFzc1JlZlB0cjxJREJDYWxsYmFja3M+KSBPVkVSUklERSB7IH0KICAgICB2aXJ0dWFsIHZvaWQg
cHV0KGludDY0X3QgdHJhbnNhY3Rpb25JZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBQYXNzUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4sIFBhc3NSZWZQdHI8SURCS2V5PiwgUHV0TW9kZSwgUGFzc1JlZlB0
cjxJREJDYWxsYmFja3M+LCBjb25zdCBWZWN0b3I8aW50NjRfdD4mIGluZGV4SWRzLCBjb25zdCBW
ZWN0b3I8SW5kZXhLZXlzPiYpIE9WRVJSSURFIHsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS90ZXN0cy9JREJGYWtlQmFja2luZ1N0b3JlLmggYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3Rlc3RzL0lEQkZha2VCYWNraW5nU3RvcmUuaAppbmRleCAzZWQ3MjRiYjRlYjBhMmJi
Zjg4YjY0NjFhNTJmZjQyN2I2OGViYjMyLi4zYmE0ZjlkYTYwMTViOWVmNWE1YzJjNGE0NjI0ZDlh
MWZlZDg2ZDI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0lEQkZh
a2VCYWNraW5nU3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0lEQkZh
a2VCYWNraW5nU3RvcmUuaApAQCAtNTEsMTAgKzUxLDEwIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFs
IHZvaWQgZGVsZXRlSW5kZXgoVHJhbnNhY3Rpb24qLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0
X3Qgb2JqZWN0U3RvcmVJZCwgaW50NjRfdCBpbmRleElkKSBPVkVSUklERSB7IH0KICAgICB2aXJ0
dWFsIHZvaWQgcHV0SW5kZXhEYXRhRm9yUmVjb3JkKFRyYW5zYWN0aW9uKiwgaW50NjRfdCBkYXRh
YmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGludDY0X3QgaW5kZXhJZCwgY29uc3QgSURC
S2V5JiwgY29uc3QgUmVjb3JkSWRlbnRpZmllciYpIE9WRVJSSURFIHsgfQogCi0gICAgdmlydHVh
bCBQYXNzUmVmUHRyPEN1cnNvcj4gb3Blbk9iamVjdFN0b3JlS2V5Q3Vyc29yKFRyYW5zYWN0aW9u
KiwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGNvbnN0IElEQktl
eVJhbmdlKiwgSURCQ3Vyc29yOjpEaXJlY3Rpb24pIE9WRVJSSURFIHsgcmV0dXJuIFBhc3NSZWZQ
dHI8Q3Vyc29yPigpOyB9Ci0gICAgdmlydHVhbCBQYXNzUmVmUHRyPEN1cnNvcj4gb3Blbk9iamVj
dFN0b3JlQ3Vyc29yKFRyYW5zYWN0aW9uKiwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9i
amVjdFN0b3JlSWQsIGNvbnN0IElEQktleVJhbmdlKiwgSURCQ3Vyc29yOjpEaXJlY3Rpb24pIE9W
RVJSSURFIHsgcmV0dXJuIFBhc3NSZWZQdHI8Q3Vyc29yPigpOyB9Ci0gICAgdmlydHVhbCBQYXNz
UmVmUHRyPEN1cnNvcj4gb3BlbkluZGV4S2V5Q3Vyc29yKFRyYW5zYWN0aW9uKiwgaW50NjRfdCBk
YXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGludDY0X3QgaW5kZXhJZCwgY29uc3Qg
SURCS2V5UmFuZ2UqLCBJREJDdXJzb3I6OkRpcmVjdGlvbikgT1ZFUlJJREUgeyByZXR1cm4gUGFz
c1JlZlB0cjxDdXJzb3I+KCk7IH0KLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8Q3Vyc29yPiBvcGVu
SW5kZXhDdXJzb3IoVHJhbnNhY3Rpb24qLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2Jq
ZWN0U3RvcmVJZCwgaW50NjRfdCBpbmRleElkLCBjb25zdCBJREJLZXlSYW5nZSosIElEQkN1cnNv
cjo6RGlyZWN0aW9uKSBPVkVSUklERSB7IHJldHVybiBQYXNzUmVmUHRyPEN1cnNvcj4oKTsgfQor
ICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxDdXJzb3I+IG9wZW5PYmplY3RTdG9yZUtleUN1cnNvcihU
cmFuc2FjdGlvbiosIGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBj
b25zdCBJREJLZXlSYW5nZSosIElEQkN1cnNvckJhY2tlbmRJbnRlcmZhY2U6OkRpcmVjdGlvbikg
T1ZFUlJJREUgeyByZXR1cm4gUGFzc1JlZlB0cjxDdXJzb3I+KCk7IH0KKyAgICB2aXJ0dWFsIFBh
c3NSZWZQdHI8Q3Vyc29yPiBvcGVuT2JqZWN0U3RvcmVDdXJzb3IoVHJhbnNhY3Rpb24qLCBpbnQ2
NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgY29uc3QgSURCS2V5UmFuZ2Uq
LCBJREJDdXJzb3JCYWNrZW5kSW50ZXJmYWNlOjpEaXJlY3Rpb24pIE9WRVJSSURFIHsgcmV0dXJu
IFBhc3NSZWZQdHI8Q3Vyc29yPigpOyB9CisgICAgdmlydHVhbCBQYXNzUmVmUHRyPEN1cnNvcj4g
b3BlbkluZGV4S2V5Q3Vyc29yKFRyYW5zYWN0aW9uKiwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2
NF90IG9iamVjdFN0b3JlSWQsIGludDY0X3QgaW5kZXhJZCwgY29uc3QgSURCS2V5UmFuZ2UqLCBJ
REJDdXJzb3JCYWNrZW5kSW50ZXJmYWNlOjpEaXJlY3Rpb24pIE9WRVJSSURFIHsgcmV0dXJuIFBh
c3NSZWZQdHI8Q3Vyc29yPigpOyB9CisgICAgdmlydHVhbCBQYXNzUmVmUHRyPEN1cnNvcj4gb3Bl
bkluZGV4Q3Vyc29yKFRyYW5zYWN0aW9uKiwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9i
amVjdFN0b3JlSWQsIGludDY0X3QgaW5kZXhJZCwgY29uc3QgSURCS2V5UmFuZ2UqLCBJREJDdXJz
b3JCYWNrZW5kSW50ZXJmYWNlOjpEaXJlY3Rpb24pIE9WRVJSSURFIHsgcmV0dXJuIFBhc3NSZWZQ
dHI8Q3Vyc29yPigpOyB9CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>190644</attachid>
            <date>2013-02-27 21:12:17 -0800</date>
            <delta_ts>2013-02-28 20:43:20 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-110653-20130227210830.patch</filename>
            <type>text/plain</type>
            <size>94960</size>
            <attacher name="Alec Flett">alecflett</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ0MjEzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDZkMzNmZGQzOGUzMzQ1
NmJmNDU5NWMxZWU1ZGY4ZmY5NjA3NmZhZi4uNmQ4YTMxYzU1NzY0YzAzNWU1ODBhYjc2YTA4ZjE3
NTVjOGU5MWRmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwOSBAQAorMjAxMy0wMi0yMiAgQWxl
YyBGbGV0dCAgPGFsZWNmbGV0dEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgSW5kZXhlZERCOiBQ
cm9wZXJseSByZWZhY3RvciBmcm9udGVuZC9iYWNrZW5kIGNvZGUgYnkgI2luY2x1ZGVzCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTA2NTMKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbmRleGVkREIgaGFz
IGEgZGlzdGluY3QgYmFja2VuZCBhbmQgZnJvbnRlbmQsIHdpdGggd2VsbCBkZWZpbmVkCisgICAg
ICAgICpJbnRlcmZhY2UgLyAqQ2FsbGJhY2tzIGNsYXNzZXMgZGlzdGluZ3Vpc2hpbmcgdGhlbSwg
cmVzcGVjdGl2ZWx5LgorICAgICAgICAKKyAgICAgICAgVGhpcyBtYWtlcyBzdXJlIHRoYXQgdGhl
IGZyb250ZW5kIGFuZCBiYWNrZW5kIGRvIG5vdCBpbmNsdWRlIGVhY2gKKyAgICAgICAgb3RoZXIg
YW5kIGZpeGVzIGJ1aWxkIHByb2JsZW1zIHRoYXQgb2NjdXJyZWQgYXMgYSByZXN1bHQuCisKKyAg
ICAgICAgU3BlY2lmaWNhbGx5IHRoaXMgbW92ZXMgZW51bXMgb3V0IG9mIElEQkN1cnNvciBhbmQg
SURCVHJhbnNhY3Rpb24KKyAgICAgICAgaW50byBJbmRleGVkREIuaCBpbiBhIG5ldyBXZWJDb3Jl
OjpJbmRleGVkREIgbmFtZXNwYWNlLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cywgYXMgdGhpcyBp
cyBqdXN0IGEgcmVmYWN0b3IuCisKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJCYWNr
aW5nU3RvcmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCQmFja2luZ1N0b3JlOjpDdXJzb3I6
OmNvbnRpbnVlRnVuY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6b2JqZWN0U3RvcmVDdXJzb3JP
cHRpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OmluZGV4Q3Vyc29yT3B0aW9ucyk6CisgICAgICAg
IChXZWJDb3JlOjpJREJCYWNraW5nU3RvcmU6Om9wZW5PYmplY3RTdG9yZUN1cnNvcik6CisgICAg
ICAgIChXZWJDb3JlOjpJREJCYWNraW5nU3RvcmU6Om9wZW5PYmplY3RTdG9yZUtleUN1cnNvcik6
CisgICAgICAgIChXZWJDb3JlOjpJREJCYWNraW5nU3RvcmU6Om9wZW5JbmRleEtleUN1cnNvcik6
CisgICAgICAgIChXZWJDb3JlOjpJREJCYWNraW5nU3RvcmU6Om9wZW5JbmRleEN1cnNvcik6Cisg
ICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCQmFja2luZ1N0b3JlLmg6CisgICAgICAgIChJ
REJCYWNraW5nU3RvcmUpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpJREJDdXJzb3I6OmNyZWF0ZSk6CisgICAgICAgIChXZWJD
b3JlOjpJREJDdXJzb3I6OklEQkN1cnNvcik6CisgICAgICAgIChXZWJDb3JlOjpJREJDdXJzb3I6
OmNvbnRpbnVlRnVuY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6SURCQ3Vyc29yOjpzdHJpbmdU
b0RpcmVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpJREJDdXJzb3I6OmRpcmVjdGlvblRvU3Ry
aW5nKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3IuaDoKKyAgICAgICAg
KElEQkN1cnNvcik6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yQmFja2Vu
ZEltcGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCQ3Vyc29yQmFja2VuZEltcGw6OmRlbGV0
ZUZ1bmN0aW9uKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3JCYWNrZW5k
SW1wbC5oOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvckJhY2tlbmRJbnRl
cmZhY2UuaDoKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3JXaXRoVmFsdWUu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCQ3Vyc29yV2l0aFZhbHVlOjpjcmVhdGUpOgorICAg
ICAgICAoV2ViQ29yZTo6SURCQ3Vyc29yV2l0aFZhbHVlOjpJREJDdXJzb3JXaXRoVmFsdWUpOgor
ICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvcldpdGhWYWx1ZS5oOgorICAgICAg
ICAoSURCQ3Vyc29yV2l0aFZhbHVlKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJE
YXRhYmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZTo6dHJhbnNhY3Rpb24p
OgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQmFja2VuZEltcGwuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6T3BlbkN1cnNvck9wZXJhdGlvbjo6Y3JlYXRlKToKKyAgICAg
ICAgKFdlYkNvcmU6Ok9wZW5DdXJzb3JPcGVyYXRpb246Ok9wZW5DdXJzb3JPcGVyYXRpb24pOgor
ICAgICAgICAoT3BlbkN1cnNvck9wZXJhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRh
YmFzZUJhY2tlbmRJbXBsOjpjcmVhdGVPYmplY3RTdG9yZSk6CisgICAgICAgIChXZWJDb3JlOjpJ
REJEYXRhYmFzZUJhY2tlbmRJbXBsOjpkZWxldGVPYmplY3RTdG9yZSk6CisgICAgICAgIChXZWJD
b3JlOjpJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpjcmVhdGVJbmRleCk6CisgICAgICAgIChXZWJD
b3JlOjpJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpkZWxldGVJbmRleCk6CisgICAgICAgIChXZWJD
b3JlOjpHZXRPcGVyYXRpb246OnBlcmZvcm0pOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJh
c2VCYWNrZW5kSW1wbDo6cHV0KToKKyAgICAgICAgKFdlYkNvcmU6OlB1dE9wZXJhdGlvbjo6cGVy
Zm9ybSk6CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpzZXRJbmRl
eEtleXMpOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6b3BlbkN1
cnNvcik6CisgICAgICAgIChXZWJDb3JlOjpPcGVuQ3Vyc29yT3BlcmF0aW9uOjpwZXJmb3JtKToK
KyAgICAgICAgKFdlYkNvcmU6OkNvdW50T3BlcmF0aW9uOjpwZXJmb3JtKToKKyAgICAgICAgKFdl
YkNvcmU6OklEQkRhdGFiYXNlQmFja2VuZEltcGw6OmRlbGV0ZVJhbmdlKToKKyAgICAgICAgKFdl
YkNvcmU6OkRlbGV0ZVJhbmdlT3BlcmF0aW9uOjpwZXJmb3JtKToKKyAgICAgICAgKFdlYkNvcmU6
OklEQkRhdGFiYXNlQmFja2VuZEltcGw6OmNsZWFyKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkRh
dGFiYXNlQmFja2VuZEltcGw6OnRyYW5zYWN0aW9uU3RhcnRlZCk6CisgICAgICAgIChXZWJDb3Jl
OjpJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjp0cmFuc2FjdGlvbkZpbmlzaGVkKToKKyAgICAgICAg
KFdlYkNvcmU6OklEQkRhdGFiYXNlQmFja2VuZEltcGw6OnRyYW5zYWN0aW9uRmluaXNoZWRBbmRB
Ym9ydEZpcmVkKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlQmFja2VuZEltcGw6OnRy
YW5zYWN0aW9uRmluaXNoZWRBbmRDb21wbGV0ZUZpcmVkKToKKyAgICAgICAgKFdlYkNvcmU6OklE
QkRhdGFiYXNlQmFja2VuZEltcGw6OmNyZWF0ZVRyYW5zYWN0aW9uKToKKyAgICAgICAgKFdlYkNv
cmU6OklEQkRhdGFiYXNlQmFja2VuZEltcGw6OnJ1bkludFZlcnNpb25DaGFuZ2VUcmFuc2FjdGlv
bik6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VCYWNrZW5kSW1wbC5o
OgorICAgICAgICAoSURCRGF0YWJhc2VCYWNrZW5kSW1wbCk6CisgICAgICAgICogTW9kdWxlcy9p
bmRleGVkZGIvSURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlLmg6CisgICAgICAgICogTW9kdWxl
cy9pbmRleGVkZGIvSURCSW5kZXguY3BwOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChX
ZWJDb3JlOjpJREJJbmRleDo6b3BlbkN1cnNvcik6CisgICAgICAgIChXZWJDb3JlOjpJREJJbmRl
eDo6b3BlbktleUN1cnNvcik6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0
U3RvcmUuY3BwOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJPYmpl
Y3RTdG9yZTo6b3BlbkN1cnNvcik6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCUmVx
dWVzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJSZXF1ZXN0OjpJREJSZXF1ZXN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OklEQlJlcXVlc3Q6OnNldEN1cnNvckRldGFpbHMpOgorICAgICAgICAq
IE1vZHVsZXMvaW5kZXhlZGRiL0lEQlJlcXVlc3QuaDoKKyAgICAgICAgKElEQlJlcXVlc3QpOgor
ICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6SURC
VHJhbnNhY3Rpb246OklEQlRyYW5zYWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5z
YWN0aW9uOjpzdHJpbmdUb01vZGUpOgorICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb246
Om1vZGVUb1N0cmluZyk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rp
b24uaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoSURCVHJhbnNhY3Rpb24pOgorICAg
ICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb246OmlzUmVhZE9ubHkpOgorICAgICAgICAoV2Vi
Q29yZTo6SURCVHJhbnNhY3Rpb246OmlzVmVyc2lvbkNoYW5nZSk6CisgICAgICAgICogTW9kdWxl
cy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29y
ZTo6SURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbDo6SURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbCk6
CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbC5o
OgorICAgICAgICAoSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbCk6CisgICAgICAgIChXZWJDb3Jl
OjpJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsOjptb2RlKToKKyAgICAgICAgKiBNb2R1bGVzL2lu
ZGV4ZWRkYi9JREJUcmFuc2FjdGlvbkNvb3JkaW5hdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OklEQlRyYW5zYWN0aW9uQ29vcmRpbmF0b3I6OnByb2Nlc3NTdGFydGVkVHJhbnNhY3Rpb25zKToK
KyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uQ29vcmRpbmF0b3I6OmNhblJ1blRyYW5z
YWN0aW9uKToKKwogMjAxMy0wMi0yNyAgQW5kcmVpIEJ1Y3VyICA8YWJ1Y3VyQGFkb2JlLmNvbT4K
IAogICAgICAgICBSRUdSRVNTSU9OKHIxMjQ3MzkpOiBmYXN0L2xpc3RzL2xpc3QtbWFya2VyLXJl
bW92ZS1jcmFzaC5odG1sIGhpdHMgYW4gYXNzZXJ0aW9uIGluIE1vdmVQYXJhZ3JhcGhzCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IGZmYmFjNzdjZWJlN2RkNGYxM2VhMjJkMzE4NzAzMjZk
ZGYwOWU0MDcuLjM2NmE2NGI2ZGZiMWM2MzJlN2ZmNmNkMjRkYzU2YjI1ZGZlMWVkOGYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTMtMDItMjIgIEFsZWMg
RmxldHQgIDxhbGVjZmxldHRAY2hyb21pdW0ub3JnPgorCisgICAgICAgIEluZGV4ZWREQjogUHJv
cGVybHkgcmVmYWN0b3IgZnJvbnRlbmQvYmFja2VuZCBjb2RlIGJ5ICNpbmNsdWRlcworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTEwNjUzCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ2xlYW4gdXAgdGhlIGZy
b250ZW5kL2JhY2tlbmQgV2ViSURCKiBpbXBsZW1lbnRhdGlvbnMgdG8KKyAgICAgICAgbWF0Y2gg
dGhlIGNoYW5nZXMgdG8gd2Via2l0LgorCiAyMDEzLTAyLTI2ICBKYW1lcyBSb2JpbnNvbiAgPGph
bWVzckBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgW2Nocm9taXVtXSBSZW1vdmUgV2ViVmlld0lt
cGw6OmFuaW1hdGUgc2hpbW15IG91dCB0aHJvdWdoIGNvbXBvc2l0b3IKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0gYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtl
ZmlsZS5saXN0LmFtCmluZGV4IDVjYjc4MzAyNWJkMTM0NDI0MGUzMzZlZTZkNzcxNWQyMTI1Njkx
NzEuLjg1OTZjNTQ4ZjhlNDE4NDQ4MTA0NTUxZmM1YzMyYWNhNDIwM2Q2MjggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KKysrIGIvU291cmNlL1dlYkNvcmUv
R05VbWFrZWZpbGUubGlzdC5hbQpAQCAtMTkxNyw2ICsxOTE3LDcgQEAgd2ViY29yZV9tb2R1bGVz
X3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5z
YWN0aW9uLmggXAogCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlZlcnNpb25D
aGFuZ2VFdmVudC5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlZl
cnNpb25DaGFuZ2VFdmVudC5oIFwKKwlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9J
bmRleGVkREIuaCBcCiAJU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvUGFnZUdyb3Vw
SW5kZXhlZERhdGFiYXNlLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
UGFnZUdyb3VwSW5kZXhlZERhdGFiYXNlLmggXAogCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL1dvcmtlckNvbnRleHRJbmRleGVkRGF0YWJhc2UuY3BwIFwKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkJhY2tpbmdTdG9yZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJCYWNraW5nU3RvcmUuY3BwCmluZGV4IDM3
MGNjMTU5NWZmZmY3Y2ZhMTllMDQ3MWZhNGFlYjI1NzM5M2NmZTYuLjE2MGVkMmQxNTAwZGU1NTQ1
OWI0NGZiMmEzMGQzMDA2YWZmZjBlMjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL0lEQkJhY2tpbmdTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvSURCQmFja2luZ1N0b3JlLmNwcApAQCAtMTI3OSw3ICsxMjc5LDcgQEAg
Ym9vbCBJREJCYWNraW5nU3RvcmU6OkN1cnNvcjo6Y29udGludWVGdW5jdGlvbihjb25zdCBJREJL
ZXkqIGtleSwgSXRlcmF0b3JTdGF0ZQogewogICAgIFJlZlB0cjxJREJLZXk+IHByZXZpb3VzS2V5
ID0gbV9jdXJyZW50S2V5OwogCi0gICAgLy8gV2hlbiBpdGVyYXRpbmcgd2l0aCBQUkVWX05PX0RV
UExJQ0FURSwgc3BlYyByZXF1aXJlcyB0aGF0IHRoZQorICAgIC8vIFdoZW4gaXRlcmF0aW5nIHdp
dGggUHJldk5vRHVwbGljYXRlLCBzcGVjIHJlcXVpcmVzIHRoYXQgdGhlCiAgICAgLy8gdmFsdWUg
d2UgeWllbGQgZm9yIGVhY2gga2V5IGlzIHRoZSBmaXJzdCBkdXBsaWNhdGUgaW4gZm9yd2FyZHMK
ICAgICAvLyBvcmRlci4KICAgICBSZWZQdHI8SURCS2V5PiBsYXN0RHVwbGljYXRlS2V5OwpAQCAt
MTY4OSwxMiArMTY4OSwxMiBAQCBib29sIEluZGV4Q3Vyc29ySW1wbDo6bG9hZEN1cnJlbnRSb3co
KQogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIG9iamVjdFN0b3JlQ3Vyc29yT3B0aW9ucyhM
ZXZlbERCVHJhbnNhY3Rpb24qIHRyYW5zYWN0aW9uLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0
X3Qgb2JqZWN0U3RvcmVJZCwgY29uc3QgSURCS2V5UmFuZ2UqIHJhbmdlLCBJREJDdXJzb3I6OkRp
cmVjdGlvbiBkaXJlY3Rpb24sIElEQkJhY2tpbmdTdG9yZTo6Q3Vyc29yOjpDdXJzb3JPcHRpb25z
JiBjdXJzb3JPcHRpb25zKQorYm9vbCBvYmplY3RTdG9yZUN1cnNvck9wdGlvbnMoTGV2ZWxEQlRy
YW5zYWN0aW9uKiB0cmFuc2FjdGlvbiwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVj
dFN0b3JlSWQsIGNvbnN0IElEQktleVJhbmdlKiByYW5nZSwgSW5kZXhlZERCOjpDdXJzb3JEaXJl
Y3Rpb24gZGlyZWN0aW9uLCBJREJCYWNraW5nU3RvcmU6OkN1cnNvcjo6Q3Vyc29yT3B0aW9ucyYg
Y3Vyc29yT3B0aW9ucykKIHsKICAgICBib29sIGxvd2VyQm91bmQgPSByYW5nZSAmJiByYW5nZS0+
bG93ZXIoKTsKICAgICBib29sIHVwcGVyQm91bmQgPSByYW5nZSAmJiByYW5nZS0+dXBwZXIoKTsK
LSAgICBjdXJzb3JPcHRpb25zLmZvcndhcmQgPSAoZGlyZWN0aW9uID09IElEQkN1cnNvcjo6TkVY
VF9OT19EVVBMSUNBVEUgfHwgZGlyZWN0aW9uID09IElEQkN1cnNvcjo6TkVYVCk7Ci0gICAgY3Vy
c29yT3B0aW9ucy51bmlxdWUgPSAoZGlyZWN0aW9uID09IElEQkN1cnNvcjo6TkVYVF9OT19EVVBM
SUNBVEUgfHwgZGlyZWN0aW9uID09IElEQkN1cnNvcjo6UFJFVl9OT19EVVBMSUNBVEUpOworICAg
IGN1cnNvck9wdGlvbnMuZm9yd2FyZCA9IChkaXJlY3Rpb24gPT0gSW5kZXhlZERCOjpDdXJzb3JO
ZXh0Tm9EdXBsaWNhdGUgfHwgZGlyZWN0aW9uID09IEluZGV4ZWREQjo6Q3Vyc29yTmV4dCk7Cisg
ICAgY3Vyc29yT3B0aW9ucy51bmlxdWUgPSAoZGlyZWN0aW9uID09IEluZGV4ZWREQjo6Q3Vyc29y
TmV4dE5vRHVwbGljYXRlIHx8IGRpcmVjdGlvbiA9PSBJbmRleGVkREI6OkN1cnNvclByZXZOb0R1
cGxpY2F0ZSk7CiAKICAgICBpZiAoIWxvd2VyQm91bmQpIHsKICAgICAgICAgY3Vyc29yT3B0aW9u
cy5sb3dLZXkgPSBPYmplY3RTdG9yZURhdGFLZXk6OmVuY29kZShkYXRhYmFzZUlkLCBvYmplY3RT
dG9yZUlkLCBtaW5JREJLZXkoKSk7CkBAIC0xNzM2LDEzICsxNzM2LDEzIEBAIGJvb2wgb2JqZWN0
U3RvcmVDdXJzb3JPcHRpb25zKExldmVsREJUcmFuc2FjdGlvbiogdHJhbnNhY3Rpb24sIGludDY0
X3QgZGF0YWJhc2VJCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgaW5kZXhDdXJzb3JPcHRp
b25zKExldmVsREJUcmFuc2FjdGlvbiogdHJhbnNhY3Rpb24sIGludDY0X3QgZGF0YWJhc2VJZCwg
aW50NjRfdCBvYmplY3RTdG9yZUlkLCBpbnQ2NF90IGluZGV4SWQsIGNvbnN0IElEQktleVJhbmdl
KiByYW5nZSwgSURCQ3Vyc29yOjpEaXJlY3Rpb24gZGlyZWN0aW9uLCBJREJCYWNraW5nU3RvcmU6
OkN1cnNvcjo6Q3Vyc29yT3B0aW9ucyYgY3Vyc29yT3B0aW9ucykKK2Jvb2wgaW5kZXhDdXJzb3JP
cHRpb25zKExldmVsREJUcmFuc2FjdGlvbiogdHJhbnNhY3Rpb24sIGludDY0X3QgZGF0YWJhc2VJ
ZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBpbnQ2NF90IGluZGV4SWQsIGNvbnN0IElEQktleVJh
bmdlKiByYW5nZSwgSW5kZXhlZERCOjpDdXJzb3JEaXJlY3Rpb24gZGlyZWN0aW9uLCBJREJCYWNr
aW5nU3RvcmU6OkN1cnNvcjo6Q3Vyc29yT3B0aW9ucyYgY3Vyc29yT3B0aW9ucykKIHsKICAgICBB
U1NFUlQodHJhbnNhY3Rpb24pOwogICAgIGJvb2wgbG93ZXJCb3VuZCA9IHJhbmdlICYmIHJhbmdl
LT5sb3dlcigpOwogICAgIGJvb2wgdXBwZXJCb3VuZCA9IHJhbmdlICYmIHJhbmdlLT51cHBlcigp
OwotICAgIGN1cnNvck9wdGlvbnMuZm9yd2FyZCA9IChkaXJlY3Rpb24gPT0gSURCQ3Vyc29yOjpO
RVhUX05PX0RVUExJQ0FURSB8fCBkaXJlY3Rpb24gPT0gSURCQ3Vyc29yOjpORVhUKTsKLSAgICBj
dXJzb3JPcHRpb25zLnVuaXF1ZSA9IChkaXJlY3Rpb24gPT0gSURCQ3Vyc29yOjpORVhUX05PX0RV
UExJQ0FURSB8fCBkaXJlY3Rpb24gPT0gSURCQ3Vyc29yOjpQUkVWX05PX0RVUExJQ0FURSk7Cisg
ICAgY3Vyc29yT3B0aW9ucy5mb3J3YXJkID0gKGRpcmVjdGlvbiA9PSBJbmRleGVkREI6OkN1cnNv
ck5leHROb0R1cGxpY2F0ZSB8fCBkaXJlY3Rpb24gPT0gSW5kZXhlZERCOjpDdXJzb3JOZXh0KTsK
KyAgICBjdXJzb3JPcHRpb25zLnVuaXF1ZSA9IChkaXJlY3Rpb24gPT0gSW5kZXhlZERCOjpDdXJz
b3JOZXh0Tm9EdXBsaWNhdGUgfHwgZGlyZWN0aW9uID09IEluZGV4ZWREQjo6Q3Vyc29yUHJldk5v
RHVwbGljYXRlKTsKIAogICAgIGlmICghbG93ZXJCb3VuZCkgewogICAgICAgICBjdXJzb3JPcHRp
b25zLmxvd0tleSA9IEluZGV4RGF0YUtleTo6ZW5jb2RlTWluS2V5KGRhdGFiYXNlSWQsIG9iamVj
dFN0b3JlSWQsIGluZGV4SWQpOwpAQCAtMTc3OSw3ICsxNzc5LDcgQEAgYm9vbCBpbmRleEN1cnNv
ck9wdGlvbnMoTGV2ZWxEQlRyYW5zYWN0aW9uKiB0cmFuc2FjdGlvbiwgaW50NjRfdCBkYXRhYmFz
ZUlkLCBpbnQKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotUGFzc1JlZlB0cjxJREJCYWNraW5nU3Rv
cmU6OkN1cnNvcj4gSURCQmFja2luZ1N0b3JlOjpvcGVuT2JqZWN0U3RvcmVDdXJzb3IoSURCQmFj
a2luZ1N0b3JlOjpUcmFuc2FjdGlvbiogdHJhbnNhY3Rpb24sIGludDY0X3QgZGF0YWJhc2VJZCwg
aW50NjRfdCBvYmplY3RTdG9yZUlkLCBjb25zdCBJREJLZXlSYW5nZSogcmFuZ2UsIElEQkN1cnNv
cjo6RGlyZWN0aW9uIGRpcmVjdGlvbikKK1Bhc3NSZWZQdHI8SURCQmFja2luZ1N0b3JlOjpDdXJz
b3I+IElEQkJhY2tpbmdTdG9yZTo6b3Blbk9iamVjdFN0b3JlQ3Vyc29yKElEQkJhY2tpbmdTdG9y
ZTo6VHJhbnNhY3Rpb24qIHRyYW5zYWN0aW9uLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qg
b2JqZWN0U3RvcmVJZCwgY29uc3QgSURCS2V5UmFuZ2UqIHJhbmdlLCBJbmRleGVkREI6OkN1cnNv
ckRpcmVjdGlvbiBkaXJlY3Rpb24pCiB7CiAgICAgSURCX1RSQUNFKCJJREJCYWNraW5nU3RvcmU6
Om9wZW5PYmplY3RTdG9yZUN1cnNvciIpOwogICAgIExldmVsREJUcmFuc2FjdGlvbiogbGV2ZWxE
QlRyYW5zYWN0aW9uID0gSURCQmFja2luZ1N0b3JlOjpUcmFuc2FjdGlvbjo6bGV2ZWxEQlRyYW5z
YWN0aW9uRnJvbSh0cmFuc2FjdGlvbik7CkBAIC0xNzkzLDcgKzE3OTMsNyBAQCBQYXNzUmVmUHRy
PElEQkJhY2tpbmdTdG9yZTo6Q3Vyc29yPiBJREJCYWNraW5nU3RvcmU6Om9wZW5PYmplY3RTdG9y
ZUN1cnNvcihJREJCYQogICAgIHJldHVybiBjdXJzb3IucmVsZWFzZSgpOwogfQogCi1QYXNzUmVm
UHRyPElEQkJhY2tpbmdTdG9yZTo6Q3Vyc29yPiBJREJCYWNraW5nU3RvcmU6Om9wZW5PYmplY3RT
dG9yZUtleUN1cnNvcihJREJCYWNraW5nU3RvcmU6OlRyYW5zYWN0aW9uKiB0cmFuc2FjdGlvbiwg
aW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGNvbnN0IElEQktleVJh
bmdlKiByYW5nZSwgSURCQ3Vyc29yOjpEaXJlY3Rpb24gZGlyZWN0aW9uKQorUGFzc1JlZlB0cjxJ
REJCYWNraW5nU3RvcmU6OkN1cnNvcj4gSURCQmFja2luZ1N0b3JlOjpvcGVuT2JqZWN0U3RvcmVL
ZXlDdXJzb3IoSURCQmFja2luZ1N0b3JlOjpUcmFuc2FjdGlvbiogdHJhbnNhY3Rpb24sIGludDY0
X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBjb25zdCBJREJLZXlSYW5nZSog
cmFuZ2UsIEluZGV4ZWREQjo6Q3Vyc29yRGlyZWN0aW9uIGRpcmVjdGlvbikKIHsKICAgICBJREJf
VFJBQ0UoIklEQkJhY2tpbmdTdG9yZTo6b3Blbk9iamVjdFN0b3JlS2V5Q3Vyc29yIik7CiAgICAg
TGV2ZWxEQlRyYW5zYWN0aW9uKiBsZXZlbERCVHJhbnNhY3Rpb24gPSBJREJCYWNraW5nU3RvcmU6
OlRyYW5zYWN0aW9uOjpsZXZlbERCVHJhbnNhY3Rpb25Gcm9tKHRyYW5zYWN0aW9uKTsKQEAgLTE4
MDcsNyArMTgwNyw3IEBAIFBhc3NSZWZQdHI8SURCQmFja2luZ1N0b3JlOjpDdXJzb3I+IElEQkJh
Y2tpbmdTdG9yZTo6b3Blbk9iamVjdFN0b3JlS2V5Q3Vyc29yKElECiAgICAgcmV0dXJuIGN1cnNv
ci5yZWxlYXNlKCk7CiB9CiAKLVBhc3NSZWZQdHI8SURCQmFja2luZ1N0b3JlOjpDdXJzb3I+IElE
QkJhY2tpbmdTdG9yZTo6b3BlbkluZGV4S2V5Q3Vyc29yKElEQkJhY2tpbmdTdG9yZTo6VHJhbnNh
Y3Rpb24qIHRyYW5zYWN0aW9uLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3Rv
cmVJZCwgaW50NjRfdCBpbmRleElkLCBjb25zdCBJREJLZXlSYW5nZSogcmFuZ2UsIElEQkN1cnNv
cjo6RGlyZWN0aW9uIGRpcmVjdGlvbikKK1Bhc3NSZWZQdHI8SURCQmFja2luZ1N0b3JlOjpDdXJz
b3I+IElEQkJhY2tpbmdTdG9yZTo6b3BlbkluZGV4S2V5Q3Vyc29yKElEQkJhY2tpbmdTdG9yZTo6
VHJhbnNhY3Rpb24qIHRyYW5zYWN0aW9uLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2Jq
ZWN0U3RvcmVJZCwgaW50NjRfdCBpbmRleElkLCBjb25zdCBJREJLZXlSYW5nZSogcmFuZ2UsIElu
ZGV4ZWREQjo6Q3Vyc29yRGlyZWN0aW9uIGRpcmVjdGlvbikKIHsKICAgICBJREJfVFJBQ0UoIklE
QkJhY2tpbmdTdG9yZTo6b3BlbkluZGV4S2V5Q3Vyc29yIik7CiAgICAgTGV2ZWxEQlRyYW5zYWN0
aW9uKiBsZXZlbERCVHJhbnNhY3Rpb24gPSBJREJCYWNraW5nU3RvcmU6OlRyYW5zYWN0aW9uOjps
ZXZlbERCVHJhbnNhY3Rpb25Gcm9tKHRyYW5zYWN0aW9uKTsKQEAgLTE4MjEsNyArMTgyMSw3IEBA
IFBhc3NSZWZQdHI8SURCQmFja2luZ1N0b3JlOjpDdXJzb3I+IElEQkJhY2tpbmdTdG9yZTo6b3Bl
bkluZGV4S2V5Q3Vyc29yKElEQkJhY2tpCiAgICAgcmV0dXJuIGN1cnNvci5yZWxlYXNlKCk7CiB9
CiAKLVBhc3NSZWZQdHI8SURCQmFja2luZ1N0b3JlOjpDdXJzb3I+IElEQkJhY2tpbmdTdG9yZTo6
b3BlbkluZGV4Q3Vyc29yKElEQkJhY2tpbmdTdG9yZTo6VHJhbnNhY3Rpb24qIHRyYW5zYWN0aW9u
LCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgaW50NjRfdCBpbmRl
eElkLCBjb25zdCBJREJLZXlSYW5nZSogcmFuZ2UsIElEQkN1cnNvcjo6RGlyZWN0aW9uIGRpcmVj
dGlvbikKK1Bhc3NSZWZQdHI8SURCQmFja2luZ1N0b3JlOjpDdXJzb3I+IElEQkJhY2tpbmdTdG9y
ZTo6b3BlbkluZGV4Q3Vyc29yKElEQkJhY2tpbmdTdG9yZTo6VHJhbnNhY3Rpb24qIHRyYW5zYWN0
aW9uLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgaW50NjRfdCBp
bmRleElkLCBjb25zdCBJREJLZXlSYW5nZSogcmFuZ2UsIEluZGV4ZWREQjo6Q3Vyc29yRGlyZWN0
aW9uIGRpcmVjdGlvbikKIHsKICAgICBJREJfVFJBQ0UoIklEQkJhY2tpbmdTdG9yZTo6b3Blbklu
ZGV4Q3Vyc29yIik7CiAgICAgTGV2ZWxEQlRyYW5zYWN0aW9uKiBsZXZlbERCVHJhbnNhY3Rpb24g
PSBJREJCYWNraW5nU3RvcmU6OlRyYW5zYWN0aW9uOjpsZXZlbERCVHJhbnNhY3Rpb25Gcm9tKHRy
YW5zYWN0aW9uKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L0lEQkJhY2tpbmdTdG9yZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURC
QmFja2luZ1N0b3JlLmgKaW5kZXggOGI0OWJjOGE0MjFjNjA2MWJlY2FmNjA3YmNlYjhlMzFjMDY3
NzUzZC4uMTcyYzgyZGRmYTVkMDg0MWUxZDlkMmExNTgxM2QyNDA4ZDFiNGYwOCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQmFja2luZ1N0b3JlLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQmFja2luZ1N0b3JlLmgKQEAg
LTI4LDggKzI4LDggQEAKIAogI2lmIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQogCi0jaW5jbHVk
ZSAiSURCQ3Vyc29yLmgiCiAjaW5jbHVkZSAiSURCTWV0YWRhdGEuaCIKKyNpbmNsdWRlICJJbmRl
eGVkREIuaCIKICNpbmNsdWRlICJMZXZlbERCVHJhbnNhY3Rpb24uaCIKICNpbmNsdWRlIDx3dGYv
T3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KQEAgLTEzOCwxMCArMTM4LDEw
IEBAIHB1YmxpYzoKICAgICAgICAgSURCQmFja2luZ1N0b3JlOjpSZWNvcmRJZGVudGlmaWVyIG1f
cmVjb3JkSWRlbnRpZmllcjsKICAgICB9OwogCi0gICAgdmlydHVhbCBQYXNzUmVmUHRyPEN1cnNv
cj4gb3Blbk9iamVjdFN0b3JlS2V5Q3Vyc29yKElEQkJhY2tpbmdTdG9yZTo6VHJhbnNhY3Rpb24q
LCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgY29uc3QgSURCS2V5
UmFuZ2UqLCBJREJDdXJzb3I6OkRpcmVjdGlvbik7Ci0gICAgdmlydHVhbCBQYXNzUmVmUHRyPEN1
cnNvcj4gb3Blbk9iamVjdFN0b3JlQ3Vyc29yKElEQkJhY2tpbmdTdG9yZTo6VHJhbnNhY3Rpb24q
LCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgY29uc3QgSURCS2V5
UmFuZ2UqLCBJREJDdXJzb3I6OkRpcmVjdGlvbik7Ci0gICAgdmlydHVhbCBQYXNzUmVmUHRyPEN1
cnNvcj4gb3BlbkluZGV4S2V5Q3Vyc29yKElEQkJhY2tpbmdTdG9yZTo6VHJhbnNhY3Rpb24qLCBp
bnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgaW50NjRfdCBpbmRleElk
LCBjb25zdCBJREJLZXlSYW5nZSosIElEQkN1cnNvcjo6RGlyZWN0aW9uKTsKLSAgICB2aXJ0dWFs
IFBhc3NSZWZQdHI8Q3Vyc29yPiBvcGVuSW5kZXhDdXJzb3IoSURCQmFja2luZ1N0b3JlOjpUcmFu
c2FjdGlvbiosIGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBpbnQ2
NF90IGluZGV4SWQsIGNvbnN0IElEQktleVJhbmdlKiwgSURCQ3Vyc29yOjpEaXJlY3Rpb24pOwor
ICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxDdXJzb3I+IG9wZW5PYmplY3RTdG9yZUtleUN1cnNvcihJ
REJCYWNraW5nU3RvcmU6OlRyYW5zYWN0aW9uKiwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90
IG9iamVjdFN0b3JlSWQsIGNvbnN0IElEQktleVJhbmdlKiwgSW5kZXhlZERCOjpDdXJzb3JEaXJl
Y3Rpb24pOworICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxDdXJzb3I+IG9wZW5PYmplY3RTdG9yZUN1
cnNvcihJREJCYWNraW5nU3RvcmU6OlRyYW5zYWN0aW9uKiwgaW50NjRfdCBkYXRhYmFzZUlkLCBp
bnQ2NF90IG9iamVjdFN0b3JlSWQsIGNvbnN0IElEQktleVJhbmdlKiwgSW5kZXhlZERCOjpDdXJz
b3JEaXJlY3Rpb24pOworICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxDdXJzb3I+IG9wZW5JbmRleEtl
eUN1cnNvcihJREJCYWNraW5nU3RvcmU6OlRyYW5zYWN0aW9uKiwgaW50NjRfdCBkYXRhYmFzZUlk
LCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGludDY0X3QgaW5kZXhJZCwgY29uc3QgSURCS2V5UmFu
Z2UqLCBJbmRleGVkREI6OkN1cnNvckRpcmVjdGlvbik7CisgICAgdmlydHVhbCBQYXNzUmVmUHRy
PEN1cnNvcj4gb3BlbkluZGV4Q3Vyc29yKElEQkJhY2tpbmdTdG9yZTo6VHJhbnNhY3Rpb24qLCBp
bnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgaW50NjRfdCBpbmRleElk
LCBjb25zdCBJREJLZXlSYW5nZSosIEluZGV4ZWREQjo6Q3Vyc29yRGlyZWN0aW9uKTsKIAogICAg
IGNsYXNzIFRyYW5zYWN0aW9uIHsKICAgICBwdWJsaWM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3IuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yLmNwcAppbmRleCA0NjhlZGJlYmE5MTExNjlhMDkzYTJl
N2QyMzQ5MDg4ZmNjMjgzNmE1Li43YmIwZjUwMGU0N2I0MjYxMzQwYTkzMjgxNThhZGU5M2UzNDg1
NmM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJz
b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvci5j
cHAKQEAgLTQzLDcgKzQzLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1QYXNzUmVmUHRy
PElEQkN1cnNvcj4gSURCQ3Vyc29yOjpjcmVhdGUoUGFzc1JlZlB0cjxJREJDdXJzb3JCYWNrZW5k
SW50ZXJmYWNlPiBiYWNrZW5kLCBEaXJlY3Rpb24gZGlyZWN0aW9uLCBJREJSZXF1ZXN0KiByZXF1
ZXN0LCBJREJBbnkqIHNvdXJjZSwgSURCVHJhbnNhY3Rpb24qIHRyYW5zYWN0aW9uKQorUGFzc1Jl
ZlB0cjxJREJDdXJzb3I+IElEQkN1cnNvcjo6Y3JlYXRlKFBhc3NSZWZQdHI8SURCQ3Vyc29yQmFj
a2VuZEludGVyZmFjZT4gYmFja2VuZCwgSW5kZXhlZERCOjpDdXJzb3JEaXJlY3Rpb24gZGlyZWN0
aW9uLCBJREJSZXF1ZXN0KiByZXF1ZXN0LCBJREJBbnkqIHNvdXJjZSwgSURCVHJhbnNhY3Rpb24q
IHRyYW5zYWN0aW9uKQogewogICAgIHJldHVybiBhZG9wdFJlZihuZXcgSURCQ3Vyc29yKGJhY2tl
bmQsIGRpcmVjdGlvbiwgcmVxdWVzdCwgc291cmNlLCB0cmFuc2FjdGlvbikpOwogfQpAQCAtNzMs
NyArNzMsNyBAQCBjb25zdCBBdG9taWNTdHJpbmcmIElEQkN1cnNvcjo6ZGlyZWN0aW9uUHJldlVu
aXF1ZSgpCiB9CiAKIAotSURCQ3Vyc29yOjpJREJDdXJzb3IoUGFzc1JlZlB0cjxJREJDdXJzb3JC
YWNrZW5kSW50ZXJmYWNlPiBiYWNrZW5kLCBEaXJlY3Rpb24gZGlyZWN0aW9uLCBJREJSZXF1ZXN0
KiByZXF1ZXN0LCBJREJBbnkqIHNvdXJjZSwgSURCVHJhbnNhY3Rpb24qIHRyYW5zYWN0aW9uKQor
SURCQ3Vyc29yOjpJREJDdXJzb3IoUGFzc1JlZlB0cjxJREJDdXJzb3JCYWNrZW5kSW50ZXJmYWNl
PiBiYWNrZW5kLCBJbmRleGVkREI6OkN1cnNvckRpcmVjdGlvbiBkaXJlY3Rpb24sIElEQlJlcXVl
c3QqIHJlcXVlc3QsIElEQkFueSogc291cmNlLCBJREJUcmFuc2FjdGlvbiogdHJhbnNhY3Rpb24p
CiAgICAgOiBtX2JhY2tlbmQoYmFja2VuZCkKICAgICAsIG1fcmVxdWVzdChyZXF1ZXN0KQogICAg
ICwgbV9kaXJlY3Rpb24oZGlyZWN0aW9uKQpAQCAtMjA2LDcgKzIwNiw3IEBAIHZvaWQgSURCQ3Vy
c29yOjpjb250aW51ZUZ1bmN0aW9uKFBhc3NSZWZQdHI8SURCS2V5PiBrZXksIEV4Y2VwdGlvbkNv
ZGUmIGVjKQogCiAgICAgaWYgKGtleSkgewogICAgICAgICBBU1NFUlQobV9jdXJyZW50S2V5KTsK
LSAgICAgICAgaWYgKG1fZGlyZWN0aW9uID09IElEQkN1cnNvcjo6TkVYVCB8fCBtX2RpcmVjdGlv
biA9PSBJREJDdXJzb3I6Ok5FWFRfTk9fRFVQTElDQVRFKSB7CisgICAgICAgIGlmIChtX2RpcmVj
dGlvbiA9PSBJbmRleGVkREI6OkN1cnNvck5leHQgfHwgbV9kaXJlY3Rpb24gPT0gSW5kZXhlZERC
OjpDdXJzb3JOZXh0Tm9EdXBsaWNhdGUpIHsKICAgICAgICAgICAgIGlmICghbV9jdXJyZW50S2V5
LT5pc0xlc3NUaGFuKGtleS5nZXQoKSkpIHsKICAgICAgICAgICAgICAgICBlYyA9IElEQkRhdGFi
YXNlRXhjZXB0aW9uOjpEYXRhRXJyb3I7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwpAQCAtMjk4
LDM0ICsyOTgsMzQgQEAgUGFzc1JlZlB0cjxJREJPYmplY3RTdG9yZT4gSURCQ3Vyc29yOjplZmZl
Y3RpdmVPYmplY3RTdG9yZSgpCiAgICAgcmV0dXJuIGluZGV4LT5vYmplY3RTdG9yZSgpOwogfQog
Ci1JREJDdXJzb3I6OkRpcmVjdGlvbiBJREJDdXJzb3I6OnN0cmluZ1RvRGlyZWN0aW9uKGNvbnN0
IFN0cmluZyYgZGlyZWN0aW9uU3RyaW5nLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0
LCBFeGNlcHRpb25Db2RlJiBlYykKK0luZGV4ZWREQjo6Q3Vyc29yRGlyZWN0aW9uIElEQkN1cnNv
cjo6c3RyaW5nVG9EaXJlY3Rpb24oY29uc3QgU3RyaW5nJiBkaXJlY3Rpb25TdHJpbmcsIFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIEV4Y2VwdGlvbkNvZGUmIGVjKQogewogICAgIGlm
IChkaXJlY3Rpb25TdHJpbmcgPT0gSURCQ3Vyc29yOjpkaXJlY3Rpb25OZXh0KCkpCi0gICAgICAg
IHJldHVybiBJREJDdXJzb3I6Ok5FWFQ7CisgICAgICAgIHJldHVybiBJbmRleGVkREI6OkN1cnNv
ck5leHQ7CiAgICAgaWYgKGRpcmVjdGlvblN0cmluZyA9PSBJREJDdXJzb3I6OmRpcmVjdGlvbk5l
eHRVbmlxdWUoKSkKLSAgICAgICAgcmV0dXJuIElEQkN1cnNvcjo6TkVYVF9OT19EVVBMSUNBVEU7
CisgICAgICAgIHJldHVybiBJbmRleGVkREI6OkN1cnNvck5leHROb0R1cGxpY2F0ZTsKICAgICBp
ZiAoZGlyZWN0aW9uU3RyaW5nID09IElEQkN1cnNvcjo6ZGlyZWN0aW9uUHJldigpKQotICAgICAg
ICByZXR1cm4gSURCQ3Vyc29yOjpQUkVWOworICAgICAgICByZXR1cm4gSW5kZXhlZERCOjpDdXJz
b3JQcmV2OwogICAgIGlmIChkaXJlY3Rpb25TdHJpbmcgPT0gSURCQ3Vyc29yOjpkaXJlY3Rpb25Q
cmV2VW5pcXVlKCkpCi0gICAgICAgIHJldHVybiBJREJDdXJzb3I6OlBSRVZfTk9fRFVQTElDQVRF
OworICAgICAgICByZXR1cm4gSW5kZXhlZERCOjpDdXJzb3JQcmV2Tm9EdXBsaWNhdGU7CiAKICAg
ICBlYyA9IFR5cGVFcnJvcjsKLSAgICByZXR1cm4gSURCQ3Vyc29yOjpORVhUOworICAgIHJldHVy
biBJbmRleGVkREI6OkN1cnNvck5leHQ7CiB9CiAKIGNvbnN0IEF0b21pY1N0cmluZyYgSURCQ3Vy
c29yOjpkaXJlY3Rpb25Ub1N0cmluZyh1bnNpZ25lZCBzaG9ydCBkaXJlY3Rpb24pCiB7CiAgICAg
c3dpdGNoIChkaXJlY3Rpb24pIHsKLSAgICBjYXNlIElEQkN1cnNvcjo6TkVYVDoKKyAgICBjYXNl
IEluZGV4ZWREQjo6Q3Vyc29yTmV4dDoKICAgICAgICAgcmV0dXJuIElEQkN1cnNvcjo6ZGlyZWN0
aW9uTmV4dCgpOwogCi0gICAgY2FzZSBJREJDdXJzb3I6Ok5FWFRfTk9fRFVQTElDQVRFOgorICAg
IGNhc2UgSW5kZXhlZERCOjpDdXJzb3JOZXh0Tm9EdXBsaWNhdGU6CiAgICAgICAgIHJldHVybiBJ
REJDdXJzb3I6OmRpcmVjdGlvbk5leHRVbmlxdWUoKTsKIAotICAgIGNhc2UgSURCQ3Vyc29yOjpQ
UkVWOgorICAgIGNhc2UgSW5kZXhlZERCOjpDdXJzb3JQcmV2OgogICAgICAgICByZXR1cm4gSURC
Q3Vyc29yOjpkaXJlY3Rpb25QcmV2KCk7CiAKLSAgICBjYXNlIElEQkN1cnNvcjo6UFJFVl9OT19E
VVBMSUNBVEU6CisgICAgY2FzZSBJbmRleGVkREI6OkN1cnNvclByZXZOb0R1cGxpY2F0ZToKICAg
ICAgICAgcmV0dXJuIElEQkN1cnNvcjo6ZGlyZWN0aW9uUHJldlVuaXF1ZSgpOwogCiAgICAgZGVm
YXVsdDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkN1
cnNvci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yLmgKaW5k
ZXggMWM4MzE2NDAyNmRhNDRiM2YwOGVmOTNmZjQyZTNhYjQ1ZmZmNTkyYy4uMThkMjAwZWE2MTA2
Nzc5N2VhNGM5ZWRjNTE2MWQxNWRiNGIzZGFlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvSURCQ3Vyc29yLmgKQEAgLTMwLDYgKzMwLDcgQEAKIAogI2luY2x1ZGUgIklE
QktleS5oIgogI2luY2x1ZGUgIklEQlRyYW5zYWN0aW9uLmgiCisjaW5jbHVkZSAiSW5kZXhlZERC
LmgiCiAjaW5jbHVkZSAiU2NyaXB0VmFsdWUuaCIKICNpbmNsdWRlICJTY3JpcHRXcmFwcGFibGUu
aCIKICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgpAQCAtNDksMjIgKzUwLDE1IEBAIHR5cGVk
ZWYgaW50IEV4Y2VwdGlvbkNvZGU7CiAKIGNsYXNzIElEQkN1cnNvciA6IHB1YmxpYyBTY3JpcHRX
cmFwcGFibGUsIHB1YmxpYyBSZWZDb3VudGVkPElEQkN1cnNvcj4gewogcHVibGljOgotICAgIGVu
dW0gRGlyZWN0aW9uIHsKLSAgICAgICAgTkVYVCA9IDAsCi0gICAgICAgIE5FWFRfTk9fRFVQTElD
QVRFID0gMSwKLSAgICAgICAgUFJFViA9IDIsCi0gICAgICAgIFBSRVZfTk9fRFVQTElDQVRFID0g
MywKLSAgICB9OwotCiAgICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYgZGlyZWN0aW9uTmV4
dCgpOwogICAgIHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcmIGRpcmVjdGlvbk5leHRVbmlxdWUo
KTsKICAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiBkaXJlY3Rpb25QcmV2KCk7CiAgICAg
c3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYgZGlyZWN0aW9uUHJldlVuaXF1ZSgpOwogCi0gICAg
c3RhdGljIElEQkN1cnNvcjo6RGlyZWN0aW9uIHN0cmluZ1RvRGlyZWN0aW9uKGNvbnN0IFN0cmlu
ZyYgbW9kZVN0cmluZywgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIEV4Y2VwdGlvbkNvZGUmKTsK
KyAgICBzdGF0aWMgSW5kZXhlZERCOjpDdXJzb3JEaXJlY3Rpb24gc3RyaW5nVG9EaXJlY3Rpb24o
Y29uc3QgU3RyaW5nJiBtb2RlU3RyaW5nLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgRXhjZXB0
aW9uQ29kZSYpOwogICAgIHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcmIGRpcmVjdGlvblRvU3Ry
aW5nKHVuc2lnbmVkIHNob3J0IG1vZGUpOwogCi0gICAgc3RhdGljIFBhc3NSZWZQdHI8SURCQ3Vy
c29yPiBjcmVhdGUoUGFzc1JlZlB0cjxJREJDdXJzb3JCYWNrZW5kSW50ZXJmYWNlPiwgRGlyZWN0
aW9uLCBJREJSZXF1ZXN0KiwgSURCQW55KiBzb3VyY2UsIElEQlRyYW5zYWN0aW9uKik7CisgICAg
c3RhdGljIFBhc3NSZWZQdHI8SURCQ3Vyc29yPiBjcmVhdGUoUGFzc1JlZlB0cjxJREJDdXJzb3JC
YWNrZW5kSW50ZXJmYWNlPiwgSW5kZXhlZERCOjpDdXJzb3JEaXJlY3Rpb24sIElEQlJlcXVlc3Qq
LCBJREJBbnkqIHNvdXJjZSwgSURCVHJhbnNhY3Rpb24qKTsKICAgICB2aXJ0dWFsIH5JREJDdXJz
b3IoKTsKIAogICAgIC8vIEltcGxlbWVudCB0aGUgSURMCkBAIC04OSw3ICs4Myw3IEBAIHB1Ymxp
YzoKICAgICBQYXNzUmVmUHRyPElEQktleT4gaWRiUHJpbWFyeUtleSgpIHsgcmV0dXJuIG1fY3Vy
cmVudFByaW1hcnlLZXk7IH0KIAogcHJvdGVjdGVkOgotICAgIElEQkN1cnNvcihQYXNzUmVmUHRy
PElEQkN1cnNvckJhY2tlbmRJbnRlcmZhY2U+LCBEaXJlY3Rpb24sIElEQlJlcXVlc3QqLCBJREJB
bnkqIHNvdXJjZSwgSURCVHJhbnNhY3Rpb24qKTsKKyAgICBJREJDdXJzb3IoUGFzc1JlZlB0cjxJ
REJDdXJzb3JCYWNrZW5kSW50ZXJmYWNlPiwgSW5kZXhlZERCOjpDdXJzb3JEaXJlY3Rpb24sIElE
QlJlcXVlc3QqLCBJREJBbnkqIHNvdXJjZSwgSURCVHJhbnNhY3Rpb24qKTsKICAgICB2aXJ0dWFs
IGJvb2wgaXNLZXlDdXJzb3IoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CiAKIHByaXZhdGU6CkBA
IC05Nyw3ICs5MSw3IEBAIHByaXZhdGU6CiAKICAgICBSZWZQdHI8SURCQ3Vyc29yQmFja2VuZElu
dGVyZmFjZT4gbV9iYWNrZW5kOwogICAgIFJlZlB0cjxJREJSZXF1ZXN0PiBtX3JlcXVlc3Q7Ci0g
ICAgY29uc3QgRGlyZWN0aW9uIG1fZGlyZWN0aW9uOworICAgIGNvbnN0IEluZGV4ZWREQjo6Q3Vy
c29yRGlyZWN0aW9uIG1fZGlyZWN0aW9uOwogICAgIFJlZlB0cjxJREJBbnk+IG1fc291cmNlOwog
ICAgIFJlZlB0cjxJREJUcmFuc2FjdGlvbj4gbV90cmFuc2FjdGlvbjsKICAgICBJREJUcmFuc2Fj
dGlvbjo6T3BlbkN1cnNvck5vdGlmaWVyIG1fdHJhbnNhY3Rpb25Ob3RpZmllcjsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvckJhY2tlbmRJbXBs
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvckJhY2tlbmRJ
bXBsLmNwcAppbmRleCAzMzJkOTAxNDI1YWIxYmFhNGE0NGQ4ODljMWQ1ZDIxMmQ2MjgwZWQ4Li4x
MzYwZmI5MDIwNWVhMTk4Zjc4YzAzMDdmOTZjNjI5ZTk4MmZlMzU4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3JCYWNrZW5kSW1wbC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yQmFja2VuZEltcGwu
Y3BwCkBAIC0zNCw3ICszNCw2IEBACiAjaW5jbHVkZSAiSURCRGF0YWJhc2VFcnJvci5oIgogI2lu
Y2x1ZGUgIklEQkRhdGFiYXNlRXhjZXB0aW9uLmgiCiAjaW5jbHVkZSAiSURCS2V5UmFuZ2UuaCIK
LSNpbmNsdWRlICJJREJSZXF1ZXN0LmgiCiAjaW5jbHVkZSAiSURCVHJhY2luZy5oIgogI2luY2x1
ZGUgIklEQlRyYW5zYWN0aW9uQmFja2VuZEltcGwuaCIKICNpbmNsdWRlICJTaGFyZWRCdWZmZXIu
aCIKQEAgLTEwMSw3ICsxMDAsNyBAQCBwcml2YXRlOgogICAgIFJlZlB0cjxJREJDYWxsYmFja3M+
IG1fY2FsbGJhY2tzOwogfTsKIAotSURCQ3Vyc29yQmFja2VuZEltcGw6OklEQkN1cnNvckJhY2tl
bmRJbXBsKFBhc3NSZWZQdHI8SURCQmFja2luZ1N0b3JlOjpDdXJzb3I+IGN1cnNvciwgQ3Vyc29y
VHlwZSBjdXJzb3JUeXBlLCBJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2U6OlRhc2tUeXBlIHRh
c2tUeXBlLCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsKiB0cmFuc2FjdGlvbiwgaW50NjRfdCBv
YmplY3RTdG9yZUlkKQorSURCQ3Vyc29yQmFja2VuZEltcGw6OklEQkN1cnNvckJhY2tlbmRJbXBs
KFBhc3NSZWZQdHI8SURCQmFja2luZ1N0b3JlOjpDdXJzb3I+IGN1cnNvciwgSW5kZXhlZERCOjpD
dXJzb3JUeXBlIGN1cnNvclR5cGUsIElEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZTo6VGFza1R5
cGUgdGFza1R5cGUsIElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGwqIHRyYW5zYWN0aW9uLCBpbnQ2
NF90IG9iamVjdFN0b3JlSWQpCiAgICAgOiBtX3Rhc2tUeXBlKHRhc2tUeXBlKQogICAgICwgbV9j
dXJzb3JUeXBlKGN1cnNvclR5cGUpCiAgICAgLCBtX2RhdGFiYXNlKHRyYW5zYWN0aW9uLT5kYXRh
YmFzZSgpKQpAQCAtMTYwLDcgKzE1OSw3IEBAIHZvaWQgSURCQ3Vyc29yQmFja2VuZEltcGw6OkN1
cnNvckl0ZXJhdGlvbk9wZXJhdGlvbjo6cGVyZm9ybShJREJUcmFuc2FjdGlvbkJhY2tlCiB2b2lk
IElEQkN1cnNvckJhY2tlbmRJbXBsOjpkZWxldGVGdW5jdGlvbihQYXNzUmVmUHRyPElEQkNhbGxi
YWNrcz4gcHJwQ2FsbGJhY2tzLCBFeGNlcHRpb25Db2RlJikKIHsKICAgICBJREJfVFJBQ0UoIklE
QkN1cnNvckJhY2tlbmRJbXBsOjpkZWxldGUiKTsKLSAgICBBU1NFUlQobV90cmFuc2FjdGlvbi0+
bW9kZSgpICE9IElEQlRyYW5zYWN0aW9uOjpSRUFEX09OTFkpOworICAgIEFTU0VSVChtX3RyYW5z
YWN0aW9uLT5tb2RlKCkgIT0gSW5kZXhlZERCOjpUcmFuc2FjdGlvblJlYWRPbmx5KTsKICAgICBS
ZWZQdHI8SURCS2V5UmFuZ2U+IGtleVJhbmdlID0gSURCS2V5UmFuZ2U6OmNyZWF0ZShtX2N1cnNv
ci0+cHJpbWFyeUtleSgpKTsKICAgICBtX2RhdGFiYXNlLT5kZWxldGVSYW5nZShtX3RyYW5zYWN0
aW9uLT5pZCgpLCBtX29iamVjdFN0b3JlSWQsIGtleVJhbmdlLnJlbGVhc2UoKSwgcHJwQ2FsbGJh
Y2tzKTsKIH0KQEAgLTE5NiwxMCArMTk1LDEwIEBAIHZvaWQgSURCQ3Vyc29yQmFja2VuZEltcGw6
OkN1cnNvclByZWZldGNoSXRlcmF0aW9uT3BlcmF0aW9uOjpwZXJmb3JtKElEQlRyYW5zYWN0CiAg
ICAgICAgIGZvdW5kUHJpbWFyeUtleXMuYXBwZW5kKG1fY3Vyc29yLT5tX2N1cnNvci0+cHJpbWFy
eUtleSgpKTsKIAogICAgICAgICBzd2l0Y2ggKG1fY3Vyc29yLT5tX2N1cnNvclR5cGUpIHsKLSAg
ICAgICAgY2FzZSBLZXlPbmx5OgorICAgICAgICBjYXNlIEluZGV4ZWREQjo6Q3Vyc29yS2V5T25s
eToKICAgICAgICAgICAgIGZvdW5kVmFsdWVzLmFwcGVuZChTaGFyZWRCdWZmZXI6OmNyZWF0ZSgp
KTsKICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIEtleUFuZFZhbHVlOgorICAgICAg
ICBjYXNlIEluZGV4ZWREQjo6Q3Vyc29yS2V5QW5kVmFsdWU6CiAgICAgICAgICAgICBzaXplRXN0
aW1hdGUgKz0gbV9jdXJzb3ItPm1fY3Vyc29yLT52YWx1ZSgpLT5zaXplKCk7CiAgICAgICAgICAg
ICBmb3VuZFZhbHVlcy5hcHBlbmQobV9jdXJzb3ItPm1fY3Vyc29yLT52YWx1ZSgpKTsKICAgICAg
ICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvSURCQ3Vyc29yQmFja2VuZEltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL0lEQkN1cnNvckJhY2tlbmRJbXBsLmgKaW5kZXggNjk5ZTJmNThkNmQxNzYyMWY0Y2ExMjRm
ZDJlYzhiMGIxMzMxMmE0OC4uNTVlMjZiYjdkNDQ4ZmQ0YjFlMTY1YTVjYmQzNmU4MzhjYTJlMzU0
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29y
QmFja2VuZEltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJD
dXJzb3JCYWNrZW5kSW1wbC5oCkBAIC0zMCw3ICszMCw2IEBACiAjaWYgRU5BQkxFKElOREVYRURf
REFUQUJBU0UpCiAKICNpbmNsdWRlICJJREJCYWNraW5nU3RvcmUuaCIKLSNpbmNsdWRlICJJREJD
dXJzb3IuaCIKICNpbmNsdWRlICJJREJDdXJzb3JCYWNrZW5kSW50ZXJmYWNlLmgiCiAjaW5jbHVk
ZSAiSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbC5oIgogI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5o
IgpAQCAtNDUsMTEgKzQ0LDExIEBAIGNsYXNzIElEQktleVJhbmdlOwogCiBjbGFzcyBJREJDdXJz
b3JCYWNrZW5kSW1wbCA6IHB1YmxpYyBJREJDdXJzb3JCYWNrZW5kSW50ZXJmYWNlIHsKIHB1Ymxp
YzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxJREJDdXJzb3JCYWNrZW5kSW1wbD4gY3JlYXRlKFBh
c3NSZWZQdHI8SURCQmFja2luZ1N0b3JlOjpDdXJzb3I+IGN1cnNvciwgQ3Vyc29yVHlwZSBjdXJz
b3JUeXBlLCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsKiB0cmFuc2FjdGlvbiwgaW50NjRfdCBv
YmplY3RTdG9yZUlkKQorICAgIHN0YXRpYyBQYXNzUmVmUHRyPElEQkN1cnNvckJhY2tlbmRJbXBs
PiBjcmVhdGUoUGFzc1JlZlB0cjxJREJCYWNraW5nU3RvcmU6OkN1cnNvcj4gY3Vyc29yLCBJbmRl
eGVkREI6OkN1cnNvclR5cGUgY3Vyc29yVHlwZSwgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbCog
dHJhbnNhY3Rpb24sIGludDY0X3Qgb2JqZWN0U3RvcmVJZCkKICAgICB7CiAgICAgICAgIHJldHVy
biBhZG9wdFJlZihuZXcgSURCQ3Vyc29yQmFja2VuZEltcGwoY3Vyc29yLCBjdXJzb3JUeXBlLCBJ
REJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2U6Ok5vcm1hbFRhc2ssIHRyYW5zYWN0aW9uLCBvYmpl
Y3RTdG9yZUlkKSk7CiAgICAgfQotICAgIHN0YXRpYyBQYXNzUmVmUHRyPElEQkN1cnNvckJhY2tl
bmRJbXBsPiBjcmVhdGUoUGFzc1JlZlB0cjxJREJCYWNraW5nU3RvcmU6OkN1cnNvcj4gY3Vyc29y
LCBDdXJzb3JUeXBlIGN1cnNvclR5cGUsIElEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZTo6VGFz
a1R5cGUgdGFza1R5cGUsIElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGwqIHRyYW5zYWN0aW9uLCBp
bnQ2NF90IG9iamVjdFN0b3JlSWQpCisgICAgc3RhdGljIFBhc3NSZWZQdHI8SURCQ3Vyc29yQmFj
a2VuZEltcGw+IGNyZWF0ZShQYXNzUmVmUHRyPElEQkJhY2tpbmdTdG9yZTo6Q3Vyc29yPiBjdXJz
b3IsIEluZGV4ZWREQjo6Q3Vyc29yVHlwZSBjdXJzb3JUeXBlLCBJREJEYXRhYmFzZUJhY2tlbmRJ
bnRlcmZhY2U6OlRhc2tUeXBlIHRhc2tUeXBlLCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsKiB0
cmFuc2FjdGlvbiwgaW50NjRfdCBvYmplY3RTdG9yZUlkKQogICAgIHsKICAgICAgICAgcmV0dXJu
IGFkb3B0UmVmKG5ldyBJREJDdXJzb3JCYWNrZW5kSW1wbChjdXJzb3IsIGN1cnNvclR5cGUsIHRh
c2tUeXBlLCB0cmFuc2FjdGlvbiwgb2JqZWN0U3RvcmVJZCkpOwogICAgIH0KQEAgLTY1LDE4ICs2
NCwxOCBAQCBwdWJsaWM6CiAKICAgICBQYXNzUmVmUHRyPElEQktleT4ga2V5KCkgY29uc3QgeyBy
ZXR1cm4gbV9jdXJzb3ItPmtleSgpOyB9CiAgICAgUGFzc1JlZlB0cjxJREJLZXk+IHByaW1hcnlL
ZXkoKSBjb25zdCB7IHJldHVybiBtX2N1cnNvci0+cHJpbWFyeUtleSgpOyB9Ci0gICAgUGFzc1Jl
ZlB0cjxTaGFyZWRCdWZmZXI+IHZhbHVlKCkgY29uc3QgeyByZXR1cm4gKG1fY3Vyc29yVHlwZSA9
PSBLZXlPbmx5KSA/IDAgOiBtX2N1cnNvci0+dmFsdWUoKTsgfQorICAgIFBhc3NSZWZQdHI8U2hh
cmVkQnVmZmVyPiB2YWx1ZSgpIGNvbnN0IHsgcmV0dXJuIChtX2N1cnNvclR5cGUgPT0gSW5kZXhl
ZERCOjpDdXJzb3JLZXlPbmx5KSA/IDAgOiBtX2N1cnNvci0+dmFsdWUoKTsgfQogICAgIHZvaWQg
Y2xvc2UoKTsKIAogcHJpdmF0ZToKLSAgICBJREJDdXJzb3JCYWNrZW5kSW1wbChQYXNzUmVmUHRy
PElEQkJhY2tpbmdTdG9yZTo6Q3Vyc29yPiwgQ3Vyc29yVHlwZSwgSURCRGF0YWJhc2VCYWNrZW5k
SW50ZXJmYWNlOjpUYXNrVHlwZSwgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbCosIGludDY0X3Qg
b2JqZWN0U3RvcmVJZCk7CisgICAgSURCQ3Vyc29yQmFja2VuZEltcGwoUGFzc1JlZlB0cjxJREJC
YWNraW5nU3RvcmU6OkN1cnNvcj4sIEluZGV4ZWREQjo6Q3Vyc29yVHlwZSwgSURCRGF0YWJhc2VC
YWNrZW5kSW50ZXJmYWNlOjpUYXNrVHlwZSwgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbCosIGlu
dDY0X3Qgb2JqZWN0U3RvcmVJZCk7CiAKICAgICBjbGFzcyBDdXJzb3JJdGVyYXRpb25PcGVyYXRp
b247CiAgICAgY2xhc3MgQ3Vyc29yQWR2YW5jZU9wZXJhdGlvbjsKICAgICBjbGFzcyBDdXJzb3JQ
cmVmZXRjaEl0ZXJhdGlvbk9wZXJhdGlvbjsKIAogICAgIElEQkRhdGFiYXNlQmFja2VuZEludGVy
ZmFjZTo6VGFza1R5cGUgbV90YXNrVHlwZTsKLSAgICBDdXJzb3JUeXBlIG1fY3Vyc29yVHlwZTsK
KyAgICBJbmRleGVkREI6OkN1cnNvclR5cGUgbV9jdXJzb3JUeXBlOwogICAgIGNvbnN0IFJlZlB0
cjxJREJEYXRhYmFzZUJhY2tlbmRJbXBsPiBtX2RhdGFiYXNlOwogICAgIGNvbnN0IFJlZlB0cjxJ
REJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsPiBtX3RyYW5zYWN0aW9uOwogICAgIGNvbnN0IGludDY0
X3QgbV9vYmplY3RTdG9yZUlkOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvSURCQ3Vyc29yQmFja2VuZEludGVyZmFjZS5oIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yQmFja2VuZEludGVyZmFjZS5oCmluZGV4IGFlYjI5NzZi
MDg2MmE3OWFkNDQzODEzZTllNzZjZmEyNmUzOTBmMTYuLjk2M2YzMmIwMGFiMzA5M2E5Y2ZiOGJl
Y2FhMmVjODUxYmVjODhhYzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL0lEQkN1cnNvckJhY2tlbmRJbnRlcmZhY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3JCYWNrZW5kSW50ZXJmYWNlLmgKQEAgLTMzLDcgKzMz
LDYgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBJREJBbnk7CiBjbGFzcyBJREJD
YWxsYmFja3M7CiBjbGFzcyBJREJLZXk7CiBjbGFzcyBJREJSZXF1ZXN0OwpAQCAtNDQsMTEgKzQz
LDYgQEAgY2xhc3MgSURCQ3Vyc29yQmFja2VuZEludGVyZmFjZSA6IHB1YmxpYyBSZWZDb3VudGVk
PElEQkN1cnNvckJhY2tlbmRJbnRlcmZhY2U+IHsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5JREJD
dXJzb3JCYWNrZW5kSW50ZXJmYWNlKCkge30KIAotICAgIGVudW0gQ3Vyc29yVHlwZSB7Ci0gICAg
ICAgIEtleUFuZFZhbHVlID0gMCwKLSAgICAgICAgS2V5T25seQotICAgIH07Ci0KICAgICB2aXJ0
dWFsIHZvaWQgYWR2YW5jZSh1bnNpZ25lZCBsb25nIGNvdW50LCBQYXNzUmVmUHRyPElEQkNhbGxi
YWNrcz4sIEV4Y2VwdGlvbkNvZGUmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGNvbnRpbnVlRnVu
Y3Rpb24oUGFzc1JlZlB0cjxJREJLZXk+IGtleSwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+LCBF
eGNlcHRpb25Db2RlJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkZWxldGVGdW5jdGlvbihQYXNz
UmVmUHRyPElEQkNhbGxiYWNrcz4sIEV4Y2VwdGlvbkNvZGUmKSA9IDA7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3JXaXRoVmFsdWUuY3BwIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yV2l0aFZhbHVlLmNwcApp
bmRleCBiOTBiYTNkOWI1MjY1MzE3MDkyYmJlNTU4MTc1MGRjMDI3ODVkYWFhLi40MDM2MTExMDQ5
ZWI1ZDkyOWFkYjIyN2M2ZmUzYTNjYmVjMzZmMTg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3JXaXRoVmFsdWUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvcldpdGhWYWx1ZS5jcHAKQEAgLTMzLDcg
KzMzLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1QYXNzUmVmUHRyPElEQkN1cnNvcldp
dGhWYWx1ZT4gSURCQ3Vyc29yV2l0aFZhbHVlOjpjcmVhdGUoUGFzc1JlZlB0cjxJREJDdXJzb3JC
YWNrZW5kSW50ZXJmYWNlPiBiYWNrZW5kLCBEaXJlY3Rpb24gZGlyZWN0aW9uLCBJREJSZXF1ZXN0
KiByZXF1ZXN0LCBJREJBbnkqIHNvdXJjZSwgSURCVHJhbnNhY3Rpb24qIHRyYW5zYWN0aW9uKQor
UGFzc1JlZlB0cjxJREJDdXJzb3JXaXRoVmFsdWU+IElEQkN1cnNvcldpdGhWYWx1ZTo6Y3JlYXRl
KFBhc3NSZWZQdHI8SURCQ3Vyc29yQmFja2VuZEludGVyZmFjZT4gYmFja2VuZCwgSW5kZXhlZERC
OjpDdXJzb3JEaXJlY3Rpb24gZGlyZWN0aW9uLCBJREJSZXF1ZXN0KiByZXF1ZXN0LCBJREJBbnkq
IHNvdXJjZSwgSURCVHJhbnNhY3Rpb24qIHRyYW5zYWN0aW9uKQogewogICAgIHJldHVybiBhZG9w
dFJlZihuZXcgSURCQ3Vyc29yV2l0aFZhbHVlKGJhY2tlbmQsIGRpcmVjdGlvbiwgcmVxdWVzdCwg
c291cmNlLCB0cmFuc2FjdGlvbikpOwogfQpAQCAtNDQsNyArNDQsNyBAQCBQYXNzUmVmUHRyPElE
QkN1cnNvcldpdGhWYWx1ZT4gSURCQ3Vyc29yV2l0aFZhbHVlOjpmcm9tQ3Vyc29yKFBhc3NSZWZQ
dHI8SURCQ3VycwogICAgIHJldHVybiBjdXJzb3JXaXRoVmFsdWUucmVsZWFzZSgpOwogfQogCi1J
REJDdXJzb3JXaXRoVmFsdWU6OklEQkN1cnNvcldpdGhWYWx1ZShQYXNzUmVmUHRyPElEQkN1cnNv
ckJhY2tlbmRJbnRlcmZhY2U+IGJhY2tlbmQsIERpcmVjdGlvbiBkaXJlY3Rpb24sIElEQlJlcXVl
c3QqIHJlcXVlc3QsIElEQkFueSogc291cmNlLCBJREJUcmFuc2FjdGlvbiogdHJhbnNhY3Rpb24p
CitJREJDdXJzb3JXaXRoVmFsdWU6OklEQkN1cnNvcldpdGhWYWx1ZShQYXNzUmVmUHRyPElEQkN1
cnNvckJhY2tlbmRJbnRlcmZhY2U+IGJhY2tlbmQsIEluZGV4ZWREQjo6Q3Vyc29yRGlyZWN0aW9u
IGRpcmVjdGlvbiwgSURCUmVxdWVzdCogcmVxdWVzdCwgSURCQW55KiBzb3VyY2UsIElEQlRyYW5z
YWN0aW9uKiB0cmFuc2FjdGlvbikKICAgICA6IElEQkN1cnNvcihiYWNrZW5kLCBkaXJlY3Rpb24s
IHJlcXVlc3QsIHNvdXJjZSwgdHJhbnNhY3Rpb24pCiB7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3JXaXRoVmFsdWUuaCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvcldpdGhWYWx1ZS5oCmluZGV4IGNiYjg1
MGExY2QwMmYwYWEyMDk1MmYyY2ZkYjg4OGZjOGMwMjg2NTAuLjE1ODIzYTA2MjRhMzFkZTlmMmMy
ZGQ0M2RjMGM5MzNmNGM3YzYwNGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL0lEQkN1cnNvcldpdGhWYWx1ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL0lEQkN1cnNvcldpdGhWYWx1ZS5oCkBAIC0zNCw3ICszNCw3IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgSURCQ3Vyc29yV2l0aFZhbHVlIDogcHVibGljIElEQkN1
cnNvciB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8SURCQ3Vyc29yV2l0aFZhbHVl
PiBjcmVhdGUoUGFzc1JlZlB0cjxJREJDdXJzb3JCYWNrZW5kSW50ZXJmYWNlPiwgRGlyZWN0aW9u
LCBJREJSZXF1ZXN0KiwgSURCQW55KiBzb3VyY2UsIElEQlRyYW5zYWN0aW9uKik7CisgICAgc3Rh
dGljIFBhc3NSZWZQdHI8SURCQ3Vyc29yV2l0aFZhbHVlPiBjcmVhdGUoUGFzc1JlZlB0cjxJREJD
dXJzb3JCYWNrZW5kSW50ZXJmYWNlPiwgSW5kZXhlZERCOjpDdXJzb3JEaXJlY3Rpb24sIElEQlJl
cXVlc3QqLCBJREJBbnkqIHNvdXJjZSwgSURCVHJhbnNhY3Rpb24qKTsKICAgICBzdGF0aWMgUGFz
c1JlZlB0cjxJREJDdXJzb3JXaXRoVmFsdWU+IGZyb21DdXJzb3IoUGFzc1JlZlB0cjxJREJDdXJz
b3I+KTsKICAgICB2aXJ0dWFsIH5JREJDdXJzb3JXaXRoVmFsdWUoKTsKIApAQCAtNDUsNyArNDUs
NyBAQCBwcm90ZWN0ZWQ6CiAgICAgdmlydHVhbCBib29sIGlzS2V5Q3Vyc29yKCkgY29uc3QgT1ZF
UlJJREUgeyByZXR1cm4gZmFsc2U7IH0KIAogcHJpdmF0ZToKLSAgICBJREJDdXJzb3JXaXRoVmFs
dWUoUGFzc1JlZlB0cjxJREJDdXJzb3JCYWNrZW5kSW50ZXJmYWNlPiwgRGlyZWN0aW9uLCBJREJS
ZXF1ZXN0KiwgSURCQW55KiBzb3VyY2UsIElEQlRyYW5zYWN0aW9uKik7CisgICAgSURCQ3Vyc29y
V2l0aFZhbHVlKFBhc3NSZWZQdHI8SURCQ3Vyc29yQmFja2VuZEludGVyZmFjZT4sIEluZGV4ZWRE
Qjo6Q3Vyc29yRGlyZWN0aW9uLCBJREJSZXF1ZXN0KiwgSURCQW55KiBzb3VyY2UsIElEQlRyYW5z
YWN0aW9uKik7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZS5jcHAKaW5kZXggYzk5YThkNWM4NGZl
MTUyMThmYjA3ZTg4MjMyNDEwYjAxZTkzNzFkMy4uOWNlNjY1YmI3YTdjNmRkN2FmOTg0Yjc0Njgx
NWIxODBiNDQ2NGY5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvSURCRGF0YWJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L0lEQkRhdGFiYXNlLmNwcApAQCAtMjI3LDcgKzIyNyw3IEBAIFBhc3NSZWZQdHI8SURCVHJhbnNh
Y3Rpb24+IElEQkRhdGFiYXNlOjp0cmFuc2FjdGlvbihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBj
b250CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KIAotICAgIElEQlRyYW5zYWN0aW9uOjpNb2Rl
IG1vZGUgPSBJREJUcmFuc2FjdGlvbjo6c3RyaW5nVG9Nb2RlKG1vZGVTdHJpbmcsIGNvbnRleHQs
IGVjKTsKKyAgICBJbmRleGVkREI6OlRyYW5zYWN0aW9uTW9kZSBtb2RlID0gSURCVHJhbnNhY3Rp
b246OnN0cmluZ1RvTW9kZShtb2RlU3RyaW5nLCBjb250ZXh0LCBlYyk7CiAgICAgaWYgKGVjKQog
ICAgICAgICByZXR1cm4gMDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvSURCRGF0YWJhc2UuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L0lEQkRhdGFiYXNlLmgKaW5kZXggZGUxM2I2N2ZiZThmMGQ4NmNhOTU0NmEyYjAzMjMwMDEyYTIy
MjllMC4uOGRkNTJjOTYwMDVmMmMwMWYzMGNlNzdlMTUwOTkwODI0OTI4NTNlMyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2UuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZS5oCkBAIC0zMSwxMSAr
MzEsMTEgQEAKICNpbmNsdWRlICJEaWN0aW9uYXJ5LmgiCiAjaW5jbHVkZSAiRXZlbnQuaCIKICNp
bmNsdWRlICJFdmVudFRhcmdldC5oIgotI2luY2x1ZGUgIklEQkRhdGFiYXNlQmFja2VuZEludGVy
ZmFjZS5oIgogI2luY2x1ZGUgIklEQkRhdGFiYXNlQ2FsbGJhY2tzLmgiCiAjaW5jbHVkZSAiSURC
TWV0YWRhdGEuaCIKICNpbmNsdWRlICJJREJPYmplY3RTdG9yZS5oIgogI2luY2x1ZGUgIklEQlRy
YW5zYWN0aW9uLmgiCisjaW5jbHVkZSAiSW5kZXhlZERCLmgiCiAjaW5jbHVkZSAiU2NyaXB0V3Jh
cHBhYmxlLmgiCiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvUmVm
Q291bnRlZC5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
SURCRGF0YWJhc2VCYWNrZW5kSW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmRJbXBsLmNwcAppbmRleCA5ODBkMTRmNGZlNjU5NjZlMjA1
ZjE2NDcyMDc2ZGI1ODg3MDBkYTY3Li4yYzMwMzIwYTU0ZjM0Y2MyMzI4NzFjZGNmN2IzY2RhYjFj
NDdjYzY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJE
YXRhYmFzZUJhY2tlbmRJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmRJbXBsLmNwcApAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1
ZGUgIklEQkN1cnNvckJhY2tlbmRJbXBsLmgiCiAjaW5jbHVkZSAiSURCRGF0YWJhc2VFeGNlcHRp
b24uaCIKICNpbmNsdWRlICJJREJGYWN0b3J5QmFja2VuZEltcGwuaCIKKyNpbmNsdWRlICJJREJL
ZXlSYW5nZS5oIgogI2luY2x1ZGUgIklEQk9iamVjdFN0b3JlQmFja2VuZEltcGwuaCIKICNpbmNs
dWRlICJJREJUcmFjaW5nLmgiCiAjaW5jbHVkZSAiSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbC5o
IgpAQCAtMjM4LDEzICsyMzksMTMgQEAgcHJpdmF0ZToKIAogY2xhc3MgR2V0T3BlcmF0aW9uIDog
cHVibGljIElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGw6Ok9wZXJhdGlvbiB7CiBwdWJsaWM6Ci0g
ICAgc3RhdGljIFBhc3NPd25QdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbDo6T3BlcmF0aW9u
PiBjcmVhdGUoUGFzc1JlZlB0cjxJREJCYWNraW5nU3RvcmU+IGJhY2tpbmdTdG9yZSwgY29uc3Qg
SURCRGF0YWJhc2VNZXRhZGF0YSYgbWV0YWRhdGEsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgaW50
NjRfdCBpbmRleElkLCBQYXNzUmVmUHRyPElEQktleVJhbmdlPiBrZXlSYW5nZSwgSURCQ3Vyc29y
QmFja2VuZEludGVyZmFjZTo6Q3Vyc29yVHlwZSBjdXJzb3JUeXBlLCBQYXNzUmVmUHRyPElEQkNh
bGxiYWNrcz4gY2FsbGJhY2tzKQorICAgIHN0YXRpYyBQYXNzT3duUHRyPElEQlRyYW5zYWN0aW9u
QmFja2VuZEltcGw6Ok9wZXJhdGlvbj4gY3JlYXRlKFBhc3NSZWZQdHI8SURCQmFja2luZ1N0b3Jl
PiBiYWNraW5nU3RvcmUsIGNvbnN0IElEQkRhdGFiYXNlTWV0YWRhdGEmIG1ldGFkYXRhLCBpbnQ2
NF90IG9iamVjdFN0b3JlSWQsIGludDY0X3QgaW5kZXhJZCwgUGFzc1JlZlB0cjxJREJLZXlSYW5n
ZT4ga2V5UmFuZ2UsIEluZGV4ZWREQjo6Q3Vyc29yVHlwZSBjdXJzb3JUeXBlLCBQYXNzUmVmUHRy
PElEQkNhbGxiYWNrcz4gY2FsbGJhY2tzKQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UHRy
KG5ldyBHZXRPcGVyYXRpb24oYmFja2luZ1N0b3JlLCBtZXRhZGF0YSwgb2JqZWN0U3RvcmVJZCwg
aW5kZXhJZCwga2V5UmFuZ2UsIGN1cnNvclR5cGUsIGNhbGxiYWNrcykpOwogICAgIH0KICAgICB2
aXJ0dWFsIHZvaWQgcGVyZm9ybShJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsKik7CiBwcml2YXRl
OgotICAgIEdldE9wZXJhdGlvbihQYXNzUmVmUHRyPElEQkJhY2tpbmdTdG9yZT4gYmFja2luZ1N0
b3JlLCBjb25zdCBJREJEYXRhYmFzZU1ldGFkYXRhJiBtZXRhZGF0YSwgaW50NjRfdCBvYmplY3RT
dG9yZUlkLCBpbnQ2NF90IGluZGV4SWQsIFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+IGtleVJhbmdl
LCBJREJDdXJzb3JCYWNrZW5kSW50ZXJmYWNlOjpDdXJzb3JUeXBlIGN1cnNvclR5cGUsIFBhc3NS
ZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MpCisgICAgR2V0T3BlcmF0aW9uKFBhc3NSZWZQ
dHI8SURCQmFja2luZ1N0b3JlPiBiYWNraW5nU3RvcmUsIGNvbnN0IElEQkRhdGFiYXNlTWV0YWRh
dGEmIG1ldGFkYXRhLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGludDY0X3QgaW5kZXhJZCwgUGFz
c1JlZlB0cjxJREJLZXlSYW5nZT4ga2V5UmFuZ2UsIEluZGV4ZWREQjo6Q3Vyc29yVHlwZSBjdXJz
b3JUeXBlLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tzKQogICAgICAgICA6IG1f
YmFja2luZ1N0b3JlKGJhY2tpbmdTdG9yZSkKICAgICAgICAgLCBtX2RhdGFiYXNlSWQobWV0YWRh
dGEuaWQpCiAgICAgICAgICwgbV9vYmplY3RTdG9yZUlkKG9iamVjdFN0b3JlSWQpCkBAIC0yNjYs
NyArMjY3LDcgQEAgcHJpdmF0ZToKICAgICBjb25zdCBJREJLZXlQYXRoIG1fa2V5UGF0aDsKICAg
ICBjb25zdCBib29sIG1fYXV0b0luY3JlbWVudDsKICAgICBjb25zdCBSZWZQdHI8SURCS2V5UmFu
Z2U+IG1fa2V5UmFuZ2U7Ci0gICAgY29uc3QgSURCQ3Vyc29yQmFja2VuZEludGVyZmFjZTo6Q3Vy
c29yVHlwZSBtX2N1cnNvclR5cGU7CisgICAgY29uc3QgSW5kZXhlZERCOjpDdXJzb3JUeXBlIG1f
Y3Vyc29yVHlwZTsKICAgICBjb25zdCBSZWZQdHI8SURCQ2FsbGJhY2tzPiBtX2NhbGxiYWNrczsK
IH07CiAKQEAgLTMyMCwxMyArMzIxLDEzIEBAIHByaXZhdGU6CiAKIGNsYXNzIE9wZW5DdXJzb3JP
cGVyYXRpb24gOiBwdWJsaWMgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbDo6T3BlcmF0aW9uIHsK
IHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc093blB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBs
OjpPcGVyYXRpb24+IGNyZWF0ZShQYXNzUmVmUHRyPElEQkJhY2tpbmdTdG9yZT4gYmFja2luZ1N0
b3JlLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgaW50NjRfdCBp
bmRleElkLCBQYXNzUmVmUHRyPElEQktleVJhbmdlPiBrZXlSYW5nZSwgdW5zaWduZWQgc2hvcnQg
ZGlyZWN0aW9uLCBJREJDdXJzb3JCYWNrZW5kSW50ZXJmYWNlOjpDdXJzb3JUeXBlIGN1cnNvclR5
cGUsIElEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZTo6VGFza1R5cGUgdGFza1R5cGUsIFBhc3NS
ZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MpCisgICAgc3RhdGljIFBhc3NPd25QdHI8SURC
VHJhbnNhY3Rpb25CYWNrZW5kSW1wbDo6T3BlcmF0aW9uPiBjcmVhdGUoUGFzc1JlZlB0cjxJREJC
YWNraW5nU3RvcmU+IGJhY2tpbmdTdG9yZSwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9i
amVjdFN0b3JlSWQsIGludDY0X3QgaW5kZXhJZCwgUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4ga2V5
UmFuZ2UsIEluZGV4ZWREQjo6Q3Vyc29yRGlyZWN0aW9uIGRpcmVjdGlvbiwgSW5kZXhlZERCOjpD
dXJzb3JUeXBlIGN1cnNvclR5cGUsIElEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZTo6VGFza1R5
cGUgdGFza1R5cGUsIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MpCiAgICAgewog
ICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IE9wZW5DdXJzb3JPcGVyYXRpb24oYmFja2luZ1N0
b3JlLCBkYXRhYmFzZUlkLCBvYmplY3RTdG9yZUlkLCBpbmRleElkLCBrZXlSYW5nZSwgZGlyZWN0
aW9uLCBjdXJzb3JUeXBlLCB0YXNrVHlwZSwgY2FsbGJhY2tzKSk7CiAgICAgfQogICAgIHZpcnR1
YWwgdm9pZCBwZXJmb3JtKElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGwqKTsKIHByaXZhdGU6Ci0g
ICAgT3BlbkN1cnNvck9wZXJhdGlvbihQYXNzUmVmUHRyPElEQkJhY2tpbmdTdG9yZT4gYmFja2lu
Z1N0b3JlLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgaW50NjRf
dCBpbmRleElkLCBQYXNzUmVmUHRyPElEQktleVJhbmdlPiBrZXlSYW5nZSwgdW5zaWduZWQgc2hv
cnQgZGlyZWN0aW9uLCBJREJDdXJzb3JCYWNrZW5kSW50ZXJmYWNlOjpDdXJzb3JUeXBlIGN1cnNv
clR5cGUsIElEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZTo6VGFza1R5cGUgdGFza1R5cGUsIFBh
c3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MpCisgICAgT3BlbkN1cnNvck9wZXJhdGlv
bihQYXNzUmVmUHRyPElEQkJhY2tpbmdTdG9yZT4gYmFja2luZ1N0b3JlLCBpbnQ2NF90IGRhdGFi
YXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgaW50NjRfdCBpbmRleElkLCBQYXNzUmVmUHRy
PElEQktleVJhbmdlPiBrZXlSYW5nZSwgSW5kZXhlZERCOjpDdXJzb3JEaXJlY3Rpb24gZGlyZWN0
aW9uLCBJbmRleGVkREI6OkN1cnNvclR5cGUgY3Vyc29yVHlwZSwgSURCRGF0YWJhc2VCYWNrZW5k
SW50ZXJmYWNlOjpUYXNrVHlwZSB0YXNrVHlwZSwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IGNh
bGxiYWNrcykKICAgICAgICAgOiBtX2JhY2tpbmdTdG9yZShiYWNraW5nU3RvcmUpCiAgICAgICAg
ICwgbV9kYXRhYmFzZUlkKGRhdGFiYXNlSWQpCiAgICAgICAgICwgbV9vYmplY3RTdG9yZUlkKG9i
amVjdFN0b3JlSWQpCkBAIC0zNDQsOCArMzQ1LDggQEAgcHJpdmF0ZToKICAgICBjb25zdCBpbnQ2
NF90IG1fb2JqZWN0U3RvcmVJZDsKICAgICBjb25zdCBpbnQ2NF90IG1faW5kZXhJZDsKICAgICBj
b25zdCBQYXNzUmVmUHRyPElEQktleVJhbmdlPiBtX2tleVJhbmdlOwotICAgIGNvbnN0IHVuc2ln
bmVkIHNob3J0IG1fZGlyZWN0aW9uOwotICAgIGNvbnN0IElEQkN1cnNvckJhY2tlbmRJbnRlcmZh
Y2U6OkN1cnNvclR5cGUgbV9jdXJzb3JUeXBlOworICAgIGNvbnN0IEluZGV4ZWREQjo6Q3Vyc29y
RGlyZWN0aW9uIG1fZGlyZWN0aW9uOworICAgIGNvbnN0IEluZGV4ZWREQjo6Q3Vyc29yVHlwZSBt
X2N1cnNvclR5cGU7CiAgICAgY29uc3QgSURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlOjpUYXNr
VHlwZSBtX3Rhc2tUeXBlOwogICAgIGNvbnN0IFJlZlB0cjxJREJDYWxsYmFja3M+IG1fY2FsbGJh
Y2tzOwogfTsKQEAgLTU1NSw3ICs1NTYsNyBAQCB2b2lkIElEQkRhdGFiYXNlQmFja2VuZEltcGw6
OmNyZWF0ZU9iamVjdFN0b3JlKGludDY0X3QgdHJhbnNhY3Rpb25JZCwgaW50NjRfdCBvYgogICAg
IElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGwqIHRyYW5zYWN0aW9uID0gbV90cmFuc2FjdGlvbnMu
Z2V0KHRyYW5zYWN0aW9uSWQpOwogICAgIGlmICghdHJhbnNhY3Rpb24pCiAgICAgICAgIHJldHVy
bjsKLSAgICBBU1NFUlQodHJhbnNhY3Rpb24tPm1vZGUoKSA9PSBJREJUcmFuc2FjdGlvbjo6VkVS
U0lPTl9DSEFOR0UpOworICAgIEFTU0VSVCh0cmFuc2FjdGlvbi0+bW9kZSgpID09IEluZGV4ZWRE
Qjo6VHJhbnNhY3Rpb25WZXJzaW9uQ2hhbmdlKTsKIAogICAgIEFTU0VSVCghbV9tZXRhZGF0YS5v
YmplY3RTdG9yZXMuY29udGFpbnMob2JqZWN0U3RvcmVJZCkpOwogICAgIElEQk9iamVjdFN0b3Jl
TWV0YWRhdGEgb2JqZWN0U3RvcmVNZXRhZGF0YShuYW1lLCBvYmplY3RTdG9yZUlkLCBrZXlQYXRo
LCBhdXRvSW5jcmVtZW50LCBJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2U6Ok1pbmltdW1JbmRl
eElkKTsKQEAgLTU4MSw3ICs1ODIsNyBAQCB2b2lkIElEQkRhdGFiYXNlQmFja2VuZEltcGw6OmRl
bGV0ZU9iamVjdFN0b3JlKGludDY0X3QgdHJhbnNhY3Rpb25JZCwgaW50NjRfdCBvYgogICAgIElE
QlRyYW5zYWN0aW9uQmFja2VuZEltcGwqIHRyYW5zYWN0aW9uID0gbV90cmFuc2FjdGlvbnMuZ2V0
KHRyYW5zYWN0aW9uSWQpOwogICAgIGlmICghdHJhbnNhY3Rpb24pCiAgICAgICAgIHJldHVybjsK
LSAgICBBU1NFUlQodHJhbnNhY3Rpb24tPm1vZGUoKSA9PSBJREJUcmFuc2FjdGlvbjo6VkVSU0lP
Tl9DSEFOR0UpOworICAgIEFTU0VSVCh0cmFuc2FjdGlvbi0+bW9kZSgpID09IEluZGV4ZWREQjo6
VHJhbnNhY3Rpb25WZXJzaW9uQ2hhbmdlKTsKIAogICAgIEFTU0VSVChtX21ldGFkYXRhLm9iamVj
dFN0b3Jlcy5jb250YWlucyhvYmplY3RTdG9yZUlkKSk7CiAgICAgY29uc3QgSURCT2JqZWN0U3Rv
cmVNZXRhZGF0YSYgb2JqZWN0U3RvcmVNZXRhZGF0YSA9IG1fbWV0YWRhdGEub2JqZWN0U3RvcmVz
LmdldChvYmplY3RTdG9yZUlkKTsKQEAgLTU5Niw3ICs1OTcsNyBAQCB2b2lkIElEQkRhdGFiYXNl
QmFja2VuZEltcGw6OmNyZWF0ZUluZGV4KGludDY0X3QgdHJhbnNhY3Rpb25JZCwgaW50NjRfdCBv
YmplY3RTdAogICAgIElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGwqIHRyYW5zYWN0aW9uID0gbV90
cmFuc2FjdGlvbnMuZ2V0KHRyYW5zYWN0aW9uSWQpOwogICAgIGlmICghdHJhbnNhY3Rpb24pCiAg
ICAgICAgIHJldHVybjsKLSAgICBBU1NFUlQodHJhbnNhY3Rpb24tPm1vZGUoKSA9PSBJREJUcmFu
c2FjdGlvbjo6VkVSU0lPTl9DSEFOR0UpOworICAgIEFTU0VSVCh0cmFuc2FjdGlvbi0+bW9kZSgp
ID09IEluZGV4ZWREQjo6VHJhbnNhY3Rpb25WZXJzaW9uQ2hhbmdlKTsKIAogICAgIEFTU0VSVCht
X21ldGFkYXRhLm9iamVjdFN0b3Jlcy5jb250YWlucyhvYmplY3RTdG9yZUlkKSk7CiAgICAgY29u
c3QgSURCT2JqZWN0U3RvcmVNZXRhZGF0YSBvYmplY3RTdG9yZSA9IG1fbWV0YWRhdGEub2JqZWN0
U3RvcmVzLmdldChvYmplY3RTdG9yZUlkKTsKQEAgLTYzMSw3ICs2MzIsNyBAQCB2b2lkIElEQkRh
dGFiYXNlQmFja2VuZEltcGw6OmRlbGV0ZUluZGV4KGludDY0X3QgdHJhbnNhY3Rpb25JZCwgaW50
NjRfdCBvYmplY3RTdAogICAgIElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGwqIHRyYW5zYWN0aW9u
ID0gbV90cmFuc2FjdGlvbnMuZ2V0KHRyYW5zYWN0aW9uSWQpOwogICAgIGlmICghdHJhbnNhY3Rp
b24pCiAgICAgICAgIHJldHVybjsKLSAgICBBU1NFUlQodHJhbnNhY3Rpb24tPm1vZGUoKSA9PSBJ
REJUcmFuc2FjdGlvbjo6VkVSU0lPTl9DSEFOR0UpOworICAgIEFTU0VSVCh0cmFuc2FjdGlvbi0+
bW9kZSgpID09IEluZGV4ZWREQjo6VHJhbnNhY3Rpb25WZXJzaW9uQ2hhbmdlKTsKIAogICAgIEFT
U0VSVChtX21ldGFkYXRhLm9iamVjdFN0b3Jlcy5jb250YWlucyhvYmplY3RTdG9yZUlkKSk7CiAg
ICAgY29uc3QgSURCT2JqZWN0U3RvcmVNZXRhZGF0YSBvYmplY3RTdG9yZSA9IG1fbWV0YWRhdGEu
b2JqZWN0U3RvcmVzLmdldChvYmplY3RTdG9yZUlkKTsKQEAgLTY4NSw3ICs2ODYsNyBAQCB2b2lk
IElEQkRhdGFiYXNlQmFja2VuZEltcGw6OmdldChpbnQ2NF90IHRyYW5zYWN0aW9uSWQsIGludDY0
X3Qgb2JqZWN0U3RvcmVJZCwgaQogICAgIGlmICghdHJhbnNhY3Rpb24pCiAgICAgICAgIHJldHVy
bjsKIAotICAgIHRyYW5zYWN0aW9uLT5zY2hlZHVsZVRhc2soR2V0T3BlcmF0aW9uOjpjcmVhdGUo
bV9iYWNraW5nU3RvcmUsIG1fbWV0YWRhdGEsIG9iamVjdFN0b3JlSWQsIGluZGV4SWQsIGtleVJh
bmdlLCBrZXlPbmx5ID8gSURCQ3Vyc29yQmFja2VuZEludGVyZmFjZTo6S2V5T25seSA6IElEQkN1
cnNvckJhY2tlbmRJbnRlcmZhY2U6OktleUFuZFZhbHVlLCBjYWxsYmFja3MpKTsKKyAgICB0cmFu
c2FjdGlvbi0+c2NoZWR1bGVUYXNrKEdldE9wZXJhdGlvbjo6Y3JlYXRlKG1fYmFja2luZ1N0b3Jl
LCBtX21ldGFkYXRhLCBvYmplY3RTdG9yZUlkLCBpbmRleElkLCBrZXlSYW5nZSwga2V5T25seSA/
IEluZGV4ZWREQjo6Q3Vyc29yS2V5T25seSA6IEluZGV4ZWREQjo6Q3Vyc29yS2V5QW5kVmFsdWUs
IGNhbGxiYWNrcykpOwogfQogCiB2b2lkIEdldE9wZXJhdGlvbjo6cGVyZm9ybShJREJUcmFuc2Fj
dGlvbkJhY2tlbmRJbXBsKiB0cmFuc2FjdGlvbikKQEAgLTY5OSwxNiArNzAwLDE2IEBAIHZvaWQg
R2V0T3BlcmF0aW9uOjpwZXJmb3JtKElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGwqIHRyYW5zYWN0
aW9uKQogICAgIGVsc2UgewogICAgICAgICBSZWZQdHI8SURCQmFja2luZ1N0b3JlOjpDdXJzb3I+
IGJhY2tpbmdTdG9yZUN1cnNvcjsKICAgICAgICAgaWYgKG1faW5kZXhJZCA9PSBJREJJbmRleE1l
dGFkYXRhOjpJbnZhbGlkSWQpIHsKLSAgICAgICAgICAgIEFTU0VSVChtX2N1cnNvclR5cGUgIT0g
SURCQ3Vyc29yQmFja2VuZEludGVyZmFjZTo6S2V5T25seSk7CisgICAgICAgICAgICBBU1NFUlQo
bV9jdXJzb3JUeXBlICE9IEluZGV4ZWREQjo6Q3Vyc29yS2V5T25seSk7CiAgICAgICAgICAgICAv
LyBPYmplY3RTdG9yZSBSZXRyaWV2YWwgT3BlcmF0aW9uCi0gICAgICAgICAgICBiYWNraW5nU3Rv
cmVDdXJzb3IgPSBtX2JhY2tpbmdTdG9yZS0+b3Blbk9iamVjdFN0b3JlQ3Vyc29yKHRyYW5zYWN0
aW9uLT5iYWNraW5nU3RvcmVUcmFuc2FjdGlvbigpLCBtX2RhdGFiYXNlSWQsIG1fb2JqZWN0U3Rv
cmVJZCwgbV9rZXlSYW5nZS5nZXQoKSwgSURCQ3Vyc29yOjpORVhUKTsKKyAgICAgICAgICAgIGJh
Y2tpbmdTdG9yZUN1cnNvciA9IG1fYmFja2luZ1N0b3JlLT5vcGVuT2JqZWN0U3RvcmVDdXJzb3Io
dHJhbnNhY3Rpb24tPmJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uKCksIG1fZGF0YWJhc2VJZCwgbV9v
YmplY3RTdG9yZUlkLCBtX2tleVJhbmdlLmdldCgpLCBJbmRleGVkREI6OkN1cnNvck5leHQpOwog
ICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgaWYgKG1fY3Vyc29yVHlwZSA9PSBJREJDdXJz
b3JCYWNrZW5kSW50ZXJmYWNlOjpLZXlPbmx5KQorICAgICAgICAgICAgaWYgKG1fY3Vyc29yVHlw
ZSA9PSBJbmRleGVkREI6OkN1cnNvcktleU9ubHkpCiAgICAgICAgICAgICAgICAgLy8gSW5kZXgg
VmFsdWUgUmV0cmlldmFsIE9wZXJhdGlvbgotICAgICAgICAgICAgICAgIGJhY2tpbmdTdG9yZUN1
cnNvciA9IG1fYmFja2luZ1N0b3JlLT5vcGVuSW5kZXhLZXlDdXJzb3IodHJhbnNhY3Rpb24tPmJh
Y2tpbmdTdG9yZVRyYW5zYWN0aW9uKCksIG1fZGF0YWJhc2VJZCwgbV9vYmplY3RTdG9yZUlkLCBt
X2luZGV4SWQsIG1fa2V5UmFuZ2UuZ2V0KCksIElEQkN1cnNvcjo6TkVYVCk7CisgICAgICAgICAg
ICAgICAgYmFja2luZ1N0b3JlQ3Vyc29yID0gbV9iYWNraW5nU3RvcmUtPm9wZW5JbmRleEtleUN1
cnNvcih0cmFuc2FjdGlvbi0+YmFja2luZ1N0b3JlVHJhbnNhY3Rpb24oKSwgbV9kYXRhYmFzZUlk
LCBtX29iamVjdFN0b3JlSWQsIG1faW5kZXhJZCwgbV9rZXlSYW5nZS5nZXQoKSwgSW5kZXhlZERC
OjpDdXJzb3JOZXh0KTsKICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAvLyBJbmRl
eCBSZWZlcmVuY2VkIFZhbHVlIFJldHJpZXZhbCBPcGVyYXRpb24KLSAgICAgICAgICAgICAgICBi
YWNraW5nU3RvcmVDdXJzb3IgPSBtX2JhY2tpbmdTdG9yZS0+b3BlbkluZGV4Q3Vyc29yKHRyYW5z
YWN0aW9uLT5iYWNraW5nU3RvcmVUcmFuc2FjdGlvbigpLCBtX2RhdGFiYXNlSWQsIG1fb2JqZWN0
U3RvcmVJZCwgbV9pbmRleElkLCBtX2tleVJhbmdlLmdldCgpLCBJREJDdXJzb3I6Ok5FWFQpOwor
ICAgICAgICAgICAgICAgIGJhY2tpbmdTdG9yZUN1cnNvciA9IG1fYmFja2luZ1N0b3JlLT5vcGVu
SW5kZXhDdXJzb3IodHJhbnNhY3Rpb24tPmJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uKCksIG1fZGF0
YWJhc2VJZCwgbV9vYmplY3RTdG9yZUlkLCBtX2luZGV4SWQsIG1fa2V5UmFuZ2UuZ2V0KCksIElu
ZGV4ZWREQjo6Q3Vyc29yTmV4dCk7CiAgICAgICAgIH0KIAogICAgICAgICBpZiAoIWJhY2tpbmdT
dG9yZUN1cnNvcikgewpAQCAtNzU1LDcgKzc1Niw3IEBAIHZvaWQgR2V0T3BlcmF0aW9uOjpwZXJm
b3JtKElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGwqIHRyYW5zYWN0aW9uKQogICAgICAgICBtX2Nh
bGxiYWNrcy0+b25TdWNjZXNzKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgaWYgKG1f
Y3Vyc29yVHlwZSA9PSBJREJDdXJzb3JCYWNrZW5kSW50ZXJmYWNlOjpLZXlPbmx5KSB7CisgICAg
aWYgKG1fY3Vyc29yVHlwZSA9PSBJbmRleGVkREI6OkN1cnNvcktleU9ubHkpIHsKICAgICAgICAg
Ly8gSW5kZXggVmFsdWUgUmV0cmlldmFsIE9wZXJhdGlvbgogICAgICAgICBtX2NhbGxiYWNrcy0+
b25TdWNjZXNzKHByaW1hcnlLZXkuZ2V0KCkpOwogICAgICAgICByZXR1cm47CkBAIC03ODYsNyAr
Nzg3LDcgQEAgdm9pZCBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpwdXQoaW50NjRfdCB0cmFuc2Fj
dGlvbklkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIFAKICAgICBJREJUcmFuc2FjdGlvbkJhY2tl
bmRJbXBsKiB0cmFuc2FjdGlvbiA9IG1fdHJhbnNhY3Rpb25zLmdldCh0cmFuc2FjdGlvbklkKTsK
ICAgICBpZiAoIXRyYW5zYWN0aW9uKQogICAgICAgICByZXR1cm47Ci0gICAgQVNTRVJUKHRyYW5z
YWN0aW9uLT5tb2RlKCkgIT0gSURCVHJhbnNhY3Rpb246OlJFQURfT05MWSk7CisgICAgQVNTRVJU
KHRyYW5zYWN0aW9uLT5tb2RlKCkgIT0gSW5kZXhlZERCOjpUcmFuc2FjdGlvblJlYWRPbmx5KTsK
IAogICAgIGNvbnN0IElEQk9iamVjdFN0b3JlTWV0YWRhdGEgb2JqZWN0U3RvcmVNZXRhZGF0YSA9
IG1fbWV0YWRhdGEub2JqZWN0U3RvcmVzLmdldChvYmplY3RTdG9yZUlkKTsKIApAQCAtNzk4LDcg
Kzc5OSw3IEBAIHZvaWQgSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6cHV0KGludDY0X3QgdHJhbnNh
Y3Rpb25JZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBQCiB2b2lkIFB1dE9wZXJhdGlvbjo6cGVy
Zm9ybShJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsKiB0cmFuc2FjdGlvbikKIHsKICAgICBJREJf
VFJBQ0UoIlB1dE9wZXJhdGlvbiIpOwotICAgIEFTU0VSVCh0cmFuc2FjdGlvbi0+bW9kZSgpICE9
IElEQlRyYW5zYWN0aW9uOjpSRUFEX09OTFkpOworICAgIEFTU0VSVCh0cmFuc2FjdGlvbi0+bW9k
ZSgpICE9IEluZGV4ZWREQjo6VHJhbnNhY3Rpb25SZWFkT25seSk7CiAgICAgQVNTRVJUKG1faW5k
ZXhJZHMuc2l6ZSgpID09IG1faW5kZXhLZXlzLnNpemUoKSk7CiAgICAgYm9vbCBrZXlXYXNHZW5l
cmF0ZWQgPSBmYWxzZTsKIApAQCAtODcyLDcgKzg3Myw3IEBAIHZvaWQgSURCRGF0YWJhc2VCYWNr
ZW5kSW1wbDo6c2V0SW5kZXhLZXlzKGludDY0X3QgdHJhbnNhY3Rpb25JZCwgaW50NjRfdCBvYmpl
Y3RTCiAgICAgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbCogdHJhbnNhY3Rpb24gPSBtX3RyYW5z
YWN0aW9ucy5nZXQodHJhbnNhY3Rpb25JZCk7CiAgICAgaWYgKCF0cmFuc2FjdGlvbikKICAgICAg
ICAgcmV0dXJuOwotICAgIEFTU0VSVCh0cmFuc2FjdGlvbi0+bW9kZSgpID09IElEQlRyYW5zYWN0
aW9uOjpWRVJTSU9OX0NIQU5HRSk7CisgICAgQVNTRVJUKHRyYW5zYWN0aW9uLT5tb2RlKCkgPT0g
SW5kZXhlZERCOjpUcmFuc2FjdGlvblZlcnNpb25DaGFuZ2UpOwogCiAgICAgUmVmUHRyPElEQktl
eT4gcHJpbWFyeUtleSA9IHBycFByaW1hcnlLZXk7CiAgICAgUmVmUHRyPElEQkJhY2tpbmdTdG9y
ZT4gc3RvcmUgPSBiYWNraW5nU3RvcmUoKTsKQEAgLTkyOSwxNCArOTMwLDE0IEBAIHZvaWQgU2V0
SW5kZXhlc1JlYWR5T3BlcmF0aW9uOjpwZXJmb3JtKElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGwq
IHRyYW5zYWN0aW9uKQogICAgICAgICB0cmFuc2FjdGlvbi0+ZGlkQ29tcGxldGVQcmVlbXB0aXZl
RXZlbnQoKTsKIH0KIAotdm9pZCBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpvcGVuQ3Vyc29yKGlu
dDY0X3QgdHJhbnNhY3Rpb25JZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBpbnQ2NF90IGluZGV4
SWQsIFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+IGtleVJhbmdlLCB1bnNpZ25lZCBzaG9ydCBkaXJl
Y3Rpb24sIGJvb2wga2V5T25seSwgVGFza1R5cGUgdGFza1R5cGUsIFBhc3NSZWZQdHI8SURCQ2Fs
bGJhY2tzPiBjYWxsYmFja3MpCit2b2lkIElEQkRhdGFiYXNlQmFja2VuZEltcGw6Om9wZW5DdXJz
b3IoaW50NjRfdCB0cmFuc2FjdGlvbklkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGludDY0X3Qg
aW5kZXhJZCwgUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4ga2V5UmFuZ2UsIEluZGV4ZWREQjo6Q3Vy
c29yRGlyZWN0aW9uIGRpcmVjdGlvbiwgYm9vbCBrZXlPbmx5LCBUYXNrVHlwZSB0YXNrVHlwZSwg
UGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcykKIHsKICAgICBJREJfVFJBQ0UoIklE
QkRhdGFiYXNlQmFja2VuZEltcGw6Om9wZW5DdXJzb3IiKTsKICAgICBJREJUcmFuc2FjdGlvbkJh
Y2tlbmRJbXBsKiB0cmFuc2FjdGlvbiA9IG1fdHJhbnNhY3Rpb25zLmdldCh0cmFuc2FjdGlvbklk
KTsKICAgICBpZiAoIXRyYW5zYWN0aW9uKQogICAgICAgICByZXR1cm47CiAKLSAgICB0cmFuc2Fj
dGlvbi0+c2NoZWR1bGVUYXNrKE9wZW5DdXJzb3JPcGVyYXRpb246OmNyZWF0ZShtX2JhY2tpbmdT
dG9yZSwgaWQoKSwgb2JqZWN0U3RvcmVJZCwgaW5kZXhJZCwga2V5UmFuZ2UsIGRpcmVjdGlvbiwg
a2V5T25seSA/IElEQkN1cnNvckJhY2tlbmRJbnRlcmZhY2U6OktleU9ubHkgOiBJREJDdXJzb3JC
YWNrZW5kSW50ZXJmYWNlOjpLZXlBbmRWYWx1ZSwgdGFza1R5cGUsIGNhbGxiYWNrcykpOworICAg
IHRyYW5zYWN0aW9uLT5zY2hlZHVsZVRhc2soT3BlbkN1cnNvck9wZXJhdGlvbjo6Y3JlYXRlKG1f
YmFja2luZ1N0b3JlLCBpZCgpLCBvYmplY3RTdG9yZUlkLCBpbmRleElkLCBrZXlSYW5nZSwgZGly
ZWN0aW9uLCBrZXlPbmx5ID8gSW5kZXhlZERCOjpDdXJzb3JLZXlPbmx5IDogSW5kZXhlZERCOjpD
dXJzb3JLZXlBbmRWYWx1ZSwgdGFza1R5cGUsIGNhbGxiYWNrcykpOwogfQogCiB2b2lkIE9wZW5D
dXJzb3JPcGVyYXRpb246OnBlcmZvcm0oSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbCogdHJhbnNh
Y3Rpb24pCkBAIC05NTAsMTcgKzk1MSwxNiBAQCB2b2lkIE9wZW5DdXJzb3JPcGVyYXRpb246OnBl
cmZvcm0oSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbCogdHJhbnNhY3Rpb24pCiAgICAgaWYgKG1f
dGFza1R5cGUgPT0gSURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlOjpQcmVlbXB0aXZlVGFzaykK
ICAgICAgICAgdHJhbnNhY3Rpb24tPmFkZFByZWVtcHRpdmVFdmVudCgpOwogCi0gICAgSURCQ3Vy
c29yOjpEaXJlY3Rpb24gZGlyZWN0aW9uID0gc3RhdGljX2Nhc3Q8SURCQ3Vyc29yOjpEaXJlY3Rp
b24+KG1fZGlyZWN0aW9uKTsKICAgICBSZWZQdHI8SURCQmFja2luZ1N0b3JlOjpDdXJzb3I+IGJh
Y2tpbmdTdG9yZUN1cnNvcjsKICAgICBpZiAobV9pbmRleElkID09IElEQkluZGV4TWV0YWRhdGE6
OkludmFsaWRJZCkgewotICAgICAgICBBU1NFUlQobV9jdXJzb3JUeXBlICE9IElEQkN1cnNvckJh
Y2tlbmRJbnRlcmZhY2U6OktleU9ubHkpOwotICAgICAgICBiYWNraW5nU3RvcmVDdXJzb3IgPSBt
X2JhY2tpbmdTdG9yZS0+b3Blbk9iamVjdFN0b3JlQ3Vyc29yKHRyYW5zYWN0aW9uLT5iYWNraW5n
U3RvcmVUcmFuc2FjdGlvbigpLCBtX2RhdGFiYXNlSWQsIG1fb2JqZWN0U3RvcmVJZCwgbV9rZXlS
YW5nZS5nZXQoKSwgZGlyZWN0aW9uKTsKKyAgICAgICAgQVNTRVJUKG1fY3Vyc29yVHlwZSAhPSBJ
bmRleGVkREI6OkN1cnNvcktleU9ubHkpOworICAgICAgICBiYWNraW5nU3RvcmVDdXJzb3IgPSBt
X2JhY2tpbmdTdG9yZS0+b3Blbk9iamVjdFN0b3JlQ3Vyc29yKHRyYW5zYWN0aW9uLT5iYWNraW5n
U3RvcmVUcmFuc2FjdGlvbigpLCBtX2RhdGFiYXNlSWQsIG1fb2JqZWN0U3RvcmVJZCwgbV9rZXlS
YW5nZS5nZXQoKSwgbV9kaXJlY3Rpb24pOwogICAgIH0gZWxzZSB7CiAgICAgICAgIEFTU0VSVCht
X3Rhc2tUeXBlID09IElEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZTo6Tm9ybWFsVGFzayk7Ci0g
ICAgICAgIGlmIChtX2N1cnNvclR5cGUgPT0gSURCQ3Vyc29yQmFja2VuZEludGVyZmFjZTo6S2V5
T25seSkKLSAgICAgICAgICAgIGJhY2tpbmdTdG9yZUN1cnNvciA9IG1fYmFja2luZ1N0b3JlLT5v
cGVuSW5kZXhLZXlDdXJzb3IodHJhbnNhY3Rpb24tPmJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uKCks
IG1fZGF0YWJhc2VJZCwgbV9vYmplY3RTdG9yZUlkLCBtX2luZGV4SWQsIG1fa2V5UmFuZ2UuZ2V0
KCksIGRpcmVjdGlvbik7CisgICAgICAgIGlmIChtX2N1cnNvclR5cGUgPT0gSW5kZXhlZERCOjpD
dXJzb3JLZXlPbmx5KQorICAgICAgICAgICAgYmFja2luZ1N0b3JlQ3Vyc29yID0gbV9iYWNraW5n
U3RvcmUtPm9wZW5JbmRleEtleUN1cnNvcih0cmFuc2FjdGlvbi0+YmFja2luZ1N0b3JlVHJhbnNh
Y3Rpb24oKSwgbV9kYXRhYmFzZUlkLCBtX29iamVjdFN0b3JlSWQsIG1faW5kZXhJZCwgbV9rZXlS
YW5nZS5nZXQoKSwgbV9kaXJlY3Rpb24pOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBiYWNr
aW5nU3RvcmVDdXJzb3IgPSBtX2JhY2tpbmdTdG9yZS0+b3BlbkluZGV4Q3Vyc29yKHRyYW5zYWN0
aW9uLT5iYWNraW5nU3RvcmVUcmFuc2FjdGlvbigpLCBtX2RhdGFiYXNlSWQsIG1fb2JqZWN0U3Rv
cmVJZCwgbV9pbmRleElkLCBtX2tleVJhbmdlLmdldCgpLCBkaXJlY3Rpb24pOworICAgICAgICAg
ICAgYmFja2luZ1N0b3JlQ3Vyc29yID0gbV9iYWNraW5nU3RvcmUtPm9wZW5JbmRleEN1cnNvcih0
cmFuc2FjdGlvbi0+YmFja2luZ1N0b3JlVHJhbnNhY3Rpb24oKSwgbV9kYXRhYmFzZUlkLCBtX29i
amVjdFN0b3JlSWQsIG1faW5kZXhJZCwgbV9rZXlSYW5nZS5nZXQoKSwgbV9kaXJlY3Rpb24pOwog
ICAgIH0KIAogICAgIGlmICghYmFja2luZ1N0b3JlQ3Vyc29yKSB7CkBAIC05OTEsOSArOTkxLDkg
QEAgdm9pZCBDb3VudE9wZXJhdGlvbjo6cGVyZm9ybShJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBs
KiB0cmFuc2FjdGlvbikKICAgICBSZWZQdHI8SURCQmFja2luZ1N0b3JlOjpDdXJzb3I+IGJhY2tp
bmdTdG9yZUN1cnNvcjsKIAogICAgIGlmIChtX2luZGV4SWQgPT0gSURCSW5kZXhNZXRhZGF0YTo6
SW52YWxpZElkKQotICAgICAgICBiYWNraW5nU3RvcmVDdXJzb3IgPSBtX2JhY2tpbmdTdG9yZS0+
b3Blbk9iamVjdFN0b3JlS2V5Q3Vyc29yKHRyYW5zYWN0aW9uLT5iYWNraW5nU3RvcmVUcmFuc2Fj
dGlvbigpLCBtX2RhdGFiYXNlSWQsIG1fb2JqZWN0U3RvcmVJZCwgbV9rZXlSYW5nZS5nZXQoKSwg
SURCQ3Vyc29yOjpORVhUKTsKKyAgICAgICAgYmFja2luZ1N0b3JlQ3Vyc29yID0gbV9iYWNraW5n
U3RvcmUtPm9wZW5PYmplY3RTdG9yZUtleUN1cnNvcih0cmFuc2FjdGlvbi0+YmFja2luZ1N0b3Jl
VHJhbnNhY3Rpb24oKSwgbV9kYXRhYmFzZUlkLCBtX29iamVjdFN0b3JlSWQsIG1fa2V5UmFuZ2Uu
Z2V0KCksIEluZGV4ZWREQjo6Q3Vyc29yTmV4dCk7CiAgICAgZWxzZQotICAgICAgICBiYWNraW5n
U3RvcmVDdXJzb3IgPSBtX2JhY2tpbmdTdG9yZS0+b3BlbkluZGV4S2V5Q3Vyc29yKHRyYW5zYWN0
aW9uLT5iYWNraW5nU3RvcmVUcmFuc2FjdGlvbigpLCBtX2RhdGFiYXNlSWQsIG1fb2JqZWN0U3Rv
cmVJZCwgbV9pbmRleElkLCBtX2tleVJhbmdlLmdldCgpLCBJREJDdXJzb3I6Ok5FWFQpOworICAg
ICAgICBiYWNraW5nU3RvcmVDdXJzb3IgPSBtX2JhY2tpbmdTdG9yZS0+b3BlbkluZGV4S2V5Q3Vy
c29yKHRyYW5zYWN0aW9uLT5iYWNraW5nU3RvcmVUcmFuc2FjdGlvbigpLCBtX2RhdGFiYXNlSWQs
IG1fb2JqZWN0U3RvcmVJZCwgbV9pbmRleElkLCBtX2tleVJhbmdlLmdldCgpLCBJbmRleGVkREI6
OkN1cnNvck5leHQpOwogICAgIGlmICghYmFja2luZ1N0b3JlQ3Vyc29yKSB7CiAgICAgICAgIG1f
Y2FsbGJhY2tzLT5vblN1Y2Nlc3MoY291bnQpOwogICAgICAgICByZXR1cm47CkBAIC0xMDEyLDcg
KzEwMTIsNyBAQCB2b2lkIElEQkRhdGFiYXNlQmFja2VuZEltcGw6OmRlbGV0ZVJhbmdlKGludDY0
X3QgdHJhbnNhY3Rpb25JZCwgaW50NjRfdCBvYmplY3RTdAogICAgIElEQlRyYW5zYWN0aW9uQmFj
a2VuZEltcGwqIHRyYW5zYWN0aW9uID0gbV90cmFuc2FjdGlvbnMuZ2V0KHRyYW5zYWN0aW9uSWQp
OwogICAgIGlmICghdHJhbnNhY3Rpb24pCiAgICAgICAgIHJldHVybjsKLSAgICBBU1NFUlQodHJh
bnNhY3Rpb24tPm1vZGUoKSAhPSBJREJUcmFuc2FjdGlvbjo6UkVBRF9PTkxZKTsKKyAgICBBU1NF
UlQodHJhbnNhY3Rpb24tPm1vZGUoKSAhPSBJbmRleGVkREI6OlRyYW5zYWN0aW9uUmVhZE9ubHkp
OwogCiAgICAgdHJhbnNhY3Rpb24tPnNjaGVkdWxlVGFzayhEZWxldGVSYW5nZU9wZXJhdGlvbjo6
Y3JlYXRlKG1fYmFja2luZ1N0b3JlLCBpZCgpLCBvYmplY3RTdG9yZUlkLCBrZXlSYW5nZSwgY2Fs
bGJhY2tzKSk7CiB9CkBAIC0xMDIwLDcgKzEwMjAsNyBAQCB2b2lkIElEQkRhdGFiYXNlQmFja2Vu
ZEltcGw6OmRlbGV0ZVJhbmdlKGludDY0X3QgdHJhbnNhY3Rpb25JZCwgaW50NjRfdCBvYmplY3RT
dAogdm9pZCBEZWxldGVSYW5nZU9wZXJhdGlvbjo6cGVyZm9ybShJREJUcmFuc2FjdGlvbkJhY2tl
bmRJbXBsKiB0cmFuc2FjdGlvbikKIHsKICAgICBJREJfVFJBQ0UoIkRlbGV0ZVJhbmdlT3BlcmF0
aW9uIik7Ci0gICAgUmVmUHRyPElEQkJhY2tpbmdTdG9yZTo6Q3Vyc29yPiBiYWNraW5nU3RvcmVD
dXJzb3IgPSBtX2JhY2tpbmdTdG9yZS0+b3Blbk9iamVjdFN0b3JlQ3Vyc29yKHRyYW5zYWN0aW9u
LT5iYWNraW5nU3RvcmVUcmFuc2FjdGlvbigpLCBtX2RhdGFiYXNlSWQsIG1fb2JqZWN0U3RvcmVJ
ZCwgbV9rZXlSYW5nZS5nZXQoKSwgSURCQ3Vyc29yOjpORVhUKTsKKyAgICBSZWZQdHI8SURCQmFj
a2luZ1N0b3JlOjpDdXJzb3I+IGJhY2tpbmdTdG9yZUN1cnNvciA9IG1fYmFja2luZ1N0b3JlLT5v
cGVuT2JqZWN0U3RvcmVDdXJzb3IodHJhbnNhY3Rpb24tPmJhY2tpbmdTdG9yZVRyYW5zYWN0aW9u
KCksIG1fZGF0YWJhc2VJZCwgbV9vYmplY3RTdG9yZUlkLCBtX2tleVJhbmdlLmdldCgpLCBJbmRl
eGVkREI6OkN1cnNvck5leHQpOwogICAgIGlmIChiYWNraW5nU3RvcmVDdXJzb3IpIHsKICAgICAg
ICAgZG8gewogICAgICAgICAgICAgbV9iYWNraW5nU3RvcmUtPmRlbGV0ZVJlY29yZCh0cmFuc2Fj
dGlvbi0+YmFja2luZ1N0b3JlVHJhbnNhY3Rpb24oKSwgbV9kYXRhYmFzZUlkLCBtX29iamVjdFN0
b3JlSWQsIGJhY2tpbmdTdG9yZUN1cnNvci0+cmVjb3JkSWRlbnRpZmllcigpKTsKQEAgLTEwMzYs
NyArMTAzNiw3IEBAIHZvaWQgSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6Y2xlYXIoaW50NjRfdCB0
cmFuc2FjdGlvbklkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsCiAgICAgSURCVHJhbnNhY3Rpb25C
YWNrZW5kSW1wbCogdHJhbnNhY3Rpb24gPSBtX3RyYW5zYWN0aW9ucy5nZXQodHJhbnNhY3Rpb25J
ZCk7CiAgICAgaWYgKCF0cmFuc2FjdGlvbikKICAgICAgICAgcmV0dXJuOwotICAgIEFTU0VSVCh0
cmFuc2FjdGlvbi0+bW9kZSgpICE9IElEQlRyYW5zYWN0aW9uOjpSRUFEX09OTFkpOworICAgIEFT
U0VSVCh0cmFuc2FjdGlvbi0+bW9kZSgpICE9IEluZGV4ZWREQjo6VHJhbnNhY3Rpb25SZWFkT25s
eSk7CiAKICAgICB0cmFuc2FjdGlvbi0+c2NoZWR1bGVUYXNrKENsZWFyT3BlcmF0aW9uOjpjcmVh
dGUobV9iYWNraW5nU3RvcmUsIGlkKCksIG9iamVjdFN0b3JlSWQsIGNhbGxiYWNrcykpOwogfQpA
QCAtMTA3OSw3ICsxMDc5LDcgQEAgdm9pZCBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpWZXJzaW9u
Q2hhbmdlT3BlcmF0aW9uOjpwZXJmb3JtKElEQlRyYW5zYWN0aW9uQmFja2UKIHZvaWQgSURCRGF0
YWJhc2VCYWNrZW5kSW1wbDo6dHJhbnNhY3Rpb25TdGFydGVkKFBhc3NSZWZQdHI8SURCVHJhbnNh
Y3Rpb25CYWNrZW5kSW1wbD4gcHJwVHJhbnNhY3Rpb24pCiB7CiAgICAgUmVmUHRyPElEQlRyYW5z
YWN0aW9uQmFja2VuZEltcGw+IHRyYW5zYWN0aW9uID0gcHJwVHJhbnNhY3Rpb247Ci0gICAgaWYg
KHRyYW5zYWN0aW9uLT5tb2RlKCkgPT0gSURCVHJhbnNhY3Rpb246OlZFUlNJT05fQ0hBTkdFKSB7
CisgICAgaWYgKHRyYW5zYWN0aW9uLT5tb2RlKCkgPT0gSW5kZXhlZERCOjpUcmFuc2FjdGlvblZl
cnNpb25DaGFuZ2UpIHsKICAgICAgICAgQVNTRVJUKCFtX3J1bm5pbmdWZXJzaW9uQ2hhbmdlVHJh
bnNhY3Rpb24pOwogICAgICAgICBtX3J1bm5pbmdWZXJzaW9uQ2hhbmdlVHJhbnNhY3Rpb24gPSB0
cmFuc2FjdGlvbjsKICAgICB9CkBAIC0xMDkxLDcgKzEwOTEsNyBAQCB2b2lkIElEQkRhdGFiYXNl
QmFja2VuZEltcGw6OnRyYW5zYWN0aW9uRmluaXNoZWQoUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlv
bkJhY2tlbgogICAgIEFTU0VSVChtX3RyYW5zYWN0aW9ucy5jb250YWlucyh0cmFuc2FjdGlvbi0+
aWQoKSkpOwogICAgIEFTU0VSVChtX3RyYW5zYWN0aW9ucy5nZXQodHJhbnNhY3Rpb24tPmlkKCkp
ID09IHRyYW5zYWN0aW9uLmdldCgpKTsKICAgICBtX3RyYW5zYWN0aW9ucy5yZW1vdmUodHJhbnNh
Y3Rpb24tPmlkKCkpOwotICAgIGlmICh0cmFuc2FjdGlvbi0+bW9kZSgpID09IElEQlRyYW5zYWN0
aW9uOjpWRVJTSU9OX0NIQU5HRSkgeworICAgIGlmICh0cmFuc2FjdGlvbi0+bW9kZSgpID09IElu
ZGV4ZWREQjo6VHJhbnNhY3Rpb25WZXJzaW9uQ2hhbmdlKSB7CiAgICAgICAgIEFTU0VSVCh0cmFu
c2FjdGlvbi5nZXQoKSA9PSBtX3J1bm5pbmdWZXJzaW9uQ2hhbmdlVHJhbnNhY3Rpb24uZ2V0KCkp
OwogICAgICAgICBtX3J1bm5pbmdWZXJzaW9uQ2hhbmdlVHJhbnNhY3Rpb24uY2xlYXIoKTsKICAg
ICB9CkBAIC0xMTAwLDcgKzExMDAsNyBAQCB2b2lkIElEQkRhdGFiYXNlQmFja2VuZEltcGw6OnRy
YW5zYWN0aW9uRmluaXNoZWQoUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbgogdm9pZCBJ
REJEYXRhYmFzZUJhY2tlbmRJbXBsOjp0cmFuc2FjdGlvbkZpbmlzaGVkQW5kQWJvcnRGaXJlZChQ
YXNzUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGw+IHBycFRyYW5zYWN0aW9uKQogewog
ICAgIFJlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsPiB0cmFuc2FjdGlvbiA9IHBycFRy
YW5zYWN0aW9uOwotICAgIGlmICh0cmFuc2FjdGlvbi0+bW9kZSgpID09IElEQlRyYW5zYWN0aW9u
OjpWRVJTSU9OX0NIQU5HRSkgeworICAgIGlmICh0cmFuc2FjdGlvbi0+bW9kZSgpID09IEluZGV4
ZWREQjo6VHJhbnNhY3Rpb25WZXJzaW9uQ2hhbmdlKSB7CiAgICAgICAgIC8vIElmIHRoaXMgd2Fz
IGFuIG9wZW4td2l0aC12ZXJzaW9uIGNhbGwsIHRoZXJlIHdpbGwgYmUgYSAic2Vjb25kCiAgICAg
ICAgIC8vIGhhbGYiIG9wZW4gY2FsbCB3YWl0aW5nIGZvciB1cyBpbiBwcm9jZXNzUGVuZGluZ0Nh
bGxzLgogICAgICAgICAvLyBGSVhNRTogV2hlbiB3ZSBubyBsb25nZXIgc3VwcG9ydCBzZXRWZXJz
aW9uLCBhc3NlcnQgc3VjaCBhIHRoaW5nLgpAQCAtMTExNSw3ICsxMTE1LDcgQEAgdm9pZCBJREJE
YXRhYmFzZUJhY2tlbmRJbXBsOjp0cmFuc2FjdGlvbkZpbmlzaGVkQW5kQWJvcnRGaXJlZChQYXNz
UmVmUHRyPElEQlRyYW4KIHZvaWQgSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6dHJhbnNhY3Rpb25G
aW5pc2hlZEFuZENvbXBsZXRlRmlyZWQoUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJ
bXBsPiBwcnBUcmFuc2FjdGlvbikKIHsKICAgICBSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5k
SW1wbD4gdHJhbnNhY3Rpb24gPSBwcnBUcmFuc2FjdGlvbjsKLSAgICBpZiAodHJhbnNhY3Rpb24t
Pm1vZGUoKSA9PSBJREJUcmFuc2FjdGlvbjo6VkVSU0lPTl9DSEFOR0UpCisgICAgaWYgKHRyYW5z
YWN0aW9uLT5tb2RlKCkgPT0gSW5kZXhlZERCOjpUcmFuc2FjdGlvblZlcnNpb25DaGFuZ2UpCiAg
ICAgICAgIHByb2Nlc3NQZW5kaW5nQ2FsbHMoKTsKIH0KIApAQCAtMTE2NSw3ICsxMTY1LDcgQEAg
dm9pZCBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpwcm9jZXNzUGVuZGluZ0NhbGxzKCkKIAogdm9p
ZCBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpjcmVhdGVUcmFuc2FjdGlvbihpbnQ2NF90IHRyYW5z
YWN0aW9uSWQsIFBhc3NSZWZQdHI8SURCRGF0YWJhc2VDYWxsYmFja3M+IGNhbGxiYWNrcywgY29u
c3QgVmVjdG9yPGludDY0X3Q+JiBvYmplY3RTdG9yZUlkcywgdW5zaWduZWQgc2hvcnQgbW9kZSkK
IHsKLSAgICBSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbD4gdHJhbnNhY3Rpb24gPSBJ
REJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsOjpjcmVhdGUodHJhbnNhY3Rpb25JZCwgY2FsbGJhY2tz
LCBvYmplY3RTdG9yZUlkcywgc3RhdGljX2Nhc3Q8SURCVHJhbnNhY3Rpb246Ok1vZGU+KG1vZGUp
LCB0aGlzKTsKKyAgICBSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbD4gdHJhbnNhY3Rp
b24gPSBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsOjpjcmVhdGUodHJhbnNhY3Rpb25JZCwgY2Fs
bGJhY2tzLCBvYmplY3RTdG9yZUlkcywgc3RhdGljX2Nhc3Q8SW5kZXhlZERCOjpUcmFuc2FjdGlv
bk1vZGU+KG1vZGUpLCB0aGlzKTsKICAgICBBU1NFUlQoIW1fdHJhbnNhY3Rpb25zLmNvbnRhaW5z
KHRyYW5zYWN0aW9uSWQpKTsKICAgICBtX3RyYW5zYWN0aW9ucy5hZGQodHJhbnNhY3Rpb25JZCwg
dHJhbnNhY3Rpb24uZ2V0KCkpOwogfQpAQCAtMTI1Nyw3ICsxMjU3LDcgQEAgdm9pZCBJREJEYXRh
YmFzZUJhY2tlbmRJbXBsOjpydW5JbnRWZXJzaW9uQ2hhbmdlVHJhbnNhY3Rpb24oUGFzc1JlZlB0
cjxJREJDYWxsYmEKICAgICB9CiAKICAgICBWZWN0b3I8aW50NjRfdD4gb2JqZWN0U3RvcmVJZHM7
Ci0gICAgY3JlYXRlVHJhbnNhY3Rpb24odHJhbnNhY3Rpb25JZCwgZGF0YWJhc2VDYWxsYmFja3Ms
IG9iamVjdFN0b3JlSWRzLCBJREJUcmFuc2FjdGlvbjo6VkVSU0lPTl9DSEFOR0UpOworICAgIGNy
ZWF0ZVRyYW5zYWN0aW9uKHRyYW5zYWN0aW9uSWQsIGRhdGFiYXNlQ2FsbGJhY2tzLCBvYmplY3RT
dG9yZUlkcywgSW5kZXhlZERCOjpUcmFuc2FjdGlvblZlcnNpb25DaGFuZ2UpOwogICAgIFJlZlB0
cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsPiB0cmFuc2FjdGlvbiA9IG1fdHJhbnNhY3Rpb25z
LmdldCh0cmFuc2FjdGlvbklkKTsKIAogICAgIHRyYW5zYWN0aW9uLT5zY2hlZHVsZVRhc2soVmVy
c2lvbkNoYW5nZU9wZXJhdGlvbjo6Y3JlYXRlKHRoaXMsIHRyYW5zYWN0aW9uSWQsIHJlcXVlc3Rl
ZFZlcnNpb24sIGNhbGxiYWNrcywgZGF0YWJhc2VDYWxsYmFja3MpLCBWZXJzaW9uQ2hhbmdlQWJv
cnRPcGVyYXRpb246OmNyZWF0ZSh0aGlzLCBtX21ldGFkYXRhLnZlcnNpb24sIG1fbWV0YWRhdGEu
aW50VmVyc2lvbikpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvSURCRGF0YWJhc2VCYWNrZW5kSW1wbC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvSURCRGF0YWJhc2VCYWNrZW5kSW1wbC5oCmluZGV4IDFlYmM4NzgxMmU1YWU5NmRmZGI1
ODc3ZDFkZjNiOTVhYjliMzAzNmQuLjM1M2JmYTA5MzE4OWQxZDg0YmRmYTA2OTE5OTc3NWQ1ODAx
NWNiOTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRh
dGFiYXNlQmFja2VuZEltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9JREJEYXRhYmFzZUJhY2tlbmRJbXBsLmgKQEAgLTI3LDcgKzI3LDcgQEAKICNkZWZpbmUgSURC
RGF0YWJhc2VCYWNrZW5kSW1wbF9oCiAKICNpbmNsdWRlICJJREJDYWxsYmFja3MuaCIKLSNpbmNs
dWRlICJJREJEYXRhYmFzZS5oIgorI2luY2x1ZGUgIklEQk1ldGFkYXRhLmgiCiAjaW5jbHVkZSA8
c3RkaW50Lmg+CiAjaW5jbHVkZSA8d3RmL0RlcXVlLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAu
aD4KQEAgLTg0LDcgKzg0LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBwdXQoaW50NjRf
dCB0cmFuc2FjdGlvbklkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIFBhc3NSZWZQdHI8U2hhcmVk
QnVmZmVyPiB2YWx1ZSwgUGFzc1JlZlB0cjxJREJLZXk+LCBQdXRNb2RlLCBQYXNzUmVmUHRyPElE
QkNhbGxiYWNrcz4sIGNvbnN0IFZlY3RvcjxpbnQ2NF90PiYgaW5kZXhJZHMsIGNvbnN0IFZlY3Rv
cjxJbmRleEtleXM+JikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIHNldEluZGV4S2V5cyhp
bnQ2NF90IHRyYW5zYWN0aW9uSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgUGFzc1JlZlB0cjxJ
REJLZXk+IHBycFByaW1hcnlLZXksIGNvbnN0IFZlY3RvcjxpbnQ2NF90PiYgaW5kZXhJZHMsIGNv
bnN0IFZlY3RvcjxJbmRleEtleXM+JikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIHNldElu
ZGV4ZXNSZWFkeShpbnQ2NF90IHRyYW5zYWN0aW9uSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwg
Y29uc3QgVmVjdG9yPGludDY0X3Q+JiBpbmRleElkcykgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCB2
b2lkIG9wZW5DdXJzb3IoaW50NjRfdCB0cmFuc2FjdGlvbklkLCBpbnQ2NF90IG9iamVjdFN0b3Jl
SWQsIGludDY0X3QgaW5kZXhJZCwgUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4sIHVuc2lnbmVkIHNo
b3J0IGRpcmVjdGlvbiwgYm9vbCBrZXlPbmx5LCBUYXNrVHlwZSwgUGFzc1JlZlB0cjxJREJDYWxs
YmFja3M+KSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgb3BlbkN1cnNvcihpbnQ2NF90IHRy
YW5zYWN0aW9uSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgaW50NjRfdCBpbmRleElkLCBQYXNz
UmVmUHRyPElEQktleVJhbmdlPiwgSW5kZXhlZERCOjpDdXJzb3JEaXJlY3Rpb24sIGJvb2wga2V5
T25seSwgVGFza1R5cGUsIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPikgT1ZFUlJJREU7CiAgICAg
dmlydHVhbCB2b2lkIGNvdW50KGludDY0X3QgdHJhbnNhY3Rpb25JZCwgaW50NjRfdCBvYmplY3RT
dG9yZUlkLCBpbnQ2NF90IGluZGV4SWQsIFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+LCBQYXNzUmVm
UHRyPElEQkNhbGxiYWNrcz4pIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBkZWxldGVSYW5n
ZShpbnQ2NF90IHRyYW5zYWN0aW9uSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgUGFzc1JlZlB0
cjxJREJLZXlSYW5nZT4sIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPikgT1ZFUlJJREU7CiAgICAg
dmlydHVhbCB2b2lkIGNsZWFyKGludDY0X3QgdHJhbnNhY3Rpb25JZCwgaW50NjRfdCBvYmplY3RT
dG9yZUlkLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4pIE9WRVJSSURFOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VCYWNrZW5kSW50ZXJm
YWNlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tl
bmRJbnRlcmZhY2UuaAppbmRleCBlMDAxNGViM2UyZGNjMmEzZjQzNDI1MDc0NDU3OTMwNWI3MTY3
YzQ2Li4zZTUxY2MwNmEyMjM5YWNlOGU3OThjNGE4MzYwMzY0YWYwYTI5NDA2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmRJbnRl
cmZhY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFz
ZUJhY2tlbmRJbnRlcmZhY2UuaApAQCAtMjYsNyArMjYsOCBAQAogI2lmbmRlZiBJREJEYXRhYmFz
ZUJhY2tlbmRJbnRlcmZhY2VfaAogI2RlZmluZSBJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2Vf
aAogCi0jaW5jbHVkZSAiSURCVHJhbnNhY3Rpb24uaCIKKyNpbmNsdWRlICJJREJEYXRhYmFzZUVy
cm9yLmgiCisjaW5jbHVkZSAiSW5kZXhlZERCLmgiCiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIu
aD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0
cmluZy5oPgpAQCAtODUsNyArODYsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHB1dChp
bnQ2NF90IHRyYW5zYWN0aW9uSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgUGFzc1JlZlB0cjxT
aGFyZWRCdWZmZXI+IHZhbHVlLCBQYXNzUmVmUHRyPElEQktleT4sIFB1dE1vZGUsIFBhc3NSZWZQ
dHI8SURCQ2FsbGJhY2tzPiwgY29uc3QgVmVjdG9yPGludDY0X3Q+JiBpbmRleElkcywgY29uc3Qg
VmVjdG9yPEluZGV4S2V5cz4mKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHNldEluZGV4S2V5cyhp
bnQ2NF90IHRyYW5zYWN0aW9uSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgUGFzc1JlZlB0cjxJ
REJLZXk+IHBycFByaW1hcnlLZXksIGNvbnN0IFZlY3RvcjxpbnQ2NF90PiYgaW5kZXhJZHMsIGNv
bnN0IFZlY3RvcjxJbmRleEtleXM+JikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzZXRJbmRleGVz
UmVhZHkoaW50NjRfdCB0cmFuc2FjdGlvbklkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGNvbnN0
IFZlY3RvcjxpbnQ2NF90PiYgaW5kZXhJZHMpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgb3BlbkN1
cnNvcihpbnQ2NF90IHRyYW5zYWN0aW9uSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgaW50NjRf
dCBpbmRleElkLCBQYXNzUmVmUHRyPElEQktleVJhbmdlPiwgdW5zaWduZWQgc2hvcnQgZGlyZWN0
aW9uLCBib29sIGtleU9ubHksIFRhc2tUeXBlLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4pID0g
MDsKKyAgICB2aXJ0dWFsIHZvaWQgb3BlbkN1cnNvcihpbnQ2NF90IHRyYW5zYWN0aW9uSWQsIGlu
dDY0X3Qgb2JqZWN0U3RvcmVJZCwgaW50NjRfdCBpbmRleElkLCBQYXNzUmVmUHRyPElEQktleVJh
bmdlPiwgSW5kZXhlZERCOjpDdXJzb3JEaXJlY3Rpb24sIGJvb2wga2V5T25seSwgVGFza1R5cGUs
IFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBjb3VudChp
bnQ2NF90IHRyYW5zYWN0aW9uSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgaW50NjRfdCBpbmRl
eElkLCBQYXNzUmVmUHRyPElEQktleVJhbmdlPiwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+KSA9
IDA7CiAgICAgdmlydHVhbCB2b2lkIGRlbGV0ZVJhbmdlKGludDY0X3QgdHJhbnNhY3Rpb25JZCwg
aW50NjRfdCBvYmplY3RTdG9yZUlkLCBQYXNzUmVmUHRyPElEQktleVJhbmdlPiwgUGFzc1JlZlB0
cjxJREJDYWxsYmFja3M+KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGNsZWFyKGludDY0X3QgdHJh
bnNhY3Rpb25JZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNr
cz4pID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lE
QkZhY3RvcnkuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkZhY3Rvcnku
aAppbmRleCBjYjFiN2IwYjM3NmI3YWE2ZDg0OWM2ODQ4YjMwZTNlMWNlNjAyZWY4Li5jYzYxY2Q3
YzZmYmQxMmU0ZTA5YTc3ZWM5ZGQwZGEyMGNmZTc3MGI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvSURCRmFjdG9yeS5oCkBAIC0yOCw3ICsyOCw2IEBACiAjaWZuZGVm
IElEQkZhY3RvcnlfaAogI2RlZmluZSBJREJGYWN0b3J5X2gKIAotI2luY2x1ZGUgIklEQkZhY3Rv
cnlCYWNrZW5kSW50ZXJmYWNlLmgiCiAjaW5jbHVkZSAiSURCT3BlbkRCUmVxdWVzdC5oIgogI2lu
Y2x1ZGUgIlNjcmlwdFdyYXBwYWJsZS5oIgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJJbmRleC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJJbmRleC5jcHAKaW5kZXggYmVi
OTgzNmE1NGVhYTg5YTVjODdiMmE1OTE3Njg5MjM3ZWMyNDIwZS4uZmY1ZDQzNjdiODNiOTA4NWI4
MzlhNzQ2Yjg2Y2I4NjA2M2FmYjE4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvSURCSW5kZXguY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL0lEQkluZGV4LmNwcApAQCAtMjgsNyArMjgsNiBAQAogCiAjaWYgRU5BQkxFKElOREVY
RURfREFUQUJBU0UpCiAKLSNpbmNsdWRlICJJREJDdXJzb3JCYWNrZW5kSW50ZXJmYWNlLmgiCiAj
aW5jbHVkZSAiSURCRGF0YWJhc2VFeGNlcHRpb24uaCIKICNpbmNsdWRlICJJREJLZXkuaCIKICNp
bmNsdWRlICJJREJLZXlSYW5nZS5oIgpAQCAtNDAsNyArMzksNyBAQAogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKLXN0YXRpYyBjb25zdCB1bnNpZ25lZCBzaG9ydCBkZWZhdWx0RGlyZWN0aW9uID0g
SURCQ3Vyc29yOjpORVhUOworc3RhdGljIGNvbnN0IHVuc2lnbmVkIHNob3J0IGRlZmF1bHREaXJl
Y3Rpb24gPSBJbmRleGVkREI6OkN1cnNvck5leHQ7CiAKIElEQkluZGV4OjpJREJJbmRleChjb25z
dCBJREJJbmRleE1ldGFkYXRhJiBtZXRhZGF0YSwgSURCT2JqZWN0U3RvcmUqIG9iamVjdFN0b3Jl
LCBJREJUcmFuc2FjdGlvbiogdHJhbnNhY3Rpb24pCiAgICAgOiBtX21ldGFkYXRhKG1ldGFkYXRh
KQpAQCAtNjgsMTIgKzY3LDEyIEBAIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gSURCSW5kZXg6Om9w
ZW5DdXJzb3IoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgUGFzCiAgICAgICAgIGVj
ID0gSURCRGF0YWJhc2VFeGNlcHRpb246OlRyYW5zYWN0aW9uSW5hY3RpdmVFcnJvcjsKICAgICAg
ICAgcmV0dXJuIDA7CiAgICAgfQotICAgIElEQkN1cnNvcjo6RGlyZWN0aW9uIGRpcmVjdGlvbiA9
IElEQkN1cnNvcjo6c3RyaW5nVG9EaXJlY3Rpb24oZGlyZWN0aW9uU3RyaW5nLCBjb250ZXh0LCBl
Yyk7CisgICAgSW5kZXhlZERCOjpDdXJzb3JEaXJlY3Rpb24gZGlyZWN0aW9uID0gSURCQ3Vyc29y
OjpzdHJpbmdUb0RpcmVjdGlvbihkaXJlY3Rpb25TdHJpbmcsIGNvbnRleHQsIGVjKTsKICAgICBp
ZiAoZWMpCiAgICAgICAgIHJldHVybiAwOwogCiAgICAgUmVmUHRyPElEQlJlcXVlc3Q+IHJlcXVl
c3QgPSBJREJSZXF1ZXN0OjpjcmVhdGUoY29udGV4dCwgSURCQW55OjpjcmVhdGUodGhpcyksIG1f
dHJhbnNhY3Rpb24uZ2V0KCkpOwotICAgIHJlcXVlc3QtPnNldEN1cnNvckRldGFpbHMoSURCQ3Vy
c29yQmFja2VuZEludGVyZmFjZTo6S2V5QW5kVmFsdWUsIGRpcmVjdGlvbik7CisgICAgcmVxdWVz
dC0+c2V0Q3Vyc29yRGV0YWlscyhJbmRleGVkREI6OkN1cnNvcktleUFuZFZhbHVlLCBkaXJlY3Rp
b24pOwogICAgIGJhY2tlbmREQigpLT5vcGVuQ3Vyc29yKG1fdHJhbnNhY3Rpb24tPmlkKCksIG1f
b2JqZWN0U3RvcmUtPmlkKCksIG1fbWV0YWRhdGEuaWQsIGtleVJhbmdlLCBkaXJlY3Rpb24sIGZh
bHNlLCBJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2U6Ok5vcm1hbFRhc2ssIHJlcXVlc3QpOwog
ICAgIHJldHVybiByZXF1ZXN0OwogfQpAQCAtMTIzLDEyICsxMjIsMTIgQEAgUGFzc1JlZlB0cjxJ
REJSZXF1ZXN0PiBJREJJbmRleDo6b3BlbktleUN1cnNvcihTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiBjb250ZXh0LAogICAgICAgICBlYyA9IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpUcmFuc2FjdGlv
bkluYWN0aXZlRXJyb3I7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KLSAgICBJREJDdXJzb3I6
OkRpcmVjdGlvbiBkaXJlY3Rpb24gPSBJREJDdXJzb3I6OnN0cmluZ1RvRGlyZWN0aW9uKGRpcmVj
dGlvblN0cmluZywgY29udGV4dCwgZWMpOworICAgIEluZGV4ZWREQjo6Q3Vyc29yRGlyZWN0aW9u
IGRpcmVjdGlvbiA9IElEQkN1cnNvcjo6c3RyaW5nVG9EaXJlY3Rpb24oZGlyZWN0aW9uU3RyaW5n
LCBjb250ZXh0LCBlYyk7CiAgICAgaWYgKGVjKQogICAgICAgICByZXR1cm4gMDsKIAogICAgIFJl
ZlB0cjxJREJSZXF1ZXN0PiByZXF1ZXN0ID0gSURCUmVxdWVzdDo6Y3JlYXRlKGNvbnRleHQsIElE
QkFueTo6Y3JlYXRlKHRoaXMpLCBtX3RyYW5zYWN0aW9uLmdldCgpKTsKLSAgICByZXF1ZXN0LT5z
ZXRDdXJzb3JEZXRhaWxzKElEQkN1cnNvckJhY2tlbmRJbnRlcmZhY2U6OktleU9ubHksIGRpcmVj
dGlvbik7CisgICAgcmVxdWVzdC0+c2V0Q3Vyc29yRGV0YWlscyhJbmRleGVkREI6OkN1cnNvcktl
eU9ubHksIGRpcmVjdGlvbik7CiAgICAgYmFja2VuZERCKCktPm9wZW5DdXJzb3IobV90cmFuc2Fj
dGlvbi0+aWQoKSwgbV9vYmplY3RTdG9yZS0+aWQoKSwgbV9tZXRhZGF0YS5pZCwga2V5UmFuZ2Us
IGRpcmVjdGlvbiwgdHJ1ZSwgSURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlOjpOb3JtYWxUYXNr
LCByZXF1ZXN0KTsKICAgICByZXR1cm4gcmVxdWVzdDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlLmNwcAppbmRleCBmYWE1Y2JlMjYx
Y2NiMDRkNGM4OTM5N2Q2Y2ZjM2IyZmUyN2E4YTNmLi41ODkwZWMzN2ZjMWMyNTdkZWFkMmZmZTVm
ZWU4NjEzN2UwN2JlNTIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9JREJPYmplY3RTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvSURCT2JqZWN0U3RvcmUuY3BwCkBAIC0zMSw3ICszMSw2IEBACiAjaW5jbHVkZSAiRE9N
U3RyaW5nTGlzdC5oIgogI2luY2x1ZGUgIklEQkFueS5oIgogI2luY2x1ZGUgIklEQkJpbmRpbmdV
dGlsaXRpZXMuaCIKLSNpbmNsdWRlICJJREJDdXJzb3JCYWNrZW5kSW50ZXJmYWNlLmgiCiAjaW5j
bHVkZSAiSURCQ3Vyc29yV2l0aFZhbHVlLmgiCiAjaW5jbHVkZSAiSURCRGF0YWJhc2UuaCIKICNp
bmNsdWRlICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5oIgpAQCAtNDgsNyArNDcsNyBAQAogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKLXN0YXRpYyBjb25zdCB1bnNpZ25lZCBzaG9ydCBkZWZhdWx0RGly
ZWN0aW9uID0gSURCQ3Vyc29yOjpORVhUOworc3RhdGljIGNvbnN0IHVuc2lnbmVkIHNob3J0IGRl
ZmF1bHREaXJlY3Rpb24gPSBJbmRleGVkREI6OkN1cnNvck5leHQ7CiAKIElEQk9iamVjdFN0b3Jl
OjpJREJPYmplY3RTdG9yZShjb25zdCBJREJPYmplY3RTdG9yZU1ldGFkYXRhJiBtZXRhZGF0YSwg
SURCVHJhbnNhY3Rpb24qIHRyYW5zYWN0aW9uKQogICAgIDogbV9tZXRhZGF0YShtZXRhZGF0YSkK
QEAgLTUwNSwxMiArNTA0LDEyIEBAIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gSURCT2JqZWN0U3Rv
cmU6Om9wZW5DdXJzb3IoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4CiAgICAgICAgIGVj
ID0gSURCRGF0YWJhc2VFeGNlcHRpb246OlRyYW5zYWN0aW9uSW5hY3RpdmVFcnJvcjsKICAgICAg
ICAgcmV0dXJuIDA7CiAgICAgfQotICAgIElEQkN1cnNvcjo6RGlyZWN0aW9uIGRpcmVjdGlvbiA9
IElEQkN1cnNvcjo6c3RyaW5nVG9EaXJlY3Rpb24oZGlyZWN0aW9uU3RyaW5nLCBjb250ZXh0LCBl
Yyk7CisgICAgSW5kZXhlZERCOjpDdXJzb3JEaXJlY3Rpb24gZGlyZWN0aW9uID0gSURCQ3Vyc29y
OjpzdHJpbmdUb0RpcmVjdGlvbihkaXJlY3Rpb25TdHJpbmcsIGNvbnRleHQsIGVjKTsKICAgICBp
ZiAoZWMpCiAgICAgICAgIHJldHVybiAwOwogCiAgICAgUmVmUHRyPElEQlJlcXVlc3Q+IHJlcXVl
c3QgPSBJREJSZXF1ZXN0OjpjcmVhdGUoY29udGV4dCwgSURCQW55OjpjcmVhdGUodGhpcyksIG1f
dHJhbnNhY3Rpb24uZ2V0KCkpOwotICAgIHJlcXVlc3QtPnNldEN1cnNvckRldGFpbHMoSURCQ3Vy
c29yQmFja2VuZEludGVyZmFjZTo6S2V5QW5kVmFsdWUsIGRpcmVjdGlvbik7CisgICAgcmVxdWVz
dC0+c2V0Q3Vyc29yRGV0YWlscyhJbmRleGVkREI6OkN1cnNvcktleUFuZFZhbHVlLCBkaXJlY3Rp
b24pOwogCiAgICAgYmFja2VuZERCKCktPm9wZW5DdXJzb3IobV90cmFuc2FjdGlvbi0+aWQoKSwg
aWQoKSwgSURCSW5kZXhNZXRhZGF0YTo6SW52YWxpZElkLCByYW5nZSwgZGlyZWN0aW9uLCBmYWxz
ZSwgc3RhdGljX2Nhc3Q8SURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlOjpUYXNrVHlwZT4odGFz
a1R5cGUpLCByZXF1ZXN0KTsKICAgICByZXR1cm4gcmVxdWVzdC5yZWxlYXNlKCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJSZXF1ZXN0LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlJlcXVlc3QuY3BwCmluZGV4IDJiMTM0
MzkxMTg0MzQzYWU5Y2ZhMDQ4NTM4MDNmMDcxNTlhODYzNGIuLjY2NWUzZmZhZWI3ZjJiNDMzZDc1
YTdmOGQ0NmU3ZmFiYTA4NjZjMmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL0lEQlJlcXVlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL0lEQlJlcXVlc3QuY3BwCkBAIC0zNyw2ICszNyw3IEBACiAjaW5jbHVkZSAiRXZlbnRR
dWV1ZS5oIgogI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGVQbGFjZWhvbGRlci5oIgogI2luY2x1ZGUg
IklEQkJpbmRpbmdVdGlsaXRpZXMuaCIKKyNpbmNsdWRlICJJREJDdXJzb3JCYWNrZW5kSW50ZXJm
YWNlLmgiCiAjaW5jbHVkZSAiSURCQ3Vyc29yV2l0aFZhbHVlLmgiCiAjaW5jbHVkZSAiSURCRGF0
YWJhc2UuaCIKICNpbmNsdWRlICJJREJFdmVudERpc3BhdGNoZXIuaCIKQEAgLTc3LDggKzc4LDgg
QEAgSURCUmVxdWVzdDo6SURCUmVxdWVzdChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0
LCBQYXNzUmVmUHRyPElEQkFueT4gc291cmMKICAgICAsIG1fc291cmNlKHNvdXJjZSkKICAgICAs
IG1fdGFza1R5cGUodGFza1R5cGUpCiAgICAgLCBtX2hhc1BlbmRpbmdBY3Rpdml0eSh0cnVlKQot
ICAgICwgbV9jdXJzb3JUeXBlKElEQkN1cnNvckJhY2tlbmRJbnRlcmZhY2U6OktleUFuZFZhbHVl
KQotICAgICwgbV9jdXJzb3JEaXJlY3Rpb24oSURCQ3Vyc29yOjpORVhUKQorICAgICwgbV9jdXJz
b3JUeXBlKEluZGV4ZWREQjo6Q3Vyc29yS2V5QW5kVmFsdWUpCisgICAgLCBtX2N1cnNvckRpcmVj
dGlvbihJbmRleGVkREI6OkN1cnNvck5leHQpCiAgICAgLCBtX2N1cnNvckZpbmlzaGVkKGZhbHNl
KQogICAgICwgbV9wZW5kaW5nQ3Vyc29yKDApCiAgICAgLCBtX2RpZEZpcmVVcGdyYWRlTmVlZGVk
RXZlbnQoZmFsc2UpCkBAIC0xODUsNyArMTg2LDcgQEAgdm9pZCBJREJSZXF1ZXN0OjphYm9ydCgp
CiAgICAgbV9yZXF1ZXN0QWJvcnRlZCA9IHRydWU7CiB9CiAKLXZvaWQgSURCUmVxdWVzdDo6c2V0
Q3Vyc29yRGV0YWlscyhJREJDdXJzb3JCYWNrZW5kSW50ZXJmYWNlOjpDdXJzb3JUeXBlIGN1cnNv
clR5cGUsIElEQkN1cnNvcjo6RGlyZWN0aW9uIGRpcmVjdGlvbikKK3ZvaWQgSURCUmVxdWVzdDo6
c2V0Q3Vyc29yRGV0YWlscyhJbmRleGVkREI6OkN1cnNvclR5cGUgY3Vyc29yVHlwZSwgSW5kZXhl
ZERCOjpDdXJzb3JEaXJlY3Rpb24gZGlyZWN0aW9uKQogewogICAgIEFTU0VSVChtX3JlYWR5U3Rh
dGUgPT0gUEVORElORyk7CiAgICAgQVNTRVJUKCFtX3BlbmRpbmdDdXJzb3IpOwpAQCAtMjI4LDcg
KzIyOSw3IEBAIHZvaWQgSURCUmVxdWVzdDo6c2V0UmVzdWx0Q3Vyc29yKFBhc3NSZWZQdHI8SURC
Q3Vyc29yPiBjdXJzb3IsIFBhc3NSZWZQdHI8SURCS2V5CiAgICAgbV9jdXJzb3JQcmltYXJ5S2V5
ID0gcHJpbWFyeUtleTsKICAgICBtX2N1cnNvclZhbHVlID0gdmFsdWU7CiAKLSAgICBpZiAobV9j
dXJzb3JUeXBlID09IElEQkN1cnNvckJhY2tlbmRJbnRlcmZhY2U6OktleU9ubHkpIHsKKyAgICBp
ZiAobV9jdXJzb3JUeXBlID09IEluZGV4ZWREQjo6Q3Vyc29yS2V5T25seSkgewogICAgICAgICBt
X3Jlc3VsdCA9IElEQkFueTo6Y3JlYXRlKGN1cnNvcik7CiAgICAgICAgIHJldHVybjsKICAgICB9
CkBAIC0yOTQsMTAgKzI5NSwxMCBAQCB2b2lkIElEQlJlcXVlc3Q6Om9uU3VjY2VzcyhQYXNzUmVm
UHRyPElEQkN1cnNvckJhY2tlbmRJbnRlcmZhY2U+IGJhY2tlbmQsIFBhc3NSZQogICAgIEFTU0VS
VCghbV9wZW5kaW5nQ3Vyc29yKTsKICAgICBSZWZQdHI8SURCQ3Vyc29yPiBjdXJzb3I7CiAgICAg
c3dpdGNoIChtX2N1cnNvclR5cGUpIHsKLSAgICBjYXNlIElEQkN1cnNvckJhY2tlbmRJbnRlcmZh
Y2U6OktleU9ubHk6CisgICAgY2FzZSBJbmRleGVkREI6OkN1cnNvcktleU9ubHk6CiAgICAgICAg
IGN1cnNvciA9IElEQkN1cnNvcjo6Y3JlYXRlKGJhY2tlbmQsIG1fY3Vyc29yRGlyZWN0aW9uLCB0
aGlzLCBtX3NvdXJjZS5nZXQoKSwgbV90cmFuc2FjdGlvbi5nZXQoKSk7CiAgICAgICAgIGJyZWFr
OwotICAgIGNhc2UgSURCQ3Vyc29yQmFja2VuZEludGVyZmFjZTo6S2V5QW5kVmFsdWU6CisgICAg
Y2FzZSBJbmRleGVkREI6OkN1cnNvcktleUFuZFZhbHVlOgogICAgICAgICBjdXJzb3IgPSBJREJD
dXJzb3JXaXRoVmFsdWU6OmNyZWF0ZShiYWNrZW5kLCBtX2N1cnNvckRpcmVjdGlvbiwgdGhpcywg
bV9zb3VyY2UuZ2V0KCksIG1fdHJhbnNhY3Rpb24uZ2V0KCkpOwogICAgICAgICBicmVhazsKICAg
ICBkZWZhdWx0OgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
SURCUmVxdWVzdC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCUmVxdWVz
dC5oCmluZGV4IGQwNjdlYjI5YTg4NTU3OTJjMGMxMjU1Nzc1Y2QwMjQ4ODhjOTUxYjUuLmI4MzA2
NDA3MDAzYzEyMGJiYTE3NjM4MjRiOGQyYTkzOTZjZmEyNzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlJlcXVlc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJSZXF1ZXN0LmgKQEAgLTQyLDcgKzQyLDYgQEAKICNpbmNs
dWRlICJJREJBbnkuaCIKICNpbmNsdWRlICJJREJDYWxsYmFja3MuaCIKICNpbmNsdWRlICJJREJD
dXJzb3IuaCIKLSNpbmNsdWRlICJJREJDdXJzb3JCYWNrZW5kSW50ZXJmYWNlLmgiCiAjaW5jbHVk
ZSAiU2NyaXB0V3JhcHBhYmxlLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTc4LDcgKzc3
LDcgQEAgcHVibGljOgogICAgIERFRklORV9BVFRSSUJVVEVfRVZFTlRfTElTVEVORVIoZXJyb3Ip
OwogCiAgICAgdm9pZCBtYXJrRWFybHlEZWF0aCgpOwotICAgIHZvaWQgc2V0Q3Vyc29yRGV0YWls
cyhJREJDdXJzb3JCYWNrZW5kSW50ZXJmYWNlOjpDdXJzb3JUeXBlLCBJREJDdXJzb3I6OkRpcmVj
dGlvbik7CisgICAgdm9pZCBzZXRDdXJzb3JEZXRhaWxzKEluZGV4ZWREQjo6Q3Vyc29yVHlwZSwg
SW5kZXhlZERCOjpDdXJzb3JEaXJlY3Rpb24pOwogICAgIHZvaWQgc2V0UGVuZGluZ0N1cnNvcihQ
YXNzUmVmUHRyPElEQkN1cnNvcj4pOwogICAgIHZvaWQgZmluaXNoQ3Vyc29yKCk7CiAgICAgdm9p
ZCBhYm9ydCgpOwpAQCAtMTQ5LDggKzE0OCw4IEBAIHByaXZhdGU6CiAgICAgVmVjdG9yPFJlZlB0
cjxFdmVudD4gPiBtX2VucXVldWVkRXZlbnRzOwogCiAgICAgLy8gT25seSB1c2VkIGlmIHRoZSBy
ZXN1bHQgdHlwZSB3aWxsIGJlIGEgY3Vyc29yLgotICAgIElEQkN1cnNvckJhY2tlbmRJbnRlcmZh
Y2U6OkN1cnNvclR5cGUgbV9jdXJzb3JUeXBlOwotICAgIElEQkN1cnNvcjo6RGlyZWN0aW9uIG1f
Y3Vyc29yRGlyZWN0aW9uOworICAgIEluZGV4ZWREQjo6Q3Vyc29yVHlwZSBtX2N1cnNvclR5cGU7
CisgICAgSW5kZXhlZERCOjpDdXJzb3JEaXJlY3Rpb24gbV9jdXJzb3JEaXJlY3Rpb247CiAgICAg
Ym9vbCBtX2N1cnNvckZpbmlzaGVkOwogICAgIFJlZlB0cjxJREJDdXJzb3I+IG1fcGVuZGluZ0N1
cnNvcjsKICAgICBSZWZQdHI8SURCS2V5PiBtX2N1cnNvcktleTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmNwcAppbmRleCBiYzBlZGRk
Zjg0MTAzZmNjZTJkZmVkMTNiMmRhMjNiNDIzNDk2N2MzLi5mNTU1OTQzZDgwMzNkODgwOTU4MzU2
MzgyNWFkZjBhNTE2NGJkMjQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvSURCVHJhbnNhY3Rpb24uY3BwCkBAIC00NCw3ICs0NCw3IEBACiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAotUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbj4gSURCVHJhbnNhY3Rpb246
OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBpbnQ2NF90IGlkLCBjb25z
dCBWZWN0b3I8U3RyaW5nPiYgb2JqZWN0U3RvcmVOYW1lcywgSURCVHJhbnNhY3Rpb246Ok1vZGUg
bW9kZSwgSURCRGF0YWJhc2UqIGRiKQorUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbj4gSURCVHJh
bnNhY3Rpb246OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBpbnQ2NF90
IGlkLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgb2JqZWN0U3RvcmVOYW1lcywgSW5kZXhlZERCOjpU
cmFuc2FjdGlvbk1vZGUgbW9kZSwgSURCRGF0YWJhc2UqIGRiKQogewogICAgIElEQk9wZW5EQlJl
cXVlc3QqIG9wZW5EQlJlcXVlc3QgPSAwOwogICAgIFJlZlB0cjxJREJUcmFuc2FjdGlvbj4gdHJh
bnNhY3Rpb24oYWRvcHRSZWYobmV3IElEQlRyYW5zYWN0aW9uKGNvbnRleHQsIGlkLCBvYmplY3RT
dG9yZU5hbWVzLCBtb2RlLCBkYiwgb3BlbkRCUmVxdWVzdCwgSURCRGF0YWJhc2VNZXRhZGF0YSgp
KSkpOwpAQCAtNTQsNyArNTQsNyBAQCBQYXNzUmVmUHRyPElEQlRyYW5zYWN0aW9uPiBJREJUcmFu
c2FjdGlvbjo6Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleAogCiBQYXNzUmVm
UHRyPElEQlRyYW5zYWN0aW9uPiBJREJUcmFuc2FjdGlvbjo6Y3JlYXRlKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqIGNvbnRleHQsIGludDY0X3QgaWQsIElEQkRhdGFiYXNlKiBkYiwgSURCT3BlbkRC
UmVxdWVzdCogb3BlbkRCUmVxdWVzdCwgY29uc3QgSURCRGF0YWJhc2VNZXRhZGF0YSYgcHJldmlv
dXNNZXRhZGF0YSkKIHsKLSAgICBSZWZQdHI8SURCVHJhbnNhY3Rpb24+IHRyYW5zYWN0aW9uKGFk
b3B0UmVmKG5ldyBJREJUcmFuc2FjdGlvbihjb250ZXh0LCBpZCwgVmVjdG9yPFN0cmluZz4oKSwg
VkVSU0lPTl9DSEFOR0UsIGRiLCBvcGVuREJSZXF1ZXN0LCBwcmV2aW91c01ldGFkYXRhKSkpOwor
ICAgIFJlZlB0cjxJREJUcmFuc2FjdGlvbj4gdHJhbnNhY3Rpb24oYWRvcHRSZWYobmV3IElEQlRy
YW5zYWN0aW9uKGNvbnRleHQsIGlkLCBWZWN0b3I8U3RyaW5nPigpLCBJbmRleGVkREI6OlRyYW5z
YWN0aW9uVmVyc2lvbkNoYW5nZSwgZGIsIG9wZW5EQlJlcXVlc3QsIHByZXZpb3VzTWV0YWRhdGEp
KSk7CiAgICAgdHJhbnNhY3Rpb24tPnN1c3BlbmRJZk5lZWRlZCgpOwogICAgIHJldHVybiB0cmFu
c2FjdGlvbi5yZWxlYXNlKCk7CiB9CkBAIC05MCw3ICs5MCw3IEBAIGNvbnN0IEF0b21pY1N0cmlu
ZyYgSURCVHJhbnNhY3Rpb246Om1vZGVSZWFkV3JpdGVMZWdhY3koKQogfQogCiAKLUlEQlRyYW5z
YWN0aW9uOjpJREJUcmFuc2FjdGlvbihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBp
bnQ2NF90IGlkLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgb2JqZWN0U3RvcmVOYW1lcywgSURCVHJh
bnNhY3Rpb246Ok1vZGUgbW9kZSwgSURCRGF0YWJhc2UqIGRiLCBJREJPcGVuREJSZXF1ZXN0KiBv
cGVuREJSZXF1ZXN0LCBjb25zdCBJREJEYXRhYmFzZU1ldGFkYXRhJiBwcmV2aW91c01ldGFkYXRh
KQorSURCVHJhbnNhY3Rpb246OklEQlRyYW5zYWN0aW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
IGNvbnRleHQsIGludDY0X3QgaWQsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBvYmplY3RTdG9yZU5h
bWVzLCBJbmRleGVkREI6OlRyYW5zYWN0aW9uTW9kZSBtb2RlLCBJREJEYXRhYmFzZSogZGIsIElE
Qk9wZW5EQlJlcXVlc3QqIG9wZW5EQlJlcXVlc3QsIGNvbnN0IElEQkRhdGFiYXNlTWV0YWRhdGEm
IHByZXZpb3VzTWV0YWRhdGEpCiAgICAgOiBBY3RpdmVET01PYmplY3QoY29udGV4dCwgdGhpcykK
ICAgICAsIG1faWQoaWQpCiAgICAgLCBtX2RhdGFiYXNlKGRiKQpAQCAtMTAyLDcgKzEwMiw3IEBA
IElEQlRyYW5zYWN0aW9uOjpJREJUcmFuc2FjdGlvbihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBj
b250ZXh0LCBpbnQ2NF90IGlkLCBjb25zCiAgICAgLCBtX2NvbnRleHRTdG9wcGVkKGZhbHNlKQog
ICAgICwgbV9wcmV2aW91c01ldGFkYXRhKHByZXZpb3VzTWV0YWRhdGEpCiB7Ci0gICAgaWYgKG1v
ZGUgPT0gVkVSU0lPTl9DSEFOR0UpIHsKKyAgICBpZiAobW9kZSA9PSBJbmRleGVkREI6OlRyYW5z
YWN0aW9uVmVyc2lvbkNoYW5nZSkgewogICAgICAgICAvLyBOb3QgYWN0aXZlIHVudGlsIHRoZSBj
YWxsYmFjay4KICAgICAgICAgbV9zdGF0ZSA9IEluYWN0aXZlOwogICAgIH0KQEAgLTMzNiwzMCAr
MzM2LDMwIEBAIGJvb2wgSURCVHJhbnNhY3Rpb246Omhhc1BlbmRpbmdBY3Rpdml0eSgpIGNvbnN0
CiAgICAgcmV0dXJuIG1faGFzUGVuZGluZ0FjdGl2aXR5OwogfQogCi1JREJUcmFuc2FjdGlvbjo6
TW9kZSBJREJUcmFuc2FjdGlvbjo6c3RyaW5nVG9Nb2RlKGNvbnN0IFN0cmluZyYgbW9kZVN0cmlu
ZywgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgRXhjZXB0aW9uQ29kZSYgZWMpCitJ
bmRleGVkREI6OlRyYW5zYWN0aW9uTW9kZSBJREJUcmFuc2FjdGlvbjo6c3RyaW5nVG9Nb2RlKGNv
bnN0IFN0cmluZyYgbW9kZVN0cmluZywgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwg
RXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgaWYgKG1vZGVTdHJpbmcuaXNOdWxsKCkKICAgICAg
ICAgfHwgbW9kZVN0cmluZyA9PSBJREJUcmFuc2FjdGlvbjo6bW9kZVJlYWRPbmx5KCkpCi0gICAg
ICAgIHJldHVybiBJREJUcmFuc2FjdGlvbjo6UkVBRF9PTkxZOworICAgICAgICByZXR1cm4gSW5k
ZXhlZERCOjpUcmFuc2FjdGlvblJlYWRPbmx5OwogICAgIGlmIChtb2RlU3RyaW5nID09IElEQlRy
YW5zYWN0aW9uOjptb2RlUmVhZFdyaXRlKCkpCi0gICAgICAgIHJldHVybiBJREJUcmFuc2FjdGlv
bjo6UkVBRF9XUklURTsKKyAgICAgICAgcmV0dXJuIEluZGV4ZWREQjo6VHJhbnNhY3Rpb25SZWFk
V3JpdGU7CiAKICAgICBlYyA9IFR5cGVFcnJvcjsKLSAgICByZXR1cm4gSURCVHJhbnNhY3Rpb246
OlJFQURfT05MWTsKKyAgICByZXR1cm4gSW5kZXhlZERCOjpUcmFuc2FjdGlvblJlYWRPbmx5Owog
fQogCi1jb25zdCBBdG9taWNTdHJpbmcmIElEQlRyYW5zYWN0aW9uOjptb2RlVG9TdHJpbmcoSURC
VHJhbnNhY3Rpb246Ok1vZGUgbW9kZSkKK2NvbnN0IEF0b21pY1N0cmluZyYgSURCVHJhbnNhY3Rp
b246Om1vZGVUb1N0cmluZyhJbmRleGVkREI6OlRyYW5zYWN0aW9uTW9kZSBtb2RlKQogewogICAg
IHN3aXRjaCAobW9kZSkgewotICAgIGNhc2UgSURCVHJhbnNhY3Rpb246OlJFQURfT05MWToKKyAg
ICBjYXNlIEluZGV4ZWREQjo6VHJhbnNhY3Rpb25SZWFkT25seToKICAgICAgICAgcmV0dXJuIElE
QlRyYW5zYWN0aW9uOjptb2RlUmVhZE9ubHkoKTsKICAgICAgICAgYnJlYWs7CiAKLSAgICBjYXNl
IElEQlRyYW5zYWN0aW9uOjpSRUFEX1dSSVRFOgorICAgIGNhc2UgSW5kZXhlZERCOjpUcmFuc2Fj
dGlvblJlYWRXcml0ZToKICAgICAgICAgcmV0dXJuIElEQlRyYW5zYWN0aW9uOjptb2RlUmVhZFdy
aXRlKCk7CiAgICAgICAgIGJyZWFrOwogCi0gICAgY2FzZSBJREJUcmFuc2FjdGlvbjo6VkVSU0lP
Tl9DSEFOR0U6CisgICAgY2FzZSBJbmRleGVkREI6OlRyYW5zYWN0aW9uVmVyc2lvbkNoYW5nZToK
ICAgICAgICAgcmV0dXJuIElEQlRyYW5zYWN0aW9uOjptb2RlVmVyc2lvbkNoYW5nZSgpOwogICAg
ICAgICBicmVhazsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvSURCVHJhbnNhY3Rpb24uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lE
QlRyYW5zYWN0aW9uLmgKaW5kZXggNjk3NTBlYjczOWU2ODA3ZGIxMTg3ZGMwZTZjODQ0ZmM4NTAx
MmIyNy4uZjRkNjRjYjdkMTNmZTM1MzI1NmM2ZTE1ZTcyOTc5ZTUyNTU3NTk3OSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb24uaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5oCkBAIC0z
NSw2ICszNSw3IEBACiAjaW5jbHVkZSAiRXZlbnROYW1lcy5oIgogI2luY2x1ZGUgIkV2ZW50VGFy
Z2V0LmgiCiAjaW5jbHVkZSAiSURCTWV0YWRhdGEuaCIKKyNpbmNsdWRlICJJbmRleGVkREIuaCIK
ICNpbmNsdWRlICJTY3JpcHRXcmFwcGFibGUuaCIKICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgog
I2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CkBAIC01MSwxMyArNTIsNyBAQCBzdHJ1Y3QgSURC
T2JqZWN0U3RvcmVNZXRhZGF0YTsKIAogY2xhc3MgSURCVHJhbnNhY3Rpb24gOiBwdWJsaWMgU2Ny
aXB0V3JhcHBhYmxlLCBwdWJsaWMgUmVmQ291bnRlZDxJREJUcmFuc2FjdGlvbj4sIHB1YmxpYyBF
dmVudFRhcmdldCwgcHVibGljIEFjdGl2ZURPTU9iamVjdCB7CiBwdWJsaWM6Ci0gICAgZW51bSBN
b2RlIHsKLSAgICAgICAgUkVBRF9PTkxZID0gMCwKLSAgICAgICAgUkVBRF9XUklURSA9IDEsCi0g
ICAgICAgIFZFUlNJT05fQ0hBTkdFID0gMgotICAgIH07Ci0KLSAgICBzdGF0aWMgUGFzc1JlZlB0
cjxJREJUcmFuc2FjdGlvbj4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBpbnQ2NF90
LCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgb2JqZWN0U3RvcmVOYW1lcywgTW9kZSwgSURCRGF0YWJh
c2UqKTsKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbj4gY3JlYXRlKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqLCBpbnQ2NF90LCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgb2JqZWN0
U3RvcmVOYW1lcywgSW5kZXhlZERCOjpUcmFuc2FjdGlvbk1vZGUsIElEQkRhdGFiYXNlKik7CiAg
ICAgc3RhdGljIFBhc3NSZWZQdHI8SURCVHJhbnNhY3Rpb24+IGNyZWF0ZShTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiwgaW50NjRfdCwgSURCRGF0YWJhc2UqLCBJREJPcGVuREJSZXF1ZXN0KiwgY29u
c3QgSURCRGF0YWJhc2VNZXRhZGF0YSYgcHJldmlvdXNNZXRhZGF0YSk7CiAgICAgdmlydHVhbCB+
SURCVHJhbnNhY3Rpb24oKTsKIApAQCAtNjcsMTYgKzYyLDE2IEBAIHB1YmxpYzoKICAgICBzdGF0
aWMgY29uc3QgQXRvbWljU3RyaW5nJiBtb2RlUmVhZE9ubHlMZWdhY3koKTsKICAgICBzdGF0aWMg
Y29uc3QgQXRvbWljU3RyaW5nJiBtb2RlUmVhZFdyaXRlTGVnYWN5KCk7CiAKLSAgICBzdGF0aWMg
TW9kZSBzdHJpbmdUb01vZGUoY29uc3QgU3RyaW5nJiwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCos
IEV4Y2VwdGlvbkNvZGUmKTsKLSAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiBtb2RlVG9T
dHJpbmcoTW9kZSk7CisgICAgc3RhdGljIEluZGV4ZWREQjo6VHJhbnNhY3Rpb25Nb2RlIHN0cmlu
Z1RvTW9kZShjb25zdCBTdHJpbmcmLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgRXhjZXB0aW9u
Q29kZSYpOworICAgIHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcmIG1vZGVUb1N0cmluZyhJbmRl
eGVkREI6OlRyYW5zYWN0aW9uTW9kZSk7CiAKICAgICBJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZh
Y2UqIGJhY2tlbmREQigpIGNvbnN0OwogCiAgICAgaW50NjRfdCBpZCgpIGNvbnN0IHsgcmV0dXJu
IG1faWQ7IH0KICAgICBib29sIGlzQWN0aXZlKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0ZSA9PSBB
Y3RpdmU7IH0KICAgICBib29sIGlzRmluaXNoZWQoKSBjb25zdCB7IHJldHVybiBtX3N0YXRlID09
IEZpbmlzaGVkOyB9Ci0gICAgYm9vbCBpc1JlYWRPbmx5KCkgY29uc3QgeyByZXR1cm4gbV9tb2Rl
ID09IFJFQURfT05MWTsgfQotICAgIGJvb2wgaXNWZXJzaW9uQ2hhbmdlKCkgY29uc3QgeyByZXR1
cm4gbV9tb2RlID09IFZFUlNJT05fQ0hBTkdFOyB9CisgICAgYm9vbCBpc1JlYWRPbmx5KCkgY29u
c3QgeyByZXR1cm4gbV9tb2RlID09IEluZGV4ZWREQjo6VHJhbnNhY3Rpb25SZWFkT25seTsgfQor
ICAgIGJvb2wgaXNWZXJzaW9uQ2hhbmdlKCkgY29uc3QgeyByZXR1cm4gbV9tb2RlID09IEluZGV4
ZWREQjo6VHJhbnNhY3Rpb25WZXJzaW9uQ2hhbmdlOyB9CiAKICAgICAvLyBJbXBsZW1lbnQgdGhl
IElEQlRyYW5zYWN0aW9uIElETAogICAgIGNvbnN0IFN0cmluZyYgbW9kZSgpIGNvbnN0OwpAQCAt
MTI2LDcgKzEyMSw3IEBAIHB1YmxpYzoKICAgICB1c2luZyBSZWZDb3VudGVkPElEQlRyYW5zYWN0
aW9uPjo6ZGVyZWY7CiAKIHByaXZhdGU6Ci0gICAgSURCVHJhbnNhY3Rpb24oU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCosIGludDY0X3QsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiwgTW9kZSwgSURCRGF0
YWJhc2UqLCBJREJPcGVuREJSZXF1ZXN0KiwgY29uc3QgSURCRGF0YWJhc2VNZXRhZGF0YSYpOwor
ICAgIElEQlRyYW5zYWN0aW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBpbnQ2NF90LCBjb25z
dCBWZWN0b3I8U3RyaW5nPiYsIEluZGV4ZWREQjo6VHJhbnNhY3Rpb25Nb2RlLCBJREJEYXRhYmFz
ZSosIElEQk9wZW5EQlJlcXVlc3QqLCBjb25zdCBJREJEYXRhYmFzZU1ldGFkYXRhJik7CiAKICAg
ICB2b2lkIGVucXVldWVFdmVudChQYXNzUmVmUHRyPEV2ZW50Pik7CiAgICAgdm9pZCBjbG9zZU9w
ZW5DdXJzb3JzKCk7CkBAIC0xNTEsNyArMTQ2LDcgQEAgcHJpdmF0ZToKICAgICBSZWZQdHI8SURC
RGF0YWJhc2U+IG1fZGF0YWJhc2U7CiAgICAgY29uc3QgVmVjdG9yPFN0cmluZz4gbV9vYmplY3RT
dG9yZU5hbWVzOwogICAgIElEQk9wZW5EQlJlcXVlc3QqIG1fb3BlbkRCUmVxdWVzdDsKLSAgICBj
b25zdCBNb2RlIG1fbW9kZTsKKyAgICBjb25zdCBJbmRleGVkREI6OlRyYW5zYWN0aW9uTW9kZSBt
X21vZGU7CiAgICAgU3RhdGUgbV9zdGF0ZTsKICAgICBib29sIG1faGFzUGVuZGluZ0FjdGl2aXR5
OwogICAgIGJvb2wgbV9jb250ZXh0U3RvcHBlZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uQmFja2VuZEltcGwuY3BwIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbC5jcHAK
aW5kZXggN2ZlODNiMjNkMmVjYmZmNzYwMmUzMmI0ZWIxOWVkMWJhYzg2YWU2Zi4uNjU2MjU1Nzcw
NjExMmYzOTE2MDJjZjUwZjY5MjdlYmRlNDg5YzhjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1w
bC5jcHAKQEAgLTMxLDEzICszMSwxNCBAQAogI2luY2x1ZGUgIklEQkJhY2tpbmdTdG9yZS5oIgog
I2luY2x1ZGUgIklEQkN1cnNvckJhY2tlbmRJbXBsLmgiCiAjaW5jbHVkZSAiSURCRGF0YWJhc2VC
YWNrZW5kSW1wbC5oIgorI2luY2x1ZGUgIklEQkRhdGFiYXNlQ2FsbGJhY2tzLmgiCiAjaW5jbHVk
ZSAiSURCRGF0YWJhc2VFeGNlcHRpb24uaCIKICNpbmNsdWRlICJJREJUcmFjaW5nLmgiCiAjaW5j
bHVkZSAiSURCVHJhbnNhY3Rpb25Db29yZGluYXRvci5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKLVBhc3NSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbD4gSURCVHJhbnNhY3Rpb25C
YWNrZW5kSW1wbDo6Y3JlYXRlKGludDY0X3QgaWQsIFBhc3NSZWZQdHI8SURCRGF0YWJhc2VDYWxs
YmFja3M+IGNhbGxiYWNrcywgY29uc3QgVmVjdG9yPGludDY0X3Q+JiBvYmplY3RTdG9yZUlkcywg
SURCVHJhbnNhY3Rpb246Ok1vZGUgbW9kZSwgSURCRGF0YWJhc2VCYWNrZW5kSW1wbCogZGF0YWJh
c2UpCitQYXNzUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGw+IElEQlRyYW5zYWN0aW9u
QmFja2VuZEltcGw6OmNyZWF0ZShpbnQ2NF90IGlkLCBQYXNzUmVmUHRyPElEQkRhdGFiYXNlQ2Fs
bGJhY2tzPiBjYWxsYmFja3MsIGNvbnN0IFZlY3RvcjxpbnQ2NF90PiYgb2JqZWN0U3RvcmVJZHMs
IEluZGV4ZWREQjo6VHJhbnNhY3Rpb25Nb2RlIG1vZGUsIElEQkRhdGFiYXNlQmFja2VuZEltcGwq
IGRhdGFiYXNlKQogewogICAgIEhhc2hTZXQ8aW50NjRfdD4gb2JqZWN0U3RvcmVIYXNoU2V0Owog
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgb2JqZWN0U3RvcmVJZHMuc2l6ZSgpOyArK2kpCkBA
IC00Niw3ICs0Nyw3IEBAIFBhc3NSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbD4gSURC
VHJhbnNhY3Rpb25CYWNrZW5kSW1wbDo6Y3JlYXRlKGludDY0X3QKICAgICByZXR1cm4gYWRvcHRS
ZWYobmV3IElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGwoaWQsIGNhbGxiYWNrcywgb2JqZWN0U3Rv
cmVIYXNoU2V0LCBtb2RlLCBkYXRhYmFzZSkpOwogfQogCi1JREJUcmFuc2FjdGlvbkJhY2tlbmRJ
bXBsOjpJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsKGludDY0X3QgaWQsIFBhc3NSZWZQdHI8SURC
RGF0YWJhc2VDYWxsYmFja3M+IGNhbGxiYWNrcywgY29uc3QgSGFzaFNldDxpbnQ2NF90PiYgb2Jq
ZWN0U3RvcmVJZHMsIElEQlRyYW5zYWN0aW9uOjpNb2RlIG1vZGUsIElEQkRhdGFiYXNlQmFja2Vu
ZEltcGwqIGRhdGFiYXNlKQorSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbDo6SURCVHJhbnNhY3Rp
b25CYWNrZW5kSW1wbChpbnQ2NF90IGlkLCBQYXNzUmVmUHRyPElEQkRhdGFiYXNlQ2FsbGJhY2tz
PiBjYWxsYmFja3MsIGNvbnN0IEhhc2hTZXQ8aW50NjRfdD4mIG9iamVjdFN0b3JlSWRzLCBJbmRl
eGVkREI6OlRyYW5zYWN0aW9uTW9kZSBtb2RlLCBJREJEYXRhYmFzZUJhY2tlbmRJbXBsKiBkYXRh
YmFzZSkKICAgICA6IG1faWQoaWQpCiAgICAgLCBtX29iamVjdFN0b3JlSWRzKG9iamVjdFN0b3Jl
SWRzKQogICAgICwgbV9tb2RlKG1vZGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsLmggYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsLmgKaW5kZXggM2Nl
Zjk3NjJhZTEwMjdlODg4NGU5ODI2ZjQ3OTFmNjM2NGEzNGIwNi4uZTYxOGZhMDY4OGE5YzBkZGM5
ZjlhMWE3OGNkZDkyYmZmMjgxMWViMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uQmFja2VuZEltcGwuaApAQCAtMzEs
NyArMzEsNiBAQAogI2luY2x1ZGUgIklEQkJhY2tpbmdTdG9yZS5oIgogI2luY2x1ZGUgIklEQkRh
dGFiYXNlQmFja2VuZEludGVyZmFjZS5oIgogI2luY2x1ZGUgIklEQkRhdGFiYXNlRXJyb3IuaCIK
LSNpbmNsdWRlICJJREJUcmFuc2FjdGlvbi5oIgogI2luY2x1ZGUgIlRpbWVyLmgiCiAjaW5jbHVk
ZSA8d3RmL0RlcXVlLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KQEAgLTQ1LDcgKzQ0LDcg
QEAgY2xhc3MgSURCRGF0YWJhc2VDYWxsYmFja3M7CiAKIGNsYXNzIElEQlRyYW5zYWN0aW9uQmFj
a2VuZEltcGwgOiBwdWJsaWMgUmVmQ291bnRlZDxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsPiB7
CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW1w
bD4gY3JlYXRlKGludDY0X3QgdHJhbnNhY3Rpb25JZCwgUGFzc1JlZlB0cjxJREJEYXRhYmFzZUNh
bGxiYWNrcz4sIGNvbnN0IFZlY3RvcjxpbnQ2NF90PiYsIElEQlRyYW5zYWN0aW9uOjpNb2RlLCBJ
REJEYXRhYmFzZUJhY2tlbmRJbXBsKik7CisgICAgc3RhdGljIFBhc3NSZWZQdHI8SURCVHJhbnNh
Y3Rpb25CYWNrZW5kSW1wbD4gY3JlYXRlKGludDY0X3QgdHJhbnNhY3Rpb25JZCwgUGFzc1JlZlB0
cjxJREJEYXRhYmFzZUNhbGxiYWNrcz4sIGNvbnN0IFZlY3RvcjxpbnQ2NF90PiYsIEluZGV4ZWRE
Qjo6VHJhbnNhY3Rpb25Nb2RlLCBJREJEYXRhYmFzZUJhY2tlbmRJbXBsKik7CiAgICAgdmlydHVh
bCB+SURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbCgpOwogCiAgICAgdmlydHVhbCB2b2lkIGFib3J0
KCk7CkBAIC01OSw3ICs1OCw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgYWJvcnQoUGFzc1JlZlB0
cjxJREJEYXRhYmFzZUVycm9yPik7CiAgICAgdm9pZCBydW4oKTsKLSAgICBJREJUcmFuc2FjdGlv
bjo6TW9kZSBtb2RlKCkgY29uc3QgeyByZXR1cm4gbV9tb2RlOyB9CisgICAgSW5kZXhlZERCOjpU
cmFuc2FjdGlvbk1vZGUgbW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fbW9kZTsgfQogICAgIGNvbnN0
IEhhc2hTZXQ8aW50NjRfdD4mIHNjb3BlKCkgY29uc3QgeyByZXR1cm4gbV9vYmplY3RTdG9yZUlk
czsgfQogICAgIHZvaWQgc2NoZWR1bGVUYXNrKFBhc3NPd25QdHI8T3BlcmF0aW9uPiB0YXNrLCBQ
YXNzT3duUHRyPE9wZXJhdGlvbj4gYWJvcnRUYXNrID0gbnVsbHB0cikgeyBzY2hlZHVsZVRhc2so
SURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlOjpOb3JtYWxUYXNrLCB0YXNrLCBhYm9ydFRhc2sp
OyB9CiAgICAgdm9pZCBzY2hlZHVsZVRhc2soSURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlOjpU
YXNrVHlwZSwgUGFzc093blB0cjxPcGVyYXRpb24+LCBQYXNzT3duUHRyPE9wZXJhdGlvbj4gYWJv
cnRUYXNrID0gbnVsbHB0cik7CkBAIC03Myw3ICs3Miw3IEBAIHB1YmxpYzoKICAgICBJREJEYXRh
YmFzZUJhY2tlbmRJbXBsKiBkYXRhYmFzZSgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YWJhc2UuZ2V0
KCk7IH0KIAogcHJpdmF0ZToKLSAgICBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsKGludDY0X3Qg
aWQsIFBhc3NSZWZQdHI8SURCRGF0YWJhc2VDYWxsYmFja3M+LCBjb25zdCBIYXNoU2V0PGludDY0
X3Q+JiBvYmplY3RTdG9yZUlkcywgSURCVHJhbnNhY3Rpb246Ok1vZGUsIElEQkRhdGFiYXNlQmFj
a2VuZEltcGwqKTsKKyAgICBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsKGludDY0X3QgaWQsIFBh
c3NSZWZQdHI8SURCRGF0YWJhc2VDYWxsYmFja3M+LCBjb25zdCBIYXNoU2V0PGludDY0X3Q+JiBv
YmplY3RTdG9yZUlkcywgSW5kZXhlZERCOjpUcmFuc2FjdGlvbk1vZGUsIElEQkRhdGFiYXNlQmFj
a2VuZEltcGwqKTsKIAogICAgIGVudW0gU3RhdGUgewogICAgICAgICBVbnVzZWQsIC8vIENyZWF0
ZWQsIGJ1dCBubyB0YXNrcyB5ZXQuCkBAIC05Miw3ICs5MSw3IEBAIHByaXZhdGU6CiAKICAgICBj
b25zdCBpbnQ2NF90IG1faWQ7CiAgICAgY29uc3QgSGFzaFNldDxpbnQ2NF90PiBtX29iamVjdFN0
b3JlSWRzOwotICAgIGNvbnN0IElEQlRyYW5zYWN0aW9uOjpNb2RlIG1fbW9kZTsKKyAgICBjb25z
dCBJbmRleGVkREI6OlRyYW5zYWN0aW9uTW9kZSBtX21vZGU7CiAKICAgICBTdGF0ZSBtX3N0YXRl
OwogICAgIGJvb2wgbV9jb21taXRQZW5kaW5nOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb25Db29yZGluYXRvci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbkNvb3JkaW5hdG9yLmNwcApp
bmRleCAwYmI1YWNhOTVhMDhjNWM1MTZhMzY1MTMyNTQ1YjhlNDY5N2Q1MGVmLi5hNmZjZDhlYTNl
NmUxZDgyZTFiOTI4OTBhZGU1NGZkNzVlZWU4NzFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbkNvb3JkaW5hdG9yLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbkNvb3JkaW5hdG9y
LmNwcApAQCAtMjksNyArMjksNiBAQAogI2lmIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQogCiAj
aW5jbHVkZSAiSURCRGF0YWJhc2VCYWNrZW5kSW1wbC5oIgotI2luY2x1ZGUgIklEQlRyYW5zYWN0
aW9uLmgiCiAjaW5jbHVkZSAiSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbC5oIgogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CkBAIC05Nyw3ICs5Niw3IEBAIHZvaWQgSURCVHJhbnNhY3Rpb25Db29yZGlu
YXRvcjo6cHJvY2Vzc1N0YXJ0ZWRUcmFuc2FjdGlvbnMoKQogICAgIGlmIChtX3F1ZXVlZFRyYW5z
YWN0aW9ucy5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIEFTU0VSVChtX3N0YXJ0
ZWRUcmFuc2FjdGlvbnMuaXNFbXB0eSgpIHx8ICgqbV9zdGFydGVkVHJhbnNhY3Rpb25zLmJlZ2lu
KCkpLT5tb2RlKCkgIT0gSURCVHJhbnNhY3Rpb246OlZFUlNJT05fQ0hBTkdFKTsKKyAgICBBU1NF
UlQobV9zdGFydGVkVHJhbnNhY3Rpb25zLmlzRW1wdHkoKSB8fCAoKm1fc3RhcnRlZFRyYW5zYWN0
aW9ucy5iZWdpbigpKS0+bW9kZSgpICE9IEluZGV4ZWREQjo6VHJhbnNhY3Rpb25WZXJzaW9uQ2hh
bmdlKTsKIAogICAgIExpc3RIYXNoU2V0PElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGwqPjo6Y29u
c3RfaXRlcmF0b3IgaXQgPSBtX3F1ZXVlZFRyYW5zYWN0aW9ucy5iZWdpbigpOwogICAgIHdoaWxl
IChpdCAhPSBtX3F1ZXVlZFRyYW5zYWN0aW9ucy5lbmQoKSkgewpAQCAtMTI0LDIyICsxMjMsMjIg
QEAgYm9vbCBJREJUcmFuc2FjdGlvbkNvb3JkaW5hdG9yOjpjYW5SdW5UcmFuc2FjdGlvbihJREJU
cmFuc2FjdGlvbkJhY2tlbmRJbXBsKiB0cmEKIHsKICAgICBBU1NFUlQobV9xdWV1ZWRUcmFuc2Fj
dGlvbnMuY29udGFpbnModHJhbnNhY3Rpb24pKTsKICAgICBzd2l0Y2ggKHRyYW5zYWN0aW9uLT5t
b2RlKCkpIHsKLSAgICBjYXNlIElEQlRyYW5zYWN0aW9uOjpWRVJTSU9OX0NIQU5HRToKKyAgICBj
YXNlIEluZGV4ZWREQjo6VHJhbnNhY3Rpb25WZXJzaW9uQ2hhbmdlOgogICAgICAgICBBU1NFUlQo
bV9xdWV1ZWRUcmFuc2FjdGlvbnMuc2l6ZSgpID09IDEpOwogICAgICAgICBBU1NFUlQobV9zdGFy
dGVkVHJhbnNhY3Rpb25zLmlzRW1wdHkoKSk7CiAgICAgICAgIHJldHVybiB0cnVlOwogCi0gICAg
Y2FzZSBJREJUcmFuc2FjdGlvbjo6UkVBRF9PTkxZOgorICAgIGNhc2UgSW5kZXhlZERCOjpUcmFu
c2FjdGlvblJlYWRPbmx5OgogICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAgIGNhc2UgSURCVHJh
bnNhY3Rpb246OlJFQURfV1JJVEU6CisgICAgY2FzZSBJbmRleGVkREI6OlRyYW5zYWN0aW9uUmVh
ZFdyaXRlOgogICAgICAgICBmb3IgKEhhc2hTZXQ8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbCo+
Ojpjb25zdF9pdGVyYXRvciBpdCA9IG1fc3RhcnRlZFRyYW5zYWN0aW9ucy5iZWdpbigpOyBpdCAh
PSBtX3N0YXJ0ZWRUcmFuc2FjdGlvbnMuZW5kKCk7ICsraXQpIHsKLSAgICAgICAgICAgIGlmICgo
Kml0KS0+bW9kZSgpID09IElEQlRyYW5zYWN0aW9uOjpSRUFEX1dSSVRFICYmIGRvU2NvcGVzT3Zl
cmxhcCh0cmFuc2FjdGlvbi0+c2NvcGUoKSwgKCppdCktPnNjb3BlKCkpKQorICAgICAgICAgICAg
aWYgKCgqaXQpLT5tb2RlKCkgPT0gSW5kZXhlZERCOjpUcmFuc2FjdGlvblJlYWRXcml0ZSAmJiBk
b1Njb3Blc092ZXJsYXAodHJhbnNhY3Rpb24tPnNjb3BlKCksICgqaXQpLT5zY29wZSgpKSkKICAg
ICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KICAgICAgICAgZm9yIChMaXN0
SGFzaFNldDxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsKj46OmNvbnN0X2l0ZXJhdG9yIGl0ID0g
bV9xdWV1ZWRUcmFuc2FjdGlvbnMuYmVnaW4oKTsgKml0ICE9IHRyYW5zYWN0aW9uOyArK2l0KSB7
CiAgICAgICAgICAgICBBU1NFUlQoaXQgIT0gbV9xdWV1ZWRUcmFuc2FjdGlvbnMuZW5kKCkpOwot
ICAgICAgICAgICAgaWYgKCgqaXQpLT5tb2RlKCkgPT0gSURCVHJhbnNhY3Rpb246OlJFQURfV1JJ
VEUgJiYgZG9TY29wZXNPdmVybGFwKHRyYW5zYWN0aW9uLT5zY29wZSgpLCAoKml0KS0+c2NvcGUo
KSkpCisgICAgICAgICAgICBpZiAoKCppdCktPm1vZGUoKSA9PSBJbmRleGVkREI6OlRyYW5zYWN0
aW9uUmVhZFdyaXRlICYmIGRvU2NvcGVzT3ZlcmxhcCh0cmFuc2FjdGlvbi0+c2NvcGUoKSwgKCpp
dCktPnNjb3BlKCkpKQogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQog
ICAgICAgICByZXR1cm4gdHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL0luZGV4ZWREQi5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
SW5kZXhlZERCLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTMyMzgxODM5NTZhYWVmMDNkODkxZTI0N2MxMDMxNmNh
N2EzNTRmZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL0luZGV4ZWREQi5oCkBAIC0wLDAgKzEsNTkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVU
T1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFS
RQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIEluZGV4ZWRE
Ql9oCisjZGVmaW5lIEluZGV4ZWREQl9oCisKKyNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkK
KworbmFtZXNwYWNlIFdlYkNvcmUgeworCituYW1lc3BhY2UgSW5kZXhlZERCIHsKKworZW51bSBU
cmFuc2FjdGlvbk1vZGUgeworICAgIFRyYW5zYWN0aW9uUmVhZE9ubHkgPSAwLAorICAgIFRyYW5z
YWN0aW9uUmVhZFdyaXRlID0gMSwKKyAgICBUcmFuc2FjdGlvblZlcnNpb25DaGFuZ2UgPSAyCit9
OworCitlbnVtIEN1cnNvckRpcmVjdGlvbiB7CisgICAgQ3Vyc29yTmV4dCA9IDAsCisgICAgQ3Vy
c29yTmV4dE5vRHVwbGljYXRlID0gMSwKKyAgICBDdXJzb3JQcmV2ID0gMiwKKyAgICBDdXJzb3JQ
cmV2Tm9EdXBsaWNhdGUgPSAzLAorfTsKKworZW51bSBDdXJzb3JUeXBlIHsKKyAgICBDdXJzb3JL
ZXlBbmRWYWx1ZSA9IDAsCisgICAgQ3Vyc29yS2V5T25seQorfTsKKworfSAvLyBuYW1lc3BhY2Ug
SW5kZXhlZERCCisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRUQo
SU5ERVhFRF9EQVRBQkFTRSkKKworI2VuZGlmIC8vIEluZGV4ZWREQl9oCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpIGIvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQppbmRl
eCAzNDQ4OWI5NDJkNjU5MTU0NWYzMmMwYTQ5NGE3OTFlZmNlZjQ1ZjJkLi44MTNlZjdmMjcwMmEy
NzlmYmM0ZjZhM2ZhMTYzNWE2MmRlODkyODgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9U
YXJnZXQucHJpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkKQEAgLTMxMDYsOCArMzEw
Niw4IEBAIGVuYWJsZT8oSU5ERVhFRF9EQVRBQkFTRSkgewogICAgICAgICBNb2R1bGVzL2luZGV4
ZWRkYi9JREJEYXRhYmFzZUV4Y2VwdGlvbi5oIFwKICAgICAgICAgTW9kdWxlcy9pbmRleGVkZGIv
SURCRXZlbnREaXNwYXRjaGVyLmggXAogICAgICAgICBNb2R1bGVzL2luZGV4ZWRkYi9JREJGYWN0
b3J5LmggXAotICAgICAgICBNb2R1bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5QmFja2VuZEludGVy
ZmFjZS5oIFwKICAgICAgICAgTW9kdWxlcy9pbmRleGVkZGIvSURCRmFjdG9yeUJhY2tlbmRJbXBs
LmggXAorICAgICAgICBNb2R1bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5QmFja2VuZEludGVyZmFj
ZS5oIFwKICAgICAgICAgTW9kdWxlcy9pbmRleGVkZGIvSURCSGlzdG9ncmFtcy5oIFwKICAgICAg
ICAgTW9kdWxlcy9pbmRleGVkZGIvSURCSW5kZXguaCBcCiAgICAgICAgIE1vZHVsZXMvaW5kZXhl
ZGRiL0lEQktleS5oIFwKQEAgLTMxMTUsNyArMzExNSw4IEBAIGVuYWJsZT8oSU5ERVhFRF9EQVRB
QkFTRSkgewogICAgICAgICBNb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZS5oIFwKICAg
ICAgICAgTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbC5oIFwKICAg
ICAgICAgTW9kdWxlcy9pbmRleGVkZGIvSURCUmVxdWVzdC5oIFwKLSAgICAgICAgTW9kdWxlcy9p
bmRleGVkZGIvSURCVHJhbnNhY3Rpb24uaAorICAgICAgICBNb2R1bGVzL2luZGV4ZWRkYi9JREJU
cmFuc2FjdGlvbi5oIFwKKyAgICAgICAgTW9kdWxlcy9pbmRleGVkZGIvSW5kZXhlZERCLmgKIAog
ICAgIFNPVVJDRVMgKz0gXAogICAgICAgICBiaW5kaW5ncy9qcy9JREJCaW5kaW5nVXRpbGl0aWVz
LmNwcCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkgYi9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLmd5cGkKaW5kZXggYThhZWRjZGRmZTY5YmQwMWUzM2VjMTllZDMxNTE3
NjdjYWU0ZTM2NS4uNGJlMGQ0MDJhZWJlODY5NGNiNWRiM2Q0YjdmMDI0ZWYzN2YwMTI2YiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUuZ3lwaQpAQCAtNzExLDYgKzcxMSw3IEBACiAgICAgICAgICAgICAnTW9kdWxlcy9p
bmRleGVkZGIvRE9NV2luZG93SW5kZXhlZERhdGFiYXNlLmgnLAogICAgICAgICAgICAgJ01vZHVs
ZXMvaW5kZXhlZGRiL0lEQkFueS5jcHAnLAogICAgICAgICAgICAgJ01vZHVsZXMvaW5kZXhlZGRi
L0lEQkFueS5oJywKKyAgICAgICAgICAgICdNb2R1bGVzL2luZGV4ZWRkYi9JREJCYWNraW5nU3Rv
cmUuY3BwJywKICAgICAgICAgICAgICdNb2R1bGVzL2luZGV4ZWRkYi9JREJCYWNraW5nU3RvcmUu
aCcsCiAgICAgICAgICAgICAnTW9kdWxlcy9pbmRleGVkZGIvSURCQ2FsbGJhY2tzLmgnLAogICAg
ICAgICAgICAgJ01vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvci5jcHAnLApAQCAtNzUxLDcgKzc1
Miw2IEBACiAgICAgICAgICAgICAnTW9kdWxlcy9pbmRleGVkZGIvSURCS2V5UmFuZ2UuaCcsCiAg
ICAgICAgICAgICAnTW9kdWxlcy9pbmRleGVkZGIvSURCTGV2ZWxEQkNvZGluZy5jcHAnLAogICAg
ICAgICAgICAgJ01vZHVsZXMvaW5kZXhlZGRiL0lEQkxldmVsREJDb2RpbmcuaCcsCi0gICAgICAg
ICAgICAnTW9kdWxlcy9pbmRleGVkZGIvSURCQmFja2luZ1N0b3JlLmNwcCcsCiAgICAgICAgICAg
ICAnTW9kdWxlcy9pbmRleGVkZGIvSURCTWV0YWRhdGEuaCcsCiAgICAgICAgICAgICAnTW9kdWxl
cy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmUuY3BwJywKICAgICAgICAgICAgICdNb2R1bGVzL2lu
ZGV4ZWRkYi9JREJPYmplY3RTdG9yZS5oJywKQEAgLTc3Miw2ICs3NzIsNyBAQAogICAgICAgICAg
ICAgJ01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uQ29vcmRpbmF0b3IuaCcsCiAgICAg
ICAgICAgICAnTW9kdWxlcy9pbmRleGVkZGIvSURCVmVyc2lvbkNoYW5nZUV2ZW50LmNwcCcsCiAg
ICAgICAgICAgICAnTW9kdWxlcy9pbmRleGVkZGIvSURCVmVyc2lvbkNoYW5nZUV2ZW50LmgnLAor
ICAgICAgICAgICAgJ01vZHVsZXMvaW5kZXhlZGRiL0luZGV4ZWREQi5oJywKICAgICAgICAgICAg
ICdNb2R1bGVzL2luZGV4ZWRkYi9QYWdlR3JvdXBJbmRleGVkRGF0YWJhc2UuY3BwJywKICAgICAg
ICAgICAgICdNb2R1bGVzL2luZGV4ZWRkYi9QYWdlR3JvdXBJbmRleGVkRGF0YWJhc2UuaCcsCiAg
ICAgICAgICAgICAnTW9kdWxlcy9pbmRleGVkZGIvV29ya2VyQ29udGV4dEluZGV4ZWREYXRhYmFz
ZS5jcHAnLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvQXNzZXJ0TWF0
Y2hpbmdFbnVtcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9Bc3NlcnRNYXRjaGlu
Z0VudW1zLmNwcAppbmRleCA4YWQwODQ0NDJjZjEyYjA5ZTE0MmRlODEzYTQzNTJjMWY0MDc4ZDFl
Li4wYjBlNDQ4ZDkzNjYwYjQzMzU4MGViYjY1NGFjN2YzNDA1Y2NkNTY3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9Bc3NlcnRNYXRjaGluZ0VudW1zLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9Bc3NlcnRNYXRjaGluZ0VudW1zLmNwcApAQCAtNTA0
LDEwICs1MDQsMTAgQEAgQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShXZWJJREJLZXlQYXRo
OjpBcnJheVR5cGUsIElEQktleVBhdGg6OkFycmF5VHlwZSk7CiAKIENPTVBJTEVfQVNTRVJUX01B
VENISU5HX0VOVU0oV2ViSURCTWV0YWRhdGE6Ok5vSW50VmVyc2lvbiwgSURCRGF0YWJhc2VNZXRh
ZGF0YTo6Tm9JbnRWZXJzaW9uKTsKIAotQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShXZWJJ
REJDdXJzb3I6Ok5leHQsIElEQkN1cnNvcjo6TkVYVCk7Ci1DT01QSUxFX0FTU0VSVF9NQVRDSElO
R19FTlVNKFdlYklEQkN1cnNvcjo6TmV4dE5vRHVwbGljYXRlLCBJREJDdXJzb3I6Ok5FWFRfTk9f
RFVQTElDQVRFKTsKLUNPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oV2ViSURCQ3Vyc29yOjpQ
cmV2LCBJREJDdXJzb3I6OlBSRVYpOwotQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShXZWJJ
REJDdXJzb3I6OlByZXZOb0R1cGxpY2F0ZSwgSURCQ3Vyc29yOjpQUkVWX05PX0RVUExJQ0FURSk7
CitDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKFdlYklEQkN1cnNvcjo6TmV4dCwgSW5kZXhl
ZERCOjpDdXJzb3JOZXh0KTsKK0NPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oV2ViSURCQ3Vy
c29yOjpOZXh0Tm9EdXBsaWNhdGUsIEluZGV4ZWREQjo6Q3Vyc29yTmV4dE5vRHVwbGljYXRlKTsK
K0NPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oV2ViSURCQ3Vyc29yOjpQcmV2LCBJbmRleGVk
REI6OkN1cnNvclByZXYpOworQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShXZWJJREJDdXJz
b3I6OlByZXZOb0R1cGxpY2F0ZSwgSW5kZXhlZERCOjpDdXJzb3JQcmV2Tm9EdXBsaWNhdGUpOwog
CiBDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKFdlYklEQkRhdGFiYXNlOjpQcmVlbXB0aXZl
VGFzaywgSURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlOjpQcmVlbXB0aXZlVGFzayk7CiBDT01Q
SUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKFdlYklEQkRhdGFiYXNlOjpOb3JtYWxUYXNrLCBJREJE
YXRhYmFzZUJhY2tlbmRJbnRlcmZhY2U6Ok5vcm1hbFRhc2spOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvSURCRGF0YWJhc2VCYWNrZW5kUHJveHkuY3BwIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvSURCRGF0YWJhc2VCYWNrZW5kUHJveHkuY3BwCmluZGV4IDM1
NWQ4MDg5ZWVjYzZkM2M0NGJkOGNiYTA0MTExZjI2ZWZmMTkzNGYuLjJjMmE1ZTdlOWZkNTY0MmE1
OTcyMDQ4YjI5YTZjMDJhN2JlMGRiYjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL0lEQkRhdGFiYXNlQmFja2VuZFByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9JREJEYXRhYmFzZUJhY2tlbmRQcm94eS5jcHAKQEAgLTkzLDcgKzkzLDcgQEAg
dm9pZCBJREJEYXRhYmFzZUJhY2tlbmRQcm94eTo6YWJvcnQoaW50NjRfdCB0cmFuc2FjdGlvbklk
LCBQYXNzUmVmUHRyPElEQkRhdGFiYXMKICAgICBtX3dlYklEQkRhdGFiYXNlLT5hYm9ydCh0cmFu
c2FjdGlvbklkLCBlcnJvcik7CiB9CiAKLXZvaWQgSURCRGF0YWJhc2VCYWNrZW5kUHJveHk6Om9w
ZW5DdXJzb3IoaW50NjRfdCB0cmFuc2FjdGlvbklkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGlu
dDY0X3QgaW5kZXhJZCwgUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4ga2V5UmFuZ2UsIHVuc2lnbmVk
IHNob3J0IGRpcmVjdGlvbiwgYm9vbCBrZXlPbmx5LCBUYXNrVHlwZSB0YXNrVHlwZSwgUGFzc1Jl
ZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcykKK3ZvaWQgSURCRGF0YWJhc2VCYWNrZW5kUHJv
eHk6Om9wZW5DdXJzb3IoaW50NjRfdCB0cmFuc2FjdGlvbklkLCBpbnQ2NF90IG9iamVjdFN0b3Jl
SWQsIGludDY0X3QgaW5kZXhJZCwgUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4ga2V5UmFuZ2UsIElu
ZGV4ZWREQjo6Q3Vyc29yRGlyZWN0aW9uIGRpcmVjdGlvbiwgYm9vbCBrZXlPbmx5LCBUYXNrVHlw
ZSB0YXNrVHlwZSwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcykKIHsKICAgICBt
X3dlYklEQkRhdGFiYXNlLT5vcGVuQ3Vyc29yKHRyYW5zYWN0aW9uSWQsIG9iamVjdFN0b3JlSWQs
IGluZGV4SWQsIGtleVJhbmdlLCBzdGF0aWNfY2FzdDxXZWJJREJDdXJzb3I6OkRpcmVjdGlvbj4o
ZGlyZWN0aW9uKSwga2V5T25seSwgc3RhdGljX2Nhc3Q8V2ViSURCRGF0YWJhc2U6OlRhc2tUeXBl
Pih0YXNrVHlwZSksIG5ldyBXZWJJREJDYWxsYmFja3NJbXBsKGNhbGxiYWNrcykpOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCRGF0YWJhc2VCYWNrZW5kUHJv
eHkuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkRhdGFiYXNlQmFja2VuZFByb3h5
LmgKaW5kZXggZGJkOTY0MmYxMTIwZDk5OGRhZjk3Y2I1ZmE5YTUyMGJiZDVkNmQ1MS4uNWQ1ZDkw
OGY5OGJlM2FhODVjMjVkNjM0YzVmYjEwNDJlZWIyZjc4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvSURCRGF0YWJhc2VCYWNrZW5kUHJveHkuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9JREJEYXRhYmFzZUJhY2tlbmRQcm94eS5oCkBAIC01NSw3ICs1
NSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgcHV0KGludDY0X3QgdHJhbnNhY3Rpb25J
ZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBQYXNzUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZl
cj4gdmFsdWUsIFBhc3NSZWZQdHI8V2ViQ29yZTo6SURCS2V5PiwgUHV0TW9kZSwgUGFzc1JlZlB0
cjxXZWJDb3JlOjpJREJDYWxsYmFja3M+LCBjb25zdCBWZWN0b3I8aW50NjRfdD4mIGluZGV4SWRz
LCBjb25zdCBWZWN0b3I8SW5kZXhLZXlzPiYpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBz
ZXRJbmRleEtleXMoaW50NjRfdCB0cmFuc2FjdGlvbklkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQs
IFBhc3NSZWZQdHI8V2ViQ29yZTo6SURCS2V5PiBwcnBQcmltYXJ5S2V5LCBjb25zdCBWZWN0b3I8
aW50NjRfdD4mIGluZGV4SWRzLCBjb25zdCBWZWN0b3I8SW5kZXhLZXlzPiYpIE9WRVJSSURFOwog
ICAgIHZpcnR1YWwgdm9pZCBzZXRJbmRleGVzUmVhZHkoaW50NjRfdCB0cmFuc2FjdGlvbklkLCBp
bnQ2NF90IG9iamVjdFN0b3JlSWQsIGNvbnN0IFZlY3RvcjxpbnQ2NF90PiYgaW5kZXhJZHMpIE9W
RVJSSURFOwotICAgIHZpcnR1YWwgdm9pZCBvcGVuQ3Vyc29yKGludDY0X3QgdHJhbnNhY3Rpb25J
ZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBpbnQ2NF90IGluZGV4SWQsIFBhc3NSZWZQdHI8V2Vi
Q29yZTo6SURCS2V5UmFuZ2U+LCB1bnNpZ25lZCBzaG9ydCBkaXJlY3Rpb24sIGJvb2wga2V5T25s
eSwgVGFza1R5cGUsIFBhc3NSZWZQdHI8V2ViQ29yZTo6SURCQ2FsbGJhY2tzPikgT1ZFUlJJREU7
CisgICAgdmlydHVhbCB2b2lkIG9wZW5DdXJzb3IoaW50NjRfdCB0cmFuc2FjdGlvbklkLCBpbnQ2
NF90IG9iamVjdFN0b3JlSWQsIGludDY0X3QgaW5kZXhJZCwgUGFzc1JlZlB0cjxXZWJDb3JlOjpJ
REJLZXlSYW5nZT4sIFdlYkNvcmU6OkluZGV4ZWREQjo6Q3Vyc29yRGlyZWN0aW9uLCBib29sIGtl
eU9ubHksIFRhc2tUeXBlLCBQYXNzUmVmUHRyPFdlYkNvcmU6OklEQkNhbGxiYWNrcz4pIE9WRVJS
SURFOwogICAgIHZpcnR1YWwgdm9pZCBjb3VudChpbnQ2NF90IHRyYW5zYWN0aW9uSWQsIGludDY0
X3Qgb2JqZWN0U3RvcmVJZCwgaW50NjRfdCBpbmRleElkLCBQYXNzUmVmUHRyPFdlYkNvcmU6OklE
QktleVJhbmdlPiwgUGFzc1JlZlB0cjxXZWJDb3JlOjpJREJDYWxsYmFja3M+KSBPVkVSUklERTsK
ICAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlUmFuZ2UoaW50NjRfdCB0cmFuc2FjdGlvbklkLCBpbnQ2
NF90IG9iamVjdFN0b3JlSWQsIFBhc3NSZWZQdHI8V2ViQ29yZTo6SURCS2V5UmFuZ2U+LCBQYXNz
UmVmUHRyPFdlYkNvcmU6OklEQkNhbGxiYWNrcz4pIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9p
ZCBjbGVhcihpbnQ2NF90IHRyYW5zYWN0aW9uSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgUGFz
c1JlZlB0cjxXZWJDb3JlOjpJREJDYWxsYmFja3M+KSBPVkVSUklERTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkNhbGxiYWNrc0ltcGwuY3BwIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCQ2FsbGJhY2tzSW1wbC5jcHAKaW5kZXggMDVmYzg4
ZjViY2IzNTNkODNhZDRlNDRlYzBiMWI5Y2Q3NmM4NDRlYi4uMzM5MDU4ZWRkZjM0YzdiZjQyYjY0
MDRjODk2YzVmZTMzZjZhOGZiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvV2ViSURCQ2FsbGJhY2tzSW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvV2ViSURCQ2FsbGJhY2tzSW1wbC5jcHAKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNsdWRlICJJ
REJEYXRhYmFzZUJhY2tlbmRQcm94eS5oIgogI2luY2x1ZGUgIklEQkRhdGFiYXNlRXJyb3IuaCIK
ICNpbmNsdWRlICJJREJLZXkuaCIKKyNpbmNsdWRlICJJREJNZXRhZGF0YS5oIgogI2luY2x1ZGUg
IldlYkRPTVN0cmluZ0xpc3QuaCIKICNpbmNsdWRlICJXZWJJREJDYWxsYmFja3MuaCIKICNpbmNs
dWRlICJXZWJJREJEYXRhYmFzZS5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvV2ViSURCRGF0YWJhc2VJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L1dlYklEQkRhdGFiYXNlSW1wbC5jcHAKaW5kZXggYTE4MDUxNTBkMmNhNmRjNzdkZjg2MWI2MmQw
YWFiM2E5ZTVkYjJhYi4uZTRkYTdlZTIzMTI5ZjZmNjljODMwZDYwYTAwOWNlNWRmMTk0MzJmZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCRGF0YWJhc2VJbXBs
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJEYXRhYmFzZUltcGwu
Y3BwCkBAIC0xMTgsNyArMTE4LDcgQEAgdm9pZCBXZWJJREJEYXRhYmFzZUltcGw6OmNvbW1pdChs
b25nIGxvbmcgdHJhbnNhY3Rpb25JZCkKIHZvaWQgV2ViSURCRGF0YWJhc2VJbXBsOjpvcGVuQ3Vy
c29yKGxvbmcgbG9uZyB0cmFuc2FjdGlvbklkLCBsb25nIGxvbmcgb2JqZWN0U3RvcmVJZCwgbG9u
ZyBsb25nIGluZGV4SWQsIGNvbnN0IFdlYklEQktleVJhbmdlJiBrZXlSYW5nZSwgdW5zaWduZWQg
c2hvcnQgZGlyZWN0aW9uLCBib29sIGtleU9ubHksIFRhc2tUeXBlIHRhc2tUeXBlLCBXZWJJREJD
YWxsYmFja3MqIGNhbGxiYWNrcykKIHsKICAgICBpZiAobV9kYXRhYmFzZUJhY2tlbmQpCi0gICAg
ICAgIG1fZGF0YWJhc2VCYWNrZW5kLT5vcGVuQ3Vyc29yKHRyYW5zYWN0aW9uSWQsIG9iamVjdFN0
b3JlSWQsIGluZGV4SWQsIGtleVJhbmdlLCBzdGF0aWNfY2FzdDxJREJDdXJzb3I6OkRpcmVjdGlv
bj4oZGlyZWN0aW9uKSwga2V5T25seSwgc3RhdGljX2Nhc3Q8SURCRGF0YWJhc2VCYWNrZW5kSW50
ZXJmYWNlOjpUYXNrVHlwZT4odGFza1R5cGUpLCBJREJDYWxsYmFja3NQcm94eTo6Y3JlYXRlKGFk
b3B0UHRyKGNhbGxiYWNrcykpKTsKKyAgICAgICAgbV9kYXRhYmFzZUJhY2tlbmQtPm9wZW5DdXJz
b3IodHJhbnNhY3Rpb25JZCwgb2JqZWN0U3RvcmVJZCwgaW5kZXhJZCwga2V5UmFuZ2UsIHN0YXRp
Y19jYXN0PEluZGV4ZWREQjo6Q3Vyc29yRGlyZWN0aW9uPihkaXJlY3Rpb24pLCBrZXlPbmx5LCBz
dGF0aWNfY2FzdDxJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2U6OlRhc2tUeXBlPih0YXNrVHlw
ZSksIElEQkNhbGxiYWNrc1Byb3h5OjpjcmVhdGUoYWRvcHRQdHIoY2FsbGJhY2tzKSkpOwogfQog
CiB2b2lkIFdlYklEQkRhdGFiYXNlSW1wbDo6Y291bnQobG9uZyBsb25nIHRyYW5zYWN0aW9uSWQs
IGxvbmcgbG9uZyBvYmplY3RTdG9yZUlkLCBsb25nIGxvbmcgaW5kZXhJZCwgY29uc3QgV2ViSURC
S2V5UmFuZ2UmIGtleVJhbmdlLCBXZWJJREJDYWxsYmFja3MqIGNhbGxiYWNrcykKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvSURCQWJvcnRPbkNvcnJ1cHRUZXN0LmNw
cCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvSURCQWJvcnRPbkNvcnJ1cHRUZXN0LmNw
cAppbmRleCBlNjNjZTJhODZiMmE5M2Q2YjIyZTZmODA0MzhiZmQ3ODJiZDkxMWI5Li5jNDNjYTNm
NDhmYzU1NzJmYjVhZTFjOGNhY2MwY2IzMzQ0ZTMwMGFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3Rlc3RzL0lEQkFib3J0T25Db3JydXB0VGVzdC5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS90ZXN0cy9JREJBYm9ydE9uQ29ycnVwdFRlc3QuY3BwCkBAIC0zMSw2
ICszMSw3IEBACiAjaW5jbHVkZSAiSURCRGF0YWJhc2VDYWxsYmFja3MuaCIKICNpbmNsdWRlICJJ
REJGYWN0b3J5QmFja2VuZEltcGwuaCIKICNpbmNsdWRlICJJREJGYWtlQmFja2luZ1N0b3JlLmgi
CisjaW5jbHVkZSAiSW5kZXhlZERCLmgiCiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKICNp
bmNsdWRlIDxndGVzdC9ndGVzdC5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvSURCRGF0YWJhc2VCYWNrZW5kVGVzdC5j
cHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0lEQkRhdGFiYXNlQmFja2VuZFRlc3Qu
Y3BwCmluZGV4IDQ1YjllMmJiMmJmYWNhMWYwYWMxMTliN2Y1NWUyYTVjNDFiMTQ1ZWQuLmQxODQw
MjViY2I0NzM0MzlhNGU1NDhkMjNhYTAyMDcyZWQwYTkyZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vdGVzdHMvSURCRGF0YWJhc2VCYWNrZW5kVGVzdC5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9JREJEYXRhYmFzZUJhY2tlbmRUZXN0LmNwcApAQCAt
MjQsNiArMjQsOSBAQAogICovCiAKICNpbmNsdWRlICJjb25maWcuaCIKKworI2luY2x1ZGUgIklE
QkRhdGFiYXNlLmgiCisKICNpbmNsdWRlICJJREJCYWNraW5nU3RvcmUuaCIKICNpbmNsdWRlICJJ
REJDdXJzb3JCYWNrZW5kSW50ZXJmYWNlLmgiCiAjaW5jbHVkZSAiSURCRGF0YWJhc2VCYWNrZW5k
SW1wbC5oIgpAQCAtMzEsNiArMzQsNyBAQAogI2luY2x1ZGUgIklEQkZhY3RvcnlCYWNrZW5kSW1w
bC5oIgogI2luY2x1ZGUgIklEQkZha2VCYWNraW5nU3RvcmUuaCIKICNpbmNsdWRlICJJREJUcmFu
c2FjdGlvbkJhY2tlbmRJbXBsLmgiCisjaW5jbHVkZSAiSW5kZXhlZERCLmgiCiAjaW5jbHVkZSAi
U2hhcmVkQnVmZmVyLmgiCiAjaW5jbHVkZSAiV2ViSURCRGF0YWJhc2VDYWxsYmFja3NJbXBsLmgi
CiAjaW5jbHVkZSAiV2ViSURCRGF0YWJhc2VJbXBsLmgiCkBAIC0xNTEsNyArMTU1LDcgQEAgcHVi
bGljOgogICAgIHZpcnR1YWwgdm9pZCBhYm9ydChpbnQ2NF90IHRyYW5zYWN0aW9uSWQsIFBhc3NS
ZWZQdHI8SURCRGF0YWJhc2VFcnJvcj4pIE9WRVJSSURFIHsgfQogICAgIHZpcnR1YWwgdm9pZCBj
b21taXQoaW50NjRfdCB0cmFuc2FjdGlvbklkKSBPVkVSUklERSB7IH0KIAotICAgIHZpcnR1YWwg
dm9pZCBvcGVuQ3Vyc29yKGludDY0X3QgdHJhbnNhY3Rpb25JZCwgaW50NjRfdCBvYmplY3RTdG9y
ZUlkLCBpbnQ2NF90IGluZGV4SWQsIFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+LCB1bnNpZ25lZCBz
aG9ydCBkaXJlY3Rpb24sIGJvb2wga2V5T25seSwgVGFza1R5cGUsIFBhc3NSZWZQdHI8SURCQ2Fs
bGJhY2tzPikgT1ZFUlJJREUgeyB9CisgICAgdmlydHVhbCB2b2lkIG9wZW5DdXJzb3IoaW50NjRf
dCB0cmFuc2FjdGlvbklkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGludDY0X3QgaW5kZXhJZCwg
UGFzc1JlZlB0cjxJREJLZXlSYW5nZT4sIEluZGV4ZWREQjo6Q3Vyc29yRGlyZWN0aW9uLCBib29s
IGtleU9ubHksIFRhc2tUeXBlLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4pIE9WRVJSSURFIHsg
fQogICAgIHZpcnR1YWwgdm9pZCBjb3VudChpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGludDY0X3Qg
aW5kZXhJZCwgaW50NjRfdCB0cmFuc2FjdGlvbklkLCBQYXNzUmVmUHRyPElEQktleVJhbmdlPiwg
UGFzc1JlZlB0cjxJREJDYWxsYmFja3M+KSBPVkVSUklERSB7IH0KICAgICB2aXJ0dWFsIHZvaWQg
Z2V0KGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgaW50NjRfdCBpbmRleElkLCBpbnQ2NF90IHRyYW5z
YWN0aW9uSWQsIFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+LCBib29sIGtleU9ubHksIFBhc3NSZWZQ
dHI8SURCQ2FsbGJhY2tzPikgT1ZFUlJJREUgeyB9CiAgICAgdmlydHVhbCB2b2lkIHB1dChpbnQ2
NF90IHRyYW5zYWN0aW9uSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgUGFzc1JlZlB0cjxTaGFy
ZWRCdWZmZXI+LCBQYXNzUmVmUHRyPElEQktleT4sIFB1dE1vZGUsIFBhc3NSZWZQdHI8SURCQ2Fs
bGJhY2tzPiwgY29uc3QgVmVjdG9yPGludDY0X3Q+JiBpbmRleElkcywgY29uc3QgVmVjdG9yPElu
ZGV4S2V5cz4mKSBPVkVSUklERSB7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vdGVzdHMvSURCRmFrZUJhY2tpbmdTdG9yZS5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90
ZXN0cy9JREJGYWtlQmFja2luZ1N0b3JlLmgKaW5kZXggM2VkNzI0YmI0ZWIwYTJiYmY4OGI2NDYx
YTUyZmY0MjdiNjhlYmIzMi4uZWVmYzY0OGFkMjNhNDVjMmNjODdjMjRjYmNiMzQyMTYyMWQ3NGU2
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9JREJGYWtlQmFja2lu
Z1N0b3JlLmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9JREJGYWtlQmFja2lu
Z1N0b3JlLmgKQEAgLTUxLDEwICs1MSwxMCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRl
bGV0ZUluZGV4KFRyYW5zYWN0aW9uKiwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVj
dFN0b3JlSWQsIGludDY0X3QgaW5kZXhJZCkgT1ZFUlJJREUgeyB9CiAgICAgdmlydHVhbCB2b2lk
IHB1dEluZGV4RGF0YUZvclJlY29yZChUcmFuc2FjdGlvbiosIGludDY0X3QgZGF0YWJhc2VJZCwg
aW50NjRfdCBvYmplY3RTdG9yZUlkLCBpbnQ2NF90IGluZGV4SWQsIGNvbnN0IElEQktleSYsIGNv
bnN0IFJlY29yZElkZW50aWZpZXImKSBPVkVSUklERSB7IH0KIAotICAgIHZpcnR1YWwgUGFzc1Jl
ZlB0cjxDdXJzb3I+IG9wZW5PYmplY3RTdG9yZUtleUN1cnNvcihUcmFuc2FjdGlvbiosIGludDY0
X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBjb25zdCBJREJLZXlSYW5nZSos
IElEQkN1cnNvcjo6RGlyZWN0aW9uKSBPVkVSUklERSB7IHJldHVybiBQYXNzUmVmUHRyPEN1cnNv
cj4oKTsgfQotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxDdXJzb3I+IG9wZW5PYmplY3RTdG9yZUN1
cnNvcihUcmFuc2FjdGlvbiosIGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9y
ZUlkLCBjb25zdCBJREJLZXlSYW5nZSosIElEQkN1cnNvcjo6RGlyZWN0aW9uKSBPVkVSUklERSB7
IHJldHVybiBQYXNzUmVmUHRyPEN1cnNvcj4oKTsgfQotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxD
dXJzb3I+IG9wZW5JbmRleEtleUN1cnNvcihUcmFuc2FjdGlvbiosIGludDY0X3QgZGF0YWJhc2VJ
ZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBpbnQ2NF90IGluZGV4SWQsIGNvbnN0IElEQktleVJh
bmdlKiwgSURCQ3Vyc29yOjpEaXJlY3Rpb24pIE9WRVJSSURFIHsgcmV0dXJuIFBhc3NSZWZQdHI8
Q3Vyc29yPigpOyB9Ci0gICAgdmlydHVhbCBQYXNzUmVmUHRyPEN1cnNvcj4gb3BlbkluZGV4Q3Vy
c29yKFRyYW5zYWN0aW9uKiwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3Jl
SWQsIGludDY0X3QgaW5kZXhJZCwgY29uc3QgSURCS2V5UmFuZ2UqLCBJREJDdXJzb3I6OkRpcmVj
dGlvbikgT1ZFUlJJREUgeyByZXR1cm4gUGFzc1JlZlB0cjxDdXJzb3I+KCk7IH0KKyAgICB2aXJ0
dWFsIFBhc3NSZWZQdHI8Q3Vyc29yPiBvcGVuT2JqZWN0U3RvcmVLZXlDdXJzb3IoVHJhbnNhY3Rp
b24qLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgY29uc3QgSURC
S2V5UmFuZ2UqLCBJbmRleGVkREI6OkN1cnNvckRpcmVjdGlvbikgT1ZFUlJJREUgeyByZXR1cm4g
UGFzc1JlZlB0cjxDdXJzb3I+KCk7IH0KKyAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8Q3Vyc29yPiBv
cGVuT2JqZWN0U3RvcmVDdXJzb3IoVHJhbnNhY3Rpb24qLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGlu
dDY0X3Qgb2JqZWN0U3RvcmVJZCwgY29uc3QgSURCS2V5UmFuZ2UqLCBJbmRleGVkREI6OkN1cnNv
ckRpcmVjdGlvbikgT1ZFUlJJREUgeyByZXR1cm4gUGFzc1JlZlB0cjxDdXJzb3I+KCk7IH0KKyAg
ICB2aXJ0dWFsIFBhc3NSZWZQdHI8Q3Vyc29yPiBvcGVuSW5kZXhLZXlDdXJzb3IoVHJhbnNhY3Rp
b24qLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgaW50NjRfdCBp
bmRleElkLCBjb25zdCBJREJLZXlSYW5nZSosIEluZGV4ZWREQjo6Q3Vyc29yRGlyZWN0aW9uKSBP
VkVSUklERSB7IHJldHVybiBQYXNzUmVmUHRyPEN1cnNvcj4oKTsgfQorICAgIHZpcnR1YWwgUGFz
c1JlZlB0cjxDdXJzb3I+IG9wZW5JbmRleEN1cnNvcihUcmFuc2FjdGlvbiosIGludDY0X3QgZGF0
YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBpbnQ2NF90IGluZGV4SWQsIGNvbnN0IElE
QktleVJhbmdlKiwgSW5kZXhlZERCOjpDdXJzb3JEaXJlY3Rpb24pIE9WRVJSSURFIHsgcmV0dXJu
IFBhc3NSZWZQdHI8Q3Vyc29yPigpOyB9CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>190876</attachid>
            <date>2013-02-28 20:43:22 -0800</date>
            <delta_ts>2013-02-28 20:49:19 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-110653-20130228203934.patch</filename>
            <type>text/plain</type>
            <size>90601</size>
            <attacher name="Alec Flett">alecflett</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ0MjYxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTcyNTUyMTIzZWQ2Yzhk
OWUxODg0ZjFiMGQwZWQ5YzVkMjg3NjNjZC4uMzI1MDQ5MTYxNjlhZTlhNzhlMDRlY2NlN2NmNDc3
ZjdmNmZmNTcxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisyMDEzLTAyLTIyICBBbGVj
IEZsZXR0ICA8YWxlY2ZsZXR0QGNocm9taXVtLm9yZz4KKworICAgICAgICBJbmRleGVkREI6IFBy
b3Blcmx5IHJlZmFjdG9yIGZyb250ZW5kL2JhY2tlbmQgY29kZSBieSAjaW5jbHVkZXMKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExMDY1MworCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEluZGV4ZWREQiBoYXMg
YSBkaXN0aW5jdCBiYWNrZW5kIGFuZCBmcm9udGVuZCwgd2l0aCB3ZWxsIGRlZmluZWQKKyAgICAg
ICAgKkludGVyZmFjZSAvICpDYWxsYmFja3MgY2xhc3NlcyBkaXN0aW5ndWlzaGluZyB0aGVtLCBy
ZXNwZWN0aXZlbHkuCisgICAgICAgIAorICAgICAgICBUaGlzIG1ha2VzIHN1cmUgdGhhdCB0aGUg
ZnJvbnRlbmQgYW5kIGJhY2tlbmQgZG8gbm90IGluY2x1ZGUgZWFjaAorICAgICAgICBvdGhlciBh
bmQgZml4ZXMgYnVpbGQgcHJvYmxlbXMgdGhhdCBvY2N1cnJlZCBhcyBhIHJlc3VsdC4KKworICAg
ICAgICBTcGVjaWZpY2FsbHkgdGhpcyBtb3ZlcyBlbnVtcyBvdXQgb2YgSURCQ3Vyc29yIGFuZCBJ
REJUcmFuc2FjdGlvbgorICAgICAgICBpbnRvIEluZGV4ZWREQi5oIGluIGEgbmV3IFdlYkNvcmU6
OkluZGV4ZWREQiBuYW1lc3BhY2UuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCBhcyB0aGlzIGlz
IGp1c3QgYSByZWZhY3Rvci4KKwogMjAxMy0wMi0yNyAgVGllbi1SZW4gQ2hlbiAgPHRyY2hlbkBj
aHJvbWl1bS5vcmc+CiAKICAgICAgICAgTmVlZCB0byByZS1sYXlvdXQgZml4ZWQgcG9zaXRpb24g
ZWxlbWVudHMgYWZ0ZXIgc2NhbGUgd2hlbiB1c2luZyBzZXR0aW5ncygpLT5maXhlZEVsZW1lbnRz
TGF5b3V0UmVsYXRpdmVUb0ZyYW1lKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggMGZj
OWY1NjM3NzE5ZWUxY2Y3NDhlMTVmZDdmMzI0ODkzZDFhMmVmMS4uZGY0MmY2ZjNkZTM5MmM3MDAx
YjIxM2Q2ZWI1NDk0YjNmNWNmZDg2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMyBAQAorMjAxMy0wMi0yMiAgQWxlYyBGbGV0dCAgPGFsZWNmbGV0dEBjaHJvbWl1bS5v
cmc+CisKKyAgICAgICAgSW5kZXhlZERCOiBQcm9wZXJseSByZWZhY3RvciBmcm9udGVuZC9iYWNr
ZW5kIGNvZGUgYnkgI2luY2x1ZGVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xMTA2NTMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBDbGVhbiB1cCB0aGUgZnJvbnRlbmQvYmFja2VuZCBXZWJJREIqIGltcGxl
bWVudGF0aW9ucyB0bworICAgICAgICBtYXRjaCB0aGUgY2hhbmdlcyB0byB3ZWJraXQuCisKIDIw
MTMtMDItMjcgIFNlaWdvIE5vbmFrYSAgPG5vbmFAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtD
aHJvbWl1bV0gU2hvdWxkIG5vdCByZXR1cm4gV2ViVGV4dElucHV0VHlwZU5vbmUgZm9yIGRhdGUg
aW5wdXQgZWxlbWVudC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxp
c3QuYW0gYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCmluZGV4IDVjYjc4MzAy
NWJkMTM0NDI0MGUzMzZlZTZkNzcxNWQyMTI1NjkxNzEuLjg1OTZjNTQ4ZjhlNDE4NDQ4MTA0NTUx
ZmM1YzMyYWNhNDIwM2Q2MjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxl
Lmxpc3QuYW0KKysrIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQpAQCAtMTkx
Nyw2ICsxOTE3LDcgQEAgd2ViY29yZV9tb2R1bGVzX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmggXAogCVNvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL0lEQlZlcnNpb25DaGFuZ2VFdmVudC5jcHAgXAogCVNvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlZlcnNpb25DaGFuZ2VFdmVudC5oIFwKKwlTb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JbmRleGVkREIuaCBcCiAJU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvUGFnZUdyb3VwSW5kZXhlZERhdGFiYXNlLmNwcCBcCiAJU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvUGFnZUdyb3VwSW5kZXhlZERhdGFiYXNlLmgg
XAogCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL1dvcmtlckNvbnRleHRJbmRleGVk
RGF0YWJhc2UuY3BwIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL0lEQkJhY2tpbmdTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9JREJCYWNraW5nU3RvcmUuY3BwCmluZGV4IDM3MGNjMTU5NWZmZmY3Y2ZhMTllMDQ3MWZhNGFl
YjI1NzM5M2NmZTYuLjE2MGVkMmQxNTAwZGU1NTQ1OWI0NGZiMmEzMGQzMDA2YWZmZjBlMjIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkJhY2tpbmdTdG9y
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQmFja2luZ1N0
b3JlLmNwcApAQCAtMTI3OSw3ICsxMjc5LDcgQEAgYm9vbCBJREJCYWNraW5nU3RvcmU6OkN1cnNv
cjo6Y29udGludWVGdW5jdGlvbihjb25zdCBJREJLZXkqIGtleSwgSXRlcmF0b3JTdGF0ZQogewog
ICAgIFJlZlB0cjxJREJLZXk+IHByZXZpb3VzS2V5ID0gbV9jdXJyZW50S2V5OwogCi0gICAgLy8g
V2hlbiBpdGVyYXRpbmcgd2l0aCBQUkVWX05PX0RVUExJQ0FURSwgc3BlYyByZXF1aXJlcyB0aGF0
IHRoZQorICAgIC8vIFdoZW4gaXRlcmF0aW5nIHdpdGggUHJldk5vRHVwbGljYXRlLCBzcGVjIHJl
cXVpcmVzIHRoYXQgdGhlCiAgICAgLy8gdmFsdWUgd2UgeWllbGQgZm9yIGVhY2gga2V5IGlzIHRo
ZSBmaXJzdCBkdXBsaWNhdGUgaW4gZm9yd2FyZHMKICAgICAvLyBvcmRlci4KICAgICBSZWZQdHI8
SURCS2V5PiBsYXN0RHVwbGljYXRlS2V5OwpAQCAtMTY4OSwxMiArMTY4OSwxMiBAQCBib29sIElu
ZGV4Q3Vyc29ySW1wbDo6bG9hZEN1cnJlbnRSb3coKQogICAgIHJldHVybiB0cnVlOwogfQogCi1i
b29sIG9iamVjdFN0b3JlQ3Vyc29yT3B0aW9ucyhMZXZlbERCVHJhbnNhY3Rpb24qIHRyYW5zYWN0
aW9uLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgY29uc3QgSURC
S2V5UmFuZ2UqIHJhbmdlLCBJREJDdXJzb3I6OkRpcmVjdGlvbiBkaXJlY3Rpb24sIElEQkJhY2tp
bmdTdG9yZTo6Q3Vyc29yOjpDdXJzb3JPcHRpb25zJiBjdXJzb3JPcHRpb25zKQorYm9vbCBvYmpl
Y3RTdG9yZUN1cnNvck9wdGlvbnMoTGV2ZWxEQlRyYW5zYWN0aW9uKiB0cmFuc2FjdGlvbiwgaW50
NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGNvbnN0IElEQktleVJhbmdl
KiByYW5nZSwgSW5kZXhlZERCOjpDdXJzb3JEaXJlY3Rpb24gZGlyZWN0aW9uLCBJREJCYWNraW5n
U3RvcmU6OkN1cnNvcjo6Q3Vyc29yT3B0aW9ucyYgY3Vyc29yT3B0aW9ucykKIHsKICAgICBib29s
IGxvd2VyQm91bmQgPSByYW5nZSAmJiByYW5nZS0+bG93ZXIoKTsKICAgICBib29sIHVwcGVyQm91
bmQgPSByYW5nZSAmJiByYW5nZS0+dXBwZXIoKTsKLSAgICBjdXJzb3JPcHRpb25zLmZvcndhcmQg
PSAoZGlyZWN0aW9uID09IElEQkN1cnNvcjo6TkVYVF9OT19EVVBMSUNBVEUgfHwgZGlyZWN0aW9u
ID09IElEQkN1cnNvcjo6TkVYVCk7Ci0gICAgY3Vyc29yT3B0aW9ucy51bmlxdWUgPSAoZGlyZWN0
aW9uID09IElEQkN1cnNvcjo6TkVYVF9OT19EVVBMSUNBVEUgfHwgZGlyZWN0aW9uID09IElEQkN1
cnNvcjo6UFJFVl9OT19EVVBMSUNBVEUpOworICAgIGN1cnNvck9wdGlvbnMuZm9yd2FyZCA9IChk
aXJlY3Rpb24gPT0gSW5kZXhlZERCOjpDdXJzb3JOZXh0Tm9EdXBsaWNhdGUgfHwgZGlyZWN0aW9u
ID09IEluZGV4ZWREQjo6Q3Vyc29yTmV4dCk7CisgICAgY3Vyc29yT3B0aW9ucy51bmlxdWUgPSAo
ZGlyZWN0aW9uID09IEluZGV4ZWREQjo6Q3Vyc29yTmV4dE5vRHVwbGljYXRlIHx8IGRpcmVjdGlv
biA9PSBJbmRleGVkREI6OkN1cnNvclByZXZOb0R1cGxpY2F0ZSk7CiAKICAgICBpZiAoIWxvd2Vy
Qm91bmQpIHsKICAgICAgICAgY3Vyc29yT3B0aW9ucy5sb3dLZXkgPSBPYmplY3RTdG9yZURhdGFL
ZXk6OmVuY29kZShkYXRhYmFzZUlkLCBvYmplY3RTdG9yZUlkLCBtaW5JREJLZXkoKSk7CkBAIC0x
NzM2LDEzICsxNzM2LDEzIEBAIGJvb2wgb2JqZWN0U3RvcmVDdXJzb3JPcHRpb25zKExldmVsREJU
cmFuc2FjdGlvbiogdHJhbnNhY3Rpb24sIGludDY0X3QgZGF0YWJhc2VJCiAgICAgcmV0dXJuIHRy
dWU7CiB9CiAKLWJvb2wgaW5kZXhDdXJzb3JPcHRpb25zKExldmVsREJUcmFuc2FjdGlvbiogdHJh
bnNhY3Rpb24sIGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBpbnQ2
NF90IGluZGV4SWQsIGNvbnN0IElEQktleVJhbmdlKiByYW5nZSwgSURCQ3Vyc29yOjpEaXJlY3Rp
b24gZGlyZWN0aW9uLCBJREJCYWNraW5nU3RvcmU6OkN1cnNvcjo6Q3Vyc29yT3B0aW9ucyYgY3Vy
c29yT3B0aW9ucykKK2Jvb2wgaW5kZXhDdXJzb3JPcHRpb25zKExldmVsREJUcmFuc2FjdGlvbiog
dHJhbnNhY3Rpb24sIGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBp
bnQ2NF90IGluZGV4SWQsIGNvbnN0IElEQktleVJhbmdlKiByYW5nZSwgSW5kZXhlZERCOjpDdXJz
b3JEaXJlY3Rpb24gZGlyZWN0aW9uLCBJREJCYWNraW5nU3RvcmU6OkN1cnNvcjo6Q3Vyc29yT3B0
aW9ucyYgY3Vyc29yT3B0aW9ucykKIHsKICAgICBBU1NFUlQodHJhbnNhY3Rpb24pOwogICAgIGJv
b2wgbG93ZXJCb3VuZCA9IHJhbmdlICYmIHJhbmdlLT5sb3dlcigpOwogICAgIGJvb2wgdXBwZXJC
b3VuZCA9IHJhbmdlICYmIHJhbmdlLT51cHBlcigpOwotICAgIGN1cnNvck9wdGlvbnMuZm9yd2Fy
ZCA9IChkaXJlY3Rpb24gPT0gSURCQ3Vyc29yOjpORVhUX05PX0RVUExJQ0FURSB8fCBkaXJlY3Rp
b24gPT0gSURCQ3Vyc29yOjpORVhUKTsKLSAgICBjdXJzb3JPcHRpb25zLnVuaXF1ZSA9IChkaXJl
Y3Rpb24gPT0gSURCQ3Vyc29yOjpORVhUX05PX0RVUExJQ0FURSB8fCBkaXJlY3Rpb24gPT0gSURC
Q3Vyc29yOjpQUkVWX05PX0RVUExJQ0FURSk7CisgICAgY3Vyc29yT3B0aW9ucy5mb3J3YXJkID0g
KGRpcmVjdGlvbiA9PSBJbmRleGVkREI6OkN1cnNvck5leHROb0R1cGxpY2F0ZSB8fCBkaXJlY3Rp
b24gPT0gSW5kZXhlZERCOjpDdXJzb3JOZXh0KTsKKyAgICBjdXJzb3JPcHRpb25zLnVuaXF1ZSA9
IChkaXJlY3Rpb24gPT0gSW5kZXhlZERCOjpDdXJzb3JOZXh0Tm9EdXBsaWNhdGUgfHwgZGlyZWN0
aW9uID09IEluZGV4ZWREQjo6Q3Vyc29yUHJldk5vRHVwbGljYXRlKTsKIAogICAgIGlmICghbG93
ZXJCb3VuZCkgewogICAgICAgICBjdXJzb3JPcHRpb25zLmxvd0tleSA9IEluZGV4RGF0YUtleTo6
ZW5jb2RlTWluS2V5KGRhdGFiYXNlSWQsIG9iamVjdFN0b3JlSWQsIGluZGV4SWQpOwpAQCAtMTc3
OSw3ICsxNzc5LDcgQEAgYm9vbCBpbmRleEN1cnNvck9wdGlvbnMoTGV2ZWxEQlRyYW5zYWN0aW9u
KiB0cmFuc2FjdGlvbiwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQKICAgICByZXR1cm4gdHJ1ZTsK
IH0KIAotUGFzc1JlZlB0cjxJREJCYWNraW5nU3RvcmU6OkN1cnNvcj4gSURCQmFja2luZ1N0b3Jl
OjpvcGVuT2JqZWN0U3RvcmVDdXJzb3IoSURCQmFja2luZ1N0b3JlOjpUcmFuc2FjdGlvbiogdHJh
bnNhY3Rpb24sIGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBjb25z
dCBJREJLZXlSYW5nZSogcmFuZ2UsIElEQkN1cnNvcjo6RGlyZWN0aW9uIGRpcmVjdGlvbikKK1Bh
c3NSZWZQdHI8SURCQmFja2luZ1N0b3JlOjpDdXJzb3I+IElEQkJhY2tpbmdTdG9yZTo6b3Blbk9i
amVjdFN0b3JlQ3Vyc29yKElEQkJhY2tpbmdTdG9yZTo6VHJhbnNhY3Rpb24qIHRyYW5zYWN0aW9u
LCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgY29uc3QgSURCS2V5
UmFuZ2UqIHJhbmdlLCBJbmRleGVkREI6OkN1cnNvckRpcmVjdGlvbiBkaXJlY3Rpb24pCiB7CiAg
ICAgSURCX1RSQUNFKCJJREJCYWNraW5nU3RvcmU6Om9wZW5PYmplY3RTdG9yZUN1cnNvciIpOwog
ICAgIExldmVsREJUcmFuc2FjdGlvbiogbGV2ZWxEQlRyYW5zYWN0aW9uID0gSURCQmFja2luZ1N0
b3JlOjpUcmFuc2FjdGlvbjo6bGV2ZWxEQlRyYW5zYWN0aW9uRnJvbSh0cmFuc2FjdGlvbik7CkBA
IC0xNzkzLDcgKzE3OTMsNyBAQCBQYXNzUmVmUHRyPElEQkJhY2tpbmdTdG9yZTo6Q3Vyc29yPiBJ
REJCYWNraW5nU3RvcmU6Om9wZW5PYmplY3RTdG9yZUN1cnNvcihJREJCYQogICAgIHJldHVybiBj
dXJzb3IucmVsZWFzZSgpOwogfQogCi1QYXNzUmVmUHRyPElEQkJhY2tpbmdTdG9yZTo6Q3Vyc29y
PiBJREJCYWNraW5nU3RvcmU6Om9wZW5PYmplY3RTdG9yZUtleUN1cnNvcihJREJCYWNraW5nU3Rv
cmU6OlRyYW5zYWN0aW9uKiB0cmFuc2FjdGlvbiwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90
IG9iamVjdFN0b3JlSWQsIGNvbnN0IElEQktleVJhbmdlKiByYW5nZSwgSURCQ3Vyc29yOjpEaXJl
Y3Rpb24gZGlyZWN0aW9uKQorUGFzc1JlZlB0cjxJREJCYWNraW5nU3RvcmU6OkN1cnNvcj4gSURC
QmFja2luZ1N0b3JlOjpvcGVuT2JqZWN0U3RvcmVLZXlDdXJzb3IoSURCQmFja2luZ1N0b3JlOjpU
cmFuc2FjdGlvbiogdHJhbnNhY3Rpb24sIGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmpl
Y3RTdG9yZUlkLCBjb25zdCBJREJLZXlSYW5nZSogcmFuZ2UsIEluZGV4ZWREQjo6Q3Vyc29yRGly
ZWN0aW9uIGRpcmVjdGlvbikKIHsKICAgICBJREJfVFJBQ0UoIklEQkJhY2tpbmdTdG9yZTo6b3Bl
bk9iamVjdFN0b3JlS2V5Q3Vyc29yIik7CiAgICAgTGV2ZWxEQlRyYW5zYWN0aW9uKiBsZXZlbERC
VHJhbnNhY3Rpb24gPSBJREJCYWNraW5nU3RvcmU6OlRyYW5zYWN0aW9uOjpsZXZlbERCVHJhbnNh
Y3Rpb25Gcm9tKHRyYW5zYWN0aW9uKTsKQEAgLTE4MDcsNyArMTgwNyw3IEBAIFBhc3NSZWZQdHI8
SURCQmFja2luZ1N0b3JlOjpDdXJzb3I+IElEQkJhY2tpbmdTdG9yZTo6b3Blbk9iamVjdFN0b3Jl
S2V5Q3Vyc29yKElECiAgICAgcmV0dXJuIGN1cnNvci5yZWxlYXNlKCk7CiB9CiAKLVBhc3NSZWZQ
dHI8SURCQmFja2luZ1N0b3JlOjpDdXJzb3I+IElEQkJhY2tpbmdTdG9yZTo6b3BlbkluZGV4S2V5
Q3Vyc29yKElEQkJhY2tpbmdTdG9yZTo6VHJhbnNhY3Rpb24qIHRyYW5zYWN0aW9uLCBpbnQ2NF90
IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgaW50NjRfdCBpbmRleElkLCBjb25z
dCBJREJLZXlSYW5nZSogcmFuZ2UsIElEQkN1cnNvcjo6RGlyZWN0aW9uIGRpcmVjdGlvbikKK1Bh
c3NSZWZQdHI8SURCQmFja2luZ1N0b3JlOjpDdXJzb3I+IElEQkJhY2tpbmdTdG9yZTo6b3Blbklu
ZGV4S2V5Q3Vyc29yKElEQkJhY2tpbmdTdG9yZTo6VHJhbnNhY3Rpb24qIHRyYW5zYWN0aW9uLCBp
bnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgaW50NjRfdCBpbmRleElk
LCBjb25zdCBJREJLZXlSYW5nZSogcmFuZ2UsIEluZGV4ZWREQjo6Q3Vyc29yRGlyZWN0aW9uIGRp
cmVjdGlvbikKIHsKICAgICBJREJfVFJBQ0UoIklEQkJhY2tpbmdTdG9yZTo6b3BlbkluZGV4S2V5
Q3Vyc29yIik7CiAgICAgTGV2ZWxEQlRyYW5zYWN0aW9uKiBsZXZlbERCVHJhbnNhY3Rpb24gPSBJ
REJCYWNraW5nU3RvcmU6OlRyYW5zYWN0aW9uOjpsZXZlbERCVHJhbnNhY3Rpb25Gcm9tKHRyYW5z
YWN0aW9uKTsKQEAgLTE4MjEsNyArMTgyMSw3IEBAIFBhc3NSZWZQdHI8SURCQmFja2luZ1N0b3Jl
OjpDdXJzb3I+IElEQkJhY2tpbmdTdG9yZTo6b3BlbkluZGV4S2V5Q3Vyc29yKElEQkJhY2tpCiAg
ICAgcmV0dXJuIGN1cnNvci5yZWxlYXNlKCk7CiB9CiAKLVBhc3NSZWZQdHI8SURCQmFja2luZ1N0
b3JlOjpDdXJzb3I+IElEQkJhY2tpbmdTdG9yZTo6b3BlbkluZGV4Q3Vyc29yKElEQkJhY2tpbmdT
dG9yZTo6VHJhbnNhY3Rpb24qIHRyYW5zYWN0aW9uLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0
X3Qgb2JqZWN0U3RvcmVJZCwgaW50NjRfdCBpbmRleElkLCBjb25zdCBJREJLZXlSYW5nZSogcmFu
Z2UsIElEQkN1cnNvcjo6RGlyZWN0aW9uIGRpcmVjdGlvbikKK1Bhc3NSZWZQdHI8SURCQmFja2lu
Z1N0b3JlOjpDdXJzb3I+IElEQkJhY2tpbmdTdG9yZTo6b3BlbkluZGV4Q3Vyc29yKElEQkJhY2tp
bmdTdG9yZTo6VHJhbnNhY3Rpb24qIHRyYW5zYWN0aW9uLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGlu
dDY0X3Qgb2JqZWN0U3RvcmVJZCwgaW50NjRfdCBpbmRleElkLCBjb25zdCBJREJLZXlSYW5nZSog
cmFuZ2UsIEluZGV4ZWREQjo6Q3Vyc29yRGlyZWN0aW9uIGRpcmVjdGlvbikKIHsKICAgICBJREJf
VFJBQ0UoIklEQkJhY2tpbmdTdG9yZTo6b3BlbkluZGV4Q3Vyc29yIik7CiAgICAgTGV2ZWxEQlRy
YW5zYWN0aW9uKiBsZXZlbERCVHJhbnNhY3Rpb24gPSBJREJCYWNraW5nU3RvcmU6OlRyYW5zYWN0
aW9uOjpsZXZlbERCVHJhbnNhY3Rpb25Gcm9tKHRyYW5zYWN0aW9uKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkJhY2tpbmdTdG9yZS5oIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQmFja2luZ1N0b3JlLmgKaW5kZXggOGI0OWJj
OGE0MjFjNjA2MWJlY2FmNjA3YmNlYjhlMzFjMDY3NzUzZC4uMTcyYzgyZGRmYTVkMDg0MWUxZDlk
MmExNTgxM2QyNDA4ZDFiNGYwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvSURCQmFja2luZ1N0b3JlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvSURCQmFja2luZ1N0b3JlLmgKQEAgLTI4LDggKzI4LDggQEAKIAogI2lmIEVOQUJM
RShJTkRFWEVEX0RBVEFCQVNFKQogCi0jaW5jbHVkZSAiSURCQ3Vyc29yLmgiCiAjaW5jbHVkZSAi
SURCTWV0YWRhdGEuaCIKKyNpbmNsdWRlICJJbmRleGVkREIuaCIKICNpbmNsdWRlICJMZXZlbERC
VHJhbnNhY3Rpb24uaCIKICNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1Jl
ZkNvdW50ZWQuaD4KQEAgLTEzOCwxMCArMTM4LDEwIEBAIHB1YmxpYzoKICAgICAgICAgSURCQmFj
a2luZ1N0b3JlOjpSZWNvcmRJZGVudGlmaWVyIG1fcmVjb3JkSWRlbnRpZmllcjsKICAgICB9Owog
Ci0gICAgdmlydHVhbCBQYXNzUmVmUHRyPEN1cnNvcj4gb3Blbk9iamVjdFN0b3JlS2V5Q3Vyc29y
KElEQkJhY2tpbmdTdG9yZTo6VHJhbnNhY3Rpb24qLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0
X3Qgb2JqZWN0U3RvcmVJZCwgY29uc3QgSURCS2V5UmFuZ2UqLCBJREJDdXJzb3I6OkRpcmVjdGlv
bik7Ci0gICAgdmlydHVhbCBQYXNzUmVmUHRyPEN1cnNvcj4gb3Blbk9iamVjdFN0b3JlQ3Vyc29y
KElEQkJhY2tpbmdTdG9yZTo6VHJhbnNhY3Rpb24qLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0
X3Qgb2JqZWN0U3RvcmVJZCwgY29uc3QgSURCS2V5UmFuZ2UqLCBJREJDdXJzb3I6OkRpcmVjdGlv
bik7Ci0gICAgdmlydHVhbCBQYXNzUmVmUHRyPEN1cnNvcj4gb3BlbkluZGV4S2V5Q3Vyc29yKElE
QkJhY2tpbmdTdG9yZTo6VHJhbnNhY3Rpb24qLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qg
b2JqZWN0U3RvcmVJZCwgaW50NjRfdCBpbmRleElkLCBjb25zdCBJREJLZXlSYW5nZSosIElEQkN1
cnNvcjo6RGlyZWN0aW9uKTsKLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8Q3Vyc29yPiBvcGVuSW5k
ZXhDdXJzb3IoSURCQmFja2luZ1N0b3JlOjpUcmFuc2FjdGlvbiosIGludDY0X3QgZGF0YWJhc2VJ
ZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBpbnQ2NF90IGluZGV4SWQsIGNvbnN0IElEQktleVJh
bmdlKiwgSURCQ3Vyc29yOjpEaXJlY3Rpb24pOworICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxDdXJz
b3I+IG9wZW5PYmplY3RTdG9yZUtleUN1cnNvcihJREJCYWNraW5nU3RvcmU6OlRyYW5zYWN0aW9u
KiwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGNvbnN0IElEQktl
eVJhbmdlKiwgSW5kZXhlZERCOjpDdXJzb3JEaXJlY3Rpb24pOworICAgIHZpcnR1YWwgUGFzc1Jl
ZlB0cjxDdXJzb3I+IG9wZW5PYmplY3RTdG9yZUN1cnNvcihJREJCYWNraW5nU3RvcmU6OlRyYW5z
YWN0aW9uKiwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGNvbnN0
IElEQktleVJhbmdlKiwgSW5kZXhlZERCOjpDdXJzb3JEaXJlY3Rpb24pOworICAgIHZpcnR1YWwg
UGFzc1JlZlB0cjxDdXJzb3I+IG9wZW5JbmRleEtleUN1cnNvcihJREJCYWNraW5nU3RvcmU6OlRy
YW5zYWN0aW9uKiwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGlu
dDY0X3QgaW5kZXhJZCwgY29uc3QgSURCS2V5UmFuZ2UqLCBJbmRleGVkREI6OkN1cnNvckRpcmVj
dGlvbik7CisgICAgdmlydHVhbCBQYXNzUmVmUHRyPEN1cnNvcj4gb3BlbkluZGV4Q3Vyc29yKElE
QkJhY2tpbmdTdG9yZTo6VHJhbnNhY3Rpb24qLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qg
b2JqZWN0U3RvcmVJZCwgaW50NjRfdCBpbmRleElkLCBjb25zdCBJREJLZXlSYW5nZSosIEluZGV4
ZWREQjo6Q3Vyc29yRGlyZWN0aW9uKTsKIAogICAgIGNsYXNzIFRyYW5zYWN0aW9uIHsKICAgICBw
dWJsaWM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJD
dXJzb3IuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yLmNw
cAppbmRleCA0NjhlZGJlYmE5MTExNjlhMDkzYTJlN2QyMzQ5MDg4ZmNjMjgzNmE1Li43YmIwZjUw
MGU0N2I0MjYxMzQwYTkzMjgxNThhZGU5M2UzNDg1NmM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvci5jcHAKQEAgLTQzLDcgKzQzLDcgQEAKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCi1QYXNzUmVmUHRyPElEQkN1cnNvcj4gSURCQ3Vyc29yOjpjcmVh
dGUoUGFzc1JlZlB0cjxJREJDdXJzb3JCYWNrZW5kSW50ZXJmYWNlPiBiYWNrZW5kLCBEaXJlY3Rp
b24gZGlyZWN0aW9uLCBJREJSZXF1ZXN0KiByZXF1ZXN0LCBJREJBbnkqIHNvdXJjZSwgSURCVHJh
bnNhY3Rpb24qIHRyYW5zYWN0aW9uKQorUGFzc1JlZlB0cjxJREJDdXJzb3I+IElEQkN1cnNvcjo6
Y3JlYXRlKFBhc3NSZWZQdHI8SURCQ3Vyc29yQmFja2VuZEludGVyZmFjZT4gYmFja2VuZCwgSW5k
ZXhlZERCOjpDdXJzb3JEaXJlY3Rpb24gZGlyZWN0aW9uLCBJREJSZXF1ZXN0KiByZXF1ZXN0LCBJ
REJBbnkqIHNvdXJjZSwgSURCVHJhbnNhY3Rpb24qIHRyYW5zYWN0aW9uKQogewogICAgIHJldHVy
biBhZG9wdFJlZihuZXcgSURCQ3Vyc29yKGJhY2tlbmQsIGRpcmVjdGlvbiwgcmVxdWVzdCwgc291
cmNlLCB0cmFuc2FjdGlvbikpOwogfQpAQCAtNzMsNyArNzMsNyBAQCBjb25zdCBBdG9taWNTdHJp
bmcmIElEQkN1cnNvcjo6ZGlyZWN0aW9uUHJldlVuaXF1ZSgpCiB9CiAKIAotSURCQ3Vyc29yOjpJ
REJDdXJzb3IoUGFzc1JlZlB0cjxJREJDdXJzb3JCYWNrZW5kSW50ZXJmYWNlPiBiYWNrZW5kLCBE
aXJlY3Rpb24gZGlyZWN0aW9uLCBJREJSZXF1ZXN0KiByZXF1ZXN0LCBJREJBbnkqIHNvdXJjZSwg
SURCVHJhbnNhY3Rpb24qIHRyYW5zYWN0aW9uKQorSURCQ3Vyc29yOjpJREJDdXJzb3IoUGFzc1Jl
ZlB0cjxJREJDdXJzb3JCYWNrZW5kSW50ZXJmYWNlPiBiYWNrZW5kLCBJbmRleGVkREI6OkN1cnNv
ckRpcmVjdGlvbiBkaXJlY3Rpb24sIElEQlJlcXVlc3QqIHJlcXVlc3QsIElEQkFueSogc291cmNl
LCBJREJUcmFuc2FjdGlvbiogdHJhbnNhY3Rpb24pCiAgICAgOiBtX2JhY2tlbmQoYmFja2VuZCkK
ICAgICAsIG1fcmVxdWVzdChyZXF1ZXN0KQogICAgICwgbV9kaXJlY3Rpb24oZGlyZWN0aW9uKQpA
QCAtMjA2LDcgKzIwNiw3IEBAIHZvaWQgSURCQ3Vyc29yOjpjb250aW51ZUZ1bmN0aW9uKFBhc3NS
ZWZQdHI8SURCS2V5PiBrZXksIEV4Y2VwdGlvbkNvZGUmIGVjKQogCiAgICAgaWYgKGtleSkgewog
ICAgICAgICBBU1NFUlQobV9jdXJyZW50S2V5KTsKLSAgICAgICAgaWYgKG1fZGlyZWN0aW9uID09
IElEQkN1cnNvcjo6TkVYVCB8fCBtX2RpcmVjdGlvbiA9PSBJREJDdXJzb3I6Ok5FWFRfTk9fRFVQ
TElDQVRFKSB7CisgICAgICAgIGlmIChtX2RpcmVjdGlvbiA9PSBJbmRleGVkREI6OkN1cnNvck5l
eHQgfHwgbV9kaXJlY3Rpb24gPT0gSW5kZXhlZERCOjpDdXJzb3JOZXh0Tm9EdXBsaWNhdGUpIHsK
ICAgICAgICAgICAgIGlmICghbV9jdXJyZW50S2V5LT5pc0xlc3NUaGFuKGtleS5nZXQoKSkpIHsK
ICAgICAgICAgICAgICAgICBlYyA9IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpEYXRhRXJyb3I7CiAg
ICAgICAgICAgICAgICAgcmV0dXJuOwpAQCAtMjk4LDM0ICsyOTgsMzQgQEAgUGFzc1JlZlB0cjxJ
REJPYmplY3RTdG9yZT4gSURCQ3Vyc29yOjplZmZlY3RpdmVPYmplY3RTdG9yZSgpCiAgICAgcmV0
dXJuIGluZGV4LT5vYmplY3RTdG9yZSgpOwogfQogCi1JREJDdXJzb3I6OkRpcmVjdGlvbiBJREJD
dXJzb3I6OnN0cmluZ1RvRGlyZWN0aW9uKGNvbnN0IFN0cmluZyYgZGlyZWN0aW9uU3RyaW5nLCBT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBFeGNlcHRpb25Db2RlJiBlYykKK0luZGV4
ZWREQjo6Q3Vyc29yRGlyZWN0aW9uIElEQkN1cnNvcjo6c3RyaW5nVG9EaXJlY3Rpb24oY29uc3Qg
U3RyaW5nJiBkaXJlY3Rpb25TdHJpbmcsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQs
IEV4Y2VwdGlvbkNvZGUmIGVjKQogewogICAgIGlmIChkaXJlY3Rpb25TdHJpbmcgPT0gSURCQ3Vy
c29yOjpkaXJlY3Rpb25OZXh0KCkpCi0gICAgICAgIHJldHVybiBJREJDdXJzb3I6Ok5FWFQ7Cisg
ICAgICAgIHJldHVybiBJbmRleGVkREI6OkN1cnNvck5leHQ7CiAgICAgaWYgKGRpcmVjdGlvblN0
cmluZyA9PSBJREJDdXJzb3I6OmRpcmVjdGlvbk5leHRVbmlxdWUoKSkKLSAgICAgICAgcmV0dXJu
IElEQkN1cnNvcjo6TkVYVF9OT19EVVBMSUNBVEU7CisgICAgICAgIHJldHVybiBJbmRleGVkREI6
OkN1cnNvck5leHROb0R1cGxpY2F0ZTsKICAgICBpZiAoZGlyZWN0aW9uU3RyaW5nID09IElEQkN1
cnNvcjo6ZGlyZWN0aW9uUHJldigpKQotICAgICAgICByZXR1cm4gSURCQ3Vyc29yOjpQUkVWOwor
ICAgICAgICByZXR1cm4gSW5kZXhlZERCOjpDdXJzb3JQcmV2OwogICAgIGlmIChkaXJlY3Rpb25T
dHJpbmcgPT0gSURCQ3Vyc29yOjpkaXJlY3Rpb25QcmV2VW5pcXVlKCkpCi0gICAgICAgIHJldHVy
biBJREJDdXJzb3I6OlBSRVZfTk9fRFVQTElDQVRFOworICAgICAgICByZXR1cm4gSW5kZXhlZERC
OjpDdXJzb3JQcmV2Tm9EdXBsaWNhdGU7CiAKICAgICBlYyA9IFR5cGVFcnJvcjsKLSAgICByZXR1
cm4gSURCQ3Vyc29yOjpORVhUOworICAgIHJldHVybiBJbmRleGVkREI6OkN1cnNvck5leHQ7CiB9
CiAKIGNvbnN0IEF0b21pY1N0cmluZyYgSURCQ3Vyc29yOjpkaXJlY3Rpb25Ub1N0cmluZyh1bnNp
Z25lZCBzaG9ydCBkaXJlY3Rpb24pCiB7CiAgICAgc3dpdGNoIChkaXJlY3Rpb24pIHsKLSAgICBj
YXNlIElEQkN1cnNvcjo6TkVYVDoKKyAgICBjYXNlIEluZGV4ZWREQjo6Q3Vyc29yTmV4dDoKICAg
ICAgICAgcmV0dXJuIElEQkN1cnNvcjo6ZGlyZWN0aW9uTmV4dCgpOwogCi0gICAgY2FzZSBJREJD
dXJzb3I6Ok5FWFRfTk9fRFVQTElDQVRFOgorICAgIGNhc2UgSW5kZXhlZERCOjpDdXJzb3JOZXh0
Tm9EdXBsaWNhdGU6CiAgICAgICAgIHJldHVybiBJREJDdXJzb3I6OmRpcmVjdGlvbk5leHRVbmlx
dWUoKTsKIAotICAgIGNhc2UgSURCQ3Vyc29yOjpQUkVWOgorICAgIGNhc2UgSW5kZXhlZERCOjpD
dXJzb3JQcmV2OgogICAgICAgICByZXR1cm4gSURCQ3Vyc29yOjpkaXJlY3Rpb25QcmV2KCk7CiAK
LSAgICBjYXNlIElEQkN1cnNvcjo6UFJFVl9OT19EVVBMSUNBVEU6CisgICAgY2FzZSBJbmRleGVk
REI6OkN1cnNvclByZXZOb0R1cGxpY2F0ZToKICAgICAgICAgcmV0dXJuIElEQkN1cnNvcjo6ZGly
ZWN0aW9uUHJldlVuaXF1ZSgpOwogCiAgICAgZGVmYXVsdDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvci5oIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yLmgKaW5kZXggMWM4MzE2NDAyNmRhNDRiM2YwOGVmOTNm
ZjQyZTNhYjQ1ZmZmNTkyYy4uMThkMjAwZWE2MTA2Nzc5N2VhNGM5ZWRjNTE2MWQxNWRiNGIzZGFl
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29y
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yLmgKQEAg
LTMwLDYgKzMwLDcgQEAKIAogI2luY2x1ZGUgIklEQktleS5oIgogI2luY2x1ZGUgIklEQlRyYW5z
YWN0aW9uLmgiCisjaW5jbHVkZSAiSW5kZXhlZERCLmgiCiAjaW5jbHVkZSAiU2NyaXB0VmFsdWUu
aCIKICNpbmNsdWRlICJTY3JpcHRXcmFwcGFibGUuaCIKICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0
ci5oPgpAQCAtNDksMjIgKzUwLDE1IEBAIHR5cGVkZWYgaW50IEV4Y2VwdGlvbkNvZGU7CiAKIGNs
YXNzIElEQkN1cnNvciA6IHB1YmxpYyBTY3JpcHRXcmFwcGFibGUsIHB1YmxpYyBSZWZDb3VudGVk
PElEQkN1cnNvcj4gewogcHVibGljOgotICAgIGVudW0gRGlyZWN0aW9uIHsKLSAgICAgICAgTkVY
VCA9IDAsCi0gICAgICAgIE5FWFRfTk9fRFVQTElDQVRFID0gMSwKLSAgICAgICAgUFJFViA9IDIs
Ci0gICAgICAgIFBSRVZfTk9fRFVQTElDQVRFID0gMywKLSAgICB9OwotCiAgICAgc3RhdGljIGNv
bnN0IEF0b21pY1N0cmluZyYgZGlyZWN0aW9uTmV4dCgpOwogICAgIHN0YXRpYyBjb25zdCBBdG9t
aWNTdHJpbmcmIGRpcmVjdGlvbk5leHRVbmlxdWUoKTsKICAgICBzdGF0aWMgY29uc3QgQXRvbWlj
U3RyaW5nJiBkaXJlY3Rpb25QcmV2KCk7CiAgICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYg
ZGlyZWN0aW9uUHJldlVuaXF1ZSgpOwogCi0gICAgc3RhdGljIElEQkN1cnNvcjo6RGlyZWN0aW9u
IHN0cmluZ1RvRGlyZWN0aW9uKGNvbnN0IFN0cmluZyYgbW9kZVN0cmluZywgU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCosIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICBzdGF0aWMgSW5kZXhlZERCOjpDdXJz
b3JEaXJlY3Rpb24gc3RyaW5nVG9EaXJlY3Rpb24oY29uc3QgU3RyaW5nJiBtb2RlU3RyaW5nLCBT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiwgRXhjZXB0aW9uQ29kZSYpOwogICAgIHN0YXRpYyBjb25z
dCBBdG9taWNTdHJpbmcmIGRpcmVjdGlvblRvU3RyaW5nKHVuc2lnbmVkIHNob3J0IG1vZGUpOwog
Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8SURCQ3Vyc29yPiBjcmVhdGUoUGFzc1JlZlB0cjxJREJD
dXJzb3JCYWNrZW5kSW50ZXJmYWNlPiwgRGlyZWN0aW9uLCBJREJSZXF1ZXN0KiwgSURCQW55KiBz
b3VyY2UsIElEQlRyYW5zYWN0aW9uKik7CisgICAgc3RhdGljIFBhc3NSZWZQdHI8SURCQ3Vyc29y
PiBjcmVhdGUoUGFzc1JlZlB0cjxJREJDdXJzb3JCYWNrZW5kSW50ZXJmYWNlPiwgSW5kZXhlZERC
OjpDdXJzb3JEaXJlY3Rpb24sIElEQlJlcXVlc3QqLCBJREJBbnkqIHNvdXJjZSwgSURCVHJhbnNh
Y3Rpb24qKTsKICAgICB2aXJ0dWFsIH5JREJDdXJzb3IoKTsKIAogICAgIC8vIEltcGxlbWVudCB0
aGUgSURMCkBAIC04OSw3ICs4Myw3IEBAIHB1YmxpYzoKICAgICBQYXNzUmVmUHRyPElEQktleT4g
aWRiUHJpbWFyeUtleSgpIHsgcmV0dXJuIG1fY3VycmVudFByaW1hcnlLZXk7IH0KIAogcHJvdGVj
dGVkOgotICAgIElEQkN1cnNvcihQYXNzUmVmUHRyPElEQkN1cnNvckJhY2tlbmRJbnRlcmZhY2U+
LCBEaXJlY3Rpb24sIElEQlJlcXVlc3QqLCBJREJBbnkqIHNvdXJjZSwgSURCVHJhbnNhY3Rpb24q
KTsKKyAgICBJREJDdXJzb3IoUGFzc1JlZlB0cjxJREJDdXJzb3JCYWNrZW5kSW50ZXJmYWNlPiwg
SW5kZXhlZERCOjpDdXJzb3JEaXJlY3Rpb24sIElEQlJlcXVlc3QqLCBJREJBbnkqIHNvdXJjZSwg
SURCVHJhbnNhY3Rpb24qKTsKICAgICB2aXJ0dWFsIGJvb2wgaXNLZXlDdXJzb3IoKSBjb25zdCB7
IHJldHVybiB0cnVlOyB9CiAKIHByaXZhdGU6CkBAIC05Nyw3ICs5MSw3IEBAIHByaXZhdGU6CiAK
ICAgICBSZWZQdHI8SURCQ3Vyc29yQmFja2VuZEludGVyZmFjZT4gbV9iYWNrZW5kOwogICAgIFJl
ZlB0cjxJREJSZXF1ZXN0PiBtX3JlcXVlc3Q7Ci0gICAgY29uc3QgRGlyZWN0aW9uIG1fZGlyZWN0
aW9uOworICAgIGNvbnN0IEluZGV4ZWREQjo6Q3Vyc29yRGlyZWN0aW9uIG1fZGlyZWN0aW9uOwog
ICAgIFJlZlB0cjxJREJBbnk+IG1fc291cmNlOwogICAgIFJlZlB0cjxJREJUcmFuc2FjdGlvbj4g
bV90cmFuc2FjdGlvbjsKICAgICBJREJUcmFuc2FjdGlvbjo6T3BlbkN1cnNvck5vdGlmaWVyIG1f
dHJhbnNhY3Rpb25Ob3RpZmllcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL0lEQkN1cnNvckJhY2tlbmRJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL0lEQkN1cnNvckJhY2tlbmRJbXBsLmNwcAppbmRleCAzMzJkOTAxNDI1YWIx
YmFhNGE0NGQ4ODljMWQ1ZDIxMmQ2MjgwZWQ4Li4xMzYwZmI5MDIwNWVhMTk4Zjc4YzAzMDdmOTZj
NjI5ZTk4MmZlMzU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9JREJDdXJzb3JCYWNrZW5kSW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvSURCQ3Vyc29yQmFja2VuZEltcGwuY3BwCkBAIC0zNCw3ICszNCw2IEBACiAjaW5j
bHVkZSAiSURCRGF0YWJhc2VFcnJvci5oIgogI2luY2x1ZGUgIklEQkRhdGFiYXNlRXhjZXB0aW9u
LmgiCiAjaW5jbHVkZSAiSURCS2V5UmFuZ2UuaCIKLSNpbmNsdWRlICJJREJSZXF1ZXN0LmgiCiAj
aW5jbHVkZSAiSURCVHJhY2luZy5oIgogI2luY2x1ZGUgIklEQlRyYW5zYWN0aW9uQmFja2VuZElt
cGwuaCIKICNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKQEAgLTEwMSw3ICsxMDAsNyBAQCBwcml2
YXRlOgogICAgIFJlZlB0cjxJREJDYWxsYmFja3M+IG1fY2FsbGJhY2tzOwogfTsKIAotSURCQ3Vy
c29yQmFja2VuZEltcGw6OklEQkN1cnNvckJhY2tlbmRJbXBsKFBhc3NSZWZQdHI8SURCQmFja2lu
Z1N0b3JlOjpDdXJzb3I+IGN1cnNvciwgQ3Vyc29yVHlwZSBjdXJzb3JUeXBlLCBJREJEYXRhYmFz
ZUJhY2tlbmRJbnRlcmZhY2U6OlRhc2tUeXBlIHRhc2tUeXBlLCBJREJUcmFuc2FjdGlvbkJhY2tl
bmRJbXBsKiB0cmFuc2FjdGlvbiwgaW50NjRfdCBvYmplY3RTdG9yZUlkKQorSURCQ3Vyc29yQmFj
a2VuZEltcGw6OklEQkN1cnNvckJhY2tlbmRJbXBsKFBhc3NSZWZQdHI8SURCQmFja2luZ1N0b3Jl
OjpDdXJzb3I+IGN1cnNvciwgSW5kZXhlZERCOjpDdXJzb3JUeXBlIGN1cnNvclR5cGUsIElEQkRh
dGFiYXNlQmFja2VuZEludGVyZmFjZTo6VGFza1R5cGUgdGFza1R5cGUsIElEQlRyYW5zYWN0aW9u
QmFja2VuZEltcGwqIHRyYW5zYWN0aW9uLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQpCiAgICAgOiBt
X3Rhc2tUeXBlKHRhc2tUeXBlKQogICAgICwgbV9jdXJzb3JUeXBlKGN1cnNvclR5cGUpCiAgICAg
LCBtX2RhdGFiYXNlKHRyYW5zYWN0aW9uLT5kYXRhYmFzZSgpKQpAQCAtMTYwLDcgKzE1OSw3IEBA
IHZvaWQgSURCQ3Vyc29yQmFja2VuZEltcGw6OkN1cnNvckl0ZXJhdGlvbk9wZXJhdGlvbjo6cGVy
Zm9ybShJREJUcmFuc2FjdGlvbkJhY2tlCiB2b2lkIElEQkN1cnNvckJhY2tlbmRJbXBsOjpkZWxl
dGVGdW5jdGlvbihQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gcHJwQ2FsbGJhY2tzLCBFeGNlcHRp
b25Db2RlJikKIHsKICAgICBJREJfVFJBQ0UoIklEQkN1cnNvckJhY2tlbmRJbXBsOjpkZWxldGUi
KTsKLSAgICBBU1NFUlQobV90cmFuc2FjdGlvbi0+bW9kZSgpICE9IElEQlRyYW5zYWN0aW9uOjpS
RUFEX09OTFkpOworICAgIEFTU0VSVChtX3RyYW5zYWN0aW9uLT5tb2RlKCkgIT0gSW5kZXhlZERC
OjpUcmFuc2FjdGlvblJlYWRPbmx5KTsKICAgICBSZWZQdHI8SURCS2V5UmFuZ2U+IGtleVJhbmdl
ID0gSURCS2V5UmFuZ2U6OmNyZWF0ZShtX2N1cnNvci0+cHJpbWFyeUtleSgpKTsKICAgICBtX2Rh
dGFiYXNlLT5kZWxldGVSYW5nZShtX3RyYW5zYWN0aW9uLT5pZCgpLCBtX29iamVjdFN0b3JlSWQs
IGtleVJhbmdlLnJlbGVhc2UoKSwgcHJwQ2FsbGJhY2tzKTsKIH0KQEAgLTE5NiwxMCArMTk1LDEw
IEBAIHZvaWQgSURCQ3Vyc29yQmFja2VuZEltcGw6OkN1cnNvclByZWZldGNoSXRlcmF0aW9uT3Bl
cmF0aW9uOjpwZXJmb3JtKElEQlRyYW5zYWN0CiAgICAgICAgIGZvdW5kUHJpbWFyeUtleXMuYXBw
ZW5kKG1fY3Vyc29yLT5tX2N1cnNvci0+cHJpbWFyeUtleSgpKTsKIAogICAgICAgICBzd2l0Y2gg
KG1fY3Vyc29yLT5tX2N1cnNvclR5cGUpIHsKLSAgICAgICAgY2FzZSBLZXlPbmx5OgorICAgICAg
ICBjYXNlIEluZGV4ZWREQjo6Q3Vyc29yS2V5T25seToKICAgICAgICAgICAgIGZvdW5kVmFsdWVz
LmFwcGVuZChTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpKTsKICAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICBjYXNlIEtleUFuZFZhbHVlOgorICAgICAgICBjYXNlIEluZGV4ZWREQjo6Q3Vyc29yS2V5
QW5kVmFsdWU6CiAgICAgICAgICAgICBzaXplRXN0aW1hdGUgKz0gbV9jdXJzb3ItPm1fY3Vyc29y
LT52YWx1ZSgpLT5zaXplKCk7CiAgICAgICAgICAgICBmb3VuZFZhbHVlcy5hcHBlbmQobV9jdXJz
b3ItPm1fY3Vyc29yLT52YWx1ZSgpKTsKICAgICAgICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yQmFja2VuZEltcGwuaCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvckJhY2tlbmRJbXBsLmgK
aW5kZXggNjk5ZTJmNThkNmQxNzYyMWY0Y2ExMjRmZDJlYzhiMGIxMzMxMmE0OC4uNTVlMjZiYjdk
NDQ4ZmQ0YjFlMTY1YTVjYmQzNmU4MzhjYTJlMzU0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yQmFja2VuZEltcGwuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3JCYWNrZW5kSW1wbC5oCkBAIC0zMCw3
ICszMCw2IEBACiAjaWYgRU5BQkxFKElOREVYRURfREFUQUJBU0UpCiAKICNpbmNsdWRlICJJREJC
YWNraW5nU3RvcmUuaCIKLSNpbmNsdWRlICJJREJDdXJzb3IuaCIKICNpbmNsdWRlICJJREJDdXJz
b3JCYWNrZW5kSW50ZXJmYWNlLmgiCiAjaW5jbHVkZSAiSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1w
bC5oIgogI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgpAQCAtNDUsMTEgKzQ0LDExIEBAIGNsYXNz
IElEQktleVJhbmdlOwogCiBjbGFzcyBJREJDdXJzb3JCYWNrZW5kSW1wbCA6IHB1YmxpYyBJREJD
dXJzb3JCYWNrZW5kSW50ZXJmYWNlIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxJ
REJDdXJzb3JCYWNrZW5kSW1wbD4gY3JlYXRlKFBhc3NSZWZQdHI8SURCQmFja2luZ1N0b3JlOjpD
dXJzb3I+IGN1cnNvciwgQ3Vyc29yVHlwZSBjdXJzb3JUeXBlLCBJREJUcmFuc2FjdGlvbkJhY2tl
bmRJbXBsKiB0cmFuc2FjdGlvbiwgaW50NjRfdCBvYmplY3RTdG9yZUlkKQorICAgIHN0YXRpYyBQ
YXNzUmVmUHRyPElEQkN1cnNvckJhY2tlbmRJbXBsPiBjcmVhdGUoUGFzc1JlZlB0cjxJREJCYWNr
aW5nU3RvcmU6OkN1cnNvcj4gY3Vyc29yLCBJbmRleGVkREI6OkN1cnNvclR5cGUgY3Vyc29yVHlw
ZSwgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbCogdHJhbnNhY3Rpb24sIGludDY0X3Qgb2JqZWN0
U3RvcmVJZCkKICAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgSURCQ3Vyc29yQmFj
a2VuZEltcGwoY3Vyc29yLCBjdXJzb3JUeXBlLCBJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2U6
Ok5vcm1hbFRhc2ssIHRyYW5zYWN0aW9uLCBvYmplY3RTdG9yZUlkKSk7CiAgICAgfQotICAgIHN0
YXRpYyBQYXNzUmVmUHRyPElEQkN1cnNvckJhY2tlbmRJbXBsPiBjcmVhdGUoUGFzc1JlZlB0cjxJ
REJCYWNraW5nU3RvcmU6OkN1cnNvcj4gY3Vyc29yLCBDdXJzb3JUeXBlIGN1cnNvclR5cGUsIElE
QkRhdGFiYXNlQmFja2VuZEludGVyZmFjZTo6VGFza1R5cGUgdGFza1R5cGUsIElEQlRyYW5zYWN0
aW9uQmFja2VuZEltcGwqIHRyYW5zYWN0aW9uLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQpCisgICAg
c3RhdGljIFBhc3NSZWZQdHI8SURCQ3Vyc29yQmFja2VuZEltcGw+IGNyZWF0ZShQYXNzUmVmUHRy
PElEQkJhY2tpbmdTdG9yZTo6Q3Vyc29yPiBjdXJzb3IsIEluZGV4ZWREQjo6Q3Vyc29yVHlwZSBj
dXJzb3JUeXBlLCBJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2U6OlRhc2tUeXBlIHRhc2tUeXBl
LCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsKiB0cmFuc2FjdGlvbiwgaW50NjRfdCBvYmplY3RT
dG9yZUlkKQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBJREJDdXJzb3JCYWNr
ZW5kSW1wbChjdXJzb3IsIGN1cnNvclR5cGUsIHRhc2tUeXBlLCB0cmFuc2FjdGlvbiwgb2JqZWN0
U3RvcmVJZCkpOwogICAgIH0KQEAgLTY1LDE4ICs2NCwxOCBAQCBwdWJsaWM6CiAKICAgICBQYXNz
UmVmUHRyPElEQktleT4ga2V5KCkgY29uc3QgeyByZXR1cm4gbV9jdXJzb3ItPmtleSgpOyB9CiAg
ICAgUGFzc1JlZlB0cjxJREJLZXk+IHByaW1hcnlLZXkoKSBjb25zdCB7IHJldHVybiBtX2N1cnNv
ci0+cHJpbWFyeUtleSgpOyB9Ci0gICAgUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+IHZhbHVlKCkg
Y29uc3QgeyByZXR1cm4gKG1fY3Vyc29yVHlwZSA9PSBLZXlPbmx5KSA/IDAgOiBtX2N1cnNvci0+
dmFsdWUoKTsgfQorICAgIFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiB2YWx1ZSgpIGNvbnN0IHsg
cmV0dXJuIChtX2N1cnNvclR5cGUgPT0gSW5kZXhlZERCOjpDdXJzb3JLZXlPbmx5KSA/IDAgOiBt
X2N1cnNvci0+dmFsdWUoKTsgfQogICAgIHZvaWQgY2xvc2UoKTsKIAogcHJpdmF0ZToKLSAgICBJ
REJDdXJzb3JCYWNrZW5kSW1wbChQYXNzUmVmUHRyPElEQkJhY2tpbmdTdG9yZTo6Q3Vyc29yPiwg
Q3Vyc29yVHlwZSwgSURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlOjpUYXNrVHlwZSwgSURCVHJh
bnNhY3Rpb25CYWNrZW5kSW1wbCosIGludDY0X3Qgb2JqZWN0U3RvcmVJZCk7CisgICAgSURCQ3Vy
c29yQmFja2VuZEltcGwoUGFzc1JlZlB0cjxJREJCYWNraW5nU3RvcmU6OkN1cnNvcj4sIEluZGV4
ZWREQjo6Q3Vyc29yVHlwZSwgSURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlOjpUYXNrVHlwZSwg
SURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbCosIGludDY0X3Qgb2JqZWN0U3RvcmVJZCk7CiAKICAg
ICBjbGFzcyBDdXJzb3JJdGVyYXRpb25PcGVyYXRpb247CiAgICAgY2xhc3MgQ3Vyc29yQWR2YW5j
ZU9wZXJhdGlvbjsKICAgICBjbGFzcyBDdXJzb3JQcmVmZXRjaEl0ZXJhdGlvbk9wZXJhdGlvbjsK
IAogICAgIElEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZTo6VGFza1R5cGUgbV90YXNrVHlwZTsK
LSAgICBDdXJzb3JUeXBlIG1fY3Vyc29yVHlwZTsKKyAgICBJbmRleGVkREI6OkN1cnNvclR5cGUg
bV9jdXJzb3JUeXBlOwogICAgIGNvbnN0IFJlZlB0cjxJREJEYXRhYmFzZUJhY2tlbmRJbXBsPiBt
X2RhdGFiYXNlOwogICAgIGNvbnN0IFJlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsPiBt
X3RyYW5zYWN0aW9uOwogICAgIGNvbnN0IGludDY0X3QgbV9vYmplY3RTdG9yZUlkOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yQmFja2VuZElu
dGVyZmFjZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yQmFj
a2VuZEludGVyZmFjZS5oCmluZGV4IGFlYjI5NzZiMDg2MmE3OWFkNDQzODEzZTllNzZjZmEyNmUz
OTBmMTYuLjk2M2YzMmIwMGFiMzA5M2E5Y2ZiOGJlY2FhMmVjODUxYmVjODhhYzYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvckJhY2tlbmRJbnRl
cmZhY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3JC
YWNrZW5kSW50ZXJmYWNlLmgKQEAgLTMzLDcgKzMzLDYgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCi1jbGFzcyBJREJBbnk7CiBjbGFzcyBJREJDYWxsYmFja3M7CiBjbGFzcyBJREJLZXk7CiBj
bGFzcyBJREJSZXF1ZXN0OwpAQCAtNDQsMTEgKzQzLDYgQEAgY2xhc3MgSURCQ3Vyc29yQmFja2Vu
ZEludGVyZmFjZSA6IHB1YmxpYyBSZWZDb3VudGVkPElEQkN1cnNvckJhY2tlbmRJbnRlcmZhY2U+
IHsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5JREJDdXJzb3JCYWNrZW5kSW50ZXJmYWNlKCkge30K
IAotICAgIGVudW0gQ3Vyc29yVHlwZSB7Ci0gICAgICAgIEtleUFuZFZhbHVlID0gMCwKLSAgICAg
ICAgS2V5T25seQotICAgIH07Ci0KICAgICB2aXJ0dWFsIHZvaWQgYWR2YW5jZSh1bnNpZ25lZCBs
b25nIGNvdW50LCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4sIEV4Y2VwdGlvbkNvZGUmKSA9IDA7
CiAgICAgdmlydHVhbCB2b2lkIGNvbnRpbnVlRnVuY3Rpb24oUGFzc1JlZlB0cjxJREJLZXk+IGtl
eSwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+LCBFeGNlcHRpb25Db2RlJikgPSAwOwogICAgIHZp
cnR1YWwgdm9pZCBkZWxldGVGdW5jdGlvbihQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4sIEV4Y2Vw
dGlvbkNvZGUmKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9JREJDdXJzb3JXaXRoVmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvSURCQ3Vyc29yV2l0aFZhbHVlLmNwcAppbmRleCBiOTBiYTNkOWI1MjY1MzE3MDkyYmJl
NTU4MTc1MGRjMDI3ODVkYWFhLi40MDM2MTExMDQ5ZWI1ZDkyOWFkYjIyN2M2ZmUzYTNjYmVjMzZm
MTg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJz
b3JXaXRoVmFsdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lE
QkN1cnNvcldpdGhWYWx1ZS5jcHAKQEAgLTMzLDcgKzMzLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCi1QYXNzUmVmUHRyPElEQkN1cnNvcldpdGhWYWx1ZT4gSURCQ3Vyc29yV2l0aFZhbHVl
OjpjcmVhdGUoUGFzc1JlZlB0cjxJREJDdXJzb3JCYWNrZW5kSW50ZXJmYWNlPiBiYWNrZW5kLCBE
aXJlY3Rpb24gZGlyZWN0aW9uLCBJREJSZXF1ZXN0KiByZXF1ZXN0LCBJREJBbnkqIHNvdXJjZSwg
SURCVHJhbnNhY3Rpb24qIHRyYW5zYWN0aW9uKQorUGFzc1JlZlB0cjxJREJDdXJzb3JXaXRoVmFs
dWU+IElEQkN1cnNvcldpdGhWYWx1ZTo6Y3JlYXRlKFBhc3NSZWZQdHI8SURCQ3Vyc29yQmFja2Vu
ZEludGVyZmFjZT4gYmFja2VuZCwgSW5kZXhlZERCOjpDdXJzb3JEaXJlY3Rpb24gZGlyZWN0aW9u
LCBJREJSZXF1ZXN0KiByZXF1ZXN0LCBJREJBbnkqIHNvdXJjZSwgSURCVHJhbnNhY3Rpb24qIHRy
YW5zYWN0aW9uKQogewogICAgIHJldHVybiBhZG9wdFJlZihuZXcgSURCQ3Vyc29yV2l0aFZhbHVl
KGJhY2tlbmQsIGRpcmVjdGlvbiwgcmVxdWVzdCwgc291cmNlLCB0cmFuc2FjdGlvbikpOwogfQpA
QCAtNDQsNyArNDQsNyBAQCBQYXNzUmVmUHRyPElEQkN1cnNvcldpdGhWYWx1ZT4gSURCQ3Vyc29y
V2l0aFZhbHVlOjpmcm9tQ3Vyc29yKFBhc3NSZWZQdHI8SURCQ3VycwogICAgIHJldHVybiBjdXJz
b3JXaXRoVmFsdWUucmVsZWFzZSgpOwogfQogCi1JREJDdXJzb3JXaXRoVmFsdWU6OklEQkN1cnNv
cldpdGhWYWx1ZShQYXNzUmVmUHRyPElEQkN1cnNvckJhY2tlbmRJbnRlcmZhY2U+IGJhY2tlbmQs
IERpcmVjdGlvbiBkaXJlY3Rpb24sIElEQlJlcXVlc3QqIHJlcXVlc3QsIElEQkFueSogc291cmNl
LCBJREJUcmFuc2FjdGlvbiogdHJhbnNhY3Rpb24pCitJREJDdXJzb3JXaXRoVmFsdWU6OklEQkN1
cnNvcldpdGhWYWx1ZShQYXNzUmVmUHRyPElEQkN1cnNvckJhY2tlbmRJbnRlcmZhY2U+IGJhY2tl
bmQsIEluZGV4ZWREQjo6Q3Vyc29yRGlyZWN0aW9uIGRpcmVjdGlvbiwgSURCUmVxdWVzdCogcmVx
dWVzdCwgSURCQW55KiBzb3VyY2UsIElEQlRyYW5zYWN0aW9uKiB0cmFuc2FjdGlvbikKICAgICA6
IElEQkN1cnNvcihiYWNrZW5kLCBkaXJlY3Rpb24sIHJlcXVlc3QsIHNvdXJjZSwgdHJhbnNhY3Rp
b24pCiB7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9J
REJDdXJzb3JXaXRoVmFsdWUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lE
QkN1cnNvcldpdGhWYWx1ZS5oCmluZGV4IGNiYjg1MGExY2QwMmYwYWEyMDk1MmYyY2ZkYjg4OGZj
OGMwMjg2NTAuLjE1ODIzYTA2MjRhMzFkZTlmMmMyZGQ0M2RjMGM5MzNmNGM3YzYwNGUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvcldpdGhWYWx1
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvcldpdGhW
YWx1ZS5oCkBAIC0zNCw3ICszNCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgSURC
Q3Vyc29yV2l0aFZhbHVlIDogcHVibGljIElEQkN1cnNvciB7CiBwdWJsaWM6Ci0gICAgc3RhdGlj
IFBhc3NSZWZQdHI8SURCQ3Vyc29yV2l0aFZhbHVlPiBjcmVhdGUoUGFzc1JlZlB0cjxJREJDdXJz
b3JCYWNrZW5kSW50ZXJmYWNlPiwgRGlyZWN0aW9uLCBJREJSZXF1ZXN0KiwgSURCQW55KiBzb3Vy
Y2UsIElEQlRyYW5zYWN0aW9uKik7CisgICAgc3RhdGljIFBhc3NSZWZQdHI8SURCQ3Vyc29yV2l0
aFZhbHVlPiBjcmVhdGUoUGFzc1JlZlB0cjxJREJDdXJzb3JCYWNrZW5kSW50ZXJmYWNlPiwgSW5k
ZXhlZERCOjpDdXJzb3JEaXJlY3Rpb24sIElEQlJlcXVlc3QqLCBJREJBbnkqIHNvdXJjZSwgSURC
VHJhbnNhY3Rpb24qKTsKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxJREJDdXJzb3JXaXRoVmFsdWU+
IGZyb21DdXJzb3IoUGFzc1JlZlB0cjxJREJDdXJzb3I+KTsKICAgICB2aXJ0dWFsIH5JREJDdXJz
b3JXaXRoVmFsdWUoKTsKIApAQCAtNDUsNyArNDUsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgdmlydHVh
bCBib29sIGlzS2V5Q3Vyc29yKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gZmFsc2U7IH0KIAog
cHJpdmF0ZToKLSAgICBJREJDdXJzb3JXaXRoVmFsdWUoUGFzc1JlZlB0cjxJREJDdXJzb3JCYWNr
ZW5kSW50ZXJmYWNlPiwgRGlyZWN0aW9uLCBJREJSZXF1ZXN0KiwgSURCQW55KiBzb3VyY2UsIElE
QlRyYW5zYWN0aW9uKik7CisgICAgSURCQ3Vyc29yV2l0aFZhbHVlKFBhc3NSZWZQdHI8SURCQ3Vy
c29yQmFja2VuZEludGVyZmFjZT4sIEluZGV4ZWREQjo6Q3Vyc29yRGlyZWN0aW9uLCBJREJSZXF1
ZXN0KiwgSURCQW55KiBzb3VyY2UsIElEQlRyYW5zYWN0aW9uKik7CiB9OwogCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9JREJEYXRhYmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJE
YXRhYmFzZS5jcHAKaW5kZXggYzk5YThkNWM4NGZlMTUyMThmYjA3ZTg4MjMyNDEwYjAxZTkzNzFk
My4uOWNlNjY1YmI3YTdjNmRkN2FmOTg0Yjc0NjgxNWIxODBiNDQ2NGY5YSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2UuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlLmNwcApAQCAtMjI3LDcg
KzIyNyw3IEBAIFBhc3NSZWZQdHI8SURCVHJhbnNhY3Rpb24+IElEQkRhdGFiYXNlOjp0cmFuc2Fj
dGlvbihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250CiAgICAgICAgIHJldHVybiAwOwogICAg
IH0KIAotICAgIElEQlRyYW5zYWN0aW9uOjpNb2RlIG1vZGUgPSBJREJUcmFuc2FjdGlvbjo6c3Ry
aW5nVG9Nb2RlKG1vZGVTdHJpbmcsIGNvbnRleHQsIGVjKTsKKyAgICBJbmRleGVkREI6OlRyYW5z
YWN0aW9uTW9kZSBtb2RlID0gSURCVHJhbnNhY3Rpb246OnN0cmluZ1RvTW9kZShtb2RlU3RyaW5n
LCBjb250ZXh0LCBlYyk7CiAgICAgaWYgKGVjKQogICAgICAgICByZXR1cm4gMDsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2UuaCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlLmgKaW5kZXggZGUxM2I2
N2ZiZThmMGQ4NmNhOTU0NmEyYjAzMjMwMDEyYTIyMjllMC4uOGRkNTJjOTYwMDVmMmMwMWYzMGNl
NzdlMTUwOTkwODI0OTI4NTNlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvSURCRGF0YWJhc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9JREJEYXRhYmFzZS5oCkBAIC0zMSwxMSArMzEsMTEgQEAKICNpbmNsdWRlICJEaWN0aW9u
YXJ5LmgiCiAjaW5jbHVkZSAiRXZlbnQuaCIKICNpbmNsdWRlICJFdmVudFRhcmdldC5oIgotI2lu
Y2x1ZGUgIklEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZS5oIgogI2luY2x1ZGUgIklEQkRhdGFi
YXNlQ2FsbGJhY2tzLmgiCiAjaW5jbHVkZSAiSURCTWV0YWRhdGEuaCIKICNpbmNsdWRlICJJREJP
YmplY3RTdG9yZS5oIgogI2luY2x1ZGUgIklEQlRyYW5zYWN0aW9uLmgiCisjaW5jbHVkZSAiSW5k
ZXhlZERCLmgiCiAjaW5jbHVkZSAiU2NyaXB0V3JhcHBhYmxlLmgiCiAjaW5jbHVkZSA8d3RmL1Bh
c3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VCYWNrZW5kSW1wbC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmRJbXBs
LmNwcAppbmRleCA5ODBkMTRmNGZlNjU5NjZlMjA1ZjE2NDcyMDc2ZGI1ODg3MDBkYTY3Li4yYzMw
MzIwYTU0ZjM0Y2MyMzI4NzFjZGNmN2IzY2RhYjFjNDdjYzY2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmRJbXBsLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmRJbXBs
LmNwcApAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUgIklEQkN1cnNvckJhY2tlbmRJbXBsLmgi
CiAjaW5jbHVkZSAiSURCRGF0YWJhc2VFeGNlcHRpb24uaCIKICNpbmNsdWRlICJJREJGYWN0b3J5
QmFja2VuZEltcGwuaCIKKyNpbmNsdWRlICJJREJLZXlSYW5nZS5oIgogI2luY2x1ZGUgIklEQk9i
amVjdFN0b3JlQmFja2VuZEltcGwuaCIKICNpbmNsdWRlICJJREJUcmFjaW5nLmgiCiAjaW5jbHVk
ZSAiSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbC5oIgpAQCAtMjM4LDEzICsyMzksMTMgQEAgcHJp
dmF0ZToKIAogY2xhc3MgR2V0T3BlcmF0aW9uIDogcHVibGljIElEQlRyYW5zYWN0aW9uQmFja2Vu
ZEltcGw6Ok9wZXJhdGlvbiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NPd25QdHI8SURCVHJh
bnNhY3Rpb25CYWNrZW5kSW1wbDo6T3BlcmF0aW9uPiBjcmVhdGUoUGFzc1JlZlB0cjxJREJCYWNr
aW5nU3RvcmU+IGJhY2tpbmdTdG9yZSwgY29uc3QgSURCRGF0YWJhc2VNZXRhZGF0YSYgbWV0YWRh
dGEsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgaW50NjRfdCBpbmRleElkLCBQYXNzUmVmUHRyPElE
QktleVJhbmdlPiBrZXlSYW5nZSwgSURCQ3Vyc29yQmFja2VuZEludGVyZmFjZTo6Q3Vyc29yVHlw
ZSBjdXJzb3JUeXBlLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tzKQorICAgIHN0
YXRpYyBQYXNzT3duUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGw6Ok9wZXJhdGlvbj4gY3Jl
YXRlKFBhc3NSZWZQdHI8SURCQmFja2luZ1N0b3JlPiBiYWNraW5nU3RvcmUsIGNvbnN0IElEQkRh
dGFiYXNlTWV0YWRhdGEmIG1ldGFkYXRhLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGludDY0X3Qg
aW5kZXhJZCwgUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4ga2V5UmFuZ2UsIEluZGV4ZWREQjo6Q3Vy
c29yVHlwZSBjdXJzb3JUeXBlLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tzKQog
ICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBHZXRPcGVyYXRpb24oYmFja2luZ1N0
b3JlLCBtZXRhZGF0YSwgb2JqZWN0U3RvcmVJZCwgaW5kZXhJZCwga2V5UmFuZ2UsIGN1cnNvclR5
cGUsIGNhbGxiYWNrcykpOwogICAgIH0KICAgICB2aXJ0dWFsIHZvaWQgcGVyZm9ybShJREJUcmFu
c2FjdGlvbkJhY2tlbmRJbXBsKik7CiBwcml2YXRlOgotICAgIEdldE9wZXJhdGlvbihQYXNzUmVm
UHRyPElEQkJhY2tpbmdTdG9yZT4gYmFja2luZ1N0b3JlLCBjb25zdCBJREJEYXRhYmFzZU1ldGFk
YXRhJiBtZXRhZGF0YSwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBpbnQ2NF90IGluZGV4SWQsIFBh
c3NSZWZQdHI8SURCS2V5UmFuZ2U+IGtleVJhbmdlLCBJREJDdXJzb3JCYWNrZW5kSW50ZXJmYWNl
OjpDdXJzb3JUeXBlIGN1cnNvclR5cGUsIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFj
a3MpCisgICAgR2V0T3BlcmF0aW9uKFBhc3NSZWZQdHI8SURCQmFja2luZ1N0b3JlPiBiYWNraW5n
U3RvcmUsIGNvbnN0IElEQkRhdGFiYXNlTWV0YWRhdGEmIG1ldGFkYXRhLCBpbnQ2NF90IG9iamVj
dFN0b3JlSWQsIGludDY0X3QgaW5kZXhJZCwgUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4ga2V5UmFu
Z2UsIEluZGV4ZWREQjo6Q3Vyc29yVHlwZSBjdXJzb3JUeXBlLCBQYXNzUmVmUHRyPElEQkNhbGxi
YWNrcz4gY2FsbGJhY2tzKQogICAgICAgICA6IG1fYmFja2luZ1N0b3JlKGJhY2tpbmdTdG9yZSkK
ICAgICAgICAgLCBtX2RhdGFiYXNlSWQobWV0YWRhdGEuaWQpCiAgICAgICAgICwgbV9vYmplY3RT
dG9yZUlkKG9iamVjdFN0b3JlSWQpCkBAIC0yNjYsNyArMjY3LDcgQEAgcHJpdmF0ZToKICAgICBj
b25zdCBJREJLZXlQYXRoIG1fa2V5UGF0aDsKICAgICBjb25zdCBib29sIG1fYXV0b0luY3JlbWVu
dDsKICAgICBjb25zdCBSZWZQdHI8SURCS2V5UmFuZ2U+IG1fa2V5UmFuZ2U7Ci0gICAgY29uc3Qg
SURCQ3Vyc29yQmFja2VuZEludGVyZmFjZTo6Q3Vyc29yVHlwZSBtX2N1cnNvclR5cGU7CisgICAg
Y29uc3QgSW5kZXhlZERCOjpDdXJzb3JUeXBlIG1fY3Vyc29yVHlwZTsKICAgICBjb25zdCBSZWZQ
dHI8SURCQ2FsbGJhY2tzPiBtX2NhbGxiYWNrczsKIH07CiAKQEAgLTMyMCwxMyArMzIxLDEzIEBA
IHByaXZhdGU6CiAKIGNsYXNzIE9wZW5DdXJzb3JPcGVyYXRpb24gOiBwdWJsaWMgSURCVHJhbnNh
Y3Rpb25CYWNrZW5kSW1wbDo6T3BlcmF0aW9uIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc093
blB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsOjpPcGVyYXRpb24+IGNyZWF0ZShQYXNzUmVm
UHRyPElEQkJhY2tpbmdTdG9yZT4gYmFja2luZ1N0b3JlLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGlu
dDY0X3Qgb2JqZWN0U3RvcmVJZCwgaW50NjRfdCBpbmRleElkLCBQYXNzUmVmUHRyPElEQktleVJh
bmdlPiBrZXlSYW5nZSwgdW5zaWduZWQgc2hvcnQgZGlyZWN0aW9uLCBJREJDdXJzb3JCYWNrZW5k
SW50ZXJmYWNlOjpDdXJzb3JUeXBlIGN1cnNvclR5cGUsIElEQkRhdGFiYXNlQmFja2VuZEludGVy
ZmFjZTo6VGFza1R5cGUgdGFza1R5cGUsIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFj
a3MpCisgICAgc3RhdGljIFBhc3NPd25QdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbDo6T3Bl
cmF0aW9uPiBjcmVhdGUoUGFzc1JlZlB0cjxJREJCYWNraW5nU3RvcmU+IGJhY2tpbmdTdG9yZSwg
aW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGludDY0X3QgaW5kZXhJ
ZCwgUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4ga2V5UmFuZ2UsIEluZGV4ZWREQjo6Q3Vyc29yRGly
ZWN0aW9uIGRpcmVjdGlvbiwgSW5kZXhlZERCOjpDdXJzb3JUeXBlIGN1cnNvclR5cGUsIElEQkRh
dGFiYXNlQmFja2VuZEludGVyZmFjZTo6VGFza1R5cGUgdGFza1R5cGUsIFBhc3NSZWZQdHI8SURC
Q2FsbGJhY2tzPiBjYWxsYmFja3MpCiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3
IE9wZW5DdXJzb3JPcGVyYXRpb24oYmFja2luZ1N0b3JlLCBkYXRhYmFzZUlkLCBvYmplY3RTdG9y
ZUlkLCBpbmRleElkLCBrZXlSYW5nZSwgZGlyZWN0aW9uLCBjdXJzb3JUeXBlLCB0YXNrVHlwZSwg
Y2FsbGJhY2tzKSk7CiAgICAgfQogICAgIHZpcnR1YWwgdm9pZCBwZXJmb3JtKElEQlRyYW5zYWN0
aW9uQmFja2VuZEltcGwqKTsKIHByaXZhdGU6Ci0gICAgT3BlbkN1cnNvck9wZXJhdGlvbihQYXNz
UmVmUHRyPElEQkJhY2tpbmdTdG9yZT4gYmFja2luZ1N0b3JlLCBpbnQ2NF90IGRhdGFiYXNlSWQs
IGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgaW50NjRfdCBpbmRleElkLCBQYXNzUmVmUHRyPElEQktl
eVJhbmdlPiBrZXlSYW5nZSwgdW5zaWduZWQgc2hvcnQgZGlyZWN0aW9uLCBJREJDdXJzb3JCYWNr
ZW5kSW50ZXJmYWNlOjpDdXJzb3JUeXBlIGN1cnNvclR5cGUsIElEQkRhdGFiYXNlQmFja2VuZElu
dGVyZmFjZTo6VGFza1R5cGUgdGFza1R5cGUsIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxs
YmFja3MpCisgICAgT3BlbkN1cnNvck9wZXJhdGlvbihQYXNzUmVmUHRyPElEQkJhY2tpbmdTdG9y
ZT4gYmFja2luZ1N0b3JlLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJ
ZCwgaW50NjRfdCBpbmRleElkLCBQYXNzUmVmUHRyPElEQktleVJhbmdlPiBrZXlSYW5nZSwgSW5k
ZXhlZERCOjpDdXJzb3JEaXJlY3Rpb24gZGlyZWN0aW9uLCBJbmRleGVkREI6OkN1cnNvclR5cGUg
Y3Vyc29yVHlwZSwgSURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlOjpUYXNrVHlwZSB0YXNrVHlw
ZSwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcykKICAgICAgICAgOiBtX2JhY2tp
bmdTdG9yZShiYWNraW5nU3RvcmUpCiAgICAgICAgICwgbV9kYXRhYmFzZUlkKGRhdGFiYXNlSWQp
CiAgICAgICAgICwgbV9vYmplY3RTdG9yZUlkKG9iamVjdFN0b3JlSWQpCkBAIC0zNDQsOCArMzQ1
LDggQEAgcHJpdmF0ZToKICAgICBjb25zdCBpbnQ2NF90IG1fb2JqZWN0U3RvcmVJZDsKICAgICBj
b25zdCBpbnQ2NF90IG1faW5kZXhJZDsKICAgICBjb25zdCBQYXNzUmVmUHRyPElEQktleVJhbmdl
PiBtX2tleVJhbmdlOwotICAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IG1fZGlyZWN0aW9uOwotICAg
IGNvbnN0IElEQkN1cnNvckJhY2tlbmRJbnRlcmZhY2U6OkN1cnNvclR5cGUgbV9jdXJzb3JUeXBl
OworICAgIGNvbnN0IEluZGV4ZWREQjo6Q3Vyc29yRGlyZWN0aW9uIG1fZGlyZWN0aW9uOworICAg
IGNvbnN0IEluZGV4ZWREQjo6Q3Vyc29yVHlwZSBtX2N1cnNvclR5cGU7CiAgICAgY29uc3QgSURC
RGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlOjpUYXNrVHlwZSBtX3Rhc2tUeXBlOwogICAgIGNvbnN0
IFJlZlB0cjxJREJDYWxsYmFja3M+IG1fY2FsbGJhY2tzOwogfTsKQEAgLTU1NSw3ICs1NTYsNyBA
QCB2b2lkIElEQkRhdGFiYXNlQmFja2VuZEltcGw6OmNyZWF0ZU9iamVjdFN0b3JlKGludDY0X3Qg
dHJhbnNhY3Rpb25JZCwgaW50NjRfdCBvYgogICAgIElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGwq
IHRyYW5zYWN0aW9uID0gbV90cmFuc2FjdGlvbnMuZ2V0KHRyYW5zYWN0aW9uSWQpOwogICAgIGlm
ICghdHJhbnNhY3Rpb24pCiAgICAgICAgIHJldHVybjsKLSAgICBBU1NFUlQodHJhbnNhY3Rpb24t
Pm1vZGUoKSA9PSBJREJUcmFuc2FjdGlvbjo6VkVSU0lPTl9DSEFOR0UpOworICAgIEFTU0VSVCh0
cmFuc2FjdGlvbi0+bW9kZSgpID09IEluZGV4ZWREQjo6VHJhbnNhY3Rpb25WZXJzaW9uQ2hhbmdl
KTsKIAogICAgIEFTU0VSVCghbV9tZXRhZGF0YS5vYmplY3RTdG9yZXMuY29udGFpbnMob2JqZWN0
U3RvcmVJZCkpOwogICAgIElEQk9iamVjdFN0b3JlTWV0YWRhdGEgb2JqZWN0U3RvcmVNZXRhZGF0
YShuYW1lLCBvYmplY3RTdG9yZUlkLCBrZXlQYXRoLCBhdXRvSW5jcmVtZW50LCBJREJEYXRhYmFz
ZUJhY2tlbmRJbnRlcmZhY2U6Ok1pbmltdW1JbmRleElkKTsKQEAgLTU4MSw3ICs1ODIsNyBAQCB2
b2lkIElEQkRhdGFiYXNlQmFja2VuZEltcGw6OmRlbGV0ZU9iamVjdFN0b3JlKGludDY0X3QgdHJh
bnNhY3Rpb25JZCwgaW50NjRfdCBvYgogICAgIElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGwqIHRy
YW5zYWN0aW9uID0gbV90cmFuc2FjdGlvbnMuZ2V0KHRyYW5zYWN0aW9uSWQpOwogICAgIGlmICgh
dHJhbnNhY3Rpb24pCiAgICAgICAgIHJldHVybjsKLSAgICBBU1NFUlQodHJhbnNhY3Rpb24tPm1v
ZGUoKSA9PSBJREJUcmFuc2FjdGlvbjo6VkVSU0lPTl9DSEFOR0UpOworICAgIEFTU0VSVCh0cmFu
c2FjdGlvbi0+bW9kZSgpID09IEluZGV4ZWREQjo6VHJhbnNhY3Rpb25WZXJzaW9uQ2hhbmdlKTsK
IAogICAgIEFTU0VSVChtX21ldGFkYXRhLm9iamVjdFN0b3Jlcy5jb250YWlucyhvYmplY3RTdG9y
ZUlkKSk7CiAgICAgY29uc3QgSURCT2JqZWN0U3RvcmVNZXRhZGF0YSYgb2JqZWN0U3RvcmVNZXRh
ZGF0YSA9IG1fbWV0YWRhdGEub2JqZWN0U3RvcmVzLmdldChvYmplY3RTdG9yZUlkKTsKQEAgLTU5
Niw3ICs1OTcsNyBAQCB2b2lkIElEQkRhdGFiYXNlQmFja2VuZEltcGw6OmNyZWF0ZUluZGV4KGlu
dDY0X3QgdHJhbnNhY3Rpb25JZCwgaW50NjRfdCBvYmplY3RTdAogICAgIElEQlRyYW5zYWN0aW9u
QmFja2VuZEltcGwqIHRyYW5zYWN0aW9uID0gbV90cmFuc2FjdGlvbnMuZ2V0KHRyYW5zYWN0aW9u
SWQpOwogICAgIGlmICghdHJhbnNhY3Rpb24pCiAgICAgICAgIHJldHVybjsKLSAgICBBU1NFUlQo
dHJhbnNhY3Rpb24tPm1vZGUoKSA9PSBJREJUcmFuc2FjdGlvbjo6VkVSU0lPTl9DSEFOR0UpOwor
ICAgIEFTU0VSVCh0cmFuc2FjdGlvbi0+bW9kZSgpID09IEluZGV4ZWREQjo6VHJhbnNhY3Rpb25W
ZXJzaW9uQ2hhbmdlKTsKIAogICAgIEFTU0VSVChtX21ldGFkYXRhLm9iamVjdFN0b3Jlcy5jb250
YWlucyhvYmplY3RTdG9yZUlkKSk7CiAgICAgY29uc3QgSURCT2JqZWN0U3RvcmVNZXRhZGF0YSBv
YmplY3RTdG9yZSA9IG1fbWV0YWRhdGEub2JqZWN0U3RvcmVzLmdldChvYmplY3RTdG9yZUlkKTsK
QEAgLTYzMSw3ICs2MzIsNyBAQCB2b2lkIElEQkRhdGFiYXNlQmFja2VuZEltcGw6OmRlbGV0ZUlu
ZGV4KGludDY0X3QgdHJhbnNhY3Rpb25JZCwgaW50NjRfdCBvYmplY3RTdAogICAgIElEQlRyYW5z
YWN0aW9uQmFja2VuZEltcGwqIHRyYW5zYWN0aW9uID0gbV90cmFuc2FjdGlvbnMuZ2V0KHRyYW5z
YWN0aW9uSWQpOwogICAgIGlmICghdHJhbnNhY3Rpb24pCiAgICAgICAgIHJldHVybjsKLSAgICBB
U1NFUlQodHJhbnNhY3Rpb24tPm1vZGUoKSA9PSBJREJUcmFuc2FjdGlvbjo6VkVSU0lPTl9DSEFO
R0UpOworICAgIEFTU0VSVCh0cmFuc2FjdGlvbi0+bW9kZSgpID09IEluZGV4ZWREQjo6VHJhbnNh
Y3Rpb25WZXJzaW9uQ2hhbmdlKTsKIAogICAgIEFTU0VSVChtX21ldGFkYXRhLm9iamVjdFN0b3Jl
cy5jb250YWlucyhvYmplY3RTdG9yZUlkKSk7CiAgICAgY29uc3QgSURCT2JqZWN0U3RvcmVNZXRh
ZGF0YSBvYmplY3RTdG9yZSA9IG1fbWV0YWRhdGEub2JqZWN0U3RvcmVzLmdldChvYmplY3RTdG9y
ZUlkKTsKQEAgLTY4NSw3ICs2ODYsNyBAQCB2b2lkIElEQkRhdGFiYXNlQmFja2VuZEltcGw6Omdl
dChpbnQ2NF90IHRyYW5zYWN0aW9uSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgaQogICAgIGlm
ICghdHJhbnNhY3Rpb24pCiAgICAgICAgIHJldHVybjsKIAotICAgIHRyYW5zYWN0aW9uLT5zY2hl
ZHVsZVRhc2soR2V0T3BlcmF0aW9uOjpjcmVhdGUobV9iYWNraW5nU3RvcmUsIG1fbWV0YWRhdGEs
IG9iamVjdFN0b3JlSWQsIGluZGV4SWQsIGtleVJhbmdlLCBrZXlPbmx5ID8gSURCQ3Vyc29yQmFj
a2VuZEludGVyZmFjZTo6S2V5T25seSA6IElEQkN1cnNvckJhY2tlbmRJbnRlcmZhY2U6OktleUFu
ZFZhbHVlLCBjYWxsYmFja3MpKTsKKyAgICB0cmFuc2FjdGlvbi0+c2NoZWR1bGVUYXNrKEdldE9w
ZXJhdGlvbjo6Y3JlYXRlKG1fYmFja2luZ1N0b3JlLCBtX21ldGFkYXRhLCBvYmplY3RTdG9yZUlk
LCBpbmRleElkLCBrZXlSYW5nZSwga2V5T25seSA/IEluZGV4ZWREQjo6Q3Vyc29yS2V5T25seSA6
IEluZGV4ZWREQjo6Q3Vyc29yS2V5QW5kVmFsdWUsIGNhbGxiYWNrcykpOwogfQogCiB2b2lkIEdl
dE9wZXJhdGlvbjo6cGVyZm9ybShJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsKiB0cmFuc2FjdGlv
bikKQEAgLTY5OSwxNiArNzAwLDE2IEBAIHZvaWQgR2V0T3BlcmF0aW9uOjpwZXJmb3JtKElEQlRy
YW5zYWN0aW9uQmFja2VuZEltcGwqIHRyYW5zYWN0aW9uKQogICAgIGVsc2UgewogICAgICAgICBS
ZWZQdHI8SURCQmFja2luZ1N0b3JlOjpDdXJzb3I+IGJhY2tpbmdTdG9yZUN1cnNvcjsKICAgICAg
ICAgaWYgKG1faW5kZXhJZCA9PSBJREJJbmRleE1ldGFkYXRhOjpJbnZhbGlkSWQpIHsKLSAgICAg
ICAgICAgIEFTU0VSVChtX2N1cnNvclR5cGUgIT0gSURCQ3Vyc29yQmFja2VuZEludGVyZmFjZTo6
S2V5T25seSk7CisgICAgICAgICAgICBBU1NFUlQobV9jdXJzb3JUeXBlICE9IEluZGV4ZWREQjo6
Q3Vyc29yS2V5T25seSk7CiAgICAgICAgICAgICAvLyBPYmplY3RTdG9yZSBSZXRyaWV2YWwgT3Bl
cmF0aW9uCi0gICAgICAgICAgICBiYWNraW5nU3RvcmVDdXJzb3IgPSBtX2JhY2tpbmdTdG9yZS0+
b3Blbk9iamVjdFN0b3JlQ3Vyc29yKHRyYW5zYWN0aW9uLT5iYWNraW5nU3RvcmVUcmFuc2FjdGlv
bigpLCBtX2RhdGFiYXNlSWQsIG1fb2JqZWN0U3RvcmVJZCwgbV9rZXlSYW5nZS5nZXQoKSwgSURC
Q3Vyc29yOjpORVhUKTsKKyAgICAgICAgICAgIGJhY2tpbmdTdG9yZUN1cnNvciA9IG1fYmFja2lu
Z1N0b3JlLT5vcGVuT2JqZWN0U3RvcmVDdXJzb3IodHJhbnNhY3Rpb24tPmJhY2tpbmdTdG9yZVRy
YW5zYWN0aW9uKCksIG1fZGF0YWJhc2VJZCwgbV9vYmplY3RTdG9yZUlkLCBtX2tleVJhbmdlLmdl
dCgpLCBJbmRleGVkREI6OkN1cnNvck5leHQpOwogICAgICAgICB9IGVsc2UgewotICAgICAgICAg
ICAgaWYgKG1fY3Vyc29yVHlwZSA9PSBJREJDdXJzb3JCYWNrZW5kSW50ZXJmYWNlOjpLZXlPbmx5
KQorICAgICAgICAgICAgaWYgKG1fY3Vyc29yVHlwZSA9PSBJbmRleGVkREI6OkN1cnNvcktleU9u
bHkpCiAgICAgICAgICAgICAgICAgLy8gSW5kZXggVmFsdWUgUmV0cmlldmFsIE9wZXJhdGlvbgot
ICAgICAgICAgICAgICAgIGJhY2tpbmdTdG9yZUN1cnNvciA9IG1fYmFja2luZ1N0b3JlLT5vcGVu
SW5kZXhLZXlDdXJzb3IodHJhbnNhY3Rpb24tPmJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uKCksIG1f
ZGF0YWJhc2VJZCwgbV9vYmplY3RTdG9yZUlkLCBtX2luZGV4SWQsIG1fa2V5UmFuZ2UuZ2V0KCks
IElEQkN1cnNvcjo6TkVYVCk7CisgICAgICAgICAgICAgICAgYmFja2luZ1N0b3JlQ3Vyc29yID0g
bV9iYWNraW5nU3RvcmUtPm9wZW5JbmRleEtleUN1cnNvcih0cmFuc2FjdGlvbi0+YmFja2luZ1N0
b3JlVHJhbnNhY3Rpb24oKSwgbV9kYXRhYmFzZUlkLCBtX29iamVjdFN0b3JlSWQsIG1faW5kZXhJ
ZCwgbV9rZXlSYW5nZS5nZXQoKSwgSW5kZXhlZERCOjpDdXJzb3JOZXh0KTsKICAgICAgICAgICAg
IGVsc2UKICAgICAgICAgICAgICAgICAvLyBJbmRleCBSZWZlcmVuY2VkIFZhbHVlIFJldHJpZXZh
bCBPcGVyYXRpb24KLSAgICAgICAgICAgICAgICBiYWNraW5nU3RvcmVDdXJzb3IgPSBtX2JhY2tp
bmdTdG9yZS0+b3BlbkluZGV4Q3Vyc29yKHRyYW5zYWN0aW9uLT5iYWNraW5nU3RvcmVUcmFuc2Fj
dGlvbigpLCBtX2RhdGFiYXNlSWQsIG1fb2JqZWN0U3RvcmVJZCwgbV9pbmRleElkLCBtX2tleVJh
bmdlLmdldCgpLCBJREJDdXJzb3I6Ok5FWFQpOworICAgICAgICAgICAgICAgIGJhY2tpbmdTdG9y
ZUN1cnNvciA9IG1fYmFja2luZ1N0b3JlLT5vcGVuSW5kZXhDdXJzb3IodHJhbnNhY3Rpb24tPmJh
Y2tpbmdTdG9yZVRyYW5zYWN0aW9uKCksIG1fZGF0YWJhc2VJZCwgbV9vYmplY3RTdG9yZUlkLCBt
X2luZGV4SWQsIG1fa2V5UmFuZ2UuZ2V0KCksIEluZGV4ZWREQjo6Q3Vyc29yTmV4dCk7CiAgICAg
ICAgIH0KIAogICAgICAgICBpZiAoIWJhY2tpbmdTdG9yZUN1cnNvcikgewpAQCAtNzU1LDcgKzc1
Niw3IEBAIHZvaWQgR2V0T3BlcmF0aW9uOjpwZXJmb3JtKElEQlRyYW5zYWN0aW9uQmFja2VuZElt
cGwqIHRyYW5zYWN0aW9uKQogICAgICAgICBtX2NhbGxiYWNrcy0+b25TdWNjZXNzKCk7CiAgICAg
ICAgIHJldHVybjsKICAgICB9Ci0gICAgaWYgKG1fY3Vyc29yVHlwZSA9PSBJREJDdXJzb3JCYWNr
ZW5kSW50ZXJmYWNlOjpLZXlPbmx5KSB7CisgICAgaWYgKG1fY3Vyc29yVHlwZSA9PSBJbmRleGVk
REI6OkN1cnNvcktleU9ubHkpIHsKICAgICAgICAgLy8gSW5kZXggVmFsdWUgUmV0cmlldmFsIE9w
ZXJhdGlvbgogICAgICAgICBtX2NhbGxiYWNrcy0+b25TdWNjZXNzKHByaW1hcnlLZXkuZ2V0KCkp
OwogICAgICAgICByZXR1cm47CkBAIC03ODYsNyArNzg3LDcgQEAgdm9pZCBJREJEYXRhYmFzZUJh
Y2tlbmRJbXBsOjpwdXQoaW50NjRfdCB0cmFuc2FjdGlvbklkLCBpbnQ2NF90IG9iamVjdFN0b3Jl
SWQsIFAKICAgICBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsKiB0cmFuc2FjdGlvbiA9IG1fdHJh
bnNhY3Rpb25zLmdldCh0cmFuc2FjdGlvbklkKTsKICAgICBpZiAoIXRyYW5zYWN0aW9uKQogICAg
ICAgICByZXR1cm47Ci0gICAgQVNTRVJUKHRyYW5zYWN0aW9uLT5tb2RlKCkgIT0gSURCVHJhbnNh
Y3Rpb246OlJFQURfT05MWSk7CisgICAgQVNTRVJUKHRyYW5zYWN0aW9uLT5tb2RlKCkgIT0gSW5k
ZXhlZERCOjpUcmFuc2FjdGlvblJlYWRPbmx5KTsKIAogICAgIGNvbnN0IElEQk9iamVjdFN0b3Jl
TWV0YWRhdGEgb2JqZWN0U3RvcmVNZXRhZGF0YSA9IG1fbWV0YWRhdGEub2JqZWN0U3RvcmVzLmdl
dChvYmplY3RTdG9yZUlkKTsKIApAQCAtNzk4LDcgKzc5OSw3IEBAIHZvaWQgSURCRGF0YWJhc2VC
YWNrZW5kSW1wbDo6cHV0KGludDY0X3QgdHJhbnNhY3Rpb25JZCwgaW50NjRfdCBvYmplY3RTdG9y
ZUlkLCBQCiB2b2lkIFB1dE9wZXJhdGlvbjo6cGVyZm9ybShJREJUcmFuc2FjdGlvbkJhY2tlbmRJ
bXBsKiB0cmFuc2FjdGlvbikKIHsKICAgICBJREJfVFJBQ0UoIlB1dE9wZXJhdGlvbiIpOwotICAg
IEFTU0VSVCh0cmFuc2FjdGlvbi0+bW9kZSgpICE9IElEQlRyYW5zYWN0aW9uOjpSRUFEX09OTFkp
OworICAgIEFTU0VSVCh0cmFuc2FjdGlvbi0+bW9kZSgpICE9IEluZGV4ZWREQjo6VHJhbnNhY3Rp
b25SZWFkT25seSk7CiAgICAgQVNTRVJUKG1faW5kZXhJZHMuc2l6ZSgpID09IG1faW5kZXhLZXlz
LnNpemUoKSk7CiAgICAgYm9vbCBrZXlXYXNHZW5lcmF0ZWQgPSBmYWxzZTsKIApAQCAtODcyLDcg
Kzg3Myw3IEBAIHZvaWQgSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6c2V0SW5kZXhLZXlzKGludDY0
X3QgdHJhbnNhY3Rpb25JZCwgaW50NjRfdCBvYmplY3RTCiAgICAgSURCVHJhbnNhY3Rpb25CYWNr
ZW5kSW1wbCogdHJhbnNhY3Rpb24gPSBtX3RyYW5zYWN0aW9ucy5nZXQodHJhbnNhY3Rpb25JZCk7
CiAgICAgaWYgKCF0cmFuc2FjdGlvbikKICAgICAgICAgcmV0dXJuOwotICAgIEFTU0VSVCh0cmFu
c2FjdGlvbi0+bW9kZSgpID09IElEQlRyYW5zYWN0aW9uOjpWRVJTSU9OX0NIQU5HRSk7CisgICAg
QVNTRVJUKHRyYW5zYWN0aW9uLT5tb2RlKCkgPT0gSW5kZXhlZERCOjpUcmFuc2FjdGlvblZlcnNp
b25DaGFuZ2UpOwogCiAgICAgUmVmUHRyPElEQktleT4gcHJpbWFyeUtleSA9IHBycFByaW1hcnlL
ZXk7CiAgICAgUmVmUHRyPElEQkJhY2tpbmdTdG9yZT4gc3RvcmUgPSBiYWNraW5nU3RvcmUoKTsK
QEAgLTkyOSwxNCArOTMwLDE0IEBAIHZvaWQgU2V0SW5kZXhlc1JlYWR5T3BlcmF0aW9uOjpwZXJm
b3JtKElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGwqIHRyYW5zYWN0aW9uKQogICAgICAgICB0cmFu
c2FjdGlvbi0+ZGlkQ29tcGxldGVQcmVlbXB0aXZlRXZlbnQoKTsKIH0KIAotdm9pZCBJREJEYXRh
YmFzZUJhY2tlbmRJbXBsOjpvcGVuQ3Vyc29yKGludDY0X3QgdHJhbnNhY3Rpb25JZCwgaW50NjRf
dCBvYmplY3RTdG9yZUlkLCBpbnQ2NF90IGluZGV4SWQsIFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+
IGtleVJhbmdlLCB1bnNpZ25lZCBzaG9ydCBkaXJlY3Rpb24sIGJvb2wga2V5T25seSwgVGFza1R5
cGUgdGFza1R5cGUsIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MpCit2b2lkIElE
QkRhdGFiYXNlQmFja2VuZEltcGw6Om9wZW5DdXJzb3IoaW50NjRfdCB0cmFuc2FjdGlvbklkLCBp
bnQ2NF90IG9iamVjdFN0b3JlSWQsIGludDY0X3QgaW5kZXhJZCwgUGFzc1JlZlB0cjxJREJLZXlS
YW5nZT4ga2V5UmFuZ2UsIEluZGV4ZWREQjo6Q3Vyc29yRGlyZWN0aW9uIGRpcmVjdGlvbiwgYm9v
bCBrZXlPbmx5LCBUYXNrVHlwZSB0YXNrVHlwZSwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IGNh
bGxiYWNrcykKIHsKICAgICBJREJfVFJBQ0UoIklEQkRhdGFiYXNlQmFja2VuZEltcGw6Om9wZW5D
dXJzb3IiKTsKICAgICBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsKiB0cmFuc2FjdGlvbiA9IG1f
dHJhbnNhY3Rpb25zLmdldCh0cmFuc2FjdGlvbklkKTsKICAgICBpZiAoIXRyYW5zYWN0aW9uKQog
ICAgICAgICByZXR1cm47CiAKLSAgICB0cmFuc2FjdGlvbi0+c2NoZWR1bGVUYXNrKE9wZW5DdXJz
b3JPcGVyYXRpb246OmNyZWF0ZShtX2JhY2tpbmdTdG9yZSwgaWQoKSwgb2JqZWN0U3RvcmVJZCwg
aW5kZXhJZCwga2V5UmFuZ2UsIGRpcmVjdGlvbiwga2V5T25seSA/IElEQkN1cnNvckJhY2tlbmRJ
bnRlcmZhY2U6OktleU9ubHkgOiBJREJDdXJzb3JCYWNrZW5kSW50ZXJmYWNlOjpLZXlBbmRWYWx1
ZSwgdGFza1R5cGUsIGNhbGxiYWNrcykpOworICAgIHRyYW5zYWN0aW9uLT5zY2hlZHVsZVRhc2so
T3BlbkN1cnNvck9wZXJhdGlvbjo6Y3JlYXRlKG1fYmFja2luZ1N0b3JlLCBpZCgpLCBvYmplY3RT
dG9yZUlkLCBpbmRleElkLCBrZXlSYW5nZSwgZGlyZWN0aW9uLCBrZXlPbmx5ID8gSW5kZXhlZERC
OjpDdXJzb3JLZXlPbmx5IDogSW5kZXhlZERCOjpDdXJzb3JLZXlBbmRWYWx1ZSwgdGFza1R5cGUs
IGNhbGxiYWNrcykpOwogfQogCiB2b2lkIE9wZW5DdXJzb3JPcGVyYXRpb246OnBlcmZvcm0oSURC
VHJhbnNhY3Rpb25CYWNrZW5kSW1wbCogdHJhbnNhY3Rpb24pCkBAIC05NTAsMTcgKzk1MSwxNiBA
QCB2b2lkIE9wZW5DdXJzb3JPcGVyYXRpb246OnBlcmZvcm0oSURCVHJhbnNhY3Rpb25CYWNrZW5k
SW1wbCogdHJhbnNhY3Rpb24pCiAgICAgaWYgKG1fdGFza1R5cGUgPT0gSURCRGF0YWJhc2VCYWNr
ZW5kSW50ZXJmYWNlOjpQcmVlbXB0aXZlVGFzaykKICAgICAgICAgdHJhbnNhY3Rpb24tPmFkZFBy
ZWVtcHRpdmVFdmVudCgpOwogCi0gICAgSURCQ3Vyc29yOjpEaXJlY3Rpb24gZGlyZWN0aW9uID0g
c3RhdGljX2Nhc3Q8SURCQ3Vyc29yOjpEaXJlY3Rpb24+KG1fZGlyZWN0aW9uKTsKICAgICBSZWZQ
dHI8SURCQmFja2luZ1N0b3JlOjpDdXJzb3I+IGJhY2tpbmdTdG9yZUN1cnNvcjsKICAgICBpZiAo
bV9pbmRleElkID09IElEQkluZGV4TWV0YWRhdGE6OkludmFsaWRJZCkgewotICAgICAgICBBU1NF
UlQobV9jdXJzb3JUeXBlICE9IElEQkN1cnNvckJhY2tlbmRJbnRlcmZhY2U6OktleU9ubHkpOwot
ICAgICAgICBiYWNraW5nU3RvcmVDdXJzb3IgPSBtX2JhY2tpbmdTdG9yZS0+b3Blbk9iamVjdFN0
b3JlQ3Vyc29yKHRyYW5zYWN0aW9uLT5iYWNraW5nU3RvcmVUcmFuc2FjdGlvbigpLCBtX2RhdGFi
YXNlSWQsIG1fb2JqZWN0U3RvcmVJZCwgbV9rZXlSYW5nZS5nZXQoKSwgZGlyZWN0aW9uKTsKKyAg
ICAgICAgQVNTRVJUKG1fY3Vyc29yVHlwZSAhPSBJbmRleGVkREI6OkN1cnNvcktleU9ubHkpOwor
ICAgICAgICBiYWNraW5nU3RvcmVDdXJzb3IgPSBtX2JhY2tpbmdTdG9yZS0+b3Blbk9iamVjdFN0
b3JlQ3Vyc29yKHRyYW5zYWN0aW9uLT5iYWNraW5nU3RvcmVUcmFuc2FjdGlvbigpLCBtX2RhdGFi
YXNlSWQsIG1fb2JqZWN0U3RvcmVJZCwgbV9rZXlSYW5nZS5nZXQoKSwgbV9kaXJlY3Rpb24pOwog
ICAgIH0gZWxzZSB7CiAgICAgICAgIEFTU0VSVChtX3Rhc2tUeXBlID09IElEQkRhdGFiYXNlQmFj
a2VuZEludGVyZmFjZTo6Tm9ybWFsVGFzayk7Ci0gICAgICAgIGlmIChtX2N1cnNvclR5cGUgPT0g
SURCQ3Vyc29yQmFja2VuZEludGVyZmFjZTo6S2V5T25seSkKLSAgICAgICAgICAgIGJhY2tpbmdT
dG9yZUN1cnNvciA9IG1fYmFja2luZ1N0b3JlLT5vcGVuSW5kZXhLZXlDdXJzb3IodHJhbnNhY3Rp
b24tPmJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uKCksIG1fZGF0YWJhc2VJZCwgbV9vYmplY3RTdG9y
ZUlkLCBtX2luZGV4SWQsIG1fa2V5UmFuZ2UuZ2V0KCksIGRpcmVjdGlvbik7CisgICAgICAgIGlm
IChtX2N1cnNvclR5cGUgPT0gSW5kZXhlZERCOjpDdXJzb3JLZXlPbmx5KQorICAgICAgICAgICAg
YmFja2luZ1N0b3JlQ3Vyc29yID0gbV9iYWNraW5nU3RvcmUtPm9wZW5JbmRleEtleUN1cnNvcih0
cmFuc2FjdGlvbi0+YmFja2luZ1N0b3JlVHJhbnNhY3Rpb24oKSwgbV9kYXRhYmFzZUlkLCBtX29i
amVjdFN0b3JlSWQsIG1faW5kZXhJZCwgbV9rZXlSYW5nZS5nZXQoKSwgbV9kaXJlY3Rpb24pOwog
ICAgICAgICBlbHNlCi0gICAgICAgICAgICBiYWNraW5nU3RvcmVDdXJzb3IgPSBtX2JhY2tpbmdT
dG9yZS0+b3BlbkluZGV4Q3Vyc29yKHRyYW5zYWN0aW9uLT5iYWNraW5nU3RvcmVUcmFuc2FjdGlv
bigpLCBtX2RhdGFiYXNlSWQsIG1fb2JqZWN0U3RvcmVJZCwgbV9pbmRleElkLCBtX2tleVJhbmdl
LmdldCgpLCBkaXJlY3Rpb24pOworICAgICAgICAgICAgYmFja2luZ1N0b3JlQ3Vyc29yID0gbV9i
YWNraW5nU3RvcmUtPm9wZW5JbmRleEN1cnNvcih0cmFuc2FjdGlvbi0+YmFja2luZ1N0b3JlVHJh
bnNhY3Rpb24oKSwgbV9kYXRhYmFzZUlkLCBtX29iamVjdFN0b3JlSWQsIG1faW5kZXhJZCwgbV9r
ZXlSYW5nZS5nZXQoKSwgbV9kaXJlY3Rpb24pOwogICAgIH0KIAogICAgIGlmICghYmFja2luZ1N0
b3JlQ3Vyc29yKSB7CkBAIC05OTEsOSArOTkxLDkgQEAgdm9pZCBDb3VudE9wZXJhdGlvbjo6cGVy
Zm9ybShJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsKiB0cmFuc2FjdGlvbikKICAgICBSZWZQdHI8
SURCQmFja2luZ1N0b3JlOjpDdXJzb3I+IGJhY2tpbmdTdG9yZUN1cnNvcjsKIAogICAgIGlmICht
X2luZGV4SWQgPT0gSURCSW5kZXhNZXRhZGF0YTo6SW52YWxpZElkKQotICAgICAgICBiYWNraW5n
U3RvcmVDdXJzb3IgPSBtX2JhY2tpbmdTdG9yZS0+b3Blbk9iamVjdFN0b3JlS2V5Q3Vyc29yKHRy
YW5zYWN0aW9uLT5iYWNraW5nU3RvcmVUcmFuc2FjdGlvbigpLCBtX2RhdGFiYXNlSWQsIG1fb2Jq
ZWN0U3RvcmVJZCwgbV9rZXlSYW5nZS5nZXQoKSwgSURCQ3Vyc29yOjpORVhUKTsKKyAgICAgICAg
YmFja2luZ1N0b3JlQ3Vyc29yID0gbV9iYWNraW5nU3RvcmUtPm9wZW5PYmplY3RTdG9yZUtleUN1
cnNvcih0cmFuc2FjdGlvbi0+YmFja2luZ1N0b3JlVHJhbnNhY3Rpb24oKSwgbV9kYXRhYmFzZUlk
LCBtX29iamVjdFN0b3JlSWQsIG1fa2V5UmFuZ2UuZ2V0KCksIEluZGV4ZWREQjo6Q3Vyc29yTmV4
dCk7CiAgICAgZWxzZQotICAgICAgICBiYWNraW5nU3RvcmVDdXJzb3IgPSBtX2JhY2tpbmdTdG9y
ZS0+b3BlbkluZGV4S2V5Q3Vyc29yKHRyYW5zYWN0aW9uLT5iYWNraW5nU3RvcmVUcmFuc2FjdGlv
bigpLCBtX2RhdGFiYXNlSWQsIG1fb2JqZWN0U3RvcmVJZCwgbV9pbmRleElkLCBtX2tleVJhbmdl
LmdldCgpLCBJREJDdXJzb3I6Ok5FWFQpOworICAgICAgICBiYWNraW5nU3RvcmVDdXJzb3IgPSBt
X2JhY2tpbmdTdG9yZS0+b3BlbkluZGV4S2V5Q3Vyc29yKHRyYW5zYWN0aW9uLT5iYWNraW5nU3Rv
cmVUcmFuc2FjdGlvbigpLCBtX2RhdGFiYXNlSWQsIG1fb2JqZWN0U3RvcmVJZCwgbV9pbmRleElk
LCBtX2tleVJhbmdlLmdldCgpLCBJbmRleGVkREI6OkN1cnNvck5leHQpOwogICAgIGlmICghYmFj
a2luZ1N0b3JlQ3Vyc29yKSB7CiAgICAgICAgIG1fY2FsbGJhY2tzLT5vblN1Y2Nlc3MoY291bnQp
OwogICAgICAgICByZXR1cm47CkBAIC0xMDEyLDcgKzEwMTIsNyBAQCB2b2lkIElEQkRhdGFiYXNl
QmFja2VuZEltcGw6OmRlbGV0ZVJhbmdlKGludDY0X3QgdHJhbnNhY3Rpb25JZCwgaW50NjRfdCBv
YmplY3RTdAogICAgIElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGwqIHRyYW5zYWN0aW9uID0gbV90
cmFuc2FjdGlvbnMuZ2V0KHRyYW5zYWN0aW9uSWQpOwogICAgIGlmICghdHJhbnNhY3Rpb24pCiAg
ICAgICAgIHJldHVybjsKLSAgICBBU1NFUlQodHJhbnNhY3Rpb24tPm1vZGUoKSAhPSBJREJUcmFu
c2FjdGlvbjo6UkVBRF9PTkxZKTsKKyAgICBBU1NFUlQodHJhbnNhY3Rpb24tPm1vZGUoKSAhPSBJ
bmRleGVkREI6OlRyYW5zYWN0aW9uUmVhZE9ubHkpOwogCiAgICAgdHJhbnNhY3Rpb24tPnNjaGVk
dWxlVGFzayhEZWxldGVSYW5nZU9wZXJhdGlvbjo6Y3JlYXRlKG1fYmFja2luZ1N0b3JlLCBpZCgp
LCBvYmplY3RTdG9yZUlkLCBrZXlSYW5nZSwgY2FsbGJhY2tzKSk7CiB9CkBAIC0xMDIwLDcgKzEw
MjAsNyBAQCB2b2lkIElEQkRhdGFiYXNlQmFja2VuZEltcGw6OmRlbGV0ZVJhbmdlKGludDY0X3Qg
dHJhbnNhY3Rpb25JZCwgaW50NjRfdCBvYmplY3RTdAogdm9pZCBEZWxldGVSYW5nZU9wZXJhdGlv
bjo6cGVyZm9ybShJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsKiB0cmFuc2FjdGlvbikKIHsKICAg
ICBJREJfVFJBQ0UoIkRlbGV0ZVJhbmdlT3BlcmF0aW9uIik7Ci0gICAgUmVmUHRyPElEQkJhY2tp
bmdTdG9yZTo6Q3Vyc29yPiBiYWNraW5nU3RvcmVDdXJzb3IgPSBtX2JhY2tpbmdTdG9yZS0+b3Bl
bk9iamVjdFN0b3JlQ3Vyc29yKHRyYW5zYWN0aW9uLT5iYWNraW5nU3RvcmVUcmFuc2FjdGlvbigp
LCBtX2RhdGFiYXNlSWQsIG1fb2JqZWN0U3RvcmVJZCwgbV9rZXlSYW5nZS5nZXQoKSwgSURCQ3Vy
c29yOjpORVhUKTsKKyAgICBSZWZQdHI8SURCQmFja2luZ1N0b3JlOjpDdXJzb3I+IGJhY2tpbmdT
dG9yZUN1cnNvciA9IG1fYmFja2luZ1N0b3JlLT5vcGVuT2JqZWN0U3RvcmVDdXJzb3IodHJhbnNh
Y3Rpb24tPmJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uKCksIG1fZGF0YWJhc2VJZCwgbV9vYmplY3RT
dG9yZUlkLCBtX2tleVJhbmdlLmdldCgpLCBJbmRleGVkREI6OkN1cnNvck5leHQpOwogICAgIGlm
IChiYWNraW5nU3RvcmVDdXJzb3IpIHsKICAgICAgICAgZG8gewogICAgICAgICAgICAgbV9iYWNr
aW5nU3RvcmUtPmRlbGV0ZVJlY29yZCh0cmFuc2FjdGlvbi0+YmFja2luZ1N0b3JlVHJhbnNhY3Rp
b24oKSwgbV9kYXRhYmFzZUlkLCBtX29iamVjdFN0b3JlSWQsIGJhY2tpbmdTdG9yZUN1cnNvci0+
cmVjb3JkSWRlbnRpZmllcigpKTsKQEAgLTEwMzYsNyArMTAzNiw3IEBAIHZvaWQgSURCRGF0YWJh
c2VCYWNrZW5kSW1wbDo6Y2xlYXIoaW50NjRfdCB0cmFuc2FjdGlvbklkLCBpbnQ2NF90IG9iamVj
dFN0b3JlSWQsCiAgICAgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbCogdHJhbnNhY3Rpb24gPSBt
X3RyYW5zYWN0aW9ucy5nZXQodHJhbnNhY3Rpb25JZCk7CiAgICAgaWYgKCF0cmFuc2FjdGlvbikK
ICAgICAgICAgcmV0dXJuOwotICAgIEFTU0VSVCh0cmFuc2FjdGlvbi0+bW9kZSgpICE9IElEQlRy
YW5zYWN0aW9uOjpSRUFEX09OTFkpOworICAgIEFTU0VSVCh0cmFuc2FjdGlvbi0+bW9kZSgpICE9
IEluZGV4ZWREQjo6VHJhbnNhY3Rpb25SZWFkT25seSk7CiAKICAgICB0cmFuc2FjdGlvbi0+c2No
ZWR1bGVUYXNrKENsZWFyT3BlcmF0aW9uOjpjcmVhdGUobV9iYWNraW5nU3RvcmUsIGlkKCksIG9i
amVjdFN0b3JlSWQsIGNhbGxiYWNrcykpOwogfQpAQCAtMTA3OSw3ICsxMDc5LDcgQEAgdm9pZCBJ
REJEYXRhYmFzZUJhY2tlbmRJbXBsOjpWZXJzaW9uQ2hhbmdlT3BlcmF0aW9uOjpwZXJmb3JtKElE
QlRyYW5zYWN0aW9uQmFja2UKIHZvaWQgSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6dHJhbnNhY3Rp
b25TdGFydGVkKFBhc3NSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbD4gcHJwVHJhbnNh
Y3Rpb24pCiB7CiAgICAgUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGw+IHRyYW5zYWN0
aW9uID0gcHJwVHJhbnNhY3Rpb247Ci0gICAgaWYgKHRyYW5zYWN0aW9uLT5tb2RlKCkgPT0gSURC
VHJhbnNhY3Rpb246OlZFUlNJT05fQ0hBTkdFKSB7CisgICAgaWYgKHRyYW5zYWN0aW9uLT5tb2Rl
KCkgPT0gSW5kZXhlZERCOjpUcmFuc2FjdGlvblZlcnNpb25DaGFuZ2UpIHsKICAgICAgICAgQVNT
RVJUKCFtX3J1bm5pbmdWZXJzaW9uQ2hhbmdlVHJhbnNhY3Rpb24pOwogICAgICAgICBtX3J1bm5p
bmdWZXJzaW9uQ2hhbmdlVHJhbnNhY3Rpb24gPSB0cmFuc2FjdGlvbjsKICAgICB9CkBAIC0xMDkx
LDcgKzEwOTEsNyBAQCB2b2lkIElEQkRhdGFiYXNlQmFja2VuZEltcGw6OnRyYW5zYWN0aW9uRmlu
aXNoZWQoUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbgogICAgIEFTU0VSVChtX3RyYW5z
YWN0aW9ucy5jb250YWlucyh0cmFuc2FjdGlvbi0+aWQoKSkpOwogICAgIEFTU0VSVChtX3RyYW5z
YWN0aW9ucy5nZXQodHJhbnNhY3Rpb24tPmlkKCkpID09IHRyYW5zYWN0aW9uLmdldCgpKTsKICAg
ICBtX3RyYW5zYWN0aW9ucy5yZW1vdmUodHJhbnNhY3Rpb24tPmlkKCkpOwotICAgIGlmICh0cmFu
c2FjdGlvbi0+bW9kZSgpID09IElEQlRyYW5zYWN0aW9uOjpWRVJTSU9OX0NIQU5HRSkgeworICAg
IGlmICh0cmFuc2FjdGlvbi0+bW9kZSgpID09IEluZGV4ZWREQjo6VHJhbnNhY3Rpb25WZXJzaW9u
Q2hhbmdlKSB7CiAgICAgICAgIEFTU0VSVCh0cmFuc2FjdGlvbi5nZXQoKSA9PSBtX3J1bm5pbmdW
ZXJzaW9uQ2hhbmdlVHJhbnNhY3Rpb24uZ2V0KCkpOwogICAgICAgICBtX3J1bm5pbmdWZXJzaW9u
Q2hhbmdlVHJhbnNhY3Rpb24uY2xlYXIoKTsKICAgICB9CkBAIC0xMTAwLDcgKzExMDAsNyBAQCB2
b2lkIElEQkRhdGFiYXNlQmFja2VuZEltcGw6OnRyYW5zYWN0aW9uRmluaXNoZWQoUGFzc1JlZlB0
cjxJREJUcmFuc2FjdGlvbkJhY2tlbgogdm9pZCBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjp0cmFu
c2FjdGlvbkZpbmlzaGVkQW5kQWJvcnRGaXJlZChQYXNzUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFj
a2VuZEltcGw+IHBycFRyYW5zYWN0aW9uKQogewogICAgIFJlZlB0cjxJREJUcmFuc2FjdGlvbkJh
Y2tlbmRJbXBsPiB0cmFuc2FjdGlvbiA9IHBycFRyYW5zYWN0aW9uOwotICAgIGlmICh0cmFuc2Fj
dGlvbi0+bW9kZSgpID09IElEQlRyYW5zYWN0aW9uOjpWRVJTSU9OX0NIQU5HRSkgeworICAgIGlm
ICh0cmFuc2FjdGlvbi0+bW9kZSgpID09IEluZGV4ZWREQjo6VHJhbnNhY3Rpb25WZXJzaW9uQ2hh
bmdlKSB7CiAgICAgICAgIC8vIElmIHRoaXMgd2FzIGFuIG9wZW4td2l0aC12ZXJzaW9uIGNhbGws
IHRoZXJlIHdpbGwgYmUgYSAic2Vjb25kCiAgICAgICAgIC8vIGhhbGYiIG9wZW4gY2FsbCB3YWl0
aW5nIGZvciB1cyBpbiBwcm9jZXNzUGVuZGluZ0NhbGxzLgogICAgICAgICAvLyBGSVhNRTogV2hl
biB3ZSBubyBsb25nZXIgc3VwcG9ydCBzZXRWZXJzaW9uLCBhc3NlcnQgc3VjaCBhIHRoaW5nLgpA
QCAtMTExNSw3ICsxMTE1LDcgQEAgdm9pZCBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjp0cmFuc2Fj
dGlvbkZpbmlzaGVkQW5kQWJvcnRGaXJlZChQYXNzUmVmUHRyPElEQlRyYW4KIHZvaWQgSURCRGF0
YWJhc2VCYWNrZW5kSW1wbDo6dHJhbnNhY3Rpb25GaW5pc2hlZEFuZENvbXBsZXRlRmlyZWQoUGFz
c1JlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsPiBwcnBUcmFuc2FjdGlvbikKIHsKICAg
ICBSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbD4gdHJhbnNhY3Rpb24gPSBwcnBUcmFu
c2FjdGlvbjsKLSAgICBpZiAodHJhbnNhY3Rpb24tPm1vZGUoKSA9PSBJREJUcmFuc2FjdGlvbjo6
VkVSU0lPTl9DSEFOR0UpCisgICAgaWYgKHRyYW5zYWN0aW9uLT5tb2RlKCkgPT0gSW5kZXhlZERC
OjpUcmFuc2FjdGlvblZlcnNpb25DaGFuZ2UpCiAgICAgICAgIHByb2Nlc3NQZW5kaW5nQ2FsbHMo
KTsKIH0KIApAQCAtMTE2NSw3ICsxMTY1LDcgQEAgdm9pZCBJREJEYXRhYmFzZUJhY2tlbmRJbXBs
Ojpwcm9jZXNzUGVuZGluZ0NhbGxzKCkKIAogdm9pZCBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpj
cmVhdGVUcmFuc2FjdGlvbihpbnQ2NF90IHRyYW5zYWN0aW9uSWQsIFBhc3NSZWZQdHI8SURCRGF0
YWJhc2VDYWxsYmFja3M+IGNhbGxiYWNrcywgY29uc3QgVmVjdG9yPGludDY0X3Q+JiBvYmplY3RT
dG9yZUlkcywgdW5zaWduZWQgc2hvcnQgbW9kZSkKIHsKLSAgICBSZWZQdHI8SURCVHJhbnNhY3Rp
b25CYWNrZW5kSW1wbD4gdHJhbnNhY3Rpb24gPSBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsOjpj
cmVhdGUodHJhbnNhY3Rpb25JZCwgY2FsbGJhY2tzLCBvYmplY3RTdG9yZUlkcywgc3RhdGljX2Nh
c3Q8SURCVHJhbnNhY3Rpb246Ok1vZGU+KG1vZGUpLCB0aGlzKTsKKyAgICBSZWZQdHI8SURCVHJh
bnNhY3Rpb25CYWNrZW5kSW1wbD4gdHJhbnNhY3Rpb24gPSBJREJUcmFuc2FjdGlvbkJhY2tlbmRJ
bXBsOjpjcmVhdGUodHJhbnNhY3Rpb25JZCwgY2FsbGJhY2tzLCBvYmplY3RTdG9yZUlkcywgc3Rh
dGljX2Nhc3Q8SW5kZXhlZERCOjpUcmFuc2FjdGlvbk1vZGU+KG1vZGUpLCB0aGlzKTsKICAgICBB
U1NFUlQoIW1fdHJhbnNhY3Rpb25zLmNvbnRhaW5zKHRyYW5zYWN0aW9uSWQpKTsKICAgICBtX3Ry
YW5zYWN0aW9ucy5hZGQodHJhbnNhY3Rpb25JZCwgdHJhbnNhY3Rpb24uZ2V0KCkpOwogfQpAQCAt
MTI1Nyw3ICsxMjU3LDcgQEAgdm9pZCBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpydW5JbnRWZXJz
aW9uQ2hhbmdlVHJhbnNhY3Rpb24oUGFzc1JlZlB0cjxJREJDYWxsYmEKICAgICB9CiAKICAgICBW
ZWN0b3I8aW50NjRfdD4gb2JqZWN0U3RvcmVJZHM7Ci0gICAgY3JlYXRlVHJhbnNhY3Rpb24odHJh
bnNhY3Rpb25JZCwgZGF0YWJhc2VDYWxsYmFja3MsIG9iamVjdFN0b3JlSWRzLCBJREJUcmFuc2Fj
dGlvbjo6VkVSU0lPTl9DSEFOR0UpOworICAgIGNyZWF0ZVRyYW5zYWN0aW9uKHRyYW5zYWN0aW9u
SWQsIGRhdGFiYXNlQ2FsbGJhY2tzLCBvYmplY3RTdG9yZUlkcywgSW5kZXhlZERCOjpUcmFuc2Fj
dGlvblZlcnNpb25DaGFuZ2UpOwogICAgIFJlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBs
PiB0cmFuc2FjdGlvbiA9IG1fdHJhbnNhY3Rpb25zLmdldCh0cmFuc2FjdGlvbklkKTsKIAogICAg
IHRyYW5zYWN0aW9uLT5zY2hlZHVsZVRhc2soVmVyc2lvbkNoYW5nZU9wZXJhdGlvbjo6Y3JlYXRl
KHRoaXMsIHRyYW5zYWN0aW9uSWQsIHJlcXVlc3RlZFZlcnNpb24sIGNhbGxiYWNrcywgZGF0YWJh
c2VDYWxsYmFja3MpLCBWZXJzaW9uQ2hhbmdlQWJvcnRPcGVyYXRpb246OmNyZWF0ZSh0aGlzLCBt
X21ldGFkYXRhLnZlcnNpb24sIG1fbWV0YWRhdGEuaW50VmVyc2lvbikpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VCYWNrZW5kSW1wbC5o
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VCYWNrZW5kSW1w
bC5oCmluZGV4IDFlYmM4NzgxMmU1YWU5NmRmZGI1ODc3ZDFkZjNiOTVhYjliMzAzNmQuLjM1M2Jm
YTA5MzE4OWQxZDg0YmRmYTA2OTE5OTc3NWQ1ODAxNWNiOTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQmFja2VuZEltcGwuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmRJbXBsLmgK
QEAgLTI3LDcgKzI3LDcgQEAKICNkZWZpbmUgSURCRGF0YWJhc2VCYWNrZW5kSW1wbF9oCiAKICNp
bmNsdWRlICJJREJDYWxsYmFja3MuaCIKLSNpbmNsdWRlICJJREJEYXRhYmFzZS5oIgorI2luY2x1
ZGUgIklEQk1ldGFkYXRhLmgiCiAjaW5jbHVkZSA8c3RkaW50Lmg+CiAjaW5jbHVkZSA8d3RmL0Rl
cXVlLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KQEAgLTg0LDcgKzg0LDcgQEAgcHVibGlj
OgogICAgIHZpcnR1YWwgdm9pZCBwdXQoaW50NjRfdCB0cmFuc2FjdGlvbklkLCBpbnQ2NF90IG9i
amVjdFN0b3JlSWQsIFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiB2YWx1ZSwgUGFzc1JlZlB0cjxJ
REJLZXk+LCBQdXRNb2RlLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4sIGNvbnN0IFZlY3Rvcjxp
bnQ2NF90PiYgaW5kZXhJZHMsIGNvbnN0IFZlY3RvcjxJbmRleEtleXM+JikgT1ZFUlJJREU7CiAg
ICAgdmlydHVhbCB2b2lkIHNldEluZGV4S2V5cyhpbnQ2NF90IHRyYW5zYWN0aW9uSWQsIGludDY0
X3Qgb2JqZWN0U3RvcmVJZCwgUGFzc1JlZlB0cjxJREJLZXk+IHBycFByaW1hcnlLZXksIGNvbnN0
IFZlY3RvcjxpbnQ2NF90PiYgaW5kZXhJZHMsIGNvbnN0IFZlY3RvcjxJbmRleEtleXM+JikgT1ZF
UlJJREU7CiAgICAgdmlydHVhbCB2b2lkIHNldEluZGV4ZXNSZWFkeShpbnQ2NF90IHRyYW5zYWN0
aW9uSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgY29uc3QgVmVjdG9yPGludDY0X3Q+JiBpbmRl
eElkcykgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCB2b2lkIG9wZW5DdXJzb3IoaW50NjRfdCB0cmFu
c2FjdGlvbklkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGludDY0X3QgaW5kZXhJZCwgUGFzc1Jl
ZlB0cjxJREJLZXlSYW5nZT4sIHVuc2lnbmVkIHNob3J0IGRpcmVjdGlvbiwgYm9vbCBrZXlPbmx5
LCBUYXNrVHlwZSwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+KSBPVkVSUklERTsKKyAgICB2aXJ0
dWFsIHZvaWQgb3BlbkN1cnNvcihpbnQ2NF90IHRyYW5zYWN0aW9uSWQsIGludDY0X3Qgb2JqZWN0
U3RvcmVJZCwgaW50NjRfdCBpbmRleElkLCBQYXNzUmVmUHRyPElEQktleVJhbmdlPiwgSW5kZXhl
ZERCOjpDdXJzb3JEaXJlY3Rpb24sIGJvb2wga2V5T25seSwgVGFza1R5cGUsIFBhc3NSZWZQdHI8
SURCQ2FsbGJhY2tzPikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIGNvdW50KGludDY0X3Qg
dHJhbnNhY3Rpb25JZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBpbnQ2NF90IGluZGV4SWQsIFBh
c3NSZWZQdHI8SURCS2V5UmFuZ2U+LCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4pIE9WRVJSSURF
OwogICAgIHZpcnR1YWwgdm9pZCBkZWxldGVSYW5nZShpbnQ2NF90IHRyYW5zYWN0aW9uSWQsIGlu
dDY0X3Qgb2JqZWN0U3RvcmVJZCwgUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4sIFBhc3NSZWZQdHI8
SURCQ2FsbGJhY2tzPikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIGNsZWFyKGludDY0X3Qg
dHJhbnNhY3Rpb25JZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBQYXNzUmVmUHRyPElEQkNhbGxi
YWNrcz4pIE9WRVJSSURFOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvSURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2UuaAppbmRleCBlMDAxNGVi
M2UyZGNjMmEzZjQzNDI1MDc0NDU3OTMwNWI3MTY3YzQ2Li4zZTUxY2MwNmEyMjM5YWNlOGU3OThj
NGE4MzYwMzY0YWYwYTI5NDA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2UuaApAQCAtMjYs
NyArMjYsOCBAQAogI2lmbmRlZiBJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2VfaAogI2RlZmlu
ZSBJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2VfaAogCi0jaW5jbHVkZSAiSURCVHJhbnNhY3Rp
b24uaCIKKyNpbmNsdWRlICJJREJEYXRhYmFzZUVycm9yLmgiCisjaW5jbHVkZSAiSW5kZXhlZERC
LmgiCiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRl
ZC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgpAQCAtODUsNyArODYsNyBAQCBw
dWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHB1dChpbnQ2NF90IHRyYW5zYWN0aW9uSWQsIGludDY0
X3Qgb2JqZWN0U3RvcmVJZCwgUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+IHZhbHVlLCBQYXNzUmVm
UHRyPElEQktleT4sIFB1dE1vZGUsIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiwgY29uc3QgVmVj
dG9yPGludDY0X3Q+JiBpbmRleElkcywgY29uc3QgVmVjdG9yPEluZGV4S2V5cz4mKSA9IDA7CiAg
ICAgdmlydHVhbCB2b2lkIHNldEluZGV4S2V5cyhpbnQ2NF90IHRyYW5zYWN0aW9uSWQsIGludDY0
X3Qgb2JqZWN0U3RvcmVJZCwgUGFzc1JlZlB0cjxJREJLZXk+IHBycFByaW1hcnlLZXksIGNvbnN0
IFZlY3RvcjxpbnQ2NF90PiYgaW5kZXhJZHMsIGNvbnN0IFZlY3RvcjxJbmRleEtleXM+JikgPSAw
OwogICAgIHZpcnR1YWwgdm9pZCBzZXRJbmRleGVzUmVhZHkoaW50NjRfdCB0cmFuc2FjdGlvbklk
LCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGNvbnN0IFZlY3RvcjxpbnQ2NF90PiYgaW5kZXhJZHMp
ID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgb3BlbkN1cnNvcihpbnQ2NF90IHRyYW5zYWN0aW9uSWQs
IGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgaW50NjRfdCBpbmRleElkLCBQYXNzUmVmUHRyPElEQktl
eVJhbmdlPiwgdW5zaWduZWQgc2hvcnQgZGlyZWN0aW9uLCBib29sIGtleU9ubHksIFRhc2tUeXBl
LCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4pID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgb3BlbkN1
cnNvcihpbnQ2NF90IHRyYW5zYWN0aW9uSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgaW50NjRf
dCBpbmRleElkLCBQYXNzUmVmUHRyPElEQktleVJhbmdlPiwgSW5kZXhlZERCOjpDdXJzb3JEaXJl
Y3Rpb24sIGJvb2wga2V5T25seSwgVGFza1R5cGUsIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPikg
PSAwOwogICAgIHZpcnR1YWwgdm9pZCBjb3VudChpbnQ2NF90IHRyYW5zYWN0aW9uSWQsIGludDY0
X3Qgb2JqZWN0U3RvcmVJZCwgaW50NjRfdCBpbmRleElkLCBQYXNzUmVmUHRyPElEQktleVJhbmdl
PiwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRlbGV0
ZVJhbmdlKGludDY0X3QgdHJhbnNhY3Rpb25JZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBQYXNz
UmVmUHRyPElEQktleVJhbmdlPiwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+KSA9IDA7CiAgICAg
dmlydHVhbCB2b2lkIGNsZWFyKGludDY0X3QgdHJhbnNhY3Rpb25JZCwgaW50NjRfdCBvYmplY3RT
dG9yZUlkLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4pID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkZhY3RvcnkuaCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL0lEQkZhY3RvcnkuaAppbmRleCBjYjFiN2IwYjM3NmI3YWE2ZDg0
OWM2ODQ4YjMwZTNlMWNlNjAyZWY4Li5jYzYxY2Q3YzZmYmQxMmU0ZTA5YTc3ZWM5ZGQwZGEyMGNm
ZTc3MGI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJG
YWN0b3J5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRmFjdG9y
eS5oCkBAIC0yOCw3ICsyOCw2IEBACiAjaWZuZGVmIElEQkZhY3RvcnlfaAogI2RlZmluZSBJREJG
YWN0b3J5X2gKIAotI2luY2x1ZGUgIklEQkZhY3RvcnlCYWNrZW5kSW50ZXJmYWNlLmgiCiAjaW5j
bHVkZSAiSURCT3BlbkRCUmVxdWVzdC5oIgogI2luY2x1ZGUgIlNjcmlwdFdyYXBwYWJsZS5oIgog
I2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9JREJJbmRleC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9JREJJbmRleC5jcHAKaW5kZXggYmViOTgzNmE1NGVhYTg5YTVjODdiMmE1OTE3Njg5
MjM3ZWMyNDIwZS4uZmY1ZDQzNjdiODNiOTA4NWI4MzlhNzQ2Yjg2Y2I4NjA2M2FmYjE4MyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCSW5kZXguY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkluZGV4LmNwcApAQCAtMjgs
NyArMjgsNiBAQAogCiAjaWYgRU5BQkxFKElOREVYRURfREFUQUJBU0UpCiAKLSNpbmNsdWRlICJJ
REJDdXJzb3JCYWNrZW5kSW50ZXJmYWNlLmgiCiAjaW5jbHVkZSAiSURCRGF0YWJhc2VFeGNlcHRp
b24uaCIKICNpbmNsdWRlICJJREJLZXkuaCIKICNpbmNsdWRlICJJREJLZXlSYW5nZS5oIgpAQCAt
NDAsNyArMzksNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0YXRpYyBjb25zdCB1bnNp
Z25lZCBzaG9ydCBkZWZhdWx0RGlyZWN0aW9uID0gSURCQ3Vyc29yOjpORVhUOworc3RhdGljIGNv
bnN0IHVuc2lnbmVkIHNob3J0IGRlZmF1bHREaXJlY3Rpb24gPSBJbmRleGVkREI6OkN1cnNvck5l
eHQ7CiAKIElEQkluZGV4OjpJREJJbmRleChjb25zdCBJREJJbmRleE1ldGFkYXRhJiBtZXRhZGF0
YSwgSURCT2JqZWN0U3RvcmUqIG9iamVjdFN0b3JlLCBJREJUcmFuc2FjdGlvbiogdHJhbnNhY3Rp
b24pCiAgICAgOiBtX21ldGFkYXRhKG1ldGFkYXRhKQpAQCAtNjgsMTIgKzY3LDEyIEBAIFBhc3NS
ZWZQdHI8SURCUmVxdWVzdD4gSURCSW5kZXg6Om9wZW5DdXJzb3IoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCogY29udGV4dCwgUGFzCiAgICAgICAgIGVjID0gSURCRGF0YWJhc2VFeGNlcHRpb246OlRy
YW5zYWN0aW9uSW5hY3RpdmVFcnJvcjsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQotICAgIElE
QkN1cnNvcjo6RGlyZWN0aW9uIGRpcmVjdGlvbiA9IElEQkN1cnNvcjo6c3RyaW5nVG9EaXJlY3Rp
b24oZGlyZWN0aW9uU3RyaW5nLCBjb250ZXh0LCBlYyk7CisgICAgSW5kZXhlZERCOjpDdXJzb3JE
aXJlY3Rpb24gZGlyZWN0aW9uID0gSURCQ3Vyc29yOjpzdHJpbmdUb0RpcmVjdGlvbihkaXJlY3Rp
b25TdHJpbmcsIGNvbnRleHQsIGVjKTsKICAgICBpZiAoZWMpCiAgICAgICAgIHJldHVybiAwOwog
CiAgICAgUmVmUHRyPElEQlJlcXVlc3Q+IHJlcXVlc3QgPSBJREJSZXF1ZXN0OjpjcmVhdGUoY29u
dGV4dCwgSURCQW55OjpjcmVhdGUodGhpcyksIG1fdHJhbnNhY3Rpb24uZ2V0KCkpOwotICAgIHJl
cXVlc3QtPnNldEN1cnNvckRldGFpbHMoSURCQ3Vyc29yQmFja2VuZEludGVyZmFjZTo6S2V5QW5k
VmFsdWUsIGRpcmVjdGlvbik7CisgICAgcmVxdWVzdC0+c2V0Q3Vyc29yRGV0YWlscyhJbmRleGVk
REI6OkN1cnNvcktleUFuZFZhbHVlLCBkaXJlY3Rpb24pOwogICAgIGJhY2tlbmREQigpLT5vcGVu
Q3Vyc29yKG1fdHJhbnNhY3Rpb24tPmlkKCksIG1fb2JqZWN0U3RvcmUtPmlkKCksIG1fbWV0YWRh
dGEuaWQsIGtleVJhbmdlLCBkaXJlY3Rpb24sIGZhbHNlLCBJREJEYXRhYmFzZUJhY2tlbmRJbnRl
cmZhY2U6Ok5vcm1hbFRhc2ssIHJlcXVlc3QpOwogICAgIHJldHVybiByZXF1ZXN0OwogfQpAQCAt
MTIzLDEyICsxMjIsMTIgQEAgUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBJREJJbmRleDo6b3Blbktl
eUN1cnNvcihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LAogICAgICAgICBlYyA9IElE
QkRhdGFiYXNlRXhjZXB0aW9uOjpUcmFuc2FjdGlvbkluYWN0aXZlRXJyb3I7CiAgICAgICAgIHJl
dHVybiAwOwogICAgIH0KLSAgICBJREJDdXJzb3I6OkRpcmVjdGlvbiBkaXJlY3Rpb24gPSBJREJD
dXJzb3I6OnN0cmluZ1RvRGlyZWN0aW9uKGRpcmVjdGlvblN0cmluZywgY29udGV4dCwgZWMpOwor
ICAgIEluZGV4ZWREQjo6Q3Vyc29yRGlyZWN0aW9uIGRpcmVjdGlvbiA9IElEQkN1cnNvcjo6c3Ry
aW5nVG9EaXJlY3Rpb24oZGlyZWN0aW9uU3RyaW5nLCBjb250ZXh0LCBlYyk7CiAgICAgaWYgKGVj
KQogICAgICAgICByZXR1cm4gMDsKIAogICAgIFJlZlB0cjxJREJSZXF1ZXN0PiByZXF1ZXN0ID0g
SURCUmVxdWVzdDo6Y3JlYXRlKGNvbnRleHQsIElEQkFueTo6Y3JlYXRlKHRoaXMpLCBtX3RyYW5z
YWN0aW9uLmdldCgpKTsKLSAgICByZXF1ZXN0LT5zZXRDdXJzb3JEZXRhaWxzKElEQkN1cnNvckJh
Y2tlbmRJbnRlcmZhY2U6OktleU9ubHksIGRpcmVjdGlvbik7CisgICAgcmVxdWVzdC0+c2V0Q3Vy
c29yRGV0YWlscyhJbmRleGVkREI6OkN1cnNvcktleU9ubHksIGRpcmVjdGlvbik7CiAgICAgYmFj
a2VuZERCKCktPm9wZW5DdXJzb3IobV90cmFuc2FjdGlvbi0+aWQoKSwgbV9vYmplY3RTdG9yZS0+
aWQoKSwgbV9tZXRhZGF0YS5pZCwga2V5UmFuZ2UsIGRpcmVjdGlvbiwgdHJ1ZSwgSURCRGF0YWJh
c2VCYWNrZW5kSW50ZXJmYWNlOjpOb3JtYWxUYXNrLCByZXF1ZXN0KTsKICAgICByZXR1cm4gcmVx
dWVzdDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lE
Qk9iamVjdFN0b3JlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9i
amVjdFN0b3JlLmNwcAppbmRleCBmYWE1Y2JlMjYxY2NiMDRkNGM4OTM5N2Q2Y2ZjM2IyZmUyN2E4
YTNmLi41ODkwZWMzN2ZjMWMyNTdkZWFkMmZmZTVmZWU4NjEzN2UwN2JlNTIzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmUuY3BwCkBA
IC0zMSw3ICszMSw2IEBACiAjaW5jbHVkZSAiRE9NU3RyaW5nTGlzdC5oIgogI2luY2x1ZGUgIklE
QkFueS5oIgogI2luY2x1ZGUgIklEQkJpbmRpbmdVdGlsaXRpZXMuaCIKLSNpbmNsdWRlICJJREJD
dXJzb3JCYWNrZW5kSW50ZXJmYWNlLmgiCiAjaW5jbHVkZSAiSURCQ3Vyc29yV2l0aFZhbHVlLmgi
CiAjaW5jbHVkZSAiSURCRGF0YWJhc2UuaCIKICNpbmNsdWRlICJJREJEYXRhYmFzZUV4Y2VwdGlv
bi5oIgpAQCAtNDgsNyArNDcsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0YXRpYyBj
b25zdCB1bnNpZ25lZCBzaG9ydCBkZWZhdWx0RGlyZWN0aW9uID0gSURCQ3Vyc29yOjpORVhUOwor
c3RhdGljIGNvbnN0IHVuc2lnbmVkIHNob3J0IGRlZmF1bHREaXJlY3Rpb24gPSBJbmRleGVkREI6
OkN1cnNvck5leHQ7CiAKIElEQk9iamVjdFN0b3JlOjpJREJPYmplY3RTdG9yZShjb25zdCBJREJP
YmplY3RTdG9yZU1ldGFkYXRhJiBtZXRhZGF0YSwgSURCVHJhbnNhY3Rpb24qIHRyYW5zYWN0aW9u
KQogICAgIDogbV9tZXRhZGF0YShtZXRhZGF0YSkKQEAgLTUwNSwxMiArNTA0LDEyIEBAIFBhc3NS
ZWZQdHI8SURCUmVxdWVzdD4gSURCT2JqZWN0U3RvcmU6Om9wZW5DdXJzb3IoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCogY29udGV4CiAgICAgICAgIGVjID0gSURCRGF0YWJhc2VFeGNlcHRpb246OlRy
YW5zYWN0aW9uSW5hY3RpdmVFcnJvcjsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQotICAgIElE
QkN1cnNvcjo6RGlyZWN0aW9uIGRpcmVjdGlvbiA9IElEQkN1cnNvcjo6c3RyaW5nVG9EaXJlY3Rp
b24oZGlyZWN0aW9uU3RyaW5nLCBjb250ZXh0LCBlYyk7CisgICAgSW5kZXhlZERCOjpDdXJzb3JE
aXJlY3Rpb24gZGlyZWN0aW9uID0gSURCQ3Vyc29yOjpzdHJpbmdUb0RpcmVjdGlvbihkaXJlY3Rp
b25TdHJpbmcsIGNvbnRleHQsIGVjKTsKICAgICBpZiAoZWMpCiAgICAgICAgIHJldHVybiAwOwog
CiAgICAgUmVmUHRyPElEQlJlcXVlc3Q+IHJlcXVlc3QgPSBJREJSZXF1ZXN0OjpjcmVhdGUoY29u
dGV4dCwgSURCQW55OjpjcmVhdGUodGhpcyksIG1fdHJhbnNhY3Rpb24uZ2V0KCkpOwotICAgIHJl
cXVlc3QtPnNldEN1cnNvckRldGFpbHMoSURCQ3Vyc29yQmFja2VuZEludGVyZmFjZTo6S2V5QW5k
VmFsdWUsIGRpcmVjdGlvbik7CisgICAgcmVxdWVzdC0+c2V0Q3Vyc29yRGV0YWlscyhJbmRleGVk
REI6OkN1cnNvcktleUFuZFZhbHVlLCBkaXJlY3Rpb24pOwogCiAgICAgYmFja2VuZERCKCktPm9w
ZW5DdXJzb3IobV90cmFuc2FjdGlvbi0+aWQoKSwgaWQoKSwgSURCSW5kZXhNZXRhZGF0YTo6SW52
YWxpZElkLCByYW5nZSwgZGlyZWN0aW9uLCBmYWxzZSwgc3RhdGljX2Nhc3Q8SURCRGF0YWJhc2VC
YWNrZW5kSW50ZXJmYWNlOjpUYXNrVHlwZT4odGFza1R5cGUpLCByZXF1ZXN0KTsKICAgICByZXR1
cm4gcmVxdWVzdC5yZWxlYXNlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9JREJSZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL0lEQlJlcXVlc3QuY3BwCmluZGV4IDJiMTM0MzkxMTg0MzQzYWU5Y2ZhMDQ4NTM4MDNmMDcx
NTlhODYzNGIuLjY2NWUzZmZhZWI3ZjJiNDMzZDc1YTdmOGQ0NmU3ZmFiYTA4NjZjMmYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlJlcXVlc3QuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlJlcXVlc3QuY3BwCkBAIC0z
Nyw2ICszNyw3IEBACiAjaW5jbHVkZSAiRXZlbnRRdWV1ZS5oIgogI2luY2x1ZGUgIkV4Y2VwdGlv
bkNvZGVQbGFjZWhvbGRlci5oIgogI2luY2x1ZGUgIklEQkJpbmRpbmdVdGlsaXRpZXMuaCIKKyNp
bmNsdWRlICJJREJDdXJzb3JCYWNrZW5kSW50ZXJmYWNlLmgiCiAjaW5jbHVkZSAiSURCQ3Vyc29y
V2l0aFZhbHVlLmgiCiAjaW5jbHVkZSAiSURCRGF0YWJhc2UuaCIKICNpbmNsdWRlICJJREJFdmVu
dERpc3BhdGNoZXIuaCIKQEAgLTc3LDggKzc4LDggQEAgSURCUmVxdWVzdDo6SURCUmVxdWVzdChT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBQYXNzUmVmUHRyPElEQkFueT4gc291cmMK
ICAgICAsIG1fc291cmNlKHNvdXJjZSkKICAgICAsIG1fdGFza1R5cGUodGFza1R5cGUpCiAgICAg
LCBtX2hhc1BlbmRpbmdBY3Rpdml0eSh0cnVlKQotICAgICwgbV9jdXJzb3JUeXBlKElEQkN1cnNv
ckJhY2tlbmRJbnRlcmZhY2U6OktleUFuZFZhbHVlKQotICAgICwgbV9jdXJzb3JEaXJlY3Rpb24o
SURCQ3Vyc29yOjpORVhUKQorICAgICwgbV9jdXJzb3JUeXBlKEluZGV4ZWREQjo6Q3Vyc29yS2V5
QW5kVmFsdWUpCisgICAgLCBtX2N1cnNvckRpcmVjdGlvbihJbmRleGVkREI6OkN1cnNvck5leHQp
CiAgICAgLCBtX2N1cnNvckZpbmlzaGVkKGZhbHNlKQogICAgICwgbV9wZW5kaW5nQ3Vyc29yKDAp
CiAgICAgLCBtX2RpZEZpcmVVcGdyYWRlTmVlZGVkRXZlbnQoZmFsc2UpCkBAIC0xODUsNyArMTg2
LDcgQEAgdm9pZCBJREJSZXF1ZXN0OjphYm9ydCgpCiAgICAgbV9yZXF1ZXN0QWJvcnRlZCA9IHRy
dWU7CiB9CiAKLXZvaWQgSURCUmVxdWVzdDo6c2V0Q3Vyc29yRGV0YWlscyhJREJDdXJzb3JCYWNr
ZW5kSW50ZXJmYWNlOjpDdXJzb3JUeXBlIGN1cnNvclR5cGUsIElEQkN1cnNvcjo6RGlyZWN0aW9u
IGRpcmVjdGlvbikKK3ZvaWQgSURCUmVxdWVzdDo6c2V0Q3Vyc29yRGV0YWlscyhJbmRleGVkREI6
OkN1cnNvclR5cGUgY3Vyc29yVHlwZSwgSW5kZXhlZERCOjpDdXJzb3JEaXJlY3Rpb24gZGlyZWN0
aW9uKQogewogICAgIEFTU0VSVChtX3JlYWR5U3RhdGUgPT0gUEVORElORyk7CiAgICAgQVNTRVJU
KCFtX3BlbmRpbmdDdXJzb3IpOwpAQCAtMjI4LDcgKzIyOSw3IEBAIHZvaWQgSURCUmVxdWVzdDo6
c2V0UmVzdWx0Q3Vyc29yKFBhc3NSZWZQdHI8SURCQ3Vyc29yPiBjdXJzb3IsIFBhc3NSZWZQdHI8
SURCS2V5CiAgICAgbV9jdXJzb3JQcmltYXJ5S2V5ID0gcHJpbWFyeUtleTsKICAgICBtX2N1cnNv
clZhbHVlID0gdmFsdWU7CiAKLSAgICBpZiAobV9jdXJzb3JUeXBlID09IElEQkN1cnNvckJhY2tl
bmRJbnRlcmZhY2U6OktleU9ubHkpIHsKKyAgICBpZiAobV9jdXJzb3JUeXBlID09IEluZGV4ZWRE
Qjo6Q3Vyc29yS2V5T25seSkgewogICAgICAgICBtX3Jlc3VsdCA9IElEQkFueTo6Y3JlYXRlKGN1
cnNvcik7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0yOTQsMTAgKzI5NSwxMCBAQCB2b2lk
IElEQlJlcXVlc3Q6Om9uU3VjY2VzcyhQYXNzUmVmUHRyPElEQkN1cnNvckJhY2tlbmRJbnRlcmZh
Y2U+IGJhY2tlbmQsIFBhc3NSZQogICAgIEFTU0VSVCghbV9wZW5kaW5nQ3Vyc29yKTsKICAgICBS
ZWZQdHI8SURCQ3Vyc29yPiBjdXJzb3I7CiAgICAgc3dpdGNoIChtX2N1cnNvclR5cGUpIHsKLSAg
ICBjYXNlIElEQkN1cnNvckJhY2tlbmRJbnRlcmZhY2U6OktleU9ubHk6CisgICAgY2FzZSBJbmRl
eGVkREI6OkN1cnNvcktleU9ubHk6CiAgICAgICAgIGN1cnNvciA9IElEQkN1cnNvcjo6Y3JlYXRl
KGJhY2tlbmQsIG1fY3Vyc29yRGlyZWN0aW9uLCB0aGlzLCBtX3NvdXJjZS5nZXQoKSwgbV90cmFu
c2FjdGlvbi5nZXQoKSk7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgSURCQ3Vyc29yQmFja2Vu
ZEludGVyZmFjZTo6S2V5QW5kVmFsdWU6CisgICAgY2FzZSBJbmRleGVkREI6OkN1cnNvcktleUFu
ZFZhbHVlOgogICAgICAgICBjdXJzb3IgPSBJREJDdXJzb3JXaXRoVmFsdWU6OmNyZWF0ZShiYWNr
ZW5kLCBtX2N1cnNvckRpcmVjdGlvbiwgdGhpcywgbV9zb3VyY2UuZ2V0KCksIG1fdHJhbnNhY3Rp
b24uZ2V0KCkpOwogICAgICAgICBicmVhazsKICAgICBkZWZhdWx0OgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCUmVxdWVzdC5oIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvSURCUmVxdWVzdC5oCmluZGV4IGQwNjdlYjI5YTg4NTU3OTJj
MGMxMjU1Nzc1Y2QwMjQ4ODhjOTUxYjUuLmI4MzA2NDA3MDAzYzEyMGJiYTE3NjM4MjRiOGQyYTkz
OTZjZmEyNzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lE
QlJlcXVlc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJSZXF1
ZXN0LmgKQEAgLTQyLDcgKzQyLDYgQEAKICNpbmNsdWRlICJJREJBbnkuaCIKICNpbmNsdWRlICJJ
REJDYWxsYmFja3MuaCIKICNpbmNsdWRlICJJREJDdXJzb3IuaCIKLSNpbmNsdWRlICJJREJDdXJz
b3JCYWNrZW5kSW50ZXJmYWNlLmgiCiAjaW5jbHVkZSAiU2NyaXB0V3JhcHBhYmxlLmgiCiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKQEAgLTc4LDcgKzc3LDcgQEAgcHVibGljOgogICAgIERFRklORV9B
VFRSSUJVVEVfRVZFTlRfTElTVEVORVIoZXJyb3IpOwogCiAgICAgdm9pZCBtYXJrRWFybHlEZWF0
aCgpOwotICAgIHZvaWQgc2V0Q3Vyc29yRGV0YWlscyhJREJDdXJzb3JCYWNrZW5kSW50ZXJmYWNl
OjpDdXJzb3JUeXBlLCBJREJDdXJzb3I6OkRpcmVjdGlvbik7CisgICAgdm9pZCBzZXRDdXJzb3JE
ZXRhaWxzKEluZGV4ZWREQjo6Q3Vyc29yVHlwZSwgSW5kZXhlZERCOjpDdXJzb3JEaXJlY3Rpb24p
OwogICAgIHZvaWQgc2V0UGVuZGluZ0N1cnNvcihQYXNzUmVmUHRyPElEQkN1cnNvcj4pOwogICAg
IHZvaWQgZmluaXNoQ3Vyc29yKCk7CiAgICAgdm9pZCBhYm9ydCgpOwpAQCAtMTQ5LDggKzE0OCw4
IEBAIHByaXZhdGU6CiAgICAgVmVjdG9yPFJlZlB0cjxFdmVudD4gPiBtX2VucXVldWVkRXZlbnRz
OwogCiAgICAgLy8gT25seSB1c2VkIGlmIHRoZSByZXN1bHQgdHlwZSB3aWxsIGJlIGEgY3Vyc29y
LgotICAgIElEQkN1cnNvckJhY2tlbmRJbnRlcmZhY2U6OkN1cnNvclR5cGUgbV9jdXJzb3JUeXBl
OwotICAgIElEQkN1cnNvcjo6RGlyZWN0aW9uIG1fY3Vyc29yRGlyZWN0aW9uOworICAgIEluZGV4
ZWREQjo6Q3Vyc29yVHlwZSBtX2N1cnNvclR5cGU7CisgICAgSW5kZXhlZERCOjpDdXJzb3JEaXJl
Y3Rpb24gbV9jdXJzb3JEaXJlY3Rpb247CiAgICAgYm9vbCBtX2N1cnNvckZpbmlzaGVkOwogICAg
IFJlZlB0cjxJREJDdXJzb3I+IG1fcGVuZGluZ0N1cnNvcjsKICAgICBSZWZQdHI8SURCS2V5PiBt
X2N1cnNvcktleTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L0lEQlRyYW5zYWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lE
QlRyYW5zYWN0aW9uLmNwcAppbmRleCBiYzBlZGRkZjg0MTAzZmNjZTJkZmVkMTNiMmRhMjNiNDIz
NDk2N2MzLi5mNTU1OTQzZDgwMzNkODgwOTU4MzU2MzgyNWFkZjBhNTE2NGJkMjQyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb24uY3Bw
CkBAIC00NCw3ICs0NCw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUGFzc1JlZlB0cjxJ
REJUcmFuc2FjdGlvbj4gSURCVHJhbnNhY3Rpb246OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiBjb250ZXh0LCBpbnQ2NF90IGlkLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgb2JqZWN0U3Rv
cmVOYW1lcywgSURCVHJhbnNhY3Rpb246Ok1vZGUgbW9kZSwgSURCRGF0YWJhc2UqIGRiKQorUGFz
c1JlZlB0cjxJREJUcmFuc2FjdGlvbj4gSURCVHJhbnNhY3Rpb246OmNyZWF0ZShTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiBjb250ZXh0LCBpbnQ2NF90IGlkLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYg
b2JqZWN0U3RvcmVOYW1lcywgSW5kZXhlZERCOjpUcmFuc2FjdGlvbk1vZGUgbW9kZSwgSURCRGF0
YWJhc2UqIGRiKQogewogICAgIElEQk9wZW5EQlJlcXVlc3QqIG9wZW5EQlJlcXVlc3QgPSAwOwog
ICAgIFJlZlB0cjxJREJUcmFuc2FjdGlvbj4gdHJhbnNhY3Rpb24oYWRvcHRSZWYobmV3IElEQlRy
YW5zYWN0aW9uKGNvbnRleHQsIGlkLCBvYmplY3RTdG9yZU5hbWVzLCBtb2RlLCBkYiwgb3BlbkRC
UmVxdWVzdCwgSURCRGF0YWJhc2VNZXRhZGF0YSgpKSkpOwpAQCAtNTQsNyArNTQsNyBAQCBQYXNz
UmVmUHRyPElEQlRyYW5zYWN0aW9uPiBJREJUcmFuc2FjdGlvbjo6Y3JlYXRlKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqIGNvbnRleAogCiBQYXNzUmVmUHRyPElEQlRyYW5zYWN0aW9uPiBJREJUcmFu
c2FjdGlvbjo6Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGludDY0X3Qg
aWQsIElEQkRhdGFiYXNlKiBkYiwgSURCT3BlbkRCUmVxdWVzdCogb3BlbkRCUmVxdWVzdCwgY29u
c3QgSURCRGF0YWJhc2VNZXRhZGF0YSYgcHJldmlvdXNNZXRhZGF0YSkKIHsKLSAgICBSZWZQdHI8
SURCVHJhbnNhY3Rpb24+IHRyYW5zYWN0aW9uKGFkb3B0UmVmKG5ldyBJREJUcmFuc2FjdGlvbihj
b250ZXh0LCBpZCwgVmVjdG9yPFN0cmluZz4oKSwgVkVSU0lPTl9DSEFOR0UsIGRiLCBvcGVuREJS
ZXF1ZXN0LCBwcmV2aW91c01ldGFkYXRhKSkpOworICAgIFJlZlB0cjxJREJUcmFuc2FjdGlvbj4g
dHJhbnNhY3Rpb24oYWRvcHRSZWYobmV3IElEQlRyYW5zYWN0aW9uKGNvbnRleHQsIGlkLCBWZWN0
b3I8U3RyaW5nPigpLCBJbmRleGVkREI6OlRyYW5zYWN0aW9uVmVyc2lvbkNoYW5nZSwgZGIsIG9w
ZW5EQlJlcXVlc3QsIHByZXZpb3VzTWV0YWRhdGEpKSk7CiAgICAgdHJhbnNhY3Rpb24tPnN1c3Bl
bmRJZk5lZWRlZCgpOwogICAgIHJldHVybiB0cmFuc2FjdGlvbi5yZWxlYXNlKCk7CiB9CkBAIC05
MCw3ICs5MCw3IEBAIGNvbnN0IEF0b21pY1N0cmluZyYgSURCVHJhbnNhY3Rpb246Om1vZGVSZWFk
V3JpdGVMZWdhY3koKQogfQogCiAKLUlEQlRyYW5zYWN0aW9uOjpJREJUcmFuc2FjdGlvbihTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBpbnQ2NF90IGlkLCBjb25zdCBWZWN0b3I8U3Ry
aW5nPiYgb2JqZWN0U3RvcmVOYW1lcywgSURCVHJhbnNhY3Rpb246Ok1vZGUgbW9kZSwgSURCRGF0
YWJhc2UqIGRiLCBJREJPcGVuREJSZXF1ZXN0KiBvcGVuREJSZXF1ZXN0LCBjb25zdCBJREJEYXRh
YmFzZU1ldGFkYXRhJiBwcmV2aW91c01ldGFkYXRhKQorSURCVHJhbnNhY3Rpb246OklEQlRyYW5z
YWN0aW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGludDY0X3QgaWQsIGNvbnN0
IFZlY3RvcjxTdHJpbmc+JiBvYmplY3RTdG9yZU5hbWVzLCBJbmRleGVkREI6OlRyYW5zYWN0aW9u
TW9kZSBtb2RlLCBJREJEYXRhYmFzZSogZGIsIElEQk9wZW5EQlJlcXVlc3QqIG9wZW5EQlJlcXVl
c3QsIGNvbnN0IElEQkRhdGFiYXNlTWV0YWRhdGEmIHByZXZpb3VzTWV0YWRhdGEpCiAgICAgOiBB
Y3RpdmVET01PYmplY3QoY29udGV4dCwgdGhpcykKICAgICAsIG1faWQoaWQpCiAgICAgLCBtX2Rh
dGFiYXNlKGRiKQpAQCAtMTAyLDcgKzEwMiw3IEBAIElEQlRyYW5zYWN0aW9uOjpJREJUcmFuc2Fj
dGlvbihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBpbnQ2NF90IGlkLCBjb25zCiAg
ICAgLCBtX2NvbnRleHRTdG9wcGVkKGZhbHNlKQogICAgICwgbV9wcmV2aW91c01ldGFkYXRhKHBy
ZXZpb3VzTWV0YWRhdGEpCiB7Ci0gICAgaWYgKG1vZGUgPT0gVkVSU0lPTl9DSEFOR0UpIHsKKyAg
ICBpZiAobW9kZSA9PSBJbmRleGVkREI6OlRyYW5zYWN0aW9uVmVyc2lvbkNoYW5nZSkgewogICAg
ICAgICAvLyBOb3QgYWN0aXZlIHVudGlsIHRoZSBjYWxsYmFjay4KICAgICAgICAgbV9zdGF0ZSA9
IEluYWN0aXZlOwogICAgIH0KQEAgLTMzNiwzMCArMzM2LDMwIEBAIGJvb2wgSURCVHJhbnNhY3Rp
b246Omhhc1BlbmRpbmdBY3Rpdml0eSgpIGNvbnN0CiAgICAgcmV0dXJuIG1faGFzUGVuZGluZ0Fj
dGl2aXR5OwogfQogCi1JREJUcmFuc2FjdGlvbjo6TW9kZSBJREJUcmFuc2FjdGlvbjo6c3RyaW5n
VG9Nb2RlKGNvbnN0IFN0cmluZyYgbW9kZVN0cmluZywgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCog
Y29udGV4dCwgRXhjZXB0aW9uQ29kZSYgZWMpCitJbmRleGVkREI6OlRyYW5zYWN0aW9uTW9kZSBJ
REJUcmFuc2FjdGlvbjo6c3RyaW5nVG9Nb2RlKGNvbnN0IFN0cmluZyYgbW9kZVN0cmluZywgU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAg
aWYgKG1vZGVTdHJpbmcuaXNOdWxsKCkKICAgICAgICAgfHwgbW9kZVN0cmluZyA9PSBJREJUcmFu
c2FjdGlvbjo6bW9kZVJlYWRPbmx5KCkpCi0gICAgICAgIHJldHVybiBJREJUcmFuc2FjdGlvbjo6
UkVBRF9PTkxZOworICAgICAgICByZXR1cm4gSW5kZXhlZERCOjpUcmFuc2FjdGlvblJlYWRPbmx5
OwogICAgIGlmIChtb2RlU3RyaW5nID09IElEQlRyYW5zYWN0aW9uOjptb2RlUmVhZFdyaXRlKCkp
Ci0gICAgICAgIHJldHVybiBJREJUcmFuc2FjdGlvbjo6UkVBRF9XUklURTsKKyAgICAgICAgcmV0
dXJuIEluZGV4ZWREQjo6VHJhbnNhY3Rpb25SZWFkV3JpdGU7CiAKICAgICBlYyA9IFR5cGVFcnJv
cjsKLSAgICByZXR1cm4gSURCVHJhbnNhY3Rpb246OlJFQURfT05MWTsKKyAgICByZXR1cm4gSW5k
ZXhlZERCOjpUcmFuc2FjdGlvblJlYWRPbmx5OwogfQogCi1jb25zdCBBdG9taWNTdHJpbmcmIElE
QlRyYW5zYWN0aW9uOjptb2RlVG9TdHJpbmcoSURCVHJhbnNhY3Rpb246Ok1vZGUgbW9kZSkKK2Nv
bnN0IEF0b21pY1N0cmluZyYgSURCVHJhbnNhY3Rpb246Om1vZGVUb1N0cmluZyhJbmRleGVkREI6
OlRyYW5zYWN0aW9uTW9kZSBtb2RlKQogewogICAgIHN3aXRjaCAobW9kZSkgewotICAgIGNhc2Ug
SURCVHJhbnNhY3Rpb246OlJFQURfT05MWToKKyAgICBjYXNlIEluZGV4ZWREQjo6VHJhbnNhY3Rp
b25SZWFkT25seToKICAgICAgICAgcmV0dXJuIElEQlRyYW5zYWN0aW9uOjptb2RlUmVhZE9ubHko
KTsKICAgICAgICAgYnJlYWs7CiAKLSAgICBjYXNlIElEQlRyYW5zYWN0aW9uOjpSRUFEX1dSSVRF
OgorICAgIGNhc2UgSW5kZXhlZERCOjpUcmFuc2FjdGlvblJlYWRXcml0ZToKICAgICAgICAgcmV0
dXJuIElEQlRyYW5zYWN0aW9uOjptb2RlUmVhZFdyaXRlKCk7CiAgICAgICAgIGJyZWFrOwogCi0g
ICAgY2FzZSBJREJUcmFuc2FjdGlvbjo6VkVSU0lPTl9DSEFOR0U6CisgICAgY2FzZSBJbmRleGVk
REI6OlRyYW5zYWN0aW9uVmVyc2lvbkNoYW5nZToKICAgICAgICAgcmV0dXJuIElEQlRyYW5zYWN0
aW9uOjptb2RlVmVyc2lvbkNoYW5nZSgpOwogICAgICAgICBicmVhazsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb24uaCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmgKaW5kZXggNjk3NTBl
YjczOWU2ODA3ZGIxMTg3ZGMwZTZjODQ0ZmM4NTAxMmIyNy4uZjRkNjRjYjdkMTNmZTM1MzI1NmM2
ZTE1ZTcyOTc5ZTUyNTU3NTk3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvSURCVHJhbnNhY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5oCkBAIC0zNSw2ICszNSw3IEBACiAjaW5jbHVkZSAiRXZl
bnROYW1lcy5oIgogI2luY2x1ZGUgIkV2ZW50VGFyZ2V0LmgiCiAjaW5jbHVkZSAiSURCTWV0YWRh
dGEuaCIKKyNpbmNsdWRlICJJbmRleGVkREIuaCIKICNpbmNsdWRlICJTY3JpcHRXcmFwcGFibGUu
aCIKICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+
CkBAIC01MSwxMyArNTIsNyBAQCBzdHJ1Y3QgSURCT2JqZWN0U3RvcmVNZXRhZGF0YTsKIAogY2xh
c3MgSURCVHJhbnNhY3Rpb24gOiBwdWJsaWMgU2NyaXB0V3JhcHBhYmxlLCBwdWJsaWMgUmVmQ291
bnRlZDxJREJUcmFuc2FjdGlvbj4sIHB1YmxpYyBFdmVudFRhcmdldCwgcHVibGljIEFjdGl2ZURP
TU9iamVjdCB7CiBwdWJsaWM6Ci0gICAgZW51bSBNb2RlIHsKLSAgICAgICAgUkVBRF9PTkxZID0g
MCwKLSAgICAgICAgUkVBRF9XUklURSA9IDEsCi0gICAgICAgIFZFUlNJT05fQ0hBTkdFID0gMgot
ICAgIH07Ci0KLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbj4gY3JlYXRlKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBpbnQ2NF90LCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgb2Jq
ZWN0U3RvcmVOYW1lcywgTW9kZSwgSURCRGF0YWJhc2UqKTsKKyAgICBzdGF0aWMgUGFzc1JlZlB0
cjxJREJUcmFuc2FjdGlvbj4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBpbnQ2NF90
LCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgb2JqZWN0U3RvcmVOYW1lcywgSW5kZXhlZERCOjpUcmFu
c2FjdGlvbk1vZGUsIElEQkRhdGFiYXNlKik7CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8SURCVHJh
bnNhY3Rpb24+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgaW50NjRfdCwgSURCRGF0
YWJhc2UqLCBJREJPcGVuREJSZXF1ZXN0KiwgY29uc3QgSURCRGF0YWJhc2VNZXRhZGF0YSYgcHJl
dmlvdXNNZXRhZGF0YSk7CiAgICAgdmlydHVhbCB+SURCVHJhbnNhY3Rpb24oKTsKIApAQCAtNjcs
MTYgKzYyLDE2IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiBtb2Rl
UmVhZE9ubHlMZWdhY3koKTsKICAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiBtb2RlUmVh
ZFdyaXRlTGVnYWN5KCk7CiAKLSAgICBzdGF0aWMgTW9kZSBzdHJpbmdUb01vZGUoY29uc3QgU3Ry
aW5nJiwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIEV4Y2VwdGlvbkNvZGUmKTsKLSAgICBzdGF0
aWMgY29uc3QgQXRvbWljU3RyaW5nJiBtb2RlVG9TdHJpbmcoTW9kZSk7CisgICAgc3RhdGljIElu
ZGV4ZWREQjo6VHJhbnNhY3Rpb25Nb2RlIHN0cmluZ1RvTW9kZShjb25zdCBTdHJpbmcmLCBTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiwgRXhjZXB0aW9uQ29kZSYpOworICAgIHN0YXRpYyBjb25zdCBB
dG9taWNTdHJpbmcmIG1vZGVUb1N0cmluZyhJbmRleGVkREI6OlRyYW5zYWN0aW9uTW9kZSk7CiAK
ICAgICBJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2UqIGJhY2tlbmREQigpIGNvbnN0OwogCiAg
ICAgaW50NjRfdCBpZCgpIGNvbnN0IHsgcmV0dXJuIG1faWQ7IH0KICAgICBib29sIGlzQWN0aXZl
KCkgY29uc3QgeyByZXR1cm4gbV9zdGF0ZSA9PSBBY3RpdmU7IH0KICAgICBib29sIGlzRmluaXNo
ZWQoKSBjb25zdCB7IHJldHVybiBtX3N0YXRlID09IEZpbmlzaGVkOyB9Ci0gICAgYm9vbCBpc1Jl
YWRPbmx5KCkgY29uc3QgeyByZXR1cm4gbV9tb2RlID09IFJFQURfT05MWTsgfQotICAgIGJvb2wg
aXNWZXJzaW9uQ2hhbmdlKCkgY29uc3QgeyByZXR1cm4gbV9tb2RlID09IFZFUlNJT05fQ0hBTkdF
OyB9CisgICAgYm9vbCBpc1JlYWRPbmx5KCkgY29uc3QgeyByZXR1cm4gbV9tb2RlID09IEluZGV4
ZWREQjo6VHJhbnNhY3Rpb25SZWFkT25seTsgfQorICAgIGJvb2wgaXNWZXJzaW9uQ2hhbmdlKCkg
Y29uc3QgeyByZXR1cm4gbV9tb2RlID09IEluZGV4ZWREQjo6VHJhbnNhY3Rpb25WZXJzaW9uQ2hh
bmdlOyB9CiAKICAgICAvLyBJbXBsZW1lbnQgdGhlIElEQlRyYW5zYWN0aW9uIElETAogICAgIGNv
bnN0IFN0cmluZyYgbW9kZSgpIGNvbnN0OwpAQCAtMTI2LDcgKzEyMSw3IEBAIHB1YmxpYzoKICAg
ICB1c2luZyBSZWZDb3VudGVkPElEQlRyYW5zYWN0aW9uPjo6ZGVyZWY7CiAKIHByaXZhdGU6Ci0g
ICAgSURCVHJhbnNhY3Rpb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGludDY0X3QsIGNvbnN0
IFZlY3RvcjxTdHJpbmc+JiwgTW9kZSwgSURCRGF0YWJhc2UqLCBJREJPcGVuREJSZXF1ZXN0Kiwg
Y29uc3QgSURCRGF0YWJhc2VNZXRhZGF0YSYpOworICAgIElEQlRyYW5zYWN0aW9uKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqLCBpbnQ2NF90LCBjb25zdCBWZWN0b3I8U3RyaW5nPiYsIEluZGV4ZWRE
Qjo6VHJhbnNhY3Rpb25Nb2RlLCBJREJEYXRhYmFzZSosIElEQk9wZW5EQlJlcXVlc3QqLCBjb25z
dCBJREJEYXRhYmFzZU1ldGFkYXRhJik7CiAKICAgICB2b2lkIGVucXVldWVFdmVudChQYXNzUmVm
UHRyPEV2ZW50Pik7CiAgICAgdm9pZCBjbG9zZU9wZW5DdXJzb3JzKCk7CkBAIC0xNTEsNyArMTQ2
LDcgQEAgcHJpdmF0ZToKICAgICBSZWZQdHI8SURCRGF0YWJhc2U+IG1fZGF0YWJhc2U7CiAgICAg
Y29uc3QgVmVjdG9yPFN0cmluZz4gbV9vYmplY3RTdG9yZU5hbWVzOwogICAgIElEQk9wZW5EQlJl
cXVlc3QqIG1fb3BlbkRCUmVxdWVzdDsKLSAgICBjb25zdCBNb2RlIG1fbW9kZTsKKyAgICBjb25z
dCBJbmRleGVkREI6OlRyYW5zYWN0aW9uTW9kZSBtX21vZGU7CiAgICAgU3RhdGUgbV9zdGF0ZTsK
ICAgICBib29sIG1faGFzUGVuZGluZ0FjdGl2aXR5OwogICAgIGJvb2wgbV9jb250ZXh0U3RvcHBl
ZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5z
YWN0aW9uQmFja2VuZEltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
SURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbC5jcHAKaW5kZXggN2ZlODNiMjNkMmVjYmZmNzYwMmUz
MmI0ZWIxOWVkMWJhYzg2YWU2Zi4uNjU2MjU1NzcwNjExMmYzOTE2MDJjZjUwZjY5MjdlYmRlNDg5
YzhjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJh
bnNhY3Rpb25CYWNrZW5kSW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbC5jcHAKQEAgLTMxLDEzICszMSwxNCBAQAog
I2luY2x1ZGUgIklEQkJhY2tpbmdTdG9yZS5oIgogI2luY2x1ZGUgIklEQkN1cnNvckJhY2tlbmRJ
bXBsLmgiCiAjaW5jbHVkZSAiSURCRGF0YWJhc2VCYWNrZW5kSW1wbC5oIgorI2luY2x1ZGUgIklE
QkRhdGFiYXNlQ2FsbGJhY2tzLmgiCiAjaW5jbHVkZSAiSURCRGF0YWJhc2VFeGNlcHRpb24uaCIK
ICNpbmNsdWRlICJJREJUcmFjaW5nLmgiCiAjaW5jbHVkZSAiSURCVHJhbnNhY3Rpb25Db29yZGlu
YXRvci5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVBhc3NSZWZQdHI8SURCVHJhbnNhY3Rp
b25CYWNrZW5kSW1wbD4gSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbDo6Y3JlYXRlKGludDY0X3Qg
aWQsIFBhc3NSZWZQdHI8SURCRGF0YWJhc2VDYWxsYmFja3M+IGNhbGxiYWNrcywgY29uc3QgVmVj
dG9yPGludDY0X3Q+JiBvYmplY3RTdG9yZUlkcywgSURCVHJhbnNhY3Rpb246Ok1vZGUgbW9kZSwg
SURCRGF0YWJhc2VCYWNrZW5kSW1wbCogZGF0YWJhc2UpCitQYXNzUmVmUHRyPElEQlRyYW5zYWN0
aW9uQmFja2VuZEltcGw+IElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGw6OmNyZWF0ZShpbnQ2NF90
IGlkLCBQYXNzUmVmUHRyPElEQkRhdGFiYXNlQ2FsbGJhY2tzPiBjYWxsYmFja3MsIGNvbnN0IFZl
Y3RvcjxpbnQ2NF90PiYgb2JqZWN0U3RvcmVJZHMsIEluZGV4ZWREQjo6VHJhbnNhY3Rpb25Nb2Rl
IG1vZGUsIElEQkRhdGFiYXNlQmFja2VuZEltcGwqIGRhdGFiYXNlKQogewogICAgIEhhc2hTZXQ8
aW50NjRfdD4gb2JqZWN0U3RvcmVIYXNoU2V0OwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
b2JqZWN0U3RvcmVJZHMuc2l6ZSgpOyArK2kpCkBAIC00Niw3ICs0Nyw3IEBAIFBhc3NSZWZQdHI8
SURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbD4gSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbDo6Y3Jl
YXRlKGludDY0X3QKICAgICByZXR1cm4gYWRvcHRSZWYobmV3IElEQlRyYW5zYWN0aW9uQmFja2Vu
ZEltcGwoaWQsIGNhbGxiYWNrcywgb2JqZWN0U3RvcmVIYXNoU2V0LCBtb2RlLCBkYXRhYmFzZSkp
OwogfQogCi1JREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsOjpJREJUcmFuc2FjdGlvbkJhY2tlbmRJ
bXBsKGludDY0X3QgaWQsIFBhc3NSZWZQdHI8SURCRGF0YWJhc2VDYWxsYmFja3M+IGNhbGxiYWNr
cywgY29uc3QgSGFzaFNldDxpbnQ2NF90PiYgb2JqZWN0U3RvcmVJZHMsIElEQlRyYW5zYWN0aW9u
OjpNb2RlIG1vZGUsIElEQkRhdGFiYXNlQmFja2VuZEltcGwqIGRhdGFiYXNlKQorSURCVHJhbnNh
Y3Rpb25CYWNrZW5kSW1wbDo6SURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbChpbnQ2NF90IGlkLCBQ
YXNzUmVmUHRyPElEQkRhdGFiYXNlQ2FsbGJhY2tzPiBjYWxsYmFja3MsIGNvbnN0IEhhc2hTZXQ8
aW50NjRfdD4mIG9iamVjdFN0b3JlSWRzLCBJbmRleGVkREI6OlRyYW5zYWN0aW9uTW9kZSBtb2Rl
LCBJREJEYXRhYmFzZUJhY2tlbmRJbXBsKiBkYXRhYmFzZSkKICAgICA6IG1faWQoaWQpCiAgICAg
LCBtX29iamVjdFN0b3JlSWRzKG9iamVjdFN0b3JlSWRzKQogICAgICwgbV9tb2RlKG1vZGUpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlv
bkJhY2tlbmRJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFu
c2FjdGlvbkJhY2tlbmRJbXBsLmgKaW5kZXggM2NlZjk3NjJhZTEwMjdlODg4NGU5ODI2ZjQ3OTFm
NjM2NGEzNGIwNi4uZTYxOGZhMDY4OGE5YzBkZGM5ZjlhMWE3OGNkZDkyYmZmMjgxMWViMyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb25C
YWNrZW5kSW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRy
YW5zYWN0aW9uQmFja2VuZEltcGwuaApAQCAtMzEsNyArMzEsNiBAQAogI2luY2x1ZGUgIklEQkJh
Y2tpbmdTdG9yZS5oIgogI2luY2x1ZGUgIklEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZS5oIgog
I2luY2x1ZGUgIklEQkRhdGFiYXNlRXJyb3IuaCIKLSNpbmNsdWRlICJJREJUcmFuc2FjdGlvbi5o
IgogI2luY2x1ZGUgIlRpbWVyLmgiCiAjaW5jbHVkZSA8d3RmL0RlcXVlLmg+CiAjaW5jbHVkZSA8
d3RmL0hhc2hTZXQuaD4KQEAgLTQ1LDcgKzQ0LDcgQEAgY2xhc3MgSURCRGF0YWJhc2VDYWxsYmFj
a3M7CiAKIGNsYXNzIElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGwgOiBwdWJsaWMgUmVmQ291bnRl
ZDxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsPiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NS
ZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbD4gY3JlYXRlKGludDY0X3QgdHJhbnNhY3Rp
b25JZCwgUGFzc1JlZlB0cjxJREJEYXRhYmFzZUNhbGxiYWNrcz4sIGNvbnN0IFZlY3RvcjxpbnQ2
NF90PiYsIElEQlRyYW5zYWN0aW9uOjpNb2RlLCBJREJEYXRhYmFzZUJhY2tlbmRJbXBsKik7Cisg
ICAgc3RhdGljIFBhc3NSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbD4gY3JlYXRlKGlu
dDY0X3QgdHJhbnNhY3Rpb25JZCwgUGFzc1JlZlB0cjxJREJEYXRhYmFzZUNhbGxiYWNrcz4sIGNv
bnN0IFZlY3RvcjxpbnQ2NF90PiYsIEluZGV4ZWREQjo6VHJhbnNhY3Rpb25Nb2RlLCBJREJEYXRh
YmFzZUJhY2tlbmRJbXBsKik7CiAgICAgdmlydHVhbCB+SURCVHJhbnNhY3Rpb25CYWNrZW5kSW1w
bCgpOwogCiAgICAgdmlydHVhbCB2b2lkIGFib3J0KCk7CkBAIC01OSw3ICs1OCw3IEBAIHB1Ymxp
YzoKIAogICAgIHZvaWQgYWJvcnQoUGFzc1JlZlB0cjxJREJEYXRhYmFzZUVycm9yPik7CiAgICAg
dm9pZCBydW4oKTsKLSAgICBJREJUcmFuc2FjdGlvbjo6TW9kZSBtb2RlKCkgY29uc3QgeyByZXR1
cm4gbV9tb2RlOyB9CisgICAgSW5kZXhlZERCOjpUcmFuc2FjdGlvbk1vZGUgbW9kZSgpIGNvbnN0
IHsgcmV0dXJuIG1fbW9kZTsgfQogICAgIGNvbnN0IEhhc2hTZXQ8aW50NjRfdD4mIHNjb3BlKCkg
Y29uc3QgeyByZXR1cm4gbV9vYmplY3RTdG9yZUlkczsgfQogICAgIHZvaWQgc2NoZWR1bGVUYXNr
KFBhc3NPd25QdHI8T3BlcmF0aW9uPiB0YXNrLCBQYXNzT3duUHRyPE9wZXJhdGlvbj4gYWJvcnRU
YXNrID0gbnVsbHB0cikgeyBzY2hlZHVsZVRhc2soSURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNl
OjpOb3JtYWxUYXNrLCB0YXNrLCBhYm9ydFRhc2spOyB9CiAgICAgdm9pZCBzY2hlZHVsZVRhc2so
SURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlOjpUYXNrVHlwZSwgUGFzc093blB0cjxPcGVyYXRp
b24+LCBQYXNzT3duUHRyPE9wZXJhdGlvbj4gYWJvcnRUYXNrID0gbnVsbHB0cik7CkBAIC03Myw3
ICs3Miw3IEBAIHB1YmxpYzoKICAgICBJREJEYXRhYmFzZUJhY2tlbmRJbXBsKiBkYXRhYmFzZSgp
IGNvbnN0IHsgcmV0dXJuIG1fZGF0YWJhc2UuZ2V0KCk7IH0KIAogcHJpdmF0ZToKLSAgICBJREJU
cmFuc2FjdGlvbkJhY2tlbmRJbXBsKGludDY0X3QgaWQsIFBhc3NSZWZQdHI8SURCRGF0YWJhc2VD
YWxsYmFja3M+LCBjb25zdCBIYXNoU2V0PGludDY0X3Q+JiBvYmplY3RTdG9yZUlkcywgSURCVHJh
bnNhY3Rpb246Ok1vZGUsIElEQkRhdGFiYXNlQmFja2VuZEltcGwqKTsKKyAgICBJREJUcmFuc2Fj
dGlvbkJhY2tlbmRJbXBsKGludDY0X3QgaWQsIFBhc3NSZWZQdHI8SURCRGF0YWJhc2VDYWxsYmFj
a3M+LCBjb25zdCBIYXNoU2V0PGludDY0X3Q+JiBvYmplY3RTdG9yZUlkcywgSW5kZXhlZERCOjpU
cmFuc2FjdGlvbk1vZGUsIElEQkRhdGFiYXNlQmFja2VuZEltcGwqKTsKIAogICAgIGVudW0gU3Rh
dGUgewogICAgICAgICBVbnVzZWQsIC8vIENyZWF0ZWQsIGJ1dCBubyB0YXNrcyB5ZXQuCkBAIC05
Miw3ICs5MSw3IEBAIHByaXZhdGU6CiAKICAgICBjb25zdCBpbnQ2NF90IG1faWQ7CiAgICAgY29u
c3QgSGFzaFNldDxpbnQ2NF90PiBtX29iamVjdFN0b3JlSWRzOwotICAgIGNvbnN0IElEQlRyYW5z
YWN0aW9uOjpNb2RlIG1fbW9kZTsKKyAgICBjb25zdCBJbmRleGVkREI6OlRyYW5zYWN0aW9uTW9k
ZSBtX21vZGU7CiAKICAgICBTdGF0ZSBtX3N0YXRlOwogICAgIGJvb2wgbV9jb21taXRQZW5kaW5n
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNh
Y3Rpb25Db29yZGluYXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9J
REJUcmFuc2FjdGlvbkNvb3JkaW5hdG9yLmNwcAppbmRleCAwYmI1YWNhOTVhMDhjNWM1MTZhMzY1
MTMyNTQ1YjhlNDY5N2Q1MGVmLi5hNmZjZDhlYTNlNmUxZDgyZTFiOTI4OTBhZGU1NGZkNzVlZWU4
NzFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFu
c2FjdGlvbkNvb3JkaW5hdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9JREJUcmFuc2FjdGlvbkNvb3JkaW5hdG9yLmNwcApAQCAtMjksNyArMjksNiBAQAogI2lm
IEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQogCiAjaW5jbHVkZSAiSURCRGF0YWJhc2VCYWNrZW5k
SW1wbC5oIgotI2luY2x1ZGUgIklEQlRyYW5zYWN0aW9uLmgiCiAjaW5jbHVkZSAiSURCVHJhbnNh
Y3Rpb25CYWNrZW5kSW1wbC5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC05Nyw3ICs5Niw3
IEBAIHZvaWQgSURCVHJhbnNhY3Rpb25Db29yZGluYXRvcjo6cHJvY2Vzc1N0YXJ0ZWRUcmFuc2Fj
dGlvbnMoKQogICAgIGlmIChtX3F1ZXVlZFRyYW5zYWN0aW9ucy5pc0VtcHR5KCkpCiAgICAgICAg
IHJldHVybjsKIAotICAgIEFTU0VSVChtX3N0YXJ0ZWRUcmFuc2FjdGlvbnMuaXNFbXB0eSgpIHx8
ICgqbV9zdGFydGVkVHJhbnNhY3Rpb25zLmJlZ2luKCkpLT5tb2RlKCkgIT0gSURCVHJhbnNhY3Rp
b246OlZFUlNJT05fQ0hBTkdFKTsKKyAgICBBU1NFUlQobV9zdGFydGVkVHJhbnNhY3Rpb25zLmlz
RW1wdHkoKSB8fCAoKm1fc3RhcnRlZFRyYW5zYWN0aW9ucy5iZWdpbigpKS0+bW9kZSgpICE9IElu
ZGV4ZWREQjo6VHJhbnNhY3Rpb25WZXJzaW9uQ2hhbmdlKTsKIAogICAgIExpc3RIYXNoU2V0PElE
QlRyYW5zYWN0aW9uQmFja2VuZEltcGwqPjo6Y29uc3RfaXRlcmF0b3IgaXQgPSBtX3F1ZXVlZFRy
YW5zYWN0aW9ucy5iZWdpbigpOwogICAgIHdoaWxlIChpdCAhPSBtX3F1ZXVlZFRyYW5zYWN0aW9u
cy5lbmQoKSkgewpAQCAtMTI0LDIyICsxMjMsMjIgQEAgYm9vbCBJREJUcmFuc2FjdGlvbkNvb3Jk
aW5hdG9yOjpjYW5SdW5UcmFuc2FjdGlvbihJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsKiB0cmEK
IHsKICAgICBBU1NFUlQobV9xdWV1ZWRUcmFuc2FjdGlvbnMuY29udGFpbnModHJhbnNhY3Rpb24p
KTsKICAgICBzd2l0Y2ggKHRyYW5zYWN0aW9uLT5tb2RlKCkpIHsKLSAgICBjYXNlIElEQlRyYW5z
YWN0aW9uOjpWRVJTSU9OX0NIQU5HRToKKyAgICBjYXNlIEluZGV4ZWREQjo6VHJhbnNhY3Rpb25W
ZXJzaW9uQ2hhbmdlOgogICAgICAgICBBU1NFUlQobV9xdWV1ZWRUcmFuc2FjdGlvbnMuc2l6ZSgp
ID09IDEpOwogICAgICAgICBBU1NFUlQobV9zdGFydGVkVHJhbnNhY3Rpb25zLmlzRW1wdHkoKSk7
CiAgICAgICAgIHJldHVybiB0cnVlOwogCi0gICAgY2FzZSBJREJUcmFuc2FjdGlvbjo6UkVBRF9P
TkxZOgorICAgIGNhc2UgSW5kZXhlZERCOjpUcmFuc2FjdGlvblJlYWRPbmx5OgogICAgICAgICBy
ZXR1cm4gdHJ1ZTsKIAotICAgIGNhc2UgSURCVHJhbnNhY3Rpb246OlJFQURfV1JJVEU6CisgICAg
Y2FzZSBJbmRleGVkREI6OlRyYW5zYWN0aW9uUmVhZFdyaXRlOgogICAgICAgICBmb3IgKEhhc2hT
ZXQ8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbCo+Ojpjb25zdF9pdGVyYXRvciBpdCA9IG1fc3Rh
cnRlZFRyYW5zYWN0aW9ucy5iZWdpbigpOyBpdCAhPSBtX3N0YXJ0ZWRUcmFuc2FjdGlvbnMuZW5k
KCk7ICsraXQpIHsKLSAgICAgICAgICAgIGlmICgoKml0KS0+bW9kZSgpID09IElEQlRyYW5zYWN0
aW9uOjpSRUFEX1dSSVRFICYmIGRvU2NvcGVzT3ZlcmxhcCh0cmFuc2FjdGlvbi0+c2NvcGUoKSwg
KCppdCktPnNjb3BlKCkpKQorICAgICAgICAgICAgaWYgKCgqaXQpLT5tb2RlKCkgPT0gSW5kZXhl
ZERCOjpUcmFuc2FjdGlvblJlYWRXcml0ZSAmJiBkb1Njb3Blc092ZXJsYXAodHJhbnNhY3Rpb24t
PnNjb3BlKCksICgqaXQpLT5zY29wZSgpKSkKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgICAgIH0KICAgICAgICAgZm9yIChMaXN0SGFzaFNldDxJREJUcmFuc2FjdGlvbkJhY2tl
bmRJbXBsKj46OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbV9xdWV1ZWRUcmFuc2FjdGlvbnMuYmVnaW4o
KTsgKml0ICE9IHRyYW5zYWN0aW9uOyArK2l0KSB7CiAgICAgICAgICAgICBBU1NFUlQoaXQgIT0g
bV9xdWV1ZWRUcmFuc2FjdGlvbnMuZW5kKCkpOwotICAgICAgICAgICAgaWYgKCgqaXQpLT5tb2Rl
KCkgPT0gSURCVHJhbnNhY3Rpb246OlJFQURfV1JJVEUgJiYgZG9TY29wZXNPdmVybGFwKHRyYW5z
YWN0aW9uLT5zY29wZSgpLCAoKml0KS0+c2NvcGUoKSkpCisgICAgICAgICAgICBpZiAoKCppdCkt
Pm1vZGUoKSA9PSBJbmRleGVkREI6OlRyYW5zYWN0aW9uUmVhZFdyaXRlICYmIGRvU2NvcGVzT3Zl
cmxhcCh0cmFuc2FjdGlvbi0+c2NvcGUoKSwgKCppdCktPnNjb3BlKCkpKQogICAgICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQogICAgICAgICByZXR1cm4gdHJ1ZTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0luZGV4ZWREQi5oIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSW5kZXhlZERCLmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMmU4
NGZjNzIxYTVjMzIzNjQyYTY4M2IxMTQ5MmQwMzg0NGI0ZmVjOAotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0luZGV4ZWREQi5oCkBAIC0wLDAgKzEs
NTkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICog
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaWZuZGVmIEluZGV4ZWREQl9oCisjZGVmaW5lIEluZGV4ZWREQl9oCisK
KyNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitu
YW1lc3BhY2UgSW5kZXhlZERCIHsKKworZW51bSBUcmFuc2FjdGlvbk1vZGUgeworICAgIFRyYW5z
YWN0aW9uUmVhZE9ubHkgPSAwLAorICAgIFRyYW5zYWN0aW9uUmVhZFdyaXRlID0gMSwKKyAgICBU
cmFuc2FjdGlvblZlcnNpb25DaGFuZ2UgPSAyCit9OworCitlbnVtIEN1cnNvckRpcmVjdGlvbiB7
CisgICAgQ3Vyc29yTmV4dCA9IDAsCisgICAgQ3Vyc29yTmV4dE5vRHVwbGljYXRlID0gMSwKKyAg
ICBDdXJzb3JQcmV2ID0gMiwKKyAgICBDdXJzb3JQcmV2Tm9EdXBsaWNhdGUgPSAzLAorfTsKKwor
ZW51bSBDdXJzb3JUeXBlIHsKKyAgICBDdXJzb3JLZXlBbmRWYWx1ZSA9IDAsCisgICAgQ3Vyc29y
S2V5T25seQorfTsKKworfSAvLyBuYW1lc3BhY2UgSW5kZXhlZERCCisKK30gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRUQoSU5ERVhFRF9EQVRBQkFTRSkKKworI2VuZGlm
IC8vIEluZGV4ZWREQl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpIGIv
U291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQppbmRleCAzNDQ4OWI5NDJkNjU5MTU0NWYzMmMwYTQ5
NGE3OTFlZmNlZjQ1ZjJkLi44MTNlZjdmMjcwMmEyNzlmYmM0ZjZhM2ZhMTYzNWE2MmRlODkyODgy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCisrKyBiL1NvdXJjZS9XZWJD
b3JlL1RhcmdldC5wcmkKQEAgLTMxMDYsOCArMzEwNiw4IEBAIGVuYWJsZT8oSU5ERVhFRF9EQVRB
QkFTRSkgewogICAgICAgICBNb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUV4Y2VwdGlvbi5o
IFwKICAgICAgICAgTW9kdWxlcy9pbmRleGVkZGIvSURCRXZlbnREaXNwYXRjaGVyLmggXAogICAg
ICAgICBNb2R1bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5LmggXAotICAgICAgICBNb2R1bGVzL2lu
ZGV4ZWRkYi9JREJGYWN0b3J5QmFja2VuZEludGVyZmFjZS5oIFwKICAgICAgICAgTW9kdWxlcy9p
bmRleGVkZGIvSURCRmFjdG9yeUJhY2tlbmRJbXBsLmggXAorICAgICAgICBNb2R1bGVzL2luZGV4
ZWRkYi9JREJGYWN0b3J5QmFja2VuZEludGVyZmFjZS5oIFwKICAgICAgICAgTW9kdWxlcy9pbmRl
eGVkZGIvSURCSGlzdG9ncmFtcy5oIFwKICAgICAgICAgTW9kdWxlcy9pbmRleGVkZGIvSURCSW5k
ZXguaCBcCiAgICAgICAgIE1vZHVsZXMvaW5kZXhlZGRiL0lEQktleS5oIFwKQEAgLTMxMTUsNyAr
MzExNSw4IEBAIGVuYWJsZT8oSU5ERVhFRF9EQVRBQkFTRSkgewogICAgICAgICBNb2R1bGVzL2lu
ZGV4ZWRkYi9JREJPYmplY3RTdG9yZS5oIFwKICAgICAgICAgTW9kdWxlcy9pbmRleGVkZGIvSURC
T2JqZWN0U3RvcmVCYWNrZW5kSW1wbC5oIFwKICAgICAgICAgTW9kdWxlcy9pbmRleGVkZGIvSURC
UmVxdWVzdC5oIFwKLSAgICAgICAgTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb24uaAor
ICAgICAgICBNb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5oIFwKKyAgICAgICAgTW9k
dWxlcy9pbmRleGVkZGIvSW5kZXhlZERCLmgKIAogICAgIFNPVVJDRVMgKz0gXAogICAgICAgICBi
aW5kaW5ncy9qcy9JREJCaW5kaW5nVXRpbGl0aWVzLmNwcCBcCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLmd5cGkgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKaW5kZXgg
YThhZWRjZGRmZTY5YmQwMWUzM2VjMTllZDMxNTE3NjdjYWU0ZTM2NS4uNGJlMGQ0MDJhZWJlODY5
NGNiNWRiM2Q0YjdmMDI0ZWYzN2YwMTI2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS5neXBpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpAQCAtNzExLDYgKzcx
MSw3IEBACiAgICAgICAgICAgICAnTW9kdWxlcy9pbmRleGVkZGIvRE9NV2luZG93SW5kZXhlZERh
dGFiYXNlLmgnLAogICAgICAgICAgICAgJ01vZHVsZXMvaW5kZXhlZGRiL0lEQkFueS5jcHAnLAog
ICAgICAgICAgICAgJ01vZHVsZXMvaW5kZXhlZGRiL0lEQkFueS5oJywKKyAgICAgICAgICAgICdN
b2R1bGVzL2luZGV4ZWRkYi9JREJCYWNraW5nU3RvcmUuY3BwJywKICAgICAgICAgICAgICdNb2R1
bGVzL2luZGV4ZWRkYi9JREJCYWNraW5nU3RvcmUuaCcsCiAgICAgICAgICAgICAnTW9kdWxlcy9p
bmRleGVkZGIvSURCQ2FsbGJhY2tzLmgnLAogICAgICAgICAgICAgJ01vZHVsZXMvaW5kZXhlZGRi
L0lEQkN1cnNvci5jcHAnLApAQCAtNzUxLDcgKzc1Miw2IEBACiAgICAgICAgICAgICAnTW9kdWxl
cy9pbmRleGVkZGIvSURCS2V5UmFuZ2UuaCcsCiAgICAgICAgICAgICAnTW9kdWxlcy9pbmRleGVk
ZGIvSURCTGV2ZWxEQkNvZGluZy5jcHAnLAogICAgICAgICAgICAgJ01vZHVsZXMvaW5kZXhlZGRi
L0lEQkxldmVsREJDb2RpbmcuaCcsCi0gICAgICAgICAgICAnTW9kdWxlcy9pbmRleGVkZGIvSURC
QmFja2luZ1N0b3JlLmNwcCcsCiAgICAgICAgICAgICAnTW9kdWxlcy9pbmRleGVkZGIvSURCTWV0
YWRhdGEuaCcsCiAgICAgICAgICAgICAnTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmUu
Y3BwJywKICAgICAgICAgICAgICdNb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZS5oJywK
QEAgLTc3Miw2ICs3NzIsNyBAQAogICAgICAgICAgICAgJ01vZHVsZXMvaW5kZXhlZGRiL0lEQlRy
YW5zYWN0aW9uQ29vcmRpbmF0b3IuaCcsCiAgICAgICAgICAgICAnTW9kdWxlcy9pbmRleGVkZGIv
SURCVmVyc2lvbkNoYW5nZUV2ZW50LmNwcCcsCiAgICAgICAgICAgICAnTW9kdWxlcy9pbmRleGVk
ZGIvSURCVmVyc2lvbkNoYW5nZUV2ZW50LmgnLAorICAgICAgICAgICAgJ01vZHVsZXMvaW5kZXhl
ZGRiL0luZGV4ZWREQi5oJywKICAgICAgICAgICAgICdNb2R1bGVzL2luZGV4ZWRkYi9QYWdlR3Jv
dXBJbmRleGVkRGF0YWJhc2UuY3BwJywKICAgICAgICAgICAgICdNb2R1bGVzL2luZGV4ZWRkYi9Q
YWdlR3JvdXBJbmRleGVkRGF0YWJhc2UuaCcsCiAgICAgICAgICAgICAnTW9kdWxlcy9pbmRleGVk
ZGIvV29ya2VyQ29udGV4dEluZGV4ZWREYXRhYmFzZS5jcHAnLApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvQXNzZXJ0TWF0Y2hpbmdFbnVtcy5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9Bc3NlcnRNYXRjaGluZ0VudW1zLmNwcAppbmRleCA4YWQwODQ0NDJj
ZjEyYjA5ZTE0MmRlODEzYTQzNTJjMWY0MDc4ZDFlLi4wYjBlNDQ4ZDkzNjYwYjQzMzU4MGViYjY1
NGFjN2YzNDA1Y2NkNTY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9B
c3NlcnRNYXRjaGluZ0VudW1zLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9B
c3NlcnRNYXRjaGluZ0VudW1zLmNwcApAQCAtNTA0LDEwICs1MDQsMTAgQEAgQ09NUElMRV9BU1NF
UlRfTUFUQ0hJTkdfRU5VTShXZWJJREJLZXlQYXRoOjpBcnJheVR5cGUsIElEQktleVBhdGg6OkFy
cmF5VHlwZSk7CiAKIENPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oV2ViSURCTWV0YWRhdGE6
Ok5vSW50VmVyc2lvbiwgSURCRGF0YWJhc2VNZXRhZGF0YTo6Tm9JbnRWZXJzaW9uKTsKIAotQ09N
UElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShXZWJJREJDdXJzb3I6Ok5leHQsIElEQkN1cnNvcjo6
TkVYVCk7Ci1DT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKFdlYklEQkN1cnNvcjo6TmV4dE5v
RHVwbGljYXRlLCBJREJDdXJzb3I6Ok5FWFRfTk9fRFVQTElDQVRFKTsKLUNPTVBJTEVfQVNTRVJU
X01BVENISU5HX0VOVU0oV2ViSURCQ3Vyc29yOjpQcmV2LCBJREJDdXJzb3I6OlBSRVYpOwotQ09N
UElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShXZWJJREJDdXJzb3I6OlByZXZOb0R1cGxpY2F0ZSwg
SURCQ3Vyc29yOjpQUkVWX05PX0RVUExJQ0FURSk7CitDT01QSUxFX0FTU0VSVF9NQVRDSElOR19F
TlVNKFdlYklEQkN1cnNvcjo6TmV4dCwgSW5kZXhlZERCOjpDdXJzb3JOZXh0KTsKK0NPTVBJTEVf
QVNTRVJUX01BVENISU5HX0VOVU0oV2ViSURCQ3Vyc29yOjpOZXh0Tm9EdXBsaWNhdGUsIEluZGV4
ZWREQjo6Q3Vyc29yTmV4dE5vRHVwbGljYXRlKTsKK0NPTVBJTEVfQVNTRVJUX01BVENISU5HX0VO
VU0oV2ViSURCQ3Vyc29yOjpQcmV2LCBJbmRleGVkREI6OkN1cnNvclByZXYpOworQ09NUElMRV9B
U1NFUlRfTUFUQ0hJTkdfRU5VTShXZWJJREJDdXJzb3I6OlByZXZOb0R1cGxpY2F0ZSwgSW5kZXhl
ZERCOjpDdXJzb3JQcmV2Tm9EdXBsaWNhdGUpOwogCiBDT01QSUxFX0FTU0VSVF9NQVRDSElOR19F
TlVNKFdlYklEQkRhdGFiYXNlOjpQcmVlbXB0aXZlVGFzaywgSURCRGF0YWJhc2VCYWNrZW5kSW50
ZXJmYWNlOjpQcmVlbXB0aXZlVGFzayk7CiBDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKFdl
YklEQkRhdGFiYXNlOjpOb3JtYWxUYXNrLCBJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2U6Ok5v
cm1hbFRhc2spOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCRGF0
YWJhc2VCYWNrZW5kUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCRGF0
YWJhc2VCYWNrZW5kUHJveHkuY3BwCmluZGV4IDM1NWQ4MDg5ZWVjYzZkM2M0NGJkOGNiYTA0MTEx
ZjI2ZWZmMTkzNGYuLjJjMmE1ZTdlOWZkNTY0MmE1OTcyMDQ4YjI5YTZjMDJhN2JlMGRiYjEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkRhdGFiYXNlQmFja2VuZFBy
b3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJEYXRhYmFzZUJhY2tl
bmRQcm94eS5jcHAKQEAgLTkzLDcgKzkzLDcgQEAgdm9pZCBJREJEYXRhYmFzZUJhY2tlbmRQcm94
eTo6YWJvcnQoaW50NjRfdCB0cmFuc2FjdGlvbklkLCBQYXNzUmVmUHRyPElEQkRhdGFiYXMKICAg
ICBtX3dlYklEQkRhdGFiYXNlLT5hYm9ydCh0cmFuc2FjdGlvbklkLCBlcnJvcik7CiB9CiAKLXZv
aWQgSURCRGF0YWJhc2VCYWNrZW5kUHJveHk6Om9wZW5DdXJzb3IoaW50NjRfdCB0cmFuc2FjdGlv
bklkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGludDY0X3QgaW5kZXhJZCwgUGFzc1JlZlB0cjxJ
REJLZXlSYW5nZT4ga2V5UmFuZ2UsIHVuc2lnbmVkIHNob3J0IGRpcmVjdGlvbiwgYm9vbCBrZXlP
bmx5LCBUYXNrVHlwZSB0YXNrVHlwZSwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNr
cykKK3ZvaWQgSURCRGF0YWJhc2VCYWNrZW5kUHJveHk6Om9wZW5DdXJzb3IoaW50NjRfdCB0cmFu
c2FjdGlvbklkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGludDY0X3QgaW5kZXhJZCwgUGFzc1Jl
ZlB0cjxJREJLZXlSYW5nZT4ga2V5UmFuZ2UsIEluZGV4ZWREQjo6Q3Vyc29yRGlyZWN0aW9uIGRp
cmVjdGlvbiwgYm9vbCBrZXlPbmx5LCBUYXNrVHlwZSB0YXNrVHlwZSwgUGFzc1JlZlB0cjxJREJD
YWxsYmFja3M+IGNhbGxiYWNrcykKIHsKICAgICBtX3dlYklEQkRhdGFiYXNlLT5vcGVuQ3Vyc29y
KHRyYW5zYWN0aW9uSWQsIG9iamVjdFN0b3JlSWQsIGluZGV4SWQsIGtleVJhbmdlLCBzdGF0aWNf
Y2FzdDxXZWJJREJDdXJzb3I6OkRpcmVjdGlvbj4oZGlyZWN0aW9uKSwga2V5T25seSwgc3RhdGlj
X2Nhc3Q8V2ViSURCRGF0YWJhc2U6OlRhc2tUeXBlPih0YXNrVHlwZSksIG5ldyBXZWJJREJDYWxs
YmFja3NJbXBsKGNhbGxiYWNrcykpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvSURCRGF0YWJhc2VCYWNrZW5kUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL0lEQkRhdGFiYXNlQmFja2VuZFByb3h5LmgKaW5kZXggZGJkOTY0MmYxMTIwZDk5OGRh
Zjk3Y2I1ZmE5YTUyMGJiZDVkNmQ1MS4uNWQ1ZDkwOGY5OGJlM2FhODVjMjVkNjM0YzVmYjEwNDJl
ZWIyZjc4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCRGF0YWJh
c2VCYWNrZW5kUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJEYXRh
YmFzZUJhY2tlbmRQcm94eS5oCkBAIC01NSw3ICs1NSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFs
IHZvaWQgcHV0KGludDY0X3QgdHJhbnNhY3Rpb25JZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBQ
YXNzUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gdmFsdWUsIFBhc3NSZWZQdHI8V2ViQ29y
ZTo6SURCS2V5PiwgUHV0TW9kZSwgUGFzc1JlZlB0cjxXZWJDb3JlOjpJREJDYWxsYmFja3M+LCBj
b25zdCBWZWN0b3I8aW50NjRfdD4mIGluZGV4SWRzLCBjb25zdCBWZWN0b3I8SW5kZXhLZXlzPiYp
IE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBzZXRJbmRleEtleXMoaW50NjRfdCB0cmFuc2Fj
dGlvbklkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIFBhc3NSZWZQdHI8V2ViQ29yZTo6SURCS2V5
PiBwcnBQcmltYXJ5S2V5LCBjb25zdCBWZWN0b3I8aW50NjRfdD4mIGluZGV4SWRzLCBjb25zdCBW
ZWN0b3I8SW5kZXhLZXlzPiYpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBzZXRJbmRleGVz
UmVhZHkoaW50NjRfdCB0cmFuc2FjdGlvbklkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGNvbnN0
IFZlY3RvcjxpbnQ2NF90PiYgaW5kZXhJZHMpIE9WRVJSSURFOwotICAgIHZpcnR1YWwgdm9pZCBv
cGVuQ3Vyc29yKGludDY0X3QgdHJhbnNhY3Rpb25JZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBp
bnQ2NF90IGluZGV4SWQsIFBhc3NSZWZQdHI8V2ViQ29yZTo6SURCS2V5UmFuZ2U+LCB1bnNpZ25l
ZCBzaG9ydCBkaXJlY3Rpb24sIGJvb2wga2V5T25seSwgVGFza1R5cGUsIFBhc3NSZWZQdHI8V2Vi
Q29yZTo6SURCQ2FsbGJhY2tzPikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIG9wZW5DdXJz
b3IoaW50NjRfdCB0cmFuc2FjdGlvbklkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGludDY0X3Qg
aW5kZXhJZCwgUGFzc1JlZlB0cjxXZWJDb3JlOjpJREJLZXlSYW5nZT4sIFdlYkNvcmU6OkluZGV4
ZWREQjo6Q3Vyc29yRGlyZWN0aW9uLCBib29sIGtleU9ubHksIFRhc2tUeXBlLCBQYXNzUmVmUHRy
PFdlYkNvcmU6OklEQkNhbGxiYWNrcz4pIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBjb3Vu
dChpbnQ2NF90IHRyYW5zYWN0aW9uSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgaW50NjRfdCBp
bmRleElkLCBQYXNzUmVmUHRyPFdlYkNvcmU6OklEQktleVJhbmdlPiwgUGFzc1JlZlB0cjxXZWJD
b3JlOjpJREJDYWxsYmFja3M+KSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlUmFu
Z2UoaW50NjRfdCB0cmFuc2FjdGlvbklkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIFBhc3NSZWZQ
dHI8V2ViQ29yZTo6SURCS2V5UmFuZ2U+LCBQYXNzUmVmUHRyPFdlYkNvcmU6OklEQkNhbGxiYWNr
cz4pIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBjbGVhcihpbnQ2NF90IHRyYW5zYWN0aW9u
SWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgUGFzc1JlZlB0cjxXZWJDb3JlOjpJREJDYWxsYmFj
a3M+KSBPVkVSUklERTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dl
YklEQkNhbGxiYWNrc0ltcGwuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURC
Q2FsbGJhY2tzSW1wbC5jcHAKaW5kZXggMDVmYzg4ZjViY2IzNTNkODNhZDRlNDRlYzBiMWI5Y2Q3
NmM4NDRlYi4uMzM5MDU4ZWRkZjM0YzdiZjQyYjY0MDRjODk2YzVmZTMzZjZhOGZiMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCQ2FsbGJhY2tzSW1wbC5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCQ2FsbGJhY2tzSW1wbC5jcHAK
QEAgLTM0LDYgKzM0LDcgQEAKICNpbmNsdWRlICJJREJEYXRhYmFzZUJhY2tlbmRQcm94eS5oIgog
I2luY2x1ZGUgIklEQkRhdGFiYXNlRXJyb3IuaCIKICNpbmNsdWRlICJJREJLZXkuaCIKKyNpbmNs
dWRlICJJREJNZXRhZGF0YS5oIgogI2luY2x1ZGUgIldlYkRPTVN0cmluZ0xpc3QuaCIKICNpbmNs
dWRlICJXZWJJREJDYWxsYmFja3MuaCIKICNpbmNsdWRlICJXZWJJREJEYXRhYmFzZS5oIgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCRGF0YWJhc2VJbXBsLmNw
cCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkRhdGFiYXNlSW1wbC5jcHAKaW5k
ZXggYTE4MDUxNTBkMmNhNmRjNzdkZjg2MWI2MmQwYWFiM2E5ZTVkYjJhYi4uZTRkYTdlZTIzMTI5
ZjZmNjljODMwZDYwYTAwOWNlNWRmMTk0MzJmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvV2ViSURCRGF0YWJhc2VJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9XZWJJREJEYXRhYmFzZUltcGwuY3BwCkBAIC0xMTgsNyArMTE4LDcgQEAgdm9p
ZCBXZWJJREJEYXRhYmFzZUltcGw6OmNvbW1pdChsb25nIGxvbmcgdHJhbnNhY3Rpb25JZCkKIHZv
aWQgV2ViSURCRGF0YWJhc2VJbXBsOjpvcGVuQ3Vyc29yKGxvbmcgbG9uZyB0cmFuc2FjdGlvbklk
LCBsb25nIGxvbmcgb2JqZWN0U3RvcmVJZCwgbG9uZyBsb25nIGluZGV4SWQsIGNvbnN0IFdlYklE
QktleVJhbmdlJiBrZXlSYW5nZSwgdW5zaWduZWQgc2hvcnQgZGlyZWN0aW9uLCBib29sIGtleU9u
bHksIFRhc2tUeXBlIHRhc2tUeXBlLCBXZWJJREJDYWxsYmFja3MqIGNhbGxiYWNrcykKIHsKICAg
ICBpZiAobV9kYXRhYmFzZUJhY2tlbmQpCi0gICAgICAgIG1fZGF0YWJhc2VCYWNrZW5kLT5vcGVu
Q3Vyc29yKHRyYW5zYWN0aW9uSWQsIG9iamVjdFN0b3JlSWQsIGluZGV4SWQsIGtleVJhbmdlLCBz
dGF0aWNfY2FzdDxJREJDdXJzb3I6OkRpcmVjdGlvbj4oZGlyZWN0aW9uKSwga2V5T25seSwgc3Rh
dGljX2Nhc3Q8SURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlOjpUYXNrVHlwZT4odGFza1R5cGUp
LCBJREJDYWxsYmFja3NQcm94eTo6Y3JlYXRlKGFkb3B0UHRyKGNhbGxiYWNrcykpKTsKKyAgICAg
ICAgbV9kYXRhYmFzZUJhY2tlbmQtPm9wZW5DdXJzb3IodHJhbnNhY3Rpb25JZCwgb2JqZWN0U3Rv
cmVJZCwgaW5kZXhJZCwga2V5UmFuZ2UsIHN0YXRpY19jYXN0PEluZGV4ZWREQjo6Q3Vyc29yRGly
ZWN0aW9uPihkaXJlY3Rpb24pLCBrZXlPbmx5LCBzdGF0aWNfY2FzdDxJREJEYXRhYmFzZUJhY2tl
bmRJbnRlcmZhY2U6OlRhc2tUeXBlPih0YXNrVHlwZSksIElEQkNhbGxiYWNrc1Byb3h5OjpjcmVh
dGUoYWRvcHRQdHIoY2FsbGJhY2tzKSkpOwogfQogCiB2b2lkIFdlYklEQkRhdGFiYXNlSW1wbDo6
Y291bnQobG9uZyBsb25nIHRyYW5zYWN0aW9uSWQsIGxvbmcgbG9uZyBvYmplY3RTdG9yZUlkLCBs
b25nIGxvbmcgaW5kZXhJZCwgY29uc3QgV2ViSURCS2V5UmFuZ2UmIGtleVJhbmdlLCBXZWJJREJD
YWxsYmFja3MqIGNhbGxiYWNrcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
dGVzdHMvSURCQWJvcnRPbkNvcnJ1cHRUZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
dGVzdHMvSURCQWJvcnRPbkNvcnJ1cHRUZXN0LmNwcAppbmRleCBlNjNjZTJhODZiMmE5M2Q2YjIy
ZTZmODA0MzhiZmQ3ODJiZDkxMWI5Li5jNDNjYTNmNDhmYzU1NzJmYjVhZTFjOGNhY2MwY2IzMzQ0
ZTMwMGFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0lEQkFib3J0
T25Db3JydXB0VGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9JREJB
Ym9ydE9uQ29ycnVwdFRlc3QuY3BwCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiSURCRGF0
YWJhc2VDYWxsYmFja3MuaCIKICNpbmNsdWRlICJJREJGYWN0b3J5QmFja2VuZEltcGwuaCIKICNp
bmNsdWRlICJJREJGYWtlQmFja2luZ1N0b3JlLmgiCisjaW5jbHVkZSAiSW5kZXhlZERCLmgiCiAj
aW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKICNpbmNsdWRlIDxndGVzdC9ndGVzdC5oPgogI2lu
Y2x1ZGUgPHd0Zi9WZWN0b3IuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
dGVzdHMvSURCRGF0YWJhc2VCYWNrZW5kVGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3Rlc3RzL0lEQkRhdGFiYXNlQmFja2VuZFRlc3QuY3BwCmluZGV4IDQ1YjllMmJiMmJmYWNhMWYw
YWMxMTliN2Y1NWUyYTVjNDFiMTQ1ZWQuLmQxODQwMjViY2I0NzM0MzlhNGU1NDhkMjNhYTAyMDcy
ZWQwYTkyZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvSURCRGF0
YWJhc2VCYWNrZW5kVGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9J
REJEYXRhYmFzZUJhY2tlbmRUZXN0LmNwcApAQCAtMjQsNiArMjQsOSBAQAogICovCiAKICNpbmNs
dWRlICJjb25maWcuaCIKKworI2luY2x1ZGUgIklEQkRhdGFiYXNlLmgiCisKICNpbmNsdWRlICJJ
REJCYWNraW5nU3RvcmUuaCIKICNpbmNsdWRlICJJREJDdXJzb3JCYWNrZW5kSW50ZXJmYWNlLmgi
CiAjaW5jbHVkZSAiSURCRGF0YWJhc2VCYWNrZW5kSW1wbC5oIgpAQCAtMzEsNiArMzQsNyBAQAog
I2luY2x1ZGUgIklEQkZhY3RvcnlCYWNrZW5kSW1wbC5oIgogI2luY2x1ZGUgIklEQkZha2VCYWNr
aW5nU3RvcmUuaCIKICNpbmNsdWRlICJJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsLmgiCisjaW5j
bHVkZSAiSW5kZXhlZERCLmgiCiAjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCiAjaW5jbHVkZSAi
V2ViSURCRGF0YWJhc2VDYWxsYmFja3NJbXBsLmgiCiAjaW5jbHVkZSAiV2ViSURCRGF0YWJhc2VJ
bXBsLmgiCkBAIC0xNTEsNyArMTU1LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBhYm9y
dChpbnQ2NF90IHRyYW5zYWN0aW9uSWQsIFBhc3NSZWZQdHI8SURCRGF0YWJhc2VFcnJvcj4pIE9W
RVJSSURFIHsgfQogICAgIHZpcnR1YWwgdm9pZCBjb21taXQoaW50NjRfdCB0cmFuc2FjdGlvbklk
KSBPVkVSUklERSB7IH0KIAotICAgIHZpcnR1YWwgdm9pZCBvcGVuQ3Vyc29yKGludDY0X3QgdHJh
bnNhY3Rpb25JZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBpbnQ2NF90IGluZGV4SWQsIFBhc3NS
ZWZQdHI8SURCS2V5UmFuZ2U+LCB1bnNpZ25lZCBzaG9ydCBkaXJlY3Rpb24sIGJvb2wga2V5T25s
eSwgVGFza1R5cGUsIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPikgT1ZFUlJJREUgeyB9CisgICAg
dmlydHVhbCB2b2lkIG9wZW5DdXJzb3IoaW50NjRfdCB0cmFuc2FjdGlvbklkLCBpbnQ2NF90IG9i
amVjdFN0b3JlSWQsIGludDY0X3QgaW5kZXhJZCwgUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4sIElu
ZGV4ZWREQjo6Q3Vyc29yRGlyZWN0aW9uLCBib29sIGtleU9ubHksIFRhc2tUeXBlLCBQYXNzUmVm
UHRyPElEQkNhbGxiYWNrcz4pIE9WRVJSSURFIHsgfQogICAgIHZpcnR1YWwgdm9pZCBjb3VudChp
bnQ2NF90IG9iamVjdFN0b3JlSWQsIGludDY0X3QgaW5kZXhJZCwgaW50NjRfdCB0cmFuc2FjdGlv
bklkLCBQYXNzUmVmUHRyPElEQktleVJhbmdlPiwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+KSBP
VkVSUklERSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZ2V0KGludDY0X3Qgb2JqZWN0U3RvcmVJZCwg
aW50NjRfdCBpbmRleElkLCBpbnQ2NF90IHRyYW5zYWN0aW9uSWQsIFBhc3NSZWZQdHI8SURCS2V5
UmFuZ2U+LCBib29sIGtleU9ubHksIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPikgT1ZFUlJJREUg
eyB9CiAgICAgdmlydHVhbCB2b2lkIHB1dChpbnQ2NF90IHRyYW5zYWN0aW9uSWQsIGludDY0X3Qg
b2JqZWN0U3RvcmVJZCwgUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+LCBQYXNzUmVmUHRyPElEQktl
eT4sIFB1dE1vZGUsIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiwgY29uc3QgVmVjdG9yPGludDY0
X3Q+JiBpbmRleElkcywgY29uc3QgVmVjdG9yPEluZGV4S2V5cz4mKSBPVkVSUklERSB7IH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvSURCRmFrZUJhY2tpbmdTdG9y
ZS5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9JREJGYWtlQmFja2luZ1N0b3JlLmgK
aW5kZXggM2VkNzI0YmI0ZWIwYTJiYmY4OGI2NDYxYTUyZmY0MjdiNjhlYmIzMi4uZWVmYzY0OGFk
MjNhNDVjMmNjODdjMjRjYmNiMzQyMTYyMWQ3NGU2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS90ZXN0cy9JREJGYWtlQmFja2luZ1N0b3JlLmgKKysrIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS90ZXN0cy9JREJGYWtlQmFja2luZ1N0b3JlLmgKQEAgLTUxLDEwICs1MSwxMCBA
QCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRlbGV0ZUluZGV4KFRyYW5zYWN0aW9uKiwgaW50
NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGludDY0X3QgaW5kZXhJZCkg
T1ZFUlJJREUgeyB9CiAgICAgdmlydHVhbCB2b2lkIHB1dEluZGV4RGF0YUZvclJlY29yZChUcmFu
c2FjdGlvbiosIGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBpbnQ2
NF90IGluZGV4SWQsIGNvbnN0IElEQktleSYsIGNvbnN0IFJlY29yZElkZW50aWZpZXImKSBPVkVS
UklERSB7IH0KIAotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxDdXJzb3I+IG9wZW5PYmplY3RTdG9y
ZUtleUN1cnNvcihUcmFuc2FjdGlvbiosIGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmpl
Y3RTdG9yZUlkLCBjb25zdCBJREJLZXlSYW5nZSosIElEQkN1cnNvcjo6RGlyZWN0aW9uKSBPVkVS
UklERSB7IHJldHVybiBQYXNzUmVmUHRyPEN1cnNvcj4oKTsgfQotICAgIHZpcnR1YWwgUGFzc1Jl
ZlB0cjxDdXJzb3I+IG9wZW5PYmplY3RTdG9yZUN1cnNvcihUcmFuc2FjdGlvbiosIGludDY0X3Qg
ZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBjb25zdCBJREJLZXlSYW5nZSosIElE
QkN1cnNvcjo6RGlyZWN0aW9uKSBPVkVSUklERSB7IHJldHVybiBQYXNzUmVmUHRyPEN1cnNvcj4o
KTsgfQotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxDdXJzb3I+IG9wZW5JbmRleEtleUN1cnNvcihU
cmFuc2FjdGlvbiosIGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBp
bnQ2NF90IGluZGV4SWQsIGNvbnN0IElEQktleVJhbmdlKiwgSURCQ3Vyc29yOjpEaXJlY3Rpb24p
IE9WRVJSSURFIHsgcmV0dXJuIFBhc3NSZWZQdHI8Q3Vyc29yPigpOyB9Ci0gICAgdmlydHVhbCBQ
YXNzUmVmUHRyPEN1cnNvcj4gb3BlbkluZGV4Q3Vyc29yKFRyYW5zYWN0aW9uKiwgaW50NjRfdCBk
YXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGludDY0X3QgaW5kZXhJZCwgY29uc3Qg
SURCS2V5UmFuZ2UqLCBJREJDdXJzb3I6OkRpcmVjdGlvbikgT1ZFUlJJREUgeyByZXR1cm4gUGFz
c1JlZlB0cjxDdXJzb3I+KCk7IH0KKyAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8Q3Vyc29yPiBvcGVu
T2JqZWN0U3RvcmVLZXlDdXJzb3IoVHJhbnNhY3Rpb24qLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGlu
dDY0X3Qgb2JqZWN0U3RvcmVJZCwgY29uc3QgSURCS2V5UmFuZ2UqLCBJbmRleGVkREI6OkN1cnNv
ckRpcmVjdGlvbikgT1ZFUlJJREUgeyByZXR1cm4gUGFzc1JlZlB0cjxDdXJzb3I+KCk7IH0KKyAg
ICB2aXJ0dWFsIFBhc3NSZWZQdHI8Q3Vyc29yPiBvcGVuT2JqZWN0U3RvcmVDdXJzb3IoVHJhbnNh
Y3Rpb24qLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgY29uc3Qg
SURCS2V5UmFuZ2UqLCBJbmRleGVkREI6OkN1cnNvckRpcmVjdGlvbikgT1ZFUlJJREUgeyByZXR1
cm4gUGFzc1JlZlB0cjxDdXJzb3I+KCk7IH0KKyAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8Q3Vyc29y
PiBvcGVuSW5kZXhLZXlDdXJzb3IoVHJhbnNhY3Rpb24qLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGlu
dDY0X3Qgb2JqZWN0U3RvcmVJZCwgaW50NjRfdCBpbmRleElkLCBjb25zdCBJREJLZXlSYW5nZSos
IEluZGV4ZWREQjo6Q3Vyc29yRGlyZWN0aW9uKSBPVkVSUklERSB7IHJldHVybiBQYXNzUmVmUHRy
PEN1cnNvcj4oKTsgfQorICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxDdXJzb3I+IG9wZW5JbmRleEN1
cnNvcihUcmFuc2FjdGlvbiosIGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9y
ZUlkLCBpbnQ2NF90IGluZGV4SWQsIGNvbnN0IElEQktleVJhbmdlKiwgSW5kZXhlZERCOjpDdXJz
b3JEaXJlY3Rpb24pIE9WRVJSSURFIHsgcmV0dXJuIFBhc3NSZWZQdHI8Q3Vyc29yPigpOyB9CiB9
OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>190877</attachid>
            <date>2013-02-28 20:49:21 -0800</date>
            <delta_ts>2013-03-01 09:56:20 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-110653-20130228204533.patch</filename>
            <type>text/plain</type>
            <size>90623</size>
            <attacher name="Alec Flett">alecflett</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ0MjYxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTcyNTUyMTIzZWQ2Yzhk
OWUxODg0ZjFiMGQwZWQ5YzVkMjg3NjNjZC4uMzI1MDQ5MTYxNjlhZTlhNzhlMDRlY2NlN2NmNDc3
ZjdmNmZmNTcxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisyMDEzLTAyLTIyICBBbGVj
IEZsZXR0ICA8YWxlY2ZsZXR0QGNocm9taXVtLm9yZz4KKworICAgICAgICBJbmRleGVkREI6IFBy
b3Blcmx5IHJlZmFjdG9yIGZyb250ZW5kL2JhY2tlbmQgY29kZSBieSAjaW5jbHVkZXMKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExMDY1MworCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEluZGV4ZWREQiBoYXMg
YSBkaXN0aW5jdCBiYWNrZW5kIGFuZCBmcm9udGVuZCwgd2l0aCB3ZWxsIGRlZmluZWQKKyAgICAg
ICAgKkludGVyZmFjZSAvICpDYWxsYmFja3MgY2xhc3NlcyBkaXN0aW5ndWlzaGluZyB0aGVtLCBy
ZXNwZWN0aXZlbHkuCisgICAgICAgIAorICAgICAgICBUaGlzIG1ha2VzIHN1cmUgdGhhdCB0aGUg
ZnJvbnRlbmQgYW5kIGJhY2tlbmQgZG8gbm90IGluY2x1ZGUgZWFjaAorICAgICAgICBvdGhlciBh
bmQgZml4ZXMgYnVpbGQgcHJvYmxlbXMgdGhhdCBvY2N1cnJlZCBhcyBhIHJlc3VsdC4KKworICAg
ICAgICBTcGVjaWZpY2FsbHkgdGhpcyBtb3ZlcyBlbnVtcyBvdXQgb2YgSURCQ3Vyc29yIGFuZCBJ
REJUcmFuc2FjdGlvbgorICAgICAgICBpbnRvIEluZGV4ZWREQi5oIGluIGEgbmV3IFdlYkNvcmU6
OkluZGV4ZWREQiBuYW1lc3BhY2UuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCBhcyB0aGlzIGlz
IGp1c3QgYSByZWZhY3Rvci4KKwogMjAxMy0wMi0yNyAgVGllbi1SZW4gQ2hlbiAgPHRyY2hlbkBj
aHJvbWl1bS5vcmc+CiAKICAgICAgICAgTmVlZCB0byByZS1sYXlvdXQgZml4ZWQgcG9zaXRpb24g
ZWxlbWVudHMgYWZ0ZXIgc2NhbGUgd2hlbiB1c2luZyBzZXR0aW5ncygpLT5maXhlZEVsZW1lbnRz
TGF5b3V0UmVsYXRpdmVUb0ZyYW1lKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggMGZj
OWY1NjM3NzE5ZWUxY2Y3NDhlMTVmZDdmMzI0ODkzZDFhMmVmMS4uZGY0MmY2ZjNkZTM5MmM3MDAx
YjIxM2Q2ZWI1NDk0YjNmNWNmZDg2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMyBAQAorMjAxMy0wMi0yMiAgQWxlYyBGbGV0dCAgPGFsZWNmbGV0dEBjaHJvbWl1bS5v
cmc+CisKKyAgICAgICAgSW5kZXhlZERCOiBQcm9wZXJseSByZWZhY3RvciBmcm9udGVuZC9iYWNr
ZW5kIGNvZGUgYnkgI2luY2x1ZGVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xMTA2NTMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBDbGVhbiB1cCB0aGUgZnJvbnRlbmQvYmFja2VuZCBXZWJJREIqIGltcGxl
bWVudGF0aW9ucyB0bworICAgICAgICBtYXRjaCB0aGUgY2hhbmdlcyB0byB3ZWJraXQuCisKIDIw
MTMtMDItMjcgIFNlaWdvIE5vbmFrYSAgPG5vbmFAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtD
aHJvbWl1bV0gU2hvdWxkIG5vdCByZXR1cm4gV2ViVGV4dElucHV0VHlwZU5vbmUgZm9yIGRhdGUg
aW5wdXQgZWxlbWVudC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxp
c3QuYW0gYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCmluZGV4IDVjYjc4MzAy
NWJkMTM0NDI0MGUzMzZlZTZkNzcxNWQyMTI1NjkxNzEuLjg1OTZjNTQ4ZjhlNDE4NDQ4MTA0NTUx
ZmM1YzMyYWNhNDIwM2Q2MjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxl
Lmxpc3QuYW0KKysrIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQpAQCAtMTkx
Nyw2ICsxOTE3LDcgQEAgd2ViY29yZV9tb2R1bGVzX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmggXAogCVNvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL0lEQlZlcnNpb25DaGFuZ2VFdmVudC5jcHAgXAogCVNvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlZlcnNpb25DaGFuZ2VFdmVudC5oIFwKKwlTb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JbmRleGVkREIuaCBcCiAJU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvUGFnZUdyb3VwSW5kZXhlZERhdGFiYXNlLmNwcCBcCiAJU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvUGFnZUdyb3VwSW5kZXhlZERhdGFiYXNlLmgg
XAogCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL1dvcmtlckNvbnRleHRJbmRleGVk
RGF0YWJhc2UuY3BwIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL0lEQkJhY2tpbmdTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9JREJCYWNraW5nU3RvcmUuY3BwCmluZGV4IDM3MGNjMTU5NWZmZmY3Y2ZhMTllMDQ3MWZhNGFl
YjI1NzM5M2NmZTYuLjE2MGVkMmQxNTAwZGU1NTQ1OWI0NGZiMmEzMGQzMDA2YWZmZjBlMjIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkJhY2tpbmdTdG9y
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQmFja2luZ1N0
b3JlLmNwcApAQCAtMTI3OSw3ICsxMjc5LDcgQEAgYm9vbCBJREJCYWNraW5nU3RvcmU6OkN1cnNv
cjo6Y29udGludWVGdW5jdGlvbihjb25zdCBJREJLZXkqIGtleSwgSXRlcmF0b3JTdGF0ZQogewog
ICAgIFJlZlB0cjxJREJLZXk+IHByZXZpb3VzS2V5ID0gbV9jdXJyZW50S2V5OwogCi0gICAgLy8g
V2hlbiBpdGVyYXRpbmcgd2l0aCBQUkVWX05PX0RVUExJQ0FURSwgc3BlYyByZXF1aXJlcyB0aGF0
IHRoZQorICAgIC8vIFdoZW4gaXRlcmF0aW5nIHdpdGggUHJldk5vRHVwbGljYXRlLCBzcGVjIHJl
cXVpcmVzIHRoYXQgdGhlCiAgICAgLy8gdmFsdWUgd2UgeWllbGQgZm9yIGVhY2gga2V5IGlzIHRo
ZSBmaXJzdCBkdXBsaWNhdGUgaW4gZm9yd2FyZHMKICAgICAvLyBvcmRlci4KICAgICBSZWZQdHI8
SURCS2V5PiBsYXN0RHVwbGljYXRlS2V5OwpAQCAtMTY4OSwxMiArMTY4OSwxMiBAQCBib29sIElu
ZGV4Q3Vyc29ySW1wbDo6bG9hZEN1cnJlbnRSb3coKQogICAgIHJldHVybiB0cnVlOwogfQogCi1i
b29sIG9iamVjdFN0b3JlQ3Vyc29yT3B0aW9ucyhMZXZlbERCVHJhbnNhY3Rpb24qIHRyYW5zYWN0
aW9uLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgY29uc3QgSURC
S2V5UmFuZ2UqIHJhbmdlLCBJREJDdXJzb3I6OkRpcmVjdGlvbiBkaXJlY3Rpb24sIElEQkJhY2tp
bmdTdG9yZTo6Q3Vyc29yOjpDdXJzb3JPcHRpb25zJiBjdXJzb3JPcHRpb25zKQorYm9vbCBvYmpl
Y3RTdG9yZUN1cnNvck9wdGlvbnMoTGV2ZWxEQlRyYW5zYWN0aW9uKiB0cmFuc2FjdGlvbiwgaW50
NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGNvbnN0IElEQktleVJhbmdl
KiByYW5nZSwgSW5kZXhlZERCOjpDdXJzb3JEaXJlY3Rpb24gZGlyZWN0aW9uLCBJREJCYWNraW5n
U3RvcmU6OkN1cnNvcjo6Q3Vyc29yT3B0aW9ucyYgY3Vyc29yT3B0aW9ucykKIHsKICAgICBib29s
IGxvd2VyQm91bmQgPSByYW5nZSAmJiByYW5nZS0+bG93ZXIoKTsKICAgICBib29sIHVwcGVyQm91
bmQgPSByYW5nZSAmJiByYW5nZS0+dXBwZXIoKTsKLSAgICBjdXJzb3JPcHRpb25zLmZvcndhcmQg
PSAoZGlyZWN0aW9uID09IElEQkN1cnNvcjo6TkVYVF9OT19EVVBMSUNBVEUgfHwgZGlyZWN0aW9u
ID09IElEQkN1cnNvcjo6TkVYVCk7Ci0gICAgY3Vyc29yT3B0aW9ucy51bmlxdWUgPSAoZGlyZWN0
aW9uID09IElEQkN1cnNvcjo6TkVYVF9OT19EVVBMSUNBVEUgfHwgZGlyZWN0aW9uID09IElEQkN1
cnNvcjo6UFJFVl9OT19EVVBMSUNBVEUpOworICAgIGN1cnNvck9wdGlvbnMuZm9yd2FyZCA9IChk
aXJlY3Rpb24gPT0gSW5kZXhlZERCOjpDdXJzb3JOZXh0Tm9EdXBsaWNhdGUgfHwgZGlyZWN0aW9u
ID09IEluZGV4ZWREQjo6Q3Vyc29yTmV4dCk7CisgICAgY3Vyc29yT3B0aW9ucy51bmlxdWUgPSAo
ZGlyZWN0aW9uID09IEluZGV4ZWREQjo6Q3Vyc29yTmV4dE5vRHVwbGljYXRlIHx8IGRpcmVjdGlv
biA9PSBJbmRleGVkREI6OkN1cnNvclByZXZOb0R1cGxpY2F0ZSk7CiAKICAgICBpZiAoIWxvd2Vy
Qm91bmQpIHsKICAgICAgICAgY3Vyc29yT3B0aW9ucy5sb3dLZXkgPSBPYmplY3RTdG9yZURhdGFL
ZXk6OmVuY29kZShkYXRhYmFzZUlkLCBvYmplY3RTdG9yZUlkLCBtaW5JREJLZXkoKSk7CkBAIC0x
NzM2LDEzICsxNzM2LDEzIEBAIGJvb2wgb2JqZWN0U3RvcmVDdXJzb3JPcHRpb25zKExldmVsREJU
cmFuc2FjdGlvbiogdHJhbnNhY3Rpb24sIGludDY0X3QgZGF0YWJhc2VJCiAgICAgcmV0dXJuIHRy
dWU7CiB9CiAKLWJvb2wgaW5kZXhDdXJzb3JPcHRpb25zKExldmVsREJUcmFuc2FjdGlvbiogdHJh
bnNhY3Rpb24sIGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBpbnQ2
NF90IGluZGV4SWQsIGNvbnN0IElEQktleVJhbmdlKiByYW5nZSwgSURCQ3Vyc29yOjpEaXJlY3Rp
b24gZGlyZWN0aW9uLCBJREJCYWNraW5nU3RvcmU6OkN1cnNvcjo6Q3Vyc29yT3B0aW9ucyYgY3Vy
c29yT3B0aW9ucykKK2Jvb2wgaW5kZXhDdXJzb3JPcHRpb25zKExldmVsREJUcmFuc2FjdGlvbiog
dHJhbnNhY3Rpb24sIGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBp
bnQ2NF90IGluZGV4SWQsIGNvbnN0IElEQktleVJhbmdlKiByYW5nZSwgSW5kZXhlZERCOjpDdXJz
b3JEaXJlY3Rpb24gZGlyZWN0aW9uLCBJREJCYWNraW5nU3RvcmU6OkN1cnNvcjo6Q3Vyc29yT3B0
aW9ucyYgY3Vyc29yT3B0aW9ucykKIHsKICAgICBBU1NFUlQodHJhbnNhY3Rpb24pOwogICAgIGJv
b2wgbG93ZXJCb3VuZCA9IHJhbmdlICYmIHJhbmdlLT5sb3dlcigpOwogICAgIGJvb2wgdXBwZXJC
b3VuZCA9IHJhbmdlICYmIHJhbmdlLT51cHBlcigpOwotICAgIGN1cnNvck9wdGlvbnMuZm9yd2Fy
ZCA9IChkaXJlY3Rpb24gPT0gSURCQ3Vyc29yOjpORVhUX05PX0RVUExJQ0FURSB8fCBkaXJlY3Rp
b24gPT0gSURCQ3Vyc29yOjpORVhUKTsKLSAgICBjdXJzb3JPcHRpb25zLnVuaXF1ZSA9IChkaXJl
Y3Rpb24gPT0gSURCQ3Vyc29yOjpORVhUX05PX0RVUExJQ0FURSB8fCBkaXJlY3Rpb24gPT0gSURC
Q3Vyc29yOjpQUkVWX05PX0RVUExJQ0FURSk7CisgICAgY3Vyc29yT3B0aW9ucy5mb3J3YXJkID0g
KGRpcmVjdGlvbiA9PSBJbmRleGVkREI6OkN1cnNvck5leHROb0R1cGxpY2F0ZSB8fCBkaXJlY3Rp
b24gPT0gSW5kZXhlZERCOjpDdXJzb3JOZXh0KTsKKyAgICBjdXJzb3JPcHRpb25zLnVuaXF1ZSA9
IChkaXJlY3Rpb24gPT0gSW5kZXhlZERCOjpDdXJzb3JOZXh0Tm9EdXBsaWNhdGUgfHwgZGlyZWN0
aW9uID09IEluZGV4ZWREQjo6Q3Vyc29yUHJldk5vRHVwbGljYXRlKTsKIAogICAgIGlmICghbG93
ZXJCb3VuZCkgewogICAgICAgICBjdXJzb3JPcHRpb25zLmxvd0tleSA9IEluZGV4RGF0YUtleTo6
ZW5jb2RlTWluS2V5KGRhdGFiYXNlSWQsIG9iamVjdFN0b3JlSWQsIGluZGV4SWQpOwpAQCAtMTc3
OSw3ICsxNzc5LDcgQEAgYm9vbCBpbmRleEN1cnNvck9wdGlvbnMoTGV2ZWxEQlRyYW5zYWN0aW9u
KiB0cmFuc2FjdGlvbiwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQKICAgICByZXR1cm4gdHJ1ZTsK
IH0KIAotUGFzc1JlZlB0cjxJREJCYWNraW5nU3RvcmU6OkN1cnNvcj4gSURCQmFja2luZ1N0b3Jl
OjpvcGVuT2JqZWN0U3RvcmVDdXJzb3IoSURCQmFja2luZ1N0b3JlOjpUcmFuc2FjdGlvbiogdHJh
bnNhY3Rpb24sIGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBjb25z
dCBJREJLZXlSYW5nZSogcmFuZ2UsIElEQkN1cnNvcjo6RGlyZWN0aW9uIGRpcmVjdGlvbikKK1Bh
c3NSZWZQdHI8SURCQmFja2luZ1N0b3JlOjpDdXJzb3I+IElEQkJhY2tpbmdTdG9yZTo6b3Blbk9i
amVjdFN0b3JlQ3Vyc29yKElEQkJhY2tpbmdTdG9yZTo6VHJhbnNhY3Rpb24qIHRyYW5zYWN0aW9u
LCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgY29uc3QgSURCS2V5
UmFuZ2UqIHJhbmdlLCBJbmRleGVkREI6OkN1cnNvckRpcmVjdGlvbiBkaXJlY3Rpb24pCiB7CiAg
ICAgSURCX1RSQUNFKCJJREJCYWNraW5nU3RvcmU6Om9wZW5PYmplY3RTdG9yZUN1cnNvciIpOwog
ICAgIExldmVsREJUcmFuc2FjdGlvbiogbGV2ZWxEQlRyYW5zYWN0aW9uID0gSURCQmFja2luZ1N0
b3JlOjpUcmFuc2FjdGlvbjo6bGV2ZWxEQlRyYW5zYWN0aW9uRnJvbSh0cmFuc2FjdGlvbik7CkBA
IC0xNzkzLDcgKzE3OTMsNyBAQCBQYXNzUmVmUHRyPElEQkJhY2tpbmdTdG9yZTo6Q3Vyc29yPiBJ
REJCYWNraW5nU3RvcmU6Om9wZW5PYmplY3RTdG9yZUN1cnNvcihJREJCYQogICAgIHJldHVybiBj
dXJzb3IucmVsZWFzZSgpOwogfQogCi1QYXNzUmVmUHRyPElEQkJhY2tpbmdTdG9yZTo6Q3Vyc29y
PiBJREJCYWNraW5nU3RvcmU6Om9wZW5PYmplY3RTdG9yZUtleUN1cnNvcihJREJCYWNraW5nU3Rv
cmU6OlRyYW5zYWN0aW9uKiB0cmFuc2FjdGlvbiwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90
IG9iamVjdFN0b3JlSWQsIGNvbnN0IElEQktleVJhbmdlKiByYW5nZSwgSURCQ3Vyc29yOjpEaXJl
Y3Rpb24gZGlyZWN0aW9uKQorUGFzc1JlZlB0cjxJREJCYWNraW5nU3RvcmU6OkN1cnNvcj4gSURC
QmFja2luZ1N0b3JlOjpvcGVuT2JqZWN0U3RvcmVLZXlDdXJzb3IoSURCQmFja2luZ1N0b3JlOjpU
cmFuc2FjdGlvbiogdHJhbnNhY3Rpb24sIGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmpl
Y3RTdG9yZUlkLCBjb25zdCBJREJLZXlSYW5nZSogcmFuZ2UsIEluZGV4ZWREQjo6Q3Vyc29yRGly
ZWN0aW9uIGRpcmVjdGlvbikKIHsKICAgICBJREJfVFJBQ0UoIklEQkJhY2tpbmdTdG9yZTo6b3Bl
bk9iamVjdFN0b3JlS2V5Q3Vyc29yIik7CiAgICAgTGV2ZWxEQlRyYW5zYWN0aW9uKiBsZXZlbERC
VHJhbnNhY3Rpb24gPSBJREJCYWNraW5nU3RvcmU6OlRyYW5zYWN0aW9uOjpsZXZlbERCVHJhbnNh
Y3Rpb25Gcm9tKHRyYW5zYWN0aW9uKTsKQEAgLTE4MDcsNyArMTgwNyw3IEBAIFBhc3NSZWZQdHI8
SURCQmFja2luZ1N0b3JlOjpDdXJzb3I+IElEQkJhY2tpbmdTdG9yZTo6b3Blbk9iamVjdFN0b3Jl
S2V5Q3Vyc29yKElECiAgICAgcmV0dXJuIGN1cnNvci5yZWxlYXNlKCk7CiB9CiAKLVBhc3NSZWZQ
dHI8SURCQmFja2luZ1N0b3JlOjpDdXJzb3I+IElEQkJhY2tpbmdTdG9yZTo6b3BlbkluZGV4S2V5
Q3Vyc29yKElEQkJhY2tpbmdTdG9yZTo6VHJhbnNhY3Rpb24qIHRyYW5zYWN0aW9uLCBpbnQ2NF90
IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgaW50NjRfdCBpbmRleElkLCBjb25z
dCBJREJLZXlSYW5nZSogcmFuZ2UsIElEQkN1cnNvcjo6RGlyZWN0aW9uIGRpcmVjdGlvbikKK1Bh
c3NSZWZQdHI8SURCQmFja2luZ1N0b3JlOjpDdXJzb3I+IElEQkJhY2tpbmdTdG9yZTo6b3Blbklu
ZGV4S2V5Q3Vyc29yKElEQkJhY2tpbmdTdG9yZTo6VHJhbnNhY3Rpb24qIHRyYW5zYWN0aW9uLCBp
bnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgaW50NjRfdCBpbmRleElk
LCBjb25zdCBJREJLZXlSYW5nZSogcmFuZ2UsIEluZGV4ZWREQjo6Q3Vyc29yRGlyZWN0aW9uIGRp
cmVjdGlvbikKIHsKICAgICBJREJfVFJBQ0UoIklEQkJhY2tpbmdTdG9yZTo6b3BlbkluZGV4S2V5
Q3Vyc29yIik7CiAgICAgTGV2ZWxEQlRyYW5zYWN0aW9uKiBsZXZlbERCVHJhbnNhY3Rpb24gPSBJ
REJCYWNraW5nU3RvcmU6OlRyYW5zYWN0aW9uOjpsZXZlbERCVHJhbnNhY3Rpb25Gcm9tKHRyYW5z
YWN0aW9uKTsKQEAgLTE4MjEsNyArMTgyMSw3IEBAIFBhc3NSZWZQdHI8SURCQmFja2luZ1N0b3Jl
OjpDdXJzb3I+IElEQkJhY2tpbmdTdG9yZTo6b3BlbkluZGV4S2V5Q3Vyc29yKElEQkJhY2tpCiAg
ICAgcmV0dXJuIGN1cnNvci5yZWxlYXNlKCk7CiB9CiAKLVBhc3NSZWZQdHI8SURCQmFja2luZ1N0
b3JlOjpDdXJzb3I+IElEQkJhY2tpbmdTdG9yZTo6b3BlbkluZGV4Q3Vyc29yKElEQkJhY2tpbmdT
dG9yZTo6VHJhbnNhY3Rpb24qIHRyYW5zYWN0aW9uLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0
X3Qgb2JqZWN0U3RvcmVJZCwgaW50NjRfdCBpbmRleElkLCBjb25zdCBJREJLZXlSYW5nZSogcmFu
Z2UsIElEQkN1cnNvcjo6RGlyZWN0aW9uIGRpcmVjdGlvbikKK1Bhc3NSZWZQdHI8SURCQmFja2lu
Z1N0b3JlOjpDdXJzb3I+IElEQkJhY2tpbmdTdG9yZTo6b3BlbkluZGV4Q3Vyc29yKElEQkJhY2tp
bmdTdG9yZTo6VHJhbnNhY3Rpb24qIHRyYW5zYWN0aW9uLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGlu
dDY0X3Qgb2JqZWN0U3RvcmVJZCwgaW50NjRfdCBpbmRleElkLCBjb25zdCBJREJLZXlSYW5nZSog
cmFuZ2UsIEluZGV4ZWREQjo6Q3Vyc29yRGlyZWN0aW9uIGRpcmVjdGlvbikKIHsKICAgICBJREJf
VFJBQ0UoIklEQkJhY2tpbmdTdG9yZTo6b3BlbkluZGV4Q3Vyc29yIik7CiAgICAgTGV2ZWxEQlRy
YW5zYWN0aW9uKiBsZXZlbERCVHJhbnNhY3Rpb24gPSBJREJCYWNraW5nU3RvcmU6OlRyYW5zYWN0
aW9uOjpsZXZlbERCVHJhbnNhY3Rpb25Gcm9tKHRyYW5zYWN0aW9uKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkJhY2tpbmdTdG9yZS5oIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQmFja2luZ1N0b3JlLmgKaW5kZXggOGI0OWJj
OGE0MjFjNjA2MWJlY2FmNjA3YmNlYjhlMzFjMDY3NzUzZC4uMTcyYzgyZGRmYTVkMDg0MWUxZDlk
MmExNTgxM2QyNDA4ZDFiNGYwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvSURCQmFja2luZ1N0b3JlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvSURCQmFja2luZ1N0b3JlLmgKQEAgLTI4LDggKzI4LDggQEAKIAogI2lmIEVOQUJM
RShJTkRFWEVEX0RBVEFCQVNFKQogCi0jaW5jbHVkZSAiSURCQ3Vyc29yLmgiCiAjaW5jbHVkZSAi
SURCTWV0YWRhdGEuaCIKKyNpbmNsdWRlICJJbmRleGVkREIuaCIKICNpbmNsdWRlICJMZXZlbERC
VHJhbnNhY3Rpb24uaCIKICNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1Jl
ZkNvdW50ZWQuaD4KQEAgLTEzOCwxMCArMTM4LDEwIEBAIHB1YmxpYzoKICAgICAgICAgSURCQmFj
a2luZ1N0b3JlOjpSZWNvcmRJZGVudGlmaWVyIG1fcmVjb3JkSWRlbnRpZmllcjsKICAgICB9Owog
Ci0gICAgdmlydHVhbCBQYXNzUmVmUHRyPEN1cnNvcj4gb3Blbk9iamVjdFN0b3JlS2V5Q3Vyc29y
KElEQkJhY2tpbmdTdG9yZTo6VHJhbnNhY3Rpb24qLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0
X3Qgb2JqZWN0U3RvcmVJZCwgY29uc3QgSURCS2V5UmFuZ2UqLCBJREJDdXJzb3I6OkRpcmVjdGlv
bik7Ci0gICAgdmlydHVhbCBQYXNzUmVmUHRyPEN1cnNvcj4gb3Blbk9iamVjdFN0b3JlQ3Vyc29y
KElEQkJhY2tpbmdTdG9yZTo6VHJhbnNhY3Rpb24qLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0
X3Qgb2JqZWN0U3RvcmVJZCwgY29uc3QgSURCS2V5UmFuZ2UqLCBJREJDdXJzb3I6OkRpcmVjdGlv
bik7Ci0gICAgdmlydHVhbCBQYXNzUmVmUHRyPEN1cnNvcj4gb3BlbkluZGV4S2V5Q3Vyc29yKElE
QkJhY2tpbmdTdG9yZTo6VHJhbnNhY3Rpb24qLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qg
b2JqZWN0U3RvcmVJZCwgaW50NjRfdCBpbmRleElkLCBjb25zdCBJREJLZXlSYW5nZSosIElEQkN1
cnNvcjo6RGlyZWN0aW9uKTsKLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8Q3Vyc29yPiBvcGVuSW5k
ZXhDdXJzb3IoSURCQmFja2luZ1N0b3JlOjpUcmFuc2FjdGlvbiosIGludDY0X3QgZGF0YWJhc2VJ
ZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBpbnQ2NF90IGluZGV4SWQsIGNvbnN0IElEQktleVJh
bmdlKiwgSURCQ3Vyc29yOjpEaXJlY3Rpb24pOworICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxDdXJz
b3I+IG9wZW5PYmplY3RTdG9yZUtleUN1cnNvcihJREJCYWNraW5nU3RvcmU6OlRyYW5zYWN0aW9u
KiwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGNvbnN0IElEQktl
eVJhbmdlKiwgSW5kZXhlZERCOjpDdXJzb3JEaXJlY3Rpb24pOworICAgIHZpcnR1YWwgUGFzc1Jl
ZlB0cjxDdXJzb3I+IG9wZW5PYmplY3RTdG9yZUN1cnNvcihJREJCYWNraW5nU3RvcmU6OlRyYW5z
YWN0aW9uKiwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGNvbnN0
IElEQktleVJhbmdlKiwgSW5kZXhlZERCOjpDdXJzb3JEaXJlY3Rpb24pOworICAgIHZpcnR1YWwg
UGFzc1JlZlB0cjxDdXJzb3I+IG9wZW5JbmRleEtleUN1cnNvcihJREJCYWNraW5nU3RvcmU6OlRy
YW5zYWN0aW9uKiwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGlu
dDY0X3QgaW5kZXhJZCwgY29uc3QgSURCS2V5UmFuZ2UqLCBJbmRleGVkREI6OkN1cnNvckRpcmVj
dGlvbik7CisgICAgdmlydHVhbCBQYXNzUmVmUHRyPEN1cnNvcj4gb3BlbkluZGV4Q3Vyc29yKElE
QkJhY2tpbmdTdG9yZTo6VHJhbnNhY3Rpb24qLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qg
b2JqZWN0U3RvcmVJZCwgaW50NjRfdCBpbmRleElkLCBjb25zdCBJREJLZXlSYW5nZSosIEluZGV4
ZWREQjo6Q3Vyc29yRGlyZWN0aW9uKTsKIAogICAgIGNsYXNzIFRyYW5zYWN0aW9uIHsKICAgICBw
dWJsaWM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJD
dXJzb3IuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yLmNw
cAppbmRleCA0NjhlZGJlYmE5MTExNjlhMDkzYTJlN2QyMzQ5MDg4ZmNjMjgzNmE1Li43YmIwZjUw
MGU0N2I0MjYxMzQwYTkzMjgxNThhZGU5M2UzNDg1NmM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvci5jcHAKQEAgLTQzLDcgKzQzLDcgQEAKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCi1QYXNzUmVmUHRyPElEQkN1cnNvcj4gSURCQ3Vyc29yOjpjcmVh
dGUoUGFzc1JlZlB0cjxJREJDdXJzb3JCYWNrZW5kSW50ZXJmYWNlPiBiYWNrZW5kLCBEaXJlY3Rp
b24gZGlyZWN0aW9uLCBJREJSZXF1ZXN0KiByZXF1ZXN0LCBJREJBbnkqIHNvdXJjZSwgSURCVHJh
bnNhY3Rpb24qIHRyYW5zYWN0aW9uKQorUGFzc1JlZlB0cjxJREJDdXJzb3I+IElEQkN1cnNvcjo6
Y3JlYXRlKFBhc3NSZWZQdHI8SURCQ3Vyc29yQmFja2VuZEludGVyZmFjZT4gYmFja2VuZCwgSW5k
ZXhlZERCOjpDdXJzb3JEaXJlY3Rpb24gZGlyZWN0aW9uLCBJREJSZXF1ZXN0KiByZXF1ZXN0LCBJ
REJBbnkqIHNvdXJjZSwgSURCVHJhbnNhY3Rpb24qIHRyYW5zYWN0aW9uKQogewogICAgIHJldHVy
biBhZG9wdFJlZihuZXcgSURCQ3Vyc29yKGJhY2tlbmQsIGRpcmVjdGlvbiwgcmVxdWVzdCwgc291
cmNlLCB0cmFuc2FjdGlvbikpOwogfQpAQCAtNzMsNyArNzMsNyBAQCBjb25zdCBBdG9taWNTdHJp
bmcmIElEQkN1cnNvcjo6ZGlyZWN0aW9uUHJldlVuaXF1ZSgpCiB9CiAKIAotSURCQ3Vyc29yOjpJ
REJDdXJzb3IoUGFzc1JlZlB0cjxJREJDdXJzb3JCYWNrZW5kSW50ZXJmYWNlPiBiYWNrZW5kLCBE
aXJlY3Rpb24gZGlyZWN0aW9uLCBJREJSZXF1ZXN0KiByZXF1ZXN0LCBJREJBbnkqIHNvdXJjZSwg
SURCVHJhbnNhY3Rpb24qIHRyYW5zYWN0aW9uKQorSURCQ3Vyc29yOjpJREJDdXJzb3IoUGFzc1Jl
ZlB0cjxJREJDdXJzb3JCYWNrZW5kSW50ZXJmYWNlPiBiYWNrZW5kLCBJbmRleGVkREI6OkN1cnNv
ckRpcmVjdGlvbiBkaXJlY3Rpb24sIElEQlJlcXVlc3QqIHJlcXVlc3QsIElEQkFueSogc291cmNl
LCBJREJUcmFuc2FjdGlvbiogdHJhbnNhY3Rpb24pCiAgICAgOiBtX2JhY2tlbmQoYmFja2VuZCkK
ICAgICAsIG1fcmVxdWVzdChyZXF1ZXN0KQogICAgICwgbV9kaXJlY3Rpb24oZGlyZWN0aW9uKQpA
QCAtMjA2LDcgKzIwNiw3IEBAIHZvaWQgSURCQ3Vyc29yOjpjb250aW51ZUZ1bmN0aW9uKFBhc3NS
ZWZQdHI8SURCS2V5PiBrZXksIEV4Y2VwdGlvbkNvZGUmIGVjKQogCiAgICAgaWYgKGtleSkgewog
ICAgICAgICBBU1NFUlQobV9jdXJyZW50S2V5KTsKLSAgICAgICAgaWYgKG1fZGlyZWN0aW9uID09
IElEQkN1cnNvcjo6TkVYVCB8fCBtX2RpcmVjdGlvbiA9PSBJREJDdXJzb3I6Ok5FWFRfTk9fRFVQ
TElDQVRFKSB7CisgICAgICAgIGlmIChtX2RpcmVjdGlvbiA9PSBJbmRleGVkREI6OkN1cnNvck5l
eHQgfHwgbV9kaXJlY3Rpb24gPT0gSW5kZXhlZERCOjpDdXJzb3JOZXh0Tm9EdXBsaWNhdGUpIHsK
ICAgICAgICAgICAgIGlmICghbV9jdXJyZW50S2V5LT5pc0xlc3NUaGFuKGtleS5nZXQoKSkpIHsK
ICAgICAgICAgICAgICAgICBlYyA9IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpEYXRhRXJyb3I7CiAg
ICAgICAgICAgICAgICAgcmV0dXJuOwpAQCAtMjk4LDM0ICsyOTgsMzQgQEAgUGFzc1JlZlB0cjxJ
REJPYmplY3RTdG9yZT4gSURCQ3Vyc29yOjplZmZlY3RpdmVPYmplY3RTdG9yZSgpCiAgICAgcmV0
dXJuIGluZGV4LT5vYmplY3RTdG9yZSgpOwogfQogCi1JREJDdXJzb3I6OkRpcmVjdGlvbiBJREJD
dXJzb3I6OnN0cmluZ1RvRGlyZWN0aW9uKGNvbnN0IFN0cmluZyYgZGlyZWN0aW9uU3RyaW5nLCBT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBFeGNlcHRpb25Db2RlJiBlYykKK0luZGV4
ZWREQjo6Q3Vyc29yRGlyZWN0aW9uIElEQkN1cnNvcjo6c3RyaW5nVG9EaXJlY3Rpb24oY29uc3Qg
U3RyaW5nJiBkaXJlY3Rpb25TdHJpbmcsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQs
IEV4Y2VwdGlvbkNvZGUmIGVjKQogewogICAgIGlmIChkaXJlY3Rpb25TdHJpbmcgPT0gSURCQ3Vy
c29yOjpkaXJlY3Rpb25OZXh0KCkpCi0gICAgICAgIHJldHVybiBJREJDdXJzb3I6Ok5FWFQ7Cisg
ICAgICAgIHJldHVybiBJbmRleGVkREI6OkN1cnNvck5leHQ7CiAgICAgaWYgKGRpcmVjdGlvblN0
cmluZyA9PSBJREJDdXJzb3I6OmRpcmVjdGlvbk5leHRVbmlxdWUoKSkKLSAgICAgICAgcmV0dXJu
IElEQkN1cnNvcjo6TkVYVF9OT19EVVBMSUNBVEU7CisgICAgICAgIHJldHVybiBJbmRleGVkREI6
OkN1cnNvck5leHROb0R1cGxpY2F0ZTsKICAgICBpZiAoZGlyZWN0aW9uU3RyaW5nID09IElEQkN1
cnNvcjo6ZGlyZWN0aW9uUHJldigpKQotICAgICAgICByZXR1cm4gSURCQ3Vyc29yOjpQUkVWOwor
ICAgICAgICByZXR1cm4gSW5kZXhlZERCOjpDdXJzb3JQcmV2OwogICAgIGlmIChkaXJlY3Rpb25T
dHJpbmcgPT0gSURCQ3Vyc29yOjpkaXJlY3Rpb25QcmV2VW5pcXVlKCkpCi0gICAgICAgIHJldHVy
biBJREJDdXJzb3I6OlBSRVZfTk9fRFVQTElDQVRFOworICAgICAgICByZXR1cm4gSW5kZXhlZERC
OjpDdXJzb3JQcmV2Tm9EdXBsaWNhdGU7CiAKICAgICBlYyA9IFR5cGVFcnJvcjsKLSAgICByZXR1
cm4gSURCQ3Vyc29yOjpORVhUOworICAgIHJldHVybiBJbmRleGVkREI6OkN1cnNvck5leHQ7CiB9
CiAKIGNvbnN0IEF0b21pY1N0cmluZyYgSURCQ3Vyc29yOjpkaXJlY3Rpb25Ub1N0cmluZyh1bnNp
Z25lZCBzaG9ydCBkaXJlY3Rpb24pCiB7CiAgICAgc3dpdGNoIChkaXJlY3Rpb24pIHsKLSAgICBj
YXNlIElEQkN1cnNvcjo6TkVYVDoKKyAgICBjYXNlIEluZGV4ZWREQjo6Q3Vyc29yTmV4dDoKICAg
ICAgICAgcmV0dXJuIElEQkN1cnNvcjo6ZGlyZWN0aW9uTmV4dCgpOwogCi0gICAgY2FzZSBJREJD
dXJzb3I6Ok5FWFRfTk9fRFVQTElDQVRFOgorICAgIGNhc2UgSW5kZXhlZERCOjpDdXJzb3JOZXh0
Tm9EdXBsaWNhdGU6CiAgICAgICAgIHJldHVybiBJREJDdXJzb3I6OmRpcmVjdGlvbk5leHRVbmlx
dWUoKTsKIAotICAgIGNhc2UgSURCQ3Vyc29yOjpQUkVWOgorICAgIGNhc2UgSW5kZXhlZERCOjpD
dXJzb3JQcmV2OgogICAgICAgICByZXR1cm4gSURCQ3Vyc29yOjpkaXJlY3Rpb25QcmV2KCk7CiAK
LSAgICBjYXNlIElEQkN1cnNvcjo6UFJFVl9OT19EVVBMSUNBVEU6CisgICAgY2FzZSBJbmRleGVk
REI6OkN1cnNvclByZXZOb0R1cGxpY2F0ZToKICAgICAgICAgcmV0dXJuIElEQkN1cnNvcjo6ZGly
ZWN0aW9uUHJldlVuaXF1ZSgpOwogCiAgICAgZGVmYXVsdDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvci5oIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yLmgKaW5kZXggMWM4MzE2NDAyNmRhNDRiM2YwOGVmOTNm
ZjQyZTNhYjQ1ZmZmNTkyYy4uMThkMjAwZWE2MTA2Nzc5N2VhNGM5ZWRjNTE2MWQxNWRiNGIzZGFl
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29y
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yLmgKQEAg
LTMwLDYgKzMwLDcgQEAKIAogI2luY2x1ZGUgIklEQktleS5oIgogI2luY2x1ZGUgIklEQlRyYW5z
YWN0aW9uLmgiCisjaW5jbHVkZSAiSW5kZXhlZERCLmgiCiAjaW5jbHVkZSAiU2NyaXB0VmFsdWUu
aCIKICNpbmNsdWRlICJTY3JpcHRXcmFwcGFibGUuaCIKICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0
ci5oPgpAQCAtNDksMjIgKzUwLDE1IEBAIHR5cGVkZWYgaW50IEV4Y2VwdGlvbkNvZGU7CiAKIGNs
YXNzIElEQkN1cnNvciA6IHB1YmxpYyBTY3JpcHRXcmFwcGFibGUsIHB1YmxpYyBSZWZDb3VudGVk
PElEQkN1cnNvcj4gewogcHVibGljOgotICAgIGVudW0gRGlyZWN0aW9uIHsKLSAgICAgICAgTkVY
VCA9IDAsCi0gICAgICAgIE5FWFRfTk9fRFVQTElDQVRFID0gMSwKLSAgICAgICAgUFJFViA9IDIs
Ci0gICAgICAgIFBSRVZfTk9fRFVQTElDQVRFID0gMywKLSAgICB9OwotCiAgICAgc3RhdGljIGNv
bnN0IEF0b21pY1N0cmluZyYgZGlyZWN0aW9uTmV4dCgpOwogICAgIHN0YXRpYyBjb25zdCBBdG9t
aWNTdHJpbmcmIGRpcmVjdGlvbk5leHRVbmlxdWUoKTsKICAgICBzdGF0aWMgY29uc3QgQXRvbWlj
U3RyaW5nJiBkaXJlY3Rpb25QcmV2KCk7CiAgICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYg
ZGlyZWN0aW9uUHJldlVuaXF1ZSgpOwogCi0gICAgc3RhdGljIElEQkN1cnNvcjo6RGlyZWN0aW9u
IHN0cmluZ1RvRGlyZWN0aW9uKGNvbnN0IFN0cmluZyYgbW9kZVN0cmluZywgU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCosIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICBzdGF0aWMgSW5kZXhlZERCOjpDdXJz
b3JEaXJlY3Rpb24gc3RyaW5nVG9EaXJlY3Rpb24oY29uc3QgU3RyaW5nJiBtb2RlU3RyaW5nLCBT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiwgRXhjZXB0aW9uQ29kZSYpOwogICAgIHN0YXRpYyBjb25z
dCBBdG9taWNTdHJpbmcmIGRpcmVjdGlvblRvU3RyaW5nKHVuc2lnbmVkIHNob3J0IG1vZGUpOwog
Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8SURCQ3Vyc29yPiBjcmVhdGUoUGFzc1JlZlB0cjxJREJD
dXJzb3JCYWNrZW5kSW50ZXJmYWNlPiwgRGlyZWN0aW9uLCBJREJSZXF1ZXN0KiwgSURCQW55KiBz
b3VyY2UsIElEQlRyYW5zYWN0aW9uKik7CisgICAgc3RhdGljIFBhc3NSZWZQdHI8SURCQ3Vyc29y
PiBjcmVhdGUoUGFzc1JlZlB0cjxJREJDdXJzb3JCYWNrZW5kSW50ZXJmYWNlPiwgSW5kZXhlZERC
OjpDdXJzb3JEaXJlY3Rpb24sIElEQlJlcXVlc3QqLCBJREJBbnkqIHNvdXJjZSwgSURCVHJhbnNh
Y3Rpb24qKTsKICAgICB2aXJ0dWFsIH5JREJDdXJzb3IoKTsKIAogICAgIC8vIEltcGxlbWVudCB0
aGUgSURMCkBAIC04OSw3ICs4Myw3IEBAIHB1YmxpYzoKICAgICBQYXNzUmVmUHRyPElEQktleT4g
aWRiUHJpbWFyeUtleSgpIHsgcmV0dXJuIG1fY3VycmVudFByaW1hcnlLZXk7IH0KIAogcHJvdGVj
dGVkOgotICAgIElEQkN1cnNvcihQYXNzUmVmUHRyPElEQkN1cnNvckJhY2tlbmRJbnRlcmZhY2U+
LCBEaXJlY3Rpb24sIElEQlJlcXVlc3QqLCBJREJBbnkqIHNvdXJjZSwgSURCVHJhbnNhY3Rpb24q
KTsKKyAgICBJREJDdXJzb3IoUGFzc1JlZlB0cjxJREJDdXJzb3JCYWNrZW5kSW50ZXJmYWNlPiwg
SW5kZXhlZERCOjpDdXJzb3JEaXJlY3Rpb24sIElEQlJlcXVlc3QqLCBJREJBbnkqIHNvdXJjZSwg
SURCVHJhbnNhY3Rpb24qKTsKICAgICB2aXJ0dWFsIGJvb2wgaXNLZXlDdXJzb3IoKSBjb25zdCB7
IHJldHVybiB0cnVlOyB9CiAKIHByaXZhdGU6CkBAIC05Nyw3ICs5MSw3IEBAIHByaXZhdGU6CiAK
ICAgICBSZWZQdHI8SURCQ3Vyc29yQmFja2VuZEludGVyZmFjZT4gbV9iYWNrZW5kOwogICAgIFJl
ZlB0cjxJREJSZXF1ZXN0PiBtX3JlcXVlc3Q7Ci0gICAgY29uc3QgRGlyZWN0aW9uIG1fZGlyZWN0
aW9uOworICAgIGNvbnN0IEluZGV4ZWREQjo6Q3Vyc29yRGlyZWN0aW9uIG1fZGlyZWN0aW9uOwog
ICAgIFJlZlB0cjxJREJBbnk+IG1fc291cmNlOwogICAgIFJlZlB0cjxJREJUcmFuc2FjdGlvbj4g
bV90cmFuc2FjdGlvbjsKICAgICBJREJUcmFuc2FjdGlvbjo6T3BlbkN1cnNvck5vdGlmaWVyIG1f
dHJhbnNhY3Rpb25Ob3RpZmllcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL0lEQkN1cnNvckJhY2tlbmRJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL0lEQkN1cnNvckJhY2tlbmRJbXBsLmNwcAppbmRleCAzMzJkOTAxNDI1YWIx
YmFhNGE0NGQ4ODljMWQ1ZDIxMmQ2MjgwZWQ4Li4xMzYwZmI5MDIwNWVhMTk4Zjc4YzAzMDdmOTZj
NjI5ZTk4MmZlMzU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9JREJDdXJzb3JCYWNrZW5kSW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvSURCQ3Vyc29yQmFja2VuZEltcGwuY3BwCkBAIC0zNCw3ICszNCw2IEBACiAjaW5j
bHVkZSAiSURCRGF0YWJhc2VFcnJvci5oIgogI2luY2x1ZGUgIklEQkRhdGFiYXNlRXhjZXB0aW9u
LmgiCiAjaW5jbHVkZSAiSURCS2V5UmFuZ2UuaCIKLSNpbmNsdWRlICJJREJSZXF1ZXN0LmgiCiAj
aW5jbHVkZSAiSURCVHJhY2luZy5oIgogI2luY2x1ZGUgIklEQlRyYW5zYWN0aW9uQmFja2VuZElt
cGwuaCIKICNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKQEAgLTEwMSw3ICsxMDAsNyBAQCBwcml2
YXRlOgogICAgIFJlZlB0cjxJREJDYWxsYmFja3M+IG1fY2FsbGJhY2tzOwogfTsKIAotSURCQ3Vy
c29yQmFja2VuZEltcGw6OklEQkN1cnNvckJhY2tlbmRJbXBsKFBhc3NSZWZQdHI8SURCQmFja2lu
Z1N0b3JlOjpDdXJzb3I+IGN1cnNvciwgQ3Vyc29yVHlwZSBjdXJzb3JUeXBlLCBJREJEYXRhYmFz
ZUJhY2tlbmRJbnRlcmZhY2U6OlRhc2tUeXBlIHRhc2tUeXBlLCBJREJUcmFuc2FjdGlvbkJhY2tl
bmRJbXBsKiB0cmFuc2FjdGlvbiwgaW50NjRfdCBvYmplY3RTdG9yZUlkKQorSURCQ3Vyc29yQmFj
a2VuZEltcGw6OklEQkN1cnNvckJhY2tlbmRJbXBsKFBhc3NSZWZQdHI8SURCQmFja2luZ1N0b3Jl
OjpDdXJzb3I+IGN1cnNvciwgSW5kZXhlZERCOjpDdXJzb3JUeXBlIGN1cnNvclR5cGUsIElEQkRh
dGFiYXNlQmFja2VuZEludGVyZmFjZTo6VGFza1R5cGUgdGFza1R5cGUsIElEQlRyYW5zYWN0aW9u
QmFja2VuZEltcGwqIHRyYW5zYWN0aW9uLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQpCiAgICAgOiBt
X3Rhc2tUeXBlKHRhc2tUeXBlKQogICAgICwgbV9jdXJzb3JUeXBlKGN1cnNvclR5cGUpCiAgICAg
LCBtX2RhdGFiYXNlKHRyYW5zYWN0aW9uLT5kYXRhYmFzZSgpKQpAQCAtMTYwLDcgKzE1OSw3IEBA
IHZvaWQgSURCQ3Vyc29yQmFja2VuZEltcGw6OkN1cnNvckl0ZXJhdGlvbk9wZXJhdGlvbjo6cGVy
Zm9ybShJREJUcmFuc2FjdGlvbkJhY2tlCiB2b2lkIElEQkN1cnNvckJhY2tlbmRJbXBsOjpkZWxl
dGVGdW5jdGlvbihQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gcHJwQ2FsbGJhY2tzLCBFeGNlcHRp
b25Db2RlJikKIHsKICAgICBJREJfVFJBQ0UoIklEQkN1cnNvckJhY2tlbmRJbXBsOjpkZWxldGUi
KTsKLSAgICBBU1NFUlQobV90cmFuc2FjdGlvbi0+bW9kZSgpICE9IElEQlRyYW5zYWN0aW9uOjpS
RUFEX09OTFkpOworICAgIEFTU0VSVChtX3RyYW5zYWN0aW9uLT5tb2RlKCkgIT0gSW5kZXhlZERC
OjpUcmFuc2FjdGlvblJlYWRPbmx5KTsKICAgICBSZWZQdHI8SURCS2V5UmFuZ2U+IGtleVJhbmdl
ID0gSURCS2V5UmFuZ2U6OmNyZWF0ZShtX2N1cnNvci0+cHJpbWFyeUtleSgpKTsKICAgICBtX2Rh
dGFiYXNlLT5kZWxldGVSYW5nZShtX3RyYW5zYWN0aW9uLT5pZCgpLCBtX29iamVjdFN0b3JlSWQs
IGtleVJhbmdlLnJlbGVhc2UoKSwgcHJwQ2FsbGJhY2tzKTsKIH0KQEAgLTE5NiwxMCArMTk1LDEw
IEBAIHZvaWQgSURCQ3Vyc29yQmFja2VuZEltcGw6OkN1cnNvclByZWZldGNoSXRlcmF0aW9uT3Bl
cmF0aW9uOjpwZXJmb3JtKElEQlRyYW5zYWN0CiAgICAgICAgIGZvdW5kUHJpbWFyeUtleXMuYXBw
ZW5kKG1fY3Vyc29yLT5tX2N1cnNvci0+cHJpbWFyeUtleSgpKTsKIAogICAgICAgICBzd2l0Y2gg
KG1fY3Vyc29yLT5tX2N1cnNvclR5cGUpIHsKLSAgICAgICAgY2FzZSBLZXlPbmx5OgorICAgICAg
ICBjYXNlIEluZGV4ZWREQjo6Q3Vyc29yS2V5T25seToKICAgICAgICAgICAgIGZvdW5kVmFsdWVz
LmFwcGVuZChTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpKTsKICAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICBjYXNlIEtleUFuZFZhbHVlOgorICAgICAgICBjYXNlIEluZGV4ZWREQjo6Q3Vyc29yS2V5
QW5kVmFsdWU6CiAgICAgICAgICAgICBzaXplRXN0aW1hdGUgKz0gbV9jdXJzb3ItPm1fY3Vyc29y
LT52YWx1ZSgpLT5zaXplKCk7CiAgICAgICAgICAgICBmb3VuZFZhbHVlcy5hcHBlbmQobV9jdXJz
b3ItPm1fY3Vyc29yLT52YWx1ZSgpKTsKICAgICAgICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yQmFja2VuZEltcGwuaCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvckJhY2tlbmRJbXBsLmgK
aW5kZXggNjk5ZTJmNThkNmQxNzYyMWY0Y2ExMjRmZDJlYzhiMGIxMzMxMmE0OC4uNTVlMjZiYjdk
NDQ4ZmQ0YjFlMTY1YTVjYmQzNmU4MzhjYTJlMzU0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yQmFja2VuZEltcGwuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3JCYWNrZW5kSW1wbC5oCkBAIC0zMCw3
ICszMCw2IEBACiAjaWYgRU5BQkxFKElOREVYRURfREFUQUJBU0UpCiAKICNpbmNsdWRlICJJREJC
YWNraW5nU3RvcmUuaCIKLSNpbmNsdWRlICJJREJDdXJzb3IuaCIKICNpbmNsdWRlICJJREJDdXJz
b3JCYWNrZW5kSW50ZXJmYWNlLmgiCiAjaW5jbHVkZSAiSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1w
bC5oIgogI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgpAQCAtNDUsMTEgKzQ0LDExIEBAIGNsYXNz
IElEQktleVJhbmdlOwogCiBjbGFzcyBJREJDdXJzb3JCYWNrZW5kSW1wbCA6IHB1YmxpYyBJREJD
dXJzb3JCYWNrZW5kSW50ZXJmYWNlIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxJ
REJDdXJzb3JCYWNrZW5kSW1wbD4gY3JlYXRlKFBhc3NSZWZQdHI8SURCQmFja2luZ1N0b3JlOjpD
dXJzb3I+IGN1cnNvciwgQ3Vyc29yVHlwZSBjdXJzb3JUeXBlLCBJREJUcmFuc2FjdGlvbkJhY2tl
bmRJbXBsKiB0cmFuc2FjdGlvbiwgaW50NjRfdCBvYmplY3RTdG9yZUlkKQorICAgIHN0YXRpYyBQ
YXNzUmVmUHRyPElEQkN1cnNvckJhY2tlbmRJbXBsPiBjcmVhdGUoUGFzc1JlZlB0cjxJREJCYWNr
aW5nU3RvcmU6OkN1cnNvcj4gY3Vyc29yLCBJbmRleGVkREI6OkN1cnNvclR5cGUgY3Vyc29yVHlw
ZSwgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbCogdHJhbnNhY3Rpb24sIGludDY0X3Qgb2JqZWN0
U3RvcmVJZCkKICAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgSURCQ3Vyc29yQmFj
a2VuZEltcGwoY3Vyc29yLCBjdXJzb3JUeXBlLCBJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2U6
Ok5vcm1hbFRhc2ssIHRyYW5zYWN0aW9uLCBvYmplY3RTdG9yZUlkKSk7CiAgICAgfQotICAgIHN0
YXRpYyBQYXNzUmVmUHRyPElEQkN1cnNvckJhY2tlbmRJbXBsPiBjcmVhdGUoUGFzc1JlZlB0cjxJ
REJCYWNraW5nU3RvcmU6OkN1cnNvcj4gY3Vyc29yLCBDdXJzb3JUeXBlIGN1cnNvclR5cGUsIElE
QkRhdGFiYXNlQmFja2VuZEludGVyZmFjZTo6VGFza1R5cGUgdGFza1R5cGUsIElEQlRyYW5zYWN0
aW9uQmFja2VuZEltcGwqIHRyYW5zYWN0aW9uLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQpCisgICAg
c3RhdGljIFBhc3NSZWZQdHI8SURCQ3Vyc29yQmFja2VuZEltcGw+IGNyZWF0ZShQYXNzUmVmUHRy
PElEQkJhY2tpbmdTdG9yZTo6Q3Vyc29yPiBjdXJzb3IsIEluZGV4ZWREQjo6Q3Vyc29yVHlwZSBj
dXJzb3JUeXBlLCBJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2U6OlRhc2tUeXBlIHRhc2tUeXBl
LCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsKiB0cmFuc2FjdGlvbiwgaW50NjRfdCBvYmplY3RT
dG9yZUlkKQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBJREJDdXJzb3JCYWNr
ZW5kSW1wbChjdXJzb3IsIGN1cnNvclR5cGUsIHRhc2tUeXBlLCB0cmFuc2FjdGlvbiwgb2JqZWN0
U3RvcmVJZCkpOwogICAgIH0KQEAgLTY1LDE4ICs2NCwxOCBAQCBwdWJsaWM6CiAKICAgICBQYXNz
UmVmUHRyPElEQktleT4ga2V5KCkgY29uc3QgeyByZXR1cm4gbV9jdXJzb3ItPmtleSgpOyB9CiAg
ICAgUGFzc1JlZlB0cjxJREJLZXk+IHByaW1hcnlLZXkoKSBjb25zdCB7IHJldHVybiBtX2N1cnNv
ci0+cHJpbWFyeUtleSgpOyB9Ci0gICAgUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+IHZhbHVlKCkg
Y29uc3QgeyByZXR1cm4gKG1fY3Vyc29yVHlwZSA9PSBLZXlPbmx5KSA/IDAgOiBtX2N1cnNvci0+
dmFsdWUoKTsgfQorICAgIFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiB2YWx1ZSgpIGNvbnN0IHsg
cmV0dXJuIChtX2N1cnNvclR5cGUgPT0gSW5kZXhlZERCOjpDdXJzb3JLZXlPbmx5KSA/IDAgOiBt
X2N1cnNvci0+dmFsdWUoKTsgfQogICAgIHZvaWQgY2xvc2UoKTsKIAogcHJpdmF0ZToKLSAgICBJ
REJDdXJzb3JCYWNrZW5kSW1wbChQYXNzUmVmUHRyPElEQkJhY2tpbmdTdG9yZTo6Q3Vyc29yPiwg
Q3Vyc29yVHlwZSwgSURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlOjpUYXNrVHlwZSwgSURCVHJh
bnNhY3Rpb25CYWNrZW5kSW1wbCosIGludDY0X3Qgb2JqZWN0U3RvcmVJZCk7CisgICAgSURCQ3Vy
c29yQmFja2VuZEltcGwoUGFzc1JlZlB0cjxJREJCYWNraW5nU3RvcmU6OkN1cnNvcj4sIEluZGV4
ZWREQjo6Q3Vyc29yVHlwZSwgSURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlOjpUYXNrVHlwZSwg
SURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbCosIGludDY0X3Qgb2JqZWN0U3RvcmVJZCk7CiAKICAg
ICBjbGFzcyBDdXJzb3JJdGVyYXRpb25PcGVyYXRpb247CiAgICAgY2xhc3MgQ3Vyc29yQWR2YW5j
ZU9wZXJhdGlvbjsKICAgICBjbGFzcyBDdXJzb3JQcmVmZXRjaEl0ZXJhdGlvbk9wZXJhdGlvbjsK
IAogICAgIElEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZTo6VGFza1R5cGUgbV90YXNrVHlwZTsK
LSAgICBDdXJzb3JUeXBlIG1fY3Vyc29yVHlwZTsKKyAgICBJbmRleGVkREI6OkN1cnNvclR5cGUg
bV9jdXJzb3JUeXBlOwogICAgIGNvbnN0IFJlZlB0cjxJREJEYXRhYmFzZUJhY2tlbmRJbXBsPiBt
X2RhdGFiYXNlOwogICAgIGNvbnN0IFJlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsPiBt
X3RyYW5zYWN0aW9uOwogICAgIGNvbnN0IGludDY0X3QgbV9vYmplY3RTdG9yZUlkOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yQmFja2VuZElu
dGVyZmFjZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yQmFj
a2VuZEludGVyZmFjZS5oCmluZGV4IGFlYjI5NzZiMDg2MmE3OWFkNDQzODEzZTllNzZjZmEyNmUz
OTBmMTYuLjk2M2YzMmIwMGFiMzA5M2E5Y2ZiOGJlY2FhMmVjODUxYmVjODhhYzYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvckJhY2tlbmRJbnRl
cmZhY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3JC
YWNrZW5kSW50ZXJmYWNlLmgKQEAgLTMzLDcgKzMzLDYgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCi1jbGFzcyBJREJBbnk7CiBjbGFzcyBJREJDYWxsYmFja3M7CiBjbGFzcyBJREJLZXk7CiBj
bGFzcyBJREJSZXF1ZXN0OwpAQCAtNDQsMTEgKzQzLDYgQEAgY2xhc3MgSURCQ3Vyc29yQmFja2Vu
ZEludGVyZmFjZSA6IHB1YmxpYyBSZWZDb3VudGVkPElEQkN1cnNvckJhY2tlbmRJbnRlcmZhY2U+
IHsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5JREJDdXJzb3JCYWNrZW5kSW50ZXJmYWNlKCkge30K
IAotICAgIGVudW0gQ3Vyc29yVHlwZSB7Ci0gICAgICAgIEtleUFuZFZhbHVlID0gMCwKLSAgICAg
ICAgS2V5T25seQotICAgIH07Ci0KICAgICB2aXJ0dWFsIHZvaWQgYWR2YW5jZSh1bnNpZ25lZCBs
b25nIGNvdW50LCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4sIEV4Y2VwdGlvbkNvZGUmKSA9IDA7
CiAgICAgdmlydHVhbCB2b2lkIGNvbnRpbnVlRnVuY3Rpb24oUGFzc1JlZlB0cjxJREJLZXk+IGtl
eSwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+LCBFeGNlcHRpb25Db2RlJikgPSAwOwogICAgIHZp
cnR1YWwgdm9pZCBkZWxldGVGdW5jdGlvbihQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4sIEV4Y2Vw
dGlvbkNvZGUmKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9JREJDdXJzb3JXaXRoVmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvSURCQ3Vyc29yV2l0aFZhbHVlLmNwcAppbmRleCBiOTBiYTNkOWI1MjY1MzE3MDkyYmJl
NTU4MTc1MGRjMDI3ODVkYWFhLi40MDM2MTExMDQ5ZWI1ZDkyOWFkYjIyN2M2ZmUzYTNjYmVjMzZm
MTg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJz
b3JXaXRoVmFsdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lE
QkN1cnNvcldpdGhWYWx1ZS5jcHAKQEAgLTMzLDcgKzMzLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCi1QYXNzUmVmUHRyPElEQkN1cnNvcldpdGhWYWx1ZT4gSURCQ3Vyc29yV2l0aFZhbHVl
OjpjcmVhdGUoUGFzc1JlZlB0cjxJREJDdXJzb3JCYWNrZW5kSW50ZXJmYWNlPiBiYWNrZW5kLCBE
aXJlY3Rpb24gZGlyZWN0aW9uLCBJREJSZXF1ZXN0KiByZXF1ZXN0LCBJREJBbnkqIHNvdXJjZSwg
SURCVHJhbnNhY3Rpb24qIHRyYW5zYWN0aW9uKQorUGFzc1JlZlB0cjxJREJDdXJzb3JXaXRoVmFs
dWU+IElEQkN1cnNvcldpdGhWYWx1ZTo6Y3JlYXRlKFBhc3NSZWZQdHI8SURCQ3Vyc29yQmFja2Vu
ZEludGVyZmFjZT4gYmFja2VuZCwgSW5kZXhlZERCOjpDdXJzb3JEaXJlY3Rpb24gZGlyZWN0aW9u
LCBJREJSZXF1ZXN0KiByZXF1ZXN0LCBJREJBbnkqIHNvdXJjZSwgSURCVHJhbnNhY3Rpb24qIHRy
YW5zYWN0aW9uKQogewogICAgIHJldHVybiBhZG9wdFJlZihuZXcgSURCQ3Vyc29yV2l0aFZhbHVl
KGJhY2tlbmQsIGRpcmVjdGlvbiwgcmVxdWVzdCwgc291cmNlLCB0cmFuc2FjdGlvbikpOwogfQpA
QCAtNDQsNyArNDQsNyBAQCBQYXNzUmVmUHRyPElEQkN1cnNvcldpdGhWYWx1ZT4gSURCQ3Vyc29y
V2l0aFZhbHVlOjpmcm9tQ3Vyc29yKFBhc3NSZWZQdHI8SURCQ3VycwogICAgIHJldHVybiBjdXJz
b3JXaXRoVmFsdWUucmVsZWFzZSgpOwogfQogCi1JREJDdXJzb3JXaXRoVmFsdWU6OklEQkN1cnNv
cldpdGhWYWx1ZShQYXNzUmVmUHRyPElEQkN1cnNvckJhY2tlbmRJbnRlcmZhY2U+IGJhY2tlbmQs
IERpcmVjdGlvbiBkaXJlY3Rpb24sIElEQlJlcXVlc3QqIHJlcXVlc3QsIElEQkFueSogc291cmNl
LCBJREJUcmFuc2FjdGlvbiogdHJhbnNhY3Rpb24pCitJREJDdXJzb3JXaXRoVmFsdWU6OklEQkN1
cnNvcldpdGhWYWx1ZShQYXNzUmVmUHRyPElEQkN1cnNvckJhY2tlbmRJbnRlcmZhY2U+IGJhY2tl
bmQsIEluZGV4ZWREQjo6Q3Vyc29yRGlyZWN0aW9uIGRpcmVjdGlvbiwgSURCUmVxdWVzdCogcmVx
dWVzdCwgSURCQW55KiBzb3VyY2UsIElEQlRyYW5zYWN0aW9uKiB0cmFuc2FjdGlvbikKICAgICA6
IElEQkN1cnNvcihiYWNrZW5kLCBkaXJlY3Rpb24sIHJlcXVlc3QsIHNvdXJjZSwgdHJhbnNhY3Rp
b24pCiB7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9J
REJDdXJzb3JXaXRoVmFsdWUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lE
QkN1cnNvcldpdGhWYWx1ZS5oCmluZGV4IGNiYjg1MGExY2QwMmYwYWEyMDk1MmYyY2ZkYjg4OGZj
OGMwMjg2NTAuLjE1ODIzYTA2MjRhMzFkZTlmMmMyZGQ0M2RjMGM5MzNmNGM3YzYwNGUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvcldpdGhWYWx1
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvcldpdGhW
YWx1ZS5oCkBAIC0zNCw3ICszNCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgSURC
Q3Vyc29yV2l0aFZhbHVlIDogcHVibGljIElEQkN1cnNvciB7CiBwdWJsaWM6Ci0gICAgc3RhdGlj
IFBhc3NSZWZQdHI8SURCQ3Vyc29yV2l0aFZhbHVlPiBjcmVhdGUoUGFzc1JlZlB0cjxJREJDdXJz
b3JCYWNrZW5kSW50ZXJmYWNlPiwgRGlyZWN0aW9uLCBJREJSZXF1ZXN0KiwgSURCQW55KiBzb3Vy
Y2UsIElEQlRyYW5zYWN0aW9uKik7CisgICAgc3RhdGljIFBhc3NSZWZQdHI8SURCQ3Vyc29yV2l0
aFZhbHVlPiBjcmVhdGUoUGFzc1JlZlB0cjxJREJDdXJzb3JCYWNrZW5kSW50ZXJmYWNlPiwgSW5k
ZXhlZERCOjpDdXJzb3JEaXJlY3Rpb24sIElEQlJlcXVlc3QqLCBJREJBbnkqIHNvdXJjZSwgSURC
VHJhbnNhY3Rpb24qKTsKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxJREJDdXJzb3JXaXRoVmFsdWU+
IGZyb21DdXJzb3IoUGFzc1JlZlB0cjxJREJDdXJzb3I+KTsKICAgICB2aXJ0dWFsIH5JREJDdXJz
b3JXaXRoVmFsdWUoKTsKIApAQCAtNDUsNyArNDUsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgdmlydHVh
bCBib29sIGlzS2V5Q3Vyc29yKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gZmFsc2U7IH0KIAog
cHJpdmF0ZToKLSAgICBJREJDdXJzb3JXaXRoVmFsdWUoUGFzc1JlZlB0cjxJREJDdXJzb3JCYWNr
ZW5kSW50ZXJmYWNlPiwgRGlyZWN0aW9uLCBJREJSZXF1ZXN0KiwgSURCQW55KiBzb3VyY2UsIElE
QlRyYW5zYWN0aW9uKik7CisgICAgSURCQ3Vyc29yV2l0aFZhbHVlKFBhc3NSZWZQdHI8SURCQ3Vy
c29yQmFja2VuZEludGVyZmFjZT4sIEluZGV4ZWREQjo6Q3Vyc29yRGlyZWN0aW9uLCBJREJSZXF1
ZXN0KiwgSURCQW55KiBzb3VyY2UsIElEQlRyYW5zYWN0aW9uKik7CiB9OwogCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9JREJEYXRhYmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJE
YXRhYmFzZS5jcHAKaW5kZXggYzk5YThkNWM4NGZlMTUyMThmYjA3ZTg4MjMyNDEwYjAxZTkzNzFk
My4uOWNlNjY1YmI3YTdjNmRkN2FmOTg0Yjc0NjgxNWIxODBiNDQ2NGY5YSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2UuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlLmNwcApAQCAtMjI3LDcg
KzIyNyw3IEBAIFBhc3NSZWZQdHI8SURCVHJhbnNhY3Rpb24+IElEQkRhdGFiYXNlOjp0cmFuc2Fj
dGlvbihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250CiAgICAgICAgIHJldHVybiAwOwogICAg
IH0KIAotICAgIElEQlRyYW5zYWN0aW9uOjpNb2RlIG1vZGUgPSBJREJUcmFuc2FjdGlvbjo6c3Ry
aW5nVG9Nb2RlKG1vZGVTdHJpbmcsIGNvbnRleHQsIGVjKTsKKyAgICBJbmRleGVkREI6OlRyYW5z
YWN0aW9uTW9kZSBtb2RlID0gSURCVHJhbnNhY3Rpb246OnN0cmluZ1RvTW9kZShtb2RlU3RyaW5n
LCBjb250ZXh0LCBlYyk7CiAgICAgaWYgKGVjKQogICAgICAgICByZXR1cm4gMDsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2UuaCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlLmgKaW5kZXggZGUxM2I2
N2ZiZThmMGQ4NmNhOTU0NmEyYjAzMjMwMDEyYTIyMjllMC4uOGRkNTJjOTYwMDVmMmMwMWYzMGNl
NzdlMTUwOTkwODI0OTI4NTNlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvSURCRGF0YWJhc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9JREJEYXRhYmFzZS5oCkBAIC0zMSwxMSArMzEsMTEgQEAKICNpbmNsdWRlICJEaWN0aW9u
YXJ5LmgiCiAjaW5jbHVkZSAiRXZlbnQuaCIKICNpbmNsdWRlICJFdmVudFRhcmdldC5oIgotI2lu
Y2x1ZGUgIklEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZS5oIgogI2luY2x1ZGUgIklEQkRhdGFi
YXNlQ2FsbGJhY2tzLmgiCiAjaW5jbHVkZSAiSURCTWV0YWRhdGEuaCIKICNpbmNsdWRlICJJREJP
YmplY3RTdG9yZS5oIgogI2luY2x1ZGUgIklEQlRyYW5zYWN0aW9uLmgiCisjaW5jbHVkZSAiSW5k
ZXhlZERCLmgiCiAjaW5jbHVkZSAiU2NyaXB0V3JhcHBhYmxlLmgiCiAjaW5jbHVkZSA8d3RmL1Bh
c3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VCYWNrZW5kSW1wbC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmRJbXBs
LmNwcAppbmRleCA5ODBkMTRmNGZlNjU5NjZlMjA1ZjE2NDcyMDc2ZGI1ODg3MDBkYTY3Li4yYzMw
MzIwYTU0ZjM0Y2MyMzI4NzFjZGNmN2IzY2RhYjFjNDdjYzY2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmRJbXBsLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmRJbXBs
LmNwcApAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUgIklEQkN1cnNvckJhY2tlbmRJbXBsLmgi
CiAjaW5jbHVkZSAiSURCRGF0YWJhc2VFeGNlcHRpb24uaCIKICNpbmNsdWRlICJJREJGYWN0b3J5
QmFja2VuZEltcGwuaCIKKyNpbmNsdWRlICJJREJLZXlSYW5nZS5oIgogI2luY2x1ZGUgIklEQk9i
amVjdFN0b3JlQmFja2VuZEltcGwuaCIKICNpbmNsdWRlICJJREJUcmFjaW5nLmgiCiAjaW5jbHVk
ZSAiSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbC5oIgpAQCAtMjM4LDEzICsyMzksMTMgQEAgcHJp
dmF0ZToKIAogY2xhc3MgR2V0T3BlcmF0aW9uIDogcHVibGljIElEQlRyYW5zYWN0aW9uQmFja2Vu
ZEltcGw6Ok9wZXJhdGlvbiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NPd25QdHI8SURCVHJh
bnNhY3Rpb25CYWNrZW5kSW1wbDo6T3BlcmF0aW9uPiBjcmVhdGUoUGFzc1JlZlB0cjxJREJCYWNr
aW5nU3RvcmU+IGJhY2tpbmdTdG9yZSwgY29uc3QgSURCRGF0YWJhc2VNZXRhZGF0YSYgbWV0YWRh
dGEsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgaW50NjRfdCBpbmRleElkLCBQYXNzUmVmUHRyPElE
QktleVJhbmdlPiBrZXlSYW5nZSwgSURCQ3Vyc29yQmFja2VuZEludGVyZmFjZTo6Q3Vyc29yVHlw
ZSBjdXJzb3JUeXBlLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tzKQorICAgIHN0
YXRpYyBQYXNzT3duUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGw6Ok9wZXJhdGlvbj4gY3Jl
YXRlKFBhc3NSZWZQdHI8SURCQmFja2luZ1N0b3JlPiBiYWNraW5nU3RvcmUsIGNvbnN0IElEQkRh
dGFiYXNlTWV0YWRhdGEmIG1ldGFkYXRhLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGludDY0X3Qg
aW5kZXhJZCwgUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4ga2V5UmFuZ2UsIEluZGV4ZWREQjo6Q3Vy
c29yVHlwZSBjdXJzb3JUeXBlLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tzKQog
ICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBHZXRPcGVyYXRpb24oYmFja2luZ1N0
b3JlLCBtZXRhZGF0YSwgb2JqZWN0U3RvcmVJZCwgaW5kZXhJZCwga2V5UmFuZ2UsIGN1cnNvclR5
cGUsIGNhbGxiYWNrcykpOwogICAgIH0KICAgICB2aXJ0dWFsIHZvaWQgcGVyZm9ybShJREJUcmFu
c2FjdGlvbkJhY2tlbmRJbXBsKik7CiBwcml2YXRlOgotICAgIEdldE9wZXJhdGlvbihQYXNzUmVm
UHRyPElEQkJhY2tpbmdTdG9yZT4gYmFja2luZ1N0b3JlLCBjb25zdCBJREJEYXRhYmFzZU1ldGFk
YXRhJiBtZXRhZGF0YSwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBpbnQ2NF90IGluZGV4SWQsIFBh
c3NSZWZQdHI8SURCS2V5UmFuZ2U+IGtleVJhbmdlLCBJREJDdXJzb3JCYWNrZW5kSW50ZXJmYWNl
OjpDdXJzb3JUeXBlIGN1cnNvclR5cGUsIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFj
a3MpCisgICAgR2V0T3BlcmF0aW9uKFBhc3NSZWZQdHI8SURCQmFja2luZ1N0b3JlPiBiYWNraW5n
U3RvcmUsIGNvbnN0IElEQkRhdGFiYXNlTWV0YWRhdGEmIG1ldGFkYXRhLCBpbnQ2NF90IG9iamVj
dFN0b3JlSWQsIGludDY0X3QgaW5kZXhJZCwgUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4ga2V5UmFu
Z2UsIEluZGV4ZWREQjo6Q3Vyc29yVHlwZSBjdXJzb3JUeXBlLCBQYXNzUmVmUHRyPElEQkNhbGxi
YWNrcz4gY2FsbGJhY2tzKQogICAgICAgICA6IG1fYmFja2luZ1N0b3JlKGJhY2tpbmdTdG9yZSkK
ICAgICAgICAgLCBtX2RhdGFiYXNlSWQobWV0YWRhdGEuaWQpCiAgICAgICAgICwgbV9vYmplY3RT
dG9yZUlkKG9iamVjdFN0b3JlSWQpCkBAIC0yNjYsNyArMjY3LDcgQEAgcHJpdmF0ZToKICAgICBj
b25zdCBJREJLZXlQYXRoIG1fa2V5UGF0aDsKICAgICBjb25zdCBib29sIG1fYXV0b0luY3JlbWVu
dDsKICAgICBjb25zdCBSZWZQdHI8SURCS2V5UmFuZ2U+IG1fa2V5UmFuZ2U7Ci0gICAgY29uc3Qg
SURCQ3Vyc29yQmFja2VuZEludGVyZmFjZTo6Q3Vyc29yVHlwZSBtX2N1cnNvclR5cGU7CisgICAg
Y29uc3QgSW5kZXhlZERCOjpDdXJzb3JUeXBlIG1fY3Vyc29yVHlwZTsKICAgICBjb25zdCBSZWZQ
dHI8SURCQ2FsbGJhY2tzPiBtX2NhbGxiYWNrczsKIH07CiAKQEAgLTMyMCwxMyArMzIxLDEzIEBA
IHByaXZhdGU6CiAKIGNsYXNzIE9wZW5DdXJzb3JPcGVyYXRpb24gOiBwdWJsaWMgSURCVHJhbnNh
Y3Rpb25CYWNrZW5kSW1wbDo6T3BlcmF0aW9uIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc093
blB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsOjpPcGVyYXRpb24+IGNyZWF0ZShQYXNzUmVm
UHRyPElEQkJhY2tpbmdTdG9yZT4gYmFja2luZ1N0b3JlLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGlu
dDY0X3Qgb2JqZWN0U3RvcmVJZCwgaW50NjRfdCBpbmRleElkLCBQYXNzUmVmUHRyPElEQktleVJh
bmdlPiBrZXlSYW5nZSwgdW5zaWduZWQgc2hvcnQgZGlyZWN0aW9uLCBJREJDdXJzb3JCYWNrZW5k
SW50ZXJmYWNlOjpDdXJzb3JUeXBlIGN1cnNvclR5cGUsIElEQkRhdGFiYXNlQmFja2VuZEludGVy
ZmFjZTo6VGFza1R5cGUgdGFza1R5cGUsIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFj
a3MpCisgICAgc3RhdGljIFBhc3NPd25QdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbDo6T3Bl
cmF0aW9uPiBjcmVhdGUoUGFzc1JlZlB0cjxJREJCYWNraW5nU3RvcmU+IGJhY2tpbmdTdG9yZSwg
aW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGludDY0X3QgaW5kZXhJ
ZCwgUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4ga2V5UmFuZ2UsIEluZGV4ZWREQjo6Q3Vyc29yRGly
ZWN0aW9uIGRpcmVjdGlvbiwgSW5kZXhlZERCOjpDdXJzb3JUeXBlIGN1cnNvclR5cGUsIElEQkRh
dGFiYXNlQmFja2VuZEludGVyZmFjZTo6VGFza1R5cGUgdGFza1R5cGUsIFBhc3NSZWZQdHI8SURC
Q2FsbGJhY2tzPiBjYWxsYmFja3MpCiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3
IE9wZW5DdXJzb3JPcGVyYXRpb24oYmFja2luZ1N0b3JlLCBkYXRhYmFzZUlkLCBvYmplY3RTdG9y
ZUlkLCBpbmRleElkLCBrZXlSYW5nZSwgZGlyZWN0aW9uLCBjdXJzb3JUeXBlLCB0YXNrVHlwZSwg
Y2FsbGJhY2tzKSk7CiAgICAgfQogICAgIHZpcnR1YWwgdm9pZCBwZXJmb3JtKElEQlRyYW5zYWN0
aW9uQmFja2VuZEltcGwqKTsKIHByaXZhdGU6Ci0gICAgT3BlbkN1cnNvck9wZXJhdGlvbihQYXNz
UmVmUHRyPElEQkJhY2tpbmdTdG9yZT4gYmFja2luZ1N0b3JlLCBpbnQ2NF90IGRhdGFiYXNlSWQs
IGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgaW50NjRfdCBpbmRleElkLCBQYXNzUmVmUHRyPElEQktl
eVJhbmdlPiBrZXlSYW5nZSwgdW5zaWduZWQgc2hvcnQgZGlyZWN0aW9uLCBJREJDdXJzb3JCYWNr
ZW5kSW50ZXJmYWNlOjpDdXJzb3JUeXBlIGN1cnNvclR5cGUsIElEQkRhdGFiYXNlQmFja2VuZElu
dGVyZmFjZTo6VGFza1R5cGUgdGFza1R5cGUsIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxs
YmFja3MpCisgICAgT3BlbkN1cnNvck9wZXJhdGlvbihQYXNzUmVmUHRyPElEQkJhY2tpbmdTdG9y
ZT4gYmFja2luZ1N0b3JlLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJ
ZCwgaW50NjRfdCBpbmRleElkLCBQYXNzUmVmUHRyPElEQktleVJhbmdlPiBrZXlSYW5nZSwgSW5k
ZXhlZERCOjpDdXJzb3JEaXJlY3Rpb24gZGlyZWN0aW9uLCBJbmRleGVkREI6OkN1cnNvclR5cGUg
Y3Vyc29yVHlwZSwgSURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlOjpUYXNrVHlwZSB0YXNrVHlw
ZSwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcykKICAgICAgICAgOiBtX2JhY2tp
bmdTdG9yZShiYWNraW5nU3RvcmUpCiAgICAgICAgICwgbV9kYXRhYmFzZUlkKGRhdGFiYXNlSWQp
CiAgICAgICAgICwgbV9vYmplY3RTdG9yZUlkKG9iamVjdFN0b3JlSWQpCkBAIC0zNDQsOCArMzQ1
LDggQEAgcHJpdmF0ZToKICAgICBjb25zdCBpbnQ2NF90IG1fb2JqZWN0U3RvcmVJZDsKICAgICBj
b25zdCBpbnQ2NF90IG1faW5kZXhJZDsKICAgICBjb25zdCBQYXNzUmVmUHRyPElEQktleVJhbmdl
PiBtX2tleVJhbmdlOwotICAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IG1fZGlyZWN0aW9uOwotICAg
IGNvbnN0IElEQkN1cnNvckJhY2tlbmRJbnRlcmZhY2U6OkN1cnNvclR5cGUgbV9jdXJzb3JUeXBl
OworICAgIGNvbnN0IEluZGV4ZWREQjo6Q3Vyc29yRGlyZWN0aW9uIG1fZGlyZWN0aW9uOworICAg
IGNvbnN0IEluZGV4ZWREQjo6Q3Vyc29yVHlwZSBtX2N1cnNvclR5cGU7CiAgICAgY29uc3QgSURC
RGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlOjpUYXNrVHlwZSBtX3Rhc2tUeXBlOwogICAgIGNvbnN0
IFJlZlB0cjxJREJDYWxsYmFja3M+IG1fY2FsbGJhY2tzOwogfTsKQEAgLTU1NSw3ICs1NTYsNyBA
QCB2b2lkIElEQkRhdGFiYXNlQmFja2VuZEltcGw6OmNyZWF0ZU9iamVjdFN0b3JlKGludDY0X3Qg
dHJhbnNhY3Rpb25JZCwgaW50NjRfdCBvYgogICAgIElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGwq
IHRyYW5zYWN0aW9uID0gbV90cmFuc2FjdGlvbnMuZ2V0KHRyYW5zYWN0aW9uSWQpOwogICAgIGlm
ICghdHJhbnNhY3Rpb24pCiAgICAgICAgIHJldHVybjsKLSAgICBBU1NFUlQodHJhbnNhY3Rpb24t
Pm1vZGUoKSA9PSBJREJUcmFuc2FjdGlvbjo6VkVSU0lPTl9DSEFOR0UpOworICAgIEFTU0VSVCh0
cmFuc2FjdGlvbi0+bW9kZSgpID09IEluZGV4ZWREQjo6VHJhbnNhY3Rpb25WZXJzaW9uQ2hhbmdl
KTsKIAogICAgIEFTU0VSVCghbV9tZXRhZGF0YS5vYmplY3RTdG9yZXMuY29udGFpbnMob2JqZWN0
U3RvcmVJZCkpOwogICAgIElEQk9iamVjdFN0b3JlTWV0YWRhdGEgb2JqZWN0U3RvcmVNZXRhZGF0
YShuYW1lLCBvYmplY3RTdG9yZUlkLCBrZXlQYXRoLCBhdXRvSW5jcmVtZW50LCBJREJEYXRhYmFz
ZUJhY2tlbmRJbnRlcmZhY2U6Ok1pbmltdW1JbmRleElkKTsKQEAgLTU4MSw3ICs1ODIsNyBAQCB2
b2lkIElEQkRhdGFiYXNlQmFja2VuZEltcGw6OmRlbGV0ZU9iamVjdFN0b3JlKGludDY0X3QgdHJh
bnNhY3Rpb25JZCwgaW50NjRfdCBvYgogICAgIElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGwqIHRy
YW5zYWN0aW9uID0gbV90cmFuc2FjdGlvbnMuZ2V0KHRyYW5zYWN0aW9uSWQpOwogICAgIGlmICgh
dHJhbnNhY3Rpb24pCiAgICAgICAgIHJldHVybjsKLSAgICBBU1NFUlQodHJhbnNhY3Rpb24tPm1v
ZGUoKSA9PSBJREJUcmFuc2FjdGlvbjo6VkVSU0lPTl9DSEFOR0UpOworICAgIEFTU0VSVCh0cmFu
c2FjdGlvbi0+bW9kZSgpID09IEluZGV4ZWREQjo6VHJhbnNhY3Rpb25WZXJzaW9uQ2hhbmdlKTsK
IAogICAgIEFTU0VSVChtX21ldGFkYXRhLm9iamVjdFN0b3Jlcy5jb250YWlucyhvYmplY3RTdG9y
ZUlkKSk7CiAgICAgY29uc3QgSURCT2JqZWN0U3RvcmVNZXRhZGF0YSYgb2JqZWN0U3RvcmVNZXRh
ZGF0YSA9IG1fbWV0YWRhdGEub2JqZWN0U3RvcmVzLmdldChvYmplY3RTdG9yZUlkKTsKQEAgLTU5
Niw3ICs1OTcsNyBAQCB2b2lkIElEQkRhdGFiYXNlQmFja2VuZEltcGw6OmNyZWF0ZUluZGV4KGlu
dDY0X3QgdHJhbnNhY3Rpb25JZCwgaW50NjRfdCBvYmplY3RTdAogICAgIElEQlRyYW5zYWN0aW9u
QmFja2VuZEltcGwqIHRyYW5zYWN0aW9uID0gbV90cmFuc2FjdGlvbnMuZ2V0KHRyYW5zYWN0aW9u
SWQpOwogICAgIGlmICghdHJhbnNhY3Rpb24pCiAgICAgICAgIHJldHVybjsKLSAgICBBU1NFUlQo
dHJhbnNhY3Rpb24tPm1vZGUoKSA9PSBJREJUcmFuc2FjdGlvbjo6VkVSU0lPTl9DSEFOR0UpOwor
ICAgIEFTU0VSVCh0cmFuc2FjdGlvbi0+bW9kZSgpID09IEluZGV4ZWREQjo6VHJhbnNhY3Rpb25W
ZXJzaW9uQ2hhbmdlKTsKIAogICAgIEFTU0VSVChtX21ldGFkYXRhLm9iamVjdFN0b3Jlcy5jb250
YWlucyhvYmplY3RTdG9yZUlkKSk7CiAgICAgY29uc3QgSURCT2JqZWN0U3RvcmVNZXRhZGF0YSBv
YmplY3RTdG9yZSA9IG1fbWV0YWRhdGEub2JqZWN0U3RvcmVzLmdldChvYmplY3RTdG9yZUlkKTsK
QEAgLTYzMSw3ICs2MzIsNyBAQCB2b2lkIElEQkRhdGFiYXNlQmFja2VuZEltcGw6OmRlbGV0ZUlu
ZGV4KGludDY0X3QgdHJhbnNhY3Rpb25JZCwgaW50NjRfdCBvYmplY3RTdAogICAgIElEQlRyYW5z
YWN0aW9uQmFja2VuZEltcGwqIHRyYW5zYWN0aW9uID0gbV90cmFuc2FjdGlvbnMuZ2V0KHRyYW5z
YWN0aW9uSWQpOwogICAgIGlmICghdHJhbnNhY3Rpb24pCiAgICAgICAgIHJldHVybjsKLSAgICBB
U1NFUlQodHJhbnNhY3Rpb24tPm1vZGUoKSA9PSBJREJUcmFuc2FjdGlvbjo6VkVSU0lPTl9DSEFO
R0UpOworICAgIEFTU0VSVCh0cmFuc2FjdGlvbi0+bW9kZSgpID09IEluZGV4ZWREQjo6VHJhbnNh
Y3Rpb25WZXJzaW9uQ2hhbmdlKTsKIAogICAgIEFTU0VSVChtX21ldGFkYXRhLm9iamVjdFN0b3Jl
cy5jb250YWlucyhvYmplY3RTdG9yZUlkKSk7CiAgICAgY29uc3QgSURCT2JqZWN0U3RvcmVNZXRh
ZGF0YSBvYmplY3RTdG9yZSA9IG1fbWV0YWRhdGEub2JqZWN0U3RvcmVzLmdldChvYmplY3RTdG9y
ZUlkKTsKQEAgLTY4NSw3ICs2ODYsNyBAQCB2b2lkIElEQkRhdGFiYXNlQmFja2VuZEltcGw6Omdl
dChpbnQ2NF90IHRyYW5zYWN0aW9uSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgaQogICAgIGlm
ICghdHJhbnNhY3Rpb24pCiAgICAgICAgIHJldHVybjsKIAotICAgIHRyYW5zYWN0aW9uLT5zY2hl
ZHVsZVRhc2soR2V0T3BlcmF0aW9uOjpjcmVhdGUobV9iYWNraW5nU3RvcmUsIG1fbWV0YWRhdGEs
IG9iamVjdFN0b3JlSWQsIGluZGV4SWQsIGtleVJhbmdlLCBrZXlPbmx5ID8gSURCQ3Vyc29yQmFj
a2VuZEludGVyZmFjZTo6S2V5T25seSA6IElEQkN1cnNvckJhY2tlbmRJbnRlcmZhY2U6OktleUFu
ZFZhbHVlLCBjYWxsYmFja3MpKTsKKyAgICB0cmFuc2FjdGlvbi0+c2NoZWR1bGVUYXNrKEdldE9w
ZXJhdGlvbjo6Y3JlYXRlKG1fYmFja2luZ1N0b3JlLCBtX21ldGFkYXRhLCBvYmplY3RTdG9yZUlk
LCBpbmRleElkLCBrZXlSYW5nZSwga2V5T25seSA/IEluZGV4ZWREQjo6Q3Vyc29yS2V5T25seSA6
IEluZGV4ZWREQjo6Q3Vyc29yS2V5QW5kVmFsdWUsIGNhbGxiYWNrcykpOwogfQogCiB2b2lkIEdl
dE9wZXJhdGlvbjo6cGVyZm9ybShJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsKiB0cmFuc2FjdGlv
bikKQEAgLTY5OSwxNiArNzAwLDE2IEBAIHZvaWQgR2V0T3BlcmF0aW9uOjpwZXJmb3JtKElEQlRy
YW5zYWN0aW9uQmFja2VuZEltcGwqIHRyYW5zYWN0aW9uKQogICAgIGVsc2UgewogICAgICAgICBS
ZWZQdHI8SURCQmFja2luZ1N0b3JlOjpDdXJzb3I+IGJhY2tpbmdTdG9yZUN1cnNvcjsKICAgICAg
ICAgaWYgKG1faW5kZXhJZCA9PSBJREJJbmRleE1ldGFkYXRhOjpJbnZhbGlkSWQpIHsKLSAgICAg
ICAgICAgIEFTU0VSVChtX2N1cnNvclR5cGUgIT0gSURCQ3Vyc29yQmFja2VuZEludGVyZmFjZTo6
S2V5T25seSk7CisgICAgICAgICAgICBBU1NFUlQobV9jdXJzb3JUeXBlICE9IEluZGV4ZWREQjo6
Q3Vyc29yS2V5T25seSk7CiAgICAgICAgICAgICAvLyBPYmplY3RTdG9yZSBSZXRyaWV2YWwgT3Bl
cmF0aW9uCi0gICAgICAgICAgICBiYWNraW5nU3RvcmVDdXJzb3IgPSBtX2JhY2tpbmdTdG9yZS0+
b3Blbk9iamVjdFN0b3JlQ3Vyc29yKHRyYW5zYWN0aW9uLT5iYWNraW5nU3RvcmVUcmFuc2FjdGlv
bigpLCBtX2RhdGFiYXNlSWQsIG1fb2JqZWN0U3RvcmVJZCwgbV9rZXlSYW5nZS5nZXQoKSwgSURC
Q3Vyc29yOjpORVhUKTsKKyAgICAgICAgICAgIGJhY2tpbmdTdG9yZUN1cnNvciA9IG1fYmFja2lu
Z1N0b3JlLT5vcGVuT2JqZWN0U3RvcmVDdXJzb3IodHJhbnNhY3Rpb24tPmJhY2tpbmdTdG9yZVRy
YW5zYWN0aW9uKCksIG1fZGF0YWJhc2VJZCwgbV9vYmplY3RTdG9yZUlkLCBtX2tleVJhbmdlLmdl
dCgpLCBJbmRleGVkREI6OkN1cnNvck5leHQpOwogICAgICAgICB9IGVsc2UgewotICAgICAgICAg
ICAgaWYgKG1fY3Vyc29yVHlwZSA9PSBJREJDdXJzb3JCYWNrZW5kSW50ZXJmYWNlOjpLZXlPbmx5
KQorICAgICAgICAgICAgaWYgKG1fY3Vyc29yVHlwZSA9PSBJbmRleGVkREI6OkN1cnNvcktleU9u
bHkpCiAgICAgICAgICAgICAgICAgLy8gSW5kZXggVmFsdWUgUmV0cmlldmFsIE9wZXJhdGlvbgot
ICAgICAgICAgICAgICAgIGJhY2tpbmdTdG9yZUN1cnNvciA9IG1fYmFja2luZ1N0b3JlLT5vcGVu
SW5kZXhLZXlDdXJzb3IodHJhbnNhY3Rpb24tPmJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uKCksIG1f
ZGF0YWJhc2VJZCwgbV9vYmplY3RTdG9yZUlkLCBtX2luZGV4SWQsIG1fa2V5UmFuZ2UuZ2V0KCks
IElEQkN1cnNvcjo6TkVYVCk7CisgICAgICAgICAgICAgICAgYmFja2luZ1N0b3JlQ3Vyc29yID0g
bV9iYWNraW5nU3RvcmUtPm9wZW5JbmRleEtleUN1cnNvcih0cmFuc2FjdGlvbi0+YmFja2luZ1N0
b3JlVHJhbnNhY3Rpb24oKSwgbV9kYXRhYmFzZUlkLCBtX29iamVjdFN0b3JlSWQsIG1faW5kZXhJ
ZCwgbV9rZXlSYW5nZS5nZXQoKSwgSW5kZXhlZERCOjpDdXJzb3JOZXh0KTsKICAgICAgICAgICAg
IGVsc2UKICAgICAgICAgICAgICAgICAvLyBJbmRleCBSZWZlcmVuY2VkIFZhbHVlIFJldHJpZXZh
bCBPcGVyYXRpb24KLSAgICAgICAgICAgICAgICBiYWNraW5nU3RvcmVDdXJzb3IgPSBtX2JhY2tp
bmdTdG9yZS0+b3BlbkluZGV4Q3Vyc29yKHRyYW5zYWN0aW9uLT5iYWNraW5nU3RvcmVUcmFuc2Fj
dGlvbigpLCBtX2RhdGFiYXNlSWQsIG1fb2JqZWN0U3RvcmVJZCwgbV9pbmRleElkLCBtX2tleVJh
bmdlLmdldCgpLCBJREJDdXJzb3I6Ok5FWFQpOworICAgICAgICAgICAgICAgIGJhY2tpbmdTdG9y
ZUN1cnNvciA9IG1fYmFja2luZ1N0b3JlLT5vcGVuSW5kZXhDdXJzb3IodHJhbnNhY3Rpb24tPmJh
Y2tpbmdTdG9yZVRyYW5zYWN0aW9uKCksIG1fZGF0YWJhc2VJZCwgbV9vYmplY3RTdG9yZUlkLCBt
X2luZGV4SWQsIG1fa2V5UmFuZ2UuZ2V0KCksIEluZGV4ZWREQjo6Q3Vyc29yTmV4dCk7CiAgICAg
ICAgIH0KIAogICAgICAgICBpZiAoIWJhY2tpbmdTdG9yZUN1cnNvcikgewpAQCAtNzU1LDcgKzc1
Niw3IEBAIHZvaWQgR2V0T3BlcmF0aW9uOjpwZXJmb3JtKElEQlRyYW5zYWN0aW9uQmFja2VuZElt
cGwqIHRyYW5zYWN0aW9uKQogICAgICAgICBtX2NhbGxiYWNrcy0+b25TdWNjZXNzKCk7CiAgICAg
ICAgIHJldHVybjsKICAgICB9Ci0gICAgaWYgKG1fY3Vyc29yVHlwZSA9PSBJREJDdXJzb3JCYWNr
ZW5kSW50ZXJmYWNlOjpLZXlPbmx5KSB7CisgICAgaWYgKG1fY3Vyc29yVHlwZSA9PSBJbmRleGVk
REI6OkN1cnNvcktleU9ubHkpIHsKICAgICAgICAgLy8gSW5kZXggVmFsdWUgUmV0cmlldmFsIE9w
ZXJhdGlvbgogICAgICAgICBtX2NhbGxiYWNrcy0+b25TdWNjZXNzKHByaW1hcnlLZXkuZ2V0KCkp
OwogICAgICAgICByZXR1cm47CkBAIC03ODYsNyArNzg3LDcgQEAgdm9pZCBJREJEYXRhYmFzZUJh
Y2tlbmRJbXBsOjpwdXQoaW50NjRfdCB0cmFuc2FjdGlvbklkLCBpbnQ2NF90IG9iamVjdFN0b3Jl
SWQsIFAKICAgICBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsKiB0cmFuc2FjdGlvbiA9IG1fdHJh
bnNhY3Rpb25zLmdldCh0cmFuc2FjdGlvbklkKTsKICAgICBpZiAoIXRyYW5zYWN0aW9uKQogICAg
ICAgICByZXR1cm47Ci0gICAgQVNTRVJUKHRyYW5zYWN0aW9uLT5tb2RlKCkgIT0gSURCVHJhbnNh
Y3Rpb246OlJFQURfT05MWSk7CisgICAgQVNTRVJUKHRyYW5zYWN0aW9uLT5tb2RlKCkgIT0gSW5k
ZXhlZERCOjpUcmFuc2FjdGlvblJlYWRPbmx5KTsKIAogICAgIGNvbnN0IElEQk9iamVjdFN0b3Jl
TWV0YWRhdGEgb2JqZWN0U3RvcmVNZXRhZGF0YSA9IG1fbWV0YWRhdGEub2JqZWN0U3RvcmVzLmdl
dChvYmplY3RTdG9yZUlkKTsKIApAQCAtNzk4LDcgKzc5OSw3IEBAIHZvaWQgSURCRGF0YWJhc2VC
YWNrZW5kSW1wbDo6cHV0KGludDY0X3QgdHJhbnNhY3Rpb25JZCwgaW50NjRfdCBvYmplY3RTdG9y
ZUlkLCBQCiB2b2lkIFB1dE9wZXJhdGlvbjo6cGVyZm9ybShJREJUcmFuc2FjdGlvbkJhY2tlbmRJ
bXBsKiB0cmFuc2FjdGlvbikKIHsKICAgICBJREJfVFJBQ0UoIlB1dE9wZXJhdGlvbiIpOwotICAg
IEFTU0VSVCh0cmFuc2FjdGlvbi0+bW9kZSgpICE9IElEQlRyYW5zYWN0aW9uOjpSRUFEX09OTFkp
OworICAgIEFTU0VSVCh0cmFuc2FjdGlvbi0+bW9kZSgpICE9IEluZGV4ZWREQjo6VHJhbnNhY3Rp
b25SZWFkT25seSk7CiAgICAgQVNTRVJUKG1faW5kZXhJZHMuc2l6ZSgpID09IG1faW5kZXhLZXlz
LnNpemUoKSk7CiAgICAgYm9vbCBrZXlXYXNHZW5lcmF0ZWQgPSBmYWxzZTsKIApAQCAtODcyLDcg
Kzg3Myw3IEBAIHZvaWQgSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6c2V0SW5kZXhLZXlzKGludDY0
X3QgdHJhbnNhY3Rpb25JZCwgaW50NjRfdCBvYmplY3RTCiAgICAgSURCVHJhbnNhY3Rpb25CYWNr
ZW5kSW1wbCogdHJhbnNhY3Rpb24gPSBtX3RyYW5zYWN0aW9ucy5nZXQodHJhbnNhY3Rpb25JZCk7
CiAgICAgaWYgKCF0cmFuc2FjdGlvbikKICAgICAgICAgcmV0dXJuOwotICAgIEFTU0VSVCh0cmFu
c2FjdGlvbi0+bW9kZSgpID09IElEQlRyYW5zYWN0aW9uOjpWRVJTSU9OX0NIQU5HRSk7CisgICAg
QVNTRVJUKHRyYW5zYWN0aW9uLT5tb2RlKCkgPT0gSW5kZXhlZERCOjpUcmFuc2FjdGlvblZlcnNp
b25DaGFuZ2UpOwogCiAgICAgUmVmUHRyPElEQktleT4gcHJpbWFyeUtleSA9IHBycFByaW1hcnlL
ZXk7CiAgICAgUmVmUHRyPElEQkJhY2tpbmdTdG9yZT4gc3RvcmUgPSBiYWNraW5nU3RvcmUoKTsK
QEAgLTkyOSwxNCArOTMwLDE0IEBAIHZvaWQgU2V0SW5kZXhlc1JlYWR5T3BlcmF0aW9uOjpwZXJm
b3JtKElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGwqIHRyYW5zYWN0aW9uKQogICAgICAgICB0cmFu
c2FjdGlvbi0+ZGlkQ29tcGxldGVQcmVlbXB0aXZlRXZlbnQoKTsKIH0KIAotdm9pZCBJREJEYXRh
YmFzZUJhY2tlbmRJbXBsOjpvcGVuQ3Vyc29yKGludDY0X3QgdHJhbnNhY3Rpb25JZCwgaW50NjRf
dCBvYmplY3RTdG9yZUlkLCBpbnQ2NF90IGluZGV4SWQsIFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+
IGtleVJhbmdlLCB1bnNpZ25lZCBzaG9ydCBkaXJlY3Rpb24sIGJvb2wga2V5T25seSwgVGFza1R5
cGUgdGFza1R5cGUsIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MpCit2b2lkIElE
QkRhdGFiYXNlQmFja2VuZEltcGw6Om9wZW5DdXJzb3IoaW50NjRfdCB0cmFuc2FjdGlvbklkLCBp
bnQ2NF90IG9iamVjdFN0b3JlSWQsIGludDY0X3QgaW5kZXhJZCwgUGFzc1JlZlB0cjxJREJLZXlS
YW5nZT4ga2V5UmFuZ2UsIEluZGV4ZWREQjo6Q3Vyc29yRGlyZWN0aW9uIGRpcmVjdGlvbiwgYm9v
bCBrZXlPbmx5LCBUYXNrVHlwZSB0YXNrVHlwZSwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IGNh
bGxiYWNrcykKIHsKICAgICBJREJfVFJBQ0UoIklEQkRhdGFiYXNlQmFja2VuZEltcGw6Om9wZW5D
dXJzb3IiKTsKICAgICBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsKiB0cmFuc2FjdGlvbiA9IG1f
dHJhbnNhY3Rpb25zLmdldCh0cmFuc2FjdGlvbklkKTsKICAgICBpZiAoIXRyYW5zYWN0aW9uKQog
ICAgICAgICByZXR1cm47CiAKLSAgICB0cmFuc2FjdGlvbi0+c2NoZWR1bGVUYXNrKE9wZW5DdXJz
b3JPcGVyYXRpb246OmNyZWF0ZShtX2JhY2tpbmdTdG9yZSwgaWQoKSwgb2JqZWN0U3RvcmVJZCwg
aW5kZXhJZCwga2V5UmFuZ2UsIGRpcmVjdGlvbiwga2V5T25seSA/IElEQkN1cnNvckJhY2tlbmRJ
bnRlcmZhY2U6OktleU9ubHkgOiBJREJDdXJzb3JCYWNrZW5kSW50ZXJmYWNlOjpLZXlBbmRWYWx1
ZSwgdGFza1R5cGUsIGNhbGxiYWNrcykpOworICAgIHRyYW5zYWN0aW9uLT5zY2hlZHVsZVRhc2so
T3BlbkN1cnNvck9wZXJhdGlvbjo6Y3JlYXRlKG1fYmFja2luZ1N0b3JlLCBpZCgpLCBvYmplY3RT
dG9yZUlkLCBpbmRleElkLCBrZXlSYW5nZSwgZGlyZWN0aW9uLCBrZXlPbmx5ID8gSW5kZXhlZERC
OjpDdXJzb3JLZXlPbmx5IDogSW5kZXhlZERCOjpDdXJzb3JLZXlBbmRWYWx1ZSwgdGFza1R5cGUs
IGNhbGxiYWNrcykpOwogfQogCiB2b2lkIE9wZW5DdXJzb3JPcGVyYXRpb246OnBlcmZvcm0oSURC
VHJhbnNhY3Rpb25CYWNrZW5kSW1wbCogdHJhbnNhY3Rpb24pCkBAIC05NTAsMTcgKzk1MSwxNiBA
QCB2b2lkIE9wZW5DdXJzb3JPcGVyYXRpb246OnBlcmZvcm0oSURCVHJhbnNhY3Rpb25CYWNrZW5k
SW1wbCogdHJhbnNhY3Rpb24pCiAgICAgaWYgKG1fdGFza1R5cGUgPT0gSURCRGF0YWJhc2VCYWNr
ZW5kSW50ZXJmYWNlOjpQcmVlbXB0aXZlVGFzaykKICAgICAgICAgdHJhbnNhY3Rpb24tPmFkZFBy
ZWVtcHRpdmVFdmVudCgpOwogCi0gICAgSURCQ3Vyc29yOjpEaXJlY3Rpb24gZGlyZWN0aW9uID0g
c3RhdGljX2Nhc3Q8SURCQ3Vyc29yOjpEaXJlY3Rpb24+KG1fZGlyZWN0aW9uKTsKICAgICBSZWZQ
dHI8SURCQmFja2luZ1N0b3JlOjpDdXJzb3I+IGJhY2tpbmdTdG9yZUN1cnNvcjsKICAgICBpZiAo
bV9pbmRleElkID09IElEQkluZGV4TWV0YWRhdGE6OkludmFsaWRJZCkgewotICAgICAgICBBU1NF
UlQobV9jdXJzb3JUeXBlICE9IElEQkN1cnNvckJhY2tlbmRJbnRlcmZhY2U6OktleU9ubHkpOwot
ICAgICAgICBiYWNraW5nU3RvcmVDdXJzb3IgPSBtX2JhY2tpbmdTdG9yZS0+b3Blbk9iamVjdFN0
b3JlQ3Vyc29yKHRyYW5zYWN0aW9uLT5iYWNraW5nU3RvcmVUcmFuc2FjdGlvbigpLCBtX2RhdGFi
YXNlSWQsIG1fb2JqZWN0U3RvcmVJZCwgbV9rZXlSYW5nZS5nZXQoKSwgZGlyZWN0aW9uKTsKKyAg
ICAgICAgQVNTRVJUKG1fY3Vyc29yVHlwZSAhPSBJbmRleGVkREI6OkN1cnNvcktleU9ubHkpOwor
ICAgICAgICBiYWNraW5nU3RvcmVDdXJzb3IgPSBtX2JhY2tpbmdTdG9yZS0+b3Blbk9iamVjdFN0
b3JlQ3Vyc29yKHRyYW5zYWN0aW9uLT5iYWNraW5nU3RvcmVUcmFuc2FjdGlvbigpLCBtX2RhdGFi
YXNlSWQsIG1fb2JqZWN0U3RvcmVJZCwgbV9rZXlSYW5nZS5nZXQoKSwgbV9kaXJlY3Rpb24pOwog
ICAgIH0gZWxzZSB7CiAgICAgICAgIEFTU0VSVChtX3Rhc2tUeXBlID09IElEQkRhdGFiYXNlQmFj
a2VuZEludGVyZmFjZTo6Tm9ybWFsVGFzayk7Ci0gICAgICAgIGlmIChtX2N1cnNvclR5cGUgPT0g
SURCQ3Vyc29yQmFja2VuZEludGVyZmFjZTo6S2V5T25seSkKLSAgICAgICAgICAgIGJhY2tpbmdT
dG9yZUN1cnNvciA9IG1fYmFja2luZ1N0b3JlLT5vcGVuSW5kZXhLZXlDdXJzb3IodHJhbnNhY3Rp
b24tPmJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uKCksIG1fZGF0YWJhc2VJZCwgbV9vYmplY3RTdG9y
ZUlkLCBtX2luZGV4SWQsIG1fa2V5UmFuZ2UuZ2V0KCksIGRpcmVjdGlvbik7CisgICAgICAgIGlm
IChtX2N1cnNvclR5cGUgPT0gSW5kZXhlZERCOjpDdXJzb3JLZXlPbmx5KQorICAgICAgICAgICAg
YmFja2luZ1N0b3JlQ3Vyc29yID0gbV9iYWNraW5nU3RvcmUtPm9wZW5JbmRleEtleUN1cnNvcih0
cmFuc2FjdGlvbi0+YmFja2luZ1N0b3JlVHJhbnNhY3Rpb24oKSwgbV9kYXRhYmFzZUlkLCBtX29i
amVjdFN0b3JlSWQsIG1faW5kZXhJZCwgbV9rZXlSYW5nZS5nZXQoKSwgbV9kaXJlY3Rpb24pOwog
ICAgICAgICBlbHNlCi0gICAgICAgICAgICBiYWNraW5nU3RvcmVDdXJzb3IgPSBtX2JhY2tpbmdT
dG9yZS0+b3BlbkluZGV4Q3Vyc29yKHRyYW5zYWN0aW9uLT5iYWNraW5nU3RvcmVUcmFuc2FjdGlv
bigpLCBtX2RhdGFiYXNlSWQsIG1fb2JqZWN0U3RvcmVJZCwgbV9pbmRleElkLCBtX2tleVJhbmdl
LmdldCgpLCBkaXJlY3Rpb24pOworICAgICAgICAgICAgYmFja2luZ1N0b3JlQ3Vyc29yID0gbV9i
YWNraW5nU3RvcmUtPm9wZW5JbmRleEN1cnNvcih0cmFuc2FjdGlvbi0+YmFja2luZ1N0b3JlVHJh
bnNhY3Rpb24oKSwgbV9kYXRhYmFzZUlkLCBtX29iamVjdFN0b3JlSWQsIG1faW5kZXhJZCwgbV9r
ZXlSYW5nZS5nZXQoKSwgbV9kaXJlY3Rpb24pOwogICAgIH0KIAogICAgIGlmICghYmFja2luZ1N0
b3JlQ3Vyc29yKSB7CkBAIC05OTEsOSArOTkxLDkgQEAgdm9pZCBDb3VudE9wZXJhdGlvbjo6cGVy
Zm9ybShJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsKiB0cmFuc2FjdGlvbikKICAgICBSZWZQdHI8
SURCQmFja2luZ1N0b3JlOjpDdXJzb3I+IGJhY2tpbmdTdG9yZUN1cnNvcjsKIAogICAgIGlmICht
X2luZGV4SWQgPT0gSURCSW5kZXhNZXRhZGF0YTo6SW52YWxpZElkKQotICAgICAgICBiYWNraW5n
U3RvcmVDdXJzb3IgPSBtX2JhY2tpbmdTdG9yZS0+b3Blbk9iamVjdFN0b3JlS2V5Q3Vyc29yKHRy
YW5zYWN0aW9uLT5iYWNraW5nU3RvcmVUcmFuc2FjdGlvbigpLCBtX2RhdGFiYXNlSWQsIG1fb2Jq
ZWN0U3RvcmVJZCwgbV9rZXlSYW5nZS5nZXQoKSwgSURCQ3Vyc29yOjpORVhUKTsKKyAgICAgICAg
YmFja2luZ1N0b3JlQ3Vyc29yID0gbV9iYWNraW5nU3RvcmUtPm9wZW5PYmplY3RTdG9yZUtleUN1
cnNvcih0cmFuc2FjdGlvbi0+YmFja2luZ1N0b3JlVHJhbnNhY3Rpb24oKSwgbV9kYXRhYmFzZUlk
LCBtX29iamVjdFN0b3JlSWQsIG1fa2V5UmFuZ2UuZ2V0KCksIEluZGV4ZWREQjo6Q3Vyc29yTmV4
dCk7CiAgICAgZWxzZQotICAgICAgICBiYWNraW5nU3RvcmVDdXJzb3IgPSBtX2JhY2tpbmdTdG9y
ZS0+b3BlbkluZGV4S2V5Q3Vyc29yKHRyYW5zYWN0aW9uLT5iYWNraW5nU3RvcmVUcmFuc2FjdGlv
bigpLCBtX2RhdGFiYXNlSWQsIG1fb2JqZWN0U3RvcmVJZCwgbV9pbmRleElkLCBtX2tleVJhbmdl
LmdldCgpLCBJREJDdXJzb3I6Ok5FWFQpOworICAgICAgICBiYWNraW5nU3RvcmVDdXJzb3IgPSBt
X2JhY2tpbmdTdG9yZS0+b3BlbkluZGV4S2V5Q3Vyc29yKHRyYW5zYWN0aW9uLT5iYWNraW5nU3Rv
cmVUcmFuc2FjdGlvbigpLCBtX2RhdGFiYXNlSWQsIG1fb2JqZWN0U3RvcmVJZCwgbV9pbmRleElk
LCBtX2tleVJhbmdlLmdldCgpLCBJbmRleGVkREI6OkN1cnNvck5leHQpOwogICAgIGlmICghYmFj
a2luZ1N0b3JlQ3Vyc29yKSB7CiAgICAgICAgIG1fY2FsbGJhY2tzLT5vblN1Y2Nlc3MoY291bnQp
OwogICAgICAgICByZXR1cm47CkBAIC0xMDEyLDcgKzEwMTIsNyBAQCB2b2lkIElEQkRhdGFiYXNl
QmFja2VuZEltcGw6OmRlbGV0ZVJhbmdlKGludDY0X3QgdHJhbnNhY3Rpb25JZCwgaW50NjRfdCBv
YmplY3RTdAogICAgIElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGwqIHRyYW5zYWN0aW9uID0gbV90
cmFuc2FjdGlvbnMuZ2V0KHRyYW5zYWN0aW9uSWQpOwogICAgIGlmICghdHJhbnNhY3Rpb24pCiAg
ICAgICAgIHJldHVybjsKLSAgICBBU1NFUlQodHJhbnNhY3Rpb24tPm1vZGUoKSAhPSBJREJUcmFu
c2FjdGlvbjo6UkVBRF9PTkxZKTsKKyAgICBBU1NFUlQodHJhbnNhY3Rpb24tPm1vZGUoKSAhPSBJ
bmRleGVkREI6OlRyYW5zYWN0aW9uUmVhZE9ubHkpOwogCiAgICAgdHJhbnNhY3Rpb24tPnNjaGVk
dWxlVGFzayhEZWxldGVSYW5nZU9wZXJhdGlvbjo6Y3JlYXRlKG1fYmFja2luZ1N0b3JlLCBpZCgp
LCBvYmplY3RTdG9yZUlkLCBrZXlSYW5nZSwgY2FsbGJhY2tzKSk7CiB9CkBAIC0xMDIwLDcgKzEw
MjAsNyBAQCB2b2lkIElEQkRhdGFiYXNlQmFja2VuZEltcGw6OmRlbGV0ZVJhbmdlKGludDY0X3Qg
dHJhbnNhY3Rpb25JZCwgaW50NjRfdCBvYmplY3RTdAogdm9pZCBEZWxldGVSYW5nZU9wZXJhdGlv
bjo6cGVyZm9ybShJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsKiB0cmFuc2FjdGlvbikKIHsKICAg
ICBJREJfVFJBQ0UoIkRlbGV0ZVJhbmdlT3BlcmF0aW9uIik7Ci0gICAgUmVmUHRyPElEQkJhY2tp
bmdTdG9yZTo6Q3Vyc29yPiBiYWNraW5nU3RvcmVDdXJzb3IgPSBtX2JhY2tpbmdTdG9yZS0+b3Bl
bk9iamVjdFN0b3JlQ3Vyc29yKHRyYW5zYWN0aW9uLT5iYWNraW5nU3RvcmVUcmFuc2FjdGlvbigp
LCBtX2RhdGFiYXNlSWQsIG1fb2JqZWN0U3RvcmVJZCwgbV9rZXlSYW5nZS5nZXQoKSwgSURCQ3Vy
c29yOjpORVhUKTsKKyAgICBSZWZQdHI8SURCQmFja2luZ1N0b3JlOjpDdXJzb3I+IGJhY2tpbmdT
dG9yZUN1cnNvciA9IG1fYmFja2luZ1N0b3JlLT5vcGVuT2JqZWN0U3RvcmVDdXJzb3IodHJhbnNh
Y3Rpb24tPmJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uKCksIG1fZGF0YWJhc2VJZCwgbV9vYmplY3RT
dG9yZUlkLCBtX2tleVJhbmdlLmdldCgpLCBJbmRleGVkREI6OkN1cnNvck5leHQpOwogICAgIGlm
IChiYWNraW5nU3RvcmVDdXJzb3IpIHsKICAgICAgICAgZG8gewogICAgICAgICAgICAgbV9iYWNr
aW5nU3RvcmUtPmRlbGV0ZVJlY29yZCh0cmFuc2FjdGlvbi0+YmFja2luZ1N0b3JlVHJhbnNhY3Rp
b24oKSwgbV9kYXRhYmFzZUlkLCBtX29iamVjdFN0b3JlSWQsIGJhY2tpbmdTdG9yZUN1cnNvci0+
cmVjb3JkSWRlbnRpZmllcigpKTsKQEAgLTEwMzYsNyArMTAzNiw3IEBAIHZvaWQgSURCRGF0YWJh
c2VCYWNrZW5kSW1wbDo6Y2xlYXIoaW50NjRfdCB0cmFuc2FjdGlvbklkLCBpbnQ2NF90IG9iamVj
dFN0b3JlSWQsCiAgICAgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbCogdHJhbnNhY3Rpb24gPSBt
X3RyYW5zYWN0aW9ucy5nZXQodHJhbnNhY3Rpb25JZCk7CiAgICAgaWYgKCF0cmFuc2FjdGlvbikK
ICAgICAgICAgcmV0dXJuOwotICAgIEFTU0VSVCh0cmFuc2FjdGlvbi0+bW9kZSgpICE9IElEQlRy
YW5zYWN0aW9uOjpSRUFEX09OTFkpOworICAgIEFTU0VSVCh0cmFuc2FjdGlvbi0+bW9kZSgpICE9
IEluZGV4ZWREQjo6VHJhbnNhY3Rpb25SZWFkT25seSk7CiAKICAgICB0cmFuc2FjdGlvbi0+c2No
ZWR1bGVUYXNrKENsZWFyT3BlcmF0aW9uOjpjcmVhdGUobV9iYWNraW5nU3RvcmUsIGlkKCksIG9i
amVjdFN0b3JlSWQsIGNhbGxiYWNrcykpOwogfQpAQCAtMTA3OSw3ICsxMDc5LDcgQEAgdm9pZCBJ
REJEYXRhYmFzZUJhY2tlbmRJbXBsOjpWZXJzaW9uQ2hhbmdlT3BlcmF0aW9uOjpwZXJmb3JtKElE
QlRyYW5zYWN0aW9uQmFja2UKIHZvaWQgSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6dHJhbnNhY3Rp
b25TdGFydGVkKFBhc3NSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbD4gcHJwVHJhbnNh
Y3Rpb24pCiB7CiAgICAgUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGw+IHRyYW5zYWN0
aW9uID0gcHJwVHJhbnNhY3Rpb247Ci0gICAgaWYgKHRyYW5zYWN0aW9uLT5tb2RlKCkgPT0gSURC
VHJhbnNhY3Rpb246OlZFUlNJT05fQ0hBTkdFKSB7CisgICAgaWYgKHRyYW5zYWN0aW9uLT5tb2Rl
KCkgPT0gSW5kZXhlZERCOjpUcmFuc2FjdGlvblZlcnNpb25DaGFuZ2UpIHsKICAgICAgICAgQVNT
RVJUKCFtX3J1bm5pbmdWZXJzaW9uQ2hhbmdlVHJhbnNhY3Rpb24pOwogICAgICAgICBtX3J1bm5p
bmdWZXJzaW9uQ2hhbmdlVHJhbnNhY3Rpb24gPSB0cmFuc2FjdGlvbjsKICAgICB9CkBAIC0xMDkx
LDcgKzEwOTEsNyBAQCB2b2lkIElEQkRhdGFiYXNlQmFja2VuZEltcGw6OnRyYW5zYWN0aW9uRmlu
aXNoZWQoUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbgogICAgIEFTU0VSVChtX3RyYW5z
YWN0aW9ucy5jb250YWlucyh0cmFuc2FjdGlvbi0+aWQoKSkpOwogICAgIEFTU0VSVChtX3RyYW5z
YWN0aW9ucy5nZXQodHJhbnNhY3Rpb24tPmlkKCkpID09IHRyYW5zYWN0aW9uLmdldCgpKTsKICAg
ICBtX3RyYW5zYWN0aW9ucy5yZW1vdmUodHJhbnNhY3Rpb24tPmlkKCkpOwotICAgIGlmICh0cmFu
c2FjdGlvbi0+bW9kZSgpID09IElEQlRyYW5zYWN0aW9uOjpWRVJTSU9OX0NIQU5HRSkgeworICAg
IGlmICh0cmFuc2FjdGlvbi0+bW9kZSgpID09IEluZGV4ZWREQjo6VHJhbnNhY3Rpb25WZXJzaW9u
Q2hhbmdlKSB7CiAgICAgICAgIEFTU0VSVCh0cmFuc2FjdGlvbi5nZXQoKSA9PSBtX3J1bm5pbmdW
ZXJzaW9uQ2hhbmdlVHJhbnNhY3Rpb24uZ2V0KCkpOwogICAgICAgICBtX3J1bm5pbmdWZXJzaW9u
Q2hhbmdlVHJhbnNhY3Rpb24uY2xlYXIoKTsKICAgICB9CkBAIC0xMTAwLDcgKzExMDAsNyBAQCB2
b2lkIElEQkRhdGFiYXNlQmFja2VuZEltcGw6OnRyYW5zYWN0aW9uRmluaXNoZWQoUGFzc1JlZlB0
cjxJREJUcmFuc2FjdGlvbkJhY2tlbgogdm9pZCBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjp0cmFu
c2FjdGlvbkZpbmlzaGVkQW5kQWJvcnRGaXJlZChQYXNzUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFj
a2VuZEltcGw+IHBycFRyYW5zYWN0aW9uKQogewogICAgIFJlZlB0cjxJREJUcmFuc2FjdGlvbkJh
Y2tlbmRJbXBsPiB0cmFuc2FjdGlvbiA9IHBycFRyYW5zYWN0aW9uOwotICAgIGlmICh0cmFuc2Fj
dGlvbi0+bW9kZSgpID09IElEQlRyYW5zYWN0aW9uOjpWRVJTSU9OX0NIQU5HRSkgeworICAgIGlm
ICh0cmFuc2FjdGlvbi0+bW9kZSgpID09IEluZGV4ZWREQjo6VHJhbnNhY3Rpb25WZXJzaW9uQ2hh
bmdlKSB7CiAgICAgICAgIC8vIElmIHRoaXMgd2FzIGFuIG9wZW4td2l0aC12ZXJzaW9uIGNhbGws
IHRoZXJlIHdpbGwgYmUgYSAic2Vjb25kCiAgICAgICAgIC8vIGhhbGYiIG9wZW4gY2FsbCB3YWl0
aW5nIGZvciB1cyBpbiBwcm9jZXNzUGVuZGluZ0NhbGxzLgogICAgICAgICAvLyBGSVhNRTogV2hl
biB3ZSBubyBsb25nZXIgc3VwcG9ydCBzZXRWZXJzaW9uLCBhc3NlcnQgc3VjaCBhIHRoaW5nLgpA
QCAtMTExNSw3ICsxMTE1LDcgQEAgdm9pZCBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjp0cmFuc2Fj
dGlvbkZpbmlzaGVkQW5kQWJvcnRGaXJlZChQYXNzUmVmUHRyPElEQlRyYW4KIHZvaWQgSURCRGF0
YWJhc2VCYWNrZW5kSW1wbDo6dHJhbnNhY3Rpb25GaW5pc2hlZEFuZENvbXBsZXRlRmlyZWQoUGFz
c1JlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsPiBwcnBUcmFuc2FjdGlvbikKIHsKICAg
ICBSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbD4gdHJhbnNhY3Rpb24gPSBwcnBUcmFu
c2FjdGlvbjsKLSAgICBpZiAodHJhbnNhY3Rpb24tPm1vZGUoKSA9PSBJREJUcmFuc2FjdGlvbjo6
VkVSU0lPTl9DSEFOR0UpCisgICAgaWYgKHRyYW5zYWN0aW9uLT5tb2RlKCkgPT0gSW5kZXhlZERC
OjpUcmFuc2FjdGlvblZlcnNpb25DaGFuZ2UpCiAgICAgICAgIHByb2Nlc3NQZW5kaW5nQ2FsbHMo
KTsKIH0KIApAQCAtMTE2NSw3ICsxMTY1LDcgQEAgdm9pZCBJREJEYXRhYmFzZUJhY2tlbmRJbXBs
Ojpwcm9jZXNzUGVuZGluZ0NhbGxzKCkKIAogdm9pZCBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpj
cmVhdGVUcmFuc2FjdGlvbihpbnQ2NF90IHRyYW5zYWN0aW9uSWQsIFBhc3NSZWZQdHI8SURCRGF0
YWJhc2VDYWxsYmFja3M+IGNhbGxiYWNrcywgY29uc3QgVmVjdG9yPGludDY0X3Q+JiBvYmplY3RT
dG9yZUlkcywgdW5zaWduZWQgc2hvcnQgbW9kZSkKIHsKLSAgICBSZWZQdHI8SURCVHJhbnNhY3Rp
b25CYWNrZW5kSW1wbD4gdHJhbnNhY3Rpb24gPSBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsOjpj
cmVhdGUodHJhbnNhY3Rpb25JZCwgY2FsbGJhY2tzLCBvYmplY3RTdG9yZUlkcywgc3RhdGljX2Nh
c3Q8SURCVHJhbnNhY3Rpb246Ok1vZGU+KG1vZGUpLCB0aGlzKTsKKyAgICBSZWZQdHI8SURCVHJh
bnNhY3Rpb25CYWNrZW5kSW1wbD4gdHJhbnNhY3Rpb24gPSBJREJUcmFuc2FjdGlvbkJhY2tlbmRJ
bXBsOjpjcmVhdGUodHJhbnNhY3Rpb25JZCwgY2FsbGJhY2tzLCBvYmplY3RTdG9yZUlkcywgc3Rh
dGljX2Nhc3Q8SW5kZXhlZERCOjpUcmFuc2FjdGlvbk1vZGU+KG1vZGUpLCB0aGlzKTsKICAgICBB
U1NFUlQoIW1fdHJhbnNhY3Rpb25zLmNvbnRhaW5zKHRyYW5zYWN0aW9uSWQpKTsKICAgICBtX3Ry
YW5zYWN0aW9ucy5hZGQodHJhbnNhY3Rpb25JZCwgdHJhbnNhY3Rpb24uZ2V0KCkpOwogfQpAQCAt
MTI1Nyw3ICsxMjU3LDcgQEAgdm9pZCBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpydW5JbnRWZXJz
aW9uQ2hhbmdlVHJhbnNhY3Rpb24oUGFzc1JlZlB0cjxJREJDYWxsYmEKICAgICB9CiAKICAgICBW
ZWN0b3I8aW50NjRfdD4gb2JqZWN0U3RvcmVJZHM7Ci0gICAgY3JlYXRlVHJhbnNhY3Rpb24odHJh
bnNhY3Rpb25JZCwgZGF0YWJhc2VDYWxsYmFja3MsIG9iamVjdFN0b3JlSWRzLCBJREJUcmFuc2Fj
dGlvbjo6VkVSU0lPTl9DSEFOR0UpOworICAgIGNyZWF0ZVRyYW5zYWN0aW9uKHRyYW5zYWN0aW9u
SWQsIGRhdGFiYXNlQ2FsbGJhY2tzLCBvYmplY3RTdG9yZUlkcywgSW5kZXhlZERCOjpUcmFuc2Fj
dGlvblZlcnNpb25DaGFuZ2UpOwogICAgIFJlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBs
PiB0cmFuc2FjdGlvbiA9IG1fdHJhbnNhY3Rpb25zLmdldCh0cmFuc2FjdGlvbklkKTsKIAogICAg
IHRyYW5zYWN0aW9uLT5zY2hlZHVsZVRhc2soVmVyc2lvbkNoYW5nZU9wZXJhdGlvbjo6Y3JlYXRl
KHRoaXMsIHRyYW5zYWN0aW9uSWQsIHJlcXVlc3RlZFZlcnNpb24sIGNhbGxiYWNrcywgZGF0YWJh
c2VDYWxsYmFja3MpLCBWZXJzaW9uQ2hhbmdlQWJvcnRPcGVyYXRpb246OmNyZWF0ZSh0aGlzLCBt
X21ldGFkYXRhLnZlcnNpb24sIG1fbWV0YWRhdGEuaW50VmVyc2lvbikpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VCYWNrZW5kSW1wbC5o
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VCYWNrZW5kSW1w
bC5oCmluZGV4IDFlYmM4NzgxMmU1YWU5NmRmZGI1ODc3ZDFkZjNiOTVhYjliMzAzNmQuLjM1M2Jm
YTA5MzE4OWQxZDg0YmRmYTA2OTE5OTc3NWQ1ODAxNWNiOTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQmFja2VuZEltcGwuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmRJbXBsLmgK
QEAgLTI3LDcgKzI3LDcgQEAKICNkZWZpbmUgSURCRGF0YWJhc2VCYWNrZW5kSW1wbF9oCiAKICNp
bmNsdWRlICJJREJDYWxsYmFja3MuaCIKLSNpbmNsdWRlICJJREJEYXRhYmFzZS5oIgorI2luY2x1
ZGUgIklEQk1ldGFkYXRhLmgiCiAjaW5jbHVkZSA8c3RkaW50Lmg+CiAjaW5jbHVkZSA8d3RmL0Rl
cXVlLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KQEAgLTg0LDcgKzg0LDcgQEAgcHVibGlj
OgogICAgIHZpcnR1YWwgdm9pZCBwdXQoaW50NjRfdCB0cmFuc2FjdGlvbklkLCBpbnQ2NF90IG9i
amVjdFN0b3JlSWQsIFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiB2YWx1ZSwgUGFzc1JlZlB0cjxJ
REJLZXk+LCBQdXRNb2RlLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4sIGNvbnN0IFZlY3Rvcjxp
bnQ2NF90PiYgaW5kZXhJZHMsIGNvbnN0IFZlY3RvcjxJbmRleEtleXM+JikgT1ZFUlJJREU7CiAg
ICAgdmlydHVhbCB2b2lkIHNldEluZGV4S2V5cyhpbnQ2NF90IHRyYW5zYWN0aW9uSWQsIGludDY0
X3Qgb2JqZWN0U3RvcmVJZCwgUGFzc1JlZlB0cjxJREJLZXk+IHBycFByaW1hcnlLZXksIGNvbnN0
IFZlY3RvcjxpbnQ2NF90PiYgaW5kZXhJZHMsIGNvbnN0IFZlY3RvcjxJbmRleEtleXM+JikgT1ZF
UlJJREU7CiAgICAgdmlydHVhbCB2b2lkIHNldEluZGV4ZXNSZWFkeShpbnQ2NF90IHRyYW5zYWN0
aW9uSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgY29uc3QgVmVjdG9yPGludDY0X3Q+JiBpbmRl
eElkcykgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCB2b2lkIG9wZW5DdXJzb3IoaW50NjRfdCB0cmFu
c2FjdGlvbklkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGludDY0X3QgaW5kZXhJZCwgUGFzc1Jl
ZlB0cjxJREJLZXlSYW5nZT4sIHVuc2lnbmVkIHNob3J0IGRpcmVjdGlvbiwgYm9vbCBrZXlPbmx5
LCBUYXNrVHlwZSwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+KSBPVkVSUklERTsKKyAgICB2aXJ0
dWFsIHZvaWQgb3BlbkN1cnNvcihpbnQ2NF90IHRyYW5zYWN0aW9uSWQsIGludDY0X3Qgb2JqZWN0
U3RvcmVJZCwgaW50NjRfdCBpbmRleElkLCBQYXNzUmVmUHRyPElEQktleVJhbmdlPiwgSW5kZXhl
ZERCOjpDdXJzb3JEaXJlY3Rpb24sIGJvb2wga2V5T25seSwgVGFza1R5cGUsIFBhc3NSZWZQdHI8
SURCQ2FsbGJhY2tzPikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIGNvdW50KGludDY0X3Qg
dHJhbnNhY3Rpb25JZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBpbnQ2NF90IGluZGV4SWQsIFBh
c3NSZWZQdHI8SURCS2V5UmFuZ2U+LCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4pIE9WRVJSSURF
OwogICAgIHZpcnR1YWwgdm9pZCBkZWxldGVSYW5nZShpbnQ2NF90IHRyYW5zYWN0aW9uSWQsIGlu
dDY0X3Qgb2JqZWN0U3RvcmVJZCwgUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4sIFBhc3NSZWZQdHI8
SURCQ2FsbGJhY2tzPikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIGNsZWFyKGludDY0X3Qg
dHJhbnNhY3Rpb25JZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBQYXNzUmVmUHRyPElEQkNhbGxi
YWNrcz4pIE9WRVJSSURFOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvSURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2UuaAppbmRleCBlMDAxNGVi
M2UyZGNjMmEzZjQzNDI1MDc0NDU3OTMwNWI3MTY3YzQ2Li4zZTUxY2MwNmEyMjM5YWNlOGU3OThj
NGE4MzYwMzY0YWYwYTI5NDA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2UuaApAQCAtMjYs
NyArMjYsOCBAQAogI2lmbmRlZiBJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2VfaAogI2RlZmlu
ZSBJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2VfaAogCi0jaW5jbHVkZSAiSURCVHJhbnNhY3Rp
b24uaCIKKyNpbmNsdWRlICJJREJEYXRhYmFzZUVycm9yLmgiCisjaW5jbHVkZSAiSW5kZXhlZERC
LmgiCiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRl
ZC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgpAQCAtODUsNyArODYsNyBAQCBw
dWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHB1dChpbnQ2NF90IHRyYW5zYWN0aW9uSWQsIGludDY0
X3Qgb2JqZWN0U3RvcmVJZCwgUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+IHZhbHVlLCBQYXNzUmVm
UHRyPElEQktleT4sIFB1dE1vZGUsIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiwgY29uc3QgVmVj
dG9yPGludDY0X3Q+JiBpbmRleElkcywgY29uc3QgVmVjdG9yPEluZGV4S2V5cz4mKSA9IDA7CiAg
ICAgdmlydHVhbCB2b2lkIHNldEluZGV4S2V5cyhpbnQ2NF90IHRyYW5zYWN0aW9uSWQsIGludDY0
X3Qgb2JqZWN0U3RvcmVJZCwgUGFzc1JlZlB0cjxJREJLZXk+IHBycFByaW1hcnlLZXksIGNvbnN0
IFZlY3RvcjxpbnQ2NF90PiYgaW5kZXhJZHMsIGNvbnN0IFZlY3RvcjxJbmRleEtleXM+JikgPSAw
OwogICAgIHZpcnR1YWwgdm9pZCBzZXRJbmRleGVzUmVhZHkoaW50NjRfdCB0cmFuc2FjdGlvbklk
LCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGNvbnN0IFZlY3RvcjxpbnQ2NF90PiYgaW5kZXhJZHMp
ID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgb3BlbkN1cnNvcihpbnQ2NF90IHRyYW5zYWN0aW9uSWQs
IGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgaW50NjRfdCBpbmRleElkLCBQYXNzUmVmUHRyPElEQktl
eVJhbmdlPiwgdW5zaWduZWQgc2hvcnQgZGlyZWN0aW9uLCBib29sIGtleU9ubHksIFRhc2tUeXBl
LCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4pID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgb3BlbkN1
cnNvcihpbnQ2NF90IHRyYW5zYWN0aW9uSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgaW50NjRf
dCBpbmRleElkLCBQYXNzUmVmUHRyPElEQktleVJhbmdlPiwgSW5kZXhlZERCOjpDdXJzb3JEaXJl
Y3Rpb24sIGJvb2wga2V5T25seSwgVGFza1R5cGUsIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPikg
PSAwOwogICAgIHZpcnR1YWwgdm9pZCBjb3VudChpbnQ2NF90IHRyYW5zYWN0aW9uSWQsIGludDY0
X3Qgb2JqZWN0U3RvcmVJZCwgaW50NjRfdCBpbmRleElkLCBQYXNzUmVmUHRyPElEQktleVJhbmdl
PiwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRlbGV0
ZVJhbmdlKGludDY0X3QgdHJhbnNhY3Rpb25JZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBQYXNz
UmVmUHRyPElEQktleVJhbmdlPiwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+KSA9IDA7CiAgICAg
dmlydHVhbCB2b2lkIGNsZWFyKGludDY0X3QgdHJhbnNhY3Rpb25JZCwgaW50NjRfdCBvYmplY3RT
dG9yZUlkLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4pID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkZhY3RvcnkuaCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL0lEQkZhY3RvcnkuaAppbmRleCBjYjFiN2IwYjM3NmI3YWE2ZDg0
OWM2ODQ4YjMwZTNlMWNlNjAyZWY4Li5jYzYxY2Q3YzZmYmQxMmU0ZTA5YTc3ZWM5ZGQwZGEyMGNm
ZTc3MGI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJG
YWN0b3J5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRmFjdG9y
eS5oCkBAIC0yOCw3ICsyOCw2IEBACiAjaWZuZGVmIElEQkZhY3RvcnlfaAogI2RlZmluZSBJREJG
YWN0b3J5X2gKIAotI2luY2x1ZGUgIklEQkZhY3RvcnlCYWNrZW5kSW50ZXJmYWNlLmgiCiAjaW5j
bHVkZSAiSURCT3BlbkRCUmVxdWVzdC5oIgogI2luY2x1ZGUgIlNjcmlwdFdyYXBwYWJsZS5oIgog
I2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9JREJJbmRleC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9JREJJbmRleC5jcHAKaW5kZXggYmViOTgzNmE1NGVhYTg5YTVjODdiMmE1OTE3Njg5
MjM3ZWMyNDIwZS4uZmY1ZDQzNjdiODNiOTA4NWI4MzlhNzQ2Yjg2Y2I4NjA2M2FmYjE4MyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCSW5kZXguY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkluZGV4LmNwcApAQCAtMjgs
NyArMjgsNiBAQAogCiAjaWYgRU5BQkxFKElOREVYRURfREFUQUJBU0UpCiAKLSNpbmNsdWRlICJJ
REJDdXJzb3JCYWNrZW5kSW50ZXJmYWNlLmgiCiAjaW5jbHVkZSAiSURCRGF0YWJhc2VFeGNlcHRp
b24uaCIKICNpbmNsdWRlICJJREJLZXkuaCIKICNpbmNsdWRlICJJREJLZXlSYW5nZS5oIgpAQCAt
NDAsNyArMzksNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0YXRpYyBjb25zdCB1bnNp
Z25lZCBzaG9ydCBkZWZhdWx0RGlyZWN0aW9uID0gSURCQ3Vyc29yOjpORVhUOworc3RhdGljIGNv
bnN0IHVuc2lnbmVkIHNob3J0IGRlZmF1bHREaXJlY3Rpb24gPSBJbmRleGVkREI6OkN1cnNvck5l
eHQ7CiAKIElEQkluZGV4OjpJREJJbmRleChjb25zdCBJREJJbmRleE1ldGFkYXRhJiBtZXRhZGF0
YSwgSURCT2JqZWN0U3RvcmUqIG9iamVjdFN0b3JlLCBJREJUcmFuc2FjdGlvbiogdHJhbnNhY3Rp
b24pCiAgICAgOiBtX21ldGFkYXRhKG1ldGFkYXRhKQpAQCAtNjgsMTIgKzY3LDEyIEBAIFBhc3NS
ZWZQdHI8SURCUmVxdWVzdD4gSURCSW5kZXg6Om9wZW5DdXJzb3IoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCogY29udGV4dCwgUGFzCiAgICAgICAgIGVjID0gSURCRGF0YWJhc2VFeGNlcHRpb246OlRy
YW5zYWN0aW9uSW5hY3RpdmVFcnJvcjsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQotICAgIElE
QkN1cnNvcjo6RGlyZWN0aW9uIGRpcmVjdGlvbiA9IElEQkN1cnNvcjo6c3RyaW5nVG9EaXJlY3Rp
b24oZGlyZWN0aW9uU3RyaW5nLCBjb250ZXh0LCBlYyk7CisgICAgSW5kZXhlZERCOjpDdXJzb3JE
aXJlY3Rpb24gZGlyZWN0aW9uID0gSURCQ3Vyc29yOjpzdHJpbmdUb0RpcmVjdGlvbihkaXJlY3Rp
b25TdHJpbmcsIGNvbnRleHQsIGVjKTsKICAgICBpZiAoZWMpCiAgICAgICAgIHJldHVybiAwOwog
CiAgICAgUmVmUHRyPElEQlJlcXVlc3Q+IHJlcXVlc3QgPSBJREJSZXF1ZXN0OjpjcmVhdGUoY29u
dGV4dCwgSURCQW55OjpjcmVhdGUodGhpcyksIG1fdHJhbnNhY3Rpb24uZ2V0KCkpOwotICAgIHJl
cXVlc3QtPnNldEN1cnNvckRldGFpbHMoSURCQ3Vyc29yQmFja2VuZEludGVyZmFjZTo6S2V5QW5k
VmFsdWUsIGRpcmVjdGlvbik7CisgICAgcmVxdWVzdC0+c2V0Q3Vyc29yRGV0YWlscyhJbmRleGVk
REI6OkN1cnNvcktleUFuZFZhbHVlLCBkaXJlY3Rpb24pOwogICAgIGJhY2tlbmREQigpLT5vcGVu
Q3Vyc29yKG1fdHJhbnNhY3Rpb24tPmlkKCksIG1fb2JqZWN0U3RvcmUtPmlkKCksIG1fbWV0YWRh
dGEuaWQsIGtleVJhbmdlLCBkaXJlY3Rpb24sIGZhbHNlLCBJREJEYXRhYmFzZUJhY2tlbmRJbnRl
cmZhY2U6Ok5vcm1hbFRhc2ssIHJlcXVlc3QpOwogICAgIHJldHVybiByZXF1ZXN0OwogfQpAQCAt
MTIzLDEyICsxMjIsMTIgQEAgUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBJREJJbmRleDo6b3Blbktl
eUN1cnNvcihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LAogICAgICAgICBlYyA9IElE
QkRhdGFiYXNlRXhjZXB0aW9uOjpUcmFuc2FjdGlvbkluYWN0aXZlRXJyb3I7CiAgICAgICAgIHJl
dHVybiAwOwogICAgIH0KLSAgICBJREJDdXJzb3I6OkRpcmVjdGlvbiBkaXJlY3Rpb24gPSBJREJD
dXJzb3I6OnN0cmluZ1RvRGlyZWN0aW9uKGRpcmVjdGlvblN0cmluZywgY29udGV4dCwgZWMpOwor
ICAgIEluZGV4ZWREQjo6Q3Vyc29yRGlyZWN0aW9uIGRpcmVjdGlvbiA9IElEQkN1cnNvcjo6c3Ry
aW5nVG9EaXJlY3Rpb24oZGlyZWN0aW9uU3RyaW5nLCBjb250ZXh0LCBlYyk7CiAgICAgaWYgKGVj
KQogICAgICAgICByZXR1cm4gMDsKIAogICAgIFJlZlB0cjxJREJSZXF1ZXN0PiByZXF1ZXN0ID0g
SURCUmVxdWVzdDo6Y3JlYXRlKGNvbnRleHQsIElEQkFueTo6Y3JlYXRlKHRoaXMpLCBtX3RyYW5z
YWN0aW9uLmdldCgpKTsKLSAgICByZXF1ZXN0LT5zZXRDdXJzb3JEZXRhaWxzKElEQkN1cnNvckJh
Y2tlbmRJbnRlcmZhY2U6OktleU9ubHksIGRpcmVjdGlvbik7CisgICAgcmVxdWVzdC0+c2V0Q3Vy
c29yRGV0YWlscyhJbmRleGVkREI6OkN1cnNvcktleU9ubHksIGRpcmVjdGlvbik7CiAgICAgYmFj
a2VuZERCKCktPm9wZW5DdXJzb3IobV90cmFuc2FjdGlvbi0+aWQoKSwgbV9vYmplY3RTdG9yZS0+
aWQoKSwgbV9tZXRhZGF0YS5pZCwga2V5UmFuZ2UsIGRpcmVjdGlvbiwgdHJ1ZSwgSURCRGF0YWJh
c2VCYWNrZW5kSW50ZXJmYWNlOjpOb3JtYWxUYXNrLCByZXF1ZXN0KTsKICAgICByZXR1cm4gcmVx
dWVzdDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lE
Qk9iamVjdFN0b3JlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9i
amVjdFN0b3JlLmNwcAppbmRleCBmYWE1Y2JlMjYxY2NiMDRkNGM4OTM5N2Q2Y2ZjM2IyZmUyN2E4
YTNmLi41ODkwZWMzN2ZjMWMyNTdkZWFkMmZmZTVmZWU4NjEzN2UwN2JlNTIzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmUuY3BwCkBA
IC0zMSw3ICszMSw2IEBACiAjaW5jbHVkZSAiRE9NU3RyaW5nTGlzdC5oIgogI2luY2x1ZGUgIklE
QkFueS5oIgogI2luY2x1ZGUgIklEQkJpbmRpbmdVdGlsaXRpZXMuaCIKLSNpbmNsdWRlICJJREJD
dXJzb3JCYWNrZW5kSW50ZXJmYWNlLmgiCiAjaW5jbHVkZSAiSURCQ3Vyc29yV2l0aFZhbHVlLmgi
CiAjaW5jbHVkZSAiSURCRGF0YWJhc2UuaCIKICNpbmNsdWRlICJJREJEYXRhYmFzZUV4Y2VwdGlv
bi5oIgpAQCAtNDgsNyArNDcsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0YXRpYyBj
b25zdCB1bnNpZ25lZCBzaG9ydCBkZWZhdWx0RGlyZWN0aW9uID0gSURCQ3Vyc29yOjpORVhUOwor
c3RhdGljIGNvbnN0IHVuc2lnbmVkIHNob3J0IGRlZmF1bHREaXJlY3Rpb24gPSBJbmRleGVkREI6
OkN1cnNvck5leHQ7CiAKIElEQk9iamVjdFN0b3JlOjpJREJPYmplY3RTdG9yZShjb25zdCBJREJP
YmplY3RTdG9yZU1ldGFkYXRhJiBtZXRhZGF0YSwgSURCVHJhbnNhY3Rpb24qIHRyYW5zYWN0aW9u
KQogICAgIDogbV9tZXRhZGF0YShtZXRhZGF0YSkKQEAgLTUwNSwxMiArNTA0LDEyIEBAIFBhc3NS
ZWZQdHI8SURCUmVxdWVzdD4gSURCT2JqZWN0U3RvcmU6Om9wZW5DdXJzb3IoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCogY29udGV4CiAgICAgICAgIGVjID0gSURCRGF0YWJhc2VFeGNlcHRpb246OlRy
YW5zYWN0aW9uSW5hY3RpdmVFcnJvcjsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQotICAgIElE
QkN1cnNvcjo6RGlyZWN0aW9uIGRpcmVjdGlvbiA9IElEQkN1cnNvcjo6c3RyaW5nVG9EaXJlY3Rp
b24oZGlyZWN0aW9uU3RyaW5nLCBjb250ZXh0LCBlYyk7CisgICAgSW5kZXhlZERCOjpDdXJzb3JE
aXJlY3Rpb24gZGlyZWN0aW9uID0gSURCQ3Vyc29yOjpzdHJpbmdUb0RpcmVjdGlvbihkaXJlY3Rp
b25TdHJpbmcsIGNvbnRleHQsIGVjKTsKICAgICBpZiAoZWMpCiAgICAgICAgIHJldHVybiAwOwog
CiAgICAgUmVmUHRyPElEQlJlcXVlc3Q+IHJlcXVlc3QgPSBJREJSZXF1ZXN0OjpjcmVhdGUoY29u
dGV4dCwgSURCQW55OjpjcmVhdGUodGhpcyksIG1fdHJhbnNhY3Rpb24uZ2V0KCkpOwotICAgIHJl
cXVlc3QtPnNldEN1cnNvckRldGFpbHMoSURCQ3Vyc29yQmFja2VuZEludGVyZmFjZTo6S2V5QW5k
VmFsdWUsIGRpcmVjdGlvbik7CisgICAgcmVxdWVzdC0+c2V0Q3Vyc29yRGV0YWlscyhJbmRleGVk
REI6OkN1cnNvcktleUFuZFZhbHVlLCBkaXJlY3Rpb24pOwogCiAgICAgYmFja2VuZERCKCktPm9w
ZW5DdXJzb3IobV90cmFuc2FjdGlvbi0+aWQoKSwgaWQoKSwgSURCSW5kZXhNZXRhZGF0YTo6SW52
YWxpZElkLCByYW5nZSwgZGlyZWN0aW9uLCBmYWxzZSwgc3RhdGljX2Nhc3Q8SURCRGF0YWJhc2VC
YWNrZW5kSW50ZXJmYWNlOjpUYXNrVHlwZT4odGFza1R5cGUpLCByZXF1ZXN0KTsKICAgICByZXR1
cm4gcmVxdWVzdC5yZWxlYXNlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9JREJSZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL0lEQlJlcXVlc3QuY3BwCmluZGV4IDJiMTM0MzkxMTg0MzQzYWU5Y2ZhMDQ4NTM4MDNmMDcx
NTlhODYzNGIuLjY2NWUzZmZhZWI3ZjJiNDMzZDc1YTdmOGQ0NmU3ZmFiYTA4NjZjMmYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlJlcXVlc3QuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlJlcXVlc3QuY3BwCkBAIC0z
Nyw2ICszNyw3IEBACiAjaW5jbHVkZSAiRXZlbnRRdWV1ZS5oIgogI2luY2x1ZGUgIkV4Y2VwdGlv
bkNvZGVQbGFjZWhvbGRlci5oIgogI2luY2x1ZGUgIklEQkJpbmRpbmdVdGlsaXRpZXMuaCIKKyNp
bmNsdWRlICJJREJDdXJzb3JCYWNrZW5kSW50ZXJmYWNlLmgiCiAjaW5jbHVkZSAiSURCQ3Vyc29y
V2l0aFZhbHVlLmgiCiAjaW5jbHVkZSAiSURCRGF0YWJhc2UuaCIKICNpbmNsdWRlICJJREJFdmVu
dERpc3BhdGNoZXIuaCIKQEAgLTc3LDggKzc4LDggQEAgSURCUmVxdWVzdDo6SURCUmVxdWVzdChT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBQYXNzUmVmUHRyPElEQkFueT4gc291cmMK
ICAgICAsIG1fc291cmNlKHNvdXJjZSkKICAgICAsIG1fdGFza1R5cGUodGFza1R5cGUpCiAgICAg
LCBtX2hhc1BlbmRpbmdBY3Rpdml0eSh0cnVlKQotICAgICwgbV9jdXJzb3JUeXBlKElEQkN1cnNv
ckJhY2tlbmRJbnRlcmZhY2U6OktleUFuZFZhbHVlKQotICAgICwgbV9jdXJzb3JEaXJlY3Rpb24o
SURCQ3Vyc29yOjpORVhUKQorICAgICwgbV9jdXJzb3JUeXBlKEluZGV4ZWREQjo6Q3Vyc29yS2V5
QW5kVmFsdWUpCisgICAgLCBtX2N1cnNvckRpcmVjdGlvbihJbmRleGVkREI6OkN1cnNvck5leHQp
CiAgICAgLCBtX2N1cnNvckZpbmlzaGVkKGZhbHNlKQogICAgICwgbV9wZW5kaW5nQ3Vyc29yKDAp
CiAgICAgLCBtX2RpZEZpcmVVcGdyYWRlTmVlZGVkRXZlbnQoZmFsc2UpCkBAIC0xODUsNyArMTg2
LDcgQEAgdm9pZCBJREJSZXF1ZXN0OjphYm9ydCgpCiAgICAgbV9yZXF1ZXN0QWJvcnRlZCA9IHRy
dWU7CiB9CiAKLXZvaWQgSURCUmVxdWVzdDo6c2V0Q3Vyc29yRGV0YWlscyhJREJDdXJzb3JCYWNr
ZW5kSW50ZXJmYWNlOjpDdXJzb3JUeXBlIGN1cnNvclR5cGUsIElEQkN1cnNvcjo6RGlyZWN0aW9u
IGRpcmVjdGlvbikKK3ZvaWQgSURCUmVxdWVzdDo6c2V0Q3Vyc29yRGV0YWlscyhJbmRleGVkREI6
OkN1cnNvclR5cGUgY3Vyc29yVHlwZSwgSW5kZXhlZERCOjpDdXJzb3JEaXJlY3Rpb24gZGlyZWN0
aW9uKQogewogICAgIEFTU0VSVChtX3JlYWR5U3RhdGUgPT0gUEVORElORyk7CiAgICAgQVNTRVJU
KCFtX3BlbmRpbmdDdXJzb3IpOwpAQCAtMjI4LDcgKzIyOSw3IEBAIHZvaWQgSURCUmVxdWVzdDo6
c2V0UmVzdWx0Q3Vyc29yKFBhc3NSZWZQdHI8SURCQ3Vyc29yPiBjdXJzb3IsIFBhc3NSZWZQdHI8
SURCS2V5CiAgICAgbV9jdXJzb3JQcmltYXJ5S2V5ID0gcHJpbWFyeUtleTsKICAgICBtX2N1cnNv
clZhbHVlID0gdmFsdWU7CiAKLSAgICBpZiAobV9jdXJzb3JUeXBlID09IElEQkN1cnNvckJhY2tl
bmRJbnRlcmZhY2U6OktleU9ubHkpIHsKKyAgICBpZiAobV9jdXJzb3JUeXBlID09IEluZGV4ZWRE
Qjo6Q3Vyc29yS2V5T25seSkgewogICAgICAgICBtX3Jlc3VsdCA9IElEQkFueTo6Y3JlYXRlKGN1
cnNvcik7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0yOTQsMTAgKzI5NSwxMCBAQCB2b2lk
IElEQlJlcXVlc3Q6Om9uU3VjY2VzcyhQYXNzUmVmUHRyPElEQkN1cnNvckJhY2tlbmRJbnRlcmZh
Y2U+IGJhY2tlbmQsIFBhc3NSZQogICAgIEFTU0VSVCghbV9wZW5kaW5nQ3Vyc29yKTsKICAgICBS
ZWZQdHI8SURCQ3Vyc29yPiBjdXJzb3I7CiAgICAgc3dpdGNoIChtX2N1cnNvclR5cGUpIHsKLSAg
ICBjYXNlIElEQkN1cnNvckJhY2tlbmRJbnRlcmZhY2U6OktleU9ubHk6CisgICAgY2FzZSBJbmRl
eGVkREI6OkN1cnNvcktleU9ubHk6CiAgICAgICAgIGN1cnNvciA9IElEQkN1cnNvcjo6Y3JlYXRl
KGJhY2tlbmQsIG1fY3Vyc29yRGlyZWN0aW9uLCB0aGlzLCBtX3NvdXJjZS5nZXQoKSwgbV90cmFu
c2FjdGlvbi5nZXQoKSk7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgSURCQ3Vyc29yQmFja2Vu
ZEludGVyZmFjZTo6S2V5QW5kVmFsdWU6CisgICAgY2FzZSBJbmRleGVkREI6OkN1cnNvcktleUFu
ZFZhbHVlOgogICAgICAgICBjdXJzb3IgPSBJREJDdXJzb3JXaXRoVmFsdWU6OmNyZWF0ZShiYWNr
ZW5kLCBtX2N1cnNvckRpcmVjdGlvbiwgdGhpcywgbV9zb3VyY2UuZ2V0KCksIG1fdHJhbnNhY3Rp
b24uZ2V0KCkpOwogICAgICAgICBicmVhazsKICAgICBkZWZhdWx0OgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCUmVxdWVzdC5oIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvSURCUmVxdWVzdC5oCmluZGV4IGQwNjdlYjI5YTg4NTU3OTJj
MGMxMjU1Nzc1Y2QwMjQ4ODhjOTUxYjUuLmI4MzA2NDA3MDAzYzEyMGJiYTE3NjM4MjRiOGQyYTkz
OTZjZmEyNzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lE
QlJlcXVlc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJSZXF1
ZXN0LmgKQEAgLTQyLDcgKzQyLDYgQEAKICNpbmNsdWRlICJJREJBbnkuaCIKICNpbmNsdWRlICJJ
REJDYWxsYmFja3MuaCIKICNpbmNsdWRlICJJREJDdXJzb3IuaCIKLSNpbmNsdWRlICJJREJDdXJz
b3JCYWNrZW5kSW50ZXJmYWNlLmgiCiAjaW5jbHVkZSAiU2NyaXB0V3JhcHBhYmxlLmgiCiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKQEAgLTc4LDcgKzc3LDcgQEAgcHVibGljOgogICAgIERFRklORV9B
VFRSSUJVVEVfRVZFTlRfTElTVEVORVIoZXJyb3IpOwogCiAgICAgdm9pZCBtYXJrRWFybHlEZWF0
aCgpOwotICAgIHZvaWQgc2V0Q3Vyc29yRGV0YWlscyhJREJDdXJzb3JCYWNrZW5kSW50ZXJmYWNl
OjpDdXJzb3JUeXBlLCBJREJDdXJzb3I6OkRpcmVjdGlvbik7CisgICAgdm9pZCBzZXRDdXJzb3JE
ZXRhaWxzKEluZGV4ZWREQjo6Q3Vyc29yVHlwZSwgSW5kZXhlZERCOjpDdXJzb3JEaXJlY3Rpb24p
OwogICAgIHZvaWQgc2V0UGVuZGluZ0N1cnNvcihQYXNzUmVmUHRyPElEQkN1cnNvcj4pOwogICAg
IHZvaWQgZmluaXNoQ3Vyc29yKCk7CiAgICAgdm9pZCBhYm9ydCgpOwpAQCAtMTQ5LDggKzE0OCw4
IEBAIHByaXZhdGU6CiAgICAgVmVjdG9yPFJlZlB0cjxFdmVudD4gPiBtX2VucXVldWVkRXZlbnRz
OwogCiAgICAgLy8gT25seSB1c2VkIGlmIHRoZSByZXN1bHQgdHlwZSB3aWxsIGJlIGEgY3Vyc29y
LgotICAgIElEQkN1cnNvckJhY2tlbmRJbnRlcmZhY2U6OkN1cnNvclR5cGUgbV9jdXJzb3JUeXBl
OwotICAgIElEQkN1cnNvcjo6RGlyZWN0aW9uIG1fY3Vyc29yRGlyZWN0aW9uOworICAgIEluZGV4
ZWREQjo6Q3Vyc29yVHlwZSBtX2N1cnNvclR5cGU7CisgICAgSW5kZXhlZERCOjpDdXJzb3JEaXJl
Y3Rpb24gbV9jdXJzb3JEaXJlY3Rpb247CiAgICAgYm9vbCBtX2N1cnNvckZpbmlzaGVkOwogICAg
IFJlZlB0cjxJREJDdXJzb3I+IG1fcGVuZGluZ0N1cnNvcjsKICAgICBSZWZQdHI8SURCS2V5PiBt
X2N1cnNvcktleTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L0lEQlRyYW5zYWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lE
QlRyYW5zYWN0aW9uLmNwcAppbmRleCBiYzBlZGRkZjg0MTAzZmNjZTJkZmVkMTNiMmRhMjNiNDIz
NDk2N2MzLi5mNTU1OTQzZDgwMzNkODgwOTU4MzU2MzgyNWFkZjBhNTE2NGJkMjQyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb24uY3Bw
CkBAIC00NCw3ICs0NCw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUGFzc1JlZlB0cjxJ
REJUcmFuc2FjdGlvbj4gSURCVHJhbnNhY3Rpb246OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiBjb250ZXh0LCBpbnQ2NF90IGlkLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgb2JqZWN0U3Rv
cmVOYW1lcywgSURCVHJhbnNhY3Rpb246Ok1vZGUgbW9kZSwgSURCRGF0YWJhc2UqIGRiKQorUGFz
c1JlZlB0cjxJREJUcmFuc2FjdGlvbj4gSURCVHJhbnNhY3Rpb246OmNyZWF0ZShTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiBjb250ZXh0LCBpbnQ2NF90IGlkLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYg
b2JqZWN0U3RvcmVOYW1lcywgSW5kZXhlZERCOjpUcmFuc2FjdGlvbk1vZGUgbW9kZSwgSURCRGF0
YWJhc2UqIGRiKQogewogICAgIElEQk9wZW5EQlJlcXVlc3QqIG9wZW5EQlJlcXVlc3QgPSAwOwog
ICAgIFJlZlB0cjxJREJUcmFuc2FjdGlvbj4gdHJhbnNhY3Rpb24oYWRvcHRSZWYobmV3IElEQlRy
YW5zYWN0aW9uKGNvbnRleHQsIGlkLCBvYmplY3RTdG9yZU5hbWVzLCBtb2RlLCBkYiwgb3BlbkRC
UmVxdWVzdCwgSURCRGF0YWJhc2VNZXRhZGF0YSgpKSkpOwpAQCAtNTQsNyArNTQsNyBAQCBQYXNz
UmVmUHRyPElEQlRyYW5zYWN0aW9uPiBJREJUcmFuc2FjdGlvbjo6Y3JlYXRlKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqIGNvbnRleAogCiBQYXNzUmVmUHRyPElEQlRyYW5zYWN0aW9uPiBJREJUcmFu
c2FjdGlvbjo6Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGludDY0X3Qg
aWQsIElEQkRhdGFiYXNlKiBkYiwgSURCT3BlbkRCUmVxdWVzdCogb3BlbkRCUmVxdWVzdCwgY29u
c3QgSURCRGF0YWJhc2VNZXRhZGF0YSYgcHJldmlvdXNNZXRhZGF0YSkKIHsKLSAgICBSZWZQdHI8
SURCVHJhbnNhY3Rpb24+IHRyYW5zYWN0aW9uKGFkb3B0UmVmKG5ldyBJREJUcmFuc2FjdGlvbihj
b250ZXh0LCBpZCwgVmVjdG9yPFN0cmluZz4oKSwgVkVSU0lPTl9DSEFOR0UsIGRiLCBvcGVuREJS
ZXF1ZXN0LCBwcmV2aW91c01ldGFkYXRhKSkpOworICAgIFJlZlB0cjxJREJUcmFuc2FjdGlvbj4g
dHJhbnNhY3Rpb24oYWRvcHRSZWYobmV3IElEQlRyYW5zYWN0aW9uKGNvbnRleHQsIGlkLCBWZWN0
b3I8U3RyaW5nPigpLCBJbmRleGVkREI6OlRyYW5zYWN0aW9uVmVyc2lvbkNoYW5nZSwgZGIsIG9w
ZW5EQlJlcXVlc3QsIHByZXZpb3VzTWV0YWRhdGEpKSk7CiAgICAgdHJhbnNhY3Rpb24tPnN1c3Bl
bmRJZk5lZWRlZCgpOwogICAgIHJldHVybiB0cmFuc2FjdGlvbi5yZWxlYXNlKCk7CiB9CkBAIC05
MCw3ICs5MCw3IEBAIGNvbnN0IEF0b21pY1N0cmluZyYgSURCVHJhbnNhY3Rpb246Om1vZGVSZWFk
V3JpdGVMZWdhY3koKQogfQogCiAKLUlEQlRyYW5zYWN0aW9uOjpJREJUcmFuc2FjdGlvbihTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBpbnQ2NF90IGlkLCBjb25zdCBWZWN0b3I8U3Ry
aW5nPiYgb2JqZWN0U3RvcmVOYW1lcywgSURCVHJhbnNhY3Rpb246Ok1vZGUgbW9kZSwgSURCRGF0
YWJhc2UqIGRiLCBJREJPcGVuREJSZXF1ZXN0KiBvcGVuREJSZXF1ZXN0LCBjb25zdCBJREJEYXRh
YmFzZU1ldGFkYXRhJiBwcmV2aW91c01ldGFkYXRhKQorSURCVHJhbnNhY3Rpb246OklEQlRyYW5z
YWN0aW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGludDY0X3QgaWQsIGNvbnN0
IFZlY3RvcjxTdHJpbmc+JiBvYmplY3RTdG9yZU5hbWVzLCBJbmRleGVkREI6OlRyYW5zYWN0aW9u
TW9kZSBtb2RlLCBJREJEYXRhYmFzZSogZGIsIElEQk9wZW5EQlJlcXVlc3QqIG9wZW5EQlJlcXVl
c3QsIGNvbnN0IElEQkRhdGFiYXNlTWV0YWRhdGEmIHByZXZpb3VzTWV0YWRhdGEpCiAgICAgOiBB
Y3RpdmVET01PYmplY3QoY29udGV4dCwgdGhpcykKICAgICAsIG1faWQoaWQpCiAgICAgLCBtX2Rh
dGFiYXNlKGRiKQpAQCAtMTAyLDcgKzEwMiw3IEBAIElEQlRyYW5zYWN0aW9uOjpJREJUcmFuc2Fj
dGlvbihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBpbnQ2NF90IGlkLCBjb25zCiAg
ICAgLCBtX2NvbnRleHRTdG9wcGVkKGZhbHNlKQogICAgICwgbV9wcmV2aW91c01ldGFkYXRhKHBy
ZXZpb3VzTWV0YWRhdGEpCiB7Ci0gICAgaWYgKG1vZGUgPT0gVkVSU0lPTl9DSEFOR0UpIHsKKyAg
ICBpZiAobW9kZSA9PSBJbmRleGVkREI6OlRyYW5zYWN0aW9uVmVyc2lvbkNoYW5nZSkgewogICAg
ICAgICAvLyBOb3QgYWN0aXZlIHVudGlsIHRoZSBjYWxsYmFjay4KICAgICAgICAgbV9zdGF0ZSA9
IEluYWN0aXZlOwogICAgIH0KQEAgLTMzNiwzMCArMzM2LDMwIEBAIGJvb2wgSURCVHJhbnNhY3Rp
b246Omhhc1BlbmRpbmdBY3Rpdml0eSgpIGNvbnN0CiAgICAgcmV0dXJuIG1faGFzUGVuZGluZ0Fj
dGl2aXR5OwogfQogCi1JREJUcmFuc2FjdGlvbjo6TW9kZSBJREJUcmFuc2FjdGlvbjo6c3RyaW5n
VG9Nb2RlKGNvbnN0IFN0cmluZyYgbW9kZVN0cmluZywgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCog
Y29udGV4dCwgRXhjZXB0aW9uQ29kZSYgZWMpCitJbmRleGVkREI6OlRyYW5zYWN0aW9uTW9kZSBJ
REJUcmFuc2FjdGlvbjo6c3RyaW5nVG9Nb2RlKGNvbnN0IFN0cmluZyYgbW9kZVN0cmluZywgU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAg
aWYgKG1vZGVTdHJpbmcuaXNOdWxsKCkKICAgICAgICAgfHwgbW9kZVN0cmluZyA9PSBJREJUcmFu
c2FjdGlvbjo6bW9kZVJlYWRPbmx5KCkpCi0gICAgICAgIHJldHVybiBJREJUcmFuc2FjdGlvbjo6
UkVBRF9PTkxZOworICAgICAgICByZXR1cm4gSW5kZXhlZERCOjpUcmFuc2FjdGlvblJlYWRPbmx5
OwogICAgIGlmIChtb2RlU3RyaW5nID09IElEQlRyYW5zYWN0aW9uOjptb2RlUmVhZFdyaXRlKCkp
Ci0gICAgICAgIHJldHVybiBJREJUcmFuc2FjdGlvbjo6UkVBRF9XUklURTsKKyAgICAgICAgcmV0
dXJuIEluZGV4ZWREQjo6VHJhbnNhY3Rpb25SZWFkV3JpdGU7CiAKICAgICBlYyA9IFR5cGVFcnJv
cjsKLSAgICByZXR1cm4gSURCVHJhbnNhY3Rpb246OlJFQURfT05MWTsKKyAgICByZXR1cm4gSW5k
ZXhlZERCOjpUcmFuc2FjdGlvblJlYWRPbmx5OwogfQogCi1jb25zdCBBdG9taWNTdHJpbmcmIElE
QlRyYW5zYWN0aW9uOjptb2RlVG9TdHJpbmcoSURCVHJhbnNhY3Rpb246Ok1vZGUgbW9kZSkKK2Nv
bnN0IEF0b21pY1N0cmluZyYgSURCVHJhbnNhY3Rpb246Om1vZGVUb1N0cmluZyhJbmRleGVkREI6
OlRyYW5zYWN0aW9uTW9kZSBtb2RlKQogewogICAgIHN3aXRjaCAobW9kZSkgewotICAgIGNhc2Ug
SURCVHJhbnNhY3Rpb246OlJFQURfT05MWToKKyAgICBjYXNlIEluZGV4ZWREQjo6VHJhbnNhY3Rp
b25SZWFkT25seToKICAgICAgICAgcmV0dXJuIElEQlRyYW5zYWN0aW9uOjptb2RlUmVhZE9ubHko
KTsKICAgICAgICAgYnJlYWs7CiAKLSAgICBjYXNlIElEQlRyYW5zYWN0aW9uOjpSRUFEX1dSSVRF
OgorICAgIGNhc2UgSW5kZXhlZERCOjpUcmFuc2FjdGlvblJlYWRXcml0ZToKICAgICAgICAgcmV0
dXJuIElEQlRyYW5zYWN0aW9uOjptb2RlUmVhZFdyaXRlKCk7CiAgICAgICAgIGJyZWFrOwogCi0g
ICAgY2FzZSBJREJUcmFuc2FjdGlvbjo6VkVSU0lPTl9DSEFOR0U6CisgICAgY2FzZSBJbmRleGVk
REI6OlRyYW5zYWN0aW9uVmVyc2lvbkNoYW5nZToKICAgICAgICAgcmV0dXJuIElEQlRyYW5zYWN0
aW9uOjptb2RlVmVyc2lvbkNoYW5nZSgpOwogICAgICAgICBicmVhazsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb24uaCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmgKaW5kZXggNjk3NTBl
YjczOWU2ODA3ZGIxMTg3ZGMwZTZjODQ0ZmM4NTAxMmIyNy4uZjRkNjRjYjdkMTNmZTM1MzI1NmM2
ZTE1ZTcyOTc5ZTUyNTU3NTk3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvSURCVHJhbnNhY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5oCkBAIC0zNSw2ICszNSw3IEBACiAjaW5jbHVkZSAiRXZl
bnROYW1lcy5oIgogI2luY2x1ZGUgIkV2ZW50VGFyZ2V0LmgiCiAjaW5jbHVkZSAiSURCTWV0YWRh
dGEuaCIKKyNpbmNsdWRlICJJbmRleGVkREIuaCIKICNpbmNsdWRlICJTY3JpcHRXcmFwcGFibGUu
aCIKICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+
CkBAIC01MSwxMyArNTIsNyBAQCBzdHJ1Y3QgSURCT2JqZWN0U3RvcmVNZXRhZGF0YTsKIAogY2xh
c3MgSURCVHJhbnNhY3Rpb24gOiBwdWJsaWMgU2NyaXB0V3JhcHBhYmxlLCBwdWJsaWMgUmVmQ291
bnRlZDxJREJUcmFuc2FjdGlvbj4sIHB1YmxpYyBFdmVudFRhcmdldCwgcHVibGljIEFjdGl2ZURP
TU9iamVjdCB7CiBwdWJsaWM6Ci0gICAgZW51bSBNb2RlIHsKLSAgICAgICAgUkVBRF9PTkxZID0g
MCwKLSAgICAgICAgUkVBRF9XUklURSA9IDEsCi0gICAgICAgIFZFUlNJT05fQ0hBTkdFID0gMgot
ICAgIH07Ci0KLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbj4gY3JlYXRlKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBpbnQ2NF90LCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgb2Jq
ZWN0U3RvcmVOYW1lcywgTW9kZSwgSURCRGF0YWJhc2UqKTsKKyAgICBzdGF0aWMgUGFzc1JlZlB0
cjxJREJUcmFuc2FjdGlvbj4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBpbnQ2NF90
LCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgb2JqZWN0U3RvcmVOYW1lcywgSW5kZXhlZERCOjpUcmFu
c2FjdGlvbk1vZGUsIElEQkRhdGFiYXNlKik7CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8SURCVHJh
bnNhY3Rpb24+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgaW50NjRfdCwgSURCRGF0
YWJhc2UqLCBJREJPcGVuREJSZXF1ZXN0KiwgY29uc3QgSURCRGF0YWJhc2VNZXRhZGF0YSYgcHJl
dmlvdXNNZXRhZGF0YSk7CiAgICAgdmlydHVhbCB+SURCVHJhbnNhY3Rpb24oKTsKIApAQCAtNjcs
MTYgKzYyLDE2IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiBtb2Rl
UmVhZE9ubHlMZWdhY3koKTsKICAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiBtb2RlUmVh
ZFdyaXRlTGVnYWN5KCk7CiAKLSAgICBzdGF0aWMgTW9kZSBzdHJpbmdUb01vZGUoY29uc3QgU3Ry
aW5nJiwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIEV4Y2VwdGlvbkNvZGUmKTsKLSAgICBzdGF0
aWMgY29uc3QgQXRvbWljU3RyaW5nJiBtb2RlVG9TdHJpbmcoTW9kZSk7CisgICAgc3RhdGljIElu
ZGV4ZWREQjo6VHJhbnNhY3Rpb25Nb2RlIHN0cmluZ1RvTW9kZShjb25zdCBTdHJpbmcmLCBTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiwgRXhjZXB0aW9uQ29kZSYpOworICAgIHN0YXRpYyBjb25zdCBB
dG9taWNTdHJpbmcmIG1vZGVUb1N0cmluZyhJbmRleGVkREI6OlRyYW5zYWN0aW9uTW9kZSk7CiAK
ICAgICBJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2UqIGJhY2tlbmREQigpIGNvbnN0OwogCiAg
ICAgaW50NjRfdCBpZCgpIGNvbnN0IHsgcmV0dXJuIG1faWQ7IH0KICAgICBib29sIGlzQWN0aXZl
KCkgY29uc3QgeyByZXR1cm4gbV9zdGF0ZSA9PSBBY3RpdmU7IH0KICAgICBib29sIGlzRmluaXNo
ZWQoKSBjb25zdCB7IHJldHVybiBtX3N0YXRlID09IEZpbmlzaGVkOyB9Ci0gICAgYm9vbCBpc1Jl
YWRPbmx5KCkgY29uc3QgeyByZXR1cm4gbV9tb2RlID09IFJFQURfT05MWTsgfQotICAgIGJvb2wg
aXNWZXJzaW9uQ2hhbmdlKCkgY29uc3QgeyByZXR1cm4gbV9tb2RlID09IFZFUlNJT05fQ0hBTkdF
OyB9CisgICAgYm9vbCBpc1JlYWRPbmx5KCkgY29uc3QgeyByZXR1cm4gbV9tb2RlID09IEluZGV4
ZWREQjo6VHJhbnNhY3Rpb25SZWFkT25seTsgfQorICAgIGJvb2wgaXNWZXJzaW9uQ2hhbmdlKCkg
Y29uc3QgeyByZXR1cm4gbV9tb2RlID09IEluZGV4ZWREQjo6VHJhbnNhY3Rpb25WZXJzaW9uQ2hh
bmdlOyB9CiAKICAgICAvLyBJbXBsZW1lbnQgdGhlIElEQlRyYW5zYWN0aW9uIElETAogICAgIGNv
bnN0IFN0cmluZyYgbW9kZSgpIGNvbnN0OwpAQCAtMTI2LDcgKzEyMSw3IEBAIHB1YmxpYzoKICAg
ICB1c2luZyBSZWZDb3VudGVkPElEQlRyYW5zYWN0aW9uPjo6ZGVyZWY7CiAKIHByaXZhdGU6Ci0g
ICAgSURCVHJhbnNhY3Rpb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGludDY0X3QsIGNvbnN0
IFZlY3RvcjxTdHJpbmc+JiwgTW9kZSwgSURCRGF0YWJhc2UqLCBJREJPcGVuREJSZXF1ZXN0Kiwg
Y29uc3QgSURCRGF0YWJhc2VNZXRhZGF0YSYpOworICAgIElEQlRyYW5zYWN0aW9uKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqLCBpbnQ2NF90LCBjb25zdCBWZWN0b3I8U3RyaW5nPiYsIEluZGV4ZWRE
Qjo6VHJhbnNhY3Rpb25Nb2RlLCBJREJEYXRhYmFzZSosIElEQk9wZW5EQlJlcXVlc3QqLCBjb25z
dCBJREJEYXRhYmFzZU1ldGFkYXRhJik7CiAKICAgICB2b2lkIGVucXVldWVFdmVudChQYXNzUmVm
UHRyPEV2ZW50Pik7CiAgICAgdm9pZCBjbG9zZU9wZW5DdXJzb3JzKCk7CkBAIC0xNTEsNyArMTQ2
LDcgQEAgcHJpdmF0ZToKICAgICBSZWZQdHI8SURCRGF0YWJhc2U+IG1fZGF0YWJhc2U7CiAgICAg
Y29uc3QgVmVjdG9yPFN0cmluZz4gbV9vYmplY3RTdG9yZU5hbWVzOwogICAgIElEQk9wZW5EQlJl
cXVlc3QqIG1fb3BlbkRCUmVxdWVzdDsKLSAgICBjb25zdCBNb2RlIG1fbW9kZTsKKyAgICBjb25z
dCBJbmRleGVkREI6OlRyYW5zYWN0aW9uTW9kZSBtX21vZGU7CiAgICAgU3RhdGUgbV9zdGF0ZTsK
ICAgICBib29sIG1faGFzUGVuZGluZ0FjdGl2aXR5OwogICAgIGJvb2wgbV9jb250ZXh0U3RvcHBl
ZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5z
YWN0aW9uQmFja2VuZEltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
SURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbC5jcHAKaW5kZXggN2ZlODNiMjNkMmVjYmZmNzYwMmUz
MmI0ZWIxOWVkMWJhYzg2YWU2Zi4uNjU2MjU1NzcwNjExMmYzOTE2MDJjZjUwZjY5MjdlYmRlNDg5
YzhjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJh
bnNhY3Rpb25CYWNrZW5kSW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbC5jcHAKQEAgLTMxLDEzICszMSwxNCBAQAog
I2luY2x1ZGUgIklEQkJhY2tpbmdTdG9yZS5oIgogI2luY2x1ZGUgIklEQkN1cnNvckJhY2tlbmRJ
bXBsLmgiCiAjaW5jbHVkZSAiSURCRGF0YWJhc2VCYWNrZW5kSW1wbC5oIgorI2luY2x1ZGUgIklE
QkRhdGFiYXNlQ2FsbGJhY2tzLmgiCiAjaW5jbHVkZSAiSURCRGF0YWJhc2VFeGNlcHRpb24uaCIK
ICNpbmNsdWRlICJJREJUcmFjaW5nLmgiCiAjaW5jbHVkZSAiSURCVHJhbnNhY3Rpb25Db29yZGlu
YXRvci5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVBhc3NSZWZQdHI8SURCVHJhbnNhY3Rp
b25CYWNrZW5kSW1wbD4gSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbDo6Y3JlYXRlKGludDY0X3Qg
aWQsIFBhc3NSZWZQdHI8SURCRGF0YWJhc2VDYWxsYmFja3M+IGNhbGxiYWNrcywgY29uc3QgVmVj
dG9yPGludDY0X3Q+JiBvYmplY3RTdG9yZUlkcywgSURCVHJhbnNhY3Rpb246Ok1vZGUgbW9kZSwg
SURCRGF0YWJhc2VCYWNrZW5kSW1wbCogZGF0YWJhc2UpCitQYXNzUmVmUHRyPElEQlRyYW5zYWN0
aW9uQmFja2VuZEltcGw+IElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGw6OmNyZWF0ZShpbnQ2NF90
IGlkLCBQYXNzUmVmUHRyPElEQkRhdGFiYXNlQ2FsbGJhY2tzPiBjYWxsYmFja3MsIGNvbnN0IFZl
Y3RvcjxpbnQ2NF90PiYgb2JqZWN0U3RvcmVJZHMsIEluZGV4ZWREQjo6VHJhbnNhY3Rpb25Nb2Rl
IG1vZGUsIElEQkRhdGFiYXNlQmFja2VuZEltcGwqIGRhdGFiYXNlKQogewogICAgIEhhc2hTZXQ8
aW50NjRfdD4gb2JqZWN0U3RvcmVIYXNoU2V0OwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
b2JqZWN0U3RvcmVJZHMuc2l6ZSgpOyArK2kpCkBAIC00Niw3ICs0Nyw3IEBAIFBhc3NSZWZQdHI8
SURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbD4gSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbDo6Y3Jl
YXRlKGludDY0X3QKICAgICByZXR1cm4gYWRvcHRSZWYobmV3IElEQlRyYW5zYWN0aW9uQmFja2Vu
ZEltcGwoaWQsIGNhbGxiYWNrcywgb2JqZWN0U3RvcmVIYXNoU2V0LCBtb2RlLCBkYXRhYmFzZSkp
OwogfQogCi1JREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsOjpJREJUcmFuc2FjdGlvbkJhY2tlbmRJ
bXBsKGludDY0X3QgaWQsIFBhc3NSZWZQdHI8SURCRGF0YWJhc2VDYWxsYmFja3M+IGNhbGxiYWNr
cywgY29uc3QgSGFzaFNldDxpbnQ2NF90PiYgb2JqZWN0U3RvcmVJZHMsIElEQlRyYW5zYWN0aW9u
OjpNb2RlIG1vZGUsIElEQkRhdGFiYXNlQmFja2VuZEltcGwqIGRhdGFiYXNlKQorSURCVHJhbnNh
Y3Rpb25CYWNrZW5kSW1wbDo6SURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbChpbnQ2NF90IGlkLCBQ
YXNzUmVmUHRyPElEQkRhdGFiYXNlQ2FsbGJhY2tzPiBjYWxsYmFja3MsIGNvbnN0IEhhc2hTZXQ8
aW50NjRfdD4mIG9iamVjdFN0b3JlSWRzLCBJbmRleGVkREI6OlRyYW5zYWN0aW9uTW9kZSBtb2Rl
LCBJREJEYXRhYmFzZUJhY2tlbmRJbXBsKiBkYXRhYmFzZSkKICAgICA6IG1faWQoaWQpCiAgICAg
LCBtX29iamVjdFN0b3JlSWRzKG9iamVjdFN0b3JlSWRzKQogICAgICwgbV9tb2RlKG1vZGUpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlv
bkJhY2tlbmRJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFu
c2FjdGlvbkJhY2tlbmRJbXBsLmgKaW5kZXggM2NlZjk3NjJhZTEwMjdlODg4NGU5ODI2ZjQ3OTFm
NjM2NGEzNGIwNi4uZTYxOGZhMDY4OGE5YzBkZGM5ZjlhMWE3OGNkZDkyYmZmMjgxMWViMyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb25C
YWNrZW5kSW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRy
YW5zYWN0aW9uQmFja2VuZEltcGwuaApAQCAtMzEsNyArMzEsNiBAQAogI2luY2x1ZGUgIklEQkJh
Y2tpbmdTdG9yZS5oIgogI2luY2x1ZGUgIklEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZS5oIgog
I2luY2x1ZGUgIklEQkRhdGFiYXNlRXJyb3IuaCIKLSNpbmNsdWRlICJJREJUcmFuc2FjdGlvbi5o
IgogI2luY2x1ZGUgIlRpbWVyLmgiCiAjaW5jbHVkZSA8d3RmL0RlcXVlLmg+CiAjaW5jbHVkZSA8
d3RmL0hhc2hTZXQuaD4KQEAgLTQ1LDcgKzQ0LDcgQEAgY2xhc3MgSURCRGF0YWJhc2VDYWxsYmFj
a3M7CiAKIGNsYXNzIElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGwgOiBwdWJsaWMgUmVmQ291bnRl
ZDxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsPiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NS
ZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbD4gY3JlYXRlKGludDY0X3QgdHJhbnNhY3Rp
b25JZCwgUGFzc1JlZlB0cjxJREJEYXRhYmFzZUNhbGxiYWNrcz4sIGNvbnN0IFZlY3RvcjxpbnQ2
NF90PiYsIElEQlRyYW5zYWN0aW9uOjpNb2RlLCBJREJEYXRhYmFzZUJhY2tlbmRJbXBsKik7Cisg
ICAgc3RhdGljIFBhc3NSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbD4gY3JlYXRlKGlu
dDY0X3QgdHJhbnNhY3Rpb25JZCwgUGFzc1JlZlB0cjxJREJEYXRhYmFzZUNhbGxiYWNrcz4sIGNv
bnN0IFZlY3RvcjxpbnQ2NF90PiYsIEluZGV4ZWREQjo6VHJhbnNhY3Rpb25Nb2RlLCBJREJEYXRh
YmFzZUJhY2tlbmRJbXBsKik7CiAgICAgdmlydHVhbCB+SURCVHJhbnNhY3Rpb25CYWNrZW5kSW1w
bCgpOwogCiAgICAgdmlydHVhbCB2b2lkIGFib3J0KCk7CkBAIC01OSw3ICs1OCw3IEBAIHB1Ymxp
YzoKIAogICAgIHZvaWQgYWJvcnQoUGFzc1JlZlB0cjxJREJEYXRhYmFzZUVycm9yPik7CiAgICAg
dm9pZCBydW4oKTsKLSAgICBJREJUcmFuc2FjdGlvbjo6TW9kZSBtb2RlKCkgY29uc3QgeyByZXR1
cm4gbV9tb2RlOyB9CisgICAgSW5kZXhlZERCOjpUcmFuc2FjdGlvbk1vZGUgbW9kZSgpIGNvbnN0
IHsgcmV0dXJuIG1fbW9kZTsgfQogICAgIGNvbnN0IEhhc2hTZXQ8aW50NjRfdD4mIHNjb3BlKCkg
Y29uc3QgeyByZXR1cm4gbV9vYmplY3RTdG9yZUlkczsgfQogICAgIHZvaWQgc2NoZWR1bGVUYXNr
KFBhc3NPd25QdHI8T3BlcmF0aW9uPiB0YXNrLCBQYXNzT3duUHRyPE9wZXJhdGlvbj4gYWJvcnRU
YXNrID0gbnVsbHB0cikgeyBzY2hlZHVsZVRhc2soSURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNl
OjpOb3JtYWxUYXNrLCB0YXNrLCBhYm9ydFRhc2spOyB9CiAgICAgdm9pZCBzY2hlZHVsZVRhc2so
SURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlOjpUYXNrVHlwZSwgUGFzc093blB0cjxPcGVyYXRp
b24+LCBQYXNzT3duUHRyPE9wZXJhdGlvbj4gYWJvcnRUYXNrID0gbnVsbHB0cik7CkBAIC03Myw3
ICs3Miw3IEBAIHB1YmxpYzoKICAgICBJREJEYXRhYmFzZUJhY2tlbmRJbXBsKiBkYXRhYmFzZSgp
IGNvbnN0IHsgcmV0dXJuIG1fZGF0YWJhc2UuZ2V0KCk7IH0KIAogcHJpdmF0ZToKLSAgICBJREJU
cmFuc2FjdGlvbkJhY2tlbmRJbXBsKGludDY0X3QgaWQsIFBhc3NSZWZQdHI8SURCRGF0YWJhc2VD
YWxsYmFja3M+LCBjb25zdCBIYXNoU2V0PGludDY0X3Q+JiBvYmplY3RTdG9yZUlkcywgSURCVHJh
bnNhY3Rpb246Ok1vZGUsIElEQkRhdGFiYXNlQmFja2VuZEltcGwqKTsKKyAgICBJREJUcmFuc2Fj
dGlvbkJhY2tlbmRJbXBsKGludDY0X3QgaWQsIFBhc3NSZWZQdHI8SURCRGF0YWJhc2VDYWxsYmFj
a3M+LCBjb25zdCBIYXNoU2V0PGludDY0X3Q+JiBvYmplY3RTdG9yZUlkcywgSW5kZXhlZERCOjpU
cmFuc2FjdGlvbk1vZGUsIElEQkRhdGFiYXNlQmFja2VuZEltcGwqKTsKIAogICAgIGVudW0gU3Rh
dGUgewogICAgICAgICBVbnVzZWQsIC8vIENyZWF0ZWQsIGJ1dCBubyB0YXNrcyB5ZXQuCkBAIC05
Miw3ICs5MSw3IEBAIHByaXZhdGU6CiAKICAgICBjb25zdCBpbnQ2NF90IG1faWQ7CiAgICAgY29u
c3QgSGFzaFNldDxpbnQ2NF90PiBtX29iamVjdFN0b3JlSWRzOwotICAgIGNvbnN0IElEQlRyYW5z
YWN0aW9uOjpNb2RlIG1fbW9kZTsKKyAgICBjb25zdCBJbmRleGVkREI6OlRyYW5zYWN0aW9uTW9k
ZSBtX21vZGU7CiAKICAgICBTdGF0ZSBtX3N0YXRlOwogICAgIGJvb2wgbV9jb21taXRQZW5kaW5n
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNh
Y3Rpb25Db29yZGluYXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9J
REJUcmFuc2FjdGlvbkNvb3JkaW5hdG9yLmNwcAppbmRleCAwYmI1YWNhOTVhMDhjNWM1MTZhMzY1
MTMyNTQ1YjhlNDY5N2Q1MGVmLi5hNmZjZDhlYTNlNmUxZDgyZTFiOTI4OTBhZGU1NGZkNzVlZWU4
NzFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFu
c2FjdGlvbkNvb3JkaW5hdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9JREJUcmFuc2FjdGlvbkNvb3JkaW5hdG9yLmNwcApAQCAtMjksNyArMjksNiBAQAogI2lm
IEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQogCiAjaW5jbHVkZSAiSURCRGF0YWJhc2VCYWNrZW5k
SW1wbC5oIgotI2luY2x1ZGUgIklEQlRyYW5zYWN0aW9uLmgiCiAjaW5jbHVkZSAiSURCVHJhbnNh
Y3Rpb25CYWNrZW5kSW1wbC5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC05Nyw3ICs5Niw3
IEBAIHZvaWQgSURCVHJhbnNhY3Rpb25Db29yZGluYXRvcjo6cHJvY2Vzc1N0YXJ0ZWRUcmFuc2Fj
dGlvbnMoKQogICAgIGlmIChtX3F1ZXVlZFRyYW5zYWN0aW9ucy5pc0VtcHR5KCkpCiAgICAgICAg
IHJldHVybjsKIAotICAgIEFTU0VSVChtX3N0YXJ0ZWRUcmFuc2FjdGlvbnMuaXNFbXB0eSgpIHx8
ICgqbV9zdGFydGVkVHJhbnNhY3Rpb25zLmJlZ2luKCkpLT5tb2RlKCkgIT0gSURCVHJhbnNhY3Rp
b246OlZFUlNJT05fQ0hBTkdFKTsKKyAgICBBU1NFUlQobV9zdGFydGVkVHJhbnNhY3Rpb25zLmlz
RW1wdHkoKSB8fCAoKm1fc3RhcnRlZFRyYW5zYWN0aW9ucy5iZWdpbigpKS0+bW9kZSgpICE9IElu
ZGV4ZWREQjo6VHJhbnNhY3Rpb25WZXJzaW9uQ2hhbmdlKTsKIAogICAgIExpc3RIYXNoU2V0PElE
QlRyYW5zYWN0aW9uQmFja2VuZEltcGwqPjo6Y29uc3RfaXRlcmF0b3IgaXQgPSBtX3F1ZXVlZFRy
YW5zYWN0aW9ucy5iZWdpbigpOwogICAgIHdoaWxlIChpdCAhPSBtX3F1ZXVlZFRyYW5zYWN0aW9u
cy5lbmQoKSkgewpAQCAtMTI0LDIyICsxMjMsMjIgQEAgYm9vbCBJREJUcmFuc2FjdGlvbkNvb3Jk
aW5hdG9yOjpjYW5SdW5UcmFuc2FjdGlvbihJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsKiB0cmEK
IHsKICAgICBBU1NFUlQobV9xdWV1ZWRUcmFuc2FjdGlvbnMuY29udGFpbnModHJhbnNhY3Rpb24p
KTsKICAgICBzd2l0Y2ggKHRyYW5zYWN0aW9uLT5tb2RlKCkpIHsKLSAgICBjYXNlIElEQlRyYW5z
YWN0aW9uOjpWRVJTSU9OX0NIQU5HRToKKyAgICBjYXNlIEluZGV4ZWREQjo6VHJhbnNhY3Rpb25W
ZXJzaW9uQ2hhbmdlOgogICAgICAgICBBU1NFUlQobV9xdWV1ZWRUcmFuc2FjdGlvbnMuc2l6ZSgp
ID09IDEpOwogICAgICAgICBBU1NFUlQobV9zdGFydGVkVHJhbnNhY3Rpb25zLmlzRW1wdHkoKSk7
CiAgICAgICAgIHJldHVybiB0cnVlOwogCi0gICAgY2FzZSBJREJUcmFuc2FjdGlvbjo6UkVBRF9P
TkxZOgorICAgIGNhc2UgSW5kZXhlZERCOjpUcmFuc2FjdGlvblJlYWRPbmx5OgogICAgICAgICBy
ZXR1cm4gdHJ1ZTsKIAotICAgIGNhc2UgSURCVHJhbnNhY3Rpb246OlJFQURfV1JJVEU6CisgICAg
Y2FzZSBJbmRleGVkREI6OlRyYW5zYWN0aW9uUmVhZFdyaXRlOgogICAgICAgICBmb3IgKEhhc2hT
ZXQ8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbCo+Ojpjb25zdF9pdGVyYXRvciBpdCA9IG1fc3Rh
cnRlZFRyYW5zYWN0aW9ucy5iZWdpbigpOyBpdCAhPSBtX3N0YXJ0ZWRUcmFuc2FjdGlvbnMuZW5k
KCk7ICsraXQpIHsKLSAgICAgICAgICAgIGlmICgoKml0KS0+bW9kZSgpID09IElEQlRyYW5zYWN0
aW9uOjpSRUFEX1dSSVRFICYmIGRvU2NvcGVzT3ZlcmxhcCh0cmFuc2FjdGlvbi0+c2NvcGUoKSwg
KCppdCktPnNjb3BlKCkpKQorICAgICAgICAgICAgaWYgKCgqaXQpLT5tb2RlKCkgPT0gSW5kZXhl
ZERCOjpUcmFuc2FjdGlvblJlYWRXcml0ZSAmJiBkb1Njb3Blc092ZXJsYXAodHJhbnNhY3Rpb24t
PnNjb3BlKCksICgqaXQpLT5zY29wZSgpKSkKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgICAgIH0KICAgICAgICAgZm9yIChMaXN0SGFzaFNldDxJREJUcmFuc2FjdGlvbkJhY2tl
bmRJbXBsKj46OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbV9xdWV1ZWRUcmFuc2FjdGlvbnMuYmVnaW4o
KTsgKml0ICE9IHRyYW5zYWN0aW9uOyArK2l0KSB7CiAgICAgICAgICAgICBBU1NFUlQoaXQgIT0g
bV9xdWV1ZWRUcmFuc2FjdGlvbnMuZW5kKCkpOwotICAgICAgICAgICAgaWYgKCgqaXQpLT5tb2Rl
KCkgPT0gSURCVHJhbnNhY3Rpb246OlJFQURfV1JJVEUgJiYgZG9TY29wZXNPdmVybGFwKHRyYW5z
YWN0aW9uLT5zY29wZSgpLCAoKml0KS0+c2NvcGUoKSkpCisgICAgICAgICAgICBpZiAoKCppdCkt
Pm1vZGUoKSA9PSBJbmRleGVkREI6OlRyYW5zYWN0aW9uUmVhZFdyaXRlICYmIGRvU2NvcGVzT3Zl
cmxhcCh0cmFuc2FjdGlvbi0+c2NvcGUoKSwgKCppdCktPnNjb3BlKCkpKQogICAgICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQogICAgICAgICByZXR1cm4gdHJ1ZTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0luZGV4ZWREQi5oIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSW5kZXhlZERCLmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMmU4
NGZjNzIxYTVjMzIzNjQyYTY4M2IxMTQ5MmQwMzg0NGI0ZmVjOAotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0luZGV4ZWREQi5oCkBAIC0wLDAgKzEs
NTkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICog
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaWZuZGVmIEluZGV4ZWREQl9oCisjZGVmaW5lIEluZGV4ZWREQl9oCisK
KyNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitu
YW1lc3BhY2UgSW5kZXhlZERCIHsKKworZW51bSBUcmFuc2FjdGlvbk1vZGUgeworICAgIFRyYW5z
YWN0aW9uUmVhZE9ubHkgPSAwLAorICAgIFRyYW5zYWN0aW9uUmVhZFdyaXRlID0gMSwKKyAgICBU
cmFuc2FjdGlvblZlcnNpb25DaGFuZ2UgPSAyCit9OworCitlbnVtIEN1cnNvckRpcmVjdGlvbiB7
CisgICAgQ3Vyc29yTmV4dCA9IDAsCisgICAgQ3Vyc29yTmV4dE5vRHVwbGljYXRlID0gMSwKKyAg
ICBDdXJzb3JQcmV2ID0gMiwKKyAgICBDdXJzb3JQcmV2Tm9EdXBsaWNhdGUgPSAzLAorfTsKKwor
ZW51bSBDdXJzb3JUeXBlIHsKKyAgICBDdXJzb3JLZXlBbmRWYWx1ZSA9IDAsCisgICAgQ3Vyc29y
S2V5T25seQorfTsKKworfSAvLyBuYW1lc3BhY2UgSW5kZXhlZERCCisKK30gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRUQoSU5ERVhFRF9EQVRBQkFTRSkKKworI2VuZGlm
IC8vIEluZGV4ZWREQl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpIGIv
U291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQppbmRleCAzNDQ4OWI5NDJkNjU5MTU0NWYzMmMwYTQ5
NGE3OTFlZmNlZjQ1ZjJkLi44MTNlZjdmMjcwMmEyNzlmYmM0ZjZhM2ZhMTYzNWE2MmRlODkyODgy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCisrKyBiL1NvdXJjZS9XZWJD
b3JlL1RhcmdldC5wcmkKQEAgLTMxMDYsOCArMzEwNiw4IEBAIGVuYWJsZT8oSU5ERVhFRF9EQVRB
QkFTRSkgewogICAgICAgICBNb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUV4Y2VwdGlvbi5o
IFwKICAgICAgICAgTW9kdWxlcy9pbmRleGVkZGIvSURCRXZlbnREaXNwYXRjaGVyLmggXAogICAg
ICAgICBNb2R1bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5LmggXAotICAgICAgICBNb2R1bGVzL2lu
ZGV4ZWRkYi9JREJGYWN0b3J5QmFja2VuZEludGVyZmFjZS5oIFwKICAgICAgICAgTW9kdWxlcy9p
bmRleGVkZGIvSURCRmFjdG9yeUJhY2tlbmRJbXBsLmggXAorICAgICAgICBNb2R1bGVzL2luZGV4
ZWRkYi9JREJGYWN0b3J5QmFja2VuZEludGVyZmFjZS5oIFwKICAgICAgICAgTW9kdWxlcy9pbmRl
eGVkZGIvSURCSGlzdG9ncmFtcy5oIFwKICAgICAgICAgTW9kdWxlcy9pbmRleGVkZGIvSURCSW5k
ZXguaCBcCiAgICAgICAgIE1vZHVsZXMvaW5kZXhlZGRiL0lEQktleS5oIFwKQEAgLTMxMTUsNyAr
MzExNSw4IEBAIGVuYWJsZT8oSU5ERVhFRF9EQVRBQkFTRSkgewogICAgICAgICBNb2R1bGVzL2lu
ZGV4ZWRkYi9JREJPYmplY3RTdG9yZS5oIFwKICAgICAgICAgTW9kdWxlcy9pbmRleGVkZGIvSURC
T2JqZWN0U3RvcmVCYWNrZW5kSW1wbC5oIFwKICAgICAgICAgTW9kdWxlcy9pbmRleGVkZGIvSURC
UmVxdWVzdC5oIFwKLSAgICAgICAgTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb24uaAor
ICAgICAgICBNb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5oIFwKKyAgICAgICAgTW9k
dWxlcy9pbmRleGVkZGIvSW5kZXhlZERCLmgKIAogICAgIFNPVVJDRVMgKz0gXAogICAgICAgICBi
aW5kaW5ncy9qcy9JREJCaW5kaW5nVXRpbGl0aWVzLmNwcCBcCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLmd5cGkgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKaW5kZXgg
YThhZWRjZGRmZTY5YmQwMWUzM2VjMTllZDMxNTE3NjdjYWU0ZTM2NS4uNGJlMGQ0MDJhZWJlODY5
NGNiNWRiM2Q0YjdmMDI0ZWYzN2YwMTI2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS5neXBpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpAQCAtNzExLDYgKzcx
MSw3IEBACiAgICAgICAgICAgICAnTW9kdWxlcy9pbmRleGVkZGIvRE9NV2luZG93SW5kZXhlZERh
dGFiYXNlLmgnLAogICAgICAgICAgICAgJ01vZHVsZXMvaW5kZXhlZGRiL0lEQkFueS5jcHAnLAog
ICAgICAgICAgICAgJ01vZHVsZXMvaW5kZXhlZGRiL0lEQkFueS5oJywKKyAgICAgICAgICAgICdN
b2R1bGVzL2luZGV4ZWRkYi9JREJCYWNraW5nU3RvcmUuY3BwJywKICAgICAgICAgICAgICdNb2R1
bGVzL2luZGV4ZWRkYi9JREJCYWNraW5nU3RvcmUuaCcsCiAgICAgICAgICAgICAnTW9kdWxlcy9p
bmRleGVkZGIvSURCQ2FsbGJhY2tzLmgnLAogICAgICAgICAgICAgJ01vZHVsZXMvaW5kZXhlZGRi
L0lEQkN1cnNvci5jcHAnLApAQCAtNzUxLDcgKzc1Miw2IEBACiAgICAgICAgICAgICAnTW9kdWxl
cy9pbmRleGVkZGIvSURCS2V5UmFuZ2UuaCcsCiAgICAgICAgICAgICAnTW9kdWxlcy9pbmRleGVk
ZGIvSURCTGV2ZWxEQkNvZGluZy5jcHAnLAogICAgICAgICAgICAgJ01vZHVsZXMvaW5kZXhlZGRi
L0lEQkxldmVsREJDb2RpbmcuaCcsCi0gICAgICAgICAgICAnTW9kdWxlcy9pbmRleGVkZGIvSURC
QmFja2luZ1N0b3JlLmNwcCcsCiAgICAgICAgICAgICAnTW9kdWxlcy9pbmRleGVkZGIvSURCTWV0
YWRhdGEuaCcsCiAgICAgICAgICAgICAnTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmUu
Y3BwJywKICAgICAgICAgICAgICdNb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZS5oJywK
QEAgLTc3Miw2ICs3NzIsNyBAQAogICAgICAgICAgICAgJ01vZHVsZXMvaW5kZXhlZGRiL0lEQlRy
YW5zYWN0aW9uQ29vcmRpbmF0b3IuaCcsCiAgICAgICAgICAgICAnTW9kdWxlcy9pbmRleGVkZGIv
SURCVmVyc2lvbkNoYW5nZUV2ZW50LmNwcCcsCiAgICAgICAgICAgICAnTW9kdWxlcy9pbmRleGVk
ZGIvSURCVmVyc2lvbkNoYW5nZUV2ZW50LmgnLAorICAgICAgICAgICAgJ01vZHVsZXMvaW5kZXhl
ZGRiL0luZGV4ZWREQi5oJywKICAgICAgICAgICAgICdNb2R1bGVzL2luZGV4ZWRkYi9QYWdlR3Jv
dXBJbmRleGVkRGF0YWJhc2UuY3BwJywKICAgICAgICAgICAgICdNb2R1bGVzL2luZGV4ZWRkYi9Q
YWdlR3JvdXBJbmRleGVkRGF0YWJhc2UuaCcsCiAgICAgICAgICAgICAnTW9kdWxlcy9pbmRleGVk
ZGIvV29ya2VyQ29udGV4dEluZGV4ZWREYXRhYmFzZS5jcHAnLApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvQXNzZXJ0TWF0Y2hpbmdFbnVtcy5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9Bc3NlcnRNYXRjaGluZ0VudW1zLmNwcAppbmRleCA4YWQwODQ0NDJj
ZjEyYjA5ZTE0MmRlODEzYTQzNTJjMWY0MDc4ZDFlLi4wYjBlNDQ4ZDkzNjYwYjQzMzU4MGViYjY1
NGFjN2YzNDA1Y2NkNTY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9B
c3NlcnRNYXRjaGluZ0VudW1zLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9B
c3NlcnRNYXRjaGluZ0VudW1zLmNwcApAQCAtNTA0LDEwICs1MDQsMTAgQEAgQ09NUElMRV9BU1NF
UlRfTUFUQ0hJTkdfRU5VTShXZWJJREJLZXlQYXRoOjpBcnJheVR5cGUsIElEQktleVBhdGg6OkFy
cmF5VHlwZSk7CiAKIENPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oV2ViSURCTWV0YWRhdGE6
Ok5vSW50VmVyc2lvbiwgSURCRGF0YWJhc2VNZXRhZGF0YTo6Tm9JbnRWZXJzaW9uKTsKIAotQ09N
UElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShXZWJJREJDdXJzb3I6Ok5leHQsIElEQkN1cnNvcjo6
TkVYVCk7Ci1DT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKFdlYklEQkN1cnNvcjo6TmV4dE5v
RHVwbGljYXRlLCBJREJDdXJzb3I6Ok5FWFRfTk9fRFVQTElDQVRFKTsKLUNPTVBJTEVfQVNTRVJU
X01BVENISU5HX0VOVU0oV2ViSURCQ3Vyc29yOjpQcmV2LCBJREJDdXJzb3I6OlBSRVYpOwotQ09N
UElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShXZWJJREJDdXJzb3I6OlByZXZOb0R1cGxpY2F0ZSwg
SURCQ3Vyc29yOjpQUkVWX05PX0RVUExJQ0FURSk7CitDT01QSUxFX0FTU0VSVF9NQVRDSElOR19F
TlVNKFdlYklEQkN1cnNvcjo6TmV4dCwgSW5kZXhlZERCOjpDdXJzb3JOZXh0KTsKK0NPTVBJTEVf
QVNTRVJUX01BVENISU5HX0VOVU0oV2ViSURCQ3Vyc29yOjpOZXh0Tm9EdXBsaWNhdGUsIEluZGV4
ZWREQjo6Q3Vyc29yTmV4dE5vRHVwbGljYXRlKTsKK0NPTVBJTEVfQVNTRVJUX01BVENISU5HX0VO
VU0oV2ViSURCQ3Vyc29yOjpQcmV2LCBJbmRleGVkREI6OkN1cnNvclByZXYpOworQ09NUElMRV9B
U1NFUlRfTUFUQ0hJTkdfRU5VTShXZWJJREJDdXJzb3I6OlByZXZOb0R1cGxpY2F0ZSwgSW5kZXhl
ZERCOjpDdXJzb3JQcmV2Tm9EdXBsaWNhdGUpOwogCiBDT01QSUxFX0FTU0VSVF9NQVRDSElOR19F
TlVNKFdlYklEQkRhdGFiYXNlOjpQcmVlbXB0aXZlVGFzaywgSURCRGF0YWJhc2VCYWNrZW5kSW50
ZXJmYWNlOjpQcmVlbXB0aXZlVGFzayk7CiBDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKFdl
YklEQkRhdGFiYXNlOjpOb3JtYWxUYXNrLCBJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2U6Ok5v
cm1hbFRhc2spOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCRGF0
YWJhc2VCYWNrZW5kUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCRGF0
YWJhc2VCYWNrZW5kUHJveHkuY3BwCmluZGV4IDM1NWQ4MDg5ZWVjYzZkM2M0NGJkOGNiYTA0MTEx
ZjI2ZWZmMTkzNGYuLjJjMmE1ZTdlOWZkNTY0MmE1OTcyMDQ4YjI5YTZjMDJhN2JlMGRiYjEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkRhdGFiYXNlQmFja2VuZFBy
b3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJEYXRhYmFzZUJhY2tl
bmRQcm94eS5jcHAKQEAgLTkzLDcgKzkzLDcgQEAgdm9pZCBJREJEYXRhYmFzZUJhY2tlbmRQcm94
eTo6YWJvcnQoaW50NjRfdCB0cmFuc2FjdGlvbklkLCBQYXNzUmVmUHRyPElEQkRhdGFiYXMKICAg
ICBtX3dlYklEQkRhdGFiYXNlLT5hYm9ydCh0cmFuc2FjdGlvbklkLCBlcnJvcik7CiB9CiAKLXZv
aWQgSURCRGF0YWJhc2VCYWNrZW5kUHJveHk6Om9wZW5DdXJzb3IoaW50NjRfdCB0cmFuc2FjdGlv
bklkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGludDY0X3QgaW5kZXhJZCwgUGFzc1JlZlB0cjxJ
REJLZXlSYW5nZT4ga2V5UmFuZ2UsIHVuc2lnbmVkIHNob3J0IGRpcmVjdGlvbiwgYm9vbCBrZXlP
bmx5LCBUYXNrVHlwZSB0YXNrVHlwZSwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNr
cykKK3ZvaWQgSURCRGF0YWJhc2VCYWNrZW5kUHJveHk6Om9wZW5DdXJzb3IoaW50NjRfdCB0cmFu
c2FjdGlvbklkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGludDY0X3QgaW5kZXhJZCwgUGFzc1Jl
ZlB0cjxJREJLZXlSYW5nZT4ga2V5UmFuZ2UsIEluZGV4ZWREQjo6Q3Vyc29yRGlyZWN0aW9uIGRp
cmVjdGlvbiwgYm9vbCBrZXlPbmx5LCBUYXNrVHlwZSB0YXNrVHlwZSwgUGFzc1JlZlB0cjxJREJD
YWxsYmFja3M+IGNhbGxiYWNrcykKIHsKICAgICBtX3dlYklEQkRhdGFiYXNlLT5vcGVuQ3Vyc29y
KHRyYW5zYWN0aW9uSWQsIG9iamVjdFN0b3JlSWQsIGluZGV4SWQsIGtleVJhbmdlLCBzdGF0aWNf
Y2FzdDxXZWJJREJDdXJzb3I6OkRpcmVjdGlvbj4oZGlyZWN0aW9uKSwga2V5T25seSwgc3RhdGlj
X2Nhc3Q8V2ViSURCRGF0YWJhc2U6OlRhc2tUeXBlPih0YXNrVHlwZSksIG5ldyBXZWJJREJDYWxs
YmFja3NJbXBsKGNhbGxiYWNrcykpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvSURCRGF0YWJhc2VCYWNrZW5kUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL0lEQkRhdGFiYXNlQmFja2VuZFByb3h5LmgKaW5kZXggZGJkOTY0MmYxMTIwZDk5OGRh
Zjk3Y2I1ZmE5YTUyMGJiZDVkNmQ1MS4uNWQ1ZDkwOGY5OGJlM2FhODVjMjVkNjM0YzVmYjEwNDJl
ZWIyZjc4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCRGF0YWJh
c2VCYWNrZW5kUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJEYXRh
YmFzZUJhY2tlbmRQcm94eS5oCkBAIC01NSw3ICs1NSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFs
IHZvaWQgcHV0KGludDY0X3QgdHJhbnNhY3Rpb25JZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBQ
YXNzUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gdmFsdWUsIFBhc3NSZWZQdHI8V2ViQ29y
ZTo6SURCS2V5PiwgUHV0TW9kZSwgUGFzc1JlZlB0cjxXZWJDb3JlOjpJREJDYWxsYmFja3M+LCBj
b25zdCBWZWN0b3I8aW50NjRfdD4mIGluZGV4SWRzLCBjb25zdCBWZWN0b3I8SW5kZXhLZXlzPiYp
IE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBzZXRJbmRleEtleXMoaW50NjRfdCB0cmFuc2Fj
dGlvbklkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIFBhc3NSZWZQdHI8V2ViQ29yZTo6SURCS2V5
PiBwcnBQcmltYXJ5S2V5LCBjb25zdCBWZWN0b3I8aW50NjRfdD4mIGluZGV4SWRzLCBjb25zdCBW
ZWN0b3I8SW5kZXhLZXlzPiYpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBzZXRJbmRleGVz
UmVhZHkoaW50NjRfdCB0cmFuc2FjdGlvbklkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGNvbnN0
IFZlY3RvcjxpbnQ2NF90PiYgaW5kZXhJZHMpIE9WRVJSSURFOwotICAgIHZpcnR1YWwgdm9pZCBv
cGVuQ3Vyc29yKGludDY0X3QgdHJhbnNhY3Rpb25JZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBp
bnQ2NF90IGluZGV4SWQsIFBhc3NSZWZQdHI8V2ViQ29yZTo6SURCS2V5UmFuZ2U+LCB1bnNpZ25l
ZCBzaG9ydCBkaXJlY3Rpb24sIGJvb2wga2V5T25seSwgVGFza1R5cGUsIFBhc3NSZWZQdHI8V2Vi
Q29yZTo6SURCQ2FsbGJhY2tzPikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIG9wZW5DdXJz
b3IoaW50NjRfdCB0cmFuc2FjdGlvbklkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGludDY0X3Qg
aW5kZXhJZCwgUGFzc1JlZlB0cjxXZWJDb3JlOjpJREJLZXlSYW5nZT4sIFdlYkNvcmU6OkluZGV4
ZWREQjo6Q3Vyc29yRGlyZWN0aW9uLCBib29sIGtleU9ubHksIFRhc2tUeXBlLCBQYXNzUmVmUHRy
PFdlYkNvcmU6OklEQkNhbGxiYWNrcz4pIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBjb3Vu
dChpbnQ2NF90IHRyYW5zYWN0aW9uSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgaW50NjRfdCBp
bmRleElkLCBQYXNzUmVmUHRyPFdlYkNvcmU6OklEQktleVJhbmdlPiwgUGFzc1JlZlB0cjxXZWJD
b3JlOjpJREJDYWxsYmFja3M+KSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlUmFu
Z2UoaW50NjRfdCB0cmFuc2FjdGlvbklkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIFBhc3NSZWZQ
dHI8V2ViQ29yZTo6SURCS2V5UmFuZ2U+LCBQYXNzUmVmUHRyPFdlYkNvcmU6OklEQkNhbGxiYWNr
cz4pIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBjbGVhcihpbnQ2NF90IHRyYW5zYWN0aW9u
SWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgUGFzc1JlZlB0cjxXZWJDb3JlOjpJREJDYWxsYmFj
a3M+KSBPVkVSUklERTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dl
YklEQkNhbGxiYWNrc0ltcGwuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURC
Q2FsbGJhY2tzSW1wbC5jcHAKaW5kZXggMDVmYzg4ZjViY2IzNTNkODNhZDRlNDRlYzBiMWI5Y2Q3
NmM4NDRlYi4uMzM5MDU4ZWRkZjM0YzdiZjQyYjY0MDRjODk2YzVmZTMzZjZhOGZiMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCQ2FsbGJhY2tzSW1wbC5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCQ2FsbGJhY2tzSW1wbC5jcHAK
QEAgLTM0LDYgKzM0LDcgQEAKICNpbmNsdWRlICJJREJEYXRhYmFzZUJhY2tlbmRQcm94eS5oIgog
I2luY2x1ZGUgIklEQkRhdGFiYXNlRXJyb3IuaCIKICNpbmNsdWRlICJJREJLZXkuaCIKKyNpbmNs
dWRlICJJREJNZXRhZGF0YS5oIgogI2luY2x1ZGUgIldlYkRPTVN0cmluZ0xpc3QuaCIKICNpbmNs
dWRlICJXZWJJREJDYWxsYmFja3MuaCIKICNpbmNsdWRlICJXZWJJREJEYXRhYmFzZS5oIgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCRGF0YWJhc2VJbXBsLmNw
cCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkRhdGFiYXNlSW1wbC5jcHAKaW5k
ZXggYTE4MDUxNTBkMmNhNmRjNzdkZjg2MWI2MmQwYWFiM2E5ZTVkYjJhYi4uZTRkYTdlZTIzMTI5
ZjZmNjljODMwZDYwYTAwOWNlNWRmMTk0MzJmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvV2ViSURCRGF0YWJhc2VJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9XZWJJREJEYXRhYmFzZUltcGwuY3BwCkBAIC0xMTgsNyArMTE4LDcgQEAgdm9p
ZCBXZWJJREJEYXRhYmFzZUltcGw6OmNvbW1pdChsb25nIGxvbmcgdHJhbnNhY3Rpb25JZCkKIHZv
aWQgV2ViSURCRGF0YWJhc2VJbXBsOjpvcGVuQ3Vyc29yKGxvbmcgbG9uZyB0cmFuc2FjdGlvbklk
LCBsb25nIGxvbmcgb2JqZWN0U3RvcmVJZCwgbG9uZyBsb25nIGluZGV4SWQsIGNvbnN0IFdlYklE
QktleVJhbmdlJiBrZXlSYW5nZSwgdW5zaWduZWQgc2hvcnQgZGlyZWN0aW9uLCBib29sIGtleU9u
bHksIFRhc2tUeXBlIHRhc2tUeXBlLCBXZWJJREJDYWxsYmFja3MqIGNhbGxiYWNrcykKIHsKICAg
ICBpZiAobV9kYXRhYmFzZUJhY2tlbmQpCi0gICAgICAgIG1fZGF0YWJhc2VCYWNrZW5kLT5vcGVu
Q3Vyc29yKHRyYW5zYWN0aW9uSWQsIG9iamVjdFN0b3JlSWQsIGluZGV4SWQsIGtleVJhbmdlLCBz
dGF0aWNfY2FzdDxJREJDdXJzb3I6OkRpcmVjdGlvbj4oZGlyZWN0aW9uKSwga2V5T25seSwgc3Rh
dGljX2Nhc3Q8SURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlOjpUYXNrVHlwZT4odGFza1R5cGUp
LCBJREJDYWxsYmFja3NQcm94eTo6Y3JlYXRlKGFkb3B0UHRyKGNhbGxiYWNrcykpKTsKKyAgICAg
ICAgbV9kYXRhYmFzZUJhY2tlbmQtPm9wZW5DdXJzb3IodHJhbnNhY3Rpb25JZCwgb2JqZWN0U3Rv
cmVJZCwgaW5kZXhJZCwga2V5UmFuZ2UsIHN0YXRpY19jYXN0PEluZGV4ZWREQjo6Q3Vyc29yRGly
ZWN0aW9uPihkaXJlY3Rpb24pLCBrZXlPbmx5LCBzdGF0aWNfY2FzdDxJREJEYXRhYmFzZUJhY2tl
bmRJbnRlcmZhY2U6OlRhc2tUeXBlPih0YXNrVHlwZSksIElEQkNhbGxiYWNrc1Byb3h5OjpjcmVh
dGUoYWRvcHRQdHIoY2FsbGJhY2tzKSkpOwogfQogCiB2b2lkIFdlYklEQkRhdGFiYXNlSW1wbDo6
Y291bnQobG9uZyBsb25nIHRyYW5zYWN0aW9uSWQsIGxvbmcgbG9uZyBvYmplY3RTdG9yZUlkLCBs
b25nIGxvbmcgaW5kZXhJZCwgY29uc3QgV2ViSURCS2V5UmFuZ2UmIGtleVJhbmdlLCBXZWJJREJD
YWxsYmFja3MqIGNhbGxiYWNrcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
dGVzdHMvSURCQWJvcnRPbkNvcnJ1cHRUZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
dGVzdHMvSURCQWJvcnRPbkNvcnJ1cHRUZXN0LmNwcAppbmRleCBlNjNjZTJhODZiMmE5M2Q2YjIy
ZTZmODA0MzhiZmQ3ODJiZDkxMWI5Li5jNDNjYTNmNDhmYzU1NzJmYjVhZTFjOGNhY2MwY2IzMzQ0
ZTMwMGFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0lEQkFib3J0
T25Db3JydXB0VGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9JREJB
Ym9ydE9uQ29ycnVwdFRlc3QuY3BwCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiSURCRGF0
YWJhc2VDYWxsYmFja3MuaCIKICNpbmNsdWRlICJJREJGYWN0b3J5QmFja2VuZEltcGwuaCIKICNp
bmNsdWRlICJJREJGYWtlQmFja2luZ1N0b3JlLmgiCisjaW5jbHVkZSAiSW5kZXhlZERCLmgiCiAj
aW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKICNpbmNsdWRlIDxndGVzdC9ndGVzdC5oPgogI2lu
Y2x1ZGUgPHd0Zi9WZWN0b3IuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
dGVzdHMvSURCRGF0YWJhc2VCYWNrZW5kVGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3Rlc3RzL0lEQkRhdGFiYXNlQmFja2VuZFRlc3QuY3BwCmluZGV4IDQ1YjllMmJiMmJmYWNhMWYw
YWMxMTliN2Y1NWUyYTVjNDFiMTQ1ZWQuLjExNmQxMTQ5NjBmY2JlMzhiYjVmY2EyYWRmMDI5ZTBl
NTdiMzVkZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvSURCRGF0
YWJhc2VCYWNrZW5kVGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9J
REJEYXRhYmFzZUJhY2tlbmRUZXN0LmNwcApAQCAtMjQsMTMgKzI0LDE2IEBACiAgKi8KIAogI2lu
Y2x1ZGUgImNvbmZpZy5oIgorCiAjaW5jbHVkZSAiSURCQmFja2luZ1N0b3JlLmgiCiAjaW5jbHVk
ZSAiSURCQ3Vyc29yQmFja2VuZEludGVyZmFjZS5oIgorI2luY2x1ZGUgIklEQkRhdGFiYXNlLmgi
CiAjaW5jbHVkZSAiSURCRGF0YWJhc2VCYWNrZW5kSW1wbC5oIgogI2luY2x1ZGUgIklEQkRhdGFi
YXNlQ2FsbGJhY2tzUHJveHkuaCIKICNpbmNsdWRlICJJREJGYWN0b3J5QmFja2VuZEltcGwuaCIK
ICNpbmNsdWRlICJJREJGYWtlQmFja2luZ1N0b3JlLmgiCiAjaW5jbHVkZSAiSURCVHJhbnNhY3Rp
b25CYWNrZW5kSW1wbC5oIgorI2luY2x1ZGUgIkluZGV4ZWREQi5oIgogI2luY2x1ZGUgIlNoYXJl
ZEJ1ZmZlci5oIgogI2luY2x1ZGUgIldlYklEQkRhdGFiYXNlQ2FsbGJhY2tzSW1wbC5oIgogI2lu
Y2x1ZGUgIldlYklEQkRhdGFiYXNlSW1wbC5oIgpAQCAtMTUxLDcgKzE1NCw3IEBAIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIHZvaWQgYWJvcnQoaW50NjRfdCB0cmFuc2FjdGlvbklkLCBQYXNzUmVmUHRy
PElEQkRhdGFiYXNlRXJyb3I+KSBPVkVSUklERSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgY29tbWl0
KGludDY0X3QgdHJhbnNhY3Rpb25JZCkgT1ZFUlJJREUgeyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQg
b3BlbkN1cnNvcihpbnQ2NF90IHRyYW5zYWN0aW9uSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwg
aW50NjRfdCBpbmRleElkLCBQYXNzUmVmUHRyPElEQktleVJhbmdlPiwgdW5zaWduZWQgc2hvcnQg
ZGlyZWN0aW9uLCBib29sIGtleU9ubHksIFRhc2tUeXBlLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNr
cz4pIE9WRVJSSURFIHsgfQorICAgIHZpcnR1YWwgdm9pZCBvcGVuQ3Vyc29yKGludDY0X3QgdHJh
bnNhY3Rpb25JZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBpbnQ2NF90IGluZGV4SWQsIFBhc3NS
ZWZQdHI8SURCS2V5UmFuZ2U+LCBJbmRleGVkREI6OkN1cnNvckRpcmVjdGlvbiwgYm9vbCBrZXlP
bmx5LCBUYXNrVHlwZSwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+KSBPVkVSUklERSB7IH0KICAg
ICB2aXJ0dWFsIHZvaWQgY291bnQoaW50NjRfdCBvYmplY3RTdG9yZUlkLCBpbnQ2NF90IGluZGV4
SWQsIGludDY0X3QgdHJhbnNhY3Rpb25JZCwgUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4sIFBhc3NS
ZWZQdHI8SURCQ2FsbGJhY2tzPikgT1ZFUlJJREUgeyB9CiAgICAgdmlydHVhbCB2b2lkIGdldChp
bnQ2NF90IG9iamVjdFN0b3JlSWQsIGludDY0X3QgaW5kZXhJZCwgaW50NjRfdCB0cmFuc2FjdGlv
bklkLCBQYXNzUmVmUHRyPElEQktleVJhbmdlPiwgYm9vbCBrZXlPbmx5LCBQYXNzUmVmUHRyPElE
QkNhbGxiYWNrcz4pIE9WRVJSSURFIHsgfQogICAgIHZpcnR1YWwgdm9pZCBwdXQoaW50NjRfdCB0
cmFuc2FjdGlvbklkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIFBhc3NSZWZQdHI8U2hhcmVkQnVm
ZmVyPiwgUGFzc1JlZlB0cjxJREJLZXk+LCBQdXRNb2RlLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNr
cz4sIGNvbnN0IFZlY3RvcjxpbnQ2NF90PiYgaW5kZXhJZHMsIGNvbnN0IFZlY3RvcjxJbmRleEtl
eXM+JikgT1ZFUlJJREUgeyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rl
c3RzL0lEQkZha2VCYWNraW5nU3RvcmUuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMv
SURCRmFrZUJhY2tpbmdTdG9yZS5oCmluZGV4IDNlZDcyNGJiNGViMGEyYmJmODhiNjQ2MWE1MmZm
NDI3YjY4ZWJiMzIuLmVlZmM2NDhhZDIzYTQ1YzJjYzg3YzI0Y2JjYjM0MjE2MjFkNzRlNjkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvSURCRmFrZUJhY2tpbmdTdG9y
ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvSURCRmFrZUJhY2tpbmdTdG9y
ZS5oCkBAIC01MSwxMCArNTEsMTAgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkZWxldGVJ
bmRleChUcmFuc2FjdGlvbiosIGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9y
ZUlkLCBpbnQ2NF90IGluZGV4SWQpIE9WRVJSSURFIHsgfQogICAgIHZpcnR1YWwgdm9pZCBwdXRJ
bmRleERhdGFGb3JSZWNvcmQoVHJhbnNhY3Rpb24qLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0
X3Qgb2JqZWN0U3RvcmVJZCwgaW50NjRfdCBpbmRleElkLCBjb25zdCBJREJLZXkmLCBjb25zdCBS
ZWNvcmRJZGVudGlmaWVyJikgT1ZFUlJJREUgeyB9CiAKLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8
Q3Vyc29yPiBvcGVuT2JqZWN0U3RvcmVLZXlDdXJzb3IoVHJhbnNhY3Rpb24qLCBpbnQ2NF90IGRh
dGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgY29uc3QgSURCS2V5UmFuZ2UqLCBJREJD
dXJzb3I6OkRpcmVjdGlvbikgT1ZFUlJJREUgeyByZXR1cm4gUGFzc1JlZlB0cjxDdXJzb3I+KCk7
IH0KLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8Q3Vyc29yPiBvcGVuT2JqZWN0U3RvcmVDdXJzb3Io
VHJhbnNhY3Rpb24qLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwg
Y29uc3QgSURCS2V5UmFuZ2UqLCBJREJDdXJzb3I6OkRpcmVjdGlvbikgT1ZFUlJJREUgeyByZXR1
cm4gUGFzc1JlZlB0cjxDdXJzb3I+KCk7IH0KLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8Q3Vyc29y
PiBvcGVuSW5kZXhLZXlDdXJzb3IoVHJhbnNhY3Rpb24qLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGlu
dDY0X3Qgb2JqZWN0U3RvcmVJZCwgaW50NjRfdCBpbmRleElkLCBjb25zdCBJREJLZXlSYW5nZSos
IElEQkN1cnNvcjo6RGlyZWN0aW9uKSBPVkVSUklERSB7IHJldHVybiBQYXNzUmVmUHRyPEN1cnNv
cj4oKTsgfQotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxDdXJzb3I+IG9wZW5JbmRleEN1cnNvcihU
cmFuc2FjdGlvbiosIGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBp
bnQ2NF90IGluZGV4SWQsIGNvbnN0IElEQktleVJhbmdlKiwgSURCQ3Vyc29yOjpEaXJlY3Rpb24p
IE9WRVJSSURFIHsgcmV0dXJuIFBhc3NSZWZQdHI8Q3Vyc29yPigpOyB9CisgICAgdmlydHVhbCBQ
YXNzUmVmUHRyPEN1cnNvcj4gb3Blbk9iamVjdFN0b3JlS2V5Q3Vyc29yKFRyYW5zYWN0aW9uKiwg
aW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGNvbnN0IElEQktleVJh
bmdlKiwgSW5kZXhlZERCOjpDdXJzb3JEaXJlY3Rpb24pIE9WRVJSSURFIHsgcmV0dXJuIFBhc3NS
ZWZQdHI8Q3Vyc29yPigpOyB9CisgICAgdmlydHVhbCBQYXNzUmVmUHRyPEN1cnNvcj4gb3Blbk9i
amVjdFN0b3JlQ3Vyc29yKFRyYW5zYWN0aW9uKiwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90
IG9iamVjdFN0b3JlSWQsIGNvbnN0IElEQktleVJhbmdlKiwgSW5kZXhlZERCOjpDdXJzb3JEaXJl
Y3Rpb24pIE9WRVJSSURFIHsgcmV0dXJuIFBhc3NSZWZQdHI8Q3Vyc29yPigpOyB9CisgICAgdmly
dHVhbCBQYXNzUmVmUHRyPEN1cnNvcj4gb3BlbkluZGV4S2V5Q3Vyc29yKFRyYW5zYWN0aW9uKiwg
aW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGludDY0X3QgaW5kZXhJ
ZCwgY29uc3QgSURCS2V5UmFuZ2UqLCBJbmRleGVkREI6OkN1cnNvckRpcmVjdGlvbikgT1ZFUlJJ
REUgeyByZXR1cm4gUGFzc1JlZlB0cjxDdXJzb3I+KCk7IH0KKyAgICB2aXJ0dWFsIFBhc3NSZWZQ
dHI8Q3Vyc29yPiBvcGVuSW5kZXhDdXJzb3IoVHJhbnNhY3Rpb24qLCBpbnQ2NF90IGRhdGFiYXNl
SWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgaW50NjRfdCBpbmRleElkLCBjb25zdCBJREJLZXlS
YW5nZSosIEluZGV4ZWREQjo6Q3Vyc29yRGlyZWN0aW9uKSBPVkVSUklERSB7IHJldHVybiBQYXNz
UmVmUHRyPEN1cnNvcj4oKTsgfQogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>190980</attachid>
            <date>2013-03-01 09:56:22 -0800</date>
            <delta_ts>2013-03-05 11:53:15 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-110653-20130301095233.patch</filename>
            <type>text/plain</type>
            <size>90572</size>
            <attacher name="Alec Flett">alecflett</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ0NDQ4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNWYxYWVhMTliMjc0OTJh
Nzk4MDNlZWJjYTU4NzQxMjlkMDgzNWQ1NC4uNDk4ZmMwYjBiNTRkNTE0NWE3MTgyMDhmNzU5NGJm
OTU1NGU1YjY0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisyMDEzLTAyLTIyICBBbGVj
IEZsZXR0ICA8YWxlY2ZsZXR0QGNocm9taXVtLm9yZz4KKworICAgICAgICBJbmRleGVkREI6IFBy
b3Blcmx5IHJlZmFjdG9yIGZyb250ZW5kL2JhY2tlbmQgY29kZSBieSAjaW5jbHVkZXMKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExMDY1MworCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEluZGV4ZWREQiBoYXMg
YSBkaXN0aW5jdCBiYWNrZW5kIGFuZCBmcm9udGVuZCwgd2l0aCB3ZWxsIGRlZmluZWQKKyAgICAg
ICAgKkludGVyZmFjZSAvICpDYWxsYmFja3MgY2xhc3NlcyBkaXN0aW5ndWlzaGluZyB0aGVtLCBy
ZXNwZWN0aXZlbHkuCisgICAgICAgIAorICAgICAgICBUaGlzIG1ha2VzIHN1cmUgdGhhdCB0aGUg
ZnJvbnRlbmQgYW5kIGJhY2tlbmQgZG8gbm90IGluY2x1ZGUgZWFjaAorICAgICAgICBvdGhlciBh
bmQgZml4ZXMgYnVpbGQgcHJvYmxlbXMgdGhhdCBvY2N1cnJlZCBhcyBhIHJlc3VsdC4KKworICAg
ICAgICBTcGVjaWZpY2FsbHkgdGhpcyBtb3ZlcyBlbnVtcyBvdXQgb2YgSURCQ3Vyc29yIGFuZCBJ
REJUcmFuc2FjdGlvbgorICAgICAgICBpbnRvIEluZGV4ZWREQi5oIGluIGEgbmV3IFdlYkNvcmU6
OkluZGV4ZWREQiBuYW1lc3BhY2UuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCBhcyB0aGlzIGlz
IGp1c3QgYSByZWZhY3Rvci4KKwogMjAxMy0wMy0wMSAgU2hlcmlmZiBCb3QgIDx3ZWJraXQucmV2
aWV3LmJvdEBnbWFpbC5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjE0
NDQ0My4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggODUwMmZkYzY0MjBjOWY5ZDYzNTE5
ZjNlNjk4MjJmNTM4MTQwNDE4Yi4uMWY4MWM1ZTJiZDU4NTA0OTQ3NTI5Zjg1NzBmMmFlMmUyN2Qw
NDFhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAxMy0w
Mi0yMiAgQWxlYyBGbGV0dCAgPGFsZWNmbGV0dEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgSW5k
ZXhlZERCOiBQcm9wZXJseSByZWZhY3RvciBmcm9udGVuZC9iYWNrZW5kIGNvZGUgYnkgI2luY2x1
ZGVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTA2
NTMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDbGVh
biB1cCB0aGUgZnJvbnRlbmQvYmFja2VuZCBXZWJJREIqIGltcGxlbWVudGF0aW9ucyB0bworICAg
ICAgICBtYXRjaCB0aGUgY2hhbmdlcyB0byB3ZWJraXQuCisKIDIwMTMtMDMtMDEgIFNoZXJpZmYg
Qm90ICA8d2Via2l0LnJldmlldy5ib3RAZ21haWwuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQs
IHJvbGxpbmcgb3V0IHIxNDQ0MjIgYW5kIHIxNDQ0MjQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFtIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlz
dC5hbQppbmRleCAzNjVjNGFlNjBlZTk0YTM5NDJkY2I4YTRmODM3ZDUzOTU2Njg3NzljLi40NjEz
NjE1NDQ1Y2Q5YzU3NDQ0MDdlYTU2OTQ4Yzg5MDVmZDY3MWZiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCisrKyBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2Vm
aWxlLmxpc3QuYW0KQEAgLTE5MjAsNiArMTkyMCw3IEBAIHdlYmNvcmVfbW9kdWxlc19zb3VyY2Vz
ICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5o
IFwKIAlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJWZXJzaW9uQ2hhbmdlRXZl
bnQuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJWZXJzaW9uQ2hh
bmdlRXZlbnQuaCBcCisJU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSW5kZXhlZERC
LmggXAogCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL1BhZ2VHcm91cEluZGV4ZWRE
YXRhYmFzZS5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL1BhZ2VHcm91
cEluZGV4ZWREYXRhYmFzZS5oIFwKIAlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9X
b3JrZXJDb250ZXh0SW5kZXhlZERhdGFiYXNlLmNwcCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJCYWNraW5nU3RvcmUuY3BwIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQmFja2luZ1N0b3JlLmNwcAppbmRleCA5MDllZWFlNjY3
YTBmNzZmNDQ5NTZjNWUyMzMxZjhiYjkxZjNhMjFjLi41OTNhOTcwNDBhOWVhOGZlYzlkYWJkYmQz
ZWJkNzYyYWUyM2Y1ZjEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9JREJCYWNraW5nU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL0lEQkJhY2tpbmdTdG9yZS5jcHAKQEAgLTEzMDcsNyArMTMwNyw3IEBAIGJvb2wgSURC
QmFja2luZ1N0b3JlOjpDdXJzb3I6OmNvbnRpbnVlRnVuY3Rpb24oY29uc3QgSURCS2V5KiBrZXks
IEl0ZXJhdG9yU3RhdGUKIHsKICAgICBSZWZQdHI8SURCS2V5PiBwcmV2aW91c0tleSA9IG1fY3Vy
cmVudEtleTsKIAotICAgIC8vIFdoZW4gaXRlcmF0aW5nIHdpdGggUFJFVl9OT19EVVBMSUNBVEUs
IHNwZWMgcmVxdWlyZXMgdGhhdCB0aGUKKyAgICAvLyBXaGVuIGl0ZXJhdGluZyB3aXRoIFByZXZO
b0R1cGxpY2F0ZSwgc3BlYyByZXF1aXJlcyB0aGF0IHRoZQogICAgIC8vIHZhbHVlIHdlIHlpZWxk
IGZvciBlYWNoIGtleSBpcyB0aGUgZmlyc3QgZHVwbGljYXRlIGluIGZvcndhcmRzCiAgICAgLy8g
b3JkZXIuCiAgICAgUmVmUHRyPElEQktleT4gbGFzdER1cGxpY2F0ZUtleTsKQEAgLTE3MTcsMTIg
KzE3MTcsMTIgQEAgYm9vbCBJbmRleEN1cnNvckltcGw6OmxvYWRDdXJyZW50Um93KCkKICAgICBy
ZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBvYmplY3RTdG9yZUN1cnNvck9wdGlvbnMoTGV2ZWxEQlRy
YW5zYWN0aW9uKiB0cmFuc2FjdGlvbiwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVj
dFN0b3JlSWQsIGNvbnN0IElEQktleVJhbmdlKiByYW5nZSwgSURCQ3Vyc29yOjpEaXJlY3Rpb24g
ZGlyZWN0aW9uLCBJREJCYWNraW5nU3RvcmU6OkN1cnNvcjo6Q3Vyc29yT3B0aW9ucyYgY3Vyc29y
T3B0aW9ucykKK2Jvb2wgb2JqZWN0U3RvcmVDdXJzb3JPcHRpb25zKExldmVsREJUcmFuc2FjdGlv
biogdHJhbnNhY3Rpb24sIGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlk
LCBjb25zdCBJREJLZXlSYW5nZSogcmFuZ2UsIEluZGV4ZWREQjo6Q3Vyc29yRGlyZWN0aW9uIGRp
cmVjdGlvbiwgSURCQmFja2luZ1N0b3JlOjpDdXJzb3I6OkN1cnNvck9wdGlvbnMmIGN1cnNvck9w
dGlvbnMpCiB7CiAgICAgYm9vbCBsb3dlckJvdW5kID0gcmFuZ2UgJiYgcmFuZ2UtPmxvd2VyKCk7
CiAgICAgYm9vbCB1cHBlckJvdW5kID0gcmFuZ2UgJiYgcmFuZ2UtPnVwcGVyKCk7Ci0gICAgY3Vy
c29yT3B0aW9ucy5mb3J3YXJkID0gKGRpcmVjdGlvbiA9PSBJREJDdXJzb3I6Ok5FWFRfTk9fRFVQ
TElDQVRFIHx8IGRpcmVjdGlvbiA9PSBJREJDdXJzb3I6Ok5FWFQpOwotICAgIGN1cnNvck9wdGlv
bnMudW5pcXVlID0gKGRpcmVjdGlvbiA9PSBJREJDdXJzb3I6Ok5FWFRfTk9fRFVQTElDQVRFIHx8
IGRpcmVjdGlvbiA9PSBJREJDdXJzb3I6OlBSRVZfTk9fRFVQTElDQVRFKTsKKyAgICBjdXJzb3JP
cHRpb25zLmZvcndhcmQgPSAoZGlyZWN0aW9uID09IEluZGV4ZWREQjo6Q3Vyc29yTmV4dE5vRHVw
bGljYXRlIHx8IGRpcmVjdGlvbiA9PSBJbmRleGVkREI6OkN1cnNvck5leHQpOworICAgIGN1cnNv
ck9wdGlvbnMudW5pcXVlID0gKGRpcmVjdGlvbiA9PSBJbmRleGVkREI6OkN1cnNvck5leHROb0R1
cGxpY2F0ZSB8fCBkaXJlY3Rpb24gPT0gSW5kZXhlZERCOjpDdXJzb3JQcmV2Tm9EdXBsaWNhdGUp
OwogCiAgICAgaWYgKCFsb3dlckJvdW5kKSB7CiAgICAgICAgIGN1cnNvck9wdGlvbnMubG93S2V5
ID0gT2JqZWN0U3RvcmVEYXRhS2V5OjplbmNvZGUoZGF0YWJhc2VJZCwgb2JqZWN0U3RvcmVJZCwg
bWluSURCS2V5KCkpOwpAQCAtMTc2NCwxMyArMTc2NCwxMyBAQCBib29sIG9iamVjdFN0b3JlQ3Vy
c29yT3B0aW9ucyhMZXZlbERCVHJhbnNhY3Rpb24qIHRyYW5zYWN0aW9uLCBpbnQ2NF90IGRhdGFi
YXNlSQogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIGluZGV4Q3Vyc29yT3B0aW9ucyhMZXZl
bERCVHJhbnNhY3Rpb24qIHRyYW5zYWN0aW9uLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qg
b2JqZWN0U3RvcmVJZCwgaW50NjRfdCBpbmRleElkLCBjb25zdCBJREJLZXlSYW5nZSogcmFuZ2Us
IElEQkN1cnNvcjo6RGlyZWN0aW9uIGRpcmVjdGlvbiwgSURCQmFja2luZ1N0b3JlOjpDdXJzb3I6
OkN1cnNvck9wdGlvbnMmIGN1cnNvck9wdGlvbnMpCitib29sIGluZGV4Q3Vyc29yT3B0aW9ucyhM
ZXZlbERCVHJhbnNhY3Rpb24qIHRyYW5zYWN0aW9uLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0
X3Qgb2JqZWN0U3RvcmVJZCwgaW50NjRfdCBpbmRleElkLCBjb25zdCBJREJLZXlSYW5nZSogcmFu
Z2UsIEluZGV4ZWREQjo6Q3Vyc29yRGlyZWN0aW9uIGRpcmVjdGlvbiwgSURCQmFja2luZ1N0b3Jl
OjpDdXJzb3I6OkN1cnNvck9wdGlvbnMmIGN1cnNvck9wdGlvbnMpCiB7CiAgICAgQVNTRVJUKHRy
YW5zYWN0aW9uKTsKICAgICBib29sIGxvd2VyQm91bmQgPSByYW5nZSAmJiByYW5nZS0+bG93ZXIo
KTsKICAgICBib29sIHVwcGVyQm91bmQgPSByYW5nZSAmJiByYW5nZS0+dXBwZXIoKTsKLSAgICBj
dXJzb3JPcHRpb25zLmZvcndhcmQgPSAoZGlyZWN0aW9uID09IElEQkN1cnNvcjo6TkVYVF9OT19E
VVBMSUNBVEUgfHwgZGlyZWN0aW9uID09IElEQkN1cnNvcjo6TkVYVCk7Ci0gICAgY3Vyc29yT3B0
aW9ucy51bmlxdWUgPSAoZGlyZWN0aW9uID09IElEQkN1cnNvcjo6TkVYVF9OT19EVVBMSUNBVEUg
fHwgZGlyZWN0aW9uID09IElEQkN1cnNvcjo6UFJFVl9OT19EVVBMSUNBVEUpOworICAgIGN1cnNv
ck9wdGlvbnMuZm9yd2FyZCA9IChkaXJlY3Rpb24gPT0gSW5kZXhlZERCOjpDdXJzb3JOZXh0Tm9E
dXBsaWNhdGUgfHwgZGlyZWN0aW9uID09IEluZGV4ZWREQjo6Q3Vyc29yTmV4dCk7CisgICAgY3Vy
c29yT3B0aW9ucy51bmlxdWUgPSAoZGlyZWN0aW9uID09IEluZGV4ZWREQjo6Q3Vyc29yTmV4dE5v
RHVwbGljYXRlIHx8IGRpcmVjdGlvbiA9PSBJbmRleGVkREI6OkN1cnNvclByZXZOb0R1cGxpY2F0
ZSk7CiAKICAgICBpZiAoIWxvd2VyQm91bmQpIHsKICAgICAgICAgY3Vyc29yT3B0aW9ucy5sb3dL
ZXkgPSBJbmRleERhdGFLZXk6OmVuY29kZU1pbktleShkYXRhYmFzZUlkLCBvYmplY3RTdG9yZUlk
LCBpbmRleElkKTsKQEAgLTE4MDcsNyArMTgwNyw3IEBAIGJvb2wgaW5kZXhDdXJzb3JPcHRpb25z
KExldmVsREJUcmFuc2FjdGlvbiogdHJhbnNhY3Rpb24sIGludDY0X3QgZGF0YWJhc2VJZCwgaW50
CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLVBhc3NSZWZQdHI8SURCQmFja2luZ1N0b3JlOjpDdXJz
b3I+IElEQkJhY2tpbmdTdG9yZTo6b3Blbk9iamVjdFN0b3JlQ3Vyc29yKElEQkJhY2tpbmdTdG9y
ZTo6VHJhbnNhY3Rpb24qIHRyYW5zYWN0aW9uLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qg
b2JqZWN0U3RvcmVJZCwgY29uc3QgSURCS2V5UmFuZ2UqIHJhbmdlLCBJREJDdXJzb3I6OkRpcmVj
dGlvbiBkaXJlY3Rpb24pCitQYXNzUmVmUHRyPElEQkJhY2tpbmdTdG9yZTo6Q3Vyc29yPiBJREJC
YWNraW5nU3RvcmU6Om9wZW5PYmplY3RTdG9yZUN1cnNvcihJREJCYWNraW5nU3RvcmU6OlRyYW5z
YWN0aW9uKiB0cmFuc2FjdGlvbiwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0
b3JlSWQsIGNvbnN0IElEQktleVJhbmdlKiByYW5nZSwgSW5kZXhlZERCOjpDdXJzb3JEaXJlY3Rp
b24gZGlyZWN0aW9uKQogewogICAgIElEQl9UUkFDRSgiSURCQmFja2luZ1N0b3JlOjpvcGVuT2Jq
ZWN0U3RvcmVDdXJzb3IiKTsKICAgICBMZXZlbERCVHJhbnNhY3Rpb24qIGxldmVsREJUcmFuc2Fj
dGlvbiA9IElEQkJhY2tpbmdTdG9yZTo6VHJhbnNhY3Rpb246OmxldmVsREJUcmFuc2FjdGlvbkZy
b20odHJhbnNhY3Rpb24pOwpAQCAtMTgyMSw3ICsxODIxLDcgQEAgUGFzc1JlZlB0cjxJREJCYWNr
aW5nU3RvcmU6OkN1cnNvcj4gSURCQmFja2luZ1N0b3JlOjpvcGVuT2JqZWN0U3RvcmVDdXJzb3Io
SURCQmEKICAgICByZXR1cm4gY3Vyc29yLnJlbGVhc2UoKTsKIH0KIAotUGFzc1JlZlB0cjxJREJC
YWNraW5nU3RvcmU6OkN1cnNvcj4gSURCQmFja2luZ1N0b3JlOjpvcGVuT2JqZWN0U3RvcmVLZXlD
dXJzb3IoSURCQmFja2luZ1N0b3JlOjpUcmFuc2FjdGlvbiogdHJhbnNhY3Rpb24sIGludDY0X3Qg
ZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBjb25zdCBJREJLZXlSYW5nZSogcmFu
Z2UsIElEQkN1cnNvcjo6RGlyZWN0aW9uIGRpcmVjdGlvbikKK1Bhc3NSZWZQdHI8SURCQmFja2lu
Z1N0b3JlOjpDdXJzb3I+IElEQkJhY2tpbmdTdG9yZTo6b3Blbk9iamVjdFN0b3JlS2V5Q3Vyc29y
KElEQkJhY2tpbmdTdG9yZTo6VHJhbnNhY3Rpb24qIHRyYW5zYWN0aW9uLCBpbnQ2NF90IGRhdGFi
YXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgY29uc3QgSURCS2V5UmFuZ2UqIHJhbmdlLCBJ
bmRleGVkREI6OkN1cnNvckRpcmVjdGlvbiBkaXJlY3Rpb24pCiB7CiAgICAgSURCX1RSQUNFKCJJ
REJCYWNraW5nU3RvcmU6Om9wZW5PYmplY3RTdG9yZUtleUN1cnNvciIpOwogICAgIExldmVsREJU
cmFuc2FjdGlvbiogbGV2ZWxEQlRyYW5zYWN0aW9uID0gSURCQmFja2luZ1N0b3JlOjpUcmFuc2Fj
dGlvbjo6bGV2ZWxEQlRyYW5zYWN0aW9uRnJvbSh0cmFuc2FjdGlvbik7CkBAIC0xODM1LDcgKzE4
MzUsNyBAQCBQYXNzUmVmUHRyPElEQkJhY2tpbmdTdG9yZTo6Q3Vyc29yPiBJREJCYWNraW5nU3Rv
cmU6Om9wZW5PYmplY3RTdG9yZUtleUN1cnNvcihJRAogICAgIHJldHVybiBjdXJzb3IucmVsZWFz
ZSgpOwogfQogCi1QYXNzUmVmUHRyPElEQkJhY2tpbmdTdG9yZTo6Q3Vyc29yPiBJREJCYWNraW5n
U3RvcmU6Om9wZW5JbmRleEtleUN1cnNvcihJREJCYWNraW5nU3RvcmU6OlRyYW5zYWN0aW9uKiB0
cmFuc2FjdGlvbiwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGlu
dDY0X3QgaW5kZXhJZCwgY29uc3QgSURCS2V5UmFuZ2UqIHJhbmdlLCBJREJDdXJzb3I6OkRpcmVj
dGlvbiBkaXJlY3Rpb24pCitQYXNzUmVmUHRyPElEQkJhY2tpbmdTdG9yZTo6Q3Vyc29yPiBJREJC
YWNraW5nU3RvcmU6Om9wZW5JbmRleEtleUN1cnNvcihJREJCYWNraW5nU3RvcmU6OlRyYW5zYWN0
aW9uKiB0cmFuc2FjdGlvbiwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3Jl
SWQsIGludDY0X3QgaW5kZXhJZCwgY29uc3QgSURCS2V5UmFuZ2UqIHJhbmdlLCBJbmRleGVkREI6
OkN1cnNvckRpcmVjdGlvbiBkaXJlY3Rpb24pCiB7CiAgICAgSURCX1RSQUNFKCJJREJCYWNraW5n
U3RvcmU6Om9wZW5JbmRleEtleUN1cnNvciIpOwogICAgIExldmVsREJUcmFuc2FjdGlvbiogbGV2
ZWxEQlRyYW5zYWN0aW9uID0gSURCQmFja2luZ1N0b3JlOjpUcmFuc2FjdGlvbjo6bGV2ZWxEQlRy
YW5zYWN0aW9uRnJvbSh0cmFuc2FjdGlvbik7CkBAIC0xODQ5LDcgKzE4NDksNyBAQCBQYXNzUmVm
UHRyPElEQkJhY2tpbmdTdG9yZTo6Q3Vyc29yPiBJREJCYWNraW5nU3RvcmU6Om9wZW5JbmRleEtl
eUN1cnNvcihJREJCYWNraQogICAgIHJldHVybiBjdXJzb3IucmVsZWFzZSgpOwogfQogCi1QYXNz
UmVmUHRyPElEQkJhY2tpbmdTdG9yZTo6Q3Vyc29yPiBJREJCYWNraW5nU3RvcmU6Om9wZW5JbmRl
eEN1cnNvcihJREJCYWNraW5nU3RvcmU6OlRyYW5zYWN0aW9uKiB0cmFuc2FjdGlvbiwgaW50NjRf
dCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGludDY0X3QgaW5kZXhJZCwgY29u
c3QgSURCS2V5UmFuZ2UqIHJhbmdlLCBJREJDdXJzb3I6OkRpcmVjdGlvbiBkaXJlY3Rpb24pCitQ
YXNzUmVmUHRyPElEQkJhY2tpbmdTdG9yZTo6Q3Vyc29yPiBJREJCYWNraW5nU3RvcmU6Om9wZW5J
bmRleEN1cnNvcihJREJCYWNraW5nU3RvcmU6OlRyYW5zYWN0aW9uKiB0cmFuc2FjdGlvbiwgaW50
NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGludDY0X3QgaW5kZXhJZCwg
Y29uc3QgSURCS2V5UmFuZ2UqIHJhbmdlLCBJbmRleGVkREI6OkN1cnNvckRpcmVjdGlvbiBkaXJl
Y3Rpb24pCiB7CiAgICAgSURCX1RSQUNFKCJJREJCYWNraW5nU3RvcmU6Om9wZW5JbmRleEN1cnNv
ciIpOwogICAgIExldmVsREJUcmFuc2FjdGlvbiogbGV2ZWxEQlRyYW5zYWN0aW9uID0gSURCQmFj
a2luZ1N0b3JlOjpUcmFuc2FjdGlvbjo6bGV2ZWxEQlRyYW5zYWN0aW9uRnJvbSh0cmFuc2FjdGlv
bik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJCYWNr
aW5nU3RvcmUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkJhY2tpbmdT
dG9yZS5oCmluZGV4IDkyM2Q3ZGNhNjgwNTBiNTQxNzc3OWU2YjhkMTg1Yzk0YzgwMDY4MDUuLmZj
ZmUyZGFlOTBjMGM0YWYwYjUwMjM1ZTVhMTE4MmEyNzkxOTZkNjAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkJhY2tpbmdTdG9yZS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkJhY2tpbmdTdG9yZS5oCkBAIC0yOCw4ICsy
OCw5IEBACiAKICNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKIAotI2luY2x1ZGUgIklEQkN1
cnNvci5oIgorI2luY2x1ZGUgIklEQktleS5oIgogI2luY2x1ZGUgIklEQk1ldGFkYXRhLmgiCisj
aW5jbHVkZSAiSW5kZXhlZERCLmgiCiAjaW5jbHVkZSAiTGV2ZWxEQlRyYW5zYWN0aW9uLmgiCiAj
aW5jbHVkZSA8d3RmL093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CkBAIC0x
NDUsMTAgKzE0NiwxMCBAQCBwdWJsaWM6CiAgICAgICAgIElEQkJhY2tpbmdTdG9yZTo6UmVjb3Jk
SWRlbnRpZmllciBtX3JlY29yZElkZW50aWZpZXI7CiAgICAgfTsKIAotICAgIHZpcnR1YWwgUGFz
c1JlZlB0cjxDdXJzb3I+IG9wZW5PYmplY3RTdG9yZUtleUN1cnNvcihJREJCYWNraW5nU3RvcmU6
OlRyYW5zYWN0aW9uKiwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQs
IGNvbnN0IElEQktleVJhbmdlKiwgSURCQ3Vyc29yOjpEaXJlY3Rpb24pOwotICAgIHZpcnR1YWwg
UGFzc1JlZlB0cjxDdXJzb3I+IG9wZW5PYmplY3RTdG9yZUN1cnNvcihJREJCYWNraW5nU3RvcmU6
OlRyYW5zYWN0aW9uKiwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQs
IGNvbnN0IElEQktleVJhbmdlKiwgSURCQ3Vyc29yOjpEaXJlY3Rpb24pOwotICAgIHZpcnR1YWwg
UGFzc1JlZlB0cjxDdXJzb3I+IG9wZW5JbmRleEtleUN1cnNvcihJREJCYWNraW5nU3RvcmU6OlRy
YW5zYWN0aW9uKiwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGlu
dDY0X3QgaW5kZXhJZCwgY29uc3QgSURCS2V5UmFuZ2UqLCBJREJDdXJzb3I6OkRpcmVjdGlvbik7
Ci0gICAgdmlydHVhbCBQYXNzUmVmUHRyPEN1cnNvcj4gb3BlbkluZGV4Q3Vyc29yKElEQkJhY2tp
bmdTdG9yZTo6VHJhbnNhY3Rpb24qLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0
U3RvcmVJZCwgaW50NjRfdCBpbmRleElkLCBjb25zdCBJREJLZXlSYW5nZSosIElEQkN1cnNvcjo6
RGlyZWN0aW9uKTsKKyAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8Q3Vyc29yPiBvcGVuT2JqZWN0U3Rv
cmVLZXlDdXJzb3IoSURCQmFja2luZ1N0b3JlOjpUcmFuc2FjdGlvbiosIGludDY0X3QgZGF0YWJh
c2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBjb25zdCBJREJLZXlSYW5nZSosIEluZGV4ZWRE
Qjo6Q3Vyc29yRGlyZWN0aW9uKTsKKyAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8Q3Vyc29yPiBvcGVu
T2JqZWN0U3RvcmVDdXJzb3IoSURCQmFja2luZ1N0b3JlOjpUcmFuc2FjdGlvbiosIGludDY0X3Qg
ZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBjb25zdCBJREJLZXlSYW5nZSosIElu
ZGV4ZWREQjo6Q3Vyc29yRGlyZWN0aW9uKTsKKyAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8Q3Vyc29y
PiBvcGVuSW5kZXhLZXlDdXJzb3IoSURCQmFja2luZ1N0b3JlOjpUcmFuc2FjdGlvbiosIGludDY0
X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBpbnQ2NF90IGluZGV4SWQsIGNv
bnN0IElEQktleVJhbmdlKiwgSW5kZXhlZERCOjpDdXJzb3JEaXJlY3Rpb24pOworICAgIHZpcnR1
YWwgUGFzc1JlZlB0cjxDdXJzb3I+IG9wZW5JbmRleEN1cnNvcihJREJCYWNraW5nU3RvcmU6OlRy
YW5zYWN0aW9uKiwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGlu
dDY0X3QgaW5kZXhJZCwgY29uc3QgSURCS2V5UmFuZ2UqLCBJbmRleGVkREI6OkN1cnNvckRpcmVj
dGlvbik7CiAKICAgICBjbGFzcyBUcmFuc2FjdGlvbiB7CiAgICAgcHVibGljOgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvci5jcHAKaW5kZXggNDY4ZWRiZWJh
OTExMTY5YTA5M2EyZTdkMjM0OTA4OGZjYzI4MzZhNS4uN2JiMGY1MDBlNDdiNDI2MTM0MGE5MzI4
MTU4YWRlOTNlMzQ4NTZjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvSURCQ3Vyc29yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9JREJDdXJzb3IuY3BwCkBAIC00Myw3ICs0Myw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAotUGFzc1JlZlB0cjxJREJDdXJzb3I+IElEQkN1cnNvcjo6Y3JlYXRlKFBhc3NSZWZQdHI8SURC
Q3Vyc29yQmFja2VuZEludGVyZmFjZT4gYmFja2VuZCwgRGlyZWN0aW9uIGRpcmVjdGlvbiwgSURC
UmVxdWVzdCogcmVxdWVzdCwgSURCQW55KiBzb3VyY2UsIElEQlRyYW5zYWN0aW9uKiB0cmFuc2Fj
dGlvbikKK1Bhc3NSZWZQdHI8SURCQ3Vyc29yPiBJREJDdXJzb3I6OmNyZWF0ZShQYXNzUmVmUHRy
PElEQkN1cnNvckJhY2tlbmRJbnRlcmZhY2U+IGJhY2tlbmQsIEluZGV4ZWREQjo6Q3Vyc29yRGly
ZWN0aW9uIGRpcmVjdGlvbiwgSURCUmVxdWVzdCogcmVxdWVzdCwgSURCQW55KiBzb3VyY2UsIElE
QlRyYW5zYWN0aW9uKiB0cmFuc2FjdGlvbikKIHsKICAgICByZXR1cm4gYWRvcHRSZWYobmV3IElE
QkN1cnNvcihiYWNrZW5kLCBkaXJlY3Rpb24sIHJlcXVlc3QsIHNvdXJjZSwgdHJhbnNhY3Rpb24p
KTsKIH0KQEAgLTczLDcgKzczLDcgQEAgY29uc3QgQXRvbWljU3RyaW5nJiBJREJDdXJzb3I6OmRp
cmVjdGlvblByZXZVbmlxdWUoKQogfQogCiAKLUlEQkN1cnNvcjo6SURCQ3Vyc29yKFBhc3NSZWZQ
dHI8SURCQ3Vyc29yQmFja2VuZEludGVyZmFjZT4gYmFja2VuZCwgRGlyZWN0aW9uIGRpcmVjdGlv
biwgSURCUmVxdWVzdCogcmVxdWVzdCwgSURCQW55KiBzb3VyY2UsIElEQlRyYW5zYWN0aW9uKiB0
cmFuc2FjdGlvbikKK0lEQkN1cnNvcjo6SURCQ3Vyc29yKFBhc3NSZWZQdHI8SURCQ3Vyc29yQmFj
a2VuZEludGVyZmFjZT4gYmFja2VuZCwgSW5kZXhlZERCOjpDdXJzb3JEaXJlY3Rpb24gZGlyZWN0
aW9uLCBJREJSZXF1ZXN0KiByZXF1ZXN0LCBJREJBbnkqIHNvdXJjZSwgSURCVHJhbnNhY3Rpb24q
IHRyYW5zYWN0aW9uKQogICAgIDogbV9iYWNrZW5kKGJhY2tlbmQpCiAgICAgLCBtX3JlcXVlc3Qo
cmVxdWVzdCkKICAgICAsIG1fZGlyZWN0aW9uKGRpcmVjdGlvbikKQEAgLTIwNiw3ICsyMDYsNyBA
QCB2b2lkIElEQkN1cnNvcjo6Y29udGludWVGdW5jdGlvbihQYXNzUmVmUHRyPElEQktleT4ga2V5
LCBFeGNlcHRpb25Db2RlJiBlYykKIAogICAgIGlmIChrZXkpIHsKICAgICAgICAgQVNTRVJUKG1f
Y3VycmVudEtleSk7Ci0gICAgICAgIGlmIChtX2RpcmVjdGlvbiA9PSBJREJDdXJzb3I6Ok5FWFQg
fHwgbV9kaXJlY3Rpb24gPT0gSURCQ3Vyc29yOjpORVhUX05PX0RVUExJQ0FURSkgeworICAgICAg
ICBpZiAobV9kaXJlY3Rpb24gPT0gSW5kZXhlZERCOjpDdXJzb3JOZXh0IHx8IG1fZGlyZWN0aW9u
ID09IEluZGV4ZWREQjo6Q3Vyc29yTmV4dE5vRHVwbGljYXRlKSB7CiAgICAgICAgICAgICBpZiAo
IW1fY3VycmVudEtleS0+aXNMZXNzVGhhbihrZXkuZ2V0KCkpKSB7CiAgICAgICAgICAgICAgICAg
ZWMgPSBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6RGF0YUVycm9yOwogICAgICAgICAgICAgICAgIHJl
dHVybjsKQEAgLTI5OCwzNCArMjk4LDM0IEBAIFBhc3NSZWZQdHI8SURCT2JqZWN0U3RvcmU+IElE
QkN1cnNvcjo6ZWZmZWN0aXZlT2JqZWN0U3RvcmUoKQogICAgIHJldHVybiBpbmRleC0+b2JqZWN0
U3RvcmUoKTsKIH0KIAotSURCQ3Vyc29yOjpEaXJlY3Rpb24gSURCQ3Vyc29yOjpzdHJpbmdUb0Rp
cmVjdGlvbihjb25zdCBTdHJpbmcmIGRpcmVjdGlvblN0cmluZywgU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCogY29udGV4dCwgRXhjZXB0aW9uQ29kZSYgZWMpCitJbmRleGVkREI6OkN1cnNvckRpcmVj
dGlvbiBJREJDdXJzb3I6OnN0cmluZ1RvRGlyZWN0aW9uKGNvbnN0IFN0cmluZyYgZGlyZWN0aW9u
U3RyaW5nLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBFeGNlcHRpb25Db2RlJiBl
YykKIHsKICAgICBpZiAoZGlyZWN0aW9uU3RyaW5nID09IElEQkN1cnNvcjo6ZGlyZWN0aW9uTmV4
dCgpKQotICAgICAgICByZXR1cm4gSURCQ3Vyc29yOjpORVhUOworICAgICAgICByZXR1cm4gSW5k
ZXhlZERCOjpDdXJzb3JOZXh0OwogICAgIGlmIChkaXJlY3Rpb25TdHJpbmcgPT0gSURCQ3Vyc29y
OjpkaXJlY3Rpb25OZXh0VW5pcXVlKCkpCi0gICAgICAgIHJldHVybiBJREJDdXJzb3I6Ok5FWFRf
Tk9fRFVQTElDQVRFOworICAgICAgICByZXR1cm4gSW5kZXhlZERCOjpDdXJzb3JOZXh0Tm9EdXBs
aWNhdGU7CiAgICAgaWYgKGRpcmVjdGlvblN0cmluZyA9PSBJREJDdXJzb3I6OmRpcmVjdGlvblBy
ZXYoKSkKLSAgICAgICAgcmV0dXJuIElEQkN1cnNvcjo6UFJFVjsKKyAgICAgICAgcmV0dXJuIElu
ZGV4ZWREQjo6Q3Vyc29yUHJldjsKICAgICBpZiAoZGlyZWN0aW9uU3RyaW5nID09IElEQkN1cnNv
cjo6ZGlyZWN0aW9uUHJldlVuaXF1ZSgpKQotICAgICAgICByZXR1cm4gSURCQ3Vyc29yOjpQUkVW
X05PX0RVUExJQ0FURTsKKyAgICAgICAgcmV0dXJuIEluZGV4ZWREQjo6Q3Vyc29yUHJldk5vRHVw
bGljYXRlOwogCiAgICAgZWMgPSBUeXBlRXJyb3I7Ci0gICAgcmV0dXJuIElEQkN1cnNvcjo6TkVY
VDsKKyAgICByZXR1cm4gSW5kZXhlZERCOjpDdXJzb3JOZXh0OwogfQogCiBjb25zdCBBdG9taWNT
dHJpbmcmIElEQkN1cnNvcjo6ZGlyZWN0aW9uVG9TdHJpbmcodW5zaWduZWQgc2hvcnQgZGlyZWN0
aW9uKQogewogICAgIHN3aXRjaCAoZGlyZWN0aW9uKSB7Ci0gICAgY2FzZSBJREJDdXJzb3I6Ok5F
WFQ6CisgICAgY2FzZSBJbmRleGVkREI6OkN1cnNvck5leHQ6CiAgICAgICAgIHJldHVybiBJREJD
dXJzb3I6OmRpcmVjdGlvbk5leHQoKTsKIAotICAgIGNhc2UgSURCQ3Vyc29yOjpORVhUX05PX0RV
UExJQ0FURToKKyAgICBjYXNlIEluZGV4ZWREQjo6Q3Vyc29yTmV4dE5vRHVwbGljYXRlOgogICAg
ICAgICByZXR1cm4gSURCQ3Vyc29yOjpkaXJlY3Rpb25OZXh0VW5pcXVlKCk7CiAKLSAgICBjYXNl
IElEQkN1cnNvcjo6UFJFVjoKKyAgICBjYXNlIEluZGV4ZWREQjo6Q3Vyc29yUHJldjoKICAgICAg
ICAgcmV0dXJuIElEQkN1cnNvcjo6ZGlyZWN0aW9uUHJldigpOwogCi0gICAgY2FzZSBJREJDdXJz
b3I6OlBSRVZfTk9fRFVQTElDQVRFOgorICAgIGNhc2UgSW5kZXhlZERCOjpDdXJzb3JQcmV2Tm9E
dXBsaWNhdGU6CiAgICAgICAgIHJldHVybiBJREJDdXJzb3I6OmRpcmVjdGlvblByZXZVbmlxdWUo
KTsKIAogICAgIGRlZmF1bHQ6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9JREJDdXJzb3IuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lE
QkN1cnNvci5oCmluZGV4IDFjODMxNjQwMjZkYTQ0YjNmMDhlZjkzZmY0MmUzYWI0NWZmZjU5MmMu
LjE4ZDIwMGVhNjEwNjc3OTdlYTRjOWVkYzUxNjFkMTVkYjRiM2RhZTcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvci5oCkBAIC0zMCw2ICszMCw3IEBACiAK
ICNpbmNsdWRlICJJREJLZXkuaCIKICNpbmNsdWRlICJJREJUcmFuc2FjdGlvbi5oIgorI2luY2x1
ZGUgIkluZGV4ZWREQi5oIgogI2luY2x1ZGUgIlNjcmlwdFZhbHVlLmgiCiAjaW5jbHVkZSAiU2Ny
aXB0V3JhcHBhYmxlLmgiCiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KQEAgLTQ5LDIyICs1
MCwxNSBAQCB0eXBlZGVmIGludCBFeGNlcHRpb25Db2RlOwogCiBjbGFzcyBJREJDdXJzb3IgOiBw
dWJsaWMgU2NyaXB0V3JhcHBhYmxlLCBwdWJsaWMgUmVmQ291bnRlZDxJREJDdXJzb3I+IHsKIHB1
YmxpYzoKLSAgICBlbnVtIERpcmVjdGlvbiB7Ci0gICAgICAgIE5FWFQgPSAwLAotICAgICAgICBO
RVhUX05PX0RVUExJQ0FURSA9IDEsCi0gICAgICAgIFBSRVYgPSAyLAotICAgICAgICBQUkVWX05P
X0RVUExJQ0FURSA9IDMsCi0gICAgfTsKLQogICAgIHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcm
IGRpcmVjdGlvbk5leHQoKTsKICAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiBkaXJlY3Rp
b25OZXh0VW5pcXVlKCk7CiAgICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYgZGlyZWN0aW9u
UHJldigpOwogICAgIHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcmIGRpcmVjdGlvblByZXZVbmlx
dWUoKTsKIAotICAgIHN0YXRpYyBJREJDdXJzb3I6OkRpcmVjdGlvbiBzdHJpbmdUb0RpcmVjdGlv
bihjb25zdCBTdHJpbmcmIG1vZGVTdHJpbmcsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBFeGNl
cHRpb25Db2RlJik7CisgICAgc3RhdGljIEluZGV4ZWREQjo6Q3Vyc29yRGlyZWN0aW9uIHN0cmlu
Z1RvRGlyZWN0aW9uKGNvbnN0IFN0cmluZyYgbW9kZVN0cmluZywgU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCosIEV4Y2VwdGlvbkNvZGUmKTsKICAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiBk
aXJlY3Rpb25Ub1N0cmluZyh1bnNpZ25lZCBzaG9ydCBtb2RlKTsKIAotICAgIHN0YXRpYyBQYXNz
UmVmUHRyPElEQkN1cnNvcj4gY3JlYXRlKFBhc3NSZWZQdHI8SURCQ3Vyc29yQmFja2VuZEludGVy
ZmFjZT4sIERpcmVjdGlvbiwgSURCUmVxdWVzdCosIElEQkFueSogc291cmNlLCBJREJUcmFuc2Fj
dGlvbiopOworICAgIHN0YXRpYyBQYXNzUmVmUHRyPElEQkN1cnNvcj4gY3JlYXRlKFBhc3NSZWZQ
dHI8SURCQ3Vyc29yQmFja2VuZEludGVyZmFjZT4sIEluZGV4ZWREQjo6Q3Vyc29yRGlyZWN0aW9u
LCBJREJSZXF1ZXN0KiwgSURCQW55KiBzb3VyY2UsIElEQlRyYW5zYWN0aW9uKik7CiAgICAgdmly
dHVhbCB+SURCQ3Vyc29yKCk7CiAKICAgICAvLyBJbXBsZW1lbnQgdGhlIElETApAQCAtODksNyAr
ODMsNyBAQCBwdWJsaWM6CiAgICAgUGFzc1JlZlB0cjxJREJLZXk+IGlkYlByaW1hcnlLZXkoKSB7
IHJldHVybiBtX2N1cnJlbnRQcmltYXJ5S2V5OyB9CiAKIHByb3RlY3RlZDoKLSAgICBJREJDdXJz
b3IoUGFzc1JlZlB0cjxJREJDdXJzb3JCYWNrZW5kSW50ZXJmYWNlPiwgRGlyZWN0aW9uLCBJREJS
ZXF1ZXN0KiwgSURCQW55KiBzb3VyY2UsIElEQlRyYW5zYWN0aW9uKik7CisgICAgSURCQ3Vyc29y
KFBhc3NSZWZQdHI8SURCQ3Vyc29yQmFja2VuZEludGVyZmFjZT4sIEluZGV4ZWREQjo6Q3Vyc29y
RGlyZWN0aW9uLCBJREJSZXF1ZXN0KiwgSURCQW55KiBzb3VyY2UsIElEQlRyYW5zYWN0aW9uKik7
CiAgICAgdmlydHVhbCBib29sIGlzS2V5Q3Vyc29yKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQog
CiBwcml2YXRlOgpAQCAtOTcsNyArOTEsNyBAQCBwcml2YXRlOgogCiAgICAgUmVmUHRyPElEQkN1
cnNvckJhY2tlbmRJbnRlcmZhY2U+IG1fYmFja2VuZDsKICAgICBSZWZQdHI8SURCUmVxdWVzdD4g
bV9yZXF1ZXN0OwotICAgIGNvbnN0IERpcmVjdGlvbiBtX2RpcmVjdGlvbjsKKyAgICBjb25zdCBJ
bmRleGVkREI6OkN1cnNvckRpcmVjdGlvbiBtX2RpcmVjdGlvbjsKICAgICBSZWZQdHI8SURCQW55
PiBtX3NvdXJjZTsKICAgICBSZWZQdHI8SURCVHJhbnNhY3Rpb24+IG1fdHJhbnNhY3Rpb247CiAg
ICAgSURCVHJhbnNhY3Rpb246Ok9wZW5DdXJzb3JOb3RpZmllciBtX3RyYW5zYWN0aW9uTm90aWZp
ZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJz
b3JCYWNrZW5kSW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJD
dXJzb3JCYWNrZW5kSW1wbC5jcHAKaW5kZXggMzMyZDkwMTQyNWFiMWJhYTRhNDRkODg5YzFkNWQy
MTJkNjI4MGVkOC4uMTM2MGZiOTAyMDVlYTE5OGY3OGMwMzA3Zjk2YzYyOWU5ODJmZTM1OCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yQmFja2Vu
ZEltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNv
ckJhY2tlbmRJbXBsLmNwcApAQCAtMzQsNyArMzQsNiBAQAogI2luY2x1ZGUgIklEQkRhdGFiYXNl
RXJyb3IuaCIKICNpbmNsdWRlICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5oIgogI2luY2x1ZGUgIklE
QktleVJhbmdlLmgiCi0jaW5jbHVkZSAiSURCUmVxdWVzdC5oIgogI2luY2x1ZGUgIklEQlRyYWNp
bmcuaCIKICNpbmNsdWRlICJJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsLmgiCiAjaW5jbHVkZSAi
U2hhcmVkQnVmZmVyLmgiCkBAIC0xMDEsNyArMTAwLDcgQEAgcHJpdmF0ZToKICAgICBSZWZQdHI8
SURCQ2FsbGJhY2tzPiBtX2NhbGxiYWNrczsKIH07CiAKLUlEQkN1cnNvckJhY2tlbmRJbXBsOjpJ
REJDdXJzb3JCYWNrZW5kSW1wbChQYXNzUmVmUHRyPElEQkJhY2tpbmdTdG9yZTo6Q3Vyc29yPiBj
dXJzb3IsIEN1cnNvclR5cGUgY3Vyc29yVHlwZSwgSURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNl
OjpUYXNrVHlwZSB0YXNrVHlwZSwgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbCogdHJhbnNhY3Rp
b24sIGludDY0X3Qgb2JqZWN0U3RvcmVJZCkKK0lEQkN1cnNvckJhY2tlbmRJbXBsOjpJREJDdXJz
b3JCYWNrZW5kSW1wbChQYXNzUmVmUHRyPElEQkJhY2tpbmdTdG9yZTo6Q3Vyc29yPiBjdXJzb3Is
IEluZGV4ZWREQjo6Q3Vyc29yVHlwZSBjdXJzb3JUeXBlLCBJREJEYXRhYmFzZUJhY2tlbmRJbnRl
cmZhY2U6OlRhc2tUeXBlIHRhc2tUeXBlLCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsKiB0cmFu
c2FjdGlvbiwgaW50NjRfdCBvYmplY3RTdG9yZUlkKQogICAgIDogbV90YXNrVHlwZSh0YXNrVHlw
ZSkKICAgICAsIG1fY3Vyc29yVHlwZShjdXJzb3JUeXBlKQogICAgICwgbV9kYXRhYmFzZSh0cmFu
c2FjdGlvbi0+ZGF0YWJhc2UoKSkKQEAgLTE2MCw3ICsxNTksNyBAQCB2b2lkIElEQkN1cnNvckJh
Y2tlbmRJbXBsOjpDdXJzb3JJdGVyYXRpb25PcGVyYXRpb246OnBlcmZvcm0oSURCVHJhbnNhY3Rp
b25CYWNrZQogdm9pZCBJREJDdXJzb3JCYWNrZW5kSW1wbDo6ZGVsZXRlRnVuY3Rpb24oUGFzc1Jl
ZlB0cjxJREJDYWxsYmFja3M+IHBycENhbGxiYWNrcywgRXhjZXB0aW9uQ29kZSYpCiB7CiAgICAg
SURCX1RSQUNFKCJJREJDdXJzb3JCYWNrZW5kSW1wbDo6ZGVsZXRlIik7Ci0gICAgQVNTRVJUKG1f
dHJhbnNhY3Rpb24tPm1vZGUoKSAhPSBJREJUcmFuc2FjdGlvbjo6UkVBRF9PTkxZKTsKKyAgICBB
U1NFUlQobV90cmFuc2FjdGlvbi0+bW9kZSgpICE9IEluZGV4ZWREQjo6VHJhbnNhY3Rpb25SZWFk
T25seSk7CiAgICAgUmVmUHRyPElEQktleVJhbmdlPiBrZXlSYW5nZSA9IElEQktleVJhbmdlOjpj
cmVhdGUobV9jdXJzb3ItPnByaW1hcnlLZXkoKSk7CiAgICAgbV9kYXRhYmFzZS0+ZGVsZXRlUmFu
Z2UobV90cmFuc2FjdGlvbi0+aWQoKSwgbV9vYmplY3RTdG9yZUlkLCBrZXlSYW5nZS5yZWxlYXNl
KCksIHBycENhbGxiYWNrcyk7CiB9CkBAIC0xOTYsMTAgKzE5NSwxMCBAQCB2b2lkIElEQkN1cnNv
ckJhY2tlbmRJbXBsOjpDdXJzb3JQcmVmZXRjaEl0ZXJhdGlvbk9wZXJhdGlvbjo6cGVyZm9ybShJ
REJUcmFuc2FjdAogICAgICAgICBmb3VuZFByaW1hcnlLZXlzLmFwcGVuZChtX2N1cnNvci0+bV9j
dXJzb3ItPnByaW1hcnlLZXkoKSk7CiAKICAgICAgICAgc3dpdGNoIChtX2N1cnNvci0+bV9jdXJz
b3JUeXBlKSB7Ci0gICAgICAgIGNhc2UgS2V5T25seToKKyAgICAgICAgY2FzZSBJbmRleGVkREI6
OkN1cnNvcktleU9ubHk6CiAgICAgICAgICAgICBmb3VuZFZhbHVlcy5hcHBlbmQoU2hhcmVkQnVm
ZmVyOjpjcmVhdGUoKSk7CiAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBLZXlBbmRW
YWx1ZToKKyAgICAgICAgY2FzZSBJbmRleGVkREI6OkN1cnNvcktleUFuZFZhbHVlOgogICAgICAg
ICAgICAgc2l6ZUVzdGltYXRlICs9IG1fY3Vyc29yLT5tX2N1cnNvci0+dmFsdWUoKS0+c2l6ZSgp
OwogICAgICAgICAgICAgZm91bmRWYWx1ZXMuYXBwZW5kKG1fY3Vyc29yLT5tX2N1cnNvci0+dmFs
dWUoKSk7CiAgICAgICAgICAgICBicmVhazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvckJhY2tlbmRJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3JCYWNrZW5kSW1wbC5oCmluZGV4IDY5OWUyZjU4ZDZk
MTc2MjFmNGNhMTI0ZmQyZWM4YjBiMTMzMTJhNDguLjU1ZTI2YmI3ZDQ0OGZkNGIxZTE2NWE1Y2Jk
MzZlODM4Y2EyZTM1NDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL0lEQkN1cnNvckJhY2tlbmRJbXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvSURCQ3Vyc29yQmFja2VuZEltcGwuaApAQCAtMzAsNyArMzAsNiBAQAogI2lmIEVO
QUJMRShJTkRFWEVEX0RBVEFCQVNFKQogCiAjaW5jbHVkZSAiSURCQmFja2luZ1N0b3JlLmgiCi0j
aW5jbHVkZSAiSURCQ3Vyc29yLmgiCiAjaW5jbHVkZSAiSURCQ3Vyc29yQmFja2VuZEludGVyZmFj
ZS5oIgogI2luY2x1ZGUgIklEQlRyYW5zYWN0aW9uQmFja2VuZEltcGwuaCIKICNpbmNsdWRlICJT
aGFyZWRCdWZmZXIuaCIKQEAgLTQ1LDExICs0NCwxMSBAQCBjbGFzcyBJREJLZXlSYW5nZTsKIAog
Y2xhc3MgSURCQ3Vyc29yQmFja2VuZEltcGwgOiBwdWJsaWMgSURCQ3Vyc29yQmFja2VuZEludGVy
ZmFjZSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8SURCQ3Vyc29yQmFja2VuZElt
cGw+IGNyZWF0ZShQYXNzUmVmUHRyPElEQkJhY2tpbmdTdG9yZTo6Q3Vyc29yPiBjdXJzb3IsIEN1
cnNvclR5cGUgY3Vyc29yVHlwZSwgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbCogdHJhbnNhY3Rp
b24sIGludDY0X3Qgb2JqZWN0U3RvcmVJZCkKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxJREJDdXJz
b3JCYWNrZW5kSW1wbD4gY3JlYXRlKFBhc3NSZWZQdHI8SURCQmFja2luZ1N0b3JlOjpDdXJzb3I+
IGN1cnNvciwgSW5kZXhlZERCOjpDdXJzb3JUeXBlIGN1cnNvclR5cGUsIElEQlRyYW5zYWN0aW9u
QmFja2VuZEltcGwqIHRyYW5zYWN0aW9uLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQpCiAgICAgewog
ICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IElEQkN1cnNvckJhY2tlbmRJbXBsKGN1cnNvciwg
Y3Vyc29yVHlwZSwgSURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlOjpOb3JtYWxUYXNrLCB0cmFu
c2FjdGlvbiwgb2JqZWN0U3RvcmVJZCkpOwogICAgIH0KLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxJ
REJDdXJzb3JCYWNrZW5kSW1wbD4gY3JlYXRlKFBhc3NSZWZQdHI8SURCQmFja2luZ1N0b3JlOjpD
dXJzb3I+IGN1cnNvciwgQ3Vyc29yVHlwZSBjdXJzb3JUeXBlLCBJREJEYXRhYmFzZUJhY2tlbmRJ
bnRlcmZhY2U6OlRhc2tUeXBlIHRhc2tUeXBlLCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsKiB0
cmFuc2FjdGlvbiwgaW50NjRfdCBvYmplY3RTdG9yZUlkKQorICAgIHN0YXRpYyBQYXNzUmVmUHRy
PElEQkN1cnNvckJhY2tlbmRJbXBsPiBjcmVhdGUoUGFzc1JlZlB0cjxJREJCYWNraW5nU3RvcmU6
OkN1cnNvcj4gY3Vyc29yLCBJbmRleGVkREI6OkN1cnNvclR5cGUgY3Vyc29yVHlwZSwgSURCRGF0
YWJhc2VCYWNrZW5kSW50ZXJmYWNlOjpUYXNrVHlwZSB0YXNrVHlwZSwgSURCVHJhbnNhY3Rpb25C
YWNrZW5kSW1wbCogdHJhbnNhY3Rpb24sIGludDY0X3Qgb2JqZWN0U3RvcmVJZCkKICAgICB7CiAg
ICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgSURCQ3Vyc29yQmFja2VuZEltcGwoY3Vyc29yLCBj
dXJzb3JUeXBlLCB0YXNrVHlwZSwgdHJhbnNhY3Rpb24sIG9iamVjdFN0b3JlSWQpKTsKICAgICB9
CkBAIC02NSwxOCArNjQsMTggQEAgcHVibGljOgogCiAgICAgUGFzc1JlZlB0cjxJREJLZXk+IGtl
eSgpIGNvbnN0IHsgcmV0dXJuIG1fY3Vyc29yLT5rZXkoKTsgfQogICAgIFBhc3NSZWZQdHI8SURC
S2V5PiBwcmltYXJ5S2V5KCkgY29uc3QgeyByZXR1cm4gbV9jdXJzb3ItPnByaW1hcnlLZXkoKTsg
fQotICAgIFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiB2YWx1ZSgpIGNvbnN0IHsgcmV0dXJuICht
X2N1cnNvclR5cGUgPT0gS2V5T25seSkgPyAwIDogbV9jdXJzb3ItPnZhbHVlKCk7IH0KKyAgICBQ
YXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gdmFsdWUoKSBjb25zdCB7IHJldHVybiAobV9jdXJzb3JU
eXBlID09IEluZGV4ZWREQjo6Q3Vyc29yS2V5T25seSkgPyAwIDogbV9jdXJzb3ItPnZhbHVlKCk7
IH0KICAgICB2b2lkIGNsb3NlKCk7CiAKIHByaXZhdGU6Ci0gICAgSURCQ3Vyc29yQmFja2VuZElt
cGwoUGFzc1JlZlB0cjxJREJCYWNraW5nU3RvcmU6OkN1cnNvcj4sIEN1cnNvclR5cGUsIElEQkRh
dGFiYXNlQmFja2VuZEludGVyZmFjZTo6VGFza1R5cGUsIElEQlRyYW5zYWN0aW9uQmFja2VuZElt
cGwqLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQpOworICAgIElEQkN1cnNvckJhY2tlbmRJbXBsKFBh
c3NSZWZQdHI8SURCQmFja2luZ1N0b3JlOjpDdXJzb3I+LCBJbmRleGVkREI6OkN1cnNvclR5cGUs
IElEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZTo6VGFza1R5cGUsIElEQlRyYW5zYWN0aW9uQmFj
a2VuZEltcGwqLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQpOwogCiAgICAgY2xhc3MgQ3Vyc29ySXRl
cmF0aW9uT3BlcmF0aW9uOwogICAgIGNsYXNzIEN1cnNvckFkdmFuY2VPcGVyYXRpb247CiAgICAg
Y2xhc3MgQ3Vyc29yUHJlZmV0Y2hJdGVyYXRpb25PcGVyYXRpb247CiAKICAgICBJREJEYXRhYmFz
ZUJhY2tlbmRJbnRlcmZhY2U6OlRhc2tUeXBlIG1fdGFza1R5cGU7Ci0gICAgQ3Vyc29yVHlwZSBt
X2N1cnNvclR5cGU7CisgICAgSW5kZXhlZERCOjpDdXJzb3JUeXBlIG1fY3Vyc29yVHlwZTsKICAg
ICBjb25zdCBSZWZQdHI8SURCRGF0YWJhc2VCYWNrZW5kSW1wbD4gbV9kYXRhYmFzZTsKICAgICBj
b25zdCBSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbD4gbV90cmFuc2FjdGlvbjsKICAg
ICBjb25zdCBpbnQ2NF90IG1fb2JqZWN0U3RvcmVJZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvckJhY2tlbmRJbnRlcmZhY2UuaCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvckJhY2tlbmRJbnRlcmZhY2UuaApp
bmRleCBhZWIyOTc2YjA4NjJhNzlhZDQ0MzgxM2U5ZTc2Y2ZhMjZlMzkwZjE2Li45NjNmMzJiMDBh
YjMwOTNhOWNmYjhiZWNhYTJlYzg1MWJlYzg4YWM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3JCYWNrZW5kSW50ZXJmYWNlLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yQmFja2VuZEludGVyZmFjZS5o
CkBAIC0zMyw3ICszMyw2IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgSURCQW55
OwogY2xhc3MgSURCQ2FsbGJhY2tzOwogY2xhc3MgSURCS2V5OwogY2xhc3MgSURCUmVxdWVzdDsK
QEAgLTQ0LDExICs0Myw2IEBAIGNsYXNzIElEQkN1cnNvckJhY2tlbmRJbnRlcmZhY2UgOiBwdWJs
aWMgUmVmQ291bnRlZDxJREJDdXJzb3JCYWNrZW5kSW50ZXJmYWNlPiB7CiBwdWJsaWM6CiAgICAg
dmlydHVhbCB+SURCQ3Vyc29yQmFja2VuZEludGVyZmFjZSgpIHt9CiAKLSAgICBlbnVtIEN1cnNv
clR5cGUgewotICAgICAgICBLZXlBbmRWYWx1ZSA9IDAsCi0gICAgICAgIEtleU9ubHkKLSAgICB9
OwotCiAgICAgdmlydHVhbCB2b2lkIGFkdmFuY2UodW5zaWduZWQgbG9uZyBjb3VudCwgUGFzc1Jl
ZlB0cjxJREJDYWxsYmFja3M+LCBFeGNlcHRpb25Db2RlJikgPSAwOwogICAgIHZpcnR1YWwgdm9p
ZCBjb250aW51ZUZ1bmN0aW9uKFBhc3NSZWZQdHI8SURCS2V5PiBrZXksIFBhc3NSZWZQdHI8SURC
Q2FsbGJhY2tzPiwgRXhjZXB0aW9uQ29kZSYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGVsZXRl
RnVuY3Rpb24oUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+LCBFeGNlcHRpb25Db2RlJikgPSAwOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yV2l0
aFZhbHVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvcldp
dGhWYWx1ZS5jcHAKaW5kZXggYjkwYmEzZDliNTI2NTMxNzA5MmJiZTU1ODE3NTBkYzAyNzg1ZGFh
YS4uNDAzNjExMTA0OWViNWQ5MjlhZGIyMjdjNmZlM2EzY2JlYzM2ZjE4OCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yV2l0aFZhbHVlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3JXaXRoVmFsdWUu
Y3BwCkBAIC0zMyw3ICszMyw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUGFzc1JlZlB0
cjxJREJDdXJzb3JXaXRoVmFsdWU+IElEQkN1cnNvcldpdGhWYWx1ZTo6Y3JlYXRlKFBhc3NSZWZQ
dHI8SURCQ3Vyc29yQmFja2VuZEludGVyZmFjZT4gYmFja2VuZCwgRGlyZWN0aW9uIGRpcmVjdGlv
biwgSURCUmVxdWVzdCogcmVxdWVzdCwgSURCQW55KiBzb3VyY2UsIElEQlRyYW5zYWN0aW9uKiB0
cmFuc2FjdGlvbikKK1Bhc3NSZWZQdHI8SURCQ3Vyc29yV2l0aFZhbHVlPiBJREJDdXJzb3JXaXRo
VmFsdWU6OmNyZWF0ZShQYXNzUmVmUHRyPElEQkN1cnNvckJhY2tlbmRJbnRlcmZhY2U+IGJhY2tl
bmQsIEluZGV4ZWREQjo6Q3Vyc29yRGlyZWN0aW9uIGRpcmVjdGlvbiwgSURCUmVxdWVzdCogcmVx
dWVzdCwgSURCQW55KiBzb3VyY2UsIElEQlRyYW5zYWN0aW9uKiB0cmFuc2FjdGlvbikKIHsKICAg
ICByZXR1cm4gYWRvcHRSZWYobmV3IElEQkN1cnNvcldpdGhWYWx1ZShiYWNrZW5kLCBkaXJlY3Rp
b24sIHJlcXVlc3QsIHNvdXJjZSwgdHJhbnNhY3Rpb24pKTsKIH0KQEAgLTQ0LDcgKzQ0LDcgQEAg
UGFzc1JlZlB0cjxJREJDdXJzb3JXaXRoVmFsdWU+IElEQkN1cnNvcldpdGhWYWx1ZTo6ZnJvbUN1
cnNvcihQYXNzUmVmUHRyPElEQkN1cnMKICAgICByZXR1cm4gY3Vyc29yV2l0aFZhbHVlLnJlbGVh
c2UoKTsKIH0KIAotSURCQ3Vyc29yV2l0aFZhbHVlOjpJREJDdXJzb3JXaXRoVmFsdWUoUGFzc1Jl
ZlB0cjxJREJDdXJzb3JCYWNrZW5kSW50ZXJmYWNlPiBiYWNrZW5kLCBEaXJlY3Rpb24gZGlyZWN0
aW9uLCBJREJSZXF1ZXN0KiByZXF1ZXN0LCBJREJBbnkqIHNvdXJjZSwgSURCVHJhbnNhY3Rpb24q
IHRyYW5zYWN0aW9uKQorSURCQ3Vyc29yV2l0aFZhbHVlOjpJREJDdXJzb3JXaXRoVmFsdWUoUGFz
c1JlZlB0cjxJREJDdXJzb3JCYWNrZW5kSW50ZXJmYWNlPiBiYWNrZW5kLCBJbmRleGVkREI6OkN1
cnNvckRpcmVjdGlvbiBkaXJlY3Rpb24sIElEQlJlcXVlc3QqIHJlcXVlc3QsIElEQkFueSogc291
cmNlLCBJREJUcmFuc2FjdGlvbiogdHJhbnNhY3Rpb24pCiAgICAgOiBJREJDdXJzb3IoYmFja2Vu
ZCwgZGlyZWN0aW9uLCByZXF1ZXN0LCBzb3VyY2UsIHRyYW5zYWN0aW9uKQogewogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yV2l0aFZhbHVl
LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3JXaXRoVmFsdWUu
aAppbmRleCBjYmI4NTBhMWNkMDJmMGFhMjA5NTJmMmNmZGI4ODhmYzhjMDI4NjUwLi4xNTgyM2Ew
NjI0YTMxZGU5ZjJjMmRkNDNkYzBjOTMzZjRjN2M2MDRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3JXaXRoVmFsdWUuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3JXaXRoVmFsdWUuaApAQCAtMzQsNyAr
MzQsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIElEQkN1cnNvcldpdGhWYWx1ZSA6
IHB1YmxpYyBJREJDdXJzb3IgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPElEQkN1
cnNvcldpdGhWYWx1ZT4gY3JlYXRlKFBhc3NSZWZQdHI8SURCQ3Vyc29yQmFja2VuZEludGVyZmFj
ZT4sIERpcmVjdGlvbiwgSURCUmVxdWVzdCosIElEQkFueSogc291cmNlLCBJREJUcmFuc2FjdGlv
biopOworICAgIHN0YXRpYyBQYXNzUmVmUHRyPElEQkN1cnNvcldpdGhWYWx1ZT4gY3JlYXRlKFBh
c3NSZWZQdHI8SURCQ3Vyc29yQmFja2VuZEludGVyZmFjZT4sIEluZGV4ZWREQjo6Q3Vyc29yRGly
ZWN0aW9uLCBJREJSZXF1ZXN0KiwgSURCQW55KiBzb3VyY2UsIElEQlRyYW5zYWN0aW9uKik7CiAg
ICAgc3RhdGljIFBhc3NSZWZQdHI8SURCQ3Vyc29yV2l0aFZhbHVlPiBmcm9tQ3Vyc29yKFBhc3NS
ZWZQdHI8SURCQ3Vyc29yPik7CiAgICAgdmlydHVhbCB+SURCQ3Vyc29yV2l0aFZhbHVlKCk7CiAK
QEAgLTQ1LDcgKzQ1LDcgQEAgcHJvdGVjdGVkOgogICAgIHZpcnR1YWwgYm9vbCBpc0tleUN1cnNv
cigpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIGZhbHNlOyB9CiAKIHByaXZhdGU6Ci0gICAgSURC
Q3Vyc29yV2l0aFZhbHVlKFBhc3NSZWZQdHI8SURCQ3Vyc29yQmFja2VuZEludGVyZmFjZT4sIERp
cmVjdGlvbiwgSURCUmVxdWVzdCosIElEQkFueSogc291cmNlLCBJREJUcmFuc2FjdGlvbiopOwor
ICAgIElEQkN1cnNvcldpdGhWYWx1ZShQYXNzUmVmUHRyPElEQkN1cnNvckJhY2tlbmRJbnRlcmZh
Y2U+LCBJbmRleGVkREI6OkN1cnNvckRpcmVjdGlvbiwgSURCUmVxdWVzdCosIElEQkFueSogc291
cmNlLCBJREJUcmFuc2FjdGlvbiopOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2UuY3Bw
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2UuY3BwCmluZGV4
IGM5OWE4ZDVjODRmZTE1MjE4ZmIwN2U4ODIzMjQxMGIwMWU5MzcxZDMuLjljZTY2NWJiN2E3YzZk
ZDdhZjk4NGI3NDY4MTViMTgwYjQ0NjRmOWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZS5jcHAKQEAgLTIyNyw3ICsyMjcsNyBAQCBQYXNzUmVm
UHRyPElEQlRyYW5zYWN0aW9uPiBJREJEYXRhYmFzZTo6dHJhbnNhY3Rpb24oU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCogY29udAogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAKLSAgICBJREJUcmFu
c2FjdGlvbjo6TW9kZSBtb2RlID0gSURCVHJhbnNhY3Rpb246OnN0cmluZ1RvTW9kZShtb2RlU3Ry
aW5nLCBjb250ZXh0LCBlYyk7CisgICAgSW5kZXhlZERCOjpUcmFuc2FjdGlvbk1vZGUgbW9kZSA9
IElEQlRyYW5zYWN0aW9uOjpzdHJpbmdUb01vZGUobW9kZVN0cmluZywgY29udGV4dCwgZWMpOwog
ICAgIGlmIChlYykKICAgICAgICAgcmV0dXJuIDA7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZS5oCmluZGV4IGRlMTNiNjdmYmU4ZjBkODZjYTk1NDZh
MmIwMzIzMDAxMmEyMjI5ZTAuLjhkZDUyYzk2MDA1ZjJjMDFmMzBjZTc3ZTE1MDk5MDgyNDkyODUz
ZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFi
YXNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2Uu
aApAQCAtMzEsMTEgKzMxLDExIEBACiAjaW5jbHVkZSAiRGljdGlvbmFyeS5oIgogI2luY2x1ZGUg
IkV2ZW50LmgiCiAjaW5jbHVkZSAiRXZlbnRUYXJnZXQuaCIKLSNpbmNsdWRlICJJREJEYXRhYmFz
ZUJhY2tlbmRJbnRlcmZhY2UuaCIKICNpbmNsdWRlICJJREJEYXRhYmFzZUNhbGxiYWNrcy5oIgog
I2luY2x1ZGUgIklEQk1ldGFkYXRhLmgiCiAjaW5jbHVkZSAiSURCT2JqZWN0U3RvcmUuaCIKICNp
bmNsdWRlICJJREJUcmFuc2FjdGlvbi5oIgorI2luY2x1ZGUgIkluZGV4ZWREQi5oIgogI2luY2x1
ZGUgIlNjcmlwdFdyYXBwYWJsZS5oIgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5j
bHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQmFja2VuZEltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VCYWNrZW5kSW1wbC5jcHAKaW5kZXggOTgwZDE0
ZjRmZTY1OTY2ZTIwNWYxNjQ3MjA3NmRiNTg4NzAwZGE2Ny4uMmMzMDMyMGE1NGYzNGNjMjMyODcx
Y2RjZjdiM2NkYWIxYzQ3Y2M2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvSURCRGF0YWJhc2VCYWNrZW5kSW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VCYWNrZW5kSW1wbC5jcHAKQEAgLTMyLDYgKzMy
LDcgQEAKICNpbmNsdWRlICJJREJDdXJzb3JCYWNrZW5kSW1wbC5oIgogI2luY2x1ZGUgIklEQkRh
dGFiYXNlRXhjZXB0aW9uLmgiCiAjaW5jbHVkZSAiSURCRmFjdG9yeUJhY2tlbmRJbXBsLmgiCisj
aW5jbHVkZSAiSURCS2V5UmFuZ2UuaCIKICNpbmNsdWRlICJJREJPYmplY3RTdG9yZUJhY2tlbmRJ
bXBsLmgiCiAjaW5jbHVkZSAiSURCVHJhY2luZy5oIgogI2luY2x1ZGUgIklEQlRyYW5zYWN0aW9u
QmFja2VuZEltcGwuaCIKQEAgLTIzOCwxMyArMjM5LDEzIEBAIHByaXZhdGU6CiAKIGNsYXNzIEdl
dE9wZXJhdGlvbiA6IHB1YmxpYyBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsOjpPcGVyYXRpb24g
ewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzT3duUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZElt
cGw6Ok9wZXJhdGlvbj4gY3JlYXRlKFBhc3NSZWZQdHI8SURCQmFja2luZ1N0b3JlPiBiYWNraW5n
U3RvcmUsIGNvbnN0IElEQkRhdGFiYXNlTWV0YWRhdGEmIG1ldGFkYXRhLCBpbnQ2NF90IG9iamVj
dFN0b3JlSWQsIGludDY0X3QgaW5kZXhJZCwgUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4ga2V5UmFu
Z2UsIElEQkN1cnNvckJhY2tlbmRJbnRlcmZhY2U6OkN1cnNvclR5cGUgY3Vyc29yVHlwZSwgUGFz
c1JlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcykKKyAgICBzdGF0aWMgUGFzc093blB0cjxJ
REJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsOjpPcGVyYXRpb24+IGNyZWF0ZShQYXNzUmVmUHRyPElE
QkJhY2tpbmdTdG9yZT4gYmFja2luZ1N0b3JlLCBjb25zdCBJREJEYXRhYmFzZU1ldGFkYXRhJiBt
ZXRhZGF0YSwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBpbnQ2NF90IGluZGV4SWQsIFBhc3NSZWZQ
dHI8SURCS2V5UmFuZ2U+IGtleVJhbmdlLCBJbmRleGVkREI6OkN1cnNvclR5cGUgY3Vyc29yVHlw
ZSwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcykKICAgICB7CiAgICAgICAgIHJl
dHVybiBhZG9wdFB0cihuZXcgR2V0T3BlcmF0aW9uKGJhY2tpbmdTdG9yZSwgbWV0YWRhdGEsIG9i
amVjdFN0b3JlSWQsIGluZGV4SWQsIGtleVJhbmdlLCBjdXJzb3JUeXBlLCBjYWxsYmFja3MpKTsK
ICAgICB9CiAgICAgdmlydHVhbCB2b2lkIHBlcmZvcm0oSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1w
bCopOwogcHJpdmF0ZToKLSAgICBHZXRPcGVyYXRpb24oUGFzc1JlZlB0cjxJREJCYWNraW5nU3Rv
cmU+IGJhY2tpbmdTdG9yZSwgY29uc3QgSURCRGF0YWJhc2VNZXRhZGF0YSYgbWV0YWRhdGEsIGlu
dDY0X3Qgb2JqZWN0U3RvcmVJZCwgaW50NjRfdCBpbmRleElkLCBQYXNzUmVmUHRyPElEQktleVJh
bmdlPiBrZXlSYW5nZSwgSURCQ3Vyc29yQmFja2VuZEludGVyZmFjZTo6Q3Vyc29yVHlwZSBjdXJz
b3JUeXBlLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tzKQorICAgIEdldE9wZXJh
dGlvbihQYXNzUmVmUHRyPElEQkJhY2tpbmdTdG9yZT4gYmFja2luZ1N0b3JlLCBjb25zdCBJREJE
YXRhYmFzZU1ldGFkYXRhJiBtZXRhZGF0YSwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBpbnQ2NF90
IGluZGV4SWQsIFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+IGtleVJhbmdlLCBJbmRleGVkREI6OkN1
cnNvclR5cGUgY3Vyc29yVHlwZSwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcykK
ICAgICAgICAgOiBtX2JhY2tpbmdTdG9yZShiYWNraW5nU3RvcmUpCiAgICAgICAgICwgbV9kYXRh
YmFzZUlkKG1ldGFkYXRhLmlkKQogICAgICAgICAsIG1fb2JqZWN0U3RvcmVJZChvYmplY3RTdG9y
ZUlkKQpAQCAtMjY2LDcgKzI2Nyw3IEBAIHByaXZhdGU6CiAgICAgY29uc3QgSURCS2V5UGF0aCBt
X2tleVBhdGg7CiAgICAgY29uc3QgYm9vbCBtX2F1dG9JbmNyZW1lbnQ7CiAgICAgY29uc3QgUmVm
UHRyPElEQktleVJhbmdlPiBtX2tleVJhbmdlOwotICAgIGNvbnN0IElEQkN1cnNvckJhY2tlbmRJ
bnRlcmZhY2U6OkN1cnNvclR5cGUgbV9jdXJzb3JUeXBlOworICAgIGNvbnN0IEluZGV4ZWREQjo6
Q3Vyc29yVHlwZSBtX2N1cnNvclR5cGU7CiAgICAgY29uc3QgUmVmUHRyPElEQkNhbGxiYWNrcz4g
bV9jYWxsYmFja3M7CiB9OwogCkBAIC0zMjAsMTMgKzMyMSwxMyBAQCBwcml2YXRlOgogCiBjbGFz
cyBPcGVuQ3Vyc29yT3BlcmF0aW9uIDogcHVibGljIElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGw6
Ok9wZXJhdGlvbiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NPd25QdHI8SURCVHJhbnNhY3Rp
b25CYWNrZW5kSW1wbDo6T3BlcmF0aW9uPiBjcmVhdGUoUGFzc1JlZlB0cjxJREJCYWNraW5nU3Rv
cmU+IGJhY2tpbmdTdG9yZSwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3Jl
SWQsIGludDY0X3QgaW5kZXhJZCwgUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4ga2V5UmFuZ2UsIHVu
c2lnbmVkIHNob3J0IGRpcmVjdGlvbiwgSURCQ3Vyc29yQmFja2VuZEludGVyZmFjZTo6Q3Vyc29y
VHlwZSBjdXJzb3JUeXBlLCBJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2U6OlRhc2tUeXBlIHRh
c2tUeXBlLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tzKQorICAgIHN0YXRpYyBQ
YXNzT3duUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGw6Ok9wZXJhdGlvbj4gY3JlYXRlKFBh
c3NSZWZQdHI8SURCQmFja2luZ1N0b3JlPiBiYWNraW5nU3RvcmUsIGludDY0X3QgZGF0YWJhc2VJ
ZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBpbnQ2NF90IGluZGV4SWQsIFBhc3NSZWZQdHI8SURC
S2V5UmFuZ2U+IGtleVJhbmdlLCBJbmRleGVkREI6OkN1cnNvckRpcmVjdGlvbiBkaXJlY3Rpb24s
IEluZGV4ZWREQjo6Q3Vyc29yVHlwZSBjdXJzb3JUeXBlLCBJREJEYXRhYmFzZUJhY2tlbmRJbnRl
cmZhY2U6OlRhc2tUeXBlIHRhc2tUeXBlLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gY2FsbGJh
Y2tzKQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBPcGVuQ3Vyc29yT3BlcmF0
aW9uKGJhY2tpbmdTdG9yZSwgZGF0YWJhc2VJZCwgb2JqZWN0U3RvcmVJZCwgaW5kZXhJZCwga2V5
UmFuZ2UsIGRpcmVjdGlvbiwgY3Vyc29yVHlwZSwgdGFza1R5cGUsIGNhbGxiYWNrcykpOwogICAg
IH0KICAgICB2aXJ0dWFsIHZvaWQgcGVyZm9ybShJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsKik7
CiBwcml2YXRlOgotICAgIE9wZW5DdXJzb3JPcGVyYXRpb24oUGFzc1JlZlB0cjxJREJCYWNraW5n
U3RvcmU+IGJhY2tpbmdTdG9yZSwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0
b3JlSWQsIGludDY0X3QgaW5kZXhJZCwgUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4ga2V5UmFuZ2Us
IHVuc2lnbmVkIHNob3J0IGRpcmVjdGlvbiwgSURCQ3Vyc29yQmFja2VuZEludGVyZmFjZTo6Q3Vy
c29yVHlwZSBjdXJzb3JUeXBlLCBJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2U6OlRhc2tUeXBl
IHRhc2tUeXBlLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tzKQorICAgIE9wZW5D
dXJzb3JPcGVyYXRpb24oUGFzc1JlZlB0cjxJREJCYWNraW5nU3RvcmU+IGJhY2tpbmdTdG9yZSwg
aW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGludDY0X3QgaW5kZXhJ
ZCwgUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4ga2V5UmFuZ2UsIEluZGV4ZWREQjo6Q3Vyc29yRGly
ZWN0aW9uIGRpcmVjdGlvbiwgSW5kZXhlZERCOjpDdXJzb3JUeXBlIGN1cnNvclR5cGUsIElEQkRh
dGFiYXNlQmFja2VuZEludGVyZmFjZTo6VGFza1R5cGUgdGFza1R5cGUsIFBhc3NSZWZQdHI8SURC
Q2FsbGJhY2tzPiBjYWxsYmFja3MpCiAgICAgICAgIDogbV9iYWNraW5nU3RvcmUoYmFja2luZ1N0
b3JlKQogICAgICAgICAsIG1fZGF0YWJhc2VJZChkYXRhYmFzZUlkKQogICAgICAgICAsIG1fb2Jq
ZWN0U3RvcmVJZChvYmplY3RTdG9yZUlkKQpAQCAtMzQ0LDggKzM0NSw4IEBAIHByaXZhdGU6CiAg
ICAgY29uc3QgaW50NjRfdCBtX29iamVjdFN0b3JlSWQ7CiAgICAgY29uc3QgaW50NjRfdCBtX2lu
ZGV4SWQ7CiAgICAgY29uc3QgUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4gbV9rZXlSYW5nZTsKLSAg
ICBjb25zdCB1bnNpZ25lZCBzaG9ydCBtX2RpcmVjdGlvbjsKLSAgICBjb25zdCBJREJDdXJzb3JC
YWNrZW5kSW50ZXJmYWNlOjpDdXJzb3JUeXBlIG1fY3Vyc29yVHlwZTsKKyAgICBjb25zdCBJbmRl
eGVkREI6OkN1cnNvckRpcmVjdGlvbiBtX2RpcmVjdGlvbjsKKyAgICBjb25zdCBJbmRleGVkREI6
OkN1cnNvclR5cGUgbV9jdXJzb3JUeXBlOwogICAgIGNvbnN0IElEQkRhdGFiYXNlQmFja2VuZElu
dGVyZmFjZTo6VGFza1R5cGUgbV90YXNrVHlwZTsKICAgICBjb25zdCBSZWZQdHI8SURCQ2FsbGJh
Y2tzPiBtX2NhbGxiYWNrczsKIH07CkBAIC01NTUsNyArNTU2LDcgQEAgdm9pZCBJREJEYXRhYmFz
ZUJhY2tlbmRJbXBsOjpjcmVhdGVPYmplY3RTdG9yZShpbnQ2NF90IHRyYW5zYWN0aW9uSWQsIGlu
dDY0X3Qgb2IKICAgICBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsKiB0cmFuc2FjdGlvbiA9IG1f
dHJhbnNhY3Rpb25zLmdldCh0cmFuc2FjdGlvbklkKTsKICAgICBpZiAoIXRyYW5zYWN0aW9uKQog
ICAgICAgICByZXR1cm47Ci0gICAgQVNTRVJUKHRyYW5zYWN0aW9uLT5tb2RlKCkgPT0gSURCVHJh
bnNhY3Rpb246OlZFUlNJT05fQ0hBTkdFKTsKKyAgICBBU1NFUlQodHJhbnNhY3Rpb24tPm1vZGUo
KSA9PSBJbmRleGVkREI6OlRyYW5zYWN0aW9uVmVyc2lvbkNoYW5nZSk7CiAKICAgICBBU1NFUlQo
IW1fbWV0YWRhdGEub2JqZWN0U3RvcmVzLmNvbnRhaW5zKG9iamVjdFN0b3JlSWQpKTsKICAgICBJ
REJPYmplY3RTdG9yZU1ldGFkYXRhIG9iamVjdFN0b3JlTWV0YWRhdGEobmFtZSwgb2JqZWN0U3Rv
cmVJZCwga2V5UGF0aCwgYXV0b0luY3JlbWVudCwgSURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNl
OjpNaW5pbXVtSW5kZXhJZCk7CkBAIC01ODEsNyArNTgyLDcgQEAgdm9pZCBJREJEYXRhYmFzZUJh
Y2tlbmRJbXBsOjpkZWxldGVPYmplY3RTdG9yZShpbnQ2NF90IHRyYW5zYWN0aW9uSWQsIGludDY0
X3Qgb2IKICAgICBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsKiB0cmFuc2FjdGlvbiA9IG1fdHJh
bnNhY3Rpb25zLmdldCh0cmFuc2FjdGlvbklkKTsKICAgICBpZiAoIXRyYW5zYWN0aW9uKQogICAg
ICAgICByZXR1cm47Ci0gICAgQVNTRVJUKHRyYW5zYWN0aW9uLT5tb2RlKCkgPT0gSURCVHJhbnNh
Y3Rpb246OlZFUlNJT05fQ0hBTkdFKTsKKyAgICBBU1NFUlQodHJhbnNhY3Rpb24tPm1vZGUoKSA9
PSBJbmRleGVkREI6OlRyYW5zYWN0aW9uVmVyc2lvbkNoYW5nZSk7CiAKICAgICBBU1NFUlQobV9t
ZXRhZGF0YS5vYmplY3RTdG9yZXMuY29udGFpbnMob2JqZWN0U3RvcmVJZCkpOwogICAgIGNvbnN0
IElEQk9iamVjdFN0b3JlTWV0YWRhdGEmIG9iamVjdFN0b3JlTWV0YWRhdGEgPSBtX21ldGFkYXRh
Lm9iamVjdFN0b3Jlcy5nZXQob2JqZWN0U3RvcmVJZCk7CkBAIC01OTYsNyArNTk3LDcgQEAgdm9p
ZCBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpjcmVhdGVJbmRleChpbnQ2NF90IHRyYW5zYWN0aW9u
SWQsIGludDY0X3Qgb2JqZWN0U3QKICAgICBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsKiB0cmFu
c2FjdGlvbiA9IG1fdHJhbnNhY3Rpb25zLmdldCh0cmFuc2FjdGlvbklkKTsKICAgICBpZiAoIXRy
YW5zYWN0aW9uKQogICAgICAgICByZXR1cm47Ci0gICAgQVNTRVJUKHRyYW5zYWN0aW9uLT5tb2Rl
KCkgPT0gSURCVHJhbnNhY3Rpb246OlZFUlNJT05fQ0hBTkdFKTsKKyAgICBBU1NFUlQodHJhbnNh
Y3Rpb24tPm1vZGUoKSA9PSBJbmRleGVkREI6OlRyYW5zYWN0aW9uVmVyc2lvbkNoYW5nZSk7CiAK
ICAgICBBU1NFUlQobV9tZXRhZGF0YS5vYmplY3RTdG9yZXMuY29udGFpbnMob2JqZWN0U3RvcmVJ
ZCkpOwogICAgIGNvbnN0IElEQk9iamVjdFN0b3JlTWV0YWRhdGEgb2JqZWN0U3RvcmUgPSBtX21l
dGFkYXRhLm9iamVjdFN0b3Jlcy5nZXQob2JqZWN0U3RvcmVJZCk7CkBAIC02MzEsNyArNjMyLDcg
QEAgdm9pZCBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpkZWxldGVJbmRleChpbnQ2NF90IHRyYW5z
YWN0aW9uSWQsIGludDY0X3Qgb2JqZWN0U3QKICAgICBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBs
KiB0cmFuc2FjdGlvbiA9IG1fdHJhbnNhY3Rpb25zLmdldCh0cmFuc2FjdGlvbklkKTsKICAgICBp
ZiAoIXRyYW5zYWN0aW9uKQogICAgICAgICByZXR1cm47Ci0gICAgQVNTRVJUKHRyYW5zYWN0aW9u
LT5tb2RlKCkgPT0gSURCVHJhbnNhY3Rpb246OlZFUlNJT05fQ0hBTkdFKTsKKyAgICBBU1NFUlQo
dHJhbnNhY3Rpb24tPm1vZGUoKSA9PSBJbmRleGVkREI6OlRyYW5zYWN0aW9uVmVyc2lvbkNoYW5n
ZSk7CiAKICAgICBBU1NFUlQobV9tZXRhZGF0YS5vYmplY3RTdG9yZXMuY29udGFpbnMob2JqZWN0
U3RvcmVJZCkpOwogICAgIGNvbnN0IElEQk9iamVjdFN0b3JlTWV0YWRhdGEgb2JqZWN0U3RvcmUg
PSBtX21ldGFkYXRhLm9iamVjdFN0b3Jlcy5nZXQob2JqZWN0U3RvcmVJZCk7CkBAIC02ODUsNyAr
Njg2LDcgQEAgdm9pZCBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpnZXQoaW50NjRfdCB0cmFuc2Fj
dGlvbklkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGkKICAgICBpZiAoIXRyYW5zYWN0aW9uKQog
ICAgICAgICByZXR1cm47CiAKLSAgICB0cmFuc2FjdGlvbi0+c2NoZWR1bGVUYXNrKEdldE9wZXJh
dGlvbjo6Y3JlYXRlKG1fYmFja2luZ1N0b3JlLCBtX21ldGFkYXRhLCBvYmplY3RTdG9yZUlkLCBp
bmRleElkLCBrZXlSYW5nZSwga2V5T25seSA/IElEQkN1cnNvckJhY2tlbmRJbnRlcmZhY2U6Oktl
eU9ubHkgOiBJREJDdXJzb3JCYWNrZW5kSW50ZXJmYWNlOjpLZXlBbmRWYWx1ZSwgY2FsbGJhY2tz
KSk7CisgICAgdHJhbnNhY3Rpb24tPnNjaGVkdWxlVGFzayhHZXRPcGVyYXRpb246OmNyZWF0ZSht
X2JhY2tpbmdTdG9yZSwgbV9tZXRhZGF0YSwgb2JqZWN0U3RvcmVJZCwgaW5kZXhJZCwga2V5UmFu
Z2UsIGtleU9ubHkgPyBJbmRleGVkREI6OkN1cnNvcktleU9ubHkgOiBJbmRleGVkREI6OkN1cnNv
cktleUFuZFZhbHVlLCBjYWxsYmFja3MpKTsKIH0KIAogdm9pZCBHZXRPcGVyYXRpb246OnBlcmZv
cm0oSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbCogdHJhbnNhY3Rpb24pCkBAIC02OTksMTYgKzcw
MCwxNiBAQCB2b2lkIEdldE9wZXJhdGlvbjo6cGVyZm9ybShJREJUcmFuc2FjdGlvbkJhY2tlbmRJ
bXBsKiB0cmFuc2FjdGlvbikKICAgICBlbHNlIHsKICAgICAgICAgUmVmUHRyPElEQkJhY2tpbmdT
dG9yZTo6Q3Vyc29yPiBiYWNraW5nU3RvcmVDdXJzb3I7CiAgICAgICAgIGlmIChtX2luZGV4SWQg
PT0gSURCSW5kZXhNZXRhZGF0YTo6SW52YWxpZElkKSB7Ci0gICAgICAgICAgICBBU1NFUlQobV9j
dXJzb3JUeXBlICE9IElEQkN1cnNvckJhY2tlbmRJbnRlcmZhY2U6OktleU9ubHkpOworICAgICAg
ICAgICAgQVNTRVJUKG1fY3Vyc29yVHlwZSAhPSBJbmRleGVkREI6OkN1cnNvcktleU9ubHkpOwog
ICAgICAgICAgICAgLy8gT2JqZWN0U3RvcmUgUmV0cmlldmFsIE9wZXJhdGlvbgotICAgICAgICAg
ICAgYmFja2luZ1N0b3JlQ3Vyc29yID0gbV9iYWNraW5nU3RvcmUtPm9wZW5PYmplY3RTdG9yZUN1
cnNvcih0cmFuc2FjdGlvbi0+YmFja2luZ1N0b3JlVHJhbnNhY3Rpb24oKSwgbV9kYXRhYmFzZUlk
LCBtX29iamVjdFN0b3JlSWQsIG1fa2V5UmFuZ2UuZ2V0KCksIElEQkN1cnNvcjo6TkVYVCk7Cisg
ICAgICAgICAgICBiYWNraW5nU3RvcmVDdXJzb3IgPSBtX2JhY2tpbmdTdG9yZS0+b3Blbk9iamVj
dFN0b3JlQ3Vyc29yKHRyYW5zYWN0aW9uLT5iYWNraW5nU3RvcmVUcmFuc2FjdGlvbigpLCBtX2Rh
dGFiYXNlSWQsIG1fb2JqZWN0U3RvcmVJZCwgbV9rZXlSYW5nZS5nZXQoKSwgSW5kZXhlZERCOjpD
dXJzb3JOZXh0KTsKICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGlmIChtX2N1cnNvclR5
cGUgPT0gSURCQ3Vyc29yQmFja2VuZEludGVyZmFjZTo6S2V5T25seSkKKyAgICAgICAgICAgIGlm
IChtX2N1cnNvclR5cGUgPT0gSW5kZXhlZERCOjpDdXJzb3JLZXlPbmx5KQogICAgICAgICAgICAg
ICAgIC8vIEluZGV4IFZhbHVlIFJldHJpZXZhbCBPcGVyYXRpb24KLSAgICAgICAgICAgICAgICBi
YWNraW5nU3RvcmVDdXJzb3IgPSBtX2JhY2tpbmdTdG9yZS0+b3BlbkluZGV4S2V5Q3Vyc29yKHRy
YW5zYWN0aW9uLT5iYWNraW5nU3RvcmVUcmFuc2FjdGlvbigpLCBtX2RhdGFiYXNlSWQsIG1fb2Jq
ZWN0U3RvcmVJZCwgbV9pbmRleElkLCBtX2tleVJhbmdlLmdldCgpLCBJREJDdXJzb3I6Ok5FWFQp
OworICAgICAgICAgICAgICAgIGJhY2tpbmdTdG9yZUN1cnNvciA9IG1fYmFja2luZ1N0b3JlLT5v
cGVuSW5kZXhLZXlDdXJzb3IodHJhbnNhY3Rpb24tPmJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uKCks
IG1fZGF0YWJhc2VJZCwgbV9vYmplY3RTdG9yZUlkLCBtX2luZGV4SWQsIG1fa2V5UmFuZ2UuZ2V0
KCksIEluZGV4ZWREQjo6Q3Vyc29yTmV4dCk7CiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAg
ICAgICAgLy8gSW5kZXggUmVmZXJlbmNlZCBWYWx1ZSBSZXRyaWV2YWwgT3BlcmF0aW9uCi0gICAg
ICAgICAgICAgICAgYmFja2luZ1N0b3JlQ3Vyc29yID0gbV9iYWNraW5nU3RvcmUtPm9wZW5JbmRl
eEN1cnNvcih0cmFuc2FjdGlvbi0+YmFja2luZ1N0b3JlVHJhbnNhY3Rpb24oKSwgbV9kYXRhYmFz
ZUlkLCBtX29iamVjdFN0b3JlSWQsIG1faW5kZXhJZCwgbV9rZXlSYW5nZS5nZXQoKSwgSURCQ3Vy
c29yOjpORVhUKTsKKyAgICAgICAgICAgICAgICBiYWNraW5nU3RvcmVDdXJzb3IgPSBtX2JhY2tp
bmdTdG9yZS0+b3BlbkluZGV4Q3Vyc29yKHRyYW5zYWN0aW9uLT5iYWNraW5nU3RvcmVUcmFuc2Fj
dGlvbigpLCBtX2RhdGFiYXNlSWQsIG1fb2JqZWN0U3RvcmVJZCwgbV9pbmRleElkLCBtX2tleVJh
bmdlLmdldCgpLCBJbmRleGVkREI6OkN1cnNvck5leHQpOwogICAgICAgICB9CiAKICAgICAgICAg
aWYgKCFiYWNraW5nU3RvcmVDdXJzb3IpIHsKQEAgLTc1NSw3ICs3NTYsNyBAQCB2b2lkIEdldE9w
ZXJhdGlvbjo6cGVyZm9ybShJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsKiB0cmFuc2FjdGlvbikK
ICAgICAgICAgbV9jYWxsYmFja3MtPm9uU3VjY2VzcygpOwogICAgICAgICByZXR1cm47CiAgICAg
fQotICAgIGlmIChtX2N1cnNvclR5cGUgPT0gSURCQ3Vyc29yQmFja2VuZEludGVyZmFjZTo6S2V5
T25seSkgeworICAgIGlmIChtX2N1cnNvclR5cGUgPT0gSW5kZXhlZERCOjpDdXJzb3JLZXlPbmx5
KSB7CiAgICAgICAgIC8vIEluZGV4IFZhbHVlIFJldHJpZXZhbCBPcGVyYXRpb24KICAgICAgICAg
bV9jYWxsYmFja3MtPm9uU3VjY2VzcyhwcmltYXJ5S2V5LmdldCgpKTsKICAgICAgICAgcmV0dXJu
OwpAQCAtNzg2LDcgKzc4Nyw3IEBAIHZvaWQgSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6cHV0KGlu
dDY0X3QgdHJhbnNhY3Rpb25JZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBQCiAgICAgSURCVHJh
bnNhY3Rpb25CYWNrZW5kSW1wbCogdHJhbnNhY3Rpb24gPSBtX3RyYW5zYWN0aW9ucy5nZXQodHJh
bnNhY3Rpb25JZCk7CiAgICAgaWYgKCF0cmFuc2FjdGlvbikKICAgICAgICAgcmV0dXJuOwotICAg
IEFTU0VSVCh0cmFuc2FjdGlvbi0+bW9kZSgpICE9IElEQlRyYW5zYWN0aW9uOjpSRUFEX09OTFkp
OworICAgIEFTU0VSVCh0cmFuc2FjdGlvbi0+bW9kZSgpICE9IEluZGV4ZWREQjo6VHJhbnNhY3Rp
b25SZWFkT25seSk7CiAKICAgICBjb25zdCBJREJPYmplY3RTdG9yZU1ldGFkYXRhIG9iamVjdFN0
b3JlTWV0YWRhdGEgPSBtX21ldGFkYXRhLm9iamVjdFN0b3Jlcy5nZXQob2JqZWN0U3RvcmVJZCk7
CiAKQEAgLTc5OCw3ICs3OTksNyBAQCB2b2lkIElEQkRhdGFiYXNlQmFja2VuZEltcGw6OnB1dChp
bnQ2NF90IHRyYW5zYWN0aW9uSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgUAogdm9pZCBQdXRP
cGVyYXRpb246OnBlcmZvcm0oSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbCogdHJhbnNhY3Rpb24p
CiB7CiAgICAgSURCX1RSQUNFKCJQdXRPcGVyYXRpb24iKTsKLSAgICBBU1NFUlQodHJhbnNhY3Rp
b24tPm1vZGUoKSAhPSBJREJUcmFuc2FjdGlvbjo6UkVBRF9PTkxZKTsKKyAgICBBU1NFUlQodHJh
bnNhY3Rpb24tPm1vZGUoKSAhPSBJbmRleGVkREI6OlRyYW5zYWN0aW9uUmVhZE9ubHkpOwogICAg
IEFTU0VSVChtX2luZGV4SWRzLnNpemUoKSA9PSBtX2luZGV4S2V5cy5zaXplKCkpOwogICAgIGJv
b2wga2V5V2FzR2VuZXJhdGVkID0gZmFsc2U7CiAKQEAgLTg3Miw3ICs4NzMsNyBAQCB2b2lkIElE
QkRhdGFiYXNlQmFja2VuZEltcGw6OnNldEluZGV4S2V5cyhpbnQ2NF90IHRyYW5zYWN0aW9uSWQs
IGludDY0X3Qgb2JqZWN0UwogICAgIElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGwqIHRyYW5zYWN0
aW9uID0gbV90cmFuc2FjdGlvbnMuZ2V0KHRyYW5zYWN0aW9uSWQpOwogICAgIGlmICghdHJhbnNh
Y3Rpb24pCiAgICAgICAgIHJldHVybjsKLSAgICBBU1NFUlQodHJhbnNhY3Rpb24tPm1vZGUoKSA9
PSBJREJUcmFuc2FjdGlvbjo6VkVSU0lPTl9DSEFOR0UpOworICAgIEFTU0VSVCh0cmFuc2FjdGlv
bi0+bW9kZSgpID09IEluZGV4ZWREQjo6VHJhbnNhY3Rpb25WZXJzaW9uQ2hhbmdlKTsKIAogICAg
IFJlZlB0cjxJREJLZXk+IHByaW1hcnlLZXkgPSBwcnBQcmltYXJ5S2V5OwogICAgIFJlZlB0cjxJ
REJCYWNraW5nU3RvcmU+IHN0b3JlID0gYmFja2luZ1N0b3JlKCk7CkBAIC05MjksMTQgKzkzMCwx
NCBAQCB2b2lkIFNldEluZGV4ZXNSZWFkeU9wZXJhdGlvbjo6cGVyZm9ybShJREJUcmFuc2FjdGlv
bkJhY2tlbmRJbXBsKiB0cmFuc2FjdGlvbikKICAgICAgICAgdHJhbnNhY3Rpb24tPmRpZENvbXBs
ZXRlUHJlZW1wdGl2ZUV2ZW50KCk7CiB9CiAKLXZvaWQgSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6
b3BlbkN1cnNvcihpbnQ2NF90IHRyYW5zYWN0aW9uSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwg
aW50NjRfdCBpbmRleElkLCBQYXNzUmVmUHRyPElEQktleVJhbmdlPiBrZXlSYW5nZSwgdW5zaWdu
ZWQgc2hvcnQgZGlyZWN0aW9uLCBib29sIGtleU9ubHksIFRhc2tUeXBlIHRhc2tUeXBlLCBQYXNz
UmVmUHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tzKQordm9pZCBJREJEYXRhYmFzZUJhY2tlbmRJ
bXBsOjpvcGVuQ3Vyc29yKGludDY0X3QgdHJhbnNhY3Rpb25JZCwgaW50NjRfdCBvYmplY3RTdG9y
ZUlkLCBpbnQ2NF90IGluZGV4SWQsIFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+IGtleVJhbmdlLCBJ
bmRleGVkREI6OkN1cnNvckRpcmVjdGlvbiBkaXJlY3Rpb24sIGJvb2wga2V5T25seSwgVGFza1R5
cGUgdGFza1R5cGUsIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MpCiB7CiAgICAg
SURCX1RSQUNFKCJJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpvcGVuQ3Vyc29yIik7CiAgICAgSURC
VHJhbnNhY3Rpb25CYWNrZW5kSW1wbCogdHJhbnNhY3Rpb24gPSBtX3RyYW5zYWN0aW9ucy5nZXQo
dHJhbnNhY3Rpb25JZCk7CiAgICAgaWYgKCF0cmFuc2FjdGlvbikKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgdHJhbnNhY3Rpb24tPnNjaGVkdWxlVGFzayhPcGVuQ3Vyc29yT3BlcmF0aW9uOjpjcmVh
dGUobV9iYWNraW5nU3RvcmUsIGlkKCksIG9iamVjdFN0b3JlSWQsIGluZGV4SWQsIGtleVJhbmdl
LCBkaXJlY3Rpb24sIGtleU9ubHkgPyBJREJDdXJzb3JCYWNrZW5kSW50ZXJmYWNlOjpLZXlPbmx5
IDogSURCQ3Vyc29yQmFja2VuZEludGVyZmFjZTo6S2V5QW5kVmFsdWUsIHRhc2tUeXBlLCBjYWxs
YmFja3MpKTsKKyAgICB0cmFuc2FjdGlvbi0+c2NoZWR1bGVUYXNrKE9wZW5DdXJzb3JPcGVyYXRp
b246OmNyZWF0ZShtX2JhY2tpbmdTdG9yZSwgaWQoKSwgb2JqZWN0U3RvcmVJZCwgaW5kZXhJZCwg
a2V5UmFuZ2UsIGRpcmVjdGlvbiwga2V5T25seSA/IEluZGV4ZWREQjo6Q3Vyc29yS2V5T25seSA6
IEluZGV4ZWREQjo6Q3Vyc29yS2V5QW5kVmFsdWUsIHRhc2tUeXBlLCBjYWxsYmFja3MpKTsKIH0K
IAogdm9pZCBPcGVuQ3Vyc29yT3BlcmF0aW9uOjpwZXJmb3JtKElEQlRyYW5zYWN0aW9uQmFja2Vu
ZEltcGwqIHRyYW5zYWN0aW9uKQpAQCAtOTUwLDE3ICs5NTEsMTYgQEAgdm9pZCBPcGVuQ3Vyc29y
T3BlcmF0aW9uOjpwZXJmb3JtKElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGwqIHRyYW5zYWN0aW9u
KQogICAgIGlmIChtX3Rhc2tUeXBlID09IElEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZTo6UHJl
ZW1wdGl2ZVRhc2spCiAgICAgICAgIHRyYW5zYWN0aW9uLT5hZGRQcmVlbXB0aXZlRXZlbnQoKTsK
IAotICAgIElEQkN1cnNvcjo6RGlyZWN0aW9uIGRpcmVjdGlvbiA9IHN0YXRpY19jYXN0PElEQkN1
cnNvcjo6RGlyZWN0aW9uPihtX2RpcmVjdGlvbik7CiAgICAgUmVmUHRyPElEQkJhY2tpbmdTdG9y
ZTo6Q3Vyc29yPiBiYWNraW5nU3RvcmVDdXJzb3I7CiAgICAgaWYgKG1faW5kZXhJZCA9PSBJREJJ
bmRleE1ldGFkYXRhOjpJbnZhbGlkSWQpIHsKLSAgICAgICAgQVNTRVJUKG1fY3Vyc29yVHlwZSAh
PSBJREJDdXJzb3JCYWNrZW5kSW50ZXJmYWNlOjpLZXlPbmx5KTsKLSAgICAgICAgYmFja2luZ1N0
b3JlQ3Vyc29yID0gbV9iYWNraW5nU3RvcmUtPm9wZW5PYmplY3RTdG9yZUN1cnNvcih0cmFuc2Fj
dGlvbi0+YmFja2luZ1N0b3JlVHJhbnNhY3Rpb24oKSwgbV9kYXRhYmFzZUlkLCBtX29iamVjdFN0
b3JlSWQsIG1fa2V5UmFuZ2UuZ2V0KCksIGRpcmVjdGlvbik7CisgICAgICAgIEFTU0VSVChtX2N1
cnNvclR5cGUgIT0gSW5kZXhlZERCOjpDdXJzb3JLZXlPbmx5KTsKKyAgICAgICAgYmFja2luZ1N0
b3JlQ3Vyc29yID0gbV9iYWNraW5nU3RvcmUtPm9wZW5PYmplY3RTdG9yZUN1cnNvcih0cmFuc2Fj
dGlvbi0+YmFja2luZ1N0b3JlVHJhbnNhY3Rpb24oKSwgbV9kYXRhYmFzZUlkLCBtX29iamVjdFN0
b3JlSWQsIG1fa2V5UmFuZ2UuZ2V0KCksIG1fZGlyZWN0aW9uKTsKICAgICB9IGVsc2UgewogICAg
ICAgICBBU1NFUlQobV90YXNrVHlwZSA9PSBJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2U6Ok5v
cm1hbFRhc2spOwotICAgICAgICBpZiAobV9jdXJzb3JUeXBlID09IElEQkN1cnNvckJhY2tlbmRJ
bnRlcmZhY2U6OktleU9ubHkpCi0gICAgICAgICAgICBiYWNraW5nU3RvcmVDdXJzb3IgPSBtX2Jh
Y2tpbmdTdG9yZS0+b3BlbkluZGV4S2V5Q3Vyc29yKHRyYW5zYWN0aW9uLT5iYWNraW5nU3RvcmVU
cmFuc2FjdGlvbigpLCBtX2RhdGFiYXNlSWQsIG1fb2JqZWN0U3RvcmVJZCwgbV9pbmRleElkLCBt
X2tleVJhbmdlLmdldCgpLCBkaXJlY3Rpb24pOworICAgICAgICBpZiAobV9jdXJzb3JUeXBlID09
IEluZGV4ZWREQjo6Q3Vyc29yS2V5T25seSkKKyAgICAgICAgICAgIGJhY2tpbmdTdG9yZUN1cnNv
ciA9IG1fYmFja2luZ1N0b3JlLT5vcGVuSW5kZXhLZXlDdXJzb3IodHJhbnNhY3Rpb24tPmJhY2tp
bmdTdG9yZVRyYW5zYWN0aW9uKCksIG1fZGF0YWJhc2VJZCwgbV9vYmplY3RTdG9yZUlkLCBtX2lu
ZGV4SWQsIG1fa2V5UmFuZ2UuZ2V0KCksIG1fZGlyZWN0aW9uKTsKICAgICAgICAgZWxzZQotICAg
ICAgICAgICAgYmFja2luZ1N0b3JlQ3Vyc29yID0gbV9iYWNraW5nU3RvcmUtPm9wZW5JbmRleEN1
cnNvcih0cmFuc2FjdGlvbi0+YmFja2luZ1N0b3JlVHJhbnNhY3Rpb24oKSwgbV9kYXRhYmFzZUlk
LCBtX29iamVjdFN0b3JlSWQsIG1faW5kZXhJZCwgbV9rZXlSYW5nZS5nZXQoKSwgZGlyZWN0aW9u
KTsKKyAgICAgICAgICAgIGJhY2tpbmdTdG9yZUN1cnNvciA9IG1fYmFja2luZ1N0b3JlLT5vcGVu
SW5kZXhDdXJzb3IodHJhbnNhY3Rpb24tPmJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uKCksIG1fZGF0
YWJhc2VJZCwgbV9vYmplY3RTdG9yZUlkLCBtX2luZGV4SWQsIG1fa2V5UmFuZ2UuZ2V0KCksIG1f
ZGlyZWN0aW9uKTsKICAgICB9CiAKICAgICBpZiAoIWJhY2tpbmdTdG9yZUN1cnNvcikgewpAQCAt
OTkxLDkgKzk5MSw5IEBAIHZvaWQgQ291bnRPcGVyYXRpb246OnBlcmZvcm0oSURCVHJhbnNhY3Rp
b25CYWNrZW5kSW1wbCogdHJhbnNhY3Rpb24pCiAgICAgUmVmUHRyPElEQkJhY2tpbmdTdG9yZTo6
Q3Vyc29yPiBiYWNraW5nU3RvcmVDdXJzb3I7CiAKICAgICBpZiAobV9pbmRleElkID09IElEQklu
ZGV4TWV0YWRhdGE6OkludmFsaWRJZCkKLSAgICAgICAgYmFja2luZ1N0b3JlQ3Vyc29yID0gbV9i
YWNraW5nU3RvcmUtPm9wZW5PYmplY3RTdG9yZUtleUN1cnNvcih0cmFuc2FjdGlvbi0+YmFja2lu
Z1N0b3JlVHJhbnNhY3Rpb24oKSwgbV9kYXRhYmFzZUlkLCBtX29iamVjdFN0b3JlSWQsIG1fa2V5
UmFuZ2UuZ2V0KCksIElEQkN1cnNvcjo6TkVYVCk7CisgICAgICAgIGJhY2tpbmdTdG9yZUN1cnNv
ciA9IG1fYmFja2luZ1N0b3JlLT5vcGVuT2JqZWN0U3RvcmVLZXlDdXJzb3IodHJhbnNhY3Rpb24t
PmJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uKCksIG1fZGF0YWJhc2VJZCwgbV9vYmplY3RTdG9yZUlk
LCBtX2tleVJhbmdlLmdldCgpLCBJbmRleGVkREI6OkN1cnNvck5leHQpOwogICAgIGVsc2UKLSAg
ICAgICAgYmFja2luZ1N0b3JlQ3Vyc29yID0gbV9iYWNraW5nU3RvcmUtPm9wZW5JbmRleEtleUN1
cnNvcih0cmFuc2FjdGlvbi0+YmFja2luZ1N0b3JlVHJhbnNhY3Rpb24oKSwgbV9kYXRhYmFzZUlk
LCBtX29iamVjdFN0b3JlSWQsIG1faW5kZXhJZCwgbV9rZXlSYW5nZS5nZXQoKSwgSURCQ3Vyc29y
OjpORVhUKTsKKyAgICAgICAgYmFja2luZ1N0b3JlQ3Vyc29yID0gbV9iYWNraW5nU3RvcmUtPm9w
ZW5JbmRleEtleUN1cnNvcih0cmFuc2FjdGlvbi0+YmFja2luZ1N0b3JlVHJhbnNhY3Rpb24oKSwg
bV9kYXRhYmFzZUlkLCBtX29iamVjdFN0b3JlSWQsIG1faW5kZXhJZCwgbV9rZXlSYW5nZS5nZXQo
KSwgSW5kZXhlZERCOjpDdXJzb3JOZXh0KTsKICAgICBpZiAoIWJhY2tpbmdTdG9yZUN1cnNvcikg
ewogICAgICAgICBtX2NhbGxiYWNrcy0+b25TdWNjZXNzKGNvdW50KTsKICAgICAgICAgcmV0dXJu
OwpAQCAtMTAxMiw3ICsxMDEyLDcgQEAgdm9pZCBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpkZWxl
dGVSYW5nZShpbnQ2NF90IHRyYW5zYWN0aW9uSWQsIGludDY0X3Qgb2JqZWN0U3QKICAgICBJREJU
cmFuc2FjdGlvbkJhY2tlbmRJbXBsKiB0cmFuc2FjdGlvbiA9IG1fdHJhbnNhY3Rpb25zLmdldCh0
cmFuc2FjdGlvbklkKTsKICAgICBpZiAoIXRyYW5zYWN0aW9uKQogICAgICAgICByZXR1cm47Ci0g
ICAgQVNTRVJUKHRyYW5zYWN0aW9uLT5tb2RlKCkgIT0gSURCVHJhbnNhY3Rpb246OlJFQURfT05M
WSk7CisgICAgQVNTRVJUKHRyYW5zYWN0aW9uLT5tb2RlKCkgIT0gSW5kZXhlZERCOjpUcmFuc2Fj
dGlvblJlYWRPbmx5KTsKIAogICAgIHRyYW5zYWN0aW9uLT5zY2hlZHVsZVRhc2soRGVsZXRlUmFu
Z2VPcGVyYXRpb246OmNyZWF0ZShtX2JhY2tpbmdTdG9yZSwgaWQoKSwgb2JqZWN0U3RvcmVJZCwg
a2V5UmFuZ2UsIGNhbGxiYWNrcykpOwogfQpAQCAtMTAyMCw3ICsxMDIwLDcgQEAgdm9pZCBJREJE
YXRhYmFzZUJhY2tlbmRJbXBsOjpkZWxldGVSYW5nZShpbnQ2NF90IHRyYW5zYWN0aW9uSWQsIGlu
dDY0X3Qgb2JqZWN0U3QKIHZvaWQgRGVsZXRlUmFuZ2VPcGVyYXRpb246OnBlcmZvcm0oSURCVHJh
bnNhY3Rpb25CYWNrZW5kSW1wbCogdHJhbnNhY3Rpb24pCiB7CiAgICAgSURCX1RSQUNFKCJEZWxl
dGVSYW5nZU9wZXJhdGlvbiIpOwotICAgIFJlZlB0cjxJREJCYWNraW5nU3RvcmU6OkN1cnNvcj4g
YmFja2luZ1N0b3JlQ3Vyc29yID0gbV9iYWNraW5nU3RvcmUtPm9wZW5PYmplY3RTdG9yZUN1cnNv
cih0cmFuc2FjdGlvbi0+YmFja2luZ1N0b3JlVHJhbnNhY3Rpb24oKSwgbV9kYXRhYmFzZUlkLCBt
X29iamVjdFN0b3JlSWQsIG1fa2V5UmFuZ2UuZ2V0KCksIElEQkN1cnNvcjo6TkVYVCk7CisgICAg
UmVmUHRyPElEQkJhY2tpbmdTdG9yZTo6Q3Vyc29yPiBiYWNraW5nU3RvcmVDdXJzb3IgPSBtX2Jh
Y2tpbmdTdG9yZS0+b3Blbk9iamVjdFN0b3JlQ3Vyc29yKHRyYW5zYWN0aW9uLT5iYWNraW5nU3Rv
cmVUcmFuc2FjdGlvbigpLCBtX2RhdGFiYXNlSWQsIG1fb2JqZWN0U3RvcmVJZCwgbV9rZXlSYW5n
ZS5nZXQoKSwgSW5kZXhlZERCOjpDdXJzb3JOZXh0KTsKICAgICBpZiAoYmFja2luZ1N0b3JlQ3Vy
c29yKSB7CiAgICAgICAgIGRvIHsKICAgICAgICAgICAgIG1fYmFja2luZ1N0b3JlLT5kZWxldGVS
ZWNvcmQodHJhbnNhY3Rpb24tPmJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uKCksIG1fZGF0YWJhc2VJ
ZCwgbV9vYmplY3RTdG9yZUlkLCBiYWNraW5nU3RvcmVDdXJzb3ItPnJlY29yZElkZW50aWZpZXIo
KSk7CkBAIC0xMDM2LDcgKzEwMzYsNyBAQCB2b2lkIElEQkRhdGFiYXNlQmFja2VuZEltcGw6OmNs
ZWFyKGludDY0X3QgdHJhbnNhY3Rpb25JZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLAogICAgIElE
QlRyYW5zYWN0aW9uQmFja2VuZEltcGwqIHRyYW5zYWN0aW9uID0gbV90cmFuc2FjdGlvbnMuZ2V0
KHRyYW5zYWN0aW9uSWQpOwogICAgIGlmICghdHJhbnNhY3Rpb24pCiAgICAgICAgIHJldHVybjsK
LSAgICBBU1NFUlQodHJhbnNhY3Rpb24tPm1vZGUoKSAhPSBJREJUcmFuc2FjdGlvbjo6UkVBRF9P
TkxZKTsKKyAgICBBU1NFUlQodHJhbnNhY3Rpb24tPm1vZGUoKSAhPSBJbmRleGVkREI6OlRyYW5z
YWN0aW9uUmVhZE9ubHkpOwogCiAgICAgdHJhbnNhY3Rpb24tPnNjaGVkdWxlVGFzayhDbGVhck9w
ZXJhdGlvbjo6Y3JlYXRlKG1fYmFja2luZ1N0b3JlLCBpZCgpLCBvYmplY3RTdG9yZUlkLCBjYWxs
YmFja3MpKTsKIH0KQEAgLTEwNzksNyArMTA3OSw3IEBAIHZvaWQgSURCRGF0YWJhc2VCYWNrZW5k
SW1wbDo6VmVyc2lvbkNoYW5nZU9wZXJhdGlvbjo6cGVyZm9ybShJREJUcmFuc2FjdGlvbkJhY2tl
CiB2b2lkIElEQkRhdGFiYXNlQmFja2VuZEltcGw6OnRyYW5zYWN0aW9uU3RhcnRlZChQYXNzUmVm
UHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGw+IHBycFRyYW5zYWN0aW9uKQogewogICAgIFJl
ZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsPiB0cmFuc2FjdGlvbiA9IHBycFRyYW5zYWN0
aW9uOwotICAgIGlmICh0cmFuc2FjdGlvbi0+bW9kZSgpID09IElEQlRyYW5zYWN0aW9uOjpWRVJT
SU9OX0NIQU5HRSkgeworICAgIGlmICh0cmFuc2FjdGlvbi0+bW9kZSgpID09IEluZGV4ZWREQjo6
VHJhbnNhY3Rpb25WZXJzaW9uQ2hhbmdlKSB7CiAgICAgICAgIEFTU0VSVCghbV9ydW5uaW5nVmVy
c2lvbkNoYW5nZVRyYW5zYWN0aW9uKTsKICAgICAgICAgbV9ydW5uaW5nVmVyc2lvbkNoYW5nZVRy
YW5zYWN0aW9uID0gdHJhbnNhY3Rpb247CiAgICAgfQpAQCAtMTA5MSw3ICsxMDkxLDcgQEAgdm9p
ZCBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjp0cmFuc2FjdGlvbkZpbmlzaGVkKFBhc3NSZWZQdHI8
SURCVHJhbnNhY3Rpb25CYWNrZW4KICAgICBBU1NFUlQobV90cmFuc2FjdGlvbnMuY29udGFpbnMo
dHJhbnNhY3Rpb24tPmlkKCkpKTsKICAgICBBU1NFUlQobV90cmFuc2FjdGlvbnMuZ2V0KHRyYW5z
YWN0aW9uLT5pZCgpKSA9PSB0cmFuc2FjdGlvbi5nZXQoKSk7CiAgICAgbV90cmFuc2FjdGlvbnMu
cmVtb3ZlKHRyYW5zYWN0aW9uLT5pZCgpKTsKLSAgICBpZiAodHJhbnNhY3Rpb24tPm1vZGUoKSA9
PSBJREJUcmFuc2FjdGlvbjo6VkVSU0lPTl9DSEFOR0UpIHsKKyAgICBpZiAodHJhbnNhY3Rpb24t
Pm1vZGUoKSA9PSBJbmRleGVkREI6OlRyYW5zYWN0aW9uVmVyc2lvbkNoYW5nZSkgewogICAgICAg
ICBBU1NFUlQodHJhbnNhY3Rpb24uZ2V0KCkgPT0gbV9ydW5uaW5nVmVyc2lvbkNoYW5nZVRyYW5z
YWN0aW9uLmdldCgpKTsKICAgICAgICAgbV9ydW5uaW5nVmVyc2lvbkNoYW5nZVRyYW5zYWN0aW9u
LmNsZWFyKCk7CiAgICAgfQpAQCAtMTEwMCw3ICsxMTAwLDcgQEAgdm9pZCBJREJEYXRhYmFzZUJh
Y2tlbmRJbXBsOjp0cmFuc2FjdGlvbkZpbmlzaGVkKFBhc3NSZWZQdHI8SURCVHJhbnNhY3Rpb25C
YWNrZW4KIHZvaWQgSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6dHJhbnNhY3Rpb25GaW5pc2hlZEFu
ZEFib3J0RmlyZWQoUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsPiBwcnBUcmFu
c2FjdGlvbikKIHsKICAgICBSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbD4gdHJhbnNh
Y3Rpb24gPSBwcnBUcmFuc2FjdGlvbjsKLSAgICBpZiAodHJhbnNhY3Rpb24tPm1vZGUoKSA9PSBJ
REJUcmFuc2FjdGlvbjo6VkVSU0lPTl9DSEFOR0UpIHsKKyAgICBpZiAodHJhbnNhY3Rpb24tPm1v
ZGUoKSA9PSBJbmRleGVkREI6OlRyYW5zYWN0aW9uVmVyc2lvbkNoYW5nZSkgewogICAgICAgICAv
LyBJZiB0aGlzIHdhcyBhbiBvcGVuLXdpdGgtdmVyc2lvbiBjYWxsLCB0aGVyZSB3aWxsIGJlIGEg
InNlY29uZAogICAgICAgICAvLyBoYWxmIiBvcGVuIGNhbGwgd2FpdGluZyBmb3IgdXMgaW4gcHJv
Y2Vzc1BlbmRpbmdDYWxscy4KICAgICAgICAgLy8gRklYTUU6IFdoZW4gd2Ugbm8gbG9uZ2VyIHN1
cHBvcnQgc2V0VmVyc2lvbiwgYXNzZXJ0IHN1Y2ggYSB0aGluZy4KQEAgLTExMTUsNyArMTExNSw3
IEBAIHZvaWQgSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6dHJhbnNhY3Rpb25GaW5pc2hlZEFuZEFi
b3J0RmlyZWQoUGFzc1JlZlB0cjxJREJUcmFuCiB2b2lkIElEQkRhdGFiYXNlQmFja2VuZEltcGw6
OnRyYW5zYWN0aW9uRmluaXNoZWRBbmRDb21wbGV0ZUZpcmVkKFBhc3NSZWZQdHI8SURCVHJhbnNh
Y3Rpb25CYWNrZW5kSW1wbD4gcHJwVHJhbnNhY3Rpb24pCiB7CiAgICAgUmVmUHRyPElEQlRyYW5z
YWN0aW9uQmFja2VuZEltcGw+IHRyYW5zYWN0aW9uID0gcHJwVHJhbnNhY3Rpb247Ci0gICAgaWYg
KHRyYW5zYWN0aW9uLT5tb2RlKCkgPT0gSURCVHJhbnNhY3Rpb246OlZFUlNJT05fQ0hBTkdFKQor
ICAgIGlmICh0cmFuc2FjdGlvbi0+bW9kZSgpID09IEluZGV4ZWREQjo6VHJhbnNhY3Rpb25WZXJz
aW9uQ2hhbmdlKQogICAgICAgICBwcm9jZXNzUGVuZGluZ0NhbGxzKCk7CiB9CiAKQEAgLTExNjUs
NyArMTE2NSw3IEBAIHZvaWQgSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6cHJvY2Vzc1BlbmRpbmdD
YWxscygpCiAKIHZvaWQgSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6Y3JlYXRlVHJhbnNhY3Rpb24o
aW50NjRfdCB0cmFuc2FjdGlvbklkLCBQYXNzUmVmUHRyPElEQkRhdGFiYXNlQ2FsbGJhY2tzPiBj
YWxsYmFja3MsIGNvbnN0IFZlY3RvcjxpbnQ2NF90PiYgb2JqZWN0U3RvcmVJZHMsIHVuc2lnbmVk
IHNob3J0IG1vZGUpCiB7Ci0gICAgUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGw+IHRy
YW5zYWN0aW9uID0gSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbDo6Y3JlYXRlKHRyYW5zYWN0aW9u
SWQsIGNhbGxiYWNrcywgb2JqZWN0U3RvcmVJZHMsIHN0YXRpY19jYXN0PElEQlRyYW5zYWN0aW9u
OjpNb2RlPihtb2RlKSwgdGhpcyk7CisgICAgUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZElt
cGw+IHRyYW5zYWN0aW9uID0gSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbDo6Y3JlYXRlKHRyYW5z
YWN0aW9uSWQsIGNhbGxiYWNrcywgb2JqZWN0U3RvcmVJZHMsIHN0YXRpY19jYXN0PEluZGV4ZWRE
Qjo6VHJhbnNhY3Rpb25Nb2RlPihtb2RlKSwgdGhpcyk7CiAgICAgQVNTRVJUKCFtX3RyYW5zYWN0
aW9ucy5jb250YWlucyh0cmFuc2FjdGlvbklkKSk7CiAgICAgbV90cmFuc2FjdGlvbnMuYWRkKHRy
YW5zYWN0aW9uSWQsIHRyYW5zYWN0aW9uLmdldCgpKTsKIH0KQEAgLTEyNTcsNyArMTI1Nyw3IEBA
IHZvaWQgSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6cnVuSW50VmVyc2lvbkNoYW5nZVRyYW5zYWN0
aW9uKFBhc3NSZWZQdHI8SURCQ2FsbGJhCiAgICAgfQogCiAgICAgVmVjdG9yPGludDY0X3Q+IG9i
amVjdFN0b3JlSWRzOwotICAgIGNyZWF0ZVRyYW5zYWN0aW9uKHRyYW5zYWN0aW9uSWQsIGRhdGFi
YXNlQ2FsbGJhY2tzLCBvYmplY3RTdG9yZUlkcywgSURCVHJhbnNhY3Rpb246OlZFUlNJT05fQ0hB
TkdFKTsKKyAgICBjcmVhdGVUcmFuc2FjdGlvbih0cmFuc2FjdGlvbklkLCBkYXRhYmFzZUNhbGxi
YWNrcywgb2JqZWN0U3RvcmVJZHMsIEluZGV4ZWREQjo6VHJhbnNhY3Rpb25WZXJzaW9uQ2hhbmdl
KTsKICAgICBSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbD4gdHJhbnNhY3Rpb24gPSBt
X3RyYW5zYWN0aW9ucy5nZXQodHJhbnNhY3Rpb25JZCk7CiAKICAgICB0cmFuc2FjdGlvbi0+c2No
ZWR1bGVUYXNrKFZlcnNpb25DaGFuZ2VPcGVyYXRpb246OmNyZWF0ZSh0aGlzLCB0cmFuc2FjdGlv
bklkLCByZXF1ZXN0ZWRWZXJzaW9uLCBjYWxsYmFja3MsIGRhdGFiYXNlQ2FsbGJhY2tzKSwgVmVy
c2lvbkNoYW5nZUFib3J0T3BlcmF0aW9uOjpjcmVhdGUodGhpcywgbV9tZXRhZGF0YS52ZXJzaW9u
LCBtX21ldGFkYXRhLmludFZlcnNpb24pKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQmFja2VuZEltcGwuaCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQmFja2VuZEltcGwuaAppbmRleCAxZWJjODc4
MTJlNWFlOTZkZmRiNTg3N2QxZGYzYjk1YWI5YjMwMzZkLi4zNTNiZmEwOTMxODlkMWQ4NGJkZmEw
NjkxOTk3NzVkNTgwMTVjYjkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmRJbXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VCYWNrZW5kSW1wbC5oCkBAIC0yNyw3ICsyNyw3IEBA
CiAjZGVmaW5lIElEQkRhdGFiYXNlQmFja2VuZEltcGxfaAogCiAjaW5jbHVkZSAiSURCQ2FsbGJh
Y2tzLmgiCi0jaW5jbHVkZSAiSURCRGF0YWJhc2UuaCIKKyNpbmNsdWRlICJJREJNZXRhZGF0YS5o
IgogI2luY2x1ZGUgPHN0ZGludC5oPgogI2luY2x1ZGUgPHd0Zi9EZXF1ZS5oPgogI2luY2x1ZGUg
PHd0Zi9IYXNoTWFwLmg+CkBAIC04NCw3ICs4NCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZv
aWQgcHV0KGludDY0X3QgdHJhbnNhY3Rpb25JZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBQYXNz
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gdmFsdWUsIFBhc3NSZWZQdHI8SURCS2V5PiwgUHV0TW9kZSwg
UGFzc1JlZlB0cjxJREJDYWxsYmFja3M+LCBjb25zdCBWZWN0b3I8aW50NjRfdD4mIGluZGV4SWRz
LCBjb25zdCBWZWN0b3I8SW5kZXhLZXlzPiYpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBz
ZXRJbmRleEtleXMoaW50NjRfdCB0cmFuc2FjdGlvbklkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQs
IFBhc3NSZWZQdHI8SURCS2V5PiBwcnBQcmltYXJ5S2V5LCBjb25zdCBWZWN0b3I8aW50NjRfdD4m
IGluZGV4SWRzLCBjb25zdCBWZWN0b3I8SW5kZXhLZXlzPiYpIE9WRVJSSURFOwogICAgIHZpcnR1
YWwgdm9pZCBzZXRJbmRleGVzUmVhZHkoaW50NjRfdCB0cmFuc2FjdGlvbklkLCBpbnQ2NF90IG9i
amVjdFN0b3JlSWQsIGNvbnN0IFZlY3RvcjxpbnQ2NF90PiYgaW5kZXhJZHMpIE9WRVJSSURFOwot
ICAgIHZpcnR1YWwgdm9pZCBvcGVuQ3Vyc29yKGludDY0X3QgdHJhbnNhY3Rpb25JZCwgaW50NjRf
dCBvYmplY3RTdG9yZUlkLCBpbnQ2NF90IGluZGV4SWQsIFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+
LCB1bnNpZ25lZCBzaG9ydCBkaXJlY3Rpb24sIGJvb2wga2V5T25seSwgVGFza1R5cGUsIFBhc3NS
ZWZQdHI8SURCQ2FsbGJhY2tzPikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIG9wZW5DdXJz
b3IoaW50NjRfdCB0cmFuc2FjdGlvbklkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGludDY0X3Qg
aW5kZXhJZCwgUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4sIEluZGV4ZWREQjo6Q3Vyc29yRGlyZWN0
aW9uLCBib29sIGtleU9ubHksIFRhc2tUeXBlLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4pIE9W
RVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBjb3VudChpbnQ2NF90IHRyYW5zYWN0aW9uSWQsIGlu
dDY0X3Qgb2JqZWN0U3RvcmVJZCwgaW50NjRfdCBpbmRleElkLCBQYXNzUmVmUHRyPElEQktleVJh
bmdlPiwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+KSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZv
aWQgZGVsZXRlUmFuZ2UoaW50NjRfdCB0cmFuc2FjdGlvbklkLCBpbnQ2NF90IG9iamVjdFN0b3Jl
SWQsIFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+LCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4pIE9W
RVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBjbGVhcihpbnQ2NF90IHRyYW5zYWN0aW9uSWQsIGlu
dDY0X3Qgb2JqZWN0U3RvcmVJZCwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+KSBPVkVSUklERTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNl
QmFja2VuZEludGVyZmFjZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURC
RGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlLmgKaW5kZXggZTAwMTRlYjNlMmRjYzJhM2Y0MzQyNTA3
NDQ1NzkzMDViNzE2N2M0Ni4uM2U1MWNjMDZhMjIzOWFjZThlNzk4YzRhODM2MDM2NGFmMGEyOTQw
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJh
c2VCYWNrZW5kSW50ZXJmYWNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvSURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlLmgKQEAgLTI2LDcgKzI2LDggQEAKICNpZm5k
ZWYgSURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlX2gKICNkZWZpbmUgSURCRGF0YWJhc2VCYWNr
ZW5kSW50ZXJmYWNlX2gKIAotI2luY2x1ZGUgIklEQlRyYW5zYWN0aW9uLmgiCisjaW5jbHVkZSAi
SURCRGF0YWJhc2VFcnJvci5oIgorI2luY2x1ZGUgIkluZGV4ZWREQi5oIgogI2luY2x1ZGUgPHd0
Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3
dGYvdGV4dC9XVEZTdHJpbmcuaD4KQEAgLTg1LDcgKzg2LDcgQEAgcHVibGljOgogICAgIHZpcnR1
YWwgdm9pZCBwdXQoaW50NjRfdCB0cmFuc2FjdGlvbklkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQs
IFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiB2YWx1ZSwgUGFzc1JlZlB0cjxJREJLZXk+LCBQdXRN
b2RlLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4sIGNvbnN0IFZlY3RvcjxpbnQ2NF90PiYgaW5k
ZXhJZHMsIGNvbnN0IFZlY3RvcjxJbmRleEtleXM+JikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBz
ZXRJbmRleEtleXMoaW50NjRfdCB0cmFuc2FjdGlvbklkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQs
IFBhc3NSZWZQdHI8SURCS2V5PiBwcnBQcmltYXJ5S2V5LCBjb25zdCBWZWN0b3I8aW50NjRfdD4m
IGluZGV4SWRzLCBjb25zdCBWZWN0b3I8SW5kZXhLZXlzPiYpID0gMDsKICAgICB2aXJ0dWFsIHZv
aWQgc2V0SW5kZXhlc1JlYWR5KGludDY0X3QgdHJhbnNhY3Rpb25JZCwgaW50NjRfdCBvYmplY3RT
dG9yZUlkLCBjb25zdCBWZWN0b3I8aW50NjRfdD4mIGluZGV4SWRzKSA9IDA7Ci0gICAgdmlydHVh
bCB2b2lkIG9wZW5DdXJzb3IoaW50NjRfdCB0cmFuc2FjdGlvbklkLCBpbnQ2NF90IG9iamVjdFN0
b3JlSWQsIGludDY0X3QgaW5kZXhJZCwgUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4sIHVuc2lnbmVk
IHNob3J0IGRpcmVjdGlvbiwgYm9vbCBrZXlPbmx5LCBUYXNrVHlwZSwgUGFzc1JlZlB0cjxJREJD
YWxsYmFja3M+KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIG9wZW5DdXJzb3IoaW50NjRfdCB0cmFu
c2FjdGlvbklkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGludDY0X3QgaW5kZXhJZCwgUGFzc1Jl
ZlB0cjxJREJLZXlSYW5nZT4sIEluZGV4ZWREQjo6Q3Vyc29yRGlyZWN0aW9uLCBib29sIGtleU9u
bHksIFRhc2tUeXBlLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4pID0gMDsKICAgICB2aXJ0dWFs
IHZvaWQgY291bnQoaW50NjRfdCB0cmFuc2FjdGlvbklkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQs
IGludDY0X3QgaW5kZXhJZCwgUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4sIFBhc3NSZWZQdHI8SURC
Q2FsbGJhY2tzPikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkZWxldGVSYW5nZShpbnQ2NF90IHRy
YW5zYWN0aW9uSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgUGFzc1JlZlB0cjxJREJLZXlSYW5n
ZT4sIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBjbGVh
cihpbnQ2NF90IHRyYW5zYWN0aW9uSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgUGFzc1JlZlB0
cjxJREJDYWxsYmFja3M+KSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9JREJGYWN0b3J5LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9JREJGYWN0b3J5LmgKaW5kZXggY2IxYjdiMGIzNzZiN2FhNmQ4NDljNjg0OGIzMGUzZTFjZTYw
MmVmOC4uY2M2MWNkN2M2ZmJkMTJlNGUwOWE3N2VjOWRkMGRhMjBjZmU3NzBiOSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRmFjdG9yeS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkZhY3RvcnkuaApAQCAtMjgsNyArMjgs
NiBAQAogI2lmbmRlZiBJREJGYWN0b3J5X2gKICNkZWZpbmUgSURCRmFjdG9yeV9oCiAKLSNpbmNs
dWRlICJJREJGYWN0b3J5QmFja2VuZEludGVyZmFjZS5oIgogI2luY2x1ZGUgIklEQk9wZW5EQlJl
cXVlc3QuaCIKICNpbmNsdWRlICJTY3JpcHRXcmFwcGFibGUuaCIKICNpbmNsdWRlIDx3dGYvUGFz
c1JlZlB0ci5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
SURCSW5kZXguY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCSW5kZXgu
Y3BwCmluZGV4IGJlYjk4MzZhNTRlYWE4OWE1Yzg3YjJhNTkxNzY4OTIzN2VjMjQyMGUuLmZmNWQ0
MzY3YjgzYjkwODViODM5YTc0NmI4NmNiODYwNjNhZmIxODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkluZGV4LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJJbmRleC5jcHAKQEAgLTI4LDcgKzI4LDYgQEAKIAogI2lm
IEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQogCi0jaW5jbHVkZSAiSURCQ3Vyc29yQmFja2VuZElu
dGVyZmFjZS5oIgogI2luY2x1ZGUgIklEQkRhdGFiYXNlRXhjZXB0aW9uLmgiCiAjaW5jbHVkZSAi
SURCS2V5LmgiCiAjaW5jbHVkZSAiSURCS2V5UmFuZ2UuaCIKQEAgLTQwLDcgKzM5LDcgQEAKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCi1zdGF0aWMgY29uc3QgdW5zaWduZWQgc2hvcnQgZGVmYXVs
dERpcmVjdGlvbiA9IElEQkN1cnNvcjo6TkVYVDsKK3N0YXRpYyBjb25zdCB1bnNpZ25lZCBzaG9y
dCBkZWZhdWx0RGlyZWN0aW9uID0gSW5kZXhlZERCOjpDdXJzb3JOZXh0OwogCiBJREJJbmRleDo6
SURCSW5kZXgoY29uc3QgSURCSW5kZXhNZXRhZGF0YSYgbWV0YWRhdGEsIElEQk9iamVjdFN0b3Jl
KiBvYmplY3RTdG9yZSwgSURCVHJhbnNhY3Rpb24qIHRyYW5zYWN0aW9uKQogICAgIDogbV9tZXRh
ZGF0YShtZXRhZGF0YSkKQEAgLTY4LDEyICs2NywxMiBAQCBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+
IElEQkluZGV4OjpvcGVuQ3Vyc29yKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFBh
cwogICAgICAgICBlYyA9IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpUcmFuc2FjdGlvbkluYWN0aXZl
RXJyb3I7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KLSAgICBJREJDdXJzb3I6OkRpcmVjdGlv
biBkaXJlY3Rpb24gPSBJREJDdXJzb3I6OnN0cmluZ1RvRGlyZWN0aW9uKGRpcmVjdGlvblN0cmlu
ZywgY29udGV4dCwgZWMpOworICAgIEluZGV4ZWREQjo6Q3Vyc29yRGlyZWN0aW9uIGRpcmVjdGlv
biA9IElEQkN1cnNvcjo6c3RyaW5nVG9EaXJlY3Rpb24oZGlyZWN0aW9uU3RyaW5nLCBjb250ZXh0
LCBlYyk7CiAgICAgaWYgKGVjKQogICAgICAgICByZXR1cm4gMDsKIAogICAgIFJlZlB0cjxJREJS
ZXF1ZXN0PiByZXF1ZXN0ID0gSURCUmVxdWVzdDo6Y3JlYXRlKGNvbnRleHQsIElEQkFueTo6Y3Jl
YXRlKHRoaXMpLCBtX3RyYW5zYWN0aW9uLmdldCgpKTsKLSAgICByZXF1ZXN0LT5zZXRDdXJzb3JE
ZXRhaWxzKElEQkN1cnNvckJhY2tlbmRJbnRlcmZhY2U6OktleUFuZFZhbHVlLCBkaXJlY3Rpb24p
OworICAgIHJlcXVlc3QtPnNldEN1cnNvckRldGFpbHMoSW5kZXhlZERCOjpDdXJzb3JLZXlBbmRW
YWx1ZSwgZGlyZWN0aW9uKTsKICAgICBiYWNrZW5kREIoKS0+b3BlbkN1cnNvcihtX3RyYW5zYWN0
aW9uLT5pZCgpLCBtX29iamVjdFN0b3JlLT5pZCgpLCBtX21ldGFkYXRhLmlkLCBrZXlSYW5nZSwg
ZGlyZWN0aW9uLCBmYWxzZSwgSURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlOjpOb3JtYWxUYXNr
LCByZXF1ZXN0KTsKICAgICByZXR1cm4gcmVxdWVzdDsKIH0KQEAgLTEyMywxMiArMTIyLDEyIEBA
IFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gSURCSW5kZXg6Om9wZW5LZXlDdXJzb3IoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCogY29udGV4dCwKICAgICAgICAgZWMgPSBJREJEYXRhYmFzZUV4Y2VwdGlv
bjo6VHJhbnNhY3Rpb25JbmFjdGl2ZUVycm9yOwogICAgICAgICByZXR1cm4gMDsKICAgICB9Ci0g
ICAgSURCQ3Vyc29yOjpEaXJlY3Rpb24gZGlyZWN0aW9uID0gSURCQ3Vyc29yOjpzdHJpbmdUb0Rp
cmVjdGlvbihkaXJlY3Rpb25TdHJpbmcsIGNvbnRleHQsIGVjKTsKKyAgICBJbmRleGVkREI6OkN1
cnNvckRpcmVjdGlvbiBkaXJlY3Rpb24gPSBJREJDdXJzb3I6OnN0cmluZ1RvRGlyZWN0aW9uKGRp
cmVjdGlvblN0cmluZywgY29udGV4dCwgZWMpOwogICAgIGlmIChlYykKICAgICAgICAgcmV0dXJu
IDA7CiAKICAgICBSZWZQdHI8SURCUmVxdWVzdD4gcmVxdWVzdCA9IElEQlJlcXVlc3Q6OmNyZWF0
ZShjb250ZXh0LCBJREJBbnk6OmNyZWF0ZSh0aGlzKSwgbV90cmFuc2FjdGlvbi5nZXQoKSk7Ci0g
ICAgcmVxdWVzdC0+c2V0Q3Vyc29yRGV0YWlscyhJREJDdXJzb3JCYWNrZW5kSW50ZXJmYWNlOjpL
ZXlPbmx5LCBkaXJlY3Rpb24pOworICAgIHJlcXVlc3QtPnNldEN1cnNvckRldGFpbHMoSW5kZXhl
ZERCOjpDdXJzb3JLZXlPbmx5LCBkaXJlY3Rpb24pOwogICAgIGJhY2tlbmREQigpLT5vcGVuQ3Vy
c29yKG1fdHJhbnNhY3Rpb24tPmlkKCksIG1fb2JqZWN0U3RvcmUtPmlkKCksIG1fbWV0YWRhdGEu
aWQsIGtleVJhbmdlLCBkaXJlY3Rpb24sIHRydWUsIElEQkRhdGFiYXNlQmFja2VuZEludGVyZmFj
ZTo6Tm9ybWFsVGFzaywgcmVxdWVzdCk7CiAgICAgcmV0dXJuIHJlcXVlc3Q7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZS5jcHAKaW5k
ZXggZmFhNWNiZTI2MWNjYjA0ZDRjODkzOTdkNmNmYzNiMmZlMjdhOGEzZi4uNTg5MGVjMzdmYzFj
MjU3ZGVhZDJmZmU1ZmVlODYxMzdlMDdiZTUyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlLmNwcApAQCAtMzEsNyArMzEsNiBAQAog
I2luY2x1ZGUgIkRPTVN0cmluZ0xpc3QuaCIKICNpbmNsdWRlICJJREJBbnkuaCIKICNpbmNsdWRl
ICJJREJCaW5kaW5nVXRpbGl0aWVzLmgiCi0jaW5jbHVkZSAiSURCQ3Vyc29yQmFja2VuZEludGVy
ZmFjZS5oIgogI2luY2x1ZGUgIklEQkN1cnNvcldpdGhWYWx1ZS5oIgogI2luY2x1ZGUgIklEQkRh
dGFiYXNlLmgiCiAjaW5jbHVkZSAiSURCRGF0YWJhc2VFeGNlcHRpb24uaCIKQEAgLTQ4LDcgKzQ3
LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1zdGF0aWMgY29uc3QgdW5zaWduZWQgc2hv
cnQgZGVmYXVsdERpcmVjdGlvbiA9IElEQkN1cnNvcjo6TkVYVDsKK3N0YXRpYyBjb25zdCB1bnNp
Z25lZCBzaG9ydCBkZWZhdWx0RGlyZWN0aW9uID0gSW5kZXhlZERCOjpDdXJzb3JOZXh0OwogCiBJ
REJPYmplY3RTdG9yZTo6SURCT2JqZWN0U3RvcmUoY29uc3QgSURCT2JqZWN0U3RvcmVNZXRhZGF0
YSYgbWV0YWRhdGEsIElEQlRyYW5zYWN0aW9uKiB0cmFuc2FjdGlvbikKICAgICA6IG1fbWV0YWRh
dGEobWV0YWRhdGEpCkBAIC01MDUsMTIgKzUwNCwxMiBAQCBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+
IElEQk9iamVjdFN0b3JlOjpvcGVuQ3Vyc29yKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRl
eAogICAgICAgICBlYyA9IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpUcmFuc2FjdGlvbkluYWN0aXZl
RXJyb3I7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KLSAgICBJREJDdXJzb3I6OkRpcmVjdGlv
biBkaXJlY3Rpb24gPSBJREJDdXJzb3I6OnN0cmluZ1RvRGlyZWN0aW9uKGRpcmVjdGlvblN0cmlu
ZywgY29udGV4dCwgZWMpOworICAgIEluZGV4ZWREQjo6Q3Vyc29yRGlyZWN0aW9uIGRpcmVjdGlv
biA9IElEQkN1cnNvcjo6c3RyaW5nVG9EaXJlY3Rpb24oZGlyZWN0aW9uU3RyaW5nLCBjb250ZXh0
LCBlYyk7CiAgICAgaWYgKGVjKQogICAgICAgICByZXR1cm4gMDsKIAogICAgIFJlZlB0cjxJREJS
ZXF1ZXN0PiByZXF1ZXN0ID0gSURCUmVxdWVzdDo6Y3JlYXRlKGNvbnRleHQsIElEQkFueTo6Y3Jl
YXRlKHRoaXMpLCBtX3RyYW5zYWN0aW9uLmdldCgpKTsKLSAgICByZXF1ZXN0LT5zZXRDdXJzb3JE
ZXRhaWxzKElEQkN1cnNvckJhY2tlbmRJbnRlcmZhY2U6OktleUFuZFZhbHVlLCBkaXJlY3Rpb24p
OworICAgIHJlcXVlc3QtPnNldEN1cnNvckRldGFpbHMoSW5kZXhlZERCOjpDdXJzb3JLZXlBbmRW
YWx1ZSwgZGlyZWN0aW9uKTsKIAogICAgIGJhY2tlbmREQigpLT5vcGVuQ3Vyc29yKG1fdHJhbnNh
Y3Rpb24tPmlkKCksIGlkKCksIElEQkluZGV4TWV0YWRhdGE6OkludmFsaWRJZCwgcmFuZ2UsIGRp
cmVjdGlvbiwgZmFsc2UsIHN0YXRpY19jYXN0PElEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZTo6
VGFza1R5cGU+KHRhc2tUeXBlKSwgcmVxdWVzdCk7CiAgICAgcmV0dXJuIHJlcXVlc3QucmVsZWFz
ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCUmVx
dWVzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJSZXF1ZXN0LmNw
cAppbmRleCAyYjEzNDM5MTE4NDM0M2FlOWNmYTA0ODUzODAzZjA3MTU5YTg2MzRiLi42NjVlM2Zm
YWViN2YyYjQzM2Q3NWE3ZjhkNDZlN2ZhYmEwODY2YzJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJSZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJSZXF1ZXN0LmNwcApAQCAtMzcsNiArMzcsNyBAQAogI2lu
Y2x1ZGUgIkV2ZW50UXVldWUuaCIKICNpbmNsdWRlICJFeGNlcHRpb25Db2RlUGxhY2Vob2xkZXIu
aCIKICNpbmNsdWRlICJJREJCaW5kaW5nVXRpbGl0aWVzLmgiCisjaW5jbHVkZSAiSURCQ3Vyc29y
QmFja2VuZEludGVyZmFjZS5oIgogI2luY2x1ZGUgIklEQkN1cnNvcldpdGhWYWx1ZS5oIgogI2lu
Y2x1ZGUgIklEQkRhdGFiYXNlLmgiCiAjaW5jbHVkZSAiSURCRXZlbnREaXNwYXRjaGVyLmgiCkBA
IC03Nyw4ICs3OCw4IEBAIElEQlJlcXVlc3Q6OklEQlJlcXVlc3QoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCogY29udGV4dCwgUGFzc1JlZlB0cjxJREJBbnk+IHNvdXJjCiAgICAgLCBtX3NvdXJjZShz
b3VyY2UpCiAgICAgLCBtX3Rhc2tUeXBlKHRhc2tUeXBlKQogICAgICwgbV9oYXNQZW5kaW5nQWN0
aXZpdHkodHJ1ZSkKLSAgICAsIG1fY3Vyc29yVHlwZShJREJDdXJzb3JCYWNrZW5kSW50ZXJmYWNl
OjpLZXlBbmRWYWx1ZSkKLSAgICAsIG1fY3Vyc29yRGlyZWN0aW9uKElEQkN1cnNvcjo6TkVYVCkK
KyAgICAsIG1fY3Vyc29yVHlwZShJbmRleGVkREI6OkN1cnNvcktleUFuZFZhbHVlKQorICAgICwg
bV9jdXJzb3JEaXJlY3Rpb24oSW5kZXhlZERCOjpDdXJzb3JOZXh0KQogICAgICwgbV9jdXJzb3JG
aW5pc2hlZChmYWxzZSkKICAgICAsIG1fcGVuZGluZ0N1cnNvcigwKQogICAgICwgbV9kaWRGaXJl
VXBncmFkZU5lZWRlZEV2ZW50KGZhbHNlKQpAQCAtMTg1LDcgKzE4Niw3IEBAIHZvaWQgSURCUmVx
dWVzdDo6YWJvcnQoKQogICAgIG1fcmVxdWVzdEFib3J0ZWQgPSB0cnVlOwogfQogCi12b2lkIElE
QlJlcXVlc3Q6OnNldEN1cnNvckRldGFpbHMoSURCQ3Vyc29yQmFja2VuZEludGVyZmFjZTo6Q3Vy
c29yVHlwZSBjdXJzb3JUeXBlLCBJREJDdXJzb3I6OkRpcmVjdGlvbiBkaXJlY3Rpb24pCit2b2lk
IElEQlJlcXVlc3Q6OnNldEN1cnNvckRldGFpbHMoSW5kZXhlZERCOjpDdXJzb3JUeXBlIGN1cnNv
clR5cGUsIEluZGV4ZWREQjo6Q3Vyc29yRGlyZWN0aW9uIGRpcmVjdGlvbikKIHsKICAgICBBU1NF
UlQobV9yZWFkeVN0YXRlID09IFBFTkRJTkcpOwogICAgIEFTU0VSVCghbV9wZW5kaW5nQ3Vyc29y
KTsKQEAgLTIyOCw3ICsyMjksNyBAQCB2b2lkIElEQlJlcXVlc3Q6OnNldFJlc3VsdEN1cnNvcihQ
YXNzUmVmUHRyPElEQkN1cnNvcj4gY3Vyc29yLCBQYXNzUmVmUHRyPElEQktleQogICAgIG1fY3Vy
c29yUHJpbWFyeUtleSA9IHByaW1hcnlLZXk7CiAgICAgbV9jdXJzb3JWYWx1ZSA9IHZhbHVlOwog
Ci0gICAgaWYgKG1fY3Vyc29yVHlwZSA9PSBJREJDdXJzb3JCYWNrZW5kSW50ZXJmYWNlOjpLZXlP
bmx5KSB7CisgICAgaWYgKG1fY3Vyc29yVHlwZSA9PSBJbmRleGVkREI6OkN1cnNvcktleU9ubHkp
IHsKICAgICAgICAgbV9yZXN1bHQgPSBJREJBbnk6OmNyZWF0ZShjdXJzb3IpOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQpAQCAtMjk0LDEwICsyOTUsMTAgQEAgdm9pZCBJREJSZXF1ZXN0OjpvblN1
Y2Nlc3MoUGFzc1JlZlB0cjxJREJDdXJzb3JCYWNrZW5kSW50ZXJmYWNlPiBiYWNrZW5kLCBQYXNz
UmUKICAgICBBU1NFUlQoIW1fcGVuZGluZ0N1cnNvcik7CiAgICAgUmVmUHRyPElEQkN1cnNvcj4g
Y3Vyc29yOwogICAgIHN3aXRjaCAobV9jdXJzb3JUeXBlKSB7Ci0gICAgY2FzZSBJREJDdXJzb3JC
YWNrZW5kSW50ZXJmYWNlOjpLZXlPbmx5OgorICAgIGNhc2UgSW5kZXhlZERCOjpDdXJzb3JLZXlP
bmx5OgogICAgICAgICBjdXJzb3IgPSBJREJDdXJzb3I6OmNyZWF0ZShiYWNrZW5kLCBtX2N1cnNv
ckRpcmVjdGlvbiwgdGhpcywgbV9zb3VyY2UuZ2V0KCksIG1fdHJhbnNhY3Rpb24uZ2V0KCkpOwog
ICAgICAgICBicmVhazsKLSAgICBjYXNlIElEQkN1cnNvckJhY2tlbmRJbnRlcmZhY2U6OktleUFu
ZFZhbHVlOgorICAgIGNhc2UgSW5kZXhlZERCOjpDdXJzb3JLZXlBbmRWYWx1ZToKICAgICAgICAg
Y3Vyc29yID0gSURCQ3Vyc29yV2l0aFZhbHVlOjpjcmVhdGUoYmFja2VuZCwgbV9jdXJzb3JEaXJl
Y3Rpb24sIHRoaXMsIG1fc291cmNlLmdldCgpLCBtX3RyYW5zYWN0aW9uLmdldCgpKTsKICAgICAg
ICAgYnJlYWs7CiAgICAgZGVmYXVsdDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL0lEQlJlcXVlc3QuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL0lEQlJlcXVlc3QuaAppbmRleCBkMDY3ZWIyOWE4ODU1NzkyYzBjMTI1NTc3NWNkMDI0ODg4
Yzk1MWI1Li5iODMwNjQwNzAwM2MxMjBiYmExNzYzODI0YjhkMmE5Mzk2Y2ZhMjc4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJSZXF1ZXN0LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCUmVxdWVzdC5oCkBAIC00Miw3ICs0
Miw2IEBACiAjaW5jbHVkZSAiSURCQW55LmgiCiAjaW5jbHVkZSAiSURCQ2FsbGJhY2tzLmgiCiAj
aW5jbHVkZSAiSURCQ3Vyc29yLmgiCi0jaW5jbHVkZSAiSURCQ3Vyc29yQmFja2VuZEludGVyZmFj
ZS5oIgogI2luY2x1ZGUgIlNjcmlwdFdyYXBwYWJsZS5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CkBAIC03OCw3ICs3Nyw3IEBAIHB1YmxpYzoKICAgICBERUZJTkVfQVRUUklCVVRFX0VWRU5UX0xJ
U1RFTkVSKGVycm9yKTsKIAogICAgIHZvaWQgbWFya0Vhcmx5RGVhdGgoKTsKLSAgICB2b2lkIHNl
dEN1cnNvckRldGFpbHMoSURCQ3Vyc29yQmFja2VuZEludGVyZmFjZTo6Q3Vyc29yVHlwZSwgSURC
Q3Vyc29yOjpEaXJlY3Rpb24pOworICAgIHZvaWQgc2V0Q3Vyc29yRGV0YWlscyhJbmRleGVkREI6
OkN1cnNvclR5cGUsIEluZGV4ZWREQjo6Q3Vyc29yRGlyZWN0aW9uKTsKICAgICB2b2lkIHNldFBl
bmRpbmdDdXJzb3IoUGFzc1JlZlB0cjxJREJDdXJzb3I+KTsKICAgICB2b2lkIGZpbmlzaEN1cnNv
cigpOwogICAgIHZvaWQgYWJvcnQoKTsKQEAgLTE0OSw4ICsxNDgsOCBAQCBwcml2YXRlOgogICAg
IFZlY3RvcjxSZWZQdHI8RXZlbnQ+ID4gbV9lbnF1ZXVlZEV2ZW50czsKIAogICAgIC8vIE9ubHkg
dXNlZCBpZiB0aGUgcmVzdWx0IHR5cGUgd2lsbCBiZSBhIGN1cnNvci4KLSAgICBJREJDdXJzb3JC
YWNrZW5kSW50ZXJmYWNlOjpDdXJzb3JUeXBlIG1fY3Vyc29yVHlwZTsKLSAgICBJREJDdXJzb3I6
OkRpcmVjdGlvbiBtX2N1cnNvckRpcmVjdGlvbjsKKyAgICBJbmRleGVkREI6OkN1cnNvclR5cGUg
bV9jdXJzb3JUeXBlOworICAgIEluZGV4ZWREQjo6Q3Vyc29yRGlyZWN0aW9uIG1fY3Vyc29yRGly
ZWN0aW9uOwogICAgIGJvb2wgbV9jdXJzb3JGaW5pc2hlZDsKICAgICBSZWZQdHI8SURCQ3Vyc29y
PiBtX3BlbmRpbmdDdXJzb3I7CiAgICAgUmVmUHRyPElEQktleT4gbV9jdXJzb3JLZXk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5jcHAK
aW5kZXggYmMwZWRkZGY4NDEwM2ZjY2UyZGZlZDEzYjJkYTIzYjQyMzQ5NjdjMy4uZjU1NTk0M2Q4
MDMzZDg4MDk1ODM1NjM4MjVhZGYwYTUxNjRiZDI0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmNwcApAQCAtNDQsNyArNDQsNyBA
QAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVBhc3NSZWZQdHI8SURCVHJhbnNhY3Rpb24+IElE
QlRyYW5zYWN0aW9uOjpjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgaW50
NjRfdCBpZCwgY29uc3QgVmVjdG9yPFN0cmluZz4mIG9iamVjdFN0b3JlTmFtZXMsIElEQlRyYW5z
YWN0aW9uOjpNb2RlIG1vZGUsIElEQkRhdGFiYXNlKiBkYikKK1Bhc3NSZWZQdHI8SURCVHJhbnNh
Y3Rpb24+IElEQlRyYW5zYWN0aW9uOjpjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29u
dGV4dCwgaW50NjRfdCBpZCwgY29uc3QgVmVjdG9yPFN0cmluZz4mIG9iamVjdFN0b3JlTmFtZXMs
IEluZGV4ZWREQjo6VHJhbnNhY3Rpb25Nb2RlIG1vZGUsIElEQkRhdGFiYXNlKiBkYikKIHsKICAg
ICBJREJPcGVuREJSZXF1ZXN0KiBvcGVuREJSZXF1ZXN0ID0gMDsKICAgICBSZWZQdHI8SURCVHJh
bnNhY3Rpb24+IHRyYW5zYWN0aW9uKGFkb3B0UmVmKG5ldyBJREJUcmFuc2FjdGlvbihjb250ZXh0
LCBpZCwgb2JqZWN0U3RvcmVOYW1lcywgbW9kZSwgZGIsIG9wZW5EQlJlcXVlc3QsIElEQkRhdGFi
YXNlTWV0YWRhdGEoKSkpKTsKQEAgLTU0LDcgKzU0LDcgQEAgUGFzc1JlZlB0cjxJREJUcmFuc2Fj
dGlvbj4gSURCVHJhbnNhY3Rpb246OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250
ZXgKIAogUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbj4gSURCVHJhbnNhY3Rpb246OmNyZWF0ZShT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBpbnQ2NF90IGlkLCBJREJEYXRhYmFzZSog
ZGIsIElEQk9wZW5EQlJlcXVlc3QqIG9wZW5EQlJlcXVlc3QsIGNvbnN0IElEQkRhdGFiYXNlTWV0
YWRhdGEmIHByZXZpb3VzTWV0YWRhdGEpCiB7Ci0gICAgUmVmUHRyPElEQlRyYW5zYWN0aW9uPiB0
cmFuc2FjdGlvbihhZG9wdFJlZihuZXcgSURCVHJhbnNhY3Rpb24oY29udGV4dCwgaWQsIFZlY3Rv
cjxTdHJpbmc+KCksIFZFUlNJT05fQ0hBTkdFLCBkYiwgb3BlbkRCUmVxdWVzdCwgcHJldmlvdXNN
ZXRhZGF0YSkpKTsKKyAgICBSZWZQdHI8SURCVHJhbnNhY3Rpb24+IHRyYW5zYWN0aW9uKGFkb3B0
UmVmKG5ldyBJREJUcmFuc2FjdGlvbihjb250ZXh0LCBpZCwgVmVjdG9yPFN0cmluZz4oKSwgSW5k
ZXhlZERCOjpUcmFuc2FjdGlvblZlcnNpb25DaGFuZ2UsIGRiLCBvcGVuREJSZXF1ZXN0LCBwcmV2
aW91c01ldGFkYXRhKSkpOwogICAgIHRyYW5zYWN0aW9uLT5zdXNwZW5kSWZOZWVkZWQoKTsKICAg
ICByZXR1cm4gdHJhbnNhY3Rpb24ucmVsZWFzZSgpOwogfQpAQCAtOTAsNyArOTAsNyBAQCBjb25z
dCBBdG9taWNTdHJpbmcmIElEQlRyYW5zYWN0aW9uOjptb2RlUmVhZFdyaXRlTGVnYWN5KCkKIH0K
IAogCi1JREJUcmFuc2FjdGlvbjo6SURCVHJhbnNhY3Rpb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCogY29udGV4dCwgaW50NjRfdCBpZCwgY29uc3QgVmVjdG9yPFN0cmluZz4mIG9iamVjdFN0b3Jl
TmFtZXMsIElEQlRyYW5zYWN0aW9uOjpNb2RlIG1vZGUsIElEQkRhdGFiYXNlKiBkYiwgSURCT3Bl
bkRCUmVxdWVzdCogb3BlbkRCUmVxdWVzdCwgY29uc3QgSURCRGF0YWJhc2VNZXRhZGF0YSYgcHJl
dmlvdXNNZXRhZGF0YSkKK0lEQlRyYW5zYWN0aW9uOjpJREJUcmFuc2FjdGlvbihTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiBjb250ZXh0LCBpbnQ2NF90IGlkLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYg
b2JqZWN0U3RvcmVOYW1lcywgSW5kZXhlZERCOjpUcmFuc2FjdGlvbk1vZGUgbW9kZSwgSURCRGF0
YWJhc2UqIGRiLCBJREJPcGVuREJSZXF1ZXN0KiBvcGVuREJSZXF1ZXN0LCBjb25zdCBJREJEYXRh
YmFzZU1ldGFkYXRhJiBwcmV2aW91c01ldGFkYXRhKQogICAgIDogQWN0aXZlRE9NT2JqZWN0KGNv
bnRleHQsIHRoaXMpCiAgICAgLCBtX2lkKGlkKQogICAgICwgbV9kYXRhYmFzZShkYikKQEAgLTEw
Miw3ICsxMDIsNyBAQCBJREJUcmFuc2FjdGlvbjo6SURCVHJhbnNhY3Rpb24oU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCogY29udGV4dCwgaW50NjRfdCBpZCwgY29ucwogICAgICwgbV9jb250ZXh0U3Rv
cHBlZChmYWxzZSkKICAgICAsIG1fcHJldmlvdXNNZXRhZGF0YShwcmV2aW91c01ldGFkYXRhKQog
ewotICAgIGlmIChtb2RlID09IFZFUlNJT05fQ0hBTkdFKSB7CisgICAgaWYgKG1vZGUgPT0gSW5k
ZXhlZERCOjpUcmFuc2FjdGlvblZlcnNpb25DaGFuZ2UpIHsKICAgICAgICAgLy8gTm90IGFjdGl2
ZSB1bnRpbCB0aGUgY2FsbGJhY2suCiAgICAgICAgIG1fc3RhdGUgPSBJbmFjdGl2ZTsKICAgICB9
CkBAIC0zMzYsMzAgKzMzNiwzMCBAQCBib29sIElEQlRyYW5zYWN0aW9uOjpoYXNQZW5kaW5nQWN0
aXZpdHkoKSBjb25zdAogICAgIHJldHVybiBtX2hhc1BlbmRpbmdBY3Rpdml0eTsKIH0KIAotSURC
VHJhbnNhY3Rpb246Ok1vZGUgSURCVHJhbnNhY3Rpb246OnN0cmluZ1RvTW9kZShjb25zdCBTdHJp
bmcmIG1vZGVTdHJpbmcsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIEV4Y2VwdGlv
bkNvZGUmIGVjKQorSW5kZXhlZERCOjpUcmFuc2FjdGlvbk1vZGUgSURCVHJhbnNhY3Rpb246OnN0
cmluZ1RvTW9kZShjb25zdCBTdHJpbmcmIG1vZGVTdHJpbmcsIFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqIGNvbnRleHQsIEV4Y2VwdGlvbkNvZGUmIGVjKQogewogICAgIGlmIChtb2RlU3RyaW5nLmlz
TnVsbCgpCiAgICAgICAgIHx8IG1vZGVTdHJpbmcgPT0gSURCVHJhbnNhY3Rpb246Om1vZGVSZWFk
T25seSgpKQotICAgICAgICByZXR1cm4gSURCVHJhbnNhY3Rpb246OlJFQURfT05MWTsKKyAgICAg
ICAgcmV0dXJuIEluZGV4ZWREQjo6VHJhbnNhY3Rpb25SZWFkT25seTsKICAgICBpZiAobW9kZVN0
cmluZyA9PSBJREJUcmFuc2FjdGlvbjo6bW9kZVJlYWRXcml0ZSgpKQotICAgICAgICByZXR1cm4g
SURCVHJhbnNhY3Rpb246OlJFQURfV1JJVEU7CisgICAgICAgIHJldHVybiBJbmRleGVkREI6OlRy
YW5zYWN0aW9uUmVhZFdyaXRlOwogCiAgICAgZWMgPSBUeXBlRXJyb3I7Ci0gICAgcmV0dXJuIElE
QlRyYW5zYWN0aW9uOjpSRUFEX09OTFk7CisgICAgcmV0dXJuIEluZGV4ZWREQjo6VHJhbnNhY3Rp
b25SZWFkT25seTsKIH0KIAotY29uc3QgQXRvbWljU3RyaW5nJiBJREJUcmFuc2FjdGlvbjo6bW9k
ZVRvU3RyaW5nKElEQlRyYW5zYWN0aW9uOjpNb2RlIG1vZGUpCitjb25zdCBBdG9taWNTdHJpbmcm
IElEQlRyYW5zYWN0aW9uOjptb2RlVG9TdHJpbmcoSW5kZXhlZERCOjpUcmFuc2FjdGlvbk1vZGUg
bW9kZSkKIHsKICAgICBzd2l0Y2ggKG1vZGUpIHsKLSAgICBjYXNlIElEQlRyYW5zYWN0aW9uOjpS
RUFEX09OTFk6CisgICAgY2FzZSBJbmRleGVkREI6OlRyYW5zYWN0aW9uUmVhZE9ubHk6CiAgICAg
ICAgIHJldHVybiBJREJUcmFuc2FjdGlvbjo6bW9kZVJlYWRPbmx5KCk7CiAgICAgICAgIGJyZWFr
OwogCi0gICAgY2FzZSBJREJUcmFuc2FjdGlvbjo6UkVBRF9XUklURToKKyAgICBjYXNlIEluZGV4
ZWREQjo6VHJhbnNhY3Rpb25SZWFkV3JpdGU6CiAgICAgICAgIHJldHVybiBJREJUcmFuc2FjdGlv
bjo6bW9kZVJlYWRXcml0ZSgpOwogICAgICAgICBicmVhazsKIAotICAgIGNhc2UgSURCVHJhbnNh
Y3Rpb246OlZFUlNJT05fQ0hBTkdFOgorICAgIGNhc2UgSW5kZXhlZERCOjpUcmFuc2FjdGlvblZl
cnNpb25DaGFuZ2U6CiAgICAgICAgIHJldHVybiBJREJUcmFuc2FjdGlvbjo6bW9kZVZlcnNpb25D
aGFuZ2UoKTsKICAgICAgICAgYnJlYWs7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5oCmluZGV4IDY5NzUwZWI3MzllNjgwN2RiMTE4N2Rj
MGU2Yzg0NGZjODUwMTJiMjcuLmY0ZDY0Y2I3ZDEzZmUzNTMyNTZjNmUxNWU3Mjk3OWU1MjU1NzU5
NzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5z
YWN0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNh
Y3Rpb24uaApAQCAtMzUsNiArMzUsNyBAQAogI2luY2x1ZGUgIkV2ZW50TmFtZXMuaCIKICNpbmNs
dWRlICJFdmVudFRhcmdldC5oIgogI2luY2x1ZGUgIklEQk1ldGFkYXRhLmgiCisjaW5jbHVkZSAi
SW5kZXhlZERCLmgiCiAjaW5jbHVkZSAiU2NyaXB0V3JhcHBhYmxlLmgiCiAjaW5jbHVkZSA8d3Rm
L0hhc2hTZXQuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgpAQCAtNTEsMTMgKzUyLDcg
QEAgc3RydWN0IElEQk9iamVjdFN0b3JlTWV0YWRhdGE7CiAKIGNsYXNzIElEQlRyYW5zYWN0aW9u
IDogcHVibGljIFNjcmlwdFdyYXBwYWJsZSwgcHVibGljIFJlZkNvdW50ZWQ8SURCVHJhbnNhY3Rp
b24+LCBwdWJsaWMgRXZlbnRUYXJnZXQsIHB1YmxpYyBBY3RpdmVET01PYmplY3QgewogcHVibGlj
OgotICAgIGVudW0gTW9kZSB7Ci0gICAgICAgIFJFQURfT05MWSA9IDAsCi0gICAgICAgIFJFQURf
V1JJVEUgPSAxLAotICAgICAgICBWRVJTSU9OX0NIQU5HRSA9IDIKLSAgICB9OwotCi0gICAgc3Rh
dGljIFBhc3NSZWZQdHI8SURCVHJhbnNhY3Rpb24+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiwgaW50NjRfdCwgY29uc3QgVmVjdG9yPFN0cmluZz4mIG9iamVjdFN0b3JlTmFtZXMsIE1v
ZGUsIElEQkRhdGFiYXNlKik7CisgICAgc3RhdGljIFBhc3NSZWZQdHI8SURCVHJhbnNhY3Rpb24+
IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgaW50NjRfdCwgY29uc3QgVmVjdG9yPFN0
cmluZz4mIG9iamVjdFN0b3JlTmFtZXMsIEluZGV4ZWREQjo6VHJhbnNhY3Rpb25Nb2RlLCBJREJE
YXRhYmFzZSopOwogICAgIHN0YXRpYyBQYXNzUmVmUHRyPElEQlRyYW5zYWN0aW9uPiBjcmVhdGUo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGludDY0X3QsIElEQkRhdGFiYXNlKiwgSURCT3BlbkRC
UmVxdWVzdCosIGNvbnN0IElEQkRhdGFiYXNlTWV0YWRhdGEmIHByZXZpb3VzTWV0YWRhdGEpOwog
ICAgIHZpcnR1YWwgfklEQlRyYW5zYWN0aW9uKCk7CiAKQEAgLTY3LDE2ICs2MiwxNiBAQCBwdWJs
aWM6CiAgICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYgbW9kZVJlYWRPbmx5TGVnYWN5KCk7
CiAgICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYgbW9kZVJlYWRXcml0ZUxlZ2FjeSgpOwog
Ci0gICAgc3RhdGljIE1vZGUgc3RyaW5nVG9Nb2RlKGNvbnN0IFN0cmluZyYsIFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqLCBFeGNlcHRpb25Db2RlJik7Ci0gICAgc3RhdGljIGNvbnN0IEF0b21pY1N0
cmluZyYgbW9kZVRvU3RyaW5nKE1vZGUpOworICAgIHN0YXRpYyBJbmRleGVkREI6OlRyYW5zYWN0
aW9uTW9kZSBzdHJpbmdUb01vZGUoY29uc3QgU3RyaW5nJiwgU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCosIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiBtb2Rl
VG9TdHJpbmcoSW5kZXhlZERCOjpUcmFuc2FjdGlvbk1vZGUpOwogCiAgICAgSURCRGF0YWJhc2VC
YWNrZW5kSW50ZXJmYWNlKiBiYWNrZW5kREIoKSBjb25zdDsKIAogICAgIGludDY0X3QgaWQoKSBj
b25zdCB7IHJldHVybiBtX2lkOyB9CiAgICAgYm9vbCBpc0FjdGl2ZSgpIGNvbnN0IHsgcmV0dXJu
IG1fc3RhdGUgPT0gQWN0aXZlOyB9CiAgICAgYm9vbCBpc0ZpbmlzaGVkKCkgY29uc3QgeyByZXR1
cm4gbV9zdGF0ZSA9PSBGaW5pc2hlZDsgfQotICAgIGJvb2wgaXNSZWFkT25seSgpIGNvbnN0IHsg
cmV0dXJuIG1fbW9kZSA9PSBSRUFEX09OTFk7IH0KLSAgICBib29sIGlzVmVyc2lvbkNoYW5nZSgp
IGNvbnN0IHsgcmV0dXJuIG1fbW9kZSA9PSBWRVJTSU9OX0NIQU5HRTsgfQorICAgIGJvb2wgaXNS
ZWFkT25seSgpIGNvbnN0IHsgcmV0dXJuIG1fbW9kZSA9PSBJbmRleGVkREI6OlRyYW5zYWN0aW9u
UmVhZE9ubHk7IH0KKyAgICBib29sIGlzVmVyc2lvbkNoYW5nZSgpIGNvbnN0IHsgcmV0dXJuIG1f
bW9kZSA9PSBJbmRleGVkREI6OlRyYW5zYWN0aW9uVmVyc2lvbkNoYW5nZTsgfQogCiAgICAgLy8g
SW1wbGVtZW50IHRoZSBJREJUcmFuc2FjdGlvbiBJREwKICAgICBjb25zdCBTdHJpbmcmIG1vZGUo
KSBjb25zdDsKQEAgLTEyNiw3ICsxMjEsNyBAQCBwdWJsaWM6CiAgICAgdXNpbmcgUmVmQ291bnRl
ZDxJREJUcmFuc2FjdGlvbj46OmRlcmVmOwogCiBwcml2YXRlOgotICAgIElEQlRyYW5zYWN0aW9u
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBpbnQ2NF90LCBjb25zdCBWZWN0b3I8U3RyaW5nPiYs
IE1vZGUsIElEQkRhdGFiYXNlKiwgSURCT3BlbkRCUmVxdWVzdCosIGNvbnN0IElEQkRhdGFiYXNl
TWV0YWRhdGEmKTsKKyAgICBJREJUcmFuc2FjdGlvbihTY3JpcHRFeGVjdXRpb25Db250ZXh0Kiwg
aW50NjRfdCwgY29uc3QgVmVjdG9yPFN0cmluZz4mLCBJbmRleGVkREI6OlRyYW5zYWN0aW9uTW9k
ZSwgSURCRGF0YWJhc2UqLCBJREJPcGVuREJSZXF1ZXN0KiwgY29uc3QgSURCRGF0YWJhc2VNZXRh
ZGF0YSYpOwogCiAgICAgdm9pZCBlbnF1ZXVlRXZlbnQoUGFzc1JlZlB0cjxFdmVudD4pOwogICAg
IHZvaWQgY2xvc2VPcGVuQ3Vyc29ycygpOwpAQCAtMTUxLDcgKzE0Niw3IEBAIHByaXZhdGU6CiAg
ICAgUmVmUHRyPElEQkRhdGFiYXNlPiBtX2RhdGFiYXNlOwogICAgIGNvbnN0IFZlY3RvcjxTdHJp
bmc+IG1fb2JqZWN0U3RvcmVOYW1lczsKICAgICBJREJPcGVuREJSZXF1ZXN0KiBtX29wZW5EQlJl
cXVlc3Q7Ci0gICAgY29uc3QgTW9kZSBtX21vZGU7CisgICAgY29uc3QgSW5kZXhlZERCOjpUcmFu
c2FjdGlvbk1vZGUgbV9tb2RlOwogICAgIFN0YXRlIG1fc3RhdGU7CiAgICAgYm9vbCBtX2hhc1Bl
bmRpbmdBY3Rpdml0eTsKICAgICBib29sIG1fY29udGV4dFN0b3BwZWQ7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBs
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uQmFj
a2VuZEltcGwuY3BwCmluZGV4IDdmZTgzYjIzZDJlY2JmZjc2MDJlMzJiNGViMTllZDFiYWM4NmFl
NmYuLjY1NjI1NTc3MDYxMTJmMzkxNjAyY2Y1MGY2OTI3ZWJkZTQ4OWM4YzkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uQmFja2VuZElt
cGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0
aW9uQmFja2VuZEltcGwuY3BwCkBAIC0zMSwxMyArMzEsMTQgQEAKICNpbmNsdWRlICJJREJCYWNr
aW5nU3RvcmUuaCIKICNpbmNsdWRlICJJREJDdXJzb3JCYWNrZW5kSW1wbC5oIgogI2luY2x1ZGUg
IklEQkRhdGFiYXNlQmFja2VuZEltcGwuaCIKKyNpbmNsdWRlICJJREJEYXRhYmFzZUNhbGxiYWNr
cy5oIgogI2luY2x1ZGUgIklEQkRhdGFiYXNlRXhjZXB0aW9uLmgiCiAjaW5jbHVkZSAiSURCVHJh
Y2luZy5oIgogI2luY2x1ZGUgIklEQlRyYW5zYWN0aW9uQ29vcmRpbmF0b3IuaCIKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCi1QYXNzUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGw+IElE
QlRyYW5zYWN0aW9uQmFja2VuZEltcGw6OmNyZWF0ZShpbnQ2NF90IGlkLCBQYXNzUmVmUHRyPElE
QkRhdGFiYXNlQ2FsbGJhY2tzPiBjYWxsYmFja3MsIGNvbnN0IFZlY3RvcjxpbnQ2NF90PiYgb2Jq
ZWN0U3RvcmVJZHMsIElEQlRyYW5zYWN0aW9uOjpNb2RlIG1vZGUsIElEQkRhdGFiYXNlQmFja2Vu
ZEltcGwqIGRhdGFiYXNlKQorUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsPiBJ
REJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsOjpjcmVhdGUoaW50NjRfdCBpZCwgUGFzc1JlZlB0cjxJ
REJEYXRhYmFzZUNhbGxiYWNrcz4gY2FsbGJhY2tzLCBjb25zdCBWZWN0b3I8aW50NjRfdD4mIG9i
amVjdFN0b3JlSWRzLCBJbmRleGVkREI6OlRyYW5zYWN0aW9uTW9kZSBtb2RlLCBJREJEYXRhYmFz
ZUJhY2tlbmRJbXBsKiBkYXRhYmFzZSkKIHsKICAgICBIYXNoU2V0PGludDY0X3Q+IG9iamVjdFN0
b3JlSGFzaFNldDsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG9iamVjdFN0b3JlSWRzLnNp
emUoKTsgKytpKQpAQCAtNDYsNyArNDcsNyBAQCBQYXNzUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFj
a2VuZEltcGw+IElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGw6OmNyZWF0ZShpbnQ2NF90CiAgICAg
cmV0dXJuIGFkb3B0UmVmKG5ldyBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsKGlkLCBjYWxsYmFj
a3MsIG9iamVjdFN0b3JlSGFzaFNldCwgbW9kZSwgZGF0YWJhc2UpKTsKIH0KIAotSURCVHJhbnNh
Y3Rpb25CYWNrZW5kSW1wbDo6SURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbChpbnQ2NF90IGlkLCBQ
YXNzUmVmUHRyPElEQkRhdGFiYXNlQ2FsbGJhY2tzPiBjYWxsYmFja3MsIGNvbnN0IEhhc2hTZXQ8
aW50NjRfdD4mIG9iamVjdFN0b3JlSWRzLCBJREJUcmFuc2FjdGlvbjo6TW9kZSBtb2RlLCBJREJE
YXRhYmFzZUJhY2tlbmRJbXBsKiBkYXRhYmFzZSkKK0lEQlRyYW5zYWN0aW9uQmFja2VuZEltcGw6
OklEQlRyYW5zYWN0aW9uQmFja2VuZEltcGwoaW50NjRfdCBpZCwgUGFzc1JlZlB0cjxJREJEYXRh
YmFzZUNhbGxiYWNrcz4gY2FsbGJhY2tzLCBjb25zdCBIYXNoU2V0PGludDY0X3Q+JiBvYmplY3RT
dG9yZUlkcywgSW5kZXhlZERCOjpUcmFuc2FjdGlvbk1vZGUgbW9kZSwgSURCRGF0YWJhc2VCYWNr
ZW5kSW1wbCogZGF0YWJhc2UpCiAgICAgOiBtX2lkKGlkKQogICAgICwgbV9vYmplY3RTdG9yZUlk
cyhvYmplY3RTdG9yZUlkcykKICAgICAsIG1fbW9kZShtb2RlKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbC5oIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1w
bC5oCmluZGV4IDNjZWY5NzYyYWUxMDI3ZTg4ODRlOTgyNmY0NzkxZjYzNjRhMzRiMDYuLmU2MThm
YTA2ODhhOWMwZGRjOWY5YTFhNzhjZGQ5MmJmZjI4MTFlYjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uQmFja2VuZEltcGwuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbkJhY2tlbmRJ
bXBsLmgKQEAgLTMxLDcgKzMxLDYgQEAKICNpbmNsdWRlICJJREJCYWNraW5nU3RvcmUuaCIKICNp
bmNsdWRlICJJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2UuaCIKICNpbmNsdWRlICJJREJEYXRh
YmFzZUVycm9yLmgiCi0jaW5jbHVkZSAiSURCVHJhbnNhY3Rpb24uaCIKICNpbmNsdWRlICJUaW1l
ci5oIgogI2luY2x1ZGUgPHd0Zi9EZXF1ZS5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CkBA
IC00NSw3ICs0NCw3IEBAIGNsYXNzIElEQkRhdGFiYXNlQ2FsbGJhY2tzOwogCiBjbGFzcyBJREJU
cmFuc2FjdGlvbkJhY2tlbmRJbXBsIDogcHVibGljIFJlZkNvdW50ZWQ8SURCVHJhbnNhY3Rpb25C
YWNrZW5kSW1wbD4gewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPElEQlRyYW5zYWN0
aW9uQmFja2VuZEltcGw+IGNyZWF0ZShpbnQ2NF90IHRyYW5zYWN0aW9uSWQsIFBhc3NSZWZQdHI8
SURCRGF0YWJhc2VDYWxsYmFja3M+LCBjb25zdCBWZWN0b3I8aW50NjRfdD4mLCBJREJUcmFuc2Fj
dGlvbjo6TW9kZSwgSURCRGF0YWJhc2VCYWNrZW5kSW1wbCopOworICAgIHN0YXRpYyBQYXNzUmVm
UHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGw+IGNyZWF0ZShpbnQ2NF90IHRyYW5zYWN0aW9u
SWQsIFBhc3NSZWZQdHI8SURCRGF0YWJhc2VDYWxsYmFja3M+LCBjb25zdCBWZWN0b3I8aW50NjRf
dD4mLCBJbmRleGVkREI6OlRyYW5zYWN0aW9uTW9kZSwgSURCRGF0YWJhc2VCYWNrZW5kSW1wbCop
OwogICAgIHZpcnR1YWwgfklEQlRyYW5zYWN0aW9uQmFja2VuZEltcGwoKTsKIAogICAgIHZpcnR1
YWwgdm9pZCBhYm9ydCgpOwpAQCAtNTksNyArNTgsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGFi
b3J0KFBhc3NSZWZQdHI8SURCRGF0YWJhc2VFcnJvcj4pOwogICAgIHZvaWQgcnVuKCk7Ci0gICAg
SURCVHJhbnNhY3Rpb246Ok1vZGUgbW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fbW9kZTsgfQorICAg
IEluZGV4ZWREQjo6VHJhbnNhY3Rpb25Nb2RlIG1vZGUoKSBjb25zdCB7IHJldHVybiBtX21vZGU7
IH0KICAgICBjb25zdCBIYXNoU2V0PGludDY0X3Q+JiBzY29wZSgpIGNvbnN0IHsgcmV0dXJuIG1f
b2JqZWN0U3RvcmVJZHM7IH0KICAgICB2b2lkIHNjaGVkdWxlVGFzayhQYXNzT3duUHRyPE9wZXJh
dGlvbj4gdGFzaywgUGFzc093blB0cjxPcGVyYXRpb24+IGFib3J0VGFzayA9IG51bGxwdHIpIHsg
c2NoZWR1bGVUYXNrKElEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZTo6Tm9ybWFsVGFzaywgdGFz
aywgYWJvcnRUYXNrKTsgfQogICAgIHZvaWQgc2NoZWR1bGVUYXNrKElEQkRhdGFiYXNlQmFja2Vu
ZEludGVyZmFjZTo6VGFza1R5cGUsIFBhc3NPd25QdHI8T3BlcmF0aW9uPiwgUGFzc093blB0cjxP
cGVyYXRpb24+IGFib3J0VGFzayA9IG51bGxwdHIpOwpAQCAtNzMsNyArNzIsNyBAQCBwdWJsaWM6
CiAgICAgSURCRGF0YWJhc2VCYWNrZW5kSW1wbCogZGF0YWJhc2UoKSBjb25zdCB7IHJldHVybiBt
X2RhdGFiYXNlLmdldCgpOyB9CiAKIHByaXZhdGU6Ci0gICAgSURCVHJhbnNhY3Rpb25CYWNrZW5k
SW1wbChpbnQ2NF90IGlkLCBQYXNzUmVmUHRyPElEQkRhdGFiYXNlQ2FsbGJhY2tzPiwgY29uc3Qg
SGFzaFNldDxpbnQ2NF90PiYgb2JqZWN0U3RvcmVJZHMsIElEQlRyYW5zYWN0aW9uOjpNb2RlLCBJ
REJEYXRhYmFzZUJhY2tlbmRJbXBsKik7CisgICAgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbChp
bnQ2NF90IGlkLCBQYXNzUmVmUHRyPElEQkRhdGFiYXNlQ2FsbGJhY2tzPiwgY29uc3QgSGFzaFNl
dDxpbnQ2NF90PiYgb2JqZWN0U3RvcmVJZHMsIEluZGV4ZWREQjo6VHJhbnNhY3Rpb25Nb2RlLCBJ
REJEYXRhYmFzZUJhY2tlbmRJbXBsKik7CiAKICAgICBlbnVtIFN0YXRlIHsKICAgICAgICAgVW51
c2VkLCAvLyBDcmVhdGVkLCBidXQgbm8gdGFza3MgeWV0LgpAQCAtOTIsNyArOTEsNyBAQCBwcml2
YXRlOgogCiAgICAgY29uc3QgaW50NjRfdCBtX2lkOwogICAgIGNvbnN0IEhhc2hTZXQ8aW50NjRf
dD4gbV9vYmplY3RTdG9yZUlkczsKLSAgICBjb25zdCBJREJUcmFuc2FjdGlvbjo6TW9kZSBtX21v
ZGU7CisgICAgY29uc3QgSW5kZXhlZERCOjpUcmFuc2FjdGlvbk1vZGUgbV9tb2RlOwogCiAgICAg
U3RhdGUgbV9zdGF0ZTsKICAgICBib29sIG1fY29tbWl0UGVuZGluZzsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uQ29vcmRpbmF0b3Iu
Y3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb25Db29y
ZGluYXRvci5jcHAKaW5kZXggMGJiNWFjYTk1YTA4YzVjNTE2YTM2NTEzMjU0NWI4ZTQ2OTdkNTBl
Zi4uYTZmY2Q4ZWEzZTZlMWQ4MmUxYjkyODkwYWRlNTRmZDc1ZWVlODcxZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb25Db29yZGluYXRv
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rp
b25Db29yZGluYXRvci5jcHAKQEAgLTI5LDcgKzI5LDYgQEAKICNpZiBFTkFCTEUoSU5ERVhFRF9E
QVRBQkFTRSkKIAogI2luY2x1ZGUgIklEQkRhdGFiYXNlQmFja2VuZEltcGwuaCIKLSNpbmNsdWRl
ICJJREJUcmFuc2FjdGlvbi5oIgogI2luY2x1ZGUgIklEQlRyYW5zYWN0aW9uQmFja2VuZEltcGwu
aCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtOTcsNyArOTYsNyBAQCB2b2lkIElEQlRyYW5z
YWN0aW9uQ29vcmRpbmF0b3I6OnByb2Nlc3NTdGFydGVkVHJhbnNhY3Rpb25zKCkKICAgICBpZiAo
bV9xdWV1ZWRUcmFuc2FjdGlvbnMuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBB
U1NFUlQobV9zdGFydGVkVHJhbnNhY3Rpb25zLmlzRW1wdHkoKSB8fCAoKm1fc3RhcnRlZFRyYW5z
YWN0aW9ucy5iZWdpbigpKS0+bW9kZSgpICE9IElEQlRyYW5zYWN0aW9uOjpWRVJTSU9OX0NIQU5H
RSk7CisgICAgQVNTRVJUKG1fc3RhcnRlZFRyYW5zYWN0aW9ucy5pc0VtcHR5KCkgfHwgKCptX3N0
YXJ0ZWRUcmFuc2FjdGlvbnMuYmVnaW4oKSktPm1vZGUoKSAhPSBJbmRleGVkREI6OlRyYW5zYWN0
aW9uVmVyc2lvbkNoYW5nZSk7CiAKICAgICBMaXN0SGFzaFNldDxJREJUcmFuc2FjdGlvbkJhY2tl
bmRJbXBsKj46OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbV9xdWV1ZWRUcmFuc2FjdGlvbnMuYmVnaW4o
KTsKICAgICB3aGlsZSAoaXQgIT0gbV9xdWV1ZWRUcmFuc2FjdGlvbnMuZW5kKCkpIHsKQEAgLTEy
NCwyMiArMTIzLDIyIEBAIGJvb2wgSURCVHJhbnNhY3Rpb25Db29yZGluYXRvcjo6Y2FuUnVuVHJh
bnNhY3Rpb24oSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbCogdHJhCiB7CiAgICAgQVNTRVJUKG1f
cXVldWVkVHJhbnNhY3Rpb25zLmNvbnRhaW5zKHRyYW5zYWN0aW9uKSk7CiAgICAgc3dpdGNoICh0
cmFuc2FjdGlvbi0+bW9kZSgpKSB7Ci0gICAgY2FzZSBJREJUcmFuc2FjdGlvbjo6VkVSU0lPTl9D
SEFOR0U6CisgICAgY2FzZSBJbmRleGVkREI6OlRyYW5zYWN0aW9uVmVyc2lvbkNoYW5nZToKICAg
ICAgICAgQVNTRVJUKG1fcXVldWVkVHJhbnNhY3Rpb25zLnNpemUoKSA9PSAxKTsKICAgICAgICAg
QVNTRVJUKG1fc3RhcnRlZFRyYW5zYWN0aW9ucy5pc0VtcHR5KCkpOwogICAgICAgICByZXR1cm4g
dHJ1ZTsKIAotICAgIGNhc2UgSURCVHJhbnNhY3Rpb246OlJFQURfT05MWToKKyAgICBjYXNlIElu
ZGV4ZWREQjo6VHJhbnNhY3Rpb25SZWFkT25seToKICAgICAgICAgcmV0dXJuIHRydWU7CiAKLSAg
ICBjYXNlIElEQlRyYW5zYWN0aW9uOjpSRUFEX1dSSVRFOgorICAgIGNhc2UgSW5kZXhlZERCOjpU
cmFuc2FjdGlvblJlYWRXcml0ZToKICAgICAgICAgZm9yIChIYXNoU2V0PElEQlRyYW5zYWN0aW9u
QmFja2VuZEltcGwqPjo6Y29uc3RfaXRlcmF0b3IgaXQgPSBtX3N0YXJ0ZWRUcmFuc2FjdGlvbnMu
YmVnaW4oKTsgaXQgIT0gbV9zdGFydGVkVHJhbnNhY3Rpb25zLmVuZCgpOyArK2l0KSB7Ci0gICAg
ICAgICAgICBpZiAoKCppdCktPm1vZGUoKSA9PSBJREJUcmFuc2FjdGlvbjo6UkVBRF9XUklURSAm
JiBkb1Njb3Blc092ZXJsYXAodHJhbnNhY3Rpb24tPnNjb3BlKCksICgqaXQpLT5zY29wZSgpKSkK
KyAgICAgICAgICAgIGlmICgoKml0KS0+bW9kZSgpID09IEluZGV4ZWREQjo6VHJhbnNhY3Rpb25S
ZWFkV3JpdGUgJiYgZG9TY29wZXNPdmVybGFwKHRyYW5zYWN0aW9uLT5zY29wZSgpLCAoKml0KS0+
c2NvcGUoKSkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAgICAg
ICAgIGZvciAoTGlzdEhhc2hTZXQ8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbCo+Ojpjb25zdF9p
dGVyYXRvciBpdCA9IG1fcXVldWVkVHJhbnNhY3Rpb25zLmJlZ2luKCk7ICppdCAhPSB0cmFuc2Fj
dGlvbjsgKytpdCkgewogICAgICAgICAgICAgQVNTRVJUKGl0ICE9IG1fcXVldWVkVHJhbnNhY3Rp
b25zLmVuZCgpKTsKLSAgICAgICAgICAgIGlmICgoKml0KS0+bW9kZSgpID09IElEQlRyYW5zYWN0
aW9uOjpSRUFEX1dSSVRFICYmIGRvU2NvcGVzT3ZlcmxhcCh0cmFuc2FjdGlvbi0+c2NvcGUoKSwg
KCppdCktPnNjb3BlKCkpKQorICAgICAgICAgICAgaWYgKCgqaXQpLT5tb2RlKCkgPT0gSW5kZXhl
ZERCOjpUcmFuc2FjdGlvblJlYWRXcml0ZSAmJiBkb1Njb3Blc092ZXJsYXAodHJhbnNhY3Rpb24t
PnNjb3BlKCksICgqaXQpLT5zY29wZSgpKSkKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JbmRleGVkREIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL0luZGV4ZWREQi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjJlODRmYzcyMWE1YzMyMzY0MmE2
ODNiMTE0OTJkMDM4NDRiNGZlYzgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9JbmRleGVkREIuaApAQCAtMCwwICsxLDU5IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDEzIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQg
SVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAq
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9S
IElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
CisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lm
bmRlZiBJbmRleGVkREJfaAorI2RlZmluZSBJbmRleGVkREJfaAorCisjaWYgRU5BQkxFKElOREVY
RURfREFUQUJBU0UpCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworbmFtZXNwYWNlIEluZGV4ZWRE
QiB7CisKK2VudW0gVHJhbnNhY3Rpb25Nb2RlIHsKKyAgICBUcmFuc2FjdGlvblJlYWRPbmx5ID0g
MCwKKyAgICBUcmFuc2FjdGlvblJlYWRXcml0ZSA9IDEsCisgICAgVHJhbnNhY3Rpb25WZXJzaW9u
Q2hhbmdlID0gMgorfTsKKworZW51bSBDdXJzb3JEaXJlY3Rpb24geworICAgIEN1cnNvck5leHQg
PSAwLAorICAgIEN1cnNvck5leHROb0R1cGxpY2F0ZSA9IDEsCisgICAgQ3Vyc29yUHJldiA9IDIs
CisgICAgQ3Vyc29yUHJldk5vRHVwbGljYXRlID0gMywKK307CisKK2VudW0gQ3Vyc29yVHlwZSB7
CisgICAgQ3Vyc29yS2V5QW5kVmFsdWUgPSAwLAorICAgIEN1cnNvcktleU9ubHkKK307CisKK30g
Ly8gbmFtZXNwYWNlIEluZGV4ZWREQgorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRp
ZiAvLyBFTkFCTEVEKElOREVYRURfREFUQUJBU0UpCisKKyNlbmRpZiAvLyBJbmRleGVkREJfaApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaSBiL1NvdXJjZS9XZWJDb3JlL1Rh
cmdldC5wcmkKaW5kZXggZGEwMjcwMGZmYmViNDkwMDBhZmZlM2I2ZDRmZjU0OTc1ZjRjOGZkOS4u
ZDRmOWRmMDBlYTQ5YjBhYTZkYzAwMjljZmY3YjU5NjAyY2FjMjVhZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCkBA
IC0zMTA2LDggKzMxMDYsOCBAQCBlbmFibGU/KElOREVYRURfREFUQUJBU0UpIHsKICAgICAgICAg
TW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VFeGNlcHRpb24uaCBcCiAgICAgICAgIE1vZHVs
ZXMvaW5kZXhlZGRiL0lEQkV2ZW50RGlzcGF0Y2hlci5oIFwKICAgICAgICAgTW9kdWxlcy9pbmRl
eGVkZGIvSURCRmFjdG9yeS5oIFwKLSAgICAgICAgTW9kdWxlcy9pbmRleGVkZGIvSURCRmFjdG9y
eUJhY2tlbmRJbnRlcmZhY2UuaCBcCiAgICAgICAgIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkZhY3Rv
cnlCYWNrZW5kSW1wbC5oIFwKKyAgICAgICAgTW9kdWxlcy9pbmRleGVkZGIvSURCRmFjdG9yeUJh
Y2tlbmRJbnRlcmZhY2UuaCBcCiAgICAgICAgIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkhpc3RvZ3Jh
bXMuaCBcCiAgICAgICAgIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkluZGV4LmggXAogICAgICAgICBN
b2R1bGVzL2luZGV4ZWRkYi9JREJLZXkuaCBcCkBAIC0zMTE1LDcgKzMxMTUsOCBAQCBlbmFibGU/
KElOREVYRURfREFUQUJBU0UpIHsKICAgICAgICAgTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0
U3RvcmUuaCBcCiAgICAgICAgIE1vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlQmFja2Vu
ZEltcGwuaCBcCiAgICAgICAgIE1vZHVsZXMvaW5kZXhlZGRiL0lEQlJlcXVlc3QuaCBcCi0gICAg
ICAgIE1vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmgKKyAgICAgICAgTW9kdWxlcy9p
bmRleGVkZGIvSURCVHJhbnNhY3Rpb24uaCBcCisgICAgICAgIE1vZHVsZXMvaW5kZXhlZGRiL0lu
ZGV4ZWREQi5oCiAKICAgICBTT1VSQ0VTICs9IFwKICAgICAgICAgYmluZGluZ3MvanMvSURCQmlu
ZGluZ1V0aWxpdGllcy5jcHAgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5n
eXBpIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCmluZGV4IGU4MDUwM2IwNWZlYjk0NzY1
NmU1ZmNiNzZiZDhkZmZkZDlmNGVjYmYuLmQ0OWUzYzNkMjlhYTFmMDczZDVjZDg3MzMzY2RiZWQy
ODNiNGEwYTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQorKysgYi9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKQEAgLTcxMiw2ICs3MTIsNyBAQAogICAgICAgICAg
ICAgJ01vZHVsZXMvaW5kZXhlZGRiL0RPTVdpbmRvd0luZGV4ZWREYXRhYmFzZS5oJywKICAgICAg
ICAgICAgICdNb2R1bGVzL2luZGV4ZWRkYi9JREJBbnkuY3BwJywKICAgICAgICAgICAgICdNb2R1
bGVzL2luZGV4ZWRkYi9JREJBbnkuaCcsCisgICAgICAgICAgICAnTW9kdWxlcy9pbmRleGVkZGIv
SURCQmFja2luZ1N0b3JlLmNwcCcsCiAgICAgICAgICAgICAnTW9kdWxlcy9pbmRleGVkZGIvSURC
QmFja2luZ1N0b3JlLmgnLAogICAgICAgICAgICAgJ01vZHVsZXMvaW5kZXhlZGRiL0lEQkNhbGxi
YWNrcy5oJywKICAgICAgICAgICAgICdNb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3IuY3BwJywK
QEAgLTc1Miw3ICs3NTMsNiBAQAogICAgICAgICAgICAgJ01vZHVsZXMvaW5kZXhlZGRiL0lEQktl
eVJhbmdlLmgnLAogICAgICAgICAgICAgJ01vZHVsZXMvaW5kZXhlZGRiL0lEQkxldmVsREJDb2Rp
bmcuY3BwJywKICAgICAgICAgICAgICdNb2R1bGVzL2luZGV4ZWRkYi9JREJMZXZlbERCQ29kaW5n
LmgnLAotICAgICAgICAgICAgJ01vZHVsZXMvaW5kZXhlZGRiL0lEQkJhY2tpbmdTdG9yZS5jcHAn
LAogICAgICAgICAgICAgJ01vZHVsZXMvaW5kZXhlZGRiL0lEQk1ldGFkYXRhLmgnLAogICAgICAg
ICAgICAgJ01vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlLmNwcCcsCiAgICAgICAgICAg
ICAnTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmUuaCcsCkBAIC03NzMsNiArNzczLDcg
QEAKICAgICAgICAgICAgICdNb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbkNvb3JkaW5h
dG9yLmgnLAogICAgICAgICAgICAgJ01vZHVsZXMvaW5kZXhlZGRiL0lEQlZlcnNpb25DaGFuZ2VF
dmVudC5jcHAnLAogICAgICAgICAgICAgJ01vZHVsZXMvaW5kZXhlZGRiL0lEQlZlcnNpb25DaGFu
Z2VFdmVudC5oJywKKyAgICAgICAgICAgICdNb2R1bGVzL2luZGV4ZWRkYi9JbmRleGVkREIuaCcs
CiAgICAgICAgICAgICAnTW9kdWxlcy9pbmRleGVkZGIvUGFnZUdyb3VwSW5kZXhlZERhdGFiYXNl
LmNwcCcsCiAgICAgICAgICAgICAnTW9kdWxlcy9pbmRleGVkZGIvUGFnZUdyb3VwSW5kZXhlZERh
dGFiYXNlLmgnLAogICAgICAgICAgICAgJ01vZHVsZXMvaW5kZXhlZGRiL1dvcmtlckNvbnRleHRJ
bmRleGVkRGF0YWJhc2UuY3BwJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL0Fzc2VydE1hdGNoaW5nRW51bXMuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
QXNzZXJ0TWF0Y2hpbmdFbnVtcy5jcHAKaW5kZXggOGY0MmM2ZmU3Zjc1YzIzMzg3YTY0MGI1NDM0
OTFlYWZjMzQ5ZTcyNC4uNWMzOWY0OTkxMGY0NGJkMThmY2M3NTAwOTA4MDdmZTg1ODVlYjA0NCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvQXNzZXJ0TWF0Y2hpbmdFbnVt
cy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvQXNzZXJ0TWF0Y2hpbmdFbnVt
cy5jcHAKQEAgLTUwNCwxMCArNTA0LDEwIEBAIENPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0o
V2ViSURCS2V5UGF0aDo6QXJyYXlUeXBlLCBJREJLZXlQYXRoOjpBcnJheVR5cGUpOwogCiBDT01Q
SUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKFdlYklEQk1ldGFkYXRhOjpOb0ludFZlcnNpb24sIElE
QkRhdGFiYXNlTWV0YWRhdGE6Ok5vSW50VmVyc2lvbik7CiAKLUNPTVBJTEVfQVNTRVJUX01BVENI
SU5HX0VOVU0oV2ViSURCQ3Vyc29yOjpOZXh0LCBJREJDdXJzb3I6Ok5FWFQpOwotQ09NUElMRV9B
U1NFUlRfTUFUQ0hJTkdfRU5VTShXZWJJREJDdXJzb3I6Ok5leHROb0R1cGxpY2F0ZSwgSURCQ3Vy
c29yOjpORVhUX05PX0RVUExJQ0FURSk7Ci1DT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKFdl
YklEQkN1cnNvcjo6UHJldiwgSURCQ3Vyc29yOjpQUkVWKTsKLUNPTVBJTEVfQVNTRVJUX01BVENI
SU5HX0VOVU0oV2ViSURCQ3Vyc29yOjpQcmV2Tm9EdXBsaWNhdGUsIElEQkN1cnNvcjo6UFJFVl9O
T19EVVBMSUNBVEUpOworQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShXZWJJREJDdXJzb3I6
Ok5leHQsIEluZGV4ZWREQjo6Q3Vyc29yTmV4dCk7CitDT01QSUxFX0FTU0VSVF9NQVRDSElOR19F
TlVNKFdlYklEQkN1cnNvcjo6TmV4dE5vRHVwbGljYXRlLCBJbmRleGVkREI6OkN1cnNvck5leHRO
b0R1cGxpY2F0ZSk7CitDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKFdlYklEQkN1cnNvcjo6
UHJldiwgSW5kZXhlZERCOjpDdXJzb3JQcmV2KTsKK0NPTVBJTEVfQVNTRVJUX01BVENISU5HX0VO
VU0oV2ViSURCQ3Vyc29yOjpQcmV2Tm9EdXBsaWNhdGUsIEluZGV4ZWREQjo6Q3Vyc29yUHJldk5v
RHVwbGljYXRlKTsKIAogQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShXZWJJREJEYXRhYmFz
ZTo6UHJlZW1wdGl2ZVRhc2ssIElEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZTo6UHJlZW1wdGl2
ZVRhc2spOwogQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShXZWJJREJEYXRhYmFzZTo6Tm9y
bWFsVGFzaywgSURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlOjpOb3JtYWxUYXNrKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkRhdGFiYXNlQmFja2VuZFByb3h5
LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkRhdGFiYXNlQmFja2VuZFByb3h5
LmNwcAppbmRleCAzNTVkODA4OWVlY2M2ZDNjNDRiZDhjYmEwNDExMWYyNmVmZjE5MzRmLi4yYzJh
NWU3ZTlmZDU2NDJhNTk3MjA0OGIyOWE2YzAyYTdiZTBkYmIxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9JREJEYXRhYmFzZUJhY2tlbmRQcm94eS5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCRGF0YWJhc2VCYWNrZW5kUHJveHkuY3BwCkBAIC05
Myw3ICs5Myw3IEBAIHZvaWQgSURCRGF0YWJhc2VCYWNrZW5kUHJveHk6OmFib3J0KGludDY0X3Qg
dHJhbnNhY3Rpb25JZCwgUGFzc1JlZlB0cjxJREJEYXRhYmFzCiAgICAgbV93ZWJJREJEYXRhYmFz
ZS0+YWJvcnQodHJhbnNhY3Rpb25JZCwgZXJyb3IpOwogfQogCi12b2lkIElEQkRhdGFiYXNlQmFj
a2VuZFByb3h5OjpvcGVuQ3Vyc29yKGludDY0X3QgdHJhbnNhY3Rpb25JZCwgaW50NjRfdCBvYmpl
Y3RTdG9yZUlkLCBpbnQ2NF90IGluZGV4SWQsIFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+IGtleVJh
bmdlLCB1bnNpZ25lZCBzaG9ydCBkaXJlY3Rpb24sIGJvb2wga2V5T25seSwgVGFza1R5cGUgdGFz
a1R5cGUsIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MpCit2b2lkIElEQkRhdGFi
YXNlQmFja2VuZFByb3h5OjpvcGVuQ3Vyc29yKGludDY0X3QgdHJhbnNhY3Rpb25JZCwgaW50NjRf
dCBvYmplY3RTdG9yZUlkLCBpbnQ2NF90IGluZGV4SWQsIFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+
IGtleVJhbmdlLCBJbmRleGVkREI6OkN1cnNvckRpcmVjdGlvbiBkaXJlY3Rpb24sIGJvb2wga2V5
T25seSwgVGFza1R5cGUgdGFza1R5cGUsIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFj
a3MpCiB7CiAgICAgbV93ZWJJREJEYXRhYmFzZS0+b3BlbkN1cnNvcih0cmFuc2FjdGlvbklkLCBv
YmplY3RTdG9yZUlkLCBpbmRleElkLCBrZXlSYW5nZSwgc3RhdGljX2Nhc3Q8V2ViSURCQ3Vyc29y
OjpEaXJlY3Rpb24+KGRpcmVjdGlvbiksIGtleU9ubHksIHN0YXRpY19jYXN0PFdlYklEQkRhdGFi
YXNlOjpUYXNrVHlwZT4odGFza1R5cGUpLCBuZXcgV2ViSURCQ2FsbGJhY2tzSW1wbChjYWxsYmFj
a3MpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkRhdGFi
YXNlQmFja2VuZFByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJEYXRhYmFz
ZUJhY2tlbmRQcm94eS5oCmluZGV4IGRiZDk2NDJmMTEyMGQ5OThkYWY5N2NiNWZhOWE1MjBiYmQ1
ZDZkNTEuLjVkNWQ5MDhmOThiZTNhYTg1YzI1ZDYzNGM1ZmIxMDQyZWViMmY3OGIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkRhdGFiYXNlQmFja2VuZFByb3h5LmgK
KysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCRGF0YWJhc2VCYWNrZW5kUHJveHku
aApAQCAtNTUsNyArNTUsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHB1dChpbnQ2NF90
IHRyYW5zYWN0aW9uSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgUGFzc1JlZlB0cjxXZWJDb3Jl
OjpTaGFyZWRCdWZmZXI+IHZhbHVlLCBQYXNzUmVmUHRyPFdlYkNvcmU6OklEQktleT4sIFB1dE1v
ZGUsIFBhc3NSZWZQdHI8V2ViQ29yZTo6SURCQ2FsbGJhY2tzPiwgY29uc3QgVmVjdG9yPGludDY0
X3Q+JiBpbmRleElkcywgY29uc3QgVmVjdG9yPEluZGV4S2V5cz4mKSBPVkVSUklERTsKICAgICB2
aXJ0dWFsIHZvaWQgc2V0SW5kZXhLZXlzKGludDY0X3QgdHJhbnNhY3Rpb25JZCwgaW50NjRfdCBv
YmplY3RTdG9yZUlkLCBQYXNzUmVmUHRyPFdlYkNvcmU6OklEQktleT4gcHJwUHJpbWFyeUtleSwg
Y29uc3QgVmVjdG9yPGludDY0X3Q+JiBpbmRleElkcywgY29uc3QgVmVjdG9yPEluZGV4S2V5cz4m
KSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0SW5kZXhlc1JlYWR5KGludDY0X3QgdHJh
bnNhY3Rpb25JZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBjb25zdCBWZWN0b3I8aW50NjRfdD4m
IGluZGV4SWRzKSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIHZvaWQgb3BlbkN1cnNvcihpbnQ2NF90
IHRyYW5zYWN0aW9uSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgaW50NjRfdCBpbmRleElkLCBQ
YXNzUmVmUHRyPFdlYkNvcmU6OklEQktleVJhbmdlPiwgdW5zaWduZWQgc2hvcnQgZGlyZWN0aW9u
LCBib29sIGtleU9ubHksIFRhc2tUeXBlLCBQYXNzUmVmUHRyPFdlYkNvcmU6OklEQkNhbGxiYWNr
cz4pIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBvcGVuQ3Vyc29yKGludDY0X3QgdHJhbnNh
Y3Rpb25JZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBpbnQ2NF90IGluZGV4SWQsIFBhc3NSZWZQ
dHI8V2ViQ29yZTo6SURCS2V5UmFuZ2U+LCBXZWJDb3JlOjpJbmRleGVkREI6OkN1cnNvckRpcmVj
dGlvbiwgYm9vbCBrZXlPbmx5LCBUYXNrVHlwZSwgUGFzc1JlZlB0cjxXZWJDb3JlOjpJREJDYWxs
YmFja3M+KSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgY291bnQoaW50NjRfdCB0cmFuc2Fj
dGlvbklkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGludDY0X3QgaW5kZXhJZCwgUGFzc1JlZlB0
cjxXZWJDb3JlOjpJREJLZXlSYW5nZT4sIFBhc3NSZWZQdHI8V2ViQ29yZTo6SURCQ2FsbGJhY2tz
PikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIGRlbGV0ZVJhbmdlKGludDY0X3QgdHJhbnNh
Y3Rpb25JZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBQYXNzUmVmUHRyPFdlYkNvcmU6OklEQktl
eVJhbmdlPiwgUGFzc1JlZlB0cjxXZWJDb3JlOjpJREJDYWxsYmFja3M+KSBPVkVSUklERTsKICAg
ICB2aXJ0dWFsIHZvaWQgY2xlYXIoaW50NjRfdCB0cmFuc2FjdGlvbklkLCBpbnQ2NF90IG9iamVj
dFN0b3JlSWQsIFBhc3NSZWZQdHI8V2ViQ29yZTo6SURCQ2FsbGJhY2tzPikgT1ZFUlJJREU7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJDYWxsYmFja3NJbXBs
LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkNhbGxiYWNrc0ltcGwuY3Bw
CmluZGV4IDA1ZmM4OGY1YmNiMzUzZDgzYWQ0ZTQ0ZWMwYjFiOWNkNzZjODQ0ZWIuLjMzOTA1OGVk
ZGYzNGM3YmY0MmI2NDA0Yzg5NmM1ZmUzM2Y2YThmYjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL1dlYklEQkNhbGxiYWNrc0ltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL1dlYklEQkNhbGxiYWNrc0ltcGwuY3BwCkBAIC0zNCw2ICszNCw3IEBA
CiAjaW5jbHVkZSAiSURCRGF0YWJhc2VCYWNrZW5kUHJveHkuaCIKICNpbmNsdWRlICJJREJEYXRh
YmFzZUVycm9yLmgiCiAjaW5jbHVkZSAiSURCS2V5LmgiCisjaW5jbHVkZSAiSURCTWV0YWRhdGEu
aCIKICNpbmNsdWRlICJXZWJET01TdHJpbmdMaXN0LmgiCiAjaW5jbHVkZSAiV2ViSURCQ2FsbGJh
Y2tzLmgiCiAjaW5jbHVkZSAiV2ViSURCRGF0YWJhc2UuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkRhdGFiYXNlSW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9XZWJJREJEYXRhYmFzZUltcGwuY3BwCmluZGV4IGExODA1MTUwZDJjYTZk
Yzc3ZGY4NjFiNjJkMGFhYjNhOWU1ZGIyYWIuLmU0ZGE3ZWUyMzEyOWY2ZjY5YzgzMGQ2MGEwMDlj
ZTVkZjE5NDMyZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklE
QkRhdGFiYXNlSW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURC
RGF0YWJhc2VJbXBsLmNwcApAQCAtMTE4LDcgKzExOCw3IEBAIHZvaWQgV2ViSURCRGF0YWJhc2VJ
bXBsOjpjb21taXQobG9uZyBsb25nIHRyYW5zYWN0aW9uSWQpCiB2b2lkIFdlYklEQkRhdGFiYXNl
SW1wbDo6b3BlbkN1cnNvcihsb25nIGxvbmcgdHJhbnNhY3Rpb25JZCwgbG9uZyBsb25nIG9iamVj
dFN0b3JlSWQsIGxvbmcgbG9uZyBpbmRleElkLCBjb25zdCBXZWJJREJLZXlSYW5nZSYga2V5UmFu
Z2UsIHVuc2lnbmVkIHNob3J0IGRpcmVjdGlvbiwgYm9vbCBrZXlPbmx5LCBUYXNrVHlwZSB0YXNr
VHlwZSwgV2ViSURCQ2FsbGJhY2tzKiBjYWxsYmFja3MpCiB7CiAgICAgaWYgKG1fZGF0YWJhc2VC
YWNrZW5kKQotICAgICAgICBtX2RhdGFiYXNlQmFja2VuZC0+b3BlbkN1cnNvcih0cmFuc2FjdGlv
bklkLCBvYmplY3RTdG9yZUlkLCBpbmRleElkLCBrZXlSYW5nZSwgc3RhdGljX2Nhc3Q8SURCQ3Vy
c29yOjpEaXJlY3Rpb24+KGRpcmVjdGlvbiksIGtleU9ubHksIHN0YXRpY19jYXN0PElEQkRhdGFi
YXNlQmFja2VuZEludGVyZmFjZTo6VGFza1R5cGU+KHRhc2tUeXBlKSwgSURCQ2FsbGJhY2tzUHJv
eHk6OmNyZWF0ZShhZG9wdFB0cihjYWxsYmFja3MpKSk7CisgICAgICAgIG1fZGF0YWJhc2VCYWNr
ZW5kLT5vcGVuQ3Vyc29yKHRyYW5zYWN0aW9uSWQsIG9iamVjdFN0b3JlSWQsIGluZGV4SWQsIGtl
eVJhbmdlLCBzdGF0aWNfY2FzdDxJbmRleGVkREI6OkN1cnNvckRpcmVjdGlvbj4oZGlyZWN0aW9u
KSwga2V5T25seSwgc3RhdGljX2Nhc3Q8SURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlOjpUYXNr
VHlwZT4odGFza1R5cGUpLCBJREJDYWxsYmFja3NQcm94eTo6Y3JlYXRlKGFkb3B0UHRyKGNhbGxi
YWNrcykpKTsKIH0KIAogdm9pZCBXZWJJREJEYXRhYmFzZUltcGw6OmNvdW50KGxvbmcgbG9uZyB0
cmFuc2FjdGlvbklkLCBsb25nIGxvbmcgb2JqZWN0U3RvcmVJZCwgbG9uZyBsb25nIGluZGV4SWQs
IGNvbnN0IFdlYklEQktleVJhbmdlJiBrZXlSYW5nZSwgV2ViSURCQ2FsbGJhY2tzKiBjYWxsYmFj
a3MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0lEQkFib3J0T25D
b3JydXB0VGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0lEQkFib3J0T25D
b3JydXB0VGVzdC5jcHAKaW5kZXggZTYzY2UyYTg2YjJhOTNkNmIyMmU2ZjgwNDM4YmZkNzgyYmQ5
MTFiOS4uODcxYzZiODBjMGJjZTVkOTkyNzA1MGYxZDEzOWVjZjg4YjQ4NDIwZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9JREJBYm9ydE9uQ29ycnVwdFRlc3QuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvSURCQWJvcnRPbkNvcnJ1cHRUZXN0
LmNwcApAQCAtMzEsNiArMzEsOCBAQAogI2luY2x1ZGUgIklEQkRhdGFiYXNlQ2FsbGJhY2tzLmgi
CiAjaW5jbHVkZSAiSURCRmFjdG9yeUJhY2tlbmRJbXBsLmgiCiAjaW5jbHVkZSAiSURCRmFrZUJh
Y2tpbmdTdG9yZS5oIgorI2luY2x1ZGUgIklEQktleS5oIgorI2luY2x1ZGUgIkluZGV4ZWREQi5o
IgogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCiAjaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4K
ICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3Rlc3RzL0lEQkRhdGFiYXNlQmFja2VuZFRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS90ZXN0cy9JREJEYXRhYmFzZUJhY2tlbmRUZXN0LmNwcAppbmRleCA0NWI5ZTJiYjJiZmFj
YTFmMGFjMTE5YjdmNTVlMmE1YzQxYjE0NWVkLi45NzQzMmIyMGQwMzYyMDdlYTVmNGZiNDM5Y2Qw
N2I4ZGFhZjg0YmIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0lE
QkRhdGFiYXNlQmFja2VuZFRlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVz
dHMvSURCRGF0YWJhc2VCYWNrZW5kVGVzdC5jcHAKQEAgLTI0LDEzICsyNCwxNiBAQAogICovCiAK
ICNpbmNsdWRlICJjb25maWcuaCIKKworI2luY2x1ZGUgIklEQkRhdGFiYXNlLmgiCisKICNpbmNs
dWRlICJJREJCYWNraW5nU3RvcmUuaCIKLSNpbmNsdWRlICJJREJDdXJzb3JCYWNrZW5kSW50ZXJm
YWNlLmgiCiAjaW5jbHVkZSAiSURCRGF0YWJhc2VCYWNrZW5kSW1wbC5oIgogI2luY2x1ZGUgIklE
QkRhdGFiYXNlQ2FsbGJhY2tzUHJveHkuaCIKICNpbmNsdWRlICJJREJGYWN0b3J5QmFja2VuZElt
cGwuaCIKICNpbmNsdWRlICJJREJGYWtlQmFja2luZ1N0b3JlLmgiCiAjaW5jbHVkZSAiSURCVHJh
bnNhY3Rpb25CYWNrZW5kSW1wbC5oIgorI2luY2x1ZGUgIkluZGV4ZWREQi5oIgogI2luY2x1ZGUg
IlNoYXJlZEJ1ZmZlci5oIgogI2luY2x1ZGUgIldlYklEQkRhdGFiYXNlQ2FsbGJhY2tzSW1wbC5o
IgogI2luY2x1ZGUgIldlYklEQkRhdGFiYXNlSW1wbC5oIgpAQCAtMTUxLDcgKzE1NCw3IEBAIHB1
YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgYWJvcnQoaW50NjRfdCB0cmFuc2FjdGlvbklkLCBQYXNz
UmVmUHRyPElEQkRhdGFiYXNlRXJyb3I+KSBPVkVSUklERSB7IH0KICAgICB2aXJ0dWFsIHZvaWQg
Y29tbWl0KGludDY0X3QgdHJhbnNhY3Rpb25JZCkgT1ZFUlJJREUgeyB9CiAKLSAgICB2aXJ0dWFs
IHZvaWQgb3BlbkN1cnNvcihpbnQ2NF90IHRyYW5zYWN0aW9uSWQsIGludDY0X3Qgb2JqZWN0U3Rv
cmVJZCwgaW50NjRfdCBpbmRleElkLCBQYXNzUmVmUHRyPElEQktleVJhbmdlPiwgdW5zaWduZWQg
c2hvcnQgZGlyZWN0aW9uLCBib29sIGtleU9ubHksIFRhc2tUeXBlLCBQYXNzUmVmUHRyPElEQkNh
bGxiYWNrcz4pIE9WRVJSSURFIHsgfQorICAgIHZpcnR1YWwgdm9pZCBvcGVuQ3Vyc29yKGludDY0
X3QgdHJhbnNhY3Rpb25JZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBpbnQ2NF90IGluZGV4SWQs
IFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+LCBJbmRleGVkREI6OkN1cnNvckRpcmVjdGlvbiwgYm9v
bCBrZXlPbmx5LCBUYXNrVHlwZSwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+KSBPVkVSUklERSB7
IH0KICAgICB2aXJ0dWFsIHZvaWQgY291bnQoaW50NjRfdCBvYmplY3RTdG9yZUlkLCBpbnQ2NF90
IGluZGV4SWQsIGludDY0X3QgdHJhbnNhY3Rpb25JZCwgUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4s
IFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPikgT1ZFUlJJREUgeyB9CiAgICAgdmlydHVhbCB2b2lk
IGdldChpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGludDY0X3QgaW5kZXhJZCwgaW50NjRfdCB0cmFu
c2FjdGlvbklkLCBQYXNzUmVmUHRyPElEQktleVJhbmdlPiwgYm9vbCBrZXlPbmx5LCBQYXNzUmVm
UHRyPElEQkNhbGxiYWNrcz4pIE9WRVJSSURFIHsgfQogICAgIHZpcnR1YWwgdm9pZCBwdXQoaW50
NjRfdCB0cmFuc2FjdGlvbklkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIFBhc3NSZWZQdHI8U2hh
cmVkQnVmZmVyPiwgUGFzc1JlZlB0cjxJREJLZXk+LCBQdXRNb2RlLCBQYXNzUmVmUHRyPElEQkNh
bGxiYWNrcz4sIGNvbnN0IFZlY3RvcjxpbnQ2NF90PiYgaW5kZXhJZHMsIGNvbnN0IFZlY3RvcjxJ
bmRleEtleXM+JikgT1ZFUlJJREUgeyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3Rlc3RzL0lEQkZha2VCYWNraW5nU3RvcmUuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
dGVzdHMvSURCRmFrZUJhY2tpbmdTdG9yZS5oCmluZGV4IDNlZDcyNGJiNGViMGEyYmJmODhiNjQ2
MWE1MmZmNDI3YjY4ZWJiMzIuLmVlZmM2NDhhZDIzYTQ1YzJjYzg3YzI0Y2JjYjM0MjE2MjFkNzRl
NjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvSURCRmFrZUJhY2tp
bmdTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvSURCRmFrZUJhY2tp
bmdTdG9yZS5oCkBAIC01MSwxMCArNTEsMTAgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBk
ZWxldGVJbmRleChUcmFuc2FjdGlvbiosIGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmpl
Y3RTdG9yZUlkLCBpbnQ2NF90IGluZGV4SWQpIE9WRVJSSURFIHsgfQogICAgIHZpcnR1YWwgdm9p
ZCBwdXRJbmRleERhdGFGb3JSZWNvcmQoVHJhbnNhY3Rpb24qLCBpbnQ2NF90IGRhdGFiYXNlSWQs
IGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgaW50NjRfdCBpbmRleElkLCBjb25zdCBJREJLZXkmLCBj
b25zdCBSZWNvcmRJZGVudGlmaWVyJikgT1ZFUlJJREUgeyB9CiAKLSAgICB2aXJ0dWFsIFBhc3NS
ZWZQdHI8Q3Vyc29yPiBvcGVuT2JqZWN0U3RvcmVLZXlDdXJzb3IoVHJhbnNhY3Rpb24qLCBpbnQ2
NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgY29uc3QgSURCS2V5UmFuZ2Uq
LCBJREJDdXJzb3I6OkRpcmVjdGlvbikgT1ZFUlJJREUgeyByZXR1cm4gUGFzc1JlZlB0cjxDdXJz
b3I+KCk7IH0KLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8Q3Vyc29yPiBvcGVuT2JqZWN0U3RvcmVD
dXJzb3IoVHJhbnNhY3Rpb24qLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3Rv
cmVJZCwgY29uc3QgSURCS2V5UmFuZ2UqLCBJREJDdXJzb3I6OkRpcmVjdGlvbikgT1ZFUlJJREUg
eyByZXR1cm4gUGFzc1JlZlB0cjxDdXJzb3I+KCk7IH0KLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8
Q3Vyc29yPiBvcGVuSW5kZXhLZXlDdXJzb3IoVHJhbnNhY3Rpb24qLCBpbnQ2NF90IGRhdGFiYXNl
SWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgaW50NjRfdCBpbmRleElkLCBjb25zdCBJREJLZXlS
YW5nZSosIElEQkN1cnNvcjo6RGlyZWN0aW9uKSBPVkVSUklERSB7IHJldHVybiBQYXNzUmVmUHRy
PEN1cnNvcj4oKTsgfQotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxDdXJzb3I+IG9wZW5JbmRleEN1
cnNvcihUcmFuc2FjdGlvbiosIGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9y
ZUlkLCBpbnQ2NF90IGluZGV4SWQsIGNvbnN0IElEQktleVJhbmdlKiwgSURCQ3Vyc29yOjpEaXJl
Y3Rpb24pIE9WRVJSSURFIHsgcmV0dXJuIFBhc3NSZWZQdHI8Q3Vyc29yPigpOyB9CisgICAgdmly
dHVhbCBQYXNzUmVmUHRyPEN1cnNvcj4gb3Blbk9iamVjdFN0b3JlS2V5Q3Vyc29yKFRyYW5zYWN0
aW9uKiwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGNvbnN0IElE
QktleVJhbmdlKiwgSW5kZXhlZERCOjpDdXJzb3JEaXJlY3Rpb24pIE9WRVJSSURFIHsgcmV0dXJu
IFBhc3NSZWZQdHI8Q3Vyc29yPigpOyB9CisgICAgdmlydHVhbCBQYXNzUmVmUHRyPEN1cnNvcj4g
b3Blbk9iamVjdFN0b3JlQ3Vyc29yKFRyYW5zYWN0aW9uKiwgaW50NjRfdCBkYXRhYmFzZUlkLCBp
bnQ2NF90IG9iamVjdFN0b3JlSWQsIGNvbnN0IElEQktleVJhbmdlKiwgSW5kZXhlZERCOjpDdXJz
b3JEaXJlY3Rpb24pIE9WRVJSSURFIHsgcmV0dXJuIFBhc3NSZWZQdHI8Q3Vyc29yPigpOyB9Cisg
ICAgdmlydHVhbCBQYXNzUmVmUHRyPEN1cnNvcj4gb3BlbkluZGV4S2V5Q3Vyc29yKFRyYW5zYWN0
aW9uKiwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGludDY0X3Qg
aW5kZXhJZCwgY29uc3QgSURCS2V5UmFuZ2UqLCBJbmRleGVkREI6OkN1cnNvckRpcmVjdGlvbikg
T1ZFUlJJREUgeyByZXR1cm4gUGFzc1JlZlB0cjxDdXJzb3I+KCk7IH0KKyAgICB2aXJ0dWFsIFBh
c3NSZWZQdHI8Q3Vyc29yPiBvcGVuSW5kZXhDdXJzb3IoVHJhbnNhY3Rpb24qLCBpbnQ2NF90IGRh
dGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgaW50NjRfdCBpbmRleElkLCBjb25zdCBJ
REJLZXlSYW5nZSosIEluZGV4ZWREQjo6Q3Vyc29yRGlyZWN0aW9uKSBPVkVSUklERSB7IHJldHVy
biBQYXNzUmVmUHRyPEN1cnNvcj4oKTsgfQogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>191529</attachid>
            <date>2013-03-05 11:53:18 -0800</date>
            <delta_ts>2013-03-05 13:59:11 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-110653-20130305114925.patch</filename>
            <type>text/plain</type>
            <size>90640</size>
            <attacher name="Alec Flett">alecflett</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ0NzM0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTIzMzM1MGMxOTIxZjgz
NTZiNWJmY2M0ZjRjNWVjYTRmZGM5ZmQ4MC4uMDcwOTUwODI0ZTEzODJiNTllODNlNjljZTU1MWJh
N2FhOGNlN2NmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisyMDEzLTAyLTIyICBBbGVj
IEZsZXR0ICA8YWxlY2ZsZXR0QGNocm9taXVtLm9yZz4KKworICAgICAgICBJbmRleGVkREI6IFBy
b3Blcmx5IHJlZmFjdG9yIGZyb250ZW5kL2JhY2tlbmQgY29kZSBieSAjaW5jbHVkZXMKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExMDY1MworCisgICAg
ICAgIFJldmlld2VkIGJ5IERpbWl0cmkgR2xhemtvdi4KKworICAgICAgICBJbmRleGVkREIgaGFz
IGEgZGlzdGluY3QgYmFja2VuZCBhbmQgZnJvbnRlbmQsIHdpdGggd2VsbCBkZWZpbmVkCisgICAg
ICAgICpJbnRlcmZhY2UgLyAqQ2FsbGJhY2tzIGNsYXNzZXMgZGlzdGluZ3Vpc2hpbmcgdGhlbSwg
cmVzcGVjdGl2ZWx5LgorICAgICAgICAKKyAgICAgICAgVGhpcyBtYWtlcyBzdXJlIHRoYXQgdGhl
IGZyb250ZW5kIGFuZCBiYWNrZW5kIGRvIG5vdCBpbmNsdWRlIGVhY2gKKyAgICAgICAgb3RoZXIg
YW5kIGZpeGVzIGJ1aWxkIHByb2JsZW1zIHRoYXQgb2NjdXJyZWQgYXMgYSByZXN1bHQuCisKKyAg
ICAgICAgU3BlY2lmaWNhbGx5IHRoaXMgbW92ZXMgZW51bXMgb3V0IG9mIElEQkN1cnNvciBhbmQg
SURCVHJhbnNhY3Rpb24KKyAgICAgICAgaW50byBJbmRleGVkREIuaCBpbiBhIG5ldyBXZWJDb3Jl
OjpJbmRleGVkREIgbmFtZXNwYWNlLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cywgYXMgdGhpcyBp
cyBqdXN0IGEgcmVmYWN0b3IuCisKIDIwMTMtMDMtMDQgIFVkYXkgS2lyYW4gIDx1ZGF5a2lyYW5A
bW90b3JvbGEuY29tPgogCiAgICAgICAgIGdldFByb3BlcnR5VmFsdWUgZm9yIC13ZWJraXQtdGV4
dC1zdHJva2UgcmV0dXJucyBudWxsLCBzaG91bGQgY29tcHV0ZSB0aGUgc2hvcnRoYW5kIHZhbHVl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IDBlNWE2ZDZmNzY3YzE3OWJlNWY1OGZlYWFk
MjUxZTY0MGFlMTljZjcuLjA5ODEwNmFjYTY5NmRiZDQxMDBkZDRhODdkMDA0N2NkZDM3ZjVmZTIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTMtMDItMjIg
IEFsZWMgRmxldHQgIDxhbGVjZmxldHRAY2hyb21pdW0ub3JnPgorCisgICAgICAgIEluZGV4ZWRE
QjogUHJvcGVybHkgcmVmYWN0b3IgZnJvbnRlbmQvYmFja2VuZCBjb2RlIGJ5ICNpbmNsdWRlcwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTEwNjUzCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgRGltaXRyaSBHbGF6a292LgorCisgICAgICAgIENsZWFuIHVw
IHRoZSBmcm9udGVuZC9iYWNrZW5kIFdlYklEQiogaW1wbGVtZW50YXRpb25zIHRvCisgICAgICAg
IG1hdGNoIHRoZSBjaGFuZ2VzIHRvIHdlYmtpdC4KKwogMjAxMy0wMy0wNCAgQ2hyaXMgRmxlaXph
Y2ggIDxjZmxlaXphY2hAYXBwbGUuY29tPgogCiAgICAgICAgIEFYOiBjZWxsRm9yQ29sdW1uQW5k
Um93IGZhaWxzIGZvciB0YWJsZXMgd2l0aCBoaWRkZW4gdGFibGUgY2VsbHMKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0gYi9Tb3VyY2UvV2ViQ29yZS9HTlVt
YWtlZmlsZS5saXN0LmFtCmluZGV4IGEyOGViMWVmMDBiMTY0ODFjYjI2Zjg2MTgxNDEzNWFkMzdl
OTk3ZjcuLjQ3Mzk1ZDkwNjZjYTk0MWRkNzMyNTE5ZWUyZTBhMDZiZDM5NzkxZjcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KKysrIGIvU291cmNlL1dlYkNv
cmUvR05VbWFrZWZpbGUubGlzdC5hbQpAQCAtMTkyNiw2ICsxOTI2LDcgQEAgd2ViY29yZV9tb2R1
bGVzX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRy
YW5zYWN0aW9uLmggXAogCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlZlcnNp
b25DaGFuZ2VFdmVudC5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lE
QlZlcnNpb25DaGFuZ2VFdmVudC5oIFwKKwlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9JbmRleGVkREIuaCBcCiAJU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvUGFnZUdy
b3VwSW5kZXhlZERhdGFiYXNlLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvUGFnZUdyb3VwSW5kZXhlZERhdGFiYXNlLmggXAogCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL1dvcmtlckNvbnRleHRJbmRleGVkRGF0YWJhc2UuY3BwIFwKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkJhY2tpbmdTdG9yZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJCYWNraW5nU3RvcmUuY3BwCmluZGV4
IDkwOWVlYWU2NjdhMGY3NmY0NDk1NmM1ZTIzMzFmOGJiOTFmM2EyMWMuLjU5M2E5NzA0MGE5ZWE4
ZmVjOWRhYmRiZDNlYmQ3NjJhZTIzZjVmMTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL0lEQkJhY2tpbmdTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvSURCQmFja2luZ1N0b3JlLmNwcApAQCAtMTMwNyw3ICsxMzA3LDcg
QEAgYm9vbCBJREJCYWNraW5nU3RvcmU6OkN1cnNvcjo6Y29udGludWVGdW5jdGlvbihjb25zdCBJ
REJLZXkqIGtleSwgSXRlcmF0b3JTdGF0ZQogewogICAgIFJlZlB0cjxJREJLZXk+IHByZXZpb3Vz
S2V5ID0gbV9jdXJyZW50S2V5OwogCi0gICAgLy8gV2hlbiBpdGVyYXRpbmcgd2l0aCBQUkVWX05P
X0RVUExJQ0FURSwgc3BlYyByZXF1aXJlcyB0aGF0IHRoZQorICAgIC8vIFdoZW4gaXRlcmF0aW5n
IHdpdGggUHJldk5vRHVwbGljYXRlLCBzcGVjIHJlcXVpcmVzIHRoYXQgdGhlCiAgICAgLy8gdmFs
dWUgd2UgeWllbGQgZm9yIGVhY2gga2V5IGlzIHRoZSBmaXJzdCBkdXBsaWNhdGUgaW4gZm9yd2Fy
ZHMKICAgICAvLyBvcmRlci4KICAgICBSZWZQdHI8SURCS2V5PiBsYXN0RHVwbGljYXRlS2V5OwpA
QCAtMTcxNywxMiArMTcxNywxMiBAQCBib29sIEluZGV4Q3Vyc29ySW1wbDo6bG9hZEN1cnJlbnRS
b3coKQogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIG9iamVjdFN0b3JlQ3Vyc29yT3B0aW9u
cyhMZXZlbERCVHJhbnNhY3Rpb24qIHRyYW5zYWN0aW9uLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGlu
dDY0X3Qgb2JqZWN0U3RvcmVJZCwgY29uc3QgSURCS2V5UmFuZ2UqIHJhbmdlLCBJREJDdXJzb3I6
OkRpcmVjdGlvbiBkaXJlY3Rpb24sIElEQkJhY2tpbmdTdG9yZTo6Q3Vyc29yOjpDdXJzb3JPcHRp
b25zJiBjdXJzb3JPcHRpb25zKQorYm9vbCBvYmplY3RTdG9yZUN1cnNvck9wdGlvbnMoTGV2ZWxE
QlRyYW5zYWN0aW9uKiB0cmFuc2FjdGlvbiwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9i
amVjdFN0b3JlSWQsIGNvbnN0IElEQktleVJhbmdlKiByYW5nZSwgSW5kZXhlZERCOjpDdXJzb3JE
aXJlY3Rpb24gZGlyZWN0aW9uLCBJREJCYWNraW5nU3RvcmU6OkN1cnNvcjo6Q3Vyc29yT3B0aW9u
cyYgY3Vyc29yT3B0aW9ucykKIHsKICAgICBib29sIGxvd2VyQm91bmQgPSByYW5nZSAmJiByYW5n
ZS0+bG93ZXIoKTsKICAgICBib29sIHVwcGVyQm91bmQgPSByYW5nZSAmJiByYW5nZS0+dXBwZXIo
KTsKLSAgICBjdXJzb3JPcHRpb25zLmZvcndhcmQgPSAoZGlyZWN0aW9uID09IElEQkN1cnNvcjo6
TkVYVF9OT19EVVBMSUNBVEUgfHwgZGlyZWN0aW9uID09IElEQkN1cnNvcjo6TkVYVCk7Ci0gICAg
Y3Vyc29yT3B0aW9ucy51bmlxdWUgPSAoZGlyZWN0aW9uID09IElEQkN1cnNvcjo6TkVYVF9OT19E
VVBMSUNBVEUgfHwgZGlyZWN0aW9uID09IElEQkN1cnNvcjo6UFJFVl9OT19EVVBMSUNBVEUpOwor
ICAgIGN1cnNvck9wdGlvbnMuZm9yd2FyZCA9IChkaXJlY3Rpb24gPT0gSW5kZXhlZERCOjpDdXJz
b3JOZXh0Tm9EdXBsaWNhdGUgfHwgZGlyZWN0aW9uID09IEluZGV4ZWREQjo6Q3Vyc29yTmV4dCk7
CisgICAgY3Vyc29yT3B0aW9ucy51bmlxdWUgPSAoZGlyZWN0aW9uID09IEluZGV4ZWREQjo6Q3Vy
c29yTmV4dE5vRHVwbGljYXRlIHx8IGRpcmVjdGlvbiA9PSBJbmRleGVkREI6OkN1cnNvclByZXZO
b0R1cGxpY2F0ZSk7CiAKICAgICBpZiAoIWxvd2VyQm91bmQpIHsKICAgICAgICAgY3Vyc29yT3B0
aW9ucy5sb3dLZXkgPSBPYmplY3RTdG9yZURhdGFLZXk6OmVuY29kZShkYXRhYmFzZUlkLCBvYmpl
Y3RTdG9yZUlkLCBtaW5JREJLZXkoKSk7CkBAIC0xNzY0LDEzICsxNzY0LDEzIEBAIGJvb2wgb2Jq
ZWN0U3RvcmVDdXJzb3JPcHRpb25zKExldmVsREJUcmFuc2FjdGlvbiogdHJhbnNhY3Rpb24sIGlu
dDY0X3QgZGF0YWJhc2VJCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgaW5kZXhDdXJzb3JP
cHRpb25zKExldmVsREJUcmFuc2FjdGlvbiogdHJhbnNhY3Rpb24sIGludDY0X3QgZGF0YWJhc2VJ
ZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBpbnQ2NF90IGluZGV4SWQsIGNvbnN0IElEQktleVJh
bmdlKiByYW5nZSwgSURCQ3Vyc29yOjpEaXJlY3Rpb24gZGlyZWN0aW9uLCBJREJCYWNraW5nU3Rv
cmU6OkN1cnNvcjo6Q3Vyc29yT3B0aW9ucyYgY3Vyc29yT3B0aW9ucykKK2Jvb2wgaW5kZXhDdXJz
b3JPcHRpb25zKExldmVsREJUcmFuc2FjdGlvbiogdHJhbnNhY3Rpb24sIGludDY0X3QgZGF0YWJh
c2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBpbnQ2NF90IGluZGV4SWQsIGNvbnN0IElEQktl
eVJhbmdlKiByYW5nZSwgSW5kZXhlZERCOjpDdXJzb3JEaXJlY3Rpb24gZGlyZWN0aW9uLCBJREJC
YWNraW5nU3RvcmU6OkN1cnNvcjo6Q3Vyc29yT3B0aW9ucyYgY3Vyc29yT3B0aW9ucykKIHsKICAg
ICBBU1NFUlQodHJhbnNhY3Rpb24pOwogICAgIGJvb2wgbG93ZXJCb3VuZCA9IHJhbmdlICYmIHJh
bmdlLT5sb3dlcigpOwogICAgIGJvb2wgdXBwZXJCb3VuZCA9IHJhbmdlICYmIHJhbmdlLT51cHBl
cigpOwotICAgIGN1cnNvck9wdGlvbnMuZm9yd2FyZCA9IChkaXJlY3Rpb24gPT0gSURCQ3Vyc29y
OjpORVhUX05PX0RVUExJQ0FURSB8fCBkaXJlY3Rpb24gPT0gSURCQ3Vyc29yOjpORVhUKTsKLSAg
ICBjdXJzb3JPcHRpb25zLnVuaXF1ZSA9IChkaXJlY3Rpb24gPT0gSURCQ3Vyc29yOjpORVhUX05P
X0RVUExJQ0FURSB8fCBkaXJlY3Rpb24gPT0gSURCQ3Vyc29yOjpQUkVWX05PX0RVUExJQ0FURSk7
CisgICAgY3Vyc29yT3B0aW9ucy5mb3J3YXJkID0gKGRpcmVjdGlvbiA9PSBJbmRleGVkREI6OkN1
cnNvck5leHROb0R1cGxpY2F0ZSB8fCBkaXJlY3Rpb24gPT0gSW5kZXhlZERCOjpDdXJzb3JOZXh0
KTsKKyAgICBjdXJzb3JPcHRpb25zLnVuaXF1ZSA9IChkaXJlY3Rpb24gPT0gSW5kZXhlZERCOjpD
dXJzb3JOZXh0Tm9EdXBsaWNhdGUgfHwgZGlyZWN0aW9uID09IEluZGV4ZWREQjo6Q3Vyc29yUHJl
dk5vRHVwbGljYXRlKTsKIAogICAgIGlmICghbG93ZXJCb3VuZCkgewogICAgICAgICBjdXJzb3JP
cHRpb25zLmxvd0tleSA9IEluZGV4RGF0YUtleTo6ZW5jb2RlTWluS2V5KGRhdGFiYXNlSWQsIG9i
amVjdFN0b3JlSWQsIGluZGV4SWQpOwpAQCAtMTgwNyw3ICsxODA3LDcgQEAgYm9vbCBpbmRleEN1
cnNvck9wdGlvbnMoTGV2ZWxEQlRyYW5zYWN0aW9uKiB0cmFuc2FjdGlvbiwgaW50NjRfdCBkYXRh
YmFzZUlkLCBpbnQKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotUGFzc1JlZlB0cjxJREJCYWNraW5n
U3RvcmU6OkN1cnNvcj4gSURCQmFja2luZ1N0b3JlOjpvcGVuT2JqZWN0U3RvcmVDdXJzb3IoSURC
QmFja2luZ1N0b3JlOjpUcmFuc2FjdGlvbiogdHJhbnNhY3Rpb24sIGludDY0X3QgZGF0YWJhc2VJ
ZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBjb25zdCBJREJLZXlSYW5nZSogcmFuZ2UsIElEQkN1
cnNvcjo6RGlyZWN0aW9uIGRpcmVjdGlvbikKK1Bhc3NSZWZQdHI8SURCQmFja2luZ1N0b3JlOjpD
dXJzb3I+IElEQkJhY2tpbmdTdG9yZTo6b3Blbk9iamVjdFN0b3JlQ3Vyc29yKElEQkJhY2tpbmdT
dG9yZTo6VHJhbnNhY3Rpb24qIHRyYW5zYWN0aW9uLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0
X3Qgb2JqZWN0U3RvcmVJZCwgY29uc3QgSURCS2V5UmFuZ2UqIHJhbmdlLCBJbmRleGVkREI6OkN1
cnNvckRpcmVjdGlvbiBkaXJlY3Rpb24pCiB7CiAgICAgSURCX1RSQUNFKCJJREJCYWNraW5nU3Rv
cmU6Om9wZW5PYmplY3RTdG9yZUN1cnNvciIpOwogICAgIExldmVsREJUcmFuc2FjdGlvbiogbGV2
ZWxEQlRyYW5zYWN0aW9uID0gSURCQmFja2luZ1N0b3JlOjpUcmFuc2FjdGlvbjo6bGV2ZWxEQlRy
YW5zYWN0aW9uRnJvbSh0cmFuc2FjdGlvbik7CkBAIC0xODIxLDcgKzE4MjEsNyBAQCBQYXNzUmVm
UHRyPElEQkJhY2tpbmdTdG9yZTo6Q3Vyc29yPiBJREJCYWNraW5nU3RvcmU6Om9wZW5PYmplY3RT
dG9yZUN1cnNvcihJREJCYQogICAgIHJldHVybiBjdXJzb3IucmVsZWFzZSgpOwogfQogCi1QYXNz
UmVmUHRyPElEQkJhY2tpbmdTdG9yZTo6Q3Vyc29yPiBJREJCYWNraW5nU3RvcmU6Om9wZW5PYmpl
Y3RTdG9yZUtleUN1cnNvcihJREJCYWNraW5nU3RvcmU6OlRyYW5zYWN0aW9uKiB0cmFuc2FjdGlv
biwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGNvbnN0IElEQktl
eVJhbmdlKiByYW5nZSwgSURCQ3Vyc29yOjpEaXJlY3Rpb24gZGlyZWN0aW9uKQorUGFzc1JlZlB0
cjxJREJCYWNraW5nU3RvcmU6OkN1cnNvcj4gSURCQmFja2luZ1N0b3JlOjpvcGVuT2JqZWN0U3Rv
cmVLZXlDdXJzb3IoSURCQmFja2luZ1N0b3JlOjpUcmFuc2FjdGlvbiogdHJhbnNhY3Rpb24sIGlu
dDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBjb25zdCBJREJLZXlSYW5n
ZSogcmFuZ2UsIEluZGV4ZWREQjo6Q3Vyc29yRGlyZWN0aW9uIGRpcmVjdGlvbikKIHsKICAgICBJ
REJfVFJBQ0UoIklEQkJhY2tpbmdTdG9yZTo6b3Blbk9iamVjdFN0b3JlS2V5Q3Vyc29yIik7CiAg
ICAgTGV2ZWxEQlRyYW5zYWN0aW9uKiBsZXZlbERCVHJhbnNhY3Rpb24gPSBJREJCYWNraW5nU3Rv
cmU6OlRyYW5zYWN0aW9uOjpsZXZlbERCVHJhbnNhY3Rpb25Gcm9tKHRyYW5zYWN0aW9uKTsKQEAg
LTE4MzUsNyArMTgzNSw3IEBAIFBhc3NSZWZQdHI8SURCQmFja2luZ1N0b3JlOjpDdXJzb3I+IElE
QkJhY2tpbmdTdG9yZTo6b3Blbk9iamVjdFN0b3JlS2V5Q3Vyc29yKElECiAgICAgcmV0dXJuIGN1
cnNvci5yZWxlYXNlKCk7CiB9CiAKLVBhc3NSZWZQdHI8SURCQmFja2luZ1N0b3JlOjpDdXJzb3I+
IElEQkJhY2tpbmdTdG9yZTo6b3BlbkluZGV4S2V5Q3Vyc29yKElEQkJhY2tpbmdTdG9yZTo6VHJh
bnNhY3Rpb24qIHRyYW5zYWN0aW9uLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0
U3RvcmVJZCwgaW50NjRfdCBpbmRleElkLCBjb25zdCBJREJLZXlSYW5nZSogcmFuZ2UsIElEQkN1
cnNvcjo6RGlyZWN0aW9uIGRpcmVjdGlvbikKK1Bhc3NSZWZQdHI8SURCQmFja2luZ1N0b3JlOjpD
dXJzb3I+IElEQkJhY2tpbmdTdG9yZTo6b3BlbkluZGV4S2V5Q3Vyc29yKElEQkJhY2tpbmdTdG9y
ZTo6VHJhbnNhY3Rpb24qIHRyYW5zYWN0aW9uLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qg
b2JqZWN0U3RvcmVJZCwgaW50NjRfdCBpbmRleElkLCBjb25zdCBJREJLZXlSYW5nZSogcmFuZ2Us
IEluZGV4ZWREQjo6Q3Vyc29yRGlyZWN0aW9uIGRpcmVjdGlvbikKIHsKICAgICBJREJfVFJBQ0Uo
IklEQkJhY2tpbmdTdG9yZTo6b3BlbkluZGV4S2V5Q3Vyc29yIik7CiAgICAgTGV2ZWxEQlRyYW5z
YWN0aW9uKiBsZXZlbERCVHJhbnNhY3Rpb24gPSBJREJCYWNraW5nU3RvcmU6OlRyYW5zYWN0aW9u
OjpsZXZlbERCVHJhbnNhY3Rpb25Gcm9tKHRyYW5zYWN0aW9uKTsKQEAgLTE4NDksNyArMTg0OSw3
IEBAIFBhc3NSZWZQdHI8SURCQmFja2luZ1N0b3JlOjpDdXJzb3I+IElEQkJhY2tpbmdTdG9yZTo6
b3BlbkluZGV4S2V5Q3Vyc29yKElEQkJhY2tpCiAgICAgcmV0dXJuIGN1cnNvci5yZWxlYXNlKCk7
CiB9CiAKLVBhc3NSZWZQdHI8SURCQmFja2luZ1N0b3JlOjpDdXJzb3I+IElEQkJhY2tpbmdTdG9y
ZTo6b3BlbkluZGV4Q3Vyc29yKElEQkJhY2tpbmdTdG9yZTo6VHJhbnNhY3Rpb24qIHRyYW5zYWN0
aW9uLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgaW50NjRfdCBp
bmRleElkLCBjb25zdCBJREJLZXlSYW5nZSogcmFuZ2UsIElEQkN1cnNvcjo6RGlyZWN0aW9uIGRp
cmVjdGlvbikKK1Bhc3NSZWZQdHI8SURCQmFja2luZ1N0b3JlOjpDdXJzb3I+IElEQkJhY2tpbmdT
dG9yZTo6b3BlbkluZGV4Q3Vyc29yKElEQkJhY2tpbmdTdG9yZTo6VHJhbnNhY3Rpb24qIHRyYW5z
YWN0aW9uLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgaW50NjRf
dCBpbmRleElkLCBjb25zdCBJREJLZXlSYW5nZSogcmFuZ2UsIEluZGV4ZWREQjo6Q3Vyc29yRGly
ZWN0aW9uIGRpcmVjdGlvbikKIHsKICAgICBJREJfVFJBQ0UoIklEQkJhY2tpbmdTdG9yZTo6b3Bl
bkluZGV4Q3Vyc29yIik7CiAgICAgTGV2ZWxEQlRyYW5zYWN0aW9uKiBsZXZlbERCVHJhbnNhY3Rp
b24gPSBJREJCYWNraW5nU3RvcmU6OlRyYW5zYWN0aW9uOjpsZXZlbERCVHJhbnNhY3Rpb25Gcm9t
KHRyYW5zYWN0aW9uKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL0lEQkJhY2tpbmdTdG9yZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
SURCQmFja2luZ1N0b3JlLmgKaW5kZXggOTIzZDdkY2E2ODA1MGI1NDE3Nzc5ZTZiOGQxODVjOTRj
ODAwNjgwNS4uZmNmZTJkYWU5MGMwYzRhZjBiNTAyMzVlNWExMTgyYTI3OTE5NmQ2MCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQmFja2luZ1N0b3JlLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQmFja2luZ1N0b3JlLmgK
QEAgLTI4LDggKzI4LDkgQEAKIAogI2lmIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQogCi0jaW5j
bHVkZSAiSURCQ3Vyc29yLmgiCisjaW5jbHVkZSAiSURCS2V5LmgiCiAjaW5jbHVkZSAiSURCTWV0
YWRhdGEuaCIKKyNpbmNsdWRlICJJbmRleGVkREIuaCIKICNpbmNsdWRlICJMZXZlbERCVHJhbnNh
Y3Rpb24uaCIKICNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50
ZWQuaD4KQEAgLTE0NSwxMCArMTQ2LDEwIEBAIHB1YmxpYzoKICAgICAgICAgSURCQmFja2luZ1N0
b3JlOjpSZWNvcmRJZGVudGlmaWVyIG1fcmVjb3JkSWRlbnRpZmllcjsKICAgICB9OwogCi0gICAg
dmlydHVhbCBQYXNzUmVmUHRyPEN1cnNvcj4gb3Blbk9iamVjdFN0b3JlS2V5Q3Vyc29yKElEQkJh
Y2tpbmdTdG9yZTo6VHJhbnNhY3Rpb24qLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2Jq
ZWN0U3RvcmVJZCwgY29uc3QgSURCS2V5UmFuZ2UqLCBJREJDdXJzb3I6OkRpcmVjdGlvbik7Ci0g
ICAgdmlydHVhbCBQYXNzUmVmUHRyPEN1cnNvcj4gb3Blbk9iamVjdFN0b3JlQ3Vyc29yKElEQkJh
Y2tpbmdTdG9yZTo6VHJhbnNhY3Rpb24qLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2Jq
ZWN0U3RvcmVJZCwgY29uc3QgSURCS2V5UmFuZ2UqLCBJREJDdXJzb3I6OkRpcmVjdGlvbik7Ci0g
ICAgdmlydHVhbCBQYXNzUmVmUHRyPEN1cnNvcj4gb3BlbkluZGV4S2V5Q3Vyc29yKElEQkJhY2tp
bmdTdG9yZTo6VHJhbnNhY3Rpb24qLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0
U3RvcmVJZCwgaW50NjRfdCBpbmRleElkLCBjb25zdCBJREJLZXlSYW5nZSosIElEQkN1cnNvcjo6
RGlyZWN0aW9uKTsKLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8Q3Vyc29yPiBvcGVuSW5kZXhDdXJz
b3IoSURCQmFja2luZ1N0b3JlOjpUcmFuc2FjdGlvbiosIGludDY0X3QgZGF0YWJhc2VJZCwgaW50
NjRfdCBvYmplY3RTdG9yZUlkLCBpbnQ2NF90IGluZGV4SWQsIGNvbnN0IElEQktleVJhbmdlKiwg
SURCQ3Vyc29yOjpEaXJlY3Rpb24pOworICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxDdXJzb3I+IG9w
ZW5PYmplY3RTdG9yZUtleUN1cnNvcihJREJCYWNraW5nU3RvcmU6OlRyYW5zYWN0aW9uKiwgaW50
NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGNvbnN0IElEQktleVJhbmdl
KiwgSW5kZXhlZERCOjpDdXJzb3JEaXJlY3Rpb24pOworICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxD
dXJzb3I+IG9wZW5PYmplY3RTdG9yZUN1cnNvcihJREJCYWNraW5nU3RvcmU6OlRyYW5zYWN0aW9u
KiwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGNvbnN0IElEQktl
eVJhbmdlKiwgSW5kZXhlZERCOjpDdXJzb3JEaXJlY3Rpb24pOworICAgIHZpcnR1YWwgUGFzc1Jl
ZlB0cjxDdXJzb3I+IG9wZW5JbmRleEtleUN1cnNvcihJREJCYWNraW5nU3RvcmU6OlRyYW5zYWN0
aW9uKiwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGludDY0X3Qg
aW5kZXhJZCwgY29uc3QgSURCS2V5UmFuZ2UqLCBJbmRleGVkREI6OkN1cnNvckRpcmVjdGlvbik7
CisgICAgdmlydHVhbCBQYXNzUmVmUHRyPEN1cnNvcj4gb3BlbkluZGV4Q3Vyc29yKElEQkJhY2tp
bmdTdG9yZTo6VHJhbnNhY3Rpb24qLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0
U3RvcmVJZCwgaW50NjRfdCBpbmRleElkLCBjb25zdCBJREJLZXlSYW5nZSosIEluZGV4ZWREQjo6
Q3Vyc29yRGlyZWN0aW9uKTsKIAogICAgIGNsYXNzIFRyYW5zYWN0aW9uIHsKICAgICBwdWJsaWM6
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3Iu
Y3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yLmNwcAppbmRl
eCA0NjhlZGJlYmE5MTExNjlhMDkzYTJlN2QyMzQ5MDg4ZmNjMjgzNmE1Li43YmIwZjUwMGU0N2I0
MjYxMzQwYTkzMjgxNThhZGU5M2UzNDg1NmM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL0lEQkN1cnNvci5jcHAKQEAgLTQzLDcgKzQzLDcgQEAKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCi1QYXNzUmVmUHRyPElEQkN1cnNvcj4gSURCQ3Vyc29yOjpjcmVhdGUoUGFz
c1JlZlB0cjxJREJDdXJzb3JCYWNrZW5kSW50ZXJmYWNlPiBiYWNrZW5kLCBEaXJlY3Rpb24gZGly
ZWN0aW9uLCBJREJSZXF1ZXN0KiByZXF1ZXN0LCBJREJBbnkqIHNvdXJjZSwgSURCVHJhbnNhY3Rp
b24qIHRyYW5zYWN0aW9uKQorUGFzc1JlZlB0cjxJREJDdXJzb3I+IElEQkN1cnNvcjo6Y3JlYXRl
KFBhc3NSZWZQdHI8SURCQ3Vyc29yQmFja2VuZEludGVyZmFjZT4gYmFja2VuZCwgSW5kZXhlZERC
OjpDdXJzb3JEaXJlY3Rpb24gZGlyZWN0aW9uLCBJREJSZXF1ZXN0KiByZXF1ZXN0LCBJREJBbnkq
IHNvdXJjZSwgSURCVHJhbnNhY3Rpb24qIHRyYW5zYWN0aW9uKQogewogICAgIHJldHVybiBhZG9w
dFJlZihuZXcgSURCQ3Vyc29yKGJhY2tlbmQsIGRpcmVjdGlvbiwgcmVxdWVzdCwgc291cmNlLCB0
cmFuc2FjdGlvbikpOwogfQpAQCAtNzMsNyArNzMsNyBAQCBjb25zdCBBdG9taWNTdHJpbmcmIElE
QkN1cnNvcjo6ZGlyZWN0aW9uUHJldlVuaXF1ZSgpCiB9CiAKIAotSURCQ3Vyc29yOjpJREJDdXJz
b3IoUGFzc1JlZlB0cjxJREJDdXJzb3JCYWNrZW5kSW50ZXJmYWNlPiBiYWNrZW5kLCBEaXJlY3Rp
b24gZGlyZWN0aW9uLCBJREJSZXF1ZXN0KiByZXF1ZXN0LCBJREJBbnkqIHNvdXJjZSwgSURCVHJh
bnNhY3Rpb24qIHRyYW5zYWN0aW9uKQorSURCQ3Vyc29yOjpJREJDdXJzb3IoUGFzc1JlZlB0cjxJ
REJDdXJzb3JCYWNrZW5kSW50ZXJmYWNlPiBiYWNrZW5kLCBJbmRleGVkREI6OkN1cnNvckRpcmVj
dGlvbiBkaXJlY3Rpb24sIElEQlJlcXVlc3QqIHJlcXVlc3QsIElEQkFueSogc291cmNlLCBJREJU
cmFuc2FjdGlvbiogdHJhbnNhY3Rpb24pCiAgICAgOiBtX2JhY2tlbmQoYmFja2VuZCkKICAgICAs
IG1fcmVxdWVzdChyZXF1ZXN0KQogICAgICwgbV9kaXJlY3Rpb24oZGlyZWN0aW9uKQpAQCAtMjA2
LDcgKzIwNiw3IEBAIHZvaWQgSURCQ3Vyc29yOjpjb250aW51ZUZ1bmN0aW9uKFBhc3NSZWZQdHI8
SURCS2V5PiBrZXksIEV4Y2VwdGlvbkNvZGUmIGVjKQogCiAgICAgaWYgKGtleSkgewogICAgICAg
ICBBU1NFUlQobV9jdXJyZW50S2V5KTsKLSAgICAgICAgaWYgKG1fZGlyZWN0aW9uID09IElEQkN1
cnNvcjo6TkVYVCB8fCBtX2RpcmVjdGlvbiA9PSBJREJDdXJzb3I6Ok5FWFRfTk9fRFVQTElDQVRF
KSB7CisgICAgICAgIGlmIChtX2RpcmVjdGlvbiA9PSBJbmRleGVkREI6OkN1cnNvck5leHQgfHwg
bV9kaXJlY3Rpb24gPT0gSW5kZXhlZERCOjpDdXJzb3JOZXh0Tm9EdXBsaWNhdGUpIHsKICAgICAg
ICAgICAgIGlmICghbV9jdXJyZW50S2V5LT5pc0xlc3NUaGFuKGtleS5nZXQoKSkpIHsKICAgICAg
ICAgICAgICAgICBlYyA9IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpEYXRhRXJyb3I7CiAgICAgICAg
ICAgICAgICAgcmV0dXJuOwpAQCAtMjk4LDM0ICsyOTgsMzQgQEAgUGFzc1JlZlB0cjxJREJPYmpl
Y3RTdG9yZT4gSURCQ3Vyc29yOjplZmZlY3RpdmVPYmplY3RTdG9yZSgpCiAgICAgcmV0dXJuIGlu
ZGV4LT5vYmplY3RTdG9yZSgpOwogfQogCi1JREJDdXJzb3I6OkRpcmVjdGlvbiBJREJDdXJzb3I6
OnN0cmluZ1RvRGlyZWN0aW9uKGNvbnN0IFN0cmluZyYgZGlyZWN0aW9uU3RyaW5nLCBTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBFeGNlcHRpb25Db2RlJiBlYykKK0luZGV4ZWREQjo6
Q3Vyc29yRGlyZWN0aW9uIElEQkN1cnNvcjo6c3RyaW5nVG9EaXJlY3Rpb24oY29uc3QgU3RyaW5n
JiBkaXJlY3Rpb25TdHJpbmcsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIEV4Y2Vw
dGlvbkNvZGUmIGVjKQogewogICAgIGlmIChkaXJlY3Rpb25TdHJpbmcgPT0gSURCQ3Vyc29yOjpk
aXJlY3Rpb25OZXh0KCkpCi0gICAgICAgIHJldHVybiBJREJDdXJzb3I6Ok5FWFQ7CisgICAgICAg
IHJldHVybiBJbmRleGVkREI6OkN1cnNvck5leHQ7CiAgICAgaWYgKGRpcmVjdGlvblN0cmluZyA9
PSBJREJDdXJzb3I6OmRpcmVjdGlvbk5leHRVbmlxdWUoKSkKLSAgICAgICAgcmV0dXJuIElEQkN1
cnNvcjo6TkVYVF9OT19EVVBMSUNBVEU7CisgICAgICAgIHJldHVybiBJbmRleGVkREI6OkN1cnNv
ck5leHROb0R1cGxpY2F0ZTsKICAgICBpZiAoZGlyZWN0aW9uU3RyaW5nID09IElEQkN1cnNvcjo6
ZGlyZWN0aW9uUHJldigpKQotICAgICAgICByZXR1cm4gSURCQ3Vyc29yOjpQUkVWOworICAgICAg
ICByZXR1cm4gSW5kZXhlZERCOjpDdXJzb3JQcmV2OwogICAgIGlmIChkaXJlY3Rpb25TdHJpbmcg
PT0gSURCQ3Vyc29yOjpkaXJlY3Rpb25QcmV2VW5pcXVlKCkpCi0gICAgICAgIHJldHVybiBJREJD
dXJzb3I6OlBSRVZfTk9fRFVQTElDQVRFOworICAgICAgICByZXR1cm4gSW5kZXhlZERCOjpDdXJz
b3JQcmV2Tm9EdXBsaWNhdGU7CiAKICAgICBlYyA9IFR5cGVFcnJvcjsKLSAgICByZXR1cm4gSURC
Q3Vyc29yOjpORVhUOworICAgIHJldHVybiBJbmRleGVkREI6OkN1cnNvck5leHQ7CiB9CiAKIGNv
bnN0IEF0b21pY1N0cmluZyYgSURCQ3Vyc29yOjpkaXJlY3Rpb25Ub1N0cmluZyh1bnNpZ25lZCBz
aG9ydCBkaXJlY3Rpb24pCiB7CiAgICAgc3dpdGNoIChkaXJlY3Rpb24pIHsKLSAgICBjYXNlIElE
QkN1cnNvcjo6TkVYVDoKKyAgICBjYXNlIEluZGV4ZWREQjo6Q3Vyc29yTmV4dDoKICAgICAgICAg
cmV0dXJuIElEQkN1cnNvcjo6ZGlyZWN0aW9uTmV4dCgpOwogCi0gICAgY2FzZSBJREJDdXJzb3I6
Ok5FWFRfTk9fRFVQTElDQVRFOgorICAgIGNhc2UgSW5kZXhlZERCOjpDdXJzb3JOZXh0Tm9EdXBs
aWNhdGU6CiAgICAgICAgIHJldHVybiBJREJDdXJzb3I6OmRpcmVjdGlvbk5leHRVbmlxdWUoKTsK
IAotICAgIGNhc2UgSURCQ3Vyc29yOjpQUkVWOgorICAgIGNhc2UgSW5kZXhlZERCOjpDdXJzb3JQ
cmV2OgogICAgICAgICByZXR1cm4gSURCQ3Vyc29yOjpkaXJlY3Rpb25QcmV2KCk7CiAKLSAgICBj
YXNlIElEQkN1cnNvcjo6UFJFVl9OT19EVVBMSUNBVEU6CisgICAgY2FzZSBJbmRleGVkREI6OkN1
cnNvclByZXZOb0R1cGxpY2F0ZToKICAgICAgICAgcmV0dXJuIElEQkN1cnNvcjo6ZGlyZWN0aW9u
UHJldlVuaXF1ZSgpOwogCiAgICAgZGVmYXVsdDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvSURCQ3Vyc29yLmgKaW5kZXggMWM4MzE2NDAyNmRhNDRiM2YwOGVmOTNmZjQyZTNh
YjQ1ZmZmNTkyYy4uMThkMjAwZWE2MTA2Nzc5N2VhNGM5ZWRjNTE2MWQxNWRiNGIzZGFlNyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yLmgKQEAgLTMwLDYg
KzMwLDcgQEAKIAogI2luY2x1ZGUgIklEQktleS5oIgogI2luY2x1ZGUgIklEQlRyYW5zYWN0aW9u
LmgiCisjaW5jbHVkZSAiSW5kZXhlZERCLmgiCiAjaW5jbHVkZSAiU2NyaXB0VmFsdWUuaCIKICNp
bmNsdWRlICJTY3JpcHRXcmFwcGFibGUuaCIKICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgpA
QCAtNDksMjIgKzUwLDE1IEBAIHR5cGVkZWYgaW50IEV4Y2VwdGlvbkNvZGU7CiAKIGNsYXNzIElE
QkN1cnNvciA6IHB1YmxpYyBTY3JpcHRXcmFwcGFibGUsIHB1YmxpYyBSZWZDb3VudGVkPElEQkN1
cnNvcj4gewogcHVibGljOgotICAgIGVudW0gRGlyZWN0aW9uIHsKLSAgICAgICAgTkVYVCA9IDAs
Ci0gICAgICAgIE5FWFRfTk9fRFVQTElDQVRFID0gMSwKLSAgICAgICAgUFJFViA9IDIsCi0gICAg
ICAgIFBSRVZfTk9fRFVQTElDQVRFID0gMywKLSAgICB9OwotCiAgICAgc3RhdGljIGNvbnN0IEF0
b21pY1N0cmluZyYgZGlyZWN0aW9uTmV4dCgpOwogICAgIHN0YXRpYyBjb25zdCBBdG9taWNTdHJp
bmcmIGRpcmVjdGlvbk5leHRVbmlxdWUoKTsKICAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5n
JiBkaXJlY3Rpb25QcmV2KCk7CiAgICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYgZGlyZWN0
aW9uUHJldlVuaXF1ZSgpOwogCi0gICAgc3RhdGljIElEQkN1cnNvcjo6RGlyZWN0aW9uIHN0cmlu
Z1RvRGlyZWN0aW9uKGNvbnN0IFN0cmluZyYgbW9kZVN0cmluZywgU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCosIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICBzdGF0aWMgSW5kZXhlZERCOjpDdXJzb3JEaXJl
Y3Rpb24gc3RyaW5nVG9EaXJlY3Rpb24oY29uc3QgU3RyaW5nJiBtb2RlU3RyaW5nLCBTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiwgRXhjZXB0aW9uQ29kZSYpOwogICAgIHN0YXRpYyBjb25zdCBBdG9t
aWNTdHJpbmcmIGRpcmVjdGlvblRvU3RyaW5nKHVuc2lnbmVkIHNob3J0IG1vZGUpOwogCi0gICAg
c3RhdGljIFBhc3NSZWZQdHI8SURCQ3Vyc29yPiBjcmVhdGUoUGFzc1JlZlB0cjxJREJDdXJzb3JC
YWNrZW5kSW50ZXJmYWNlPiwgRGlyZWN0aW9uLCBJREJSZXF1ZXN0KiwgSURCQW55KiBzb3VyY2Us
IElEQlRyYW5zYWN0aW9uKik7CisgICAgc3RhdGljIFBhc3NSZWZQdHI8SURCQ3Vyc29yPiBjcmVh
dGUoUGFzc1JlZlB0cjxJREJDdXJzb3JCYWNrZW5kSW50ZXJmYWNlPiwgSW5kZXhlZERCOjpDdXJz
b3JEaXJlY3Rpb24sIElEQlJlcXVlc3QqLCBJREJBbnkqIHNvdXJjZSwgSURCVHJhbnNhY3Rpb24q
KTsKICAgICB2aXJ0dWFsIH5JREJDdXJzb3IoKTsKIAogICAgIC8vIEltcGxlbWVudCB0aGUgSURM
CkBAIC04OSw3ICs4Myw3IEBAIHB1YmxpYzoKICAgICBQYXNzUmVmUHRyPElEQktleT4gaWRiUHJp
bWFyeUtleSgpIHsgcmV0dXJuIG1fY3VycmVudFByaW1hcnlLZXk7IH0KIAogcHJvdGVjdGVkOgot
ICAgIElEQkN1cnNvcihQYXNzUmVmUHRyPElEQkN1cnNvckJhY2tlbmRJbnRlcmZhY2U+LCBEaXJl
Y3Rpb24sIElEQlJlcXVlc3QqLCBJREJBbnkqIHNvdXJjZSwgSURCVHJhbnNhY3Rpb24qKTsKKyAg
ICBJREJDdXJzb3IoUGFzc1JlZlB0cjxJREJDdXJzb3JCYWNrZW5kSW50ZXJmYWNlPiwgSW5kZXhl
ZERCOjpDdXJzb3JEaXJlY3Rpb24sIElEQlJlcXVlc3QqLCBJREJBbnkqIHNvdXJjZSwgSURCVHJh
bnNhY3Rpb24qKTsKICAgICB2aXJ0dWFsIGJvb2wgaXNLZXlDdXJzb3IoKSBjb25zdCB7IHJldHVy
biB0cnVlOyB9CiAKIHByaXZhdGU6CkBAIC05Nyw3ICs5MSw3IEBAIHByaXZhdGU6CiAKICAgICBS
ZWZQdHI8SURCQ3Vyc29yQmFja2VuZEludGVyZmFjZT4gbV9iYWNrZW5kOwogICAgIFJlZlB0cjxJ
REJSZXF1ZXN0PiBtX3JlcXVlc3Q7Ci0gICAgY29uc3QgRGlyZWN0aW9uIG1fZGlyZWN0aW9uOwor
ICAgIGNvbnN0IEluZGV4ZWREQjo6Q3Vyc29yRGlyZWN0aW9uIG1fZGlyZWN0aW9uOwogICAgIFJl
ZlB0cjxJREJBbnk+IG1fc291cmNlOwogICAgIFJlZlB0cjxJREJUcmFuc2FjdGlvbj4gbV90cmFu
c2FjdGlvbjsKICAgICBJREJUcmFuc2FjdGlvbjo6T3BlbkN1cnNvck5vdGlmaWVyIG1fdHJhbnNh
Y3Rpb25Ob3RpZmllcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL0lEQkN1cnNvckJhY2tlbmRJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL0lEQkN1cnNvckJhY2tlbmRJbXBsLmNwcAppbmRleCAzMzJkOTAxNDI1YWIxYmFhNGE0
NGQ4ODljMWQ1ZDIxMmQ2MjgwZWQ4Li4xMzYwZmI5MDIwNWVhMTk4Zjc4YzAzMDdmOTZjNjI5ZTk4
MmZlMzU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJD
dXJzb3JCYWNrZW5kSW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvSURCQ3Vyc29yQmFja2VuZEltcGwuY3BwCkBAIC0zNCw3ICszNCw2IEBACiAjaW5jbHVkZSAi
SURCRGF0YWJhc2VFcnJvci5oIgogI2luY2x1ZGUgIklEQkRhdGFiYXNlRXhjZXB0aW9uLmgiCiAj
aW5jbHVkZSAiSURCS2V5UmFuZ2UuaCIKLSNpbmNsdWRlICJJREJSZXF1ZXN0LmgiCiAjaW5jbHVk
ZSAiSURCVHJhY2luZy5oIgogI2luY2x1ZGUgIklEQlRyYW5zYWN0aW9uQmFja2VuZEltcGwuaCIK
ICNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKQEAgLTEwMSw3ICsxMDAsNyBAQCBwcml2YXRlOgog
ICAgIFJlZlB0cjxJREJDYWxsYmFja3M+IG1fY2FsbGJhY2tzOwogfTsKIAotSURCQ3Vyc29yQmFj
a2VuZEltcGw6OklEQkN1cnNvckJhY2tlbmRJbXBsKFBhc3NSZWZQdHI8SURCQmFja2luZ1N0b3Jl
OjpDdXJzb3I+IGN1cnNvciwgQ3Vyc29yVHlwZSBjdXJzb3JUeXBlLCBJREJEYXRhYmFzZUJhY2tl
bmRJbnRlcmZhY2U6OlRhc2tUeXBlIHRhc2tUeXBlLCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBs
KiB0cmFuc2FjdGlvbiwgaW50NjRfdCBvYmplY3RTdG9yZUlkKQorSURCQ3Vyc29yQmFja2VuZElt
cGw6OklEQkN1cnNvckJhY2tlbmRJbXBsKFBhc3NSZWZQdHI8SURCQmFja2luZ1N0b3JlOjpDdXJz
b3I+IGN1cnNvciwgSW5kZXhlZERCOjpDdXJzb3JUeXBlIGN1cnNvclR5cGUsIElEQkRhdGFiYXNl
QmFja2VuZEludGVyZmFjZTo6VGFza1R5cGUgdGFza1R5cGUsIElEQlRyYW5zYWN0aW9uQmFja2Vu
ZEltcGwqIHRyYW5zYWN0aW9uLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQpCiAgICAgOiBtX3Rhc2tU
eXBlKHRhc2tUeXBlKQogICAgICwgbV9jdXJzb3JUeXBlKGN1cnNvclR5cGUpCiAgICAgLCBtX2Rh
dGFiYXNlKHRyYW5zYWN0aW9uLT5kYXRhYmFzZSgpKQpAQCAtMTYwLDcgKzE1OSw3IEBAIHZvaWQg
SURCQ3Vyc29yQmFja2VuZEltcGw6OkN1cnNvckl0ZXJhdGlvbk9wZXJhdGlvbjo6cGVyZm9ybShJ
REJUcmFuc2FjdGlvbkJhY2tlCiB2b2lkIElEQkN1cnNvckJhY2tlbmRJbXBsOjpkZWxldGVGdW5j
dGlvbihQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gcHJwQ2FsbGJhY2tzLCBFeGNlcHRpb25Db2Rl
JikKIHsKICAgICBJREJfVFJBQ0UoIklEQkN1cnNvckJhY2tlbmRJbXBsOjpkZWxldGUiKTsKLSAg
ICBBU1NFUlQobV90cmFuc2FjdGlvbi0+bW9kZSgpICE9IElEQlRyYW5zYWN0aW9uOjpSRUFEX09O
TFkpOworICAgIEFTU0VSVChtX3RyYW5zYWN0aW9uLT5tb2RlKCkgIT0gSW5kZXhlZERCOjpUcmFu
c2FjdGlvblJlYWRPbmx5KTsKICAgICBSZWZQdHI8SURCS2V5UmFuZ2U+IGtleVJhbmdlID0gSURC
S2V5UmFuZ2U6OmNyZWF0ZShtX2N1cnNvci0+cHJpbWFyeUtleSgpKTsKICAgICBtX2RhdGFiYXNl
LT5kZWxldGVSYW5nZShtX3RyYW5zYWN0aW9uLT5pZCgpLCBtX29iamVjdFN0b3JlSWQsIGtleVJh
bmdlLnJlbGVhc2UoKSwgcHJwQ2FsbGJhY2tzKTsKIH0KQEAgLTE5NiwxMCArMTk1LDEwIEBAIHZv
aWQgSURCQ3Vyc29yQmFja2VuZEltcGw6OkN1cnNvclByZWZldGNoSXRlcmF0aW9uT3BlcmF0aW9u
OjpwZXJmb3JtKElEQlRyYW5zYWN0CiAgICAgICAgIGZvdW5kUHJpbWFyeUtleXMuYXBwZW5kKG1f
Y3Vyc29yLT5tX2N1cnNvci0+cHJpbWFyeUtleSgpKTsKIAogICAgICAgICBzd2l0Y2ggKG1fY3Vy
c29yLT5tX2N1cnNvclR5cGUpIHsKLSAgICAgICAgY2FzZSBLZXlPbmx5OgorICAgICAgICBjYXNl
IEluZGV4ZWREQjo6Q3Vyc29yS2V5T25seToKICAgICAgICAgICAgIGZvdW5kVmFsdWVzLmFwcGVu
ZChTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpKTsKICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBj
YXNlIEtleUFuZFZhbHVlOgorICAgICAgICBjYXNlIEluZGV4ZWREQjo6Q3Vyc29yS2V5QW5kVmFs
dWU6CiAgICAgICAgICAgICBzaXplRXN0aW1hdGUgKz0gbV9jdXJzb3ItPm1fY3Vyc29yLT52YWx1
ZSgpLT5zaXplKCk7CiAgICAgICAgICAgICBmb3VuZFZhbHVlcy5hcHBlbmQobV9jdXJzb3ItPm1f
Y3Vyc29yLT52YWx1ZSgpKTsKICAgICAgICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yQmFja2VuZEltcGwuaCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvckJhY2tlbmRJbXBsLmgKaW5kZXgg
Njk5ZTJmNThkNmQxNzYyMWY0Y2ExMjRmZDJlYzhiMGIxMzMxMmE0OC4uNTVlMjZiYjdkNDQ4ZmQ0
YjFlMTY1YTVjYmQzNmU4MzhjYTJlMzU0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yQmFja2VuZEltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3JCYWNrZW5kSW1wbC5oCkBAIC0zMCw3ICszMCw2
IEBACiAjaWYgRU5BQkxFKElOREVYRURfREFUQUJBU0UpCiAKICNpbmNsdWRlICJJREJCYWNraW5n
U3RvcmUuaCIKLSNpbmNsdWRlICJJREJDdXJzb3IuaCIKICNpbmNsdWRlICJJREJDdXJzb3JCYWNr
ZW5kSW50ZXJmYWNlLmgiCiAjaW5jbHVkZSAiSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbC5oIgog
I2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgpAQCAtNDUsMTEgKzQ0LDExIEBAIGNsYXNzIElEQktl
eVJhbmdlOwogCiBjbGFzcyBJREJDdXJzb3JCYWNrZW5kSW1wbCA6IHB1YmxpYyBJREJDdXJzb3JC
YWNrZW5kSW50ZXJmYWNlIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxJREJDdXJz
b3JCYWNrZW5kSW1wbD4gY3JlYXRlKFBhc3NSZWZQdHI8SURCQmFja2luZ1N0b3JlOjpDdXJzb3I+
IGN1cnNvciwgQ3Vyc29yVHlwZSBjdXJzb3JUeXBlLCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBs
KiB0cmFuc2FjdGlvbiwgaW50NjRfdCBvYmplY3RTdG9yZUlkKQorICAgIHN0YXRpYyBQYXNzUmVm
UHRyPElEQkN1cnNvckJhY2tlbmRJbXBsPiBjcmVhdGUoUGFzc1JlZlB0cjxJREJCYWNraW5nU3Rv
cmU6OkN1cnNvcj4gY3Vyc29yLCBJbmRleGVkREI6OkN1cnNvclR5cGUgY3Vyc29yVHlwZSwgSURC
VHJhbnNhY3Rpb25CYWNrZW5kSW1wbCogdHJhbnNhY3Rpb24sIGludDY0X3Qgb2JqZWN0U3RvcmVJ
ZCkKICAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgSURCQ3Vyc29yQmFja2VuZElt
cGwoY3Vyc29yLCBjdXJzb3JUeXBlLCBJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2U6Ok5vcm1h
bFRhc2ssIHRyYW5zYWN0aW9uLCBvYmplY3RTdG9yZUlkKSk7CiAgICAgfQotICAgIHN0YXRpYyBQ
YXNzUmVmUHRyPElEQkN1cnNvckJhY2tlbmRJbXBsPiBjcmVhdGUoUGFzc1JlZlB0cjxJREJCYWNr
aW5nU3RvcmU6OkN1cnNvcj4gY3Vyc29yLCBDdXJzb3JUeXBlIGN1cnNvclR5cGUsIElEQkRhdGFi
YXNlQmFja2VuZEludGVyZmFjZTo6VGFza1R5cGUgdGFza1R5cGUsIElEQlRyYW5zYWN0aW9uQmFj
a2VuZEltcGwqIHRyYW5zYWN0aW9uLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQpCisgICAgc3RhdGlj
IFBhc3NSZWZQdHI8SURCQ3Vyc29yQmFja2VuZEltcGw+IGNyZWF0ZShQYXNzUmVmUHRyPElEQkJh
Y2tpbmdTdG9yZTo6Q3Vyc29yPiBjdXJzb3IsIEluZGV4ZWREQjo6Q3Vyc29yVHlwZSBjdXJzb3JU
eXBlLCBJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2U6OlRhc2tUeXBlIHRhc2tUeXBlLCBJREJU
cmFuc2FjdGlvbkJhY2tlbmRJbXBsKiB0cmFuc2FjdGlvbiwgaW50NjRfdCBvYmplY3RTdG9yZUlk
KQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBJREJDdXJzb3JCYWNrZW5kSW1w
bChjdXJzb3IsIGN1cnNvclR5cGUsIHRhc2tUeXBlLCB0cmFuc2FjdGlvbiwgb2JqZWN0U3RvcmVJ
ZCkpOwogICAgIH0KQEAgLTY1LDE4ICs2NCwxOCBAQCBwdWJsaWM6CiAKICAgICBQYXNzUmVmUHRy
PElEQktleT4ga2V5KCkgY29uc3QgeyByZXR1cm4gbV9jdXJzb3ItPmtleSgpOyB9CiAgICAgUGFz
c1JlZlB0cjxJREJLZXk+IHByaW1hcnlLZXkoKSBjb25zdCB7IHJldHVybiBtX2N1cnNvci0+cHJp
bWFyeUtleSgpOyB9Ci0gICAgUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+IHZhbHVlKCkgY29uc3Qg
eyByZXR1cm4gKG1fY3Vyc29yVHlwZSA9PSBLZXlPbmx5KSA/IDAgOiBtX2N1cnNvci0+dmFsdWUo
KTsgfQorICAgIFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiB2YWx1ZSgpIGNvbnN0IHsgcmV0dXJu
IChtX2N1cnNvclR5cGUgPT0gSW5kZXhlZERCOjpDdXJzb3JLZXlPbmx5KSA/IDAgOiBtX2N1cnNv
ci0+dmFsdWUoKTsgfQogICAgIHZvaWQgY2xvc2UoKTsKIAogcHJpdmF0ZToKLSAgICBJREJDdXJz
b3JCYWNrZW5kSW1wbChQYXNzUmVmUHRyPElEQkJhY2tpbmdTdG9yZTo6Q3Vyc29yPiwgQ3Vyc29y
VHlwZSwgSURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlOjpUYXNrVHlwZSwgSURCVHJhbnNhY3Rp
b25CYWNrZW5kSW1wbCosIGludDY0X3Qgb2JqZWN0U3RvcmVJZCk7CisgICAgSURCQ3Vyc29yQmFj
a2VuZEltcGwoUGFzc1JlZlB0cjxJREJCYWNraW5nU3RvcmU6OkN1cnNvcj4sIEluZGV4ZWREQjo6
Q3Vyc29yVHlwZSwgSURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlOjpUYXNrVHlwZSwgSURCVHJh
bnNhY3Rpb25CYWNrZW5kSW1wbCosIGludDY0X3Qgb2JqZWN0U3RvcmVJZCk7CiAKICAgICBjbGFz
cyBDdXJzb3JJdGVyYXRpb25PcGVyYXRpb247CiAgICAgY2xhc3MgQ3Vyc29yQWR2YW5jZU9wZXJh
dGlvbjsKICAgICBjbGFzcyBDdXJzb3JQcmVmZXRjaEl0ZXJhdGlvbk9wZXJhdGlvbjsKIAogICAg
IElEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZTo6VGFza1R5cGUgbV90YXNrVHlwZTsKLSAgICBD
dXJzb3JUeXBlIG1fY3Vyc29yVHlwZTsKKyAgICBJbmRleGVkREI6OkN1cnNvclR5cGUgbV9jdXJz
b3JUeXBlOwogICAgIGNvbnN0IFJlZlB0cjxJREJEYXRhYmFzZUJhY2tlbmRJbXBsPiBtX2RhdGFi
YXNlOwogICAgIGNvbnN0IFJlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsPiBtX3RyYW5z
YWN0aW9uOwogICAgIGNvbnN0IGludDY0X3QgbV9vYmplY3RTdG9yZUlkOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yQmFja2VuZEludGVyZmFj
ZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yQmFja2VuZElu
dGVyZmFjZS5oCmluZGV4IGFlYjI5NzZiMDg2MmE3OWFkNDQzODEzZTllNzZjZmEyNmUzOTBmMTYu
Ljk2M2YzMmIwMGFiMzA5M2E5Y2ZiOGJlY2FhMmVjODUxYmVjODhhYzYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvckJhY2tlbmRJbnRlcmZhY2Uu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3JCYWNrZW5k
SW50ZXJmYWNlLmgKQEAgLTMzLDcgKzMzLDYgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1j
bGFzcyBJREJBbnk7CiBjbGFzcyBJREJDYWxsYmFja3M7CiBjbGFzcyBJREJLZXk7CiBjbGFzcyBJ
REJSZXF1ZXN0OwpAQCAtNDQsMTEgKzQzLDYgQEAgY2xhc3MgSURCQ3Vyc29yQmFja2VuZEludGVy
ZmFjZSA6IHB1YmxpYyBSZWZDb3VudGVkPElEQkN1cnNvckJhY2tlbmRJbnRlcmZhY2U+IHsKIHB1
YmxpYzoKICAgICB2aXJ0dWFsIH5JREJDdXJzb3JCYWNrZW5kSW50ZXJmYWNlKCkge30KIAotICAg
IGVudW0gQ3Vyc29yVHlwZSB7Ci0gICAgICAgIEtleUFuZFZhbHVlID0gMCwKLSAgICAgICAgS2V5
T25seQotICAgIH07Ci0KICAgICB2aXJ0dWFsIHZvaWQgYWR2YW5jZSh1bnNpZ25lZCBsb25nIGNv
dW50LCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4sIEV4Y2VwdGlvbkNvZGUmKSA9IDA7CiAgICAg
dmlydHVhbCB2b2lkIGNvbnRpbnVlRnVuY3Rpb24oUGFzc1JlZlB0cjxJREJLZXk+IGtleSwgUGFz
c1JlZlB0cjxJREJDYWxsYmFja3M+LCBFeGNlcHRpb25Db2RlJikgPSAwOwogICAgIHZpcnR1YWwg
dm9pZCBkZWxldGVGdW5jdGlvbihQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4sIEV4Y2VwdGlvbkNv
ZGUmKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9J
REJDdXJzb3JXaXRoVmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
SURCQ3Vyc29yV2l0aFZhbHVlLmNwcAppbmRleCBiOTBiYTNkOWI1MjY1MzE3MDkyYmJlNTU4MTc1
MGRjMDI3ODVkYWFhLi40MDM2MTExMDQ5ZWI1ZDkyOWFkYjIyN2M2ZmUzYTNjYmVjMzZmMTg4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3JXaXRo
VmFsdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNv
cldpdGhWYWx1ZS5jcHAKQEAgLTMzLDcgKzMzLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
Ci1QYXNzUmVmUHRyPElEQkN1cnNvcldpdGhWYWx1ZT4gSURCQ3Vyc29yV2l0aFZhbHVlOjpjcmVh
dGUoUGFzc1JlZlB0cjxJREJDdXJzb3JCYWNrZW5kSW50ZXJmYWNlPiBiYWNrZW5kLCBEaXJlY3Rp
b24gZGlyZWN0aW9uLCBJREJSZXF1ZXN0KiByZXF1ZXN0LCBJREJBbnkqIHNvdXJjZSwgSURCVHJh
bnNhY3Rpb24qIHRyYW5zYWN0aW9uKQorUGFzc1JlZlB0cjxJREJDdXJzb3JXaXRoVmFsdWU+IElE
QkN1cnNvcldpdGhWYWx1ZTo6Y3JlYXRlKFBhc3NSZWZQdHI8SURCQ3Vyc29yQmFja2VuZEludGVy
ZmFjZT4gYmFja2VuZCwgSW5kZXhlZERCOjpDdXJzb3JEaXJlY3Rpb24gZGlyZWN0aW9uLCBJREJS
ZXF1ZXN0KiByZXF1ZXN0LCBJREJBbnkqIHNvdXJjZSwgSURCVHJhbnNhY3Rpb24qIHRyYW5zYWN0
aW9uKQogewogICAgIHJldHVybiBhZG9wdFJlZihuZXcgSURCQ3Vyc29yV2l0aFZhbHVlKGJhY2tl
bmQsIGRpcmVjdGlvbiwgcmVxdWVzdCwgc291cmNlLCB0cmFuc2FjdGlvbikpOwogfQpAQCAtNDQs
NyArNDQsNyBAQCBQYXNzUmVmUHRyPElEQkN1cnNvcldpdGhWYWx1ZT4gSURCQ3Vyc29yV2l0aFZh
bHVlOjpmcm9tQ3Vyc29yKFBhc3NSZWZQdHI8SURCQ3VycwogICAgIHJldHVybiBjdXJzb3JXaXRo
VmFsdWUucmVsZWFzZSgpOwogfQogCi1JREJDdXJzb3JXaXRoVmFsdWU6OklEQkN1cnNvcldpdGhW
YWx1ZShQYXNzUmVmUHRyPElEQkN1cnNvckJhY2tlbmRJbnRlcmZhY2U+IGJhY2tlbmQsIERpcmVj
dGlvbiBkaXJlY3Rpb24sIElEQlJlcXVlc3QqIHJlcXVlc3QsIElEQkFueSogc291cmNlLCBJREJU
cmFuc2FjdGlvbiogdHJhbnNhY3Rpb24pCitJREJDdXJzb3JXaXRoVmFsdWU6OklEQkN1cnNvcldp
dGhWYWx1ZShQYXNzUmVmUHRyPElEQkN1cnNvckJhY2tlbmRJbnRlcmZhY2U+IGJhY2tlbmQsIElu
ZGV4ZWREQjo6Q3Vyc29yRGlyZWN0aW9uIGRpcmVjdGlvbiwgSURCUmVxdWVzdCogcmVxdWVzdCwg
SURCQW55KiBzb3VyY2UsIElEQlRyYW5zYWN0aW9uKiB0cmFuc2FjdGlvbikKICAgICA6IElEQkN1
cnNvcihiYWNrZW5kLCBkaXJlY3Rpb24sIHJlcXVlc3QsIHNvdXJjZSwgdHJhbnNhY3Rpb24pCiB7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJz
b3JXaXRoVmFsdWUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNv
cldpdGhWYWx1ZS5oCmluZGV4IGNiYjg1MGExY2QwMmYwYWEyMDk1MmYyY2ZkYjg4OGZjOGMwMjg2
NTAuLjE1ODIzYTA2MjRhMzFkZTlmMmMyZGQ0M2RjMGM5MzNmNGM3YzYwNGUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvcldpdGhWYWx1ZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvcldpdGhWYWx1ZS5o
CkBAIC0zNCw3ICszNCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgSURCQ3Vyc29y
V2l0aFZhbHVlIDogcHVibGljIElEQkN1cnNvciB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NS
ZWZQdHI8SURCQ3Vyc29yV2l0aFZhbHVlPiBjcmVhdGUoUGFzc1JlZlB0cjxJREJDdXJzb3JCYWNr
ZW5kSW50ZXJmYWNlPiwgRGlyZWN0aW9uLCBJREJSZXF1ZXN0KiwgSURCQW55KiBzb3VyY2UsIElE
QlRyYW5zYWN0aW9uKik7CisgICAgc3RhdGljIFBhc3NSZWZQdHI8SURCQ3Vyc29yV2l0aFZhbHVl
PiBjcmVhdGUoUGFzc1JlZlB0cjxJREJDdXJzb3JCYWNrZW5kSW50ZXJmYWNlPiwgSW5kZXhlZERC
OjpDdXJzb3JEaXJlY3Rpb24sIElEQlJlcXVlc3QqLCBJREJBbnkqIHNvdXJjZSwgSURCVHJhbnNh
Y3Rpb24qKTsKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxJREJDdXJzb3JXaXRoVmFsdWU+IGZyb21D
dXJzb3IoUGFzc1JlZlB0cjxJREJDdXJzb3I+KTsKICAgICB2aXJ0dWFsIH5JREJDdXJzb3JXaXRo
VmFsdWUoKTsKIApAQCAtNDUsNyArNDUsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgdmlydHVhbCBib29s
IGlzS2V5Q3Vyc29yKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gZmFsc2U7IH0KIAogcHJpdmF0
ZToKLSAgICBJREJDdXJzb3JXaXRoVmFsdWUoUGFzc1JlZlB0cjxJREJDdXJzb3JCYWNrZW5kSW50
ZXJmYWNlPiwgRGlyZWN0aW9uLCBJREJSZXF1ZXN0KiwgSURCQW55KiBzb3VyY2UsIElEQlRyYW5z
YWN0aW9uKik7CisgICAgSURCQ3Vyc29yV2l0aFZhbHVlKFBhc3NSZWZQdHI8SURCQ3Vyc29yQmFj
a2VuZEludGVyZmFjZT4sIEluZGV4ZWREQjo6Q3Vyc29yRGlyZWN0aW9uLCBJREJSZXF1ZXN0Kiwg
SURCQW55KiBzb3VyY2UsIElEQlRyYW5zYWN0aW9uKik7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJE
YXRhYmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFz
ZS5jcHAKaW5kZXggYzk5YThkNWM4NGZlMTUyMThmYjA3ZTg4MjMyNDEwYjAxZTkzNzFkMy4uOWNl
NjY1YmI3YTdjNmRkN2FmOTg0Yjc0NjgxNWIxODBiNDQ2NGY5YSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2UuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlLmNwcApAQCAtMjI3LDcgKzIyNyw3
IEBAIFBhc3NSZWZQdHI8SURCVHJhbnNhY3Rpb24+IElEQkRhdGFiYXNlOjp0cmFuc2FjdGlvbihT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KIAot
ICAgIElEQlRyYW5zYWN0aW9uOjpNb2RlIG1vZGUgPSBJREJUcmFuc2FjdGlvbjo6c3RyaW5nVG9N
b2RlKG1vZGVTdHJpbmcsIGNvbnRleHQsIGVjKTsKKyAgICBJbmRleGVkREI6OlRyYW5zYWN0aW9u
TW9kZSBtb2RlID0gSURCVHJhbnNhY3Rpb246OnN0cmluZ1RvTW9kZShtb2RlU3RyaW5nLCBjb250
ZXh0LCBlYyk7CiAgICAgaWYgKGVjKQogICAgICAgICByZXR1cm4gMDsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2UuaCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlLmgKaW5kZXggZGUxM2I2N2ZiZThm
MGQ4NmNhOTU0NmEyYjAzMjMwMDEyYTIyMjllMC4uOGRkNTJjOTYwMDVmMmMwMWYzMGNlNzdlMTUw
OTkwODI0OTI4NTNlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvSURCRGF0YWJhc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9J
REJEYXRhYmFzZS5oCkBAIC0zMSwxMSArMzEsMTEgQEAKICNpbmNsdWRlICJEaWN0aW9uYXJ5Lmgi
CiAjaW5jbHVkZSAiRXZlbnQuaCIKICNpbmNsdWRlICJFdmVudFRhcmdldC5oIgotI2luY2x1ZGUg
IklEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZS5oIgogI2luY2x1ZGUgIklEQkRhdGFiYXNlQ2Fs
bGJhY2tzLmgiCiAjaW5jbHVkZSAiSURCTWV0YWRhdGEuaCIKICNpbmNsdWRlICJJREJPYmplY3RT
dG9yZS5oIgogI2luY2x1ZGUgIklEQlRyYW5zYWN0aW9uLmgiCisjaW5jbHVkZSAiSW5kZXhlZERC
LmgiCiAjaW5jbHVkZSAiU2NyaXB0V3JhcHBhYmxlLmgiCiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQ
dHIuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VCYWNrZW5kSW1wbC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmRJbXBsLmNwcApp
bmRleCA5ODBkMTRmNGZlNjU5NjZlMjA1ZjE2NDcyMDc2ZGI1ODg3MDBkYTY3Li4yYzMwMzIwYTU0
ZjM0Y2MyMzI4NzFjZGNmN2IzY2RhYjFjNDdjYzY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmRJbXBsLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmRJbXBsLmNwcApA
QCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUgIklEQkN1cnNvckJhY2tlbmRJbXBsLmgiCiAjaW5j
bHVkZSAiSURCRGF0YWJhc2VFeGNlcHRpb24uaCIKICNpbmNsdWRlICJJREJGYWN0b3J5QmFja2Vu
ZEltcGwuaCIKKyNpbmNsdWRlICJJREJLZXlSYW5nZS5oIgogI2luY2x1ZGUgIklEQk9iamVjdFN0
b3JlQmFja2VuZEltcGwuaCIKICNpbmNsdWRlICJJREJUcmFjaW5nLmgiCiAjaW5jbHVkZSAiSURC
VHJhbnNhY3Rpb25CYWNrZW5kSW1wbC5oIgpAQCAtMjM4LDEzICsyMzksMTMgQEAgcHJpdmF0ZToK
IAogY2xhc3MgR2V0T3BlcmF0aW9uIDogcHVibGljIElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGw6
Ok9wZXJhdGlvbiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NPd25QdHI8SURCVHJhbnNhY3Rp
b25CYWNrZW5kSW1wbDo6T3BlcmF0aW9uPiBjcmVhdGUoUGFzc1JlZlB0cjxJREJCYWNraW5nU3Rv
cmU+IGJhY2tpbmdTdG9yZSwgY29uc3QgSURCRGF0YWJhc2VNZXRhZGF0YSYgbWV0YWRhdGEsIGlu
dDY0X3Qgb2JqZWN0U3RvcmVJZCwgaW50NjRfdCBpbmRleElkLCBQYXNzUmVmUHRyPElEQktleVJh
bmdlPiBrZXlSYW5nZSwgSURCQ3Vyc29yQmFja2VuZEludGVyZmFjZTo6Q3Vyc29yVHlwZSBjdXJz
b3JUeXBlLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tzKQorICAgIHN0YXRpYyBQ
YXNzT3duUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGw6Ok9wZXJhdGlvbj4gY3JlYXRlKFBh
c3NSZWZQdHI8SURCQmFja2luZ1N0b3JlPiBiYWNraW5nU3RvcmUsIGNvbnN0IElEQkRhdGFiYXNl
TWV0YWRhdGEmIG1ldGFkYXRhLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGludDY0X3QgaW5kZXhJ
ZCwgUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4ga2V5UmFuZ2UsIEluZGV4ZWREQjo6Q3Vyc29yVHlw
ZSBjdXJzb3JUeXBlLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tzKQogICAgIHsK
ICAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBHZXRPcGVyYXRpb24oYmFja2luZ1N0b3JlLCBt
ZXRhZGF0YSwgb2JqZWN0U3RvcmVJZCwgaW5kZXhJZCwga2V5UmFuZ2UsIGN1cnNvclR5cGUsIGNh
bGxiYWNrcykpOwogICAgIH0KICAgICB2aXJ0dWFsIHZvaWQgcGVyZm9ybShJREJUcmFuc2FjdGlv
bkJhY2tlbmRJbXBsKik7CiBwcml2YXRlOgotICAgIEdldE9wZXJhdGlvbihQYXNzUmVmUHRyPElE
QkJhY2tpbmdTdG9yZT4gYmFja2luZ1N0b3JlLCBjb25zdCBJREJEYXRhYmFzZU1ldGFkYXRhJiBt
ZXRhZGF0YSwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBpbnQ2NF90IGluZGV4SWQsIFBhc3NSZWZQ
dHI8SURCS2V5UmFuZ2U+IGtleVJhbmdlLCBJREJDdXJzb3JCYWNrZW5kSW50ZXJmYWNlOjpDdXJz
b3JUeXBlIGN1cnNvclR5cGUsIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MpCisg
ICAgR2V0T3BlcmF0aW9uKFBhc3NSZWZQdHI8SURCQmFja2luZ1N0b3JlPiBiYWNraW5nU3RvcmUs
IGNvbnN0IElEQkRhdGFiYXNlTWV0YWRhdGEmIG1ldGFkYXRhLCBpbnQ2NF90IG9iamVjdFN0b3Jl
SWQsIGludDY0X3QgaW5kZXhJZCwgUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4ga2V5UmFuZ2UsIElu
ZGV4ZWREQjo6Q3Vyc29yVHlwZSBjdXJzb3JUeXBlLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4g
Y2FsbGJhY2tzKQogICAgICAgICA6IG1fYmFja2luZ1N0b3JlKGJhY2tpbmdTdG9yZSkKICAgICAg
ICAgLCBtX2RhdGFiYXNlSWQobWV0YWRhdGEuaWQpCiAgICAgICAgICwgbV9vYmplY3RTdG9yZUlk
KG9iamVjdFN0b3JlSWQpCkBAIC0yNjYsNyArMjY3LDcgQEAgcHJpdmF0ZToKICAgICBjb25zdCBJ
REJLZXlQYXRoIG1fa2V5UGF0aDsKICAgICBjb25zdCBib29sIG1fYXV0b0luY3JlbWVudDsKICAg
ICBjb25zdCBSZWZQdHI8SURCS2V5UmFuZ2U+IG1fa2V5UmFuZ2U7Ci0gICAgY29uc3QgSURCQ3Vy
c29yQmFja2VuZEludGVyZmFjZTo6Q3Vyc29yVHlwZSBtX2N1cnNvclR5cGU7CisgICAgY29uc3Qg
SW5kZXhlZERCOjpDdXJzb3JUeXBlIG1fY3Vyc29yVHlwZTsKICAgICBjb25zdCBSZWZQdHI8SURC
Q2FsbGJhY2tzPiBtX2NhbGxiYWNrczsKIH07CiAKQEAgLTMyMCwxMyArMzIxLDEzIEBAIHByaXZh
dGU6CiAKIGNsYXNzIE9wZW5DdXJzb3JPcGVyYXRpb24gOiBwdWJsaWMgSURCVHJhbnNhY3Rpb25C
YWNrZW5kSW1wbDo6T3BlcmF0aW9uIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc093blB0cjxJ
REJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsOjpPcGVyYXRpb24+IGNyZWF0ZShQYXNzUmVmUHRyPElE
QkJhY2tpbmdTdG9yZT4gYmFja2luZ1N0b3JlLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qg
b2JqZWN0U3RvcmVJZCwgaW50NjRfdCBpbmRleElkLCBQYXNzUmVmUHRyPElEQktleVJhbmdlPiBr
ZXlSYW5nZSwgdW5zaWduZWQgc2hvcnQgZGlyZWN0aW9uLCBJREJDdXJzb3JCYWNrZW5kSW50ZXJm
YWNlOjpDdXJzb3JUeXBlIGN1cnNvclR5cGUsIElEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZTo6
VGFza1R5cGUgdGFza1R5cGUsIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MpCisg
ICAgc3RhdGljIFBhc3NPd25QdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbDo6T3BlcmF0aW9u
PiBjcmVhdGUoUGFzc1JlZlB0cjxJREJCYWNraW5nU3RvcmU+IGJhY2tpbmdTdG9yZSwgaW50NjRf
dCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGludDY0X3QgaW5kZXhJZCwgUGFz
c1JlZlB0cjxJREJLZXlSYW5nZT4ga2V5UmFuZ2UsIEluZGV4ZWREQjo6Q3Vyc29yRGlyZWN0aW9u
IGRpcmVjdGlvbiwgSW5kZXhlZERCOjpDdXJzb3JUeXBlIGN1cnNvclR5cGUsIElEQkRhdGFiYXNl
QmFja2VuZEludGVyZmFjZTo6VGFza1R5cGUgdGFza1R5cGUsIFBhc3NSZWZQdHI8SURCQ2FsbGJh
Y2tzPiBjYWxsYmFja3MpCiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IE9wZW5D
dXJzb3JPcGVyYXRpb24oYmFja2luZ1N0b3JlLCBkYXRhYmFzZUlkLCBvYmplY3RTdG9yZUlkLCBp
bmRleElkLCBrZXlSYW5nZSwgZGlyZWN0aW9uLCBjdXJzb3JUeXBlLCB0YXNrVHlwZSwgY2FsbGJh
Y2tzKSk7CiAgICAgfQogICAgIHZpcnR1YWwgdm9pZCBwZXJmb3JtKElEQlRyYW5zYWN0aW9uQmFj
a2VuZEltcGwqKTsKIHByaXZhdGU6Ci0gICAgT3BlbkN1cnNvck9wZXJhdGlvbihQYXNzUmVmUHRy
PElEQkJhY2tpbmdTdG9yZT4gYmFja2luZ1N0b3JlLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0
X3Qgb2JqZWN0U3RvcmVJZCwgaW50NjRfdCBpbmRleElkLCBQYXNzUmVmUHRyPElEQktleVJhbmdl
PiBrZXlSYW5nZSwgdW5zaWduZWQgc2hvcnQgZGlyZWN0aW9uLCBJREJDdXJzb3JCYWNrZW5kSW50
ZXJmYWNlOjpDdXJzb3JUeXBlIGN1cnNvclR5cGUsIElEQkRhdGFiYXNlQmFja2VuZEludGVyZmFj
ZTo6VGFza1R5cGUgdGFza1R5cGUsIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3Mp
CisgICAgT3BlbkN1cnNvck9wZXJhdGlvbihQYXNzUmVmUHRyPElEQkJhY2tpbmdTdG9yZT4gYmFj
a2luZ1N0b3JlLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgaW50
NjRfdCBpbmRleElkLCBQYXNzUmVmUHRyPElEQktleVJhbmdlPiBrZXlSYW5nZSwgSW5kZXhlZERC
OjpDdXJzb3JEaXJlY3Rpb24gZGlyZWN0aW9uLCBJbmRleGVkREI6OkN1cnNvclR5cGUgY3Vyc29y
VHlwZSwgSURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlOjpUYXNrVHlwZSB0YXNrVHlwZSwgUGFz
c1JlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcykKICAgICAgICAgOiBtX2JhY2tpbmdTdG9y
ZShiYWNraW5nU3RvcmUpCiAgICAgICAgICwgbV9kYXRhYmFzZUlkKGRhdGFiYXNlSWQpCiAgICAg
ICAgICwgbV9vYmplY3RTdG9yZUlkKG9iamVjdFN0b3JlSWQpCkBAIC0zNDQsOCArMzQ1LDggQEAg
cHJpdmF0ZToKICAgICBjb25zdCBpbnQ2NF90IG1fb2JqZWN0U3RvcmVJZDsKICAgICBjb25zdCBp
bnQ2NF90IG1faW5kZXhJZDsKICAgICBjb25zdCBQYXNzUmVmUHRyPElEQktleVJhbmdlPiBtX2tl
eVJhbmdlOwotICAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IG1fZGlyZWN0aW9uOwotICAgIGNvbnN0
IElEQkN1cnNvckJhY2tlbmRJbnRlcmZhY2U6OkN1cnNvclR5cGUgbV9jdXJzb3JUeXBlOworICAg
IGNvbnN0IEluZGV4ZWREQjo6Q3Vyc29yRGlyZWN0aW9uIG1fZGlyZWN0aW9uOworICAgIGNvbnN0
IEluZGV4ZWREQjo6Q3Vyc29yVHlwZSBtX2N1cnNvclR5cGU7CiAgICAgY29uc3QgSURCRGF0YWJh
c2VCYWNrZW5kSW50ZXJmYWNlOjpUYXNrVHlwZSBtX3Rhc2tUeXBlOwogICAgIGNvbnN0IFJlZlB0
cjxJREJDYWxsYmFja3M+IG1fY2FsbGJhY2tzOwogfTsKQEAgLTU1NSw3ICs1NTYsNyBAQCB2b2lk
IElEQkRhdGFiYXNlQmFja2VuZEltcGw6OmNyZWF0ZU9iamVjdFN0b3JlKGludDY0X3QgdHJhbnNh
Y3Rpb25JZCwgaW50NjRfdCBvYgogICAgIElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGwqIHRyYW5z
YWN0aW9uID0gbV90cmFuc2FjdGlvbnMuZ2V0KHRyYW5zYWN0aW9uSWQpOwogICAgIGlmICghdHJh
bnNhY3Rpb24pCiAgICAgICAgIHJldHVybjsKLSAgICBBU1NFUlQodHJhbnNhY3Rpb24tPm1vZGUo
KSA9PSBJREJUcmFuc2FjdGlvbjo6VkVSU0lPTl9DSEFOR0UpOworICAgIEFTU0VSVCh0cmFuc2Fj
dGlvbi0+bW9kZSgpID09IEluZGV4ZWREQjo6VHJhbnNhY3Rpb25WZXJzaW9uQ2hhbmdlKTsKIAog
ICAgIEFTU0VSVCghbV9tZXRhZGF0YS5vYmplY3RTdG9yZXMuY29udGFpbnMob2JqZWN0U3RvcmVJ
ZCkpOwogICAgIElEQk9iamVjdFN0b3JlTWV0YWRhdGEgb2JqZWN0U3RvcmVNZXRhZGF0YShuYW1l
LCBvYmplY3RTdG9yZUlkLCBrZXlQYXRoLCBhdXRvSW5jcmVtZW50LCBJREJEYXRhYmFzZUJhY2tl
bmRJbnRlcmZhY2U6Ok1pbmltdW1JbmRleElkKTsKQEAgLTU4MSw3ICs1ODIsNyBAQCB2b2lkIElE
QkRhdGFiYXNlQmFja2VuZEltcGw6OmRlbGV0ZU9iamVjdFN0b3JlKGludDY0X3QgdHJhbnNhY3Rp
b25JZCwgaW50NjRfdCBvYgogICAgIElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGwqIHRyYW5zYWN0
aW9uID0gbV90cmFuc2FjdGlvbnMuZ2V0KHRyYW5zYWN0aW9uSWQpOwogICAgIGlmICghdHJhbnNh
Y3Rpb24pCiAgICAgICAgIHJldHVybjsKLSAgICBBU1NFUlQodHJhbnNhY3Rpb24tPm1vZGUoKSA9
PSBJREJUcmFuc2FjdGlvbjo6VkVSU0lPTl9DSEFOR0UpOworICAgIEFTU0VSVCh0cmFuc2FjdGlv
bi0+bW9kZSgpID09IEluZGV4ZWREQjo6VHJhbnNhY3Rpb25WZXJzaW9uQ2hhbmdlKTsKIAogICAg
IEFTU0VSVChtX21ldGFkYXRhLm9iamVjdFN0b3Jlcy5jb250YWlucyhvYmplY3RTdG9yZUlkKSk7
CiAgICAgY29uc3QgSURCT2JqZWN0U3RvcmVNZXRhZGF0YSYgb2JqZWN0U3RvcmVNZXRhZGF0YSA9
IG1fbWV0YWRhdGEub2JqZWN0U3RvcmVzLmdldChvYmplY3RTdG9yZUlkKTsKQEAgLTU5Niw3ICs1
OTcsNyBAQCB2b2lkIElEQkRhdGFiYXNlQmFja2VuZEltcGw6OmNyZWF0ZUluZGV4KGludDY0X3Qg
dHJhbnNhY3Rpb25JZCwgaW50NjRfdCBvYmplY3RTdAogICAgIElEQlRyYW5zYWN0aW9uQmFja2Vu
ZEltcGwqIHRyYW5zYWN0aW9uID0gbV90cmFuc2FjdGlvbnMuZ2V0KHRyYW5zYWN0aW9uSWQpOwog
ICAgIGlmICghdHJhbnNhY3Rpb24pCiAgICAgICAgIHJldHVybjsKLSAgICBBU1NFUlQodHJhbnNh
Y3Rpb24tPm1vZGUoKSA9PSBJREJUcmFuc2FjdGlvbjo6VkVSU0lPTl9DSEFOR0UpOworICAgIEFT
U0VSVCh0cmFuc2FjdGlvbi0+bW9kZSgpID09IEluZGV4ZWREQjo6VHJhbnNhY3Rpb25WZXJzaW9u
Q2hhbmdlKTsKIAogICAgIEFTU0VSVChtX21ldGFkYXRhLm9iamVjdFN0b3Jlcy5jb250YWlucyhv
YmplY3RTdG9yZUlkKSk7CiAgICAgY29uc3QgSURCT2JqZWN0U3RvcmVNZXRhZGF0YSBvYmplY3RT
dG9yZSA9IG1fbWV0YWRhdGEub2JqZWN0U3RvcmVzLmdldChvYmplY3RTdG9yZUlkKTsKQEAgLTYz
MSw3ICs2MzIsNyBAQCB2b2lkIElEQkRhdGFiYXNlQmFja2VuZEltcGw6OmRlbGV0ZUluZGV4KGlu
dDY0X3QgdHJhbnNhY3Rpb25JZCwgaW50NjRfdCBvYmplY3RTdAogICAgIElEQlRyYW5zYWN0aW9u
QmFja2VuZEltcGwqIHRyYW5zYWN0aW9uID0gbV90cmFuc2FjdGlvbnMuZ2V0KHRyYW5zYWN0aW9u
SWQpOwogICAgIGlmICghdHJhbnNhY3Rpb24pCiAgICAgICAgIHJldHVybjsKLSAgICBBU1NFUlQo
dHJhbnNhY3Rpb24tPm1vZGUoKSA9PSBJREJUcmFuc2FjdGlvbjo6VkVSU0lPTl9DSEFOR0UpOwor
ICAgIEFTU0VSVCh0cmFuc2FjdGlvbi0+bW9kZSgpID09IEluZGV4ZWREQjo6VHJhbnNhY3Rpb25W
ZXJzaW9uQ2hhbmdlKTsKIAogICAgIEFTU0VSVChtX21ldGFkYXRhLm9iamVjdFN0b3Jlcy5jb250
YWlucyhvYmplY3RTdG9yZUlkKSk7CiAgICAgY29uc3QgSURCT2JqZWN0U3RvcmVNZXRhZGF0YSBv
YmplY3RTdG9yZSA9IG1fbWV0YWRhdGEub2JqZWN0U3RvcmVzLmdldChvYmplY3RTdG9yZUlkKTsK
QEAgLTY4NSw3ICs2ODYsNyBAQCB2b2lkIElEQkRhdGFiYXNlQmFja2VuZEltcGw6OmdldChpbnQ2
NF90IHRyYW5zYWN0aW9uSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgaQogICAgIGlmICghdHJh
bnNhY3Rpb24pCiAgICAgICAgIHJldHVybjsKIAotICAgIHRyYW5zYWN0aW9uLT5zY2hlZHVsZVRh
c2soR2V0T3BlcmF0aW9uOjpjcmVhdGUobV9iYWNraW5nU3RvcmUsIG1fbWV0YWRhdGEsIG9iamVj
dFN0b3JlSWQsIGluZGV4SWQsIGtleVJhbmdlLCBrZXlPbmx5ID8gSURCQ3Vyc29yQmFja2VuZElu
dGVyZmFjZTo6S2V5T25seSA6IElEQkN1cnNvckJhY2tlbmRJbnRlcmZhY2U6OktleUFuZFZhbHVl
LCBjYWxsYmFja3MpKTsKKyAgICB0cmFuc2FjdGlvbi0+c2NoZWR1bGVUYXNrKEdldE9wZXJhdGlv
bjo6Y3JlYXRlKG1fYmFja2luZ1N0b3JlLCBtX21ldGFkYXRhLCBvYmplY3RTdG9yZUlkLCBpbmRl
eElkLCBrZXlSYW5nZSwga2V5T25seSA/IEluZGV4ZWREQjo6Q3Vyc29yS2V5T25seSA6IEluZGV4
ZWREQjo6Q3Vyc29yS2V5QW5kVmFsdWUsIGNhbGxiYWNrcykpOwogfQogCiB2b2lkIEdldE9wZXJh
dGlvbjo6cGVyZm9ybShJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsKiB0cmFuc2FjdGlvbikKQEAg
LTY5OSwxNiArNzAwLDE2IEBAIHZvaWQgR2V0T3BlcmF0aW9uOjpwZXJmb3JtKElEQlRyYW5zYWN0
aW9uQmFja2VuZEltcGwqIHRyYW5zYWN0aW9uKQogICAgIGVsc2UgewogICAgICAgICBSZWZQdHI8
SURCQmFja2luZ1N0b3JlOjpDdXJzb3I+IGJhY2tpbmdTdG9yZUN1cnNvcjsKICAgICAgICAgaWYg
KG1faW5kZXhJZCA9PSBJREJJbmRleE1ldGFkYXRhOjpJbnZhbGlkSWQpIHsKLSAgICAgICAgICAg
IEFTU0VSVChtX2N1cnNvclR5cGUgIT0gSURCQ3Vyc29yQmFja2VuZEludGVyZmFjZTo6S2V5T25s
eSk7CisgICAgICAgICAgICBBU1NFUlQobV9jdXJzb3JUeXBlICE9IEluZGV4ZWREQjo6Q3Vyc29y
S2V5T25seSk7CiAgICAgICAgICAgICAvLyBPYmplY3RTdG9yZSBSZXRyaWV2YWwgT3BlcmF0aW9u
Ci0gICAgICAgICAgICBiYWNraW5nU3RvcmVDdXJzb3IgPSBtX2JhY2tpbmdTdG9yZS0+b3Blbk9i
amVjdFN0b3JlQ3Vyc29yKHRyYW5zYWN0aW9uLT5iYWNraW5nU3RvcmVUcmFuc2FjdGlvbigpLCBt
X2RhdGFiYXNlSWQsIG1fb2JqZWN0U3RvcmVJZCwgbV9rZXlSYW5nZS5nZXQoKSwgSURCQ3Vyc29y
OjpORVhUKTsKKyAgICAgICAgICAgIGJhY2tpbmdTdG9yZUN1cnNvciA9IG1fYmFja2luZ1N0b3Jl
LT5vcGVuT2JqZWN0U3RvcmVDdXJzb3IodHJhbnNhY3Rpb24tPmJhY2tpbmdTdG9yZVRyYW5zYWN0
aW9uKCksIG1fZGF0YWJhc2VJZCwgbV9vYmplY3RTdG9yZUlkLCBtX2tleVJhbmdlLmdldCgpLCBJ
bmRleGVkREI6OkN1cnNvck5leHQpOwogICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgaWYg
KG1fY3Vyc29yVHlwZSA9PSBJREJDdXJzb3JCYWNrZW5kSW50ZXJmYWNlOjpLZXlPbmx5KQorICAg
ICAgICAgICAgaWYgKG1fY3Vyc29yVHlwZSA9PSBJbmRleGVkREI6OkN1cnNvcktleU9ubHkpCiAg
ICAgICAgICAgICAgICAgLy8gSW5kZXggVmFsdWUgUmV0cmlldmFsIE9wZXJhdGlvbgotICAgICAg
ICAgICAgICAgIGJhY2tpbmdTdG9yZUN1cnNvciA9IG1fYmFja2luZ1N0b3JlLT5vcGVuSW5kZXhL
ZXlDdXJzb3IodHJhbnNhY3Rpb24tPmJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uKCksIG1fZGF0YWJh
c2VJZCwgbV9vYmplY3RTdG9yZUlkLCBtX2luZGV4SWQsIG1fa2V5UmFuZ2UuZ2V0KCksIElEQkN1
cnNvcjo6TkVYVCk7CisgICAgICAgICAgICAgICAgYmFja2luZ1N0b3JlQ3Vyc29yID0gbV9iYWNr
aW5nU3RvcmUtPm9wZW5JbmRleEtleUN1cnNvcih0cmFuc2FjdGlvbi0+YmFja2luZ1N0b3JlVHJh
bnNhY3Rpb24oKSwgbV9kYXRhYmFzZUlkLCBtX29iamVjdFN0b3JlSWQsIG1faW5kZXhJZCwgbV9r
ZXlSYW5nZS5nZXQoKSwgSW5kZXhlZERCOjpDdXJzb3JOZXh0KTsKICAgICAgICAgICAgIGVsc2UK
ICAgICAgICAgICAgICAgICAvLyBJbmRleCBSZWZlcmVuY2VkIFZhbHVlIFJldHJpZXZhbCBPcGVy
YXRpb24KLSAgICAgICAgICAgICAgICBiYWNraW5nU3RvcmVDdXJzb3IgPSBtX2JhY2tpbmdTdG9y
ZS0+b3BlbkluZGV4Q3Vyc29yKHRyYW5zYWN0aW9uLT5iYWNraW5nU3RvcmVUcmFuc2FjdGlvbigp
LCBtX2RhdGFiYXNlSWQsIG1fb2JqZWN0U3RvcmVJZCwgbV9pbmRleElkLCBtX2tleVJhbmdlLmdl
dCgpLCBJREJDdXJzb3I6Ok5FWFQpOworICAgICAgICAgICAgICAgIGJhY2tpbmdTdG9yZUN1cnNv
ciA9IG1fYmFja2luZ1N0b3JlLT5vcGVuSW5kZXhDdXJzb3IodHJhbnNhY3Rpb24tPmJhY2tpbmdT
dG9yZVRyYW5zYWN0aW9uKCksIG1fZGF0YWJhc2VJZCwgbV9vYmplY3RTdG9yZUlkLCBtX2luZGV4
SWQsIG1fa2V5UmFuZ2UuZ2V0KCksIEluZGV4ZWREQjo6Q3Vyc29yTmV4dCk7CiAgICAgICAgIH0K
IAogICAgICAgICBpZiAoIWJhY2tpbmdTdG9yZUN1cnNvcikgewpAQCAtNzU1LDcgKzc1Niw3IEBA
IHZvaWQgR2V0T3BlcmF0aW9uOjpwZXJmb3JtKElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGwqIHRy
YW5zYWN0aW9uKQogICAgICAgICBtX2NhbGxiYWNrcy0+b25TdWNjZXNzKCk7CiAgICAgICAgIHJl
dHVybjsKICAgICB9Ci0gICAgaWYgKG1fY3Vyc29yVHlwZSA9PSBJREJDdXJzb3JCYWNrZW5kSW50
ZXJmYWNlOjpLZXlPbmx5KSB7CisgICAgaWYgKG1fY3Vyc29yVHlwZSA9PSBJbmRleGVkREI6OkN1
cnNvcktleU9ubHkpIHsKICAgICAgICAgLy8gSW5kZXggVmFsdWUgUmV0cmlldmFsIE9wZXJhdGlv
bgogICAgICAgICBtX2NhbGxiYWNrcy0+b25TdWNjZXNzKHByaW1hcnlLZXkuZ2V0KCkpOwogICAg
ICAgICByZXR1cm47CkBAIC03ODYsNyArNzg3LDcgQEAgdm9pZCBJREJEYXRhYmFzZUJhY2tlbmRJ
bXBsOjpwdXQoaW50NjRfdCB0cmFuc2FjdGlvbklkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIFAK
ICAgICBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsKiB0cmFuc2FjdGlvbiA9IG1fdHJhbnNhY3Rp
b25zLmdldCh0cmFuc2FjdGlvbklkKTsKICAgICBpZiAoIXRyYW5zYWN0aW9uKQogICAgICAgICBy
ZXR1cm47Ci0gICAgQVNTRVJUKHRyYW5zYWN0aW9uLT5tb2RlKCkgIT0gSURCVHJhbnNhY3Rpb246
OlJFQURfT05MWSk7CisgICAgQVNTRVJUKHRyYW5zYWN0aW9uLT5tb2RlKCkgIT0gSW5kZXhlZERC
OjpUcmFuc2FjdGlvblJlYWRPbmx5KTsKIAogICAgIGNvbnN0IElEQk9iamVjdFN0b3JlTWV0YWRh
dGEgb2JqZWN0U3RvcmVNZXRhZGF0YSA9IG1fbWV0YWRhdGEub2JqZWN0U3RvcmVzLmdldChvYmpl
Y3RTdG9yZUlkKTsKIApAQCAtNzk4LDcgKzc5OSw3IEBAIHZvaWQgSURCRGF0YWJhc2VCYWNrZW5k
SW1wbDo6cHV0KGludDY0X3QgdHJhbnNhY3Rpb25JZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBQ
CiB2b2lkIFB1dE9wZXJhdGlvbjo6cGVyZm9ybShJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsKiB0
cmFuc2FjdGlvbikKIHsKICAgICBJREJfVFJBQ0UoIlB1dE9wZXJhdGlvbiIpOwotICAgIEFTU0VS
VCh0cmFuc2FjdGlvbi0+bW9kZSgpICE9IElEQlRyYW5zYWN0aW9uOjpSRUFEX09OTFkpOworICAg
IEFTU0VSVCh0cmFuc2FjdGlvbi0+bW9kZSgpICE9IEluZGV4ZWREQjo6VHJhbnNhY3Rpb25SZWFk
T25seSk7CiAgICAgQVNTRVJUKG1faW5kZXhJZHMuc2l6ZSgpID09IG1faW5kZXhLZXlzLnNpemUo
KSk7CiAgICAgYm9vbCBrZXlXYXNHZW5lcmF0ZWQgPSBmYWxzZTsKIApAQCAtODcyLDcgKzg3Myw3
IEBAIHZvaWQgSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6c2V0SW5kZXhLZXlzKGludDY0X3QgdHJh
bnNhY3Rpb25JZCwgaW50NjRfdCBvYmplY3RTCiAgICAgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1w
bCogdHJhbnNhY3Rpb24gPSBtX3RyYW5zYWN0aW9ucy5nZXQodHJhbnNhY3Rpb25JZCk7CiAgICAg
aWYgKCF0cmFuc2FjdGlvbikKICAgICAgICAgcmV0dXJuOwotICAgIEFTU0VSVCh0cmFuc2FjdGlv
bi0+bW9kZSgpID09IElEQlRyYW5zYWN0aW9uOjpWRVJTSU9OX0NIQU5HRSk7CisgICAgQVNTRVJU
KHRyYW5zYWN0aW9uLT5tb2RlKCkgPT0gSW5kZXhlZERCOjpUcmFuc2FjdGlvblZlcnNpb25DaGFu
Z2UpOwogCiAgICAgUmVmUHRyPElEQktleT4gcHJpbWFyeUtleSA9IHBycFByaW1hcnlLZXk7CiAg
ICAgUmVmUHRyPElEQkJhY2tpbmdTdG9yZT4gc3RvcmUgPSBiYWNraW5nU3RvcmUoKTsKQEAgLTky
OSwxNCArOTMwLDE0IEBAIHZvaWQgU2V0SW5kZXhlc1JlYWR5T3BlcmF0aW9uOjpwZXJmb3JtKElE
QlRyYW5zYWN0aW9uQmFja2VuZEltcGwqIHRyYW5zYWN0aW9uKQogICAgICAgICB0cmFuc2FjdGlv
bi0+ZGlkQ29tcGxldGVQcmVlbXB0aXZlRXZlbnQoKTsKIH0KIAotdm9pZCBJREJEYXRhYmFzZUJh
Y2tlbmRJbXBsOjpvcGVuQ3Vyc29yKGludDY0X3QgdHJhbnNhY3Rpb25JZCwgaW50NjRfdCBvYmpl
Y3RTdG9yZUlkLCBpbnQ2NF90IGluZGV4SWQsIFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+IGtleVJh
bmdlLCB1bnNpZ25lZCBzaG9ydCBkaXJlY3Rpb24sIGJvb2wga2V5T25seSwgVGFza1R5cGUgdGFz
a1R5cGUsIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MpCit2b2lkIElEQkRhdGFi
YXNlQmFja2VuZEltcGw6Om9wZW5DdXJzb3IoaW50NjRfdCB0cmFuc2FjdGlvbklkLCBpbnQ2NF90
IG9iamVjdFN0b3JlSWQsIGludDY0X3QgaW5kZXhJZCwgUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4g
a2V5UmFuZ2UsIEluZGV4ZWREQjo6Q3Vyc29yRGlyZWN0aW9uIGRpcmVjdGlvbiwgYm9vbCBrZXlP
bmx5LCBUYXNrVHlwZSB0YXNrVHlwZSwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNr
cykKIHsKICAgICBJREJfVFJBQ0UoIklEQkRhdGFiYXNlQmFja2VuZEltcGw6Om9wZW5DdXJzb3Ii
KTsKICAgICBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsKiB0cmFuc2FjdGlvbiA9IG1fdHJhbnNh
Y3Rpb25zLmdldCh0cmFuc2FjdGlvbklkKTsKICAgICBpZiAoIXRyYW5zYWN0aW9uKQogICAgICAg
ICByZXR1cm47CiAKLSAgICB0cmFuc2FjdGlvbi0+c2NoZWR1bGVUYXNrKE9wZW5DdXJzb3JPcGVy
YXRpb246OmNyZWF0ZShtX2JhY2tpbmdTdG9yZSwgaWQoKSwgb2JqZWN0U3RvcmVJZCwgaW5kZXhJ
ZCwga2V5UmFuZ2UsIGRpcmVjdGlvbiwga2V5T25seSA/IElEQkN1cnNvckJhY2tlbmRJbnRlcmZh
Y2U6OktleU9ubHkgOiBJREJDdXJzb3JCYWNrZW5kSW50ZXJmYWNlOjpLZXlBbmRWYWx1ZSwgdGFz
a1R5cGUsIGNhbGxiYWNrcykpOworICAgIHRyYW5zYWN0aW9uLT5zY2hlZHVsZVRhc2soT3BlbkN1
cnNvck9wZXJhdGlvbjo6Y3JlYXRlKG1fYmFja2luZ1N0b3JlLCBpZCgpLCBvYmplY3RTdG9yZUlk
LCBpbmRleElkLCBrZXlSYW5nZSwgZGlyZWN0aW9uLCBrZXlPbmx5ID8gSW5kZXhlZERCOjpDdXJz
b3JLZXlPbmx5IDogSW5kZXhlZERCOjpDdXJzb3JLZXlBbmRWYWx1ZSwgdGFza1R5cGUsIGNhbGxi
YWNrcykpOwogfQogCiB2b2lkIE9wZW5DdXJzb3JPcGVyYXRpb246OnBlcmZvcm0oSURCVHJhbnNh
Y3Rpb25CYWNrZW5kSW1wbCogdHJhbnNhY3Rpb24pCkBAIC05NTAsMTcgKzk1MSwxNiBAQCB2b2lk
IE9wZW5DdXJzb3JPcGVyYXRpb246OnBlcmZvcm0oSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbCog
dHJhbnNhY3Rpb24pCiAgICAgaWYgKG1fdGFza1R5cGUgPT0gSURCRGF0YWJhc2VCYWNrZW5kSW50
ZXJmYWNlOjpQcmVlbXB0aXZlVGFzaykKICAgICAgICAgdHJhbnNhY3Rpb24tPmFkZFByZWVtcHRp
dmVFdmVudCgpOwogCi0gICAgSURCQ3Vyc29yOjpEaXJlY3Rpb24gZGlyZWN0aW9uID0gc3RhdGlj
X2Nhc3Q8SURCQ3Vyc29yOjpEaXJlY3Rpb24+KG1fZGlyZWN0aW9uKTsKICAgICBSZWZQdHI8SURC
QmFja2luZ1N0b3JlOjpDdXJzb3I+IGJhY2tpbmdTdG9yZUN1cnNvcjsKICAgICBpZiAobV9pbmRl
eElkID09IElEQkluZGV4TWV0YWRhdGE6OkludmFsaWRJZCkgewotICAgICAgICBBU1NFUlQobV9j
dXJzb3JUeXBlICE9IElEQkN1cnNvckJhY2tlbmRJbnRlcmZhY2U6OktleU9ubHkpOwotICAgICAg
ICBiYWNraW5nU3RvcmVDdXJzb3IgPSBtX2JhY2tpbmdTdG9yZS0+b3Blbk9iamVjdFN0b3JlQ3Vy
c29yKHRyYW5zYWN0aW9uLT5iYWNraW5nU3RvcmVUcmFuc2FjdGlvbigpLCBtX2RhdGFiYXNlSWQs
IG1fb2JqZWN0U3RvcmVJZCwgbV9rZXlSYW5nZS5nZXQoKSwgZGlyZWN0aW9uKTsKKyAgICAgICAg
QVNTRVJUKG1fY3Vyc29yVHlwZSAhPSBJbmRleGVkREI6OkN1cnNvcktleU9ubHkpOworICAgICAg
ICBiYWNraW5nU3RvcmVDdXJzb3IgPSBtX2JhY2tpbmdTdG9yZS0+b3Blbk9iamVjdFN0b3JlQ3Vy
c29yKHRyYW5zYWN0aW9uLT5iYWNraW5nU3RvcmVUcmFuc2FjdGlvbigpLCBtX2RhdGFiYXNlSWQs
IG1fb2JqZWN0U3RvcmVJZCwgbV9rZXlSYW5nZS5nZXQoKSwgbV9kaXJlY3Rpb24pOwogICAgIH0g
ZWxzZSB7CiAgICAgICAgIEFTU0VSVChtX3Rhc2tUeXBlID09IElEQkRhdGFiYXNlQmFja2VuZElu
dGVyZmFjZTo6Tm9ybWFsVGFzayk7Ci0gICAgICAgIGlmIChtX2N1cnNvclR5cGUgPT0gSURCQ3Vy
c29yQmFja2VuZEludGVyZmFjZTo6S2V5T25seSkKLSAgICAgICAgICAgIGJhY2tpbmdTdG9yZUN1
cnNvciA9IG1fYmFja2luZ1N0b3JlLT5vcGVuSW5kZXhLZXlDdXJzb3IodHJhbnNhY3Rpb24tPmJh
Y2tpbmdTdG9yZVRyYW5zYWN0aW9uKCksIG1fZGF0YWJhc2VJZCwgbV9vYmplY3RTdG9yZUlkLCBt
X2luZGV4SWQsIG1fa2V5UmFuZ2UuZ2V0KCksIGRpcmVjdGlvbik7CisgICAgICAgIGlmIChtX2N1
cnNvclR5cGUgPT0gSW5kZXhlZERCOjpDdXJzb3JLZXlPbmx5KQorICAgICAgICAgICAgYmFja2lu
Z1N0b3JlQ3Vyc29yID0gbV9iYWNraW5nU3RvcmUtPm9wZW5JbmRleEtleUN1cnNvcih0cmFuc2Fj
dGlvbi0+YmFja2luZ1N0b3JlVHJhbnNhY3Rpb24oKSwgbV9kYXRhYmFzZUlkLCBtX29iamVjdFN0
b3JlSWQsIG1faW5kZXhJZCwgbV9rZXlSYW5nZS5nZXQoKSwgbV9kaXJlY3Rpb24pOwogICAgICAg
ICBlbHNlCi0gICAgICAgICAgICBiYWNraW5nU3RvcmVDdXJzb3IgPSBtX2JhY2tpbmdTdG9yZS0+
b3BlbkluZGV4Q3Vyc29yKHRyYW5zYWN0aW9uLT5iYWNraW5nU3RvcmVUcmFuc2FjdGlvbigpLCBt
X2RhdGFiYXNlSWQsIG1fb2JqZWN0U3RvcmVJZCwgbV9pbmRleElkLCBtX2tleVJhbmdlLmdldCgp
LCBkaXJlY3Rpb24pOworICAgICAgICAgICAgYmFja2luZ1N0b3JlQ3Vyc29yID0gbV9iYWNraW5n
U3RvcmUtPm9wZW5JbmRleEN1cnNvcih0cmFuc2FjdGlvbi0+YmFja2luZ1N0b3JlVHJhbnNhY3Rp
b24oKSwgbV9kYXRhYmFzZUlkLCBtX29iamVjdFN0b3JlSWQsIG1faW5kZXhJZCwgbV9rZXlSYW5n
ZS5nZXQoKSwgbV9kaXJlY3Rpb24pOwogICAgIH0KIAogICAgIGlmICghYmFja2luZ1N0b3JlQ3Vy
c29yKSB7CkBAIC05OTEsOSArOTkxLDkgQEAgdm9pZCBDb3VudE9wZXJhdGlvbjo6cGVyZm9ybShJ
REJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsKiB0cmFuc2FjdGlvbikKICAgICBSZWZQdHI8SURCQmFj
a2luZ1N0b3JlOjpDdXJzb3I+IGJhY2tpbmdTdG9yZUN1cnNvcjsKIAogICAgIGlmIChtX2luZGV4
SWQgPT0gSURCSW5kZXhNZXRhZGF0YTo6SW52YWxpZElkKQotICAgICAgICBiYWNraW5nU3RvcmVD
dXJzb3IgPSBtX2JhY2tpbmdTdG9yZS0+b3Blbk9iamVjdFN0b3JlS2V5Q3Vyc29yKHRyYW5zYWN0
aW9uLT5iYWNraW5nU3RvcmVUcmFuc2FjdGlvbigpLCBtX2RhdGFiYXNlSWQsIG1fb2JqZWN0U3Rv
cmVJZCwgbV9rZXlSYW5nZS5nZXQoKSwgSURCQ3Vyc29yOjpORVhUKTsKKyAgICAgICAgYmFja2lu
Z1N0b3JlQ3Vyc29yID0gbV9iYWNraW5nU3RvcmUtPm9wZW5PYmplY3RTdG9yZUtleUN1cnNvcih0
cmFuc2FjdGlvbi0+YmFja2luZ1N0b3JlVHJhbnNhY3Rpb24oKSwgbV9kYXRhYmFzZUlkLCBtX29i
amVjdFN0b3JlSWQsIG1fa2V5UmFuZ2UuZ2V0KCksIEluZGV4ZWREQjo6Q3Vyc29yTmV4dCk7CiAg
ICAgZWxzZQotICAgICAgICBiYWNraW5nU3RvcmVDdXJzb3IgPSBtX2JhY2tpbmdTdG9yZS0+b3Bl
bkluZGV4S2V5Q3Vyc29yKHRyYW5zYWN0aW9uLT5iYWNraW5nU3RvcmVUcmFuc2FjdGlvbigpLCBt
X2RhdGFiYXNlSWQsIG1fb2JqZWN0U3RvcmVJZCwgbV9pbmRleElkLCBtX2tleVJhbmdlLmdldCgp
LCBJREJDdXJzb3I6Ok5FWFQpOworICAgICAgICBiYWNraW5nU3RvcmVDdXJzb3IgPSBtX2JhY2tp
bmdTdG9yZS0+b3BlbkluZGV4S2V5Q3Vyc29yKHRyYW5zYWN0aW9uLT5iYWNraW5nU3RvcmVUcmFu
c2FjdGlvbigpLCBtX2RhdGFiYXNlSWQsIG1fb2JqZWN0U3RvcmVJZCwgbV9pbmRleElkLCBtX2tl
eVJhbmdlLmdldCgpLCBJbmRleGVkREI6OkN1cnNvck5leHQpOwogICAgIGlmICghYmFja2luZ1N0
b3JlQ3Vyc29yKSB7CiAgICAgICAgIG1fY2FsbGJhY2tzLT5vblN1Y2Nlc3MoY291bnQpOwogICAg
ICAgICByZXR1cm47CkBAIC0xMDEyLDcgKzEwMTIsNyBAQCB2b2lkIElEQkRhdGFiYXNlQmFja2Vu
ZEltcGw6OmRlbGV0ZVJhbmdlKGludDY0X3QgdHJhbnNhY3Rpb25JZCwgaW50NjRfdCBvYmplY3RT
dAogICAgIElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGwqIHRyYW5zYWN0aW9uID0gbV90cmFuc2Fj
dGlvbnMuZ2V0KHRyYW5zYWN0aW9uSWQpOwogICAgIGlmICghdHJhbnNhY3Rpb24pCiAgICAgICAg
IHJldHVybjsKLSAgICBBU1NFUlQodHJhbnNhY3Rpb24tPm1vZGUoKSAhPSBJREJUcmFuc2FjdGlv
bjo6UkVBRF9PTkxZKTsKKyAgICBBU1NFUlQodHJhbnNhY3Rpb24tPm1vZGUoKSAhPSBJbmRleGVk
REI6OlRyYW5zYWN0aW9uUmVhZE9ubHkpOwogCiAgICAgdHJhbnNhY3Rpb24tPnNjaGVkdWxlVGFz
ayhEZWxldGVSYW5nZU9wZXJhdGlvbjo6Y3JlYXRlKG1fYmFja2luZ1N0b3JlLCBpZCgpLCBvYmpl
Y3RTdG9yZUlkLCBrZXlSYW5nZSwgY2FsbGJhY2tzKSk7CiB9CkBAIC0xMDIwLDcgKzEwMjAsNyBA
QCB2b2lkIElEQkRhdGFiYXNlQmFja2VuZEltcGw6OmRlbGV0ZVJhbmdlKGludDY0X3QgdHJhbnNh
Y3Rpb25JZCwgaW50NjRfdCBvYmplY3RTdAogdm9pZCBEZWxldGVSYW5nZU9wZXJhdGlvbjo6cGVy
Zm9ybShJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsKiB0cmFuc2FjdGlvbikKIHsKICAgICBJREJf
VFJBQ0UoIkRlbGV0ZVJhbmdlT3BlcmF0aW9uIik7Ci0gICAgUmVmUHRyPElEQkJhY2tpbmdTdG9y
ZTo6Q3Vyc29yPiBiYWNraW5nU3RvcmVDdXJzb3IgPSBtX2JhY2tpbmdTdG9yZS0+b3Blbk9iamVj
dFN0b3JlQ3Vyc29yKHRyYW5zYWN0aW9uLT5iYWNraW5nU3RvcmVUcmFuc2FjdGlvbigpLCBtX2Rh
dGFiYXNlSWQsIG1fb2JqZWN0U3RvcmVJZCwgbV9rZXlSYW5nZS5nZXQoKSwgSURCQ3Vyc29yOjpO
RVhUKTsKKyAgICBSZWZQdHI8SURCQmFja2luZ1N0b3JlOjpDdXJzb3I+IGJhY2tpbmdTdG9yZUN1
cnNvciA9IG1fYmFja2luZ1N0b3JlLT5vcGVuT2JqZWN0U3RvcmVDdXJzb3IodHJhbnNhY3Rpb24t
PmJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uKCksIG1fZGF0YWJhc2VJZCwgbV9vYmplY3RTdG9yZUlk
LCBtX2tleVJhbmdlLmdldCgpLCBJbmRleGVkREI6OkN1cnNvck5leHQpOwogICAgIGlmIChiYWNr
aW5nU3RvcmVDdXJzb3IpIHsKICAgICAgICAgZG8gewogICAgICAgICAgICAgbV9iYWNraW5nU3Rv
cmUtPmRlbGV0ZVJlY29yZCh0cmFuc2FjdGlvbi0+YmFja2luZ1N0b3JlVHJhbnNhY3Rpb24oKSwg
bV9kYXRhYmFzZUlkLCBtX29iamVjdFN0b3JlSWQsIGJhY2tpbmdTdG9yZUN1cnNvci0+cmVjb3Jk
SWRlbnRpZmllcigpKTsKQEAgLTEwMzYsNyArMTAzNiw3IEBAIHZvaWQgSURCRGF0YWJhc2VCYWNr
ZW5kSW1wbDo6Y2xlYXIoaW50NjRfdCB0cmFuc2FjdGlvbklkLCBpbnQ2NF90IG9iamVjdFN0b3Jl
SWQsCiAgICAgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbCogdHJhbnNhY3Rpb24gPSBtX3RyYW5z
YWN0aW9ucy5nZXQodHJhbnNhY3Rpb25JZCk7CiAgICAgaWYgKCF0cmFuc2FjdGlvbikKICAgICAg
ICAgcmV0dXJuOwotICAgIEFTU0VSVCh0cmFuc2FjdGlvbi0+bW9kZSgpICE9IElEQlRyYW5zYWN0
aW9uOjpSRUFEX09OTFkpOworICAgIEFTU0VSVCh0cmFuc2FjdGlvbi0+bW9kZSgpICE9IEluZGV4
ZWREQjo6VHJhbnNhY3Rpb25SZWFkT25seSk7CiAKICAgICB0cmFuc2FjdGlvbi0+c2NoZWR1bGVU
YXNrKENsZWFyT3BlcmF0aW9uOjpjcmVhdGUobV9iYWNraW5nU3RvcmUsIGlkKCksIG9iamVjdFN0
b3JlSWQsIGNhbGxiYWNrcykpOwogfQpAQCAtMTA3OSw3ICsxMDc5LDcgQEAgdm9pZCBJREJEYXRh
YmFzZUJhY2tlbmRJbXBsOjpWZXJzaW9uQ2hhbmdlT3BlcmF0aW9uOjpwZXJmb3JtKElEQlRyYW5z
YWN0aW9uQmFja2UKIHZvaWQgSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6dHJhbnNhY3Rpb25TdGFy
dGVkKFBhc3NSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbD4gcHJwVHJhbnNhY3Rpb24p
CiB7CiAgICAgUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGw+IHRyYW5zYWN0aW9uID0g
cHJwVHJhbnNhY3Rpb247Ci0gICAgaWYgKHRyYW5zYWN0aW9uLT5tb2RlKCkgPT0gSURCVHJhbnNh
Y3Rpb246OlZFUlNJT05fQ0hBTkdFKSB7CisgICAgaWYgKHRyYW5zYWN0aW9uLT5tb2RlKCkgPT0g
SW5kZXhlZERCOjpUcmFuc2FjdGlvblZlcnNpb25DaGFuZ2UpIHsKICAgICAgICAgQVNTRVJUKCFt
X3J1bm5pbmdWZXJzaW9uQ2hhbmdlVHJhbnNhY3Rpb24pOwogICAgICAgICBtX3J1bm5pbmdWZXJz
aW9uQ2hhbmdlVHJhbnNhY3Rpb24gPSB0cmFuc2FjdGlvbjsKICAgICB9CkBAIC0xMDkxLDcgKzEw
OTEsNyBAQCB2b2lkIElEQkRhdGFiYXNlQmFja2VuZEltcGw6OnRyYW5zYWN0aW9uRmluaXNoZWQo
UGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbgogICAgIEFTU0VSVChtX3RyYW5zYWN0aW9u
cy5jb250YWlucyh0cmFuc2FjdGlvbi0+aWQoKSkpOwogICAgIEFTU0VSVChtX3RyYW5zYWN0aW9u
cy5nZXQodHJhbnNhY3Rpb24tPmlkKCkpID09IHRyYW5zYWN0aW9uLmdldCgpKTsKICAgICBtX3Ry
YW5zYWN0aW9ucy5yZW1vdmUodHJhbnNhY3Rpb24tPmlkKCkpOwotICAgIGlmICh0cmFuc2FjdGlv
bi0+bW9kZSgpID09IElEQlRyYW5zYWN0aW9uOjpWRVJTSU9OX0NIQU5HRSkgeworICAgIGlmICh0
cmFuc2FjdGlvbi0+bW9kZSgpID09IEluZGV4ZWREQjo6VHJhbnNhY3Rpb25WZXJzaW9uQ2hhbmdl
KSB7CiAgICAgICAgIEFTU0VSVCh0cmFuc2FjdGlvbi5nZXQoKSA9PSBtX3J1bm5pbmdWZXJzaW9u
Q2hhbmdlVHJhbnNhY3Rpb24uZ2V0KCkpOwogICAgICAgICBtX3J1bm5pbmdWZXJzaW9uQ2hhbmdl
VHJhbnNhY3Rpb24uY2xlYXIoKTsKICAgICB9CkBAIC0xMTAwLDcgKzExMDAsNyBAQCB2b2lkIElE
QkRhdGFiYXNlQmFja2VuZEltcGw6OnRyYW5zYWN0aW9uRmluaXNoZWQoUGFzc1JlZlB0cjxJREJU
cmFuc2FjdGlvbkJhY2tlbgogdm9pZCBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjp0cmFuc2FjdGlv
bkZpbmlzaGVkQW5kQWJvcnRGaXJlZChQYXNzUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZElt
cGw+IHBycFRyYW5zYWN0aW9uKQogewogICAgIFJlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJ
bXBsPiB0cmFuc2FjdGlvbiA9IHBycFRyYW5zYWN0aW9uOwotICAgIGlmICh0cmFuc2FjdGlvbi0+
bW9kZSgpID09IElEQlRyYW5zYWN0aW9uOjpWRVJTSU9OX0NIQU5HRSkgeworICAgIGlmICh0cmFu
c2FjdGlvbi0+bW9kZSgpID09IEluZGV4ZWREQjo6VHJhbnNhY3Rpb25WZXJzaW9uQ2hhbmdlKSB7
CiAgICAgICAgIC8vIElmIHRoaXMgd2FzIGFuIG9wZW4td2l0aC12ZXJzaW9uIGNhbGwsIHRoZXJl
IHdpbGwgYmUgYSAic2Vjb25kCiAgICAgICAgIC8vIGhhbGYiIG9wZW4gY2FsbCB3YWl0aW5nIGZv
ciB1cyBpbiBwcm9jZXNzUGVuZGluZ0NhbGxzLgogICAgICAgICAvLyBGSVhNRTogV2hlbiB3ZSBu
byBsb25nZXIgc3VwcG9ydCBzZXRWZXJzaW9uLCBhc3NlcnQgc3VjaCBhIHRoaW5nLgpAQCAtMTEx
NSw3ICsxMTE1LDcgQEAgdm9pZCBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjp0cmFuc2FjdGlvbkZp
bmlzaGVkQW5kQWJvcnRGaXJlZChQYXNzUmVmUHRyPElEQlRyYW4KIHZvaWQgSURCRGF0YWJhc2VC
YWNrZW5kSW1wbDo6dHJhbnNhY3Rpb25GaW5pc2hlZEFuZENvbXBsZXRlRmlyZWQoUGFzc1JlZlB0
cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsPiBwcnBUcmFuc2FjdGlvbikKIHsKICAgICBSZWZQ
dHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbD4gdHJhbnNhY3Rpb24gPSBwcnBUcmFuc2FjdGlv
bjsKLSAgICBpZiAodHJhbnNhY3Rpb24tPm1vZGUoKSA9PSBJREJUcmFuc2FjdGlvbjo6VkVSU0lP
Tl9DSEFOR0UpCisgICAgaWYgKHRyYW5zYWN0aW9uLT5tb2RlKCkgPT0gSW5kZXhlZERCOjpUcmFu
c2FjdGlvblZlcnNpb25DaGFuZ2UpCiAgICAgICAgIHByb2Nlc3NQZW5kaW5nQ2FsbHMoKTsKIH0K
IApAQCAtMTE2NSw3ICsxMTY1LDcgQEAgdm9pZCBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpwcm9j
ZXNzUGVuZGluZ0NhbGxzKCkKIAogdm9pZCBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpjcmVhdGVU
cmFuc2FjdGlvbihpbnQ2NF90IHRyYW5zYWN0aW9uSWQsIFBhc3NSZWZQdHI8SURCRGF0YWJhc2VD
YWxsYmFja3M+IGNhbGxiYWNrcywgY29uc3QgVmVjdG9yPGludDY0X3Q+JiBvYmplY3RTdG9yZUlk
cywgdW5zaWduZWQgc2hvcnQgbW9kZSkKIHsKLSAgICBSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNr
ZW5kSW1wbD4gdHJhbnNhY3Rpb24gPSBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsOjpjcmVhdGUo
dHJhbnNhY3Rpb25JZCwgY2FsbGJhY2tzLCBvYmplY3RTdG9yZUlkcywgc3RhdGljX2Nhc3Q8SURC
VHJhbnNhY3Rpb246Ok1vZGU+KG1vZGUpLCB0aGlzKTsKKyAgICBSZWZQdHI8SURCVHJhbnNhY3Rp
b25CYWNrZW5kSW1wbD4gdHJhbnNhY3Rpb24gPSBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsOjpj
cmVhdGUodHJhbnNhY3Rpb25JZCwgY2FsbGJhY2tzLCBvYmplY3RTdG9yZUlkcywgc3RhdGljX2Nh
c3Q8SW5kZXhlZERCOjpUcmFuc2FjdGlvbk1vZGU+KG1vZGUpLCB0aGlzKTsKICAgICBBU1NFUlQo
IW1fdHJhbnNhY3Rpb25zLmNvbnRhaW5zKHRyYW5zYWN0aW9uSWQpKTsKICAgICBtX3RyYW5zYWN0
aW9ucy5hZGQodHJhbnNhY3Rpb25JZCwgdHJhbnNhY3Rpb24uZ2V0KCkpOwogfQpAQCAtMTI1Nyw3
ICsxMjU3LDcgQEAgdm9pZCBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpydW5JbnRWZXJzaW9uQ2hh
bmdlVHJhbnNhY3Rpb24oUGFzc1JlZlB0cjxJREJDYWxsYmEKICAgICB9CiAKICAgICBWZWN0b3I8
aW50NjRfdD4gb2JqZWN0U3RvcmVJZHM7Ci0gICAgY3JlYXRlVHJhbnNhY3Rpb24odHJhbnNhY3Rp
b25JZCwgZGF0YWJhc2VDYWxsYmFja3MsIG9iamVjdFN0b3JlSWRzLCBJREJUcmFuc2FjdGlvbjo6
VkVSU0lPTl9DSEFOR0UpOworICAgIGNyZWF0ZVRyYW5zYWN0aW9uKHRyYW5zYWN0aW9uSWQsIGRh
dGFiYXNlQ2FsbGJhY2tzLCBvYmplY3RTdG9yZUlkcywgSW5kZXhlZERCOjpUcmFuc2FjdGlvblZl
cnNpb25DaGFuZ2UpOwogICAgIFJlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsPiB0cmFu
c2FjdGlvbiA9IG1fdHJhbnNhY3Rpb25zLmdldCh0cmFuc2FjdGlvbklkKTsKIAogICAgIHRyYW5z
YWN0aW9uLT5zY2hlZHVsZVRhc2soVmVyc2lvbkNoYW5nZU9wZXJhdGlvbjo6Y3JlYXRlKHRoaXMs
IHRyYW5zYWN0aW9uSWQsIHJlcXVlc3RlZFZlcnNpb24sIGNhbGxiYWNrcywgZGF0YWJhc2VDYWxs
YmFja3MpLCBWZXJzaW9uQ2hhbmdlQWJvcnRPcGVyYXRpb246OmNyZWF0ZSh0aGlzLCBtX21ldGFk
YXRhLnZlcnNpb24sIG1fbWV0YWRhdGEuaW50VmVyc2lvbikpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VCYWNrZW5kSW1wbC5oIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VCYWNrZW5kSW1wbC5oCmlu
ZGV4IDFlYmM4NzgxMmU1YWU5NmRmZGI1ODc3ZDFkZjNiOTVhYjliMzAzNmQuLjM1M2JmYTA5MzE4
OWQxZDg0YmRmYTA2OTE5OTc3NWQ1ODAxNWNiOTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQmFja2VuZEltcGwuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmRJbXBsLmgKQEAgLTI3
LDcgKzI3LDcgQEAKICNkZWZpbmUgSURCRGF0YWJhc2VCYWNrZW5kSW1wbF9oCiAKICNpbmNsdWRl
ICJJREJDYWxsYmFja3MuaCIKLSNpbmNsdWRlICJJREJEYXRhYmFzZS5oIgorI2luY2x1ZGUgIklE
Qk1ldGFkYXRhLmgiCiAjaW5jbHVkZSA8c3RkaW50Lmg+CiAjaW5jbHVkZSA8d3RmL0RlcXVlLmg+
CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KQEAgLTg0LDcgKzg0LDcgQEAgcHVibGljOgogICAg
IHZpcnR1YWwgdm9pZCBwdXQoaW50NjRfdCB0cmFuc2FjdGlvbklkLCBpbnQ2NF90IG9iamVjdFN0
b3JlSWQsIFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiB2YWx1ZSwgUGFzc1JlZlB0cjxJREJLZXk+
LCBQdXRNb2RlLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4sIGNvbnN0IFZlY3RvcjxpbnQ2NF90
PiYgaW5kZXhJZHMsIGNvbnN0IFZlY3RvcjxJbmRleEtleXM+JikgT1ZFUlJJREU7CiAgICAgdmly
dHVhbCB2b2lkIHNldEluZGV4S2V5cyhpbnQ2NF90IHRyYW5zYWN0aW9uSWQsIGludDY0X3Qgb2Jq
ZWN0U3RvcmVJZCwgUGFzc1JlZlB0cjxJREJLZXk+IHBycFByaW1hcnlLZXksIGNvbnN0IFZlY3Rv
cjxpbnQ2NF90PiYgaW5kZXhJZHMsIGNvbnN0IFZlY3RvcjxJbmRleEtleXM+JikgT1ZFUlJJREU7
CiAgICAgdmlydHVhbCB2b2lkIHNldEluZGV4ZXNSZWFkeShpbnQ2NF90IHRyYW5zYWN0aW9uSWQs
IGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgY29uc3QgVmVjdG9yPGludDY0X3Q+JiBpbmRleElkcykg
T1ZFUlJJREU7Ci0gICAgdmlydHVhbCB2b2lkIG9wZW5DdXJzb3IoaW50NjRfdCB0cmFuc2FjdGlv
bklkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGludDY0X3QgaW5kZXhJZCwgUGFzc1JlZlB0cjxJ
REJLZXlSYW5nZT4sIHVuc2lnbmVkIHNob3J0IGRpcmVjdGlvbiwgYm9vbCBrZXlPbmx5LCBUYXNr
VHlwZSwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+KSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZv
aWQgb3BlbkN1cnNvcihpbnQ2NF90IHRyYW5zYWN0aW9uSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJ
ZCwgaW50NjRfdCBpbmRleElkLCBQYXNzUmVmUHRyPElEQktleVJhbmdlPiwgSW5kZXhlZERCOjpD
dXJzb3JEaXJlY3Rpb24sIGJvb2wga2V5T25seSwgVGFza1R5cGUsIFBhc3NSZWZQdHI8SURCQ2Fs
bGJhY2tzPikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIGNvdW50KGludDY0X3QgdHJhbnNh
Y3Rpb25JZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBpbnQ2NF90IGluZGV4SWQsIFBhc3NSZWZQ
dHI8SURCS2V5UmFuZ2U+LCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4pIE9WRVJSSURFOwogICAg
IHZpcnR1YWwgdm9pZCBkZWxldGVSYW5nZShpbnQ2NF90IHRyYW5zYWN0aW9uSWQsIGludDY0X3Qg
b2JqZWN0U3RvcmVJZCwgUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4sIFBhc3NSZWZQdHI8SURCQ2Fs
bGJhY2tzPikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIGNsZWFyKGludDY0X3QgdHJhbnNh
Y3Rpb25JZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4p
IE9WRVJSSURFOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
SURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2UuaAppbmRleCBlMDAxNGViM2UyZGNj
MmEzZjQzNDI1MDc0NDU3OTMwNWI3MTY3YzQ2Li4zZTUxY2MwNmEyMjM5YWNlOGU3OThjNGE4MzYw
MzY0YWYwYTI5NDA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9JREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2UuaApAQCAtMjYsNyArMjYs
OCBAQAogI2lmbmRlZiBJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2VfaAogI2RlZmluZSBJREJE
YXRhYmFzZUJhY2tlbmRJbnRlcmZhY2VfaAogCi0jaW5jbHVkZSAiSURCVHJhbnNhY3Rpb24uaCIK
KyNpbmNsdWRlICJJREJEYXRhYmFzZUVycm9yLmgiCisjaW5jbHVkZSAiSW5kZXhlZERCLmgiCiAj
aW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgog
I2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgpAQCAtODUsNyArODYsNyBAQCBwdWJsaWM6
CiAgICAgdmlydHVhbCB2b2lkIHB1dChpbnQ2NF90IHRyYW5zYWN0aW9uSWQsIGludDY0X3Qgb2Jq
ZWN0U3RvcmVJZCwgUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+IHZhbHVlLCBQYXNzUmVmUHRyPElE
QktleT4sIFB1dE1vZGUsIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiwgY29uc3QgVmVjdG9yPGlu
dDY0X3Q+JiBpbmRleElkcywgY29uc3QgVmVjdG9yPEluZGV4S2V5cz4mKSA9IDA7CiAgICAgdmly
dHVhbCB2b2lkIHNldEluZGV4S2V5cyhpbnQ2NF90IHRyYW5zYWN0aW9uSWQsIGludDY0X3Qgb2Jq
ZWN0U3RvcmVJZCwgUGFzc1JlZlB0cjxJREJLZXk+IHBycFByaW1hcnlLZXksIGNvbnN0IFZlY3Rv
cjxpbnQ2NF90PiYgaW5kZXhJZHMsIGNvbnN0IFZlY3RvcjxJbmRleEtleXM+JikgPSAwOwogICAg
IHZpcnR1YWwgdm9pZCBzZXRJbmRleGVzUmVhZHkoaW50NjRfdCB0cmFuc2FjdGlvbklkLCBpbnQ2
NF90IG9iamVjdFN0b3JlSWQsIGNvbnN0IFZlY3RvcjxpbnQ2NF90PiYgaW5kZXhJZHMpID0gMDsK
LSAgICB2aXJ0dWFsIHZvaWQgb3BlbkN1cnNvcihpbnQ2NF90IHRyYW5zYWN0aW9uSWQsIGludDY0
X3Qgb2JqZWN0U3RvcmVJZCwgaW50NjRfdCBpbmRleElkLCBQYXNzUmVmUHRyPElEQktleVJhbmdl
PiwgdW5zaWduZWQgc2hvcnQgZGlyZWN0aW9uLCBib29sIGtleU9ubHksIFRhc2tUeXBlLCBQYXNz
UmVmUHRyPElEQkNhbGxiYWNrcz4pID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgb3BlbkN1cnNvcihp
bnQ2NF90IHRyYW5zYWN0aW9uSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgaW50NjRfdCBpbmRl
eElkLCBQYXNzUmVmUHRyPElEQktleVJhbmdlPiwgSW5kZXhlZERCOjpDdXJzb3JEaXJlY3Rpb24s
IGJvb2wga2V5T25seSwgVGFza1R5cGUsIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPikgPSAwOwog
ICAgIHZpcnR1YWwgdm9pZCBjb3VudChpbnQ2NF90IHRyYW5zYWN0aW9uSWQsIGludDY0X3Qgb2Jq
ZWN0U3RvcmVJZCwgaW50NjRfdCBpbmRleElkLCBQYXNzUmVmUHRyPElEQktleVJhbmdlPiwgUGFz
c1JlZlB0cjxJREJDYWxsYmFja3M+KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRlbGV0ZVJhbmdl
KGludDY0X3QgdHJhbnNhY3Rpb25JZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBQYXNzUmVmUHRy
PElEQktleVJhbmdlPiwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+KSA9IDA7CiAgICAgdmlydHVh
bCB2b2lkIGNsZWFyKGludDY0X3QgdHJhbnNhY3Rpb25JZCwgaW50NjRfdCBvYmplY3RTdG9yZUlk
LCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4pID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkZhY3RvcnkuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL0lEQkZhY3RvcnkuaAppbmRleCBjYjFiN2IwYjM3NmI3YWE2ZDg0OWM2ODQ4
YjMwZTNlMWNlNjAyZWY4Li5jYzYxY2Q3YzZmYmQxMmU0ZTA5YTc3ZWM5ZGQwZGEyMGNmZTc3MGI5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRmFjdG9yeS5oCkBA
IC0yOCw3ICsyOCw2IEBACiAjaWZuZGVmIElEQkZhY3RvcnlfaAogI2RlZmluZSBJREJGYWN0b3J5
X2gKIAotI2luY2x1ZGUgIklEQkZhY3RvcnlCYWNrZW5kSW50ZXJmYWNlLmgiCiAjaW5jbHVkZSAi
SURCT3BlbkRCUmVxdWVzdC5oIgogI2luY2x1ZGUgIlNjcmlwdFdyYXBwYWJsZS5oIgogI2luY2x1
ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9JREJJbmRleC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9JREJJbmRleC5jcHAKaW5kZXggYmViOTgzNmE1NGVhYTg5YTVjODdiMmE1OTE3Njg5MjM3ZWMy
NDIwZS4uZmY1ZDQzNjdiODNiOTA4NWI4MzlhNzQ2Yjg2Y2I4NjA2M2FmYjE4MyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCSW5kZXguY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkluZGV4LmNwcApAQCAtMjgsNyArMjgs
NiBAQAogCiAjaWYgRU5BQkxFKElOREVYRURfREFUQUJBU0UpCiAKLSNpbmNsdWRlICJJREJDdXJz
b3JCYWNrZW5kSW50ZXJmYWNlLmgiCiAjaW5jbHVkZSAiSURCRGF0YWJhc2VFeGNlcHRpb24uaCIK
ICNpbmNsdWRlICJJREJLZXkuaCIKICNpbmNsdWRlICJJREJLZXlSYW5nZS5oIgpAQCAtNDAsNyAr
MzksNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0YXRpYyBjb25zdCB1bnNpZ25lZCBz
aG9ydCBkZWZhdWx0RGlyZWN0aW9uID0gSURCQ3Vyc29yOjpORVhUOworc3RhdGljIGNvbnN0IHVu
c2lnbmVkIHNob3J0IGRlZmF1bHREaXJlY3Rpb24gPSBJbmRleGVkREI6OkN1cnNvck5leHQ7CiAK
IElEQkluZGV4OjpJREJJbmRleChjb25zdCBJREJJbmRleE1ldGFkYXRhJiBtZXRhZGF0YSwgSURC
T2JqZWN0U3RvcmUqIG9iamVjdFN0b3JlLCBJREJUcmFuc2FjdGlvbiogdHJhbnNhY3Rpb24pCiAg
ICAgOiBtX21ldGFkYXRhKG1ldGFkYXRhKQpAQCAtNjgsMTIgKzY3LDEyIEBAIFBhc3NSZWZQdHI8
SURCUmVxdWVzdD4gSURCSW5kZXg6Om9wZW5DdXJzb3IoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCog
Y29udGV4dCwgUGFzCiAgICAgICAgIGVjID0gSURCRGF0YWJhc2VFeGNlcHRpb246OlRyYW5zYWN0
aW9uSW5hY3RpdmVFcnJvcjsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQotICAgIElEQkN1cnNv
cjo6RGlyZWN0aW9uIGRpcmVjdGlvbiA9IElEQkN1cnNvcjo6c3RyaW5nVG9EaXJlY3Rpb24oZGly
ZWN0aW9uU3RyaW5nLCBjb250ZXh0LCBlYyk7CisgICAgSW5kZXhlZERCOjpDdXJzb3JEaXJlY3Rp
b24gZGlyZWN0aW9uID0gSURCQ3Vyc29yOjpzdHJpbmdUb0RpcmVjdGlvbihkaXJlY3Rpb25TdHJp
bmcsIGNvbnRleHQsIGVjKTsKICAgICBpZiAoZWMpCiAgICAgICAgIHJldHVybiAwOwogCiAgICAg
UmVmUHRyPElEQlJlcXVlc3Q+IHJlcXVlc3QgPSBJREJSZXF1ZXN0OjpjcmVhdGUoY29udGV4dCwg
SURCQW55OjpjcmVhdGUodGhpcyksIG1fdHJhbnNhY3Rpb24uZ2V0KCkpOwotICAgIHJlcXVlc3Qt
PnNldEN1cnNvckRldGFpbHMoSURCQ3Vyc29yQmFja2VuZEludGVyZmFjZTo6S2V5QW5kVmFsdWUs
IGRpcmVjdGlvbik7CisgICAgcmVxdWVzdC0+c2V0Q3Vyc29yRGV0YWlscyhJbmRleGVkREI6OkN1
cnNvcktleUFuZFZhbHVlLCBkaXJlY3Rpb24pOwogICAgIGJhY2tlbmREQigpLT5vcGVuQ3Vyc29y
KG1fdHJhbnNhY3Rpb24tPmlkKCksIG1fb2JqZWN0U3RvcmUtPmlkKCksIG1fbWV0YWRhdGEuaWQs
IGtleVJhbmdlLCBkaXJlY3Rpb24sIGZhbHNlLCBJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2U6
Ok5vcm1hbFRhc2ssIHJlcXVlc3QpOwogICAgIHJldHVybiByZXF1ZXN0OwogfQpAQCAtMTIzLDEy
ICsxMjIsMTIgQEAgUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBJREJJbmRleDo6b3BlbktleUN1cnNv
cihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LAogICAgICAgICBlYyA9IElEQkRhdGFi
YXNlRXhjZXB0aW9uOjpUcmFuc2FjdGlvbkluYWN0aXZlRXJyb3I7CiAgICAgICAgIHJldHVybiAw
OwogICAgIH0KLSAgICBJREJDdXJzb3I6OkRpcmVjdGlvbiBkaXJlY3Rpb24gPSBJREJDdXJzb3I6
OnN0cmluZ1RvRGlyZWN0aW9uKGRpcmVjdGlvblN0cmluZywgY29udGV4dCwgZWMpOworICAgIElu
ZGV4ZWREQjo6Q3Vyc29yRGlyZWN0aW9uIGRpcmVjdGlvbiA9IElEQkN1cnNvcjo6c3RyaW5nVG9E
aXJlY3Rpb24oZGlyZWN0aW9uU3RyaW5nLCBjb250ZXh0LCBlYyk7CiAgICAgaWYgKGVjKQogICAg
ICAgICByZXR1cm4gMDsKIAogICAgIFJlZlB0cjxJREJSZXF1ZXN0PiByZXF1ZXN0ID0gSURCUmVx
dWVzdDo6Y3JlYXRlKGNvbnRleHQsIElEQkFueTo6Y3JlYXRlKHRoaXMpLCBtX3RyYW5zYWN0aW9u
LmdldCgpKTsKLSAgICByZXF1ZXN0LT5zZXRDdXJzb3JEZXRhaWxzKElEQkN1cnNvckJhY2tlbmRJ
bnRlcmZhY2U6OktleU9ubHksIGRpcmVjdGlvbik7CisgICAgcmVxdWVzdC0+c2V0Q3Vyc29yRGV0
YWlscyhJbmRleGVkREI6OkN1cnNvcktleU9ubHksIGRpcmVjdGlvbik7CiAgICAgYmFja2VuZERC
KCktPm9wZW5DdXJzb3IobV90cmFuc2FjdGlvbi0+aWQoKSwgbV9vYmplY3RTdG9yZS0+aWQoKSwg
bV9tZXRhZGF0YS5pZCwga2V5UmFuZ2UsIGRpcmVjdGlvbiwgdHJ1ZSwgSURCRGF0YWJhc2VCYWNr
ZW5kSW50ZXJmYWNlOjpOb3JtYWxUYXNrLCByZXF1ZXN0KTsKICAgICByZXR1cm4gcmVxdWVzdDsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVj
dFN0b3JlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0
b3JlLmNwcAppbmRleCBmYWE1Y2JlMjYxY2NiMDRkNGM4OTM5N2Q2Y2ZjM2IyZmUyN2E4YTNmLi41
ODkwZWMzN2ZjMWMyNTdkZWFkMmZmZTVmZWU4NjEzN2UwN2JlNTIzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmUuY3BwCkBAIC0zMSw3
ICszMSw2IEBACiAjaW5jbHVkZSAiRE9NU3RyaW5nTGlzdC5oIgogI2luY2x1ZGUgIklEQkFueS5o
IgogI2luY2x1ZGUgIklEQkJpbmRpbmdVdGlsaXRpZXMuaCIKLSNpbmNsdWRlICJJREJDdXJzb3JC
YWNrZW5kSW50ZXJmYWNlLmgiCiAjaW5jbHVkZSAiSURCQ3Vyc29yV2l0aFZhbHVlLmgiCiAjaW5j
bHVkZSAiSURCRGF0YWJhc2UuaCIKICNpbmNsdWRlICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5oIgpA
QCAtNDgsNyArNDcsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0YXRpYyBjb25zdCB1
bnNpZ25lZCBzaG9ydCBkZWZhdWx0RGlyZWN0aW9uID0gSURCQ3Vyc29yOjpORVhUOworc3RhdGlj
IGNvbnN0IHVuc2lnbmVkIHNob3J0IGRlZmF1bHREaXJlY3Rpb24gPSBJbmRleGVkREI6OkN1cnNv
ck5leHQ7CiAKIElEQk9iamVjdFN0b3JlOjpJREJPYmplY3RTdG9yZShjb25zdCBJREJPYmplY3RT
dG9yZU1ldGFkYXRhJiBtZXRhZGF0YSwgSURCVHJhbnNhY3Rpb24qIHRyYW5zYWN0aW9uKQogICAg
IDogbV9tZXRhZGF0YShtZXRhZGF0YSkKQEAgLTUwNSwxMiArNTA0LDEyIEBAIFBhc3NSZWZQdHI8
SURCUmVxdWVzdD4gSURCT2JqZWN0U3RvcmU6Om9wZW5DdXJzb3IoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCogY29udGV4CiAgICAgICAgIGVjID0gSURCRGF0YWJhc2VFeGNlcHRpb246OlRyYW5zYWN0
aW9uSW5hY3RpdmVFcnJvcjsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQotICAgIElEQkN1cnNv
cjo6RGlyZWN0aW9uIGRpcmVjdGlvbiA9IElEQkN1cnNvcjo6c3RyaW5nVG9EaXJlY3Rpb24oZGly
ZWN0aW9uU3RyaW5nLCBjb250ZXh0LCBlYyk7CisgICAgSW5kZXhlZERCOjpDdXJzb3JEaXJlY3Rp
b24gZGlyZWN0aW9uID0gSURCQ3Vyc29yOjpzdHJpbmdUb0RpcmVjdGlvbihkaXJlY3Rpb25TdHJp
bmcsIGNvbnRleHQsIGVjKTsKICAgICBpZiAoZWMpCiAgICAgICAgIHJldHVybiAwOwogCiAgICAg
UmVmUHRyPElEQlJlcXVlc3Q+IHJlcXVlc3QgPSBJREJSZXF1ZXN0OjpjcmVhdGUoY29udGV4dCwg
SURCQW55OjpjcmVhdGUodGhpcyksIG1fdHJhbnNhY3Rpb24uZ2V0KCkpOwotICAgIHJlcXVlc3Qt
PnNldEN1cnNvckRldGFpbHMoSURCQ3Vyc29yQmFja2VuZEludGVyZmFjZTo6S2V5QW5kVmFsdWUs
IGRpcmVjdGlvbik7CisgICAgcmVxdWVzdC0+c2V0Q3Vyc29yRGV0YWlscyhJbmRleGVkREI6OkN1
cnNvcktleUFuZFZhbHVlLCBkaXJlY3Rpb24pOwogCiAgICAgYmFja2VuZERCKCktPm9wZW5DdXJz
b3IobV90cmFuc2FjdGlvbi0+aWQoKSwgaWQoKSwgSURCSW5kZXhNZXRhZGF0YTo6SW52YWxpZElk
LCByYW5nZSwgZGlyZWN0aW9uLCBmYWxzZSwgc3RhdGljX2Nhc3Q8SURCRGF0YWJhc2VCYWNrZW5k
SW50ZXJmYWNlOjpUYXNrVHlwZT4odGFza1R5cGUpLCByZXF1ZXN0KTsKICAgICByZXR1cm4gcmVx
dWVzdC5yZWxlYXNlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9JREJSZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lE
QlJlcXVlc3QuY3BwCmluZGV4IDJiMTM0MzkxMTg0MzQzYWU5Y2ZhMDQ4NTM4MDNmMDcxNTlhODYz
NGIuLjY2NWUzZmZhZWI3ZjJiNDMzZDc1YTdmOGQ0NmU3ZmFiYTA4NjZjMmYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlJlcXVlc3QuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlJlcXVlc3QuY3BwCkBAIC0zNyw2ICsz
Nyw3IEBACiAjaW5jbHVkZSAiRXZlbnRRdWV1ZS5oIgogI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGVQ
bGFjZWhvbGRlci5oIgogI2luY2x1ZGUgIklEQkJpbmRpbmdVdGlsaXRpZXMuaCIKKyNpbmNsdWRl
ICJJREJDdXJzb3JCYWNrZW5kSW50ZXJmYWNlLmgiCiAjaW5jbHVkZSAiSURCQ3Vyc29yV2l0aFZh
bHVlLmgiCiAjaW5jbHVkZSAiSURCRGF0YWJhc2UuaCIKICNpbmNsdWRlICJJREJFdmVudERpc3Bh
dGNoZXIuaCIKQEAgLTc3LDggKzc4LDggQEAgSURCUmVxdWVzdDo6SURCUmVxdWVzdChTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBQYXNzUmVmUHRyPElEQkFueT4gc291cmMKICAgICAs
IG1fc291cmNlKHNvdXJjZSkKICAgICAsIG1fdGFza1R5cGUodGFza1R5cGUpCiAgICAgLCBtX2hh
c1BlbmRpbmdBY3Rpdml0eSh0cnVlKQotICAgICwgbV9jdXJzb3JUeXBlKElEQkN1cnNvckJhY2tl
bmRJbnRlcmZhY2U6OktleUFuZFZhbHVlKQotICAgICwgbV9jdXJzb3JEaXJlY3Rpb24oSURCQ3Vy
c29yOjpORVhUKQorICAgICwgbV9jdXJzb3JUeXBlKEluZGV4ZWREQjo6Q3Vyc29yS2V5QW5kVmFs
dWUpCisgICAgLCBtX2N1cnNvckRpcmVjdGlvbihJbmRleGVkREI6OkN1cnNvck5leHQpCiAgICAg
LCBtX2N1cnNvckZpbmlzaGVkKGZhbHNlKQogICAgICwgbV9wZW5kaW5nQ3Vyc29yKDApCiAgICAg
LCBtX2RpZEZpcmVVcGdyYWRlTmVlZGVkRXZlbnQoZmFsc2UpCkBAIC0xODUsNyArMTg2LDcgQEAg
dm9pZCBJREJSZXF1ZXN0OjphYm9ydCgpCiAgICAgbV9yZXF1ZXN0QWJvcnRlZCA9IHRydWU7CiB9
CiAKLXZvaWQgSURCUmVxdWVzdDo6c2V0Q3Vyc29yRGV0YWlscyhJREJDdXJzb3JCYWNrZW5kSW50
ZXJmYWNlOjpDdXJzb3JUeXBlIGN1cnNvclR5cGUsIElEQkN1cnNvcjo6RGlyZWN0aW9uIGRpcmVj
dGlvbikKK3ZvaWQgSURCUmVxdWVzdDo6c2V0Q3Vyc29yRGV0YWlscyhJbmRleGVkREI6OkN1cnNv
clR5cGUgY3Vyc29yVHlwZSwgSW5kZXhlZERCOjpDdXJzb3JEaXJlY3Rpb24gZGlyZWN0aW9uKQog
ewogICAgIEFTU0VSVChtX3JlYWR5U3RhdGUgPT0gUEVORElORyk7CiAgICAgQVNTRVJUKCFtX3Bl
bmRpbmdDdXJzb3IpOwpAQCAtMjI4LDcgKzIyOSw3IEBAIHZvaWQgSURCUmVxdWVzdDo6c2V0UmVz
dWx0Q3Vyc29yKFBhc3NSZWZQdHI8SURCQ3Vyc29yPiBjdXJzb3IsIFBhc3NSZWZQdHI8SURCS2V5
CiAgICAgbV9jdXJzb3JQcmltYXJ5S2V5ID0gcHJpbWFyeUtleTsKICAgICBtX2N1cnNvclZhbHVl
ID0gdmFsdWU7CiAKLSAgICBpZiAobV9jdXJzb3JUeXBlID09IElEQkN1cnNvckJhY2tlbmRJbnRl
cmZhY2U6OktleU9ubHkpIHsKKyAgICBpZiAobV9jdXJzb3JUeXBlID09IEluZGV4ZWREQjo6Q3Vy
c29yS2V5T25seSkgewogICAgICAgICBtX3Jlc3VsdCA9IElEQkFueTo6Y3JlYXRlKGN1cnNvcik7
CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0yOTQsMTAgKzI5NSwxMCBAQCB2b2lkIElEQlJl
cXVlc3Q6Om9uU3VjY2VzcyhQYXNzUmVmUHRyPElEQkN1cnNvckJhY2tlbmRJbnRlcmZhY2U+IGJh
Y2tlbmQsIFBhc3NSZQogICAgIEFTU0VSVCghbV9wZW5kaW5nQ3Vyc29yKTsKICAgICBSZWZQdHI8
SURCQ3Vyc29yPiBjdXJzb3I7CiAgICAgc3dpdGNoIChtX2N1cnNvclR5cGUpIHsKLSAgICBjYXNl
IElEQkN1cnNvckJhY2tlbmRJbnRlcmZhY2U6OktleU9ubHk6CisgICAgY2FzZSBJbmRleGVkREI6
OkN1cnNvcktleU9ubHk6CiAgICAgICAgIGN1cnNvciA9IElEQkN1cnNvcjo6Y3JlYXRlKGJhY2tl
bmQsIG1fY3Vyc29yRGlyZWN0aW9uLCB0aGlzLCBtX3NvdXJjZS5nZXQoKSwgbV90cmFuc2FjdGlv
bi5nZXQoKSk7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgSURCQ3Vyc29yQmFja2VuZEludGVy
ZmFjZTo6S2V5QW5kVmFsdWU6CisgICAgY2FzZSBJbmRleGVkREI6OkN1cnNvcktleUFuZFZhbHVl
OgogICAgICAgICBjdXJzb3IgPSBJREJDdXJzb3JXaXRoVmFsdWU6OmNyZWF0ZShiYWNrZW5kLCBt
X2N1cnNvckRpcmVjdGlvbiwgdGhpcywgbV9zb3VyY2UuZ2V0KCksIG1fdHJhbnNhY3Rpb24uZ2V0
KCkpOwogICAgICAgICBicmVhazsKICAgICBkZWZhdWx0OgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCUmVxdWVzdC5oIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvSURCUmVxdWVzdC5oCmluZGV4IGQwNjdlYjI5YTg4NTU3OTJjMGMxMjU1
Nzc1Y2QwMjQ4ODhjOTUxYjUuLmI4MzA2NDA3MDAzYzEyMGJiYTE3NjM4MjRiOGQyYTkzOTZjZmEy
NzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlJlcXVl
c3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJSZXF1ZXN0LmgK
QEAgLTQyLDcgKzQyLDYgQEAKICNpbmNsdWRlICJJREJBbnkuaCIKICNpbmNsdWRlICJJREJDYWxs
YmFja3MuaCIKICNpbmNsdWRlICJJREJDdXJzb3IuaCIKLSNpbmNsdWRlICJJREJDdXJzb3JCYWNr
ZW5kSW50ZXJmYWNlLmgiCiAjaW5jbHVkZSAiU2NyaXB0V3JhcHBhYmxlLmgiCiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKQEAgLTc4LDcgKzc3LDcgQEAgcHVibGljOgogICAgIERFRklORV9BVFRSSUJV
VEVfRVZFTlRfTElTVEVORVIoZXJyb3IpOwogCiAgICAgdm9pZCBtYXJrRWFybHlEZWF0aCgpOwot
ICAgIHZvaWQgc2V0Q3Vyc29yRGV0YWlscyhJREJDdXJzb3JCYWNrZW5kSW50ZXJmYWNlOjpDdXJz
b3JUeXBlLCBJREJDdXJzb3I6OkRpcmVjdGlvbik7CisgICAgdm9pZCBzZXRDdXJzb3JEZXRhaWxz
KEluZGV4ZWREQjo6Q3Vyc29yVHlwZSwgSW5kZXhlZERCOjpDdXJzb3JEaXJlY3Rpb24pOwogICAg
IHZvaWQgc2V0UGVuZGluZ0N1cnNvcihQYXNzUmVmUHRyPElEQkN1cnNvcj4pOwogICAgIHZvaWQg
ZmluaXNoQ3Vyc29yKCk7CiAgICAgdm9pZCBhYm9ydCgpOwpAQCAtMTQ5LDggKzE0OCw4IEBAIHBy
aXZhdGU6CiAgICAgVmVjdG9yPFJlZlB0cjxFdmVudD4gPiBtX2VucXVldWVkRXZlbnRzOwogCiAg
ICAgLy8gT25seSB1c2VkIGlmIHRoZSByZXN1bHQgdHlwZSB3aWxsIGJlIGEgY3Vyc29yLgotICAg
IElEQkN1cnNvckJhY2tlbmRJbnRlcmZhY2U6OkN1cnNvclR5cGUgbV9jdXJzb3JUeXBlOwotICAg
IElEQkN1cnNvcjo6RGlyZWN0aW9uIG1fY3Vyc29yRGlyZWN0aW9uOworICAgIEluZGV4ZWREQjo6
Q3Vyc29yVHlwZSBtX2N1cnNvclR5cGU7CisgICAgSW5kZXhlZERCOjpDdXJzb3JEaXJlY3Rpb24g
bV9jdXJzb3JEaXJlY3Rpb247CiAgICAgYm9vbCBtX2N1cnNvckZpbmlzaGVkOwogICAgIFJlZlB0
cjxJREJDdXJzb3I+IG1fcGVuZGluZ0N1cnNvcjsKICAgICBSZWZQdHI8SURCS2V5PiBtX2N1cnNv
cktleTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRy
YW5zYWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5z
YWN0aW9uLmNwcAppbmRleCBiYzBlZGRkZjg0MTAzZmNjZTJkZmVkMTNiMmRhMjNiNDIzNDk2N2Mz
Li5mNTU1OTQzZDgwMzNkODgwOTU4MzU2MzgyNWFkZjBhNTE2NGJkMjQyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb24uY3BwCkBAIC00
NCw3ICs0NCw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUGFzc1JlZlB0cjxJREJUcmFu
c2FjdGlvbj4gSURCVHJhbnNhY3Rpb246OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBj
b250ZXh0LCBpbnQ2NF90IGlkLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgb2JqZWN0U3RvcmVOYW1l
cywgSURCVHJhbnNhY3Rpb246Ok1vZGUgbW9kZSwgSURCRGF0YWJhc2UqIGRiKQorUGFzc1JlZlB0
cjxJREJUcmFuc2FjdGlvbj4gSURCVHJhbnNhY3Rpb246OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiBjb250ZXh0LCBpbnQ2NF90IGlkLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgb2JqZWN0
U3RvcmVOYW1lcywgSW5kZXhlZERCOjpUcmFuc2FjdGlvbk1vZGUgbW9kZSwgSURCRGF0YWJhc2Uq
IGRiKQogewogICAgIElEQk9wZW5EQlJlcXVlc3QqIG9wZW5EQlJlcXVlc3QgPSAwOwogICAgIFJl
ZlB0cjxJREJUcmFuc2FjdGlvbj4gdHJhbnNhY3Rpb24oYWRvcHRSZWYobmV3IElEQlRyYW5zYWN0
aW9uKGNvbnRleHQsIGlkLCBvYmplY3RTdG9yZU5hbWVzLCBtb2RlLCBkYiwgb3BlbkRCUmVxdWVz
dCwgSURCRGF0YWJhc2VNZXRhZGF0YSgpKSkpOwpAQCAtNTQsNyArNTQsNyBAQCBQYXNzUmVmUHRy
PElEQlRyYW5zYWN0aW9uPiBJREJUcmFuc2FjdGlvbjo6Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqIGNvbnRleAogCiBQYXNzUmVmUHRyPElEQlRyYW5zYWN0aW9uPiBJREJUcmFuc2FjdGlv
bjo6Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGludDY0X3QgaWQsIElE
QkRhdGFiYXNlKiBkYiwgSURCT3BlbkRCUmVxdWVzdCogb3BlbkRCUmVxdWVzdCwgY29uc3QgSURC
RGF0YWJhc2VNZXRhZGF0YSYgcHJldmlvdXNNZXRhZGF0YSkKIHsKLSAgICBSZWZQdHI8SURCVHJh
bnNhY3Rpb24+IHRyYW5zYWN0aW9uKGFkb3B0UmVmKG5ldyBJREJUcmFuc2FjdGlvbihjb250ZXh0
LCBpZCwgVmVjdG9yPFN0cmluZz4oKSwgVkVSU0lPTl9DSEFOR0UsIGRiLCBvcGVuREJSZXF1ZXN0
LCBwcmV2aW91c01ldGFkYXRhKSkpOworICAgIFJlZlB0cjxJREJUcmFuc2FjdGlvbj4gdHJhbnNh
Y3Rpb24oYWRvcHRSZWYobmV3IElEQlRyYW5zYWN0aW9uKGNvbnRleHQsIGlkLCBWZWN0b3I8U3Ry
aW5nPigpLCBJbmRleGVkREI6OlRyYW5zYWN0aW9uVmVyc2lvbkNoYW5nZSwgZGIsIG9wZW5EQlJl
cXVlc3QsIHByZXZpb3VzTWV0YWRhdGEpKSk7CiAgICAgdHJhbnNhY3Rpb24tPnN1c3BlbmRJZk5l
ZWRlZCgpOwogICAgIHJldHVybiB0cmFuc2FjdGlvbi5yZWxlYXNlKCk7CiB9CkBAIC05MCw3ICs5
MCw3IEBAIGNvbnN0IEF0b21pY1N0cmluZyYgSURCVHJhbnNhY3Rpb246Om1vZGVSZWFkV3JpdGVM
ZWdhY3koKQogfQogCiAKLUlEQlRyYW5zYWN0aW9uOjpJREJUcmFuc2FjdGlvbihTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiBjb250ZXh0LCBpbnQ2NF90IGlkLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYg
b2JqZWN0U3RvcmVOYW1lcywgSURCVHJhbnNhY3Rpb246Ok1vZGUgbW9kZSwgSURCRGF0YWJhc2Uq
IGRiLCBJREJPcGVuREJSZXF1ZXN0KiBvcGVuREJSZXF1ZXN0LCBjb25zdCBJREJEYXRhYmFzZU1l
dGFkYXRhJiBwcmV2aW91c01ldGFkYXRhKQorSURCVHJhbnNhY3Rpb246OklEQlRyYW5zYWN0aW9u
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGludDY0X3QgaWQsIGNvbnN0IFZlY3Rv
cjxTdHJpbmc+JiBvYmplY3RTdG9yZU5hbWVzLCBJbmRleGVkREI6OlRyYW5zYWN0aW9uTW9kZSBt
b2RlLCBJREJEYXRhYmFzZSogZGIsIElEQk9wZW5EQlJlcXVlc3QqIG9wZW5EQlJlcXVlc3QsIGNv
bnN0IElEQkRhdGFiYXNlTWV0YWRhdGEmIHByZXZpb3VzTWV0YWRhdGEpCiAgICAgOiBBY3RpdmVE
T01PYmplY3QoY29udGV4dCwgdGhpcykKICAgICAsIG1faWQoaWQpCiAgICAgLCBtX2RhdGFiYXNl
KGRiKQpAQCAtMTAyLDcgKzEwMiw3IEBAIElEQlRyYW5zYWN0aW9uOjpJREJUcmFuc2FjdGlvbihT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBpbnQ2NF90IGlkLCBjb25zCiAgICAgLCBt
X2NvbnRleHRTdG9wcGVkKGZhbHNlKQogICAgICwgbV9wcmV2aW91c01ldGFkYXRhKHByZXZpb3Vz
TWV0YWRhdGEpCiB7Ci0gICAgaWYgKG1vZGUgPT0gVkVSU0lPTl9DSEFOR0UpIHsKKyAgICBpZiAo
bW9kZSA9PSBJbmRleGVkREI6OlRyYW5zYWN0aW9uVmVyc2lvbkNoYW5nZSkgewogICAgICAgICAv
LyBOb3QgYWN0aXZlIHVudGlsIHRoZSBjYWxsYmFjay4KICAgICAgICAgbV9zdGF0ZSA9IEluYWN0
aXZlOwogICAgIH0KQEAgLTMzNiwzMCArMzM2LDMwIEBAIGJvb2wgSURCVHJhbnNhY3Rpb246Omhh
c1BlbmRpbmdBY3Rpdml0eSgpIGNvbnN0CiAgICAgcmV0dXJuIG1faGFzUGVuZGluZ0FjdGl2aXR5
OwogfQogCi1JREJUcmFuc2FjdGlvbjo6TW9kZSBJREJUcmFuc2FjdGlvbjo6c3RyaW5nVG9Nb2Rl
KGNvbnN0IFN0cmluZyYgbW9kZVN0cmluZywgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4
dCwgRXhjZXB0aW9uQ29kZSYgZWMpCitJbmRleGVkREI6OlRyYW5zYWN0aW9uTW9kZSBJREJUcmFu
c2FjdGlvbjo6c3RyaW5nVG9Nb2RlKGNvbnN0IFN0cmluZyYgbW9kZVN0cmluZywgU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCogY29udGV4dCwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgaWYgKG1v
ZGVTdHJpbmcuaXNOdWxsKCkKICAgICAgICAgfHwgbW9kZVN0cmluZyA9PSBJREJUcmFuc2FjdGlv
bjo6bW9kZVJlYWRPbmx5KCkpCi0gICAgICAgIHJldHVybiBJREJUcmFuc2FjdGlvbjo6UkVBRF9P
TkxZOworICAgICAgICByZXR1cm4gSW5kZXhlZERCOjpUcmFuc2FjdGlvblJlYWRPbmx5OwogICAg
IGlmIChtb2RlU3RyaW5nID09IElEQlRyYW5zYWN0aW9uOjptb2RlUmVhZFdyaXRlKCkpCi0gICAg
ICAgIHJldHVybiBJREJUcmFuc2FjdGlvbjo6UkVBRF9XUklURTsKKyAgICAgICAgcmV0dXJuIElu
ZGV4ZWREQjo6VHJhbnNhY3Rpb25SZWFkV3JpdGU7CiAKICAgICBlYyA9IFR5cGVFcnJvcjsKLSAg
ICByZXR1cm4gSURCVHJhbnNhY3Rpb246OlJFQURfT05MWTsKKyAgICByZXR1cm4gSW5kZXhlZERC
OjpUcmFuc2FjdGlvblJlYWRPbmx5OwogfQogCi1jb25zdCBBdG9taWNTdHJpbmcmIElEQlRyYW5z
YWN0aW9uOjptb2RlVG9TdHJpbmcoSURCVHJhbnNhY3Rpb246Ok1vZGUgbW9kZSkKK2NvbnN0IEF0
b21pY1N0cmluZyYgSURCVHJhbnNhY3Rpb246Om1vZGVUb1N0cmluZyhJbmRleGVkREI6OlRyYW5z
YWN0aW9uTW9kZSBtb2RlKQogewogICAgIHN3aXRjaCAobW9kZSkgewotICAgIGNhc2UgSURCVHJh
bnNhY3Rpb246OlJFQURfT05MWToKKyAgICBjYXNlIEluZGV4ZWREQjo6VHJhbnNhY3Rpb25SZWFk
T25seToKICAgICAgICAgcmV0dXJuIElEQlRyYW5zYWN0aW9uOjptb2RlUmVhZE9ubHkoKTsKICAg
ICAgICAgYnJlYWs7CiAKLSAgICBjYXNlIElEQlRyYW5zYWN0aW9uOjpSRUFEX1dSSVRFOgorICAg
IGNhc2UgSW5kZXhlZERCOjpUcmFuc2FjdGlvblJlYWRXcml0ZToKICAgICAgICAgcmV0dXJuIElE
QlRyYW5zYWN0aW9uOjptb2RlUmVhZFdyaXRlKCk7CiAgICAgICAgIGJyZWFrOwogCi0gICAgY2Fz
ZSBJREJUcmFuc2FjdGlvbjo6VkVSU0lPTl9DSEFOR0U6CisgICAgY2FzZSBJbmRleGVkREI6OlRy
YW5zYWN0aW9uVmVyc2lvbkNoYW5nZToKICAgICAgICAgcmV0dXJuIElEQlRyYW5zYWN0aW9uOjpt
b2RlVmVyc2lvbkNoYW5nZSgpOwogICAgICAgICBicmVhazsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb24uaCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmgKaW5kZXggNjk3NTBlYjczOWU2
ODA3ZGIxMTg3ZGMwZTZjODQ0ZmM4NTAxMmIyNy4uZjRkNjRjYjdkMTNmZTM1MzI1NmM2ZTE1ZTcy
OTc5ZTUyNTU3NTk3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvSURCVHJhbnNhY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9JREJUcmFuc2FjdGlvbi5oCkBAIC0zNSw2ICszNSw3IEBACiAjaW5jbHVkZSAiRXZlbnROYW1l
cy5oIgogI2luY2x1ZGUgIkV2ZW50VGFyZ2V0LmgiCiAjaW5jbHVkZSAiSURCTWV0YWRhdGEuaCIK
KyNpbmNsdWRlICJJbmRleGVkREIuaCIKICNpbmNsdWRlICJTY3JpcHRXcmFwcGFibGUuaCIKICNp
bmNsdWRlIDx3dGYvSGFzaFNldC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CkBAIC01
MSwxMyArNTIsNyBAQCBzdHJ1Y3QgSURCT2JqZWN0U3RvcmVNZXRhZGF0YTsKIAogY2xhc3MgSURC
VHJhbnNhY3Rpb24gOiBwdWJsaWMgU2NyaXB0V3JhcHBhYmxlLCBwdWJsaWMgUmVmQ291bnRlZDxJ
REJUcmFuc2FjdGlvbj4sIHB1YmxpYyBFdmVudFRhcmdldCwgcHVibGljIEFjdGl2ZURPTU9iamVj
dCB7CiBwdWJsaWM6Ci0gICAgZW51bSBNb2RlIHsKLSAgICAgICAgUkVBRF9PTkxZID0gMCwKLSAg
ICAgICAgUkVBRF9XUklURSA9IDEsCi0gICAgICAgIFZFUlNJT05fQ0hBTkdFID0gMgotICAgIH07
Ci0KLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbj4gY3JlYXRlKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqLCBpbnQ2NF90LCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgb2JqZWN0U3Rv
cmVOYW1lcywgTW9kZSwgSURCRGF0YWJhc2UqKTsKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxJREJU
cmFuc2FjdGlvbj4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBpbnQ2NF90LCBjb25z
dCBWZWN0b3I8U3RyaW5nPiYgb2JqZWN0U3RvcmVOYW1lcywgSW5kZXhlZERCOjpUcmFuc2FjdGlv
bk1vZGUsIElEQkRhdGFiYXNlKik7CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8SURCVHJhbnNhY3Rp
b24+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgaW50NjRfdCwgSURCRGF0YWJhc2Uq
LCBJREJPcGVuREJSZXF1ZXN0KiwgY29uc3QgSURCRGF0YWJhc2VNZXRhZGF0YSYgcHJldmlvdXNN
ZXRhZGF0YSk7CiAgICAgdmlydHVhbCB+SURCVHJhbnNhY3Rpb24oKTsKIApAQCAtNjcsMTYgKzYy
LDE2IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiBtb2RlUmVhZE9u
bHlMZWdhY3koKTsKICAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiBtb2RlUmVhZFdyaXRl
TGVnYWN5KCk7CiAKLSAgICBzdGF0aWMgTW9kZSBzdHJpbmdUb01vZGUoY29uc3QgU3RyaW5nJiwg
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIEV4Y2VwdGlvbkNvZGUmKTsKLSAgICBzdGF0aWMgY29u
c3QgQXRvbWljU3RyaW5nJiBtb2RlVG9TdHJpbmcoTW9kZSk7CisgICAgc3RhdGljIEluZGV4ZWRE
Qjo6VHJhbnNhY3Rpb25Nb2RlIHN0cmluZ1RvTW9kZShjb25zdCBTdHJpbmcmLCBTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiwgRXhjZXB0aW9uQ29kZSYpOworICAgIHN0YXRpYyBjb25zdCBBdG9taWNT
dHJpbmcmIG1vZGVUb1N0cmluZyhJbmRleGVkREI6OlRyYW5zYWN0aW9uTW9kZSk7CiAKICAgICBJ
REJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2UqIGJhY2tlbmREQigpIGNvbnN0OwogCiAgICAgaW50
NjRfdCBpZCgpIGNvbnN0IHsgcmV0dXJuIG1faWQ7IH0KICAgICBib29sIGlzQWN0aXZlKCkgY29u
c3QgeyByZXR1cm4gbV9zdGF0ZSA9PSBBY3RpdmU7IH0KICAgICBib29sIGlzRmluaXNoZWQoKSBj
b25zdCB7IHJldHVybiBtX3N0YXRlID09IEZpbmlzaGVkOyB9Ci0gICAgYm9vbCBpc1JlYWRPbmx5
KCkgY29uc3QgeyByZXR1cm4gbV9tb2RlID09IFJFQURfT05MWTsgfQotICAgIGJvb2wgaXNWZXJz
aW9uQ2hhbmdlKCkgY29uc3QgeyByZXR1cm4gbV9tb2RlID09IFZFUlNJT05fQ0hBTkdFOyB9Cisg
ICAgYm9vbCBpc1JlYWRPbmx5KCkgY29uc3QgeyByZXR1cm4gbV9tb2RlID09IEluZGV4ZWREQjo6
VHJhbnNhY3Rpb25SZWFkT25seTsgfQorICAgIGJvb2wgaXNWZXJzaW9uQ2hhbmdlKCkgY29uc3Qg
eyByZXR1cm4gbV9tb2RlID09IEluZGV4ZWREQjo6VHJhbnNhY3Rpb25WZXJzaW9uQ2hhbmdlOyB9
CiAKICAgICAvLyBJbXBsZW1lbnQgdGhlIElEQlRyYW5zYWN0aW9uIElETAogICAgIGNvbnN0IFN0
cmluZyYgbW9kZSgpIGNvbnN0OwpAQCAtMTI2LDcgKzEyMSw3IEBAIHB1YmxpYzoKICAgICB1c2lu
ZyBSZWZDb3VudGVkPElEQlRyYW5zYWN0aW9uPjo6ZGVyZWY7CiAKIHByaXZhdGU6Ci0gICAgSURC
VHJhbnNhY3Rpb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGludDY0X3QsIGNvbnN0IFZlY3Rv
cjxTdHJpbmc+JiwgTW9kZSwgSURCRGF0YWJhc2UqLCBJREJPcGVuREJSZXF1ZXN0KiwgY29uc3Qg
SURCRGF0YWJhc2VNZXRhZGF0YSYpOworICAgIElEQlRyYW5zYWN0aW9uKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqLCBpbnQ2NF90LCBjb25zdCBWZWN0b3I8U3RyaW5nPiYsIEluZGV4ZWREQjo6VHJh
bnNhY3Rpb25Nb2RlLCBJREJEYXRhYmFzZSosIElEQk9wZW5EQlJlcXVlc3QqLCBjb25zdCBJREJE
YXRhYmFzZU1ldGFkYXRhJik7CiAKICAgICB2b2lkIGVucXVldWVFdmVudChQYXNzUmVmUHRyPEV2
ZW50Pik7CiAgICAgdm9pZCBjbG9zZU9wZW5DdXJzb3JzKCk7CkBAIC0xNTEsNyArMTQ2LDcgQEAg
cHJpdmF0ZToKICAgICBSZWZQdHI8SURCRGF0YWJhc2U+IG1fZGF0YWJhc2U7CiAgICAgY29uc3Qg
VmVjdG9yPFN0cmluZz4gbV9vYmplY3RTdG9yZU5hbWVzOwogICAgIElEQk9wZW5EQlJlcXVlc3Qq
IG1fb3BlbkRCUmVxdWVzdDsKLSAgICBjb25zdCBNb2RlIG1fbW9kZTsKKyAgICBjb25zdCBJbmRl
eGVkREI6OlRyYW5zYWN0aW9uTW9kZSBtX21vZGU7CiAgICAgU3RhdGUgbV9zdGF0ZTsKICAgICBi
b29sIG1faGFzUGVuZGluZ0FjdGl2aXR5OwogICAgIGJvb2wgbV9jb250ZXh0U3RvcHBlZDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9u
QmFja2VuZEltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJh
bnNhY3Rpb25CYWNrZW5kSW1wbC5jcHAKaW5kZXggN2ZlODNiMjNkMmVjYmZmNzYwMmUzMmI0ZWIx
OWVkMWJhYzg2YWU2Zi4uNjU2MjU1NzcwNjExMmYzOTE2MDJjZjUwZjY5MjdlYmRlNDg5YzhjOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rp
b25CYWNrZW5kSW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
SURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbC5jcHAKQEAgLTMxLDEzICszMSwxNCBAQAogI2luY2x1
ZGUgIklEQkJhY2tpbmdTdG9yZS5oIgogI2luY2x1ZGUgIklEQkN1cnNvckJhY2tlbmRJbXBsLmgi
CiAjaW5jbHVkZSAiSURCRGF0YWJhc2VCYWNrZW5kSW1wbC5oIgorI2luY2x1ZGUgIklEQkRhdGFi
YXNlQ2FsbGJhY2tzLmgiCiAjaW5jbHVkZSAiSURCRGF0YWJhc2VFeGNlcHRpb24uaCIKICNpbmNs
dWRlICJJREJUcmFjaW5nLmgiCiAjaW5jbHVkZSAiSURCVHJhbnNhY3Rpb25Db29yZGluYXRvci5o
IgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVBhc3NSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNr
ZW5kSW1wbD4gSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbDo6Y3JlYXRlKGludDY0X3QgaWQsIFBh
c3NSZWZQdHI8SURCRGF0YWJhc2VDYWxsYmFja3M+IGNhbGxiYWNrcywgY29uc3QgVmVjdG9yPGlu
dDY0X3Q+JiBvYmplY3RTdG9yZUlkcywgSURCVHJhbnNhY3Rpb246Ok1vZGUgbW9kZSwgSURCRGF0
YWJhc2VCYWNrZW5kSW1wbCogZGF0YWJhc2UpCitQYXNzUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFj
a2VuZEltcGw+IElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGw6OmNyZWF0ZShpbnQ2NF90IGlkLCBQ
YXNzUmVmUHRyPElEQkRhdGFiYXNlQ2FsbGJhY2tzPiBjYWxsYmFja3MsIGNvbnN0IFZlY3Rvcjxp
bnQ2NF90PiYgb2JqZWN0U3RvcmVJZHMsIEluZGV4ZWREQjo6VHJhbnNhY3Rpb25Nb2RlIG1vZGUs
IElEQkRhdGFiYXNlQmFja2VuZEltcGwqIGRhdGFiYXNlKQogewogICAgIEhhc2hTZXQ8aW50NjRf
dD4gb2JqZWN0U3RvcmVIYXNoU2V0OwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgb2JqZWN0
U3RvcmVJZHMuc2l6ZSgpOyArK2kpCkBAIC00Niw3ICs0Nyw3IEBAIFBhc3NSZWZQdHI8SURCVHJh
bnNhY3Rpb25CYWNrZW5kSW1wbD4gSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbDo6Y3JlYXRlKGlu
dDY0X3QKICAgICByZXR1cm4gYWRvcHRSZWYobmV3IElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGwo
aWQsIGNhbGxiYWNrcywgb2JqZWN0U3RvcmVIYXNoU2V0LCBtb2RlLCBkYXRhYmFzZSkpOwogfQog
Ci1JREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsOjpJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsKGlu
dDY0X3QgaWQsIFBhc3NSZWZQdHI8SURCRGF0YWJhc2VDYWxsYmFja3M+IGNhbGxiYWNrcywgY29u
c3QgSGFzaFNldDxpbnQ2NF90PiYgb2JqZWN0U3RvcmVJZHMsIElEQlRyYW5zYWN0aW9uOjpNb2Rl
IG1vZGUsIElEQkRhdGFiYXNlQmFja2VuZEltcGwqIGRhdGFiYXNlKQorSURCVHJhbnNhY3Rpb25C
YWNrZW5kSW1wbDo6SURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbChpbnQ2NF90IGlkLCBQYXNzUmVm
UHRyPElEQkRhdGFiYXNlQ2FsbGJhY2tzPiBjYWxsYmFja3MsIGNvbnN0IEhhc2hTZXQ8aW50NjRf
dD4mIG9iamVjdFN0b3JlSWRzLCBJbmRleGVkREI6OlRyYW5zYWN0aW9uTW9kZSBtb2RlLCBJREJE
YXRhYmFzZUJhY2tlbmRJbXBsKiBkYXRhYmFzZSkKICAgICA6IG1faWQoaWQpCiAgICAgLCBtX29i
amVjdFN0b3JlSWRzKG9iamVjdFN0b3JlSWRzKQogICAgICwgbV9tb2RlKG1vZGUpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbkJhY2tl
bmRJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlv
bkJhY2tlbmRJbXBsLmgKaW5kZXggM2NlZjk3NjJhZTEwMjdlODg4NGU5ODI2ZjQ3OTFmNjM2NGEz
NGIwNi4uZTYxOGZhMDY4OGE5YzBkZGM5ZjlhMWE3OGNkZDkyYmZmMjgxMWViMyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb25CYWNrZW5k
SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0
aW9uQmFja2VuZEltcGwuaApAQCAtMzEsNyArMzEsNiBAQAogI2luY2x1ZGUgIklEQkJhY2tpbmdT
dG9yZS5oIgogI2luY2x1ZGUgIklEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZS5oIgogI2luY2x1
ZGUgIklEQkRhdGFiYXNlRXJyb3IuaCIKLSNpbmNsdWRlICJJREJUcmFuc2FjdGlvbi5oIgogI2lu
Y2x1ZGUgIlRpbWVyLmgiCiAjaW5jbHVkZSA8d3RmL0RlcXVlLmg+CiAjaW5jbHVkZSA8d3RmL0hh
c2hTZXQuaD4KQEAgLTQ1LDcgKzQ0LDcgQEAgY2xhc3MgSURCRGF0YWJhc2VDYWxsYmFja3M7CiAK
IGNsYXNzIElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGwgOiBwdWJsaWMgUmVmQ291bnRlZDxJREJU
cmFuc2FjdGlvbkJhY2tlbmRJbXBsPiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8
SURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbD4gY3JlYXRlKGludDY0X3QgdHJhbnNhY3Rpb25JZCwg
UGFzc1JlZlB0cjxJREJEYXRhYmFzZUNhbGxiYWNrcz4sIGNvbnN0IFZlY3RvcjxpbnQ2NF90PiYs
IElEQlRyYW5zYWN0aW9uOjpNb2RlLCBJREJEYXRhYmFzZUJhY2tlbmRJbXBsKik7CisgICAgc3Rh
dGljIFBhc3NSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbD4gY3JlYXRlKGludDY0X3Qg
dHJhbnNhY3Rpb25JZCwgUGFzc1JlZlB0cjxJREJEYXRhYmFzZUNhbGxiYWNrcz4sIGNvbnN0IFZl
Y3RvcjxpbnQ2NF90PiYsIEluZGV4ZWREQjo6VHJhbnNhY3Rpb25Nb2RlLCBJREJEYXRhYmFzZUJh
Y2tlbmRJbXBsKik7CiAgICAgdmlydHVhbCB+SURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbCgpOwog
CiAgICAgdmlydHVhbCB2b2lkIGFib3J0KCk7CkBAIC01OSw3ICs1OCw3IEBAIHB1YmxpYzoKIAog
ICAgIHZvaWQgYWJvcnQoUGFzc1JlZlB0cjxJREJEYXRhYmFzZUVycm9yPik7CiAgICAgdm9pZCBy
dW4oKTsKLSAgICBJREJUcmFuc2FjdGlvbjo6TW9kZSBtb2RlKCkgY29uc3QgeyByZXR1cm4gbV9t
b2RlOyB9CisgICAgSW5kZXhlZERCOjpUcmFuc2FjdGlvbk1vZGUgbW9kZSgpIGNvbnN0IHsgcmV0
dXJuIG1fbW9kZTsgfQogICAgIGNvbnN0IEhhc2hTZXQ8aW50NjRfdD4mIHNjb3BlKCkgY29uc3Qg
eyByZXR1cm4gbV9vYmplY3RTdG9yZUlkczsgfQogICAgIHZvaWQgc2NoZWR1bGVUYXNrKFBhc3NP
d25QdHI8T3BlcmF0aW9uPiB0YXNrLCBQYXNzT3duUHRyPE9wZXJhdGlvbj4gYWJvcnRUYXNrID0g
bnVsbHB0cikgeyBzY2hlZHVsZVRhc2soSURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlOjpOb3Jt
YWxUYXNrLCB0YXNrLCBhYm9ydFRhc2spOyB9CiAgICAgdm9pZCBzY2hlZHVsZVRhc2soSURCRGF0
YWJhc2VCYWNrZW5kSW50ZXJmYWNlOjpUYXNrVHlwZSwgUGFzc093blB0cjxPcGVyYXRpb24+LCBQ
YXNzT3duUHRyPE9wZXJhdGlvbj4gYWJvcnRUYXNrID0gbnVsbHB0cik7CkBAIC03Myw3ICs3Miw3
IEBAIHB1YmxpYzoKICAgICBJREJEYXRhYmFzZUJhY2tlbmRJbXBsKiBkYXRhYmFzZSgpIGNvbnN0
IHsgcmV0dXJuIG1fZGF0YWJhc2UuZ2V0KCk7IH0KIAogcHJpdmF0ZToKLSAgICBJREJUcmFuc2Fj
dGlvbkJhY2tlbmRJbXBsKGludDY0X3QgaWQsIFBhc3NSZWZQdHI8SURCRGF0YWJhc2VDYWxsYmFj
a3M+LCBjb25zdCBIYXNoU2V0PGludDY0X3Q+JiBvYmplY3RTdG9yZUlkcywgSURCVHJhbnNhY3Rp
b246Ok1vZGUsIElEQkRhdGFiYXNlQmFja2VuZEltcGwqKTsKKyAgICBJREJUcmFuc2FjdGlvbkJh
Y2tlbmRJbXBsKGludDY0X3QgaWQsIFBhc3NSZWZQdHI8SURCRGF0YWJhc2VDYWxsYmFja3M+LCBj
b25zdCBIYXNoU2V0PGludDY0X3Q+JiBvYmplY3RTdG9yZUlkcywgSW5kZXhlZERCOjpUcmFuc2Fj
dGlvbk1vZGUsIElEQkRhdGFiYXNlQmFja2VuZEltcGwqKTsKIAogICAgIGVudW0gU3RhdGUgewog
ICAgICAgICBVbnVzZWQsIC8vIENyZWF0ZWQsIGJ1dCBubyB0YXNrcyB5ZXQuCkBAIC05Miw3ICs5
MSw3IEBAIHByaXZhdGU6CiAKICAgICBjb25zdCBpbnQ2NF90IG1faWQ7CiAgICAgY29uc3QgSGFz
aFNldDxpbnQ2NF90PiBtX29iamVjdFN0b3JlSWRzOwotICAgIGNvbnN0IElEQlRyYW5zYWN0aW9u
OjpNb2RlIG1fbW9kZTsKKyAgICBjb25zdCBJbmRleGVkREI6OlRyYW5zYWN0aW9uTW9kZSBtX21v
ZGU7CiAKICAgICBTdGF0ZSBtX3N0YXRlOwogICAgIGJvb2wgbV9jb21taXRQZW5kaW5nOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb25D
b29yZGluYXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFu
c2FjdGlvbkNvb3JkaW5hdG9yLmNwcAppbmRleCAwYmI1YWNhOTVhMDhjNWM1MTZhMzY1MTMyNTQ1
YjhlNDY5N2Q1MGVmLi5hNmZjZDhlYTNlNmUxZDgyZTFiOTI4OTBhZGU1NGZkNzVlZWU4NzFlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlv
bkNvb3JkaW5hdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9J
REJUcmFuc2FjdGlvbkNvb3JkaW5hdG9yLmNwcApAQCAtMjksNyArMjksNiBAQAogI2lmIEVOQUJM
RShJTkRFWEVEX0RBVEFCQVNFKQogCiAjaW5jbHVkZSAiSURCRGF0YWJhc2VCYWNrZW5kSW1wbC5o
IgotI2luY2x1ZGUgIklEQlRyYW5zYWN0aW9uLmgiCiAjaW5jbHVkZSAiSURCVHJhbnNhY3Rpb25C
YWNrZW5kSW1wbC5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC05Nyw3ICs5Niw3IEBAIHZv
aWQgSURCVHJhbnNhY3Rpb25Db29yZGluYXRvcjo6cHJvY2Vzc1N0YXJ0ZWRUcmFuc2FjdGlvbnMo
KQogICAgIGlmIChtX3F1ZXVlZFRyYW5zYWN0aW9ucy5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVy
bjsKIAotICAgIEFTU0VSVChtX3N0YXJ0ZWRUcmFuc2FjdGlvbnMuaXNFbXB0eSgpIHx8ICgqbV9z
dGFydGVkVHJhbnNhY3Rpb25zLmJlZ2luKCkpLT5tb2RlKCkgIT0gSURCVHJhbnNhY3Rpb246OlZF
UlNJT05fQ0hBTkdFKTsKKyAgICBBU1NFUlQobV9zdGFydGVkVHJhbnNhY3Rpb25zLmlzRW1wdHko
KSB8fCAoKm1fc3RhcnRlZFRyYW5zYWN0aW9ucy5iZWdpbigpKS0+bW9kZSgpICE9IEluZGV4ZWRE
Qjo6VHJhbnNhY3Rpb25WZXJzaW9uQ2hhbmdlKTsKIAogICAgIExpc3RIYXNoU2V0PElEQlRyYW5z
YWN0aW9uQmFja2VuZEltcGwqPjo6Y29uc3RfaXRlcmF0b3IgaXQgPSBtX3F1ZXVlZFRyYW5zYWN0
aW9ucy5iZWdpbigpOwogICAgIHdoaWxlIChpdCAhPSBtX3F1ZXVlZFRyYW5zYWN0aW9ucy5lbmQo
KSkgewpAQCAtMTI0LDIyICsxMjMsMjIgQEAgYm9vbCBJREJUcmFuc2FjdGlvbkNvb3JkaW5hdG9y
OjpjYW5SdW5UcmFuc2FjdGlvbihJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsKiB0cmEKIHsKICAg
ICBBU1NFUlQobV9xdWV1ZWRUcmFuc2FjdGlvbnMuY29udGFpbnModHJhbnNhY3Rpb24pKTsKICAg
ICBzd2l0Y2ggKHRyYW5zYWN0aW9uLT5tb2RlKCkpIHsKLSAgICBjYXNlIElEQlRyYW5zYWN0aW9u
OjpWRVJTSU9OX0NIQU5HRToKKyAgICBjYXNlIEluZGV4ZWREQjo6VHJhbnNhY3Rpb25WZXJzaW9u
Q2hhbmdlOgogICAgICAgICBBU1NFUlQobV9xdWV1ZWRUcmFuc2FjdGlvbnMuc2l6ZSgpID09IDEp
OwogICAgICAgICBBU1NFUlQobV9zdGFydGVkVHJhbnNhY3Rpb25zLmlzRW1wdHkoKSk7CiAgICAg
ICAgIHJldHVybiB0cnVlOwogCi0gICAgY2FzZSBJREJUcmFuc2FjdGlvbjo6UkVBRF9PTkxZOgor
ICAgIGNhc2UgSW5kZXhlZERCOjpUcmFuc2FjdGlvblJlYWRPbmx5OgogICAgICAgICByZXR1cm4g
dHJ1ZTsKIAotICAgIGNhc2UgSURCVHJhbnNhY3Rpb246OlJFQURfV1JJVEU6CisgICAgY2FzZSBJ
bmRleGVkREI6OlRyYW5zYWN0aW9uUmVhZFdyaXRlOgogICAgICAgICBmb3IgKEhhc2hTZXQ8SURC
VHJhbnNhY3Rpb25CYWNrZW5kSW1wbCo+Ojpjb25zdF9pdGVyYXRvciBpdCA9IG1fc3RhcnRlZFRy
YW5zYWN0aW9ucy5iZWdpbigpOyBpdCAhPSBtX3N0YXJ0ZWRUcmFuc2FjdGlvbnMuZW5kKCk7ICsr
aXQpIHsKLSAgICAgICAgICAgIGlmICgoKml0KS0+bW9kZSgpID09IElEQlRyYW5zYWN0aW9uOjpS
RUFEX1dSSVRFICYmIGRvU2NvcGVzT3ZlcmxhcCh0cmFuc2FjdGlvbi0+c2NvcGUoKSwgKCppdCkt
PnNjb3BlKCkpKQorICAgICAgICAgICAgaWYgKCgqaXQpLT5tb2RlKCkgPT0gSW5kZXhlZERCOjpU
cmFuc2FjdGlvblJlYWRXcml0ZSAmJiBkb1Njb3Blc092ZXJsYXAodHJhbnNhY3Rpb24tPnNjb3Bl
KCksICgqaXQpLT5zY29wZSgpKSkKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
ICAgIH0KICAgICAgICAgZm9yIChMaXN0SGFzaFNldDxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBs
Kj46OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbV9xdWV1ZWRUcmFuc2FjdGlvbnMuYmVnaW4oKTsgKml0
ICE9IHRyYW5zYWN0aW9uOyArK2l0KSB7CiAgICAgICAgICAgICBBU1NFUlQoaXQgIT0gbV9xdWV1
ZWRUcmFuc2FjdGlvbnMuZW5kKCkpOwotICAgICAgICAgICAgaWYgKCgqaXQpLT5tb2RlKCkgPT0g
SURCVHJhbnNhY3Rpb246OlJFQURfV1JJVEUgJiYgZG9TY29wZXNPdmVybGFwKHRyYW5zYWN0aW9u
LT5zY29wZSgpLCAoKml0KS0+c2NvcGUoKSkpCisgICAgICAgICAgICBpZiAoKCppdCktPm1vZGUo
KSA9PSBJbmRleGVkREI6OlRyYW5zYWN0aW9uUmVhZFdyaXRlICYmIGRvU2NvcGVzT3ZlcmxhcCh0
cmFuc2FjdGlvbi0+c2NvcGUoKSwgKCppdCktPnNjb3BlKCkpKQogICAgICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICAgICAgfQogICAgICAgICByZXR1cm4gdHJ1ZTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0luZGV4ZWREQi5oIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSW5kZXhlZERCLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMmU4NGZjNzIx
YTVjMzIzNjQyYTY4M2IxMTQ5MmQwMzg0NGI0ZmVjOAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0luZGV4ZWREQi5oCkBAIC0wLDAgKzEsNTkgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAx
LiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUg
SU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaWZuZGVmIEluZGV4ZWREQl9oCisjZGVmaW5lIEluZGV4ZWREQl9oCisKKyNpZiBF
TkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCituYW1lc3Bh
Y2UgSW5kZXhlZERCIHsKKworZW51bSBUcmFuc2FjdGlvbk1vZGUgeworICAgIFRyYW5zYWN0aW9u
UmVhZE9ubHkgPSAwLAorICAgIFRyYW5zYWN0aW9uUmVhZFdyaXRlID0gMSwKKyAgICBUcmFuc2Fj
dGlvblZlcnNpb25DaGFuZ2UgPSAyCit9OworCitlbnVtIEN1cnNvckRpcmVjdGlvbiB7CisgICAg
Q3Vyc29yTmV4dCA9IDAsCisgICAgQ3Vyc29yTmV4dE5vRHVwbGljYXRlID0gMSwKKyAgICBDdXJz
b3JQcmV2ID0gMiwKKyAgICBDdXJzb3JQcmV2Tm9EdXBsaWNhdGUgPSAzLAorfTsKKworZW51bSBD
dXJzb3JUeXBlIHsKKyAgICBDdXJzb3JLZXlBbmRWYWx1ZSA9IDAsCisgICAgQ3Vyc29yS2V5T25s
eQorfTsKKworfSAvLyBuYW1lc3BhY2UgSW5kZXhlZERCCisKK30gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKKworI2VuZGlmIC8vIEVOQUJMRUQoSU5ERVhFRF9EQVRBQkFTRSkKKworI2VuZGlmIC8vIElu
ZGV4ZWREQl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpIGIvU291cmNl
L1dlYkNvcmUvVGFyZ2V0LnByaQppbmRleCBiOWNmOGJjYjZhMjkzMDIwNjI2MTUyNTQ1ZDk1NGY1
MzQwOTk5ZmU0Li44ZmE4ZWVlMDIxOTkyNDNhNGUwMDdlZmEzYWI4NThhNWRjZTNiYzU5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1Rh
cmdldC5wcmkKQEAgLTMxMDYsOCArMzEwNiw4IEBAIGVuYWJsZT8oSU5ERVhFRF9EQVRBQkFTRSkg
ewogICAgICAgICBNb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUV4Y2VwdGlvbi5oIFwKICAg
ICAgICAgTW9kdWxlcy9pbmRleGVkZGIvSURCRXZlbnREaXNwYXRjaGVyLmggXAogICAgICAgICBN
b2R1bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5LmggXAotICAgICAgICBNb2R1bGVzL2luZGV4ZWRk
Yi9JREJGYWN0b3J5QmFja2VuZEludGVyZmFjZS5oIFwKICAgICAgICAgTW9kdWxlcy9pbmRleGVk
ZGIvSURCRmFjdG9yeUJhY2tlbmRJbXBsLmggXAorICAgICAgICBNb2R1bGVzL2luZGV4ZWRkYi9J
REJGYWN0b3J5QmFja2VuZEludGVyZmFjZS5oIFwKICAgICAgICAgTW9kdWxlcy9pbmRleGVkZGIv
SURCSGlzdG9ncmFtcy5oIFwKICAgICAgICAgTW9kdWxlcy9pbmRleGVkZGIvSURCSW5kZXguaCBc
CiAgICAgICAgIE1vZHVsZXMvaW5kZXhlZGRiL0lEQktleS5oIFwKQEAgLTMxMTUsNyArMzExNSw4
IEBAIGVuYWJsZT8oSU5ERVhFRF9EQVRBQkFTRSkgewogICAgICAgICBNb2R1bGVzL2luZGV4ZWRk
Yi9JREJPYmplY3RTdG9yZS5oIFwKICAgICAgICAgTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0
U3RvcmVCYWNrZW5kSW1wbC5oIFwKICAgICAgICAgTW9kdWxlcy9pbmRleGVkZGIvSURCUmVxdWVz
dC5oIFwKLSAgICAgICAgTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb24uaAorICAgICAg
ICBNb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5oIFwKKyAgICAgICAgTW9kdWxlcy9p
bmRleGVkZGIvSW5kZXhlZERCLmgKIAogICAgIFNPVVJDRVMgKz0gXAogICAgICAgICBiaW5kaW5n
cy9qcy9JREJCaW5kaW5nVXRpbGl0aWVzLmNwcCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLmd5cGkgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKaW5kZXggNDExYmI3
MTMwNWRhMjMxMWI0YmM4OTJlNDQ3NDNiMzcwODc0OWZjYi4uNDNjMDJjOGYyM2FlYWE5NmQ1Njk4
YWM1ZmI3NGUzZTBkYmFjYmU4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5n
eXBpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpAQCAtODAxLDYgKzgwMSw3IEBA
CiAgICAgICAgICAgICAnTW9kdWxlcy9pbmRleGVkZGIvRE9NV2luZG93SW5kZXhlZERhdGFiYXNl
LmgnLAogICAgICAgICAgICAgJ01vZHVsZXMvaW5kZXhlZGRiL0lEQkFueS5jcHAnLAogICAgICAg
ICAgICAgJ01vZHVsZXMvaW5kZXhlZGRiL0lEQkFueS5oJywKKyAgICAgICAgICAgICdNb2R1bGVz
L2luZGV4ZWRkYi9JREJCYWNraW5nU3RvcmUuY3BwJywKICAgICAgICAgICAgICdNb2R1bGVzL2lu
ZGV4ZWRkYi9JREJCYWNraW5nU3RvcmUuaCcsCiAgICAgICAgICAgICAnTW9kdWxlcy9pbmRleGVk
ZGIvSURCQ2FsbGJhY2tzLmgnLAogICAgICAgICAgICAgJ01vZHVsZXMvaW5kZXhlZGRiL0lEQkN1
cnNvci5jcHAnLApAQCAtODQxLDcgKzg0Miw2IEBACiAgICAgICAgICAgICAnTW9kdWxlcy9pbmRl
eGVkZGIvSURCS2V5UmFuZ2UuaCcsCiAgICAgICAgICAgICAnTW9kdWxlcy9pbmRleGVkZGIvSURC
TGV2ZWxEQkNvZGluZy5jcHAnLAogICAgICAgICAgICAgJ01vZHVsZXMvaW5kZXhlZGRiL0lEQkxl
dmVsREJDb2RpbmcuaCcsCi0gICAgICAgICAgICAnTW9kdWxlcy9pbmRleGVkZGIvSURCQmFja2lu
Z1N0b3JlLmNwcCcsCiAgICAgICAgICAgICAnTW9kdWxlcy9pbmRleGVkZGIvSURCTWV0YWRhdGEu
aCcsCiAgICAgICAgICAgICAnTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmUuY3BwJywK
ICAgICAgICAgICAgICdNb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZS5oJywKQEAgLTg2
Miw2ICs4NjIsNyBAQAogICAgICAgICAgICAgJ01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0
aW9uQ29vcmRpbmF0b3IuaCcsCiAgICAgICAgICAgICAnTW9kdWxlcy9pbmRleGVkZGIvSURCVmVy
c2lvbkNoYW5nZUV2ZW50LmNwcCcsCiAgICAgICAgICAgICAnTW9kdWxlcy9pbmRleGVkZGIvSURC
VmVyc2lvbkNoYW5nZUV2ZW50LmgnLAorICAgICAgICAgICAgJ01vZHVsZXMvaW5kZXhlZGRiL0lu
ZGV4ZWREQi5oJywKICAgICAgICAgICAgICdNb2R1bGVzL2luZGV4ZWRkYi9QYWdlR3JvdXBJbmRl
eGVkRGF0YWJhc2UuY3BwJywKICAgICAgICAgICAgICdNb2R1bGVzL2luZGV4ZWRkYi9QYWdlR3Jv
dXBJbmRleGVkRGF0YWJhc2UuaCcsCiAgICAgICAgICAgICAnTW9kdWxlcy9pbmRleGVkZGIvV29y
a2VyQ29udGV4dEluZGV4ZWREYXRhYmFzZS5jcHAnLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvQXNzZXJ0TWF0Y2hpbmdFbnVtcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9Bc3NlcnRNYXRjaGluZ0VudW1zLmNwcAppbmRleCAzYjAzNzk5MzcxZDEwOTQy
Mzc2ZjY4NDM0NDMxOTQ5ODg5ZmYxZmU2Li42YTMzY2Y4Y2RlMWI4NDFkY2QzYjUzYTcyNzBmM2E3
NGI0YzAyYWUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9Bc3NlcnRN
YXRjaGluZ0VudW1zLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9Bc3NlcnRN
YXRjaGluZ0VudW1zLmNwcApAQCAtNTA0LDEwICs1MDQsMTAgQEAgQ09NUElMRV9BU1NFUlRfTUFU
Q0hJTkdfRU5VTShXZWJJREJLZXlQYXRoOjpBcnJheVR5cGUsIElEQktleVBhdGg6OkFycmF5VHlw
ZSk7CiAKIENPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oV2ViSURCTWV0YWRhdGE6Ok5vSW50
VmVyc2lvbiwgSURCRGF0YWJhc2VNZXRhZGF0YTo6Tm9JbnRWZXJzaW9uKTsKIAotQ09NUElMRV9B
U1NFUlRfTUFUQ0hJTkdfRU5VTShXZWJJREJDdXJzb3I6Ok5leHQsIElEQkN1cnNvcjo6TkVYVCk7
Ci1DT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKFdlYklEQkN1cnNvcjo6TmV4dE5vRHVwbGlj
YXRlLCBJREJDdXJzb3I6Ok5FWFRfTk9fRFVQTElDQVRFKTsKLUNPTVBJTEVfQVNTRVJUX01BVENI
SU5HX0VOVU0oV2ViSURCQ3Vyc29yOjpQcmV2LCBJREJDdXJzb3I6OlBSRVYpOwotQ09NUElMRV9B
U1NFUlRfTUFUQ0hJTkdfRU5VTShXZWJJREJDdXJzb3I6OlByZXZOb0R1cGxpY2F0ZSwgSURCQ3Vy
c29yOjpQUkVWX05PX0RVUExJQ0FURSk7CitDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKFdl
YklEQkN1cnNvcjo6TmV4dCwgSW5kZXhlZERCOjpDdXJzb3JOZXh0KTsKK0NPTVBJTEVfQVNTRVJU
X01BVENISU5HX0VOVU0oV2ViSURCQ3Vyc29yOjpOZXh0Tm9EdXBsaWNhdGUsIEluZGV4ZWREQjo6
Q3Vyc29yTmV4dE5vRHVwbGljYXRlKTsKK0NPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oV2Vi
SURCQ3Vyc29yOjpQcmV2LCBJbmRleGVkREI6OkN1cnNvclByZXYpOworQ09NUElMRV9BU1NFUlRf
TUFUQ0hJTkdfRU5VTShXZWJJREJDdXJzb3I6OlByZXZOb0R1cGxpY2F0ZSwgSW5kZXhlZERCOjpD
dXJzb3JQcmV2Tm9EdXBsaWNhdGUpOwogCiBDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKFdl
YklEQkRhdGFiYXNlOjpQcmVlbXB0aXZlVGFzaywgSURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNl
OjpQcmVlbXB0aXZlVGFzayk7CiBDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKFdlYklEQkRh
dGFiYXNlOjpOb3JtYWxUYXNrLCBJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2U6Ok5vcm1hbFRh
c2spOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCRGF0YWJhc2VC
YWNrZW5kUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCRGF0YWJhc2VC
YWNrZW5kUHJveHkuY3BwCmluZGV4IDM1NWQ4MDg5ZWVjYzZkM2M0NGJkOGNiYTA0MTExZjI2ZWZm
MTkzNGYuLjJjMmE1ZTdlOWZkNTY0MmE1OTcyMDQ4YjI5YTZjMDJhN2JlMGRiYjEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkRhdGFiYXNlQmFja2VuZFByb3h5LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJEYXRhYmFzZUJhY2tlbmRQcm94
eS5jcHAKQEAgLTkzLDcgKzkzLDcgQEAgdm9pZCBJREJEYXRhYmFzZUJhY2tlbmRQcm94eTo6YWJv
cnQoaW50NjRfdCB0cmFuc2FjdGlvbklkLCBQYXNzUmVmUHRyPElEQkRhdGFiYXMKICAgICBtX3dl
YklEQkRhdGFiYXNlLT5hYm9ydCh0cmFuc2FjdGlvbklkLCBlcnJvcik7CiB9CiAKLXZvaWQgSURC
RGF0YWJhc2VCYWNrZW5kUHJveHk6Om9wZW5DdXJzb3IoaW50NjRfdCB0cmFuc2FjdGlvbklkLCBp
bnQ2NF90IG9iamVjdFN0b3JlSWQsIGludDY0X3QgaW5kZXhJZCwgUGFzc1JlZlB0cjxJREJLZXlS
YW5nZT4ga2V5UmFuZ2UsIHVuc2lnbmVkIHNob3J0IGRpcmVjdGlvbiwgYm9vbCBrZXlPbmx5LCBU
YXNrVHlwZSB0YXNrVHlwZSwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcykKK3Zv
aWQgSURCRGF0YWJhc2VCYWNrZW5kUHJveHk6Om9wZW5DdXJzb3IoaW50NjRfdCB0cmFuc2FjdGlv
bklkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGludDY0X3QgaW5kZXhJZCwgUGFzc1JlZlB0cjxJ
REJLZXlSYW5nZT4ga2V5UmFuZ2UsIEluZGV4ZWREQjo6Q3Vyc29yRGlyZWN0aW9uIGRpcmVjdGlv
biwgYm9vbCBrZXlPbmx5LCBUYXNrVHlwZSB0YXNrVHlwZSwgUGFzc1JlZlB0cjxJREJDYWxsYmFj
a3M+IGNhbGxiYWNrcykKIHsKICAgICBtX3dlYklEQkRhdGFiYXNlLT5vcGVuQ3Vyc29yKHRyYW5z
YWN0aW9uSWQsIG9iamVjdFN0b3JlSWQsIGluZGV4SWQsIGtleVJhbmdlLCBzdGF0aWNfY2FzdDxX
ZWJJREJDdXJzb3I6OkRpcmVjdGlvbj4oZGlyZWN0aW9uKSwga2V5T25seSwgc3RhdGljX2Nhc3Q8
V2ViSURCRGF0YWJhc2U6OlRhc2tUeXBlPih0YXNrVHlwZSksIG5ldyBXZWJJREJDYWxsYmFja3NJ
bXBsKGNhbGxiYWNrcykpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvSURCRGF0YWJhc2VCYWNrZW5kUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L0lEQkRhdGFiYXNlQmFja2VuZFByb3h5LmgKaW5kZXggZGJkOTY0MmYxMTIwZDk5OGRhZjk3Y2I1
ZmE5YTUyMGJiZDVkNmQ1MS4uNWQ1ZDkwOGY5OGJlM2FhODVjMjVkNjM0YzVmYjEwNDJlZWIyZjc4
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCRGF0YWJhc2VCYWNr
ZW5kUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJEYXRhYmFzZUJh
Y2tlbmRQcm94eS5oCkBAIC01NSw3ICs1NSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQg
cHV0KGludDY0X3QgdHJhbnNhY3Rpb25JZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBQYXNzUmVm
UHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gdmFsdWUsIFBhc3NSZWZQdHI8V2ViQ29yZTo6SURC
S2V5PiwgUHV0TW9kZSwgUGFzc1JlZlB0cjxXZWJDb3JlOjpJREJDYWxsYmFja3M+LCBjb25zdCBW
ZWN0b3I8aW50NjRfdD4mIGluZGV4SWRzLCBjb25zdCBWZWN0b3I8SW5kZXhLZXlzPiYpIE9WRVJS
SURFOwogICAgIHZpcnR1YWwgdm9pZCBzZXRJbmRleEtleXMoaW50NjRfdCB0cmFuc2FjdGlvbklk
LCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIFBhc3NSZWZQdHI8V2ViQ29yZTo6SURCS2V5PiBwcnBQ
cmltYXJ5S2V5LCBjb25zdCBWZWN0b3I8aW50NjRfdD4mIGluZGV4SWRzLCBjb25zdCBWZWN0b3I8
SW5kZXhLZXlzPiYpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBzZXRJbmRleGVzUmVhZHko
aW50NjRfdCB0cmFuc2FjdGlvbklkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGNvbnN0IFZlY3Rv
cjxpbnQ2NF90PiYgaW5kZXhJZHMpIE9WRVJSSURFOwotICAgIHZpcnR1YWwgdm9pZCBvcGVuQ3Vy
c29yKGludDY0X3QgdHJhbnNhY3Rpb25JZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBpbnQ2NF90
IGluZGV4SWQsIFBhc3NSZWZQdHI8V2ViQ29yZTo6SURCS2V5UmFuZ2U+LCB1bnNpZ25lZCBzaG9y
dCBkaXJlY3Rpb24sIGJvb2wga2V5T25seSwgVGFza1R5cGUsIFBhc3NSZWZQdHI8V2ViQ29yZTo6
SURCQ2FsbGJhY2tzPikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIG9wZW5DdXJzb3IoaW50
NjRfdCB0cmFuc2FjdGlvbklkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGludDY0X3QgaW5kZXhJ
ZCwgUGFzc1JlZlB0cjxXZWJDb3JlOjpJREJLZXlSYW5nZT4sIFdlYkNvcmU6OkluZGV4ZWREQjo6
Q3Vyc29yRGlyZWN0aW9uLCBib29sIGtleU9ubHksIFRhc2tUeXBlLCBQYXNzUmVmUHRyPFdlYkNv
cmU6OklEQkNhbGxiYWNrcz4pIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBjb3VudChpbnQ2
NF90IHRyYW5zYWN0aW9uSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgaW50NjRfdCBpbmRleElk
LCBQYXNzUmVmUHRyPFdlYkNvcmU6OklEQktleVJhbmdlPiwgUGFzc1JlZlB0cjxXZWJDb3JlOjpJ
REJDYWxsYmFja3M+KSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlUmFuZ2UoaW50
NjRfdCB0cmFuc2FjdGlvbklkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIFBhc3NSZWZQdHI8V2Vi
Q29yZTo6SURCS2V5UmFuZ2U+LCBQYXNzUmVmUHRyPFdlYkNvcmU6OklEQkNhbGxiYWNrcz4pIE9W
RVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBjbGVhcihpbnQ2NF90IHRyYW5zYWN0aW9uSWQsIGlu
dDY0X3Qgb2JqZWN0U3RvcmVJZCwgUGFzc1JlZlB0cjxXZWJDb3JlOjpJREJDYWxsYmFja3M+KSBP
VkVSUklERTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkNh
bGxiYWNrc0ltcGwuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCQ2FsbGJh
Y2tzSW1wbC5jcHAKaW5kZXggMDVmYzg4ZjViY2IzNTNkODNhZDRlNDRlYzBiMWI5Y2Q3NmM4NDRl
Yi4uMzM5MDU4ZWRkZjM0YzdiZjQyYjY0MDRjODk2YzVmZTMzZjZhOGZiMiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCQ2FsbGJhY2tzSW1wbC5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCQ2FsbGJhY2tzSW1wbC5jcHAKQEAgLTM0
LDYgKzM0LDcgQEAKICNpbmNsdWRlICJJREJEYXRhYmFzZUJhY2tlbmRQcm94eS5oIgogI2luY2x1
ZGUgIklEQkRhdGFiYXNlRXJyb3IuaCIKICNpbmNsdWRlICJJREJLZXkuaCIKKyNpbmNsdWRlICJJ
REJNZXRhZGF0YS5oIgogI2luY2x1ZGUgIldlYkRPTVN0cmluZ0xpc3QuaCIKICNpbmNsdWRlICJX
ZWJJREJDYWxsYmFja3MuaCIKICNpbmNsdWRlICJXZWJJREJEYXRhYmFzZS5oIgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCRGF0YWJhc2VJbXBsLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkRhdGFiYXNlSW1wbC5jcHAKaW5kZXggYTE4
MDUxNTBkMmNhNmRjNzdkZjg2MWI2MmQwYWFiM2E5ZTVkYjJhYi4uZTRkYTdlZTIzMTI5ZjZmNjlj
ODMwZDYwYTAwOWNlNWRmMTk0MzJmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvV2ViSURCRGF0YWJhc2VJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9XZWJJREJEYXRhYmFzZUltcGwuY3BwCkBAIC0xMTgsNyArMTE4LDcgQEAgdm9pZCBXZWJJ
REJEYXRhYmFzZUltcGw6OmNvbW1pdChsb25nIGxvbmcgdHJhbnNhY3Rpb25JZCkKIHZvaWQgV2Vi
SURCRGF0YWJhc2VJbXBsOjpvcGVuQ3Vyc29yKGxvbmcgbG9uZyB0cmFuc2FjdGlvbklkLCBsb25n
IGxvbmcgb2JqZWN0U3RvcmVJZCwgbG9uZyBsb25nIGluZGV4SWQsIGNvbnN0IFdlYklEQktleVJh
bmdlJiBrZXlSYW5nZSwgdW5zaWduZWQgc2hvcnQgZGlyZWN0aW9uLCBib29sIGtleU9ubHksIFRh
c2tUeXBlIHRhc2tUeXBlLCBXZWJJREJDYWxsYmFja3MqIGNhbGxiYWNrcykKIHsKICAgICBpZiAo
bV9kYXRhYmFzZUJhY2tlbmQpCi0gICAgICAgIG1fZGF0YWJhc2VCYWNrZW5kLT5vcGVuQ3Vyc29y
KHRyYW5zYWN0aW9uSWQsIG9iamVjdFN0b3JlSWQsIGluZGV4SWQsIGtleVJhbmdlLCBzdGF0aWNf
Y2FzdDxJREJDdXJzb3I6OkRpcmVjdGlvbj4oZGlyZWN0aW9uKSwga2V5T25seSwgc3RhdGljX2Nh
c3Q8SURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlOjpUYXNrVHlwZT4odGFza1R5cGUpLCBJREJD
YWxsYmFja3NQcm94eTo6Y3JlYXRlKGFkb3B0UHRyKGNhbGxiYWNrcykpKTsKKyAgICAgICAgbV9k
YXRhYmFzZUJhY2tlbmQtPm9wZW5DdXJzb3IodHJhbnNhY3Rpb25JZCwgb2JqZWN0U3RvcmVJZCwg
aW5kZXhJZCwga2V5UmFuZ2UsIHN0YXRpY19jYXN0PEluZGV4ZWREQjo6Q3Vyc29yRGlyZWN0aW9u
PihkaXJlY3Rpb24pLCBrZXlPbmx5LCBzdGF0aWNfY2FzdDxJREJEYXRhYmFzZUJhY2tlbmRJbnRl
cmZhY2U6OlRhc2tUeXBlPih0YXNrVHlwZSksIElEQkNhbGxiYWNrc1Byb3h5OjpjcmVhdGUoYWRv
cHRQdHIoY2FsbGJhY2tzKSkpOwogfQogCiB2b2lkIFdlYklEQkRhdGFiYXNlSW1wbDo6Y291bnQo
bG9uZyBsb25nIHRyYW5zYWN0aW9uSWQsIGxvbmcgbG9uZyBvYmplY3RTdG9yZUlkLCBsb25nIGxv
bmcgaW5kZXhJZCwgY29uc3QgV2ViSURCS2V5UmFuZ2UmIGtleVJhbmdlLCBXZWJJREJDYWxsYmFj
a3MqIGNhbGxiYWNrcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMv
SURCQWJvcnRPbkNvcnJ1cHRUZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMv
SURCQWJvcnRPbkNvcnJ1cHRUZXN0LmNwcAppbmRleCBlNjNjZTJhODZiMmE5M2Q2YjIyZTZmODA0
MzhiZmQ3ODJiZDkxMWI5Li44NzFjNmI4MGMwYmNlNWQ5OTI3MDUwZjFkMTM5ZWNmODhiNDg0MjBk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0lEQkFib3J0T25Db3Jy
dXB0VGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9JREJBYm9ydE9u
Q29ycnVwdFRlc3QuY3BwCkBAIC0zMSw2ICszMSw4IEBACiAjaW5jbHVkZSAiSURCRGF0YWJhc2VD
YWxsYmFja3MuaCIKICNpbmNsdWRlICJJREJGYWN0b3J5QmFja2VuZEltcGwuaCIKICNpbmNsdWRl
ICJJREJGYWtlQmFja2luZ1N0b3JlLmgiCisjaW5jbHVkZSAiSURCS2V5LmgiCisjaW5jbHVkZSAi
SW5kZXhlZERCLmgiCiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKICNpbmNsdWRlIDxndGVz
dC9ndGVzdC5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vdGVzdHMvSURCRGF0YWJhc2VCYWNrZW5kVGVzdC5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3Rlc3RzL0lEQkRhdGFiYXNlQmFja2VuZFRlc3QuY3BwCmluZGV4IDQ1
YjllMmJiMmJmYWNhMWYwYWMxMTliN2Y1NWUyYTVjNDFiMTQ1ZWQuLjk3NDMyYjIwZDAzNjIwN2Vh
NWY0ZmI0MzljZDA3YjhkYWFmODRiYjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vdGVzdHMvSURCRGF0YWJhc2VCYWNrZW5kVGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS90ZXN0cy9JREJEYXRhYmFzZUJhY2tlbmRUZXN0LmNwcApAQCAtMjQsMTMgKzI0LDE2
IEBACiAgKi8KIAogI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaW5jbHVkZSAiSURCRGF0YWJhc2Uu
aCIKKwogI2luY2x1ZGUgIklEQkJhY2tpbmdTdG9yZS5oIgotI2luY2x1ZGUgIklEQkN1cnNvckJh
Y2tlbmRJbnRlcmZhY2UuaCIKICNpbmNsdWRlICJJREJEYXRhYmFzZUJhY2tlbmRJbXBsLmgiCiAj
aW5jbHVkZSAiSURCRGF0YWJhc2VDYWxsYmFja3NQcm94eS5oIgogI2luY2x1ZGUgIklEQkZhY3Rv
cnlCYWNrZW5kSW1wbC5oIgogI2luY2x1ZGUgIklEQkZha2VCYWNraW5nU3RvcmUuaCIKICNpbmNs
dWRlICJJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsLmgiCisjaW5jbHVkZSAiSW5kZXhlZERCLmgi
CiAjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCiAjaW5jbHVkZSAiV2ViSURCRGF0YWJhc2VDYWxs
YmFja3NJbXBsLmgiCiAjaW5jbHVkZSAiV2ViSURCRGF0YWJhc2VJbXBsLmgiCkBAIC0xNTEsNyAr
MTU0LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBhYm9ydChpbnQ2NF90IHRyYW5zYWN0
aW9uSWQsIFBhc3NSZWZQdHI8SURCRGF0YWJhc2VFcnJvcj4pIE9WRVJSSURFIHsgfQogICAgIHZp
cnR1YWwgdm9pZCBjb21taXQoaW50NjRfdCB0cmFuc2FjdGlvbklkKSBPVkVSUklERSB7IH0KIAot
ICAgIHZpcnR1YWwgdm9pZCBvcGVuQ3Vyc29yKGludDY0X3QgdHJhbnNhY3Rpb25JZCwgaW50NjRf
dCBvYmplY3RTdG9yZUlkLCBpbnQ2NF90IGluZGV4SWQsIFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+
LCB1bnNpZ25lZCBzaG9ydCBkaXJlY3Rpb24sIGJvb2wga2V5T25seSwgVGFza1R5cGUsIFBhc3NS
ZWZQdHI8SURCQ2FsbGJhY2tzPikgT1ZFUlJJREUgeyB9CisgICAgdmlydHVhbCB2b2lkIG9wZW5D
dXJzb3IoaW50NjRfdCB0cmFuc2FjdGlvbklkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGludDY0
X3QgaW5kZXhJZCwgUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4sIEluZGV4ZWREQjo6Q3Vyc29yRGly
ZWN0aW9uLCBib29sIGtleU9ubHksIFRhc2tUeXBlLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4p
IE9WRVJSSURFIHsgfQogICAgIHZpcnR1YWwgdm9pZCBjb3VudChpbnQ2NF90IG9iamVjdFN0b3Jl
SWQsIGludDY0X3QgaW5kZXhJZCwgaW50NjRfdCB0cmFuc2FjdGlvbklkLCBQYXNzUmVmUHRyPElE
QktleVJhbmdlPiwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+KSBPVkVSUklERSB7IH0KICAgICB2
aXJ0dWFsIHZvaWQgZ2V0KGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgaW50NjRfdCBpbmRleElkLCBp
bnQ2NF90IHRyYW5zYWN0aW9uSWQsIFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+LCBib29sIGtleU9u
bHksIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPikgT1ZFUlJJREUgeyB9CiAgICAgdmlydHVhbCB2
b2lkIHB1dChpbnQ2NF90IHRyYW5zYWN0aW9uSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgUGFz
c1JlZlB0cjxTaGFyZWRCdWZmZXI+LCBQYXNzUmVmUHRyPElEQktleT4sIFB1dE1vZGUsIFBhc3NS
ZWZQdHI8SURCQ2FsbGJhY2tzPiwgY29uc3QgVmVjdG9yPGludDY0X3Q+JiBpbmRleElkcywgY29u
c3QgVmVjdG9yPEluZGV4S2V5cz4mKSBPVkVSUklERSB7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vdGVzdHMvSURCRmFrZUJhY2tpbmdTdG9yZS5oIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS90ZXN0cy9JREJGYWtlQmFja2luZ1N0b3JlLmgKaW5kZXggM2VkNzI0YmI0ZWIw
YTJiYmY4OGI2NDYxYTUyZmY0MjdiNjhlYmIzMi4uZWVmYzY0OGFkMjNhNDVjMmNjODdjMjRjYmNi
MzQyMTYyMWQ3NGU2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9J
REJGYWtlQmFja2luZ1N0b3JlLmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9J
REJGYWtlQmFja2luZ1N0b3JlLmgKQEAgLTUxLDEwICs1MSwxMCBAQCBwdWJsaWM6CiAgICAgdmly
dHVhbCB2b2lkIGRlbGV0ZUluZGV4KFRyYW5zYWN0aW9uKiwgaW50NjRfdCBkYXRhYmFzZUlkLCBp
bnQ2NF90IG9iamVjdFN0b3JlSWQsIGludDY0X3QgaW5kZXhJZCkgT1ZFUlJJREUgeyB9CiAgICAg
dmlydHVhbCB2b2lkIHB1dEluZGV4RGF0YUZvclJlY29yZChUcmFuc2FjdGlvbiosIGludDY0X3Qg
ZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBpbnQ2NF90IGluZGV4SWQsIGNvbnN0
IElEQktleSYsIGNvbnN0IFJlY29yZElkZW50aWZpZXImKSBPVkVSUklERSB7IH0KIAotICAgIHZp
cnR1YWwgUGFzc1JlZlB0cjxDdXJzb3I+IG9wZW5PYmplY3RTdG9yZUtleUN1cnNvcihUcmFuc2Fj
dGlvbiosIGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBjb25zdCBJ
REJLZXlSYW5nZSosIElEQkN1cnNvcjo6RGlyZWN0aW9uKSBPVkVSUklERSB7IHJldHVybiBQYXNz
UmVmUHRyPEN1cnNvcj4oKTsgfQotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxDdXJzb3I+IG9wZW5P
YmplY3RTdG9yZUN1cnNvcihUcmFuc2FjdGlvbiosIGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRf
dCBvYmplY3RTdG9yZUlkLCBjb25zdCBJREJLZXlSYW5nZSosIElEQkN1cnNvcjo6RGlyZWN0aW9u
KSBPVkVSUklERSB7IHJldHVybiBQYXNzUmVmUHRyPEN1cnNvcj4oKTsgfQotICAgIHZpcnR1YWwg
UGFzc1JlZlB0cjxDdXJzb3I+IG9wZW5JbmRleEtleUN1cnNvcihUcmFuc2FjdGlvbiosIGludDY0
X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBpbnQ2NF90IGluZGV4SWQsIGNv
bnN0IElEQktleVJhbmdlKiwgSURCQ3Vyc29yOjpEaXJlY3Rpb24pIE9WRVJSSURFIHsgcmV0dXJu
IFBhc3NSZWZQdHI8Q3Vyc29yPigpOyB9Ci0gICAgdmlydHVhbCBQYXNzUmVmUHRyPEN1cnNvcj4g
b3BlbkluZGV4Q3Vyc29yKFRyYW5zYWN0aW9uKiwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90
IG9iamVjdFN0b3JlSWQsIGludDY0X3QgaW5kZXhJZCwgY29uc3QgSURCS2V5UmFuZ2UqLCBJREJD
dXJzb3I6OkRpcmVjdGlvbikgT1ZFUlJJREUgeyByZXR1cm4gUGFzc1JlZlB0cjxDdXJzb3I+KCk7
IH0KKyAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8Q3Vyc29yPiBvcGVuT2JqZWN0U3RvcmVLZXlDdXJz
b3IoVHJhbnNhY3Rpb24qLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJ
ZCwgY29uc3QgSURCS2V5UmFuZ2UqLCBJbmRleGVkREI6OkN1cnNvckRpcmVjdGlvbikgT1ZFUlJJ
REUgeyByZXR1cm4gUGFzc1JlZlB0cjxDdXJzb3I+KCk7IH0KKyAgICB2aXJ0dWFsIFBhc3NSZWZQ
dHI8Q3Vyc29yPiBvcGVuT2JqZWN0U3RvcmVDdXJzb3IoVHJhbnNhY3Rpb24qLCBpbnQ2NF90IGRh
dGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgY29uc3QgSURCS2V5UmFuZ2UqLCBJbmRl
eGVkREI6OkN1cnNvckRpcmVjdGlvbikgT1ZFUlJJREUgeyByZXR1cm4gUGFzc1JlZlB0cjxDdXJz
b3I+KCk7IH0KKyAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8Q3Vyc29yPiBvcGVuSW5kZXhLZXlDdXJz
b3IoVHJhbnNhY3Rpb24qLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJ
ZCwgaW50NjRfdCBpbmRleElkLCBjb25zdCBJREJLZXlSYW5nZSosIEluZGV4ZWREQjo6Q3Vyc29y
RGlyZWN0aW9uKSBPVkVSUklERSB7IHJldHVybiBQYXNzUmVmUHRyPEN1cnNvcj4oKTsgfQorICAg
IHZpcnR1YWwgUGFzc1JlZlB0cjxDdXJzb3I+IG9wZW5JbmRleEN1cnNvcihUcmFuc2FjdGlvbios
IGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBpbnQ2NF90IGluZGV4
SWQsIGNvbnN0IElEQktleVJhbmdlKiwgSW5kZXhlZERCOjpDdXJzb3JEaXJlY3Rpb24pIE9WRVJS
SURFIHsgcmV0dXJuIFBhc3NSZWZQdHI8Q3Vyc29yPigpOyB9CiB9OwogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>191557</attachid>
            <date>2013-03-05 13:59:14 -0800</date>
            <delta_ts>2013-03-05 14:37:02 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-110653-20130305135521.patch</filename>
            <type>text/plain</type>
            <size>90616</size>
            <attacher name="Alec Flett">alecflett</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ0NzM0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTIzMzM1MGMxOTIxZjgz
NTZiNWJmY2M0ZjRjNWVjYTRmZGM5ZmQ4MC4uMDcwOTUwODI0ZTEzODJiNTllODNlNjljZTU1MWJh
N2FhOGNlN2NmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisyMDEzLTAyLTIyICBBbGVj
IEZsZXR0ICA8YWxlY2ZsZXR0QGNocm9taXVtLm9yZz4KKworICAgICAgICBJbmRleGVkREI6IFBy
b3Blcmx5IHJlZmFjdG9yIGZyb250ZW5kL2JhY2tlbmQgY29kZSBieSAjaW5jbHVkZXMKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExMDY1MworCisgICAg
ICAgIFJldmlld2VkIGJ5IERpbWl0cmkgR2xhemtvdi4KKworICAgICAgICBJbmRleGVkREIgaGFz
IGEgZGlzdGluY3QgYmFja2VuZCBhbmQgZnJvbnRlbmQsIHdpdGggd2VsbCBkZWZpbmVkCisgICAg
ICAgICpJbnRlcmZhY2UgLyAqQ2FsbGJhY2tzIGNsYXNzZXMgZGlzdGluZ3Vpc2hpbmcgdGhlbSwg
cmVzcGVjdGl2ZWx5LgorICAgICAgICAKKyAgICAgICAgVGhpcyBtYWtlcyBzdXJlIHRoYXQgdGhl
IGZyb250ZW5kIGFuZCBiYWNrZW5kIGRvIG5vdCBpbmNsdWRlIGVhY2gKKyAgICAgICAgb3RoZXIg
YW5kIGZpeGVzIGJ1aWxkIHByb2JsZW1zIHRoYXQgb2NjdXJyZWQgYXMgYSByZXN1bHQuCisKKyAg
ICAgICAgU3BlY2lmaWNhbGx5IHRoaXMgbW92ZXMgZW51bXMgb3V0IG9mIElEQkN1cnNvciBhbmQg
SURCVHJhbnNhY3Rpb24KKyAgICAgICAgaW50byBJbmRleGVkREIuaCBpbiBhIG5ldyBXZWJDb3Jl
OjpJbmRleGVkREIgbmFtZXNwYWNlLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cywgYXMgdGhpcyBp
cyBqdXN0IGEgcmVmYWN0b3IuCisKIDIwMTMtMDMtMDQgIFVkYXkgS2lyYW4gIDx1ZGF5a2lyYW5A
bW90b3JvbGEuY29tPgogCiAgICAgICAgIGdldFByb3BlcnR5VmFsdWUgZm9yIC13ZWJraXQtdGV4
dC1zdHJva2UgcmV0dXJucyBudWxsLCBzaG91bGQgY29tcHV0ZSB0aGUgc2hvcnRoYW5kIHZhbHVl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IDBlNWE2ZDZmNzY3YzE3OWJlNWY1OGZlYWFk
MjUxZTY0MGFlMTljZjcuLjA5ODEwNmFjYTY5NmRiZDQxMDBkZDRhODdkMDA0N2NkZDM3ZjVmZTIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTMtMDItMjIg
IEFsZWMgRmxldHQgIDxhbGVjZmxldHRAY2hyb21pdW0ub3JnPgorCisgICAgICAgIEluZGV4ZWRE
QjogUHJvcGVybHkgcmVmYWN0b3IgZnJvbnRlbmQvYmFja2VuZCBjb2RlIGJ5ICNpbmNsdWRlcwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTEwNjUzCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgRGltaXRyaSBHbGF6a292LgorCisgICAgICAgIENsZWFuIHVw
IHRoZSBmcm9udGVuZC9iYWNrZW5kIFdlYklEQiogaW1wbGVtZW50YXRpb25zIHRvCisgICAgICAg
IG1hdGNoIHRoZSBjaGFuZ2VzIHRvIHdlYmtpdC4KKwogMjAxMy0wMy0wNCAgQ2hyaXMgRmxlaXph
Y2ggIDxjZmxlaXphY2hAYXBwbGUuY29tPgogCiAgICAgICAgIEFYOiBjZWxsRm9yQ29sdW1uQW5k
Um93IGZhaWxzIGZvciB0YWJsZXMgd2l0aCBoaWRkZW4gdGFibGUgY2VsbHMKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0gYi9Tb3VyY2UvV2ViQ29yZS9HTlVt
YWtlZmlsZS5saXN0LmFtCmluZGV4IGEyOGViMWVmMDBiMTY0ODFjYjI2Zjg2MTgxNDEzNWFkMzdl
OTk3ZjcuLjQ3Mzk1ZDkwNjZjYTk0MWRkNzMyNTE5ZWUyZTBhMDZiZDM5NzkxZjcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KKysrIGIvU291cmNlL1dlYkNv
cmUvR05VbWFrZWZpbGUubGlzdC5hbQpAQCAtMTkyNiw2ICsxOTI2LDcgQEAgd2ViY29yZV9tb2R1
bGVzX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRy
YW5zYWN0aW9uLmggXAogCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlZlcnNp
b25DaGFuZ2VFdmVudC5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lE
QlZlcnNpb25DaGFuZ2VFdmVudC5oIFwKKwlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9JbmRleGVkREIuaCBcCiAJU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvUGFnZUdy
b3VwSW5kZXhlZERhdGFiYXNlLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvUGFnZUdyb3VwSW5kZXhlZERhdGFiYXNlLmggXAogCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL1dvcmtlckNvbnRleHRJbmRleGVkRGF0YWJhc2UuY3BwIFwKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkJhY2tpbmdTdG9yZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJCYWNraW5nU3RvcmUuY3BwCmluZGV4
IDkwOWVlYWU2NjdhMGY3NmY0NDk1NmM1ZTIzMzFmOGJiOTFmM2EyMWMuLjU5M2E5NzA0MGE5ZWE4
ZmVjOWRhYmRiZDNlYmQ3NjJhZTIzZjVmMTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL0lEQkJhY2tpbmdTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvSURCQmFja2luZ1N0b3JlLmNwcApAQCAtMTMwNyw3ICsxMzA3LDcg
QEAgYm9vbCBJREJCYWNraW5nU3RvcmU6OkN1cnNvcjo6Y29udGludWVGdW5jdGlvbihjb25zdCBJ
REJLZXkqIGtleSwgSXRlcmF0b3JTdGF0ZQogewogICAgIFJlZlB0cjxJREJLZXk+IHByZXZpb3Vz
S2V5ID0gbV9jdXJyZW50S2V5OwogCi0gICAgLy8gV2hlbiBpdGVyYXRpbmcgd2l0aCBQUkVWX05P
X0RVUExJQ0FURSwgc3BlYyByZXF1aXJlcyB0aGF0IHRoZQorICAgIC8vIFdoZW4gaXRlcmF0aW5n
IHdpdGggUHJldk5vRHVwbGljYXRlLCBzcGVjIHJlcXVpcmVzIHRoYXQgdGhlCiAgICAgLy8gdmFs
dWUgd2UgeWllbGQgZm9yIGVhY2gga2V5IGlzIHRoZSBmaXJzdCBkdXBsaWNhdGUgaW4gZm9yd2Fy
ZHMKICAgICAvLyBvcmRlci4KICAgICBSZWZQdHI8SURCS2V5PiBsYXN0RHVwbGljYXRlS2V5OwpA
QCAtMTcxNywxMiArMTcxNywxMiBAQCBib29sIEluZGV4Q3Vyc29ySW1wbDo6bG9hZEN1cnJlbnRS
b3coKQogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIG9iamVjdFN0b3JlQ3Vyc29yT3B0aW9u
cyhMZXZlbERCVHJhbnNhY3Rpb24qIHRyYW5zYWN0aW9uLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGlu
dDY0X3Qgb2JqZWN0U3RvcmVJZCwgY29uc3QgSURCS2V5UmFuZ2UqIHJhbmdlLCBJREJDdXJzb3I6
OkRpcmVjdGlvbiBkaXJlY3Rpb24sIElEQkJhY2tpbmdTdG9yZTo6Q3Vyc29yOjpDdXJzb3JPcHRp
b25zJiBjdXJzb3JPcHRpb25zKQorYm9vbCBvYmplY3RTdG9yZUN1cnNvck9wdGlvbnMoTGV2ZWxE
QlRyYW5zYWN0aW9uKiB0cmFuc2FjdGlvbiwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9i
amVjdFN0b3JlSWQsIGNvbnN0IElEQktleVJhbmdlKiByYW5nZSwgSW5kZXhlZERCOjpDdXJzb3JE
aXJlY3Rpb24gZGlyZWN0aW9uLCBJREJCYWNraW5nU3RvcmU6OkN1cnNvcjo6Q3Vyc29yT3B0aW9u
cyYgY3Vyc29yT3B0aW9ucykKIHsKICAgICBib29sIGxvd2VyQm91bmQgPSByYW5nZSAmJiByYW5n
ZS0+bG93ZXIoKTsKICAgICBib29sIHVwcGVyQm91bmQgPSByYW5nZSAmJiByYW5nZS0+dXBwZXIo
KTsKLSAgICBjdXJzb3JPcHRpb25zLmZvcndhcmQgPSAoZGlyZWN0aW9uID09IElEQkN1cnNvcjo6
TkVYVF9OT19EVVBMSUNBVEUgfHwgZGlyZWN0aW9uID09IElEQkN1cnNvcjo6TkVYVCk7Ci0gICAg
Y3Vyc29yT3B0aW9ucy51bmlxdWUgPSAoZGlyZWN0aW9uID09IElEQkN1cnNvcjo6TkVYVF9OT19E
VVBMSUNBVEUgfHwgZGlyZWN0aW9uID09IElEQkN1cnNvcjo6UFJFVl9OT19EVVBMSUNBVEUpOwor
ICAgIGN1cnNvck9wdGlvbnMuZm9yd2FyZCA9IChkaXJlY3Rpb24gPT0gSW5kZXhlZERCOjpDdXJz
b3JOZXh0Tm9EdXBsaWNhdGUgfHwgZGlyZWN0aW9uID09IEluZGV4ZWREQjo6Q3Vyc29yTmV4dCk7
CisgICAgY3Vyc29yT3B0aW9ucy51bmlxdWUgPSAoZGlyZWN0aW9uID09IEluZGV4ZWREQjo6Q3Vy
c29yTmV4dE5vRHVwbGljYXRlIHx8IGRpcmVjdGlvbiA9PSBJbmRleGVkREI6OkN1cnNvclByZXZO
b0R1cGxpY2F0ZSk7CiAKICAgICBpZiAoIWxvd2VyQm91bmQpIHsKICAgICAgICAgY3Vyc29yT3B0
aW9ucy5sb3dLZXkgPSBPYmplY3RTdG9yZURhdGFLZXk6OmVuY29kZShkYXRhYmFzZUlkLCBvYmpl
Y3RTdG9yZUlkLCBtaW5JREJLZXkoKSk7CkBAIC0xNzY0LDEzICsxNzY0LDEzIEBAIGJvb2wgb2Jq
ZWN0U3RvcmVDdXJzb3JPcHRpb25zKExldmVsREJUcmFuc2FjdGlvbiogdHJhbnNhY3Rpb24sIGlu
dDY0X3QgZGF0YWJhc2VJCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgaW5kZXhDdXJzb3JP
cHRpb25zKExldmVsREJUcmFuc2FjdGlvbiogdHJhbnNhY3Rpb24sIGludDY0X3QgZGF0YWJhc2VJ
ZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBpbnQ2NF90IGluZGV4SWQsIGNvbnN0IElEQktleVJh
bmdlKiByYW5nZSwgSURCQ3Vyc29yOjpEaXJlY3Rpb24gZGlyZWN0aW9uLCBJREJCYWNraW5nU3Rv
cmU6OkN1cnNvcjo6Q3Vyc29yT3B0aW9ucyYgY3Vyc29yT3B0aW9ucykKK2Jvb2wgaW5kZXhDdXJz
b3JPcHRpb25zKExldmVsREJUcmFuc2FjdGlvbiogdHJhbnNhY3Rpb24sIGludDY0X3QgZGF0YWJh
c2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBpbnQ2NF90IGluZGV4SWQsIGNvbnN0IElEQktl
eVJhbmdlKiByYW5nZSwgSW5kZXhlZERCOjpDdXJzb3JEaXJlY3Rpb24gZGlyZWN0aW9uLCBJREJC
YWNraW5nU3RvcmU6OkN1cnNvcjo6Q3Vyc29yT3B0aW9ucyYgY3Vyc29yT3B0aW9ucykKIHsKICAg
ICBBU1NFUlQodHJhbnNhY3Rpb24pOwogICAgIGJvb2wgbG93ZXJCb3VuZCA9IHJhbmdlICYmIHJh
bmdlLT5sb3dlcigpOwogICAgIGJvb2wgdXBwZXJCb3VuZCA9IHJhbmdlICYmIHJhbmdlLT51cHBl
cigpOwotICAgIGN1cnNvck9wdGlvbnMuZm9yd2FyZCA9IChkaXJlY3Rpb24gPT0gSURCQ3Vyc29y
OjpORVhUX05PX0RVUExJQ0FURSB8fCBkaXJlY3Rpb24gPT0gSURCQ3Vyc29yOjpORVhUKTsKLSAg
ICBjdXJzb3JPcHRpb25zLnVuaXF1ZSA9IChkaXJlY3Rpb24gPT0gSURCQ3Vyc29yOjpORVhUX05P
X0RVUExJQ0FURSB8fCBkaXJlY3Rpb24gPT0gSURCQ3Vyc29yOjpQUkVWX05PX0RVUExJQ0FURSk7
CisgICAgY3Vyc29yT3B0aW9ucy5mb3J3YXJkID0gKGRpcmVjdGlvbiA9PSBJbmRleGVkREI6OkN1
cnNvck5leHROb0R1cGxpY2F0ZSB8fCBkaXJlY3Rpb24gPT0gSW5kZXhlZERCOjpDdXJzb3JOZXh0
KTsKKyAgICBjdXJzb3JPcHRpb25zLnVuaXF1ZSA9IChkaXJlY3Rpb24gPT0gSW5kZXhlZERCOjpD
dXJzb3JOZXh0Tm9EdXBsaWNhdGUgfHwgZGlyZWN0aW9uID09IEluZGV4ZWREQjo6Q3Vyc29yUHJl
dk5vRHVwbGljYXRlKTsKIAogICAgIGlmICghbG93ZXJCb3VuZCkgewogICAgICAgICBjdXJzb3JP
cHRpb25zLmxvd0tleSA9IEluZGV4RGF0YUtleTo6ZW5jb2RlTWluS2V5KGRhdGFiYXNlSWQsIG9i
amVjdFN0b3JlSWQsIGluZGV4SWQpOwpAQCAtMTgwNyw3ICsxODA3LDcgQEAgYm9vbCBpbmRleEN1
cnNvck9wdGlvbnMoTGV2ZWxEQlRyYW5zYWN0aW9uKiB0cmFuc2FjdGlvbiwgaW50NjRfdCBkYXRh
YmFzZUlkLCBpbnQKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotUGFzc1JlZlB0cjxJREJCYWNraW5n
U3RvcmU6OkN1cnNvcj4gSURCQmFja2luZ1N0b3JlOjpvcGVuT2JqZWN0U3RvcmVDdXJzb3IoSURC
QmFja2luZ1N0b3JlOjpUcmFuc2FjdGlvbiogdHJhbnNhY3Rpb24sIGludDY0X3QgZGF0YWJhc2VJ
ZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBjb25zdCBJREJLZXlSYW5nZSogcmFuZ2UsIElEQkN1
cnNvcjo6RGlyZWN0aW9uIGRpcmVjdGlvbikKK1Bhc3NSZWZQdHI8SURCQmFja2luZ1N0b3JlOjpD
dXJzb3I+IElEQkJhY2tpbmdTdG9yZTo6b3Blbk9iamVjdFN0b3JlQ3Vyc29yKElEQkJhY2tpbmdT
dG9yZTo6VHJhbnNhY3Rpb24qIHRyYW5zYWN0aW9uLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0
X3Qgb2JqZWN0U3RvcmVJZCwgY29uc3QgSURCS2V5UmFuZ2UqIHJhbmdlLCBJbmRleGVkREI6OkN1
cnNvckRpcmVjdGlvbiBkaXJlY3Rpb24pCiB7CiAgICAgSURCX1RSQUNFKCJJREJCYWNraW5nU3Rv
cmU6Om9wZW5PYmplY3RTdG9yZUN1cnNvciIpOwogICAgIExldmVsREJUcmFuc2FjdGlvbiogbGV2
ZWxEQlRyYW5zYWN0aW9uID0gSURCQmFja2luZ1N0b3JlOjpUcmFuc2FjdGlvbjo6bGV2ZWxEQlRy
YW5zYWN0aW9uRnJvbSh0cmFuc2FjdGlvbik7CkBAIC0xODIxLDcgKzE4MjEsNyBAQCBQYXNzUmVm
UHRyPElEQkJhY2tpbmdTdG9yZTo6Q3Vyc29yPiBJREJCYWNraW5nU3RvcmU6Om9wZW5PYmplY3RT
dG9yZUN1cnNvcihJREJCYQogICAgIHJldHVybiBjdXJzb3IucmVsZWFzZSgpOwogfQogCi1QYXNz
UmVmUHRyPElEQkJhY2tpbmdTdG9yZTo6Q3Vyc29yPiBJREJCYWNraW5nU3RvcmU6Om9wZW5PYmpl
Y3RTdG9yZUtleUN1cnNvcihJREJCYWNraW5nU3RvcmU6OlRyYW5zYWN0aW9uKiB0cmFuc2FjdGlv
biwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGNvbnN0IElEQktl
eVJhbmdlKiByYW5nZSwgSURCQ3Vyc29yOjpEaXJlY3Rpb24gZGlyZWN0aW9uKQorUGFzc1JlZlB0
cjxJREJCYWNraW5nU3RvcmU6OkN1cnNvcj4gSURCQmFja2luZ1N0b3JlOjpvcGVuT2JqZWN0U3Rv
cmVLZXlDdXJzb3IoSURCQmFja2luZ1N0b3JlOjpUcmFuc2FjdGlvbiogdHJhbnNhY3Rpb24sIGlu
dDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBjb25zdCBJREJLZXlSYW5n
ZSogcmFuZ2UsIEluZGV4ZWREQjo6Q3Vyc29yRGlyZWN0aW9uIGRpcmVjdGlvbikKIHsKICAgICBJ
REJfVFJBQ0UoIklEQkJhY2tpbmdTdG9yZTo6b3Blbk9iamVjdFN0b3JlS2V5Q3Vyc29yIik7CiAg
ICAgTGV2ZWxEQlRyYW5zYWN0aW9uKiBsZXZlbERCVHJhbnNhY3Rpb24gPSBJREJCYWNraW5nU3Rv
cmU6OlRyYW5zYWN0aW9uOjpsZXZlbERCVHJhbnNhY3Rpb25Gcm9tKHRyYW5zYWN0aW9uKTsKQEAg
LTE4MzUsNyArMTgzNSw3IEBAIFBhc3NSZWZQdHI8SURCQmFja2luZ1N0b3JlOjpDdXJzb3I+IElE
QkJhY2tpbmdTdG9yZTo6b3Blbk9iamVjdFN0b3JlS2V5Q3Vyc29yKElECiAgICAgcmV0dXJuIGN1
cnNvci5yZWxlYXNlKCk7CiB9CiAKLVBhc3NSZWZQdHI8SURCQmFja2luZ1N0b3JlOjpDdXJzb3I+
IElEQkJhY2tpbmdTdG9yZTo6b3BlbkluZGV4S2V5Q3Vyc29yKElEQkJhY2tpbmdTdG9yZTo6VHJh
bnNhY3Rpb24qIHRyYW5zYWN0aW9uLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0
U3RvcmVJZCwgaW50NjRfdCBpbmRleElkLCBjb25zdCBJREJLZXlSYW5nZSogcmFuZ2UsIElEQkN1
cnNvcjo6RGlyZWN0aW9uIGRpcmVjdGlvbikKK1Bhc3NSZWZQdHI8SURCQmFja2luZ1N0b3JlOjpD
dXJzb3I+IElEQkJhY2tpbmdTdG9yZTo6b3BlbkluZGV4S2V5Q3Vyc29yKElEQkJhY2tpbmdTdG9y
ZTo6VHJhbnNhY3Rpb24qIHRyYW5zYWN0aW9uLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qg
b2JqZWN0U3RvcmVJZCwgaW50NjRfdCBpbmRleElkLCBjb25zdCBJREJLZXlSYW5nZSogcmFuZ2Us
IEluZGV4ZWREQjo6Q3Vyc29yRGlyZWN0aW9uIGRpcmVjdGlvbikKIHsKICAgICBJREJfVFJBQ0Uo
IklEQkJhY2tpbmdTdG9yZTo6b3BlbkluZGV4S2V5Q3Vyc29yIik7CiAgICAgTGV2ZWxEQlRyYW5z
YWN0aW9uKiBsZXZlbERCVHJhbnNhY3Rpb24gPSBJREJCYWNraW5nU3RvcmU6OlRyYW5zYWN0aW9u
OjpsZXZlbERCVHJhbnNhY3Rpb25Gcm9tKHRyYW5zYWN0aW9uKTsKQEAgLTE4NDksNyArMTg0OSw3
IEBAIFBhc3NSZWZQdHI8SURCQmFja2luZ1N0b3JlOjpDdXJzb3I+IElEQkJhY2tpbmdTdG9yZTo6
b3BlbkluZGV4S2V5Q3Vyc29yKElEQkJhY2tpCiAgICAgcmV0dXJuIGN1cnNvci5yZWxlYXNlKCk7
CiB9CiAKLVBhc3NSZWZQdHI8SURCQmFja2luZ1N0b3JlOjpDdXJzb3I+IElEQkJhY2tpbmdTdG9y
ZTo6b3BlbkluZGV4Q3Vyc29yKElEQkJhY2tpbmdTdG9yZTo6VHJhbnNhY3Rpb24qIHRyYW5zYWN0
aW9uLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgaW50NjRfdCBp
bmRleElkLCBjb25zdCBJREJLZXlSYW5nZSogcmFuZ2UsIElEQkN1cnNvcjo6RGlyZWN0aW9uIGRp
cmVjdGlvbikKK1Bhc3NSZWZQdHI8SURCQmFja2luZ1N0b3JlOjpDdXJzb3I+IElEQkJhY2tpbmdT
dG9yZTo6b3BlbkluZGV4Q3Vyc29yKElEQkJhY2tpbmdTdG9yZTo6VHJhbnNhY3Rpb24qIHRyYW5z
YWN0aW9uLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgaW50NjRf
dCBpbmRleElkLCBjb25zdCBJREJLZXlSYW5nZSogcmFuZ2UsIEluZGV4ZWREQjo6Q3Vyc29yRGly
ZWN0aW9uIGRpcmVjdGlvbikKIHsKICAgICBJREJfVFJBQ0UoIklEQkJhY2tpbmdTdG9yZTo6b3Bl
bkluZGV4Q3Vyc29yIik7CiAgICAgTGV2ZWxEQlRyYW5zYWN0aW9uKiBsZXZlbERCVHJhbnNhY3Rp
b24gPSBJREJCYWNraW5nU3RvcmU6OlRyYW5zYWN0aW9uOjpsZXZlbERCVHJhbnNhY3Rpb25Gcm9t
KHRyYW5zYWN0aW9uKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL0lEQkJhY2tpbmdTdG9yZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
SURCQmFja2luZ1N0b3JlLmgKaW5kZXggOTIzZDdkY2E2ODA1MGI1NDE3Nzc5ZTZiOGQxODVjOTRj
ODAwNjgwNS4uZmNmZTJkYWU5MGMwYzRhZjBiNTAyMzVlNWExMTgyYTI3OTE5NmQ2MCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQmFja2luZ1N0b3JlLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQmFja2luZ1N0b3JlLmgK
QEAgLTI4LDggKzI4LDkgQEAKIAogI2lmIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQogCi0jaW5j
bHVkZSAiSURCQ3Vyc29yLmgiCisjaW5jbHVkZSAiSURCS2V5LmgiCiAjaW5jbHVkZSAiSURCTWV0
YWRhdGEuaCIKKyNpbmNsdWRlICJJbmRleGVkREIuaCIKICNpbmNsdWRlICJMZXZlbERCVHJhbnNh
Y3Rpb24uaCIKICNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50
ZWQuaD4KQEAgLTE0NSwxMCArMTQ2LDEwIEBAIHB1YmxpYzoKICAgICAgICAgSURCQmFja2luZ1N0
b3JlOjpSZWNvcmRJZGVudGlmaWVyIG1fcmVjb3JkSWRlbnRpZmllcjsKICAgICB9OwogCi0gICAg
dmlydHVhbCBQYXNzUmVmUHRyPEN1cnNvcj4gb3Blbk9iamVjdFN0b3JlS2V5Q3Vyc29yKElEQkJh
Y2tpbmdTdG9yZTo6VHJhbnNhY3Rpb24qLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2Jq
ZWN0U3RvcmVJZCwgY29uc3QgSURCS2V5UmFuZ2UqLCBJREJDdXJzb3I6OkRpcmVjdGlvbik7Ci0g
ICAgdmlydHVhbCBQYXNzUmVmUHRyPEN1cnNvcj4gb3Blbk9iamVjdFN0b3JlQ3Vyc29yKElEQkJh
Y2tpbmdTdG9yZTo6VHJhbnNhY3Rpb24qLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2Jq
ZWN0U3RvcmVJZCwgY29uc3QgSURCS2V5UmFuZ2UqLCBJREJDdXJzb3I6OkRpcmVjdGlvbik7Ci0g
ICAgdmlydHVhbCBQYXNzUmVmUHRyPEN1cnNvcj4gb3BlbkluZGV4S2V5Q3Vyc29yKElEQkJhY2tp
bmdTdG9yZTo6VHJhbnNhY3Rpb24qLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0
U3RvcmVJZCwgaW50NjRfdCBpbmRleElkLCBjb25zdCBJREJLZXlSYW5nZSosIElEQkN1cnNvcjo6
RGlyZWN0aW9uKTsKLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8Q3Vyc29yPiBvcGVuSW5kZXhDdXJz
b3IoSURCQmFja2luZ1N0b3JlOjpUcmFuc2FjdGlvbiosIGludDY0X3QgZGF0YWJhc2VJZCwgaW50
NjRfdCBvYmplY3RTdG9yZUlkLCBpbnQ2NF90IGluZGV4SWQsIGNvbnN0IElEQktleVJhbmdlKiwg
SURCQ3Vyc29yOjpEaXJlY3Rpb24pOworICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxDdXJzb3I+IG9w
ZW5PYmplY3RTdG9yZUtleUN1cnNvcihJREJCYWNraW5nU3RvcmU6OlRyYW5zYWN0aW9uKiwgaW50
NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGNvbnN0IElEQktleVJhbmdl
KiwgSW5kZXhlZERCOjpDdXJzb3JEaXJlY3Rpb24pOworICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxD
dXJzb3I+IG9wZW5PYmplY3RTdG9yZUN1cnNvcihJREJCYWNraW5nU3RvcmU6OlRyYW5zYWN0aW9u
KiwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGNvbnN0IElEQktl
eVJhbmdlKiwgSW5kZXhlZERCOjpDdXJzb3JEaXJlY3Rpb24pOworICAgIHZpcnR1YWwgUGFzc1Jl
ZlB0cjxDdXJzb3I+IG9wZW5JbmRleEtleUN1cnNvcihJREJCYWNraW5nU3RvcmU6OlRyYW5zYWN0
aW9uKiwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGludDY0X3Qg
aW5kZXhJZCwgY29uc3QgSURCS2V5UmFuZ2UqLCBJbmRleGVkREI6OkN1cnNvckRpcmVjdGlvbik7
CisgICAgdmlydHVhbCBQYXNzUmVmUHRyPEN1cnNvcj4gb3BlbkluZGV4Q3Vyc29yKElEQkJhY2tp
bmdTdG9yZTo6VHJhbnNhY3Rpb24qLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0
U3RvcmVJZCwgaW50NjRfdCBpbmRleElkLCBjb25zdCBJREJLZXlSYW5nZSosIEluZGV4ZWREQjo6
Q3Vyc29yRGlyZWN0aW9uKTsKIAogICAgIGNsYXNzIFRyYW5zYWN0aW9uIHsKICAgICBwdWJsaWM6
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3Iu
Y3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yLmNwcAppbmRl
eCA0NjhlZGJlYmE5MTExNjlhMDkzYTJlN2QyMzQ5MDg4ZmNjMjgzNmE1Li43YmIwZjUwMGU0N2I0
MjYxMzQwYTkzMjgxNThhZGU5M2UzNDg1NmM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL0lEQkN1cnNvci5jcHAKQEAgLTQzLDcgKzQzLDcgQEAKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCi1QYXNzUmVmUHRyPElEQkN1cnNvcj4gSURCQ3Vyc29yOjpjcmVhdGUoUGFz
c1JlZlB0cjxJREJDdXJzb3JCYWNrZW5kSW50ZXJmYWNlPiBiYWNrZW5kLCBEaXJlY3Rpb24gZGly
ZWN0aW9uLCBJREJSZXF1ZXN0KiByZXF1ZXN0LCBJREJBbnkqIHNvdXJjZSwgSURCVHJhbnNhY3Rp
b24qIHRyYW5zYWN0aW9uKQorUGFzc1JlZlB0cjxJREJDdXJzb3I+IElEQkN1cnNvcjo6Y3JlYXRl
KFBhc3NSZWZQdHI8SURCQ3Vyc29yQmFja2VuZEludGVyZmFjZT4gYmFja2VuZCwgSW5kZXhlZERC
OjpDdXJzb3JEaXJlY3Rpb24gZGlyZWN0aW9uLCBJREJSZXF1ZXN0KiByZXF1ZXN0LCBJREJBbnkq
IHNvdXJjZSwgSURCVHJhbnNhY3Rpb24qIHRyYW5zYWN0aW9uKQogewogICAgIHJldHVybiBhZG9w
dFJlZihuZXcgSURCQ3Vyc29yKGJhY2tlbmQsIGRpcmVjdGlvbiwgcmVxdWVzdCwgc291cmNlLCB0
cmFuc2FjdGlvbikpOwogfQpAQCAtNzMsNyArNzMsNyBAQCBjb25zdCBBdG9taWNTdHJpbmcmIElE
QkN1cnNvcjo6ZGlyZWN0aW9uUHJldlVuaXF1ZSgpCiB9CiAKIAotSURCQ3Vyc29yOjpJREJDdXJz
b3IoUGFzc1JlZlB0cjxJREJDdXJzb3JCYWNrZW5kSW50ZXJmYWNlPiBiYWNrZW5kLCBEaXJlY3Rp
b24gZGlyZWN0aW9uLCBJREJSZXF1ZXN0KiByZXF1ZXN0LCBJREJBbnkqIHNvdXJjZSwgSURCVHJh
bnNhY3Rpb24qIHRyYW5zYWN0aW9uKQorSURCQ3Vyc29yOjpJREJDdXJzb3IoUGFzc1JlZlB0cjxJ
REJDdXJzb3JCYWNrZW5kSW50ZXJmYWNlPiBiYWNrZW5kLCBJbmRleGVkREI6OkN1cnNvckRpcmVj
dGlvbiBkaXJlY3Rpb24sIElEQlJlcXVlc3QqIHJlcXVlc3QsIElEQkFueSogc291cmNlLCBJREJU
cmFuc2FjdGlvbiogdHJhbnNhY3Rpb24pCiAgICAgOiBtX2JhY2tlbmQoYmFja2VuZCkKICAgICAs
IG1fcmVxdWVzdChyZXF1ZXN0KQogICAgICwgbV9kaXJlY3Rpb24oZGlyZWN0aW9uKQpAQCAtMjA2
LDcgKzIwNiw3IEBAIHZvaWQgSURCQ3Vyc29yOjpjb250aW51ZUZ1bmN0aW9uKFBhc3NSZWZQdHI8
SURCS2V5PiBrZXksIEV4Y2VwdGlvbkNvZGUmIGVjKQogCiAgICAgaWYgKGtleSkgewogICAgICAg
ICBBU1NFUlQobV9jdXJyZW50S2V5KTsKLSAgICAgICAgaWYgKG1fZGlyZWN0aW9uID09IElEQkN1
cnNvcjo6TkVYVCB8fCBtX2RpcmVjdGlvbiA9PSBJREJDdXJzb3I6Ok5FWFRfTk9fRFVQTElDQVRF
KSB7CisgICAgICAgIGlmIChtX2RpcmVjdGlvbiA9PSBJbmRleGVkREI6OkN1cnNvck5leHQgfHwg
bV9kaXJlY3Rpb24gPT0gSW5kZXhlZERCOjpDdXJzb3JOZXh0Tm9EdXBsaWNhdGUpIHsKICAgICAg
ICAgICAgIGlmICghbV9jdXJyZW50S2V5LT5pc0xlc3NUaGFuKGtleS5nZXQoKSkpIHsKICAgICAg
ICAgICAgICAgICBlYyA9IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpEYXRhRXJyb3I7CiAgICAgICAg
ICAgICAgICAgcmV0dXJuOwpAQCAtMjk4LDM0ICsyOTgsMzQgQEAgUGFzc1JlZlB0cjxJREJPYmpl
Y3RTdG9yZT4gSURCQ3Vyc29yOjplZmZlY3RpdmVPYmplY3RTdG9yZSgpCiAgICAgcmV0dXJuIGlu
ZGV4LT5vYmplY3RTdG9yZSgpOwogfQogCi1JREJDdXJzb3I6OkRpcmVjdGlvbiBJREJDdXJzb3I6
OnN0cmluZ1RvRGlyZWN0aW9uKGNvbnN0IFN0cmluZyYgZGlyZWN0aW9uU3RyaW5nLCBTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBFeGNlcHRpb25Db2RlJiBlYykKK0luZGV4ZWREQjo6
Q3Vyc29yRGlyZWN0aW9uIElEQkN1cnNvcjo6c3RyaW5nVG9EaXJlY3Rpb24oY29uc3QgU3RyaW5n
JiBkaXJlY3Rpb25TdHJpbmcsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIEV4Y2Vw
dGlvbkNvZGUmIGVjKQogewogICAgIGlmIChkaXJlY3Rpb25TdHJpbmcgPT0gSURCQ3Vyc29yOjpk
aXJlY3Rpb25OZXh0KCkpCi0gICAgICAgIHJldHVybiBJREJDdXJzb3I6Ok5FWFQ7CisgICAgICAg
IHJldHVybiBJbmRleGVkREI6OkN1cnNvck5leHQ7CiAgICAgaWYgKGRpcmVjdGlvblN0cmluZyA9
PSBJREJDdXJzb3I6OmRpcmVjdGlvbk5leHRVbmlxdWUoKSkKLSAgICAgICAgcmV0dXJuIElEQkN1
cnNvcjo6TkVYVF9OT19EVVBMSUNBVEU7CisgICAgICAgIHJldHVybiBJbmRleGVkREI6OkN1cnNv
ck5leHROb0R1cGxpY2F0ZTsKICAgICBpZiAoZGlyZWN0aW9uU3RyaW5nID09IElEQkN1cnNvcjo6
ZGlyZWN0aW9uUHJldigpKQotICAgICAgICByZXR1cm4gSURCQ3Vyc29yOjpQUkVWOworICAgICAg
ICByZXR1cm4gSW5kZXhlZERCOjpDdXJzb3JQcmV2OwogICAgIGlmIChkaXJlY3Rpb25TdHJpbmcg
PT0gSURCQ3Vyc29yOjpkaXJlY3Rpb25QcmV2VW5pcXVlKCkpCi0gICAgICAgIHJldHVybiBJREJD
dXJzb3I6OlBSRVZfTk9fRFVQTElDQVRFOworICAgICAgICByZXR1cm4gSW5kZXhlZERCOjpDdXJz
b3JQcmV2Tm9EdXBsaWNhdGU7CiAKICAgICBlYyA9IFR5cGVFcnJvcjsKLSAgICByZXR1cm4gSURC
Q3Vyc29yOjpORVhUOworICAgIHJldHVybiBJbmRleGVkREI6OkN1cnNvck5leHQ7CiB9CiAKIGNv
bnN0IEF0b21pY1N0cmluZyYgSURCQ3Vyc29yOjpkaXJlY3Rpb25Ub1N0cmluZyh1bnNpZ25lZCBz
aG9ydCBkaXJlY3Rpb24pCiB7CiAgICAgc3dpdGNoIChkaXJlY3Rpb24pIHsKLSAgICBjYXNlIElE
QkN1cnNvcjo6TkVYVDoKKyAgICBjYXNlIEluZGV4ZWREQjo6Q3Vyc29yTmV4dDoKICAgICAgICAg
cmV0dXJuIElEQkN1cnNvcjo6ZGlyZWN0aW9uTmV4dCgpOwogCi0gICAgY2FzZSBJREJDdXJzb3I6
Ok5FWFRfTk9fRFVQTElDQVRFOgorICAgIGNhc2UgSW5kZXhlZERCOjpDdXJzb3JOZXh0Tm9EdXBs
aWNhdGU6CiAgICAgICAgIHJldHVybiBJREJDdXJzb3I6OmRpcmVjdGlvbk5leHRVbmlxdWUoKTsK
IAotICAgIGNhc2UgSURCQ3Vyc29yOjpQUkVWOgorICAgIGNhc2UgSW5kZXhlZERCOjpDdXJzb3JQ
cmV2OgogICAgICAgICByZXR1cm4gSURCQ3Vyc29yOjpkaXJlY3Rpb25QcmV2KCk7CiAKLSAgICBj
YXNlIElEQkN1cnNvcjo6UFJFVl9OT19EVVBMSUNBVEU6CisgICAgY2FzZSBJbmRleGVkREI6OkN1
cnNvclByZXZOb0R1cGxpY2F0ZToKICAgICAgICAgcmV0dXJuIElEQkN1cnNvcjo6ZGlyZWN0aW9u
UHJldlVuaXF1ZSgpOwogCiAgICAgZGVmYXVsdDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvSURCQ3Vyc29yLmgKaW5kZXggMWM4MzE2NDAyNmRhNDRiM2YwOGVmOTNmZjQyZTNh
YjQ1ZmZmNTkyYy4uMThkMjAwZWE2MTA2Nzc5N2VhNGM5ZWRjNTE2MWQxNWRiNGIzZGFlNyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yLmgKQEAgLTMwLDYg
KzMwLDcgQEAKIAogI2luY2x1ZGUgIklEQktleS5oIgogI2luY2x1ZGUgIklEQlRyYW5zYWN0aW9u
LmgiCisjaW5jbHVkZSAiSW5kZXhlZERCLmgiCiAjaW5jbHVkZSAiU2NyaXB0VmFsdWUuaCIKICNp
bmNsdWRlICJTY3JpcHRXcmFwcGFibGUuaCIKICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgpA
QCAtNDksMjIgKzUwLDE1IEBAIHR5cGVkZWYgaW50IEV4Y2VwdGlvbkNvZGU7CiAKIGNsYXNzIElE
QkN1cnNvciA6IHB1YmxpYyBTY3JpcHRXcmFwcGFibGUsIHB1YmxpYyBSZWZDb3VudGVkPElEQkN1
cnNvcj4gewogcHVibGljOgotICAgIGVudW0gRGlyZWN0aW9uIHsKLSAgICAgICAgTkVYVCA9IDAs
Ci0gICAgICAgIE5FWFRfTk9fRFVQTElDQVRFID0gMSwKLSAgICAgICAgUFJFViA9IDIsCi0gICAg
ICAgIFBSRVZfTk9fRFVQTElDQVRFID0gMywKLSAgICB9OwotCiAgICAgc3RhdGljIGNvbnN0IEF0
b21pY1N0cmluZyYgZGlyZWN0aW9uTmV4dCgpOwogICAgIHN0YXRpYyBjb25zdCBBdG9taWNTdHJp
bmcmIGRpcmVjdGlvbk5leHRVbmlxdWUoKTsKICAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5n
JiBkaXJlY3Rpb25QcmV2KCk7CiAgICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYgZGlyZWN0
aW9uUHJldlVuaXF1ZSgpOwogCi0gICAgc3RhdGljIElEQkN1cnNvcjo6RGlyZWN0aW9uIHN0cmlu
Z1RvRGlyZWN0aW9uKGNvbnN0IFN0cmluZyYgbW9kZVN0cmluZywgU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCosIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICBzdGF0aWMgSW5kZXhlZERCOjpDdXJzb3JEaXJl
Y3Rpb24gc3RyaW5nVG9EaXJlY3Rpb24oY29uc3QgU3RyaW5nJiBtb2RlU3RyaW5nLCBTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiwgRXhjZXB0aW9uQ29kZSYpOwogICAgIHN0YXRpYyBjb25zdCBBdG9t
aWNTdHJpbmcmIGRpcmVjdGlvblRvU3RyaW5nKHVuc2lnbmVkIHNob3J0IG1vZGUpOwogCi0gICAg
c3RhdGljIFBhc3NSZWZQdHI8SURCQ3Vyc29yPiBjcmVhdGUoUGFzc1JlZlB0cjxJREJDdXJzb3JC
YWNrZW5kSW50ZXJmYWNlPiwgRGlyZWN0aW9uLCBJREJSZXF1ZXN0KiwgSURCQW55KiBzb3VyY2Us
IElEQlRyYW5zYWN0aW9uKik7CisgICAgc3RhdGljIFBhc3NSZWZQdHI8SURCQ3Vyc29yPiBjcmVh
dGUoUGFzc1JlZlB0cjxJREJDdXJzb3JCYWNrZW5kSW50ZXJmYWNlPiwgSW5kZXhlZERCOjpDdXJz
b3JEaXJlY3Rpb24sIElEQlJlcXVlc3QqLCBJREJBbnkqIHNvdXJjZSwgSURCVHJhbnNhY3Rpb24q
KTsKICAgICB2aXJ0dWFsIH5JREJDdXJzb3IoKTsKIAogICAgIC8vIEltcGxlbWVudCB0aGUgSURM
CkBAIC04OSw3ICs4Myw3IEBAIHB1YmxpYzoKICAgICBQYXNzUmVmUHRyPElEQktleT4gaWRiUHJp
bWFyeUtleSgpIHsgcmV0dXJuIG1fY3VycmVudFByaW1hcnlLZXk7IH0KIAogcHJvdGVjdGVkOgot
ICAgIElEQkN1cnNvcihQYXNzUmVmUHRyPElEQkN1cnNvckJhY2tlbmRJbnRlcmZhY2U+LCBEaXJl
Y3Rpb24sIElEQlJlcXVlc3QqLCBJREJBbnkqIHNvdXJjZSwgSURCVHJhbnNhY3Rpb24qKTsKKyAg
ICBJREJDdXJzb3IoUGFzc1JlZlB0cjxJREJDdXJzb3JCYWNrZW5kSW50ZXJmYWNlPiwgSW5kZXhl
ZERCOjpDdXJzb3JEaXJlY3Rpb24sIElEQlJlcXVlc3QqLCBJREJBbnkqIHNvdXJjZSwgSURCVHJh
bnNhY3Rpb24qKTsKICAgICB2aXJ0dWFsIGJvb2wgaXNLZXlDdXJzb3IoKSBjb25zdCB7IHJldHVy
biB0cnVlOyB9CiAKIHByaXZhdGU6CkBAIC05Nyw3ICs5MSw3IEBAIHByaXZhdGU6CiAKICAgICBS
ZWZQdHI8SURCQ3Vyc29yQmFja2VuZEludGVyZmFjZT4gbV9iYWNrZW5kOwogICAgIFJlZlB0cjxJ
REJSZXF1ZXN0PiBtX3JlcXVlc3Q7Ci0gICAgY29uc3QgRGlyZWN0aW9uIG1fZGlyZWN0aW9uOwor
ICAgIGNvbnN0IEluZGV4ZWREQjo6Q3Vyc29yRGlyZWN0aW9uIG1fZGlyZWN0aW9uOwogICAgIFJl
ZlB0cjxJREJBbnk+IG1fc291cmNlOwogICAgIFJlZlB0cjxJREJUcmFuc2FjdGlvbj4gbV90cmFu
c2FjdGlvbjsKICAgICBJREJUcmFuc2FjdGlvbjo6T3BlbkN1cnNvck5vdGlmaWVyIG1fdHJhbnNh
Y3Rpb25Ob3RpZmllcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL0lEQkN1cnNvckJhY2tlbmRJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL0lEQkN1cnNvckJhY2tlbmRJbXBsLmNwcAppbmRleCAzMzJkOTAxNDI1YWIxYmFhNGE0
NGQ4ODljMWQ1ZDIxMmQ2MjgwZWQ4Li4xMzYwZmI5MDIwNWVhMTk4Zjc4YzAzMDdmOTZjNjI5ZTk4
MmZlMzU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJD
dXJzb3JCYWNrZW5kSW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvSURCQ3Vyc29yQmFja2VuZEltcGwuY3BwCkBAIC0zNCw3ICszNCw2IEBACiAjaW5jbHVkZSAi
SURCRGF0YWJhc2VFcnJvci5oIgogI2luY2x1ZGUgIklEQkRhdGFiYXNlRXhjZXB0aW9uLmgiCiAj
aW5jbHVkZSAiSURCS2V5UmFuZ2UuaCIKLSNpbmNsdWRlICJJREJSZXF1ZXN0LmgiCiAjaW5jbHVk
ZSAiSURCVHJhY2luZy5oIgogI2luY2x1ZGUgIklEQlRyYW5zYWN0aW9uQmFja2VuZEltcGwuaCIK
ICNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKQEAgLTEwMSw3ICsxMDAsNyBAQCBwcml2YXRlOgog
ICAgIFJlZlB0cjxJREJDYWxsYmFja3M+IG1fY2FsbGJhY2tzOwogfTsKIAotSURCQ3Vyc29yQmFj
a2VuZEltcGw6OklEQkN1cnNvckJhY2tlbmRJbXBsKFBhc3NSZWZQdHI8SURCQmFja2luZ1N0b3Jl
OjpDdXJzb3I+IGN1cnNvciwgQ3Vyc29yVHlwZSBjdXJzb3JUeXBlLCBJREJEYXRhYmFzZUJhY2tl
bmRJbnRlcmZhY2U6OlRhc2tUeXBlIHRhc2tUeXBlLCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBs
KiB0cmFuc2FjdGlvbiwgaW50NjRfdCBvYmplY3RTdG9yZUlkKQorSURCQ3Vyc29yQmFja2VuZElt
cGw6OklEQkN1cnNvckJhY2tlbmRJbXBsKFBhc3NSZWZQdHI8SURCQmFja2luZ1N0b3JlOjpDdXJz
b3I+IGN1cnNvciwgSW5kZXhlZERCOjpDdXJzb3JUeXBlIGN1cnNvclR5cGUsIElEQkRhdGFiYXNl
QmFja2VuZEludGVyZmFjZTo6VGFza1R5cGUgdGFza1R5cGUsIElEQlRyYW5zYWN0aW9uQmFja2Vu
ZEltcGwqIHRyYW5zYWN0aW9uLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQpCiAgICAgOiBtX3Rhc2tU
eXBlKHRhc2tUeXBlKQogICAgICwgbV9jdXJzb3JUeXBlKGN1cnNvclR5cGUpCiAgICAgLCBtX2Rh
dGFiYXNlKHRyYW5zYWN0aW9uLT5kYXRhYmFzZSgpKQpAQCAtMTYwLDcgKzE1OSw3IEBAIHZvaWQg
SURCQ3Vyc29yQmFja2VuZEltcGw6OkN1cnNvckl0ZXJhdGlvbk9wZXJhdGlvbjo6cGVyZm9ybShJ
REJUcmFuc2FjdGlvbkJhY2tlCiB2b2lkIElEQkN1cnNvckJhY2tlbmRJbXBsOjpkZWxldGVGdW5j
dGlvbihQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gcHJwQ2FsbGJhY2tzLCBFeGNlcHRpb25Db2Rl
JikKIHsKICAgICBJREJfVFJBQ0UoIklEQkN1cnNvckJhY2tlbmRJbXBsOjpkZWxldGUiKTsKLSAg
ICBBU1NFUlQobV90cmFuc2FjdGlvbi0+bW9kZSgpICE9IElEQlRyYW5zYWN0aW9uOjpSRUFEX09O
TFkpOworICAgIEFTU0VSVChtX3RyYW5zYWN0aW9uLT5tb2RlKCkgIT0gSW5kZXhlZERCOjpUcmFu
c2FjdGlvblJlYWRPbmx5KTsKICAgICBSZWZQdHI8SURCS2V5UmFuZ2U+IGtleVJhbmdlID0gSURC
S2V5UmFuZ2U6OmNyZWF0ZShtX2N1cnNvci0+cHJpbWFyeUtleSgpKTsKICAgICBtX2RhdGFiYXNl
LT5kZWxldGVSYW5nZShtX3RyYW5zYWN0aW9uLT5pZCgpLCBtX29iamVjdFN0b3JlSWQsIGtleVJh
bmdlLnJlbGVhc2UoKSwgcHJwQ2FsbGJhY2tzKTsKIH0KQEAgLTE5NiwxMCArMTk1LDEwIEBAIHZv
aWQgSURCQ3Vyc29yQmFja2VuZEltcGw6OkN1cnNvclByZWZldGNoSXRlcmF0aW9uT3BlcmF0aW9u
OjpwZXJmb3JtKElEQlRyYW5zYWN0CiAgICAgICAgIGZvdW5kUHJpbWFyeUtleXMuYXBwZW5kKG1f
Y3Vyc29yLT5tX2N1cnNvci0+cHJpbWFyeUtleSgpKTsKIAogICAgICAgICBzd2l0Y2ggKG1fY3Vy
c29yLT5tX2N1cnNvclR5cGUpIHsKLSAgICAgICAgY2FzZSBLZXlPbmx5OgorICAgICAgICBjYXNl
IEluZGV4ZWREQjo6Q3Vyc29yS2V5T25seToKICAgICAgICAgICAgIGZvdW5kVmFsdWVzLmFwcGVu
ZChTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpKTsKICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBj
YXNlIEtleUFuZFZhbHVlOgorICAgICAgICBjYXNlIEluZGV4ZWREQjo6Q3Vyc29yS2V5QW5kVmFs
dWU6CiAgICAgICAgICAgICBzaXplRXN0aW1hdGUgKz0gbV9jdXJzb3ItPm1fY3Vyc29yLT52YWx1
ZSgpLT5zaXplKCk7CiAgICAgICAgICAgICBmb3VuZFZhbHVlcy5hcHBlbmQobV9jdXJzb3ItPm1f
Y3Vyc29yLT52YWx1ZSgpKTsKICAgICAgICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yQmFja2VuZEltcGwuaCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvckJhY2tlbmRJbXBsLmgKaW5kZXgg
Njk5ZTJmNThkNmQxNzYyMWY0Y2ExMjRmZDJlYzhiMGIxMzMxMmE0OC4uNTVlMjZiYjdkNDQ4ZmQ0
YjFlMTY1YTVjYmQzNmU4MzhjYTJlMzU0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yQmFja2VuZEltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3JCYWNrZW5kSW1wbC5oCkBAIC0zMCw3ICszMCw2
IEBACiAjaWYgRU5BQkxFKElOREVYRURfREFUQUJBU0UpCiAKICNpbmNsdWRlICJJREJCYWNraW5n
U3RvcmUuaCIKLSNpbmNsdWRlICJJREJDdXJzb3IuaCIKICNpbmNsdWRlICJJREJDdXJzb3JCYWNr
ZW5kSW50ZXJmYWNlLmgiCiAjaW5jbHVkZSAiSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbC5oIgog
I2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgpAQCAtNDUsMTEgKzQ0LDExIEBAIGNsYXNzIElEQktl
eVJhbmdlOwogCiBjbGFzcyBJREJDdXJzb3JCYWNrZW5kSW1wbCA6IHB1YmxpYyBJREJDdXJzb3JC
YWNrZW5kSW50ZXJmYWNlIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxJREJDdXJz
b3JCYWNrZW5kSW1wbD4gY3JlYXRlKFBhc3NSZWZQdHI8SURCQmFja2luZ1N0b3JlOjpDdXJzb3I+
IGN1cnNvciwgQ3Vyc29yVHlwZSBjdXJzb3JUeXBlLCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBs
KiB0cmFuc2FjdGlvbiwgaW50NjRfdCBvYmplY3RTdG9yZUlkKQorICAgIHN0YXRpYyBQYXNzUmVm
UHRyPElEQkN1cnNvckJhY2tlbmRJbXBsPiBjcmVhdGUoUGFzc1JlZlB0cjxJREJCYWNraW5nU3Rv
cmU6OkN1cnNvcj4gY3Vyc29yLCBJbmRleGVkREI6OkN1cnNvclR5cGUgY3Vyc29yVHlwZSwgSURC
VHJhbnNhY3Rpb25CYWNrZW5kSW1wbCogdHJhbnNhY3Rpb24sIGludDY0X3Qgb2JqZWN0U3RvcmVJ
ZCkKICAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgSURCQ3Vyc29yQmFja2VuZElt
cGwoY3Vyc29yLCBjdXJzb3JUeXBlLCBJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2U6Ok5vcm1h
bFRhc2ssIHRyYW5zYWN0aW9uLCBvYmplY3RTdG9yZUlkKSk7CiAgICAgfQotICAgIHN0YXRpYyBQ
YXNzUmVmUHRyPElEQkN1cnNvckJhY2tlbmRJbXBsPiBjcmVhdGUoUGFzc1JlZlB0cjxJREJCYWNr
aW5nU3RvcmU6OkN1cnNvcj4gY3Vyc29yLCBDdXJzb3JUeXBlIGN1cnNvclR5cGUsIElEQkRhdGFi
YXNlQmFja2VuZEludGVyZmFjZTo6VGFza1R5cGUgdGFza1R5cGUsIElEQlRyYW5zYWN0aW9uQmFj
a2VuZEltcGwqIHRyYW5zYWN0aW9uLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQpCisgICAgc3RhdGlj
IFBhc3NSZWZQdHI8SURCQ3Vyc29yQmFja2VuZEltcGw+IGNyZWF0ZShQYXNzUmVmUHRyPElEQkJh
Y2tpbmdTdG9yZTo6Q3Vyc29yPiBjdXJzb3IsIEluZGV4ZWREQjo6Q3Vyc29yVHlwZSBjdXJzb3JU
eXBlLCBJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2U6OlRhc2tUeXBlIHRhc2tUeXBlLCBJREJU
cmFuc2FjdGlvbkJhY2tlbmRJbXBsKiB0cmFuc2FjdGlvbiwgaW50NjRfdCBvYmplY3RTdG9yZUlk
KQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBJREJDdXJzb3JCYWNrZW5kSW1w
bChjdXJzb3IsIGN1cnNvclR5cGUsIHRhc2tUeXBlLCB0cmFuc2FjdGlvbiwgb2JqZWN0U3RvcmVJ
ZCkpOwogICAgIH0KQEAgLTY1LDE4ICs2NCwxOCBAQCBwdWJsaWM6CiAKICAgICBQYXNzUmVmUHRy
PElEQktleT4ga2V5KCkgY29uc3QgeyByZXR1cm4gbV9jdXJzb3ItPmtleSgpOyB9CiAgICAgUGFz
c1JlZlB0cjxJREJLZXk+IHByaW1hcnlLZXkoKSBjb25zdCB7IHJldHVybiBtX2N1cnNvci0+cHJp
bWFyeUtleSgpOyB9Ci0gICAgUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+IHZhbHVlKCkgY29uc3Qg
eyByZXR1cm4gKG1fY3Vyc29yVHlwZSA9PSBLZXlPbmx5KSA/IDAgOiBtX2N1cnNvci0+dmFsdWUo
KTsgfQorICAgIFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiB2YWx1ZSgpIGNvbnN0IHsgcmV0dXJu
IChtX2N1cnNvclR5cGUgPT0gSW5kZXhlZERCOjpDdXJzb3JLZXlPbmx5KSA/IDAgOiBtX2N1cnNv
ci0+dmFsdWUoKTsgfQogICAgIHZvaWQgY2xvc2UoKTsKIAogcHJpdmF0ZToKLSAgICBJREJDdXJz
b3JCYWNrZW5kSW1wbChQYXNzUmVmUHRyPElEQkJhY2tpbmdTdG9yZTo6Q3Vyc29yPiwgQ3Vyc29y
VHlwZSwgSURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlOjpUYXNrVHlwZSwgSURCVHJhbnNhY3Rp
b25CYWNrZW5kSW1wbCosIGludDY0X3Qgb2JqZWN0U3RvcmVJZCk7CisgICAgSURCQ3Vyc29yQmFj
a2VuZEltcGwoUGFzc1JlZlB0cjxJREJCYWNraW5nU3RvcmU6OkN1cnNvcj4sIEluZGV4ZWREQjo6
Q3Vyc29yVHlwZSwgSURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlOjpUYXNrVHlwZSwgSURCVHJh
bnNhY3Rpb25CYWNrZW5kSW1wbCosIGludDY0X3Qgb2JqZWN0U3RvcmVJZCk7CiAKICAgICBjbGFz
cyBDdXJzb3JJdGVyYXRpb25PcGVyYXRpb247CiAgICAgY2xhc3MgQ3Vyc29yQWR2YW5jZU9wZXJh
dGlvbjsKICAgICBjbGFzcyBDdXJzb3JQcmVmZXRjaEl0ZXJhdGlvbk9wZXJhdGlvbjsKIAogICAg
IElEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZTo6VGFza1R5cGUgbV90YXNrVHlwZTsKLSAgICBD
dXJzb3JUeXBlIG1fY3Vyc29yVHlwZTsKKyAgICBJbmRleGVkREI6OkN1cnNvclR5cGUgbV9jdXJz
b3JUeXBlOwogICAgIGNvbnN0IFJlZlB0cjxJREJEYXRhYmFzZUJhY2tlbmRJbXBsPiBtX2RhdGFi
YXNlOwogICAgIGNvbnN0IFJlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsPiBtX3RyYW5z
YWN0aW9uOwogICAgIGNvbnN0IGludDY0X3QgbV9vYmplY3RTdG9yZUlkOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yQmFja2VuZEludGVyZmFj
ZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yQmFja2VuZElu
dGVyZmFjZS5oCmluZGV4IGFlYjI5NzZiMDg2MmE3OWFkNDQzODEzZTllNzZjZmEyNmUzOTBmMTYu
Ljk2M2YzMmIwMGFiMzA5M2E5Y2ZiOGJlY2FhMmVjODUxYmVjODhhYzYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvckJhY2tlbmRJbnRlcmZhY2Uu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3JCYWNrZW5k
SW50ZXJmYWNlLmgKQEAgLTMzLDcgKzMzLDYgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1j
bGFzcyBJREJBbnk7CiBjbGFzcyBJREJDYWxsYmFja3M7CiBjbGFzcyBJREJLZXk7CiBjbGFzcyBJ
REJSZXF1ZXN0OwpAQCAtNDQsMTEgKzQzLDYgQEAgY2xhc3MgSURCQ3Vyc29yQmFja2VuZEludGVy
ZmFjZSA6IHB1YmxpYyBSZWZDb3VudGVkPElEQkN1cnNvckJhY2tlbmRJbnRlcmZhY2U+IHsKIHB1
YmxpYzoKICAgICB2aXJ0dWFsIH5JREJDdXJzb3JCYWNrZW5kSW50ZXJmYWNlKCkge30KIAotICAg
IGVudW0gQ3Vyc29yVHlwZSB7Ci0gICAgICAgIEtleUFuZFZhbHVlID0gMCwKLSAgICAgICAgS2V5
T25seQotICAgIH07Ci0KICAgICB2aXJ0dWFsIHZvaWQgYWR2YW5jZSh1bnNpZ25lZCBsb25nIGNv
dW50LCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4sIEV4Y2VwdGlvbkNvZGUmKSA9IDA7CiAgICAg
dmlydHVhbCB2b2lkIGNvbnRpbnVlRnVuY3Rpb24oUGFzc1JlZlB0cjxJREJLZXk+IGtleSwgUGFz
c1JlZlB0cjxJREJDYWxsYmFja3M+LCBFeGNlcHRpb25Db2RlJikgPSAwOwogICAgIHZpcnR1YWwg
dm9pZCBkZWxldGVGdW5jdGlvbihQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4sIEV4Y2VwdGlvbkNv
ZGUmKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9J
REJDdXJzb3JXaXRoVmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
SURCQ3Vyc29yV2l0aFZhbHVlLmNwcAppbmRleCBiOTBiYTNkOWI1MjY1MzE3MDkyYmJlNTU4MTc1
MGRjMDI3ODVkYWFhLi40MDM2MTExMDQ5ZWI1ZDkyOWFkYjIyN2M2ZmUzYTNjYmVjMzZmMTg4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3JXaXRo
VmFsdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNv
cldpdGhWYWx1ZS5jcHAKQEAgLTMzLDcgKzMzLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
Ci1QYXNzUmVmUHRyPElEQkN1cnNvcldpdGhWYWx1ZT4gSURCQ3Vyc29yV2l0aFZhbHVlOjpjcmVh
dGUoUGFzc1JlZlB0cjxJREJDdXJzb3JCYWNrZW5kSW50ZXJmYWNlPiBiYWNrZW5kLCBEaXJlY3Rp
b24gZGlyZWN0aW9uLCBJREJSZXF1ZXN0KiByZXF1ZXN0LCBJREJBbnkqIHNvdXJjZSwgSURCVHJh
bnNhY3Rpb24qIHRyYW5zYWN0aW9uKQorUGFzc1JlZlB0cjxJREJDdXJzb3JXaXRoVmFsdWU+IElE
QkN1cnNvcldpdGhWYWx1ZTo6Y3JlYXRlKFBhc3NSZWZQdHI8SURCQ3Vyc29yQmFja2VuZEludGVy
ZmFjZT4gYmFja2VuZCwgSW5kZXhlZERCOjpDdXJzb3JEaXJlY3Rpb24gZGlyZWN0aW9uLCBJREJS
ZXF1ZXN0KiByZXF1ZXN0LCBJREJBbnkqIHNvdXJjZSwgSURCVHJhbnNhY3Rpb24qIHRyYW5zYWN0
aW9uKQogewogICAgIHJldHVybiBhZG9wdFJlZihuZXcgSURCQ3Vyc29yV2l0aFZhbHVlKGJhY2tl
bmQsIGRpcmVjdGlvbiwgcmVxdWVzdCwgc291cmNlLCB0cmFuc2FjdGlvbikpOwogfQpAQCAtNDQs
NyArNDQsNyBAQCBQYXNzUmVmUHRyPElEQkN1cnNvcldpdGhWYWx1ZT4gSURCQ3Vyc29yV2l0aFZh
bHVlOjpmcm9tQ3Vyc29yKFBhc3NSZWZQdHI8SURCQ3VycwogICAgIHJldHVybiBjdXJzb3JXaXRo
VmFsdWUucmVsZWFzZSgpOwogfQogCi1JREJDdXJzb3JXaXRoVmFsdWU6OklEQkN1cnNvcldpdGhW
YWx1ZShQYXNzUmVmUHRyPElEQkN1cnNvckJhY2tlbmRJbnRlcmZhY2U+IGJhY2tlbmQsIERpcmVj
dGlvbiBkaXJlY3Rpb24sIElEQlJlcXVlc3QqIHJlcXVlc3QsIElEQkFueSogc291cmNlLCBJREJU
cmFuc2FjdGlvbiogdHJhbnNhY3Rpb24pCitJREJDdXJzb3JXaXRoVmFsdWU6OklEQkN1cnNvcldp
dGhWYWx1ZShQYXNzUmVmUHRyPElEQkN1cnNvckJhY2tlbmRJbnRlcmZhY2U+IGJhY2tlbmQsIElu
ZGV4ZWREQjo6Q3Vyc29yRGlyZWN0aW9uIGRpcmVjdGlvbiwgSURCUmVxdWVzdCogcmVxdWVzdCwg
SURCQW55KiBzb3VyY2UsIElEQlRyYW5zYWN0aW9uKiB0cmFuc2FjdGlvbikKICAgICA6IElEQkN1
cnNvcihiYWNrZW5kLCBkaXJlY3Rpb24sIHJlcXVlc3QsIHNvdXJjZSwgdHJhbnNhY3Rpb24pCiB7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJz
b3JXaXRoVmFsdWUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNv
cldpdGhWYWx1ZS5oCmluZGV4IGNiYjg1MGExY2QwMmYwYWEyMDk1MmYyY2ZkYjg4OGZjOGMwMjg2
NTAuLjE1ODIzYTA2MjRhMzFkZTlmMmMyZGQ0M2RjMGM5MzNmNGM3YzYwNGUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvcldpdGhWYWx1ZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvcldpdGhWYWx1ZS5o
CkBAIC0zNCw3ICszNCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgSURCQ3Vyc29y
V2l0aFZhbHVlIDogcHVibGljIElEQkN1cnNvciB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NS
ZWZQdHI8SURCQ3Vyc29yV2l0aFZhbHVlPiBjcmVhdGUoUGFzc1JlZlB0cjxJREJDdXJzb3JCYWNr
ZW5kSW50ZXJmYWNlPiwgRGlyZWN0aW9uLCBJREJSZXF1ZXN0KiwgSURCQW55KiBzb3VyY2UsIElE
QlRyYW5zYWN0aW9uKik7CisgICAgc3RhdGljIFBhc3NSZWZQdHI8SURCQ3Vyc29yV2l0aFZhbHVl
PiBjcmVhdGUoUGFzc1JlZlB0cjxJREJDdXJzb3JCYWNrZW5kSW50ZXJmYWNlPiwgSW5kZXhlZERC
OjpDdXJzb3JEaXJlY3Rpb24sIElEQlJlcXVlc3QqLCBJREJBbnkqIHNvdXJjZSwgSURCVHJhbnNh
Y3Rpb24qKTsKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxJREJDdXJzb3JXaXRoVmFsdWU+IGZyb21D
dXJzb3IoUGFzc1JlZlB0cjxJREJDdXJzb3I+KTsKICAgICB2aXJ0dWFsIH5JREJDdXJzb3JXaXRo
VmFsdWUoKTsKIApAQCAtNDUsNyArNDUsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgdmlydHVhbCBib29s
IGlzS2V5Q3Vyc29yKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gZmFsc2U7IH0KIAogcHJpdmF0
ZToKLSAgICBJREJDdXJzb3JXaXRoVmFsdWUoUGFzc1JlZlB0cjxJREJDdXJzb3JCYWNrZW5kSW50
ZXJmYWNlPiwgRGlyZWN0aW9uLCBJREJSZXF1ZXN0KiwgSURCQW55KiBzb3VyY2UsIElEQlRyYW5z
YWN0aW9uKik7CisgICAgSURCQ3Vyc29yV2l0aFZhbHVlKFBhc3NSZWZQdHI8SURCQ3Vyc29yQmFj
a2VuZEludGVyZmFjZT4sIEluZGV4ZWREQjo6Q3Vyc29yRGlyZWN0aW9uLCBJREJSZXF1ZXN0Kiwg
SURCQW55KiBzb3VyY2UsIElEQlRyYW5zYWN0aW9uKik7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJE
YXRhYmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFz
ZS5jcHAKaW5kZXggYzk5YThkNWM4NGZlMTUyMThmYjA3ZTg4MjMyNDEwYjAxZTkzNzFkMy4uOWNl
NjY1YmI3YTdjNmRkN2FmOTg0Yjc0NjgxNWIxODBiNDQ2NGY5YSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2UuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlLmNwcApAQCAtMjI3LDcgKzIyNyw3
IEBAIFBhc3NSZWZQdHI8SURCVHJhbnNhY3Rpb24+IElEQkRhdGFiYXNlOjp0cmFuc2FjdGlvbihT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KIAot
ICAgIElEQlRyYW5zYWN0aW9uOjpNb2RlIG1vZGUgPSBJREJUcmFuc2FjdGlvbjo6c3RyaW5nVG9N
b2RlKG1vZGVTdHJpbmcsIGNvbnRleHQsIGVjKTsKKyAgICBJbmRleGVkREI6OlRyYW5zYWN0aW9u
TW9kZSBtb2RlID0gSURCVHJhbnNhY3Rpb246OnN0cmluZ1RvTW9kZShtb2RlU3RyaW5nLCBjb250
ZXh0LCBlYyk7CiAgICAgaWYgKGVjKQogICAgICAgICByZXR1cm4gMDsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2UuaCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlLmgKaW5kZXggZGUxM2I2N2ZiZThm
MGQ4NmNhOTU0NmEyYjAzMjMwMDEyYTIyMjllMC4uOGRkNTJjOTYwMDVmMmMwMWYzMGNlNzdlMTUw
OTkwODI0OTI4NTNlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvSURCRGF0YWJhc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9J
REJEYXRhYmFzZS5oCkBAIC0zMSwxMSArMzEsMTEgQEAKICNpbmNsdWRlICJEaWN0aW9uYXJ5Lmgi
CiAjaW5jbHVkZSAiRXZlbnQuaCIKICNpbmNsdWRlICJFdmVudFRhcmdldC5oIgotI2luY2x1ZGUg
IklEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZS5oIgogI2luY2x1ZGUgIklEQkRhdGFiYXNlQ2Fs
bGJhY2tzLmgiCiAjaW5jbHVkZSAiSURCTWV0YWRhdGEuaCIKICNpbmNsdWRlICJJREJPYmplY3RT
dG9yZS5oIgogI2luY2x1ZGUgIklEQlRyYW5zYWN0aW9uLmgiCisjaW5jbHVkZSAiSW5kZXhlZERC
LmgiCiAjaW5jbHVkZSAiU2NyaXB0V3JhcHBhYmxlLmgiCiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQ
dHIuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VCYWNrZW5kSW1wbC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmRJbXBsLmNwcApp
bmRleCA5ODBkMTRmNGZlNjU5NjZlMjA1ZjE2NDcyMDc2ZGI1ODg3MDBkYTY3Li4yYzMwMzIwYTU0
ZjM0Y2MyMzI4NzFjZGNmN2IzY2RhYjFjNDdjYzY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmRJbXBsLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmRJbXBsLmNwcApA
QCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUgIklEQkN1cnNvckJhY2tlbmRJbXBsLmgiCiAjaW5j
bHVkZSAiSURCRGF0YWJhc2VFeGNlcHRpb24uaCIKICNpbmNsdWRlICJJREJGYWN0b3J5QmFja2Vu
ZEltcGwuaCIKKyNpbmNsdWRlICJJREJLZXlSYW5nZS5oIgogI2luY2x1ZGUgIklEQk9iamVjdFN0
b3JlQmFja2VuZEltcGwuaCIKICNpbmNsdWRlICJJREJUcmFjaW5nLmgiCiAjaW5jbHVkZSAiSURC
VHJhbnNhY3Rpb25CYWNrZW5kSW1wbC5oIgpAQCAtMjM4LDEzICsyMzksMTMgQEAgcHJpdmF0ZToK
IAogY2xhc3MgR2V0T3BlcmF0aW9uIDogcHVibGljIElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGw6
Ok9wZXJhdGlvbiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NPd25QdHI8SURCVHJhbnNhY3Rp
b25CYWNrZW5kSW1wbDo6T3BlcmF0aW9uPiBjcmVhdGUoUGFzc1JlZlB0cjxJREJCYWNraW5nU3Rv
cmU+IGJhY2tpbmdTdG9yZSwgY29uc3QgSURCRGF0YWJhc2VNZXRhZGF0YSYgbWV0YWRhdGEsIGlu
dDY0X3Qgb2JqZWN0U3RvcmVJZCwgaW50NjRfdCBpbmRleElkLCBQYXNzUmVmUHRyPElEQktleVJh
bmdlPiBrZXlSYW5nZSwgSURCQ3Vyc29yQmFja2VuZEludGVyZmFjZTo6Q3Vyc29yVHlwZSBjdXJz
b3JUeXBlLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tzKQorICAgIHN0YXRpYyBQ
YXNzT3duUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGw6Ok9wZXJhdGlvbj4gY3JlYXRlKFBh
c3NSZWZQdHI8SURCQmFja2luZ1N0b3JlPiBiYWNraW5nU3RvcmUsIGNvbnN0IElEQkRhdGFiYXNl
TWV0YWRhdGEmIG1ldGFkYXRhLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGludDY0X3QgaW5kZXhJ
ZCwgUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4ga2V5UmFuZ2UsIEluZGV4ZWREQjo6Q3Vyc29yVHlw
ZSBjdXJzb3JUeXBlLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tzKQogICAgIHsK
ICAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBHZXRPcGVyYXRpb24oYmFja2luZ1N0b3JlLCBt
ZXRhZGF0YSwgb2JqZWN0U3RvcmVJZCwgaW5kZXhJZCwga2V5UmFuZ2UsIGN1cnNvclR5cGUsIGNh
bGxiYWNrcykpOwogICAgIH0KICAgICB2aXJ0dWFsIHZvaWQgcGVyZm9ybShJREJUcmFuc2FjdGlv
bkJhY2tlbmRJbXBsKik7CiBwcml2YXRlOgotICAgIEdldE9wZXJhdGlvbihQYXNzUmVmUHRyPElE
QkJhY2tpbmdTdG9yZT4gYmFja2luZ1N0b3JlLCBjb25zdCBJREJEYXRhYmFzZU1ldGFkYXRhJiBt
ZXRhZGF0YSwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBpbnQ2NF90IGluZGV4SWQsIFBhc3NSZWZQ
dHI8SURCS2V5UmFuZ2U+IGtleVJhbmdlLCBJREJDdXJzb3JCYWNrZW5kSW50ZXJmYWNlOjpDdXJz
b3JUeXBlIGN1cnNvclR5cGUsIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MpCisg
ICAgR2V0T3BlcmF0aW9uKFBhc3NSZWZQdHI8SURCQmFja2luZ1N0b3JlPiBiYWNraW5nU3RvcmUs
IGNvbnN0IElEQkRhdGFiYXNlTWV0YWRhdGEmIG1ldGFkYXRhLCBpbnQ2NF90IG9iamVjdFN0b3Jl
SWQsIGludDY0X3QgaW5kZXhJZCwgUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4ga2V5UmFuZ2UsIElu
ZGV4ZWREQjo6Q3Vyc29yVHlwZSBjdXJzb3JUeXBlLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4g
Y2FsbGJhY2tzKQogICAgICAgICA6IG1fYmFja2luZ1N0b3JlKGJhY2tpbmdTdG9yZSkKICAgICAg
ICAgLCBtX2RhdGFiYXNlSWQobWV0YWRhdGEuaWQpCiAgICAgICAgICwgbV9vYmplY3RTdG9yZUlk
KG9iamVjdFN0b3JlSWQpCkBAIC0yNjYsNyArMjY3LDcgQEAgcHJpdmF0ZToKICAgICBjb25zdCBJ
REJLZXlQYXRoIG1fa2V5UGF0aDsKICAgICBjb25zdCBib29sIG1fYXV0b0luY3JlbWVudDsKICAg
ICBjb25zdCBSZWZQdHI8SURCS2V5UmFuZ2U+IG1fa2V5UmFuZ2U7Ci0gICAgY29uc3QgSURCQ3Vy
c29yQmFja2VuZEludGVyZmFjZTo6Q3Vyc29yVHlwZSBtX2N1cnNvclR5cGU7CisgICAgY29uc3Qg
SW5kZXhlZERCOjpDdXJzb3JUeXBlIG1fY3Vyc29yVHlwZTsKICAgICBjb25zdCBSZWZQdHI8SURC
Q2FsbGJhY2tzPiBtX2NhbGxiYWNrczsKIH07CiAKQEAgLTMyMCwxMyArMzIxLDEzIEBAIHByaXZh
dGU6CiAKIGNsYXNzIE9wZW5DdXJzb3JPcGVyYXRpb24gOiBwdWJsaWMgSURCVHJhbnNhY3Rpb25C
YWNrZW5kSW1wbDo6T3BlcmF0aW9uIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc093blB0cjxJ
REJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsOjpPcGVyYXRpb24+IGNyZWF0ZShQYXNzUmVmUHRyPElE
QkJhY2tpbmdTdG9yZT4gYmFja2luZ1N0b3JlLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qg
b2JqZWN0U3RvcmVJZCwgaW50NjRfdCBpbmRleElkLCBQYXNzUmVmUHRyPElEQktleVJhbmdlPiBr
ZXlSYW5nZSwgdW5zaWduZWQgc2hvcnQgZGlyZWN0aW9uLCBJREJDdXJzb3JCYWNrZW5kSW50ZXJm
YWNlOjpDdXJzb3JUeXBlIGN1cnNvclR5cGUsIElEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZTo6
VGFza1R5cGUgdGFza1R5cGUsIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MpCisg
ICAgc3RhdGljIFBhc3NPd25QdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbDo6T3BlcmF0aW9u
PiBjcmVhdGUoUGFzc1JlZlB0cjxJREJCYWNraW5nU3RvcmU+IGJhY2tpbmdTdG9yZSwgaW50NjRf
dCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGludDY0X3QgaW5kZXhJZCwgUGFz
c1JlZlB0cjxJREJLZXlSYW5nZT4ga2V5UmFuZ2UsIEluZGV4ZWREQjo6Q3Vyc29yRGlyZWN0aW9u
IGRpcmVjdGlvbiwgSW5kZXhlZERCOjpDdXJzb3JUeXBlIGN1cnNvclR5cGUsIElEQkRhdGFiYXNl
QmFja2VuZEludGVyZmFjZTo6VGFza1R5cGUgdGFza1R5cGUsIFBhc3NSZWZQdHI8SURCQ2FsbGJh
Y2tzPiBjYWxsYmFja3MpCiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IE9wZW5D
dXJzb3JPcGVyYXRpb24oYmFja2luZ1N0b3JlLCBkYXRhYmFzZUlkLCBvYmplY3RTdG9yZUlkLCBp
bmRleElkLCBrZXlSYW5nZSwgZGlyZWN0aW9uLCBjdXJzb3JUeXBlLCB0YXNrVHlwZSwgY2FsbGJh
Y2tzKSk7CiAgICAgfQogICAgIHZpcnR1YWwgdm9pZCBwZXJmb3JtKElEQlRyYW5zYWN0aW9uQmFj
a2VuZEltcGwqKTsKIHByaXZhdGU6Ci0gICAgT3BlbkN1cnNvck9wZXJhdGlvbihQYXNzUmVmUHRy
PElEQkJhY2tpbmdTdG9yZT4gYmFja2luZ1N0b3JlLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0
X3Qgb2JqZWN0U3RvcmVJZCwgaW50NjRfdCBpbmRleElkLCBQYXNzUmVmUHRyPElEQktleVJhbmdl
PiBrZXlSYW5nZSwgdW5zaWduZWQgc2hvcnQgZGlyZWN0aW9uLCBJREJDdXJzb3JCYWNrZW5kSW50
ZXJmYWNlOjpDdXJzb3JUeXBlIGN1cnNvclR5cGUsIElEQkRhdGFiYXNlQmFja2VuZEludGVyZmFj
ZTo6VGFza1R5cGUgdGFza1R5cGUsIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3Mp
CisgICAgT3BlbkN1cnNvck9wZXJhdGlvbihQYXNzUmVmUHRyPElEQkJhY2tpbmdTdG9yZT4gYmFj
a2luZ1N0b3JlLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgaW50
NjRfdCBpbmRleElkLCBQYXNzUmVmUHRyPElEQktleVJhbmdlPiBrZXlSYW5nZSwgSW5kZXhlZERC
OjpDdXJzb3JEaXJlY3Rpb24gZGlyZWN0aW9uLCBJbmRleGVkREI6OkN1cnNvclR5cGUgY3Vyc29y
VHlwZSwgSURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlOjpUYXNrVHlwZSB0YXNrVHlwZSwgUGFz
c1JlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcykKICAgICAgICAgOiBtX2JhY2tpbmdTdG9y
ZShiYWNraW5nU3RvcmUpCiAgICAgICAgICwgbV9kYXRhYmFzZUlkKGRhdGFiYXNlSWQpCiAgICAg
ICAgICwgbV9vYmplY3RTdG9yZUlkKG9iamVjdFN0b3JlSWQpCkBAIC0zNDQsOCArMzQ1LDggQEAg
cHJpdmF0ZToKICAgICBjb25zdCBpbnQ2NF90IG1fb2JqZWN0U3RvcmVJZDsKICAgICBjb25zdCBp
bnQ2NF90IG1faW5kZXhJZDsKICAgICBjb25zdCBQYXNzUmVmUHRyPElEQktleVJhbmdlPiBtX2tl
eVJhbmdlOwotICAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IG1fZGlyZWN0aW9uOwotICAgIGNvbnN0
IElEQkN1cnNvckJhY2tlbmRJbnRlcmZhY2U6OkN1cnNvclR5cGUgbV9jdXJzb3JUeXBlOworICAg
IGNvbnN0IEluZGV4ZWREQjo6Q3Vyc29yRGlyZWN0aW9uIG1fZGlyZWN0aW9uOworICAgIGNvbnN0
IEluZGV4ZWREQjo6Q3Vyc29yVHlwZSBtX2N1cnNvclR5cGU7CiAgICAgY29uc3QgSURCRGF0YWJh
c2VCYWNrZW5kSW50ZXJmYWNlOjpUYXNrVHlwZSBtX3Rhc2tUeXBlOwogICAgIGNvbnN0IFJlZlB0
cjxJREJDYWxsYmFja3M+IG1fY2FsbGJhY2tzOwogfTsKQEAgLTU1NSw3ICs1NTYsNyBAQCB2b2lk
IElEQkRhdGFiYXNlQmFja2VuZEltcGw6OmNyZWF0ZU9iamVjdFN0b3JlKGludDY0X3QgdHJhbnNh
Y3Rpb25JZCwgaW50NjRfdCBvYgogICAgIElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGwqIHRyYW5z
YWN0aW9uID0gbV90cmFuc2FjdGlvbnMuZ2V0KHRyYW5zYWN0aW9uSWQpOwogICAgIGlmICghdHJh
bnNhY3Rpb24pCiAgICAgICAgIHJldHVybjsKLSAgICBBU1NFUlQodHJhbnNhY3Rpb24tPm1vZGUo
KSA9PSBJREJUcmFuc2FjdGlvbjo6VkVSU0lPTl9DSEFOR0UpOworICAgIEFTU0VSVCh0cmFuc2Fj
dGlvbi0+bW9kZSgpID09IEluZGV4ZWREQjo6VHJhbnNhY3Rpb25WZXJzaW9uQ2hhbmdlKTsKIAog
ICAgIEFTU0VSVCghbV9tZXRhZGF0YS5vYmplY3RTdG9yZXMuY29udGFpbnMob2JqZWN0U3RvcmVJ
ZCkpOwogICAgIElEQk9iamVjdFN0b3JlTWV0YWRhdGEgb2JqZWN0U3RvcmVNZXRhZGF0YShuYW1l
LCBvYmplY3RTdG9yZUlkLCBrZXlQYXRoLCBhdXRvSW5jcmVtZW50LCBJREJEYXRhYmFzZUJhY2tl
bmRJbnRlcmZhY2U6Ok1pbmltdW1JbmRleElkKTsKQEAgLTU4MSw3ICs1ODIsNyBAQCB2b2lkIElE
QkRhdGFiYXNlQmFja2VuZEltcGw6OmRlbGV0ZU9iamVjdFN0b3JlKGludDY0X3QgdHJhbnNhY3Rp
b25JZCwgaW50NjRfdCBvYgogICAgIElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGwqIHRyYW5zYWN0
aW9uID0gbV90cmFuc2FjdGlvbnMuZ2V0KHRyYW5zYWN0aW9uSWQpOwogICAgIGlmICghdHJhbnNh
Y3Rpb24pCiAgICAgICAgIHJldHVybjsKLSAgICBBU1NFUlQodHJhbnNhY3Rpb24tPm1vZGUoKSA9
PSBJREJUcmFuc2FjdGlvbjo6VkVSU0lPTl9DSEFOR0UpOworICAgIEFTU0VSVCh0cmFuc2FjdGlv
bi0+bW9kZSgpID09IEluZGV4ZWREQjo6VHJhbnNhY3Rpb25WZXJzaW9uQ2hhbmdlKTsKIAogICAg
IEFTU0VSVChtX21ldGFkYXRhLm9iamVjdFN0b3Jlcy5jb250YWlucyhvYmplY3RTdG9yZUlkKSk7
CiAgICAgY29uc3QgSURCT2JqZWN0U3RvcmVNZXRhZGF0YSYgb2JqZWN0U3RvcmVNZXRhZGF0YSA9
IG1fbWV0YWRhdGEub2JqZWN0U3RvcmVzLmdldChvYmplY3RTdG9yZUlkKTsKQEAgLTU5Niw3ICs1
OTcsNyBAQCB2b2lkIElEQkRhdGFiYXNlQmFja2VuZEltcGw6OmNyZWF0ZUluZGV4KGludDY0X3Qg
dHJhbnNhY3Rpb25JZCwgaW50NjRfdCBvYmplY3RTdAogICAgIElEQlRyYW5zYWN0aW9uQmFja2Vu
ZEltcGwqIHRyYW5zYWN0aW9uID0gbV90cmFuc2FjdGlvbnMuZ2V0KHRyYW5zYWN0aW9uSWQpOwog
ICAgIGlmICghdHJhbnNhY3Rpb24pCiAgICAgICAgIHJldHVybjsKLSAgICBBU1NFUlQodHJhbnNh
Y3Rpb24tPm1vZGUoKSA9PSBJREJUcmFuc2FjdGlvbjo6VkVSU0lPTl9DSEFOR0UpOworICAgIEFT
U0VSVCh0cmFuc2FjdGlvbi0+bW9kZSgpID09IEluZGV4ZWREQjo6VHJhbnNhY3Rpb25WZXJzaW9u
Q2hhbmdlKTsKIAogICAgIEFTU0VSVChtX21ldGFkYXRhLm9iamVjdFN0b3Jlcy5jb250YWlucyhv
YmplY3RTdG9yZUlkKSk7CiAgICAgY29uc3QgSURCT2JqZWN0U3RvcmVNZXRhZGF0YSBvYmplY3RT
dG9yZSA9IG1fbWV0YWRhdGEub2JqZWN0U3RvcmVzLmdldChvYmplY3RTdG9yZUlkKTsKQEAgLTYz
MSw3ICs2MzIsNyBAQCB2b2lkIElEQkRhdGFiYXNlQmFja2VuZEltcGw6OmRlbGV0ZUluZGV4KGlu
dDY0X3QgdHJhbnNhY3Rpb25JZCwgaW50NjRfdCBvYmplY3RTdAogICAgIElEQlRyYW5zYWN0aW9u
QmFja2VuZEltcGwqIHRyYW5zYWN0aW9uID0gbV90cmFuc2FjdGlvbnMuZ2V0KHRyYW5zYWN0aW9u
SWQpOwogICAgIGlmICghdHJhbnNhY3Rpb24pCiAgICAgICAgIHJldHVybjsKLSAgICBBU1NFUlQo
dHJhbnNhY3Rpb24tPm1vZGUoKSA9PSBJREJUcmFuc2FjdGlvbjo6VkVSU0lPTl9DSEFOR0UpOwor
ICAgIEFTU0VSVCh0cmFuc2FjdGlvbi0+bW9kZSgpID09IEluZGV4ZWREQjo6VHJhbnNhY3Rpb25W
ZXJzaW9uQ2hhbmdlKTsKIAogICAgIEFTU0VSVChtX21ldGFkYXRhLm9iamVjdFN0b3Jlcy5jb250
YWlucyhvYmplY3RTdG9yZUlkKSk7CiAgICAgY29uc3QgSURCT2JqZWN0U3RvcmVNZXRhZGF0YSBv
YmplY3RTdG9yZSA9IG1fbWV0YWRhdGEub2JqZWN0U3RvcmVzLmdldChvYmplY3RTdG9yZUlkKTsK
QEAgLTY4NSw3ICs2ODYsNyBAQCB2b2lkIElEQkRhdGFiYXNlQmFja2VuZEltcGw6OmdldChpbnQ2
NF90IHRyYW5zYWN0aW9uSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgaQogICAgIGlmICghdHJh
bnNhY3Rpb24pCiAgICAgICAgIHJldHVybjsKIAotICAgIHRyYW5zYWN0aW9uLT5zY2hlZHVsZVRh
c2soR2V0T3BlcmF0aW9uOjpjcmVhdGUobV9iYWNraW5nU3RvcmUsIG1fbWV0YWRhdGEsIG9iamVj
dFN0b3JlSWQsIGluZGV4SWQsIGtleVJhbmdlLCBrZXlPbmx5ID8gSURCQ3Vyc29yQmFja2VuZElu
dGVyZmFjZTo6S2V5T25seSA6IElEQkN1cnNvckJhY2tlbmRJbnRlcmZhY2U6OktleUFuZFZhbHVl
LCBjYWxsYmFja3MpKTsKKyAgICB0cmFuc2FjdGlvbi0+c2NoZWR1bGVUYXNrKEdldE9wZXJhdGlv
bjo6Y3JlYXRlKG1fYmFja2luZ1N0b3JlLCBtX21ldGFkYXRhLCBvYmplY3RTdG9yZUlkLCBpbmRl
eElkLCBrZXlSYW5nZSwga2V5T25seSA/IEluZGV4ZWREQjo6Q3Vyc29yS2V5T25seSA6IEluZGV4
ZWREQjo6Q3Vyc29yS2V5QW5kVmFsdWUsIGNhbGxiYWNrcykpOwogfQogCiB2b2lkIEdldE9wZXJh
dGlvbjo6cGVyZm9ybShJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsKiB0cmFuc2FjdGlvbikKQEAg
LTY5OSwxNiArNzAwLDE2IEBAIHZvaWQgR2V0T3BlcmF0aW9uOjpwZXJmb3JtKElEQlRyYW5zYWN0
aW9uQmFja2VuZEltcGwqIHRyYW5zYWN0aW9uKQogICAgIGVsc2UgewogICAgICAgICBSZWZQdHI8
SURCQmFja2luZ1N0b3JlOjpDdXJzb3I+IGJhY2tpbmdTdG9yZUN1cnNvcjsKICAgICAgICAgaWYg
KG1faW5kZXhJZCA9PSBJREJJbmRleE1ldGFkYXRhOjpJbnZhbGlkSWQpIHsKLSAgICAgICAgICAg
IEFTU0VSVChtX2N1cnNvclR5cGUgIT0gSURCQ3Vyc29yQmFja2VuZEludGVyZmFjZTo6S2V5T25s
eSk7CisgICAgICAgICAgICBBU1NFUlQobV9jdXJzb3JUeXBlICE9IEluZGV4ZWREQjo6Q3Vyc29y
S2V5T25seSk7CiAgICAgICAgICAgICAvLyBPYmplY3RTdG9yZSBSZXRyaWV2YWwgT3BlcmF0aW9u
Ci0gICAgICAgICAgICBiYWNraW5nU3RvcmVDdXJzb3IgPSBtX2JhY2tpbmdTdG9yZS0+b3Blbk9i
amVjdFN0b3JlQ3Vyc29yKHRyYW5zYWN0aW9uLT5iYWNraW5nU3RvcmVUcmFuc2FjdGlvbigpLCBt
X2RhdGFiYXNlSWQsIG1fb2JqZWN0U3RvcmVJZCwgbV9rZXlSYW5nZS5nZXQoKSwgSURCQ3Vyc29y
OjpORVhUKTsKKyAgICAgICAgICAgIGJhY2tpbmdTdG9yZUN1cnNvciA9IG1fYmFja2luZ1N0b3Jl
LT5vcGVuT2JqZWN0U3RvcmVDdXJzb3IodHJhbnNhY3Rpb24tPmJhY2tpbmdTdG9yZVRyYW5zYWN0
aW9uKCksIG1fZGF0YWJhc2VJZCwgbV9vYmplY3RTdG9yZUlkLCBtX2tleVJhbmdlLmdldCgpLCBJ
bmRleGVkREI6OkN1cnNvck5leHQpOwogICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgaWYg
KG1fY3Vyc29yVHlwZSA9PSBJREJDdXJzb3JCYWNrZW5kSW50ZXJmYWNlOjpLZXlPbmx5KQorICAg
ICAgICAgICAgaWYgKG1fY3Vyc29yVHlwZSA9PSBJbmRleGVkREI6OkN1cnNvcktleU9ubHkpCiAg
ICAgICAgICAgICAgICAgLy8gSW5kZXggVmFsdWUgUmV0cmlldmFsIE9wZXJhdGlvbgotICAgICAg
ICAgICAgICAgIGJhY2tpbmdTdG9yZUN1cnNvciA9IG1fYmFja2luZ1N0b3JlLT5vcGVuSW5kZXhL
ZXlDdXJzb3IodHJhbnNhY3Rpb24tPmJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uKCksIG1fZGF0YWJh
c2VJZCwgbV9vYmplY3RTdG9yZUlkLCBtX2luZGV4SWQsIG1fa2V5UmFuZ2UuZ2V0KCksIElEQkN1
cnNvcjo6TkVYVCk7CisgICAgICAgICAgICAgICAgYmFja2luZ1N0b3JlQ3Vyc29yID0gbV9iYWNr
aW5nU3RvcmUtPm9wZW5JbmRleEtleUN1cnNvcih0cmFuc2FjdGlvbi0+YmFja2luZ1N0b3JlVHJh
bnNhY3Rpb24oKSwgbV9kYXRhYmFzZUlkLCBtX29iamVjdFN0b3JlSWQsIG1faW5kZXhJZCwgbV9r
ZXlSYW5nZS5nZXQoKSwgSW5kZXhlZERCOjpDdXJzb3JOZXh0KTsKICAgICAgICAgICAgIGVsc2UK
ICAgICAgICAgICAgICAgICAvLyBJbmRleCBSZWZlcmVuY2VkIFZhbHVlIFJldHJpZXZhbCBPcGVy
YXRpb24KLSAgICAgICAgICAgICAgICBiYWNraW5nU3RvcmVDdXJzb3IgPSBtX2JhY2tpbmdTdG9y
ZS0+b3BlbkluZGV4Q3Vyc29yKHRyYW5zYWN0aW9uLT5iYWNraW5nU3RvcmVUcmFuc2FjdGlvbigp
LCBtX2RhdGFiYXNlSWQsIG1fb2JqZWN0U3RvcmVJZCwgbV9pbmRleElkLCBtX2tleVJhbmdlLmdl
dCgpLCBJREJDdXJzb3I6Ok5FWFQpOworICAgICAgICAgICAgICAgIGJhY2tpbmdTdG9yZUN1cnNv
ciA9IG1fYmFja2luZ1N0b3JlLT5vcGVuSW5kZXhDdXJzb3IodHJhbnNhY3Rpb24tPmJhY2tpbmdT
dG9yZVRyYW5zYWN0aW9uKCksIG1fZGF0YWJhc2VJZCwgbV9vYmplY3RTdG9yZUlkLCBtX2luZGV4
SWQsIG1fa2V5UmFuZ2UuZ2V0KCksIEluZGV4ZWREQjo6Q3Vyc29yTmV4dCk7CiAgICAgICAgIH0K
IAogICAgICAgICBpZiAoIWJhY2tpbmdTdG9yZUN1cnNvcikgewpAQCAtNzU1LDcgKzc1Niw3IEBA
IHZvaWQgR2V0T3BlcmF0aW9uOjpwZXJmb3JtKElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGwqIHRy
YW5zYWN0aW9uKQogICAgICAgICBtX2NhbGxiYWNrcy0+b25TdWNjZXNzKCk7CiAgICAgICAgIHJl
dHVybjsKICAgICB9Ci0gICAgaWYgKG1fY3Vyc29yVHlwZSA9PSBJREJDdXJzb3JCYWNrZW5kSW50
ZXJmYWNlOjpLZXlPbmx5KSB7CisgICAgaWYgKG1fY3Vyc29yVHlwZSA9PSBJbmRleGVkREI6OkN1
cnNvcktleU9ubHkpIHsKICAgICAgICAgLy8gSW5kZXggVmFsdWUgUmV0cmlldmFsIE9wZXJhdGlv
bgogICAgICAgICBtX2NhbGxiYWNrcy0+b25TdWNjZXNzKHByaW1hcnlLZXkuZ2V0KCkpOwogICAg
ICAgICByZXR1cm47CkBAIC03ODYsNyArNzg3LDcgQEAgdm9pZCBJREJEYXRhYmFzZUJhY2tlbmRJ
bXBsOjpwdXQoaW50NjRfdCB0cmFuc2FjdGlvbklkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIFAK
ICAgICBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsKiB0cmFuc2FjdGlvbiA9IG1fdHJhbnNhY3Rp
b25zLmdldCh0cmFuc2FjdGlvbklkKTsKICAgICBpZiAoIXRyYW5zYWN0aW9uKQogICAgICAgICBy
ZXR1cm47Ci0gICAgQVNTRVJUKHRyYW5zYWN0aW9uLT5tb2RlKCkgIT0gSURCVHJhbnNhY3Rpb246
OlJFQURfT05MWSk7CisgICAgQVNTRVJUKHRyYW5zYWN0aW9uLT5tb2RlKCkgIT0gSW5kZXhlZERC
OjpUcmFuc2FjdGlvblJlYWRPbmx5KTsKIAogICAgIGNvbnN0IElEQk9iamVjdFN0b3JlTWV0YWRh
dGEgb2JqZWN0U3RvcmVNZXRhZGF0YSA9IG1fbWV0YWRhdGEub2JqZWN0U3RvcmVzLmdldChvYmpl
Y3RTdG9yZUlkKTsKIApAQCAtNzk4LDcgKzc5OSw3IEBAIHZvaWQgSURCRGF0YWJhc2VCYWNrZW5k
SW1wbDo6cHV0KGludDY0X3QgdHJhbnNhY3Rpb25JZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBQ
CiB2b2lkIFB1dE9wZXJhdGlvbjo6cGVyZm9ybShJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsKiB0
cmFuc2FjdGlvbikKIHsKICAgICBJREJfVFJBQ0UoIlB1dE9wZXJhdGlvbiIpOwotICAgIEFTU0VS
VCh0cmFuc2FjdGlvbi0+bW9kZSgpICE9IElEQlRyYW5zYWN0aW9uOjpSRUFEX09OTFkpOworICAg
IEFTU0VSVCh0cmFuc2FjdGlvbi0+bW9kZSgpICE9IEluZGV4ZWREQjo6VHJhbnNhY3Rpb25SZWFk
T25seSk7CiAgICAgQVNTRVJUKG1faW5kZXhJZHMuc2l6ZSgpID09IG1faW5kZXhLZXlzLnNpemUo
KSk7CiAgICAgYm9vbCBrZXlXYXNHZW5lcmF0ZWQgPSBmYWxzZTsKIApAQCAtODcyLDcgKzg3Myw3
IEBAIHZvaWQgSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6c2V0SW5kZXhLZXlzKGludDY0X3QgdHJh
bnNhY3Rpb25JZCwgaW50NjRfdCBvYmplY3RTCiAgICAgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1w
bCogdHJhbnNhY3Rpb24gPSBtX3RyYW5zYWN0aW9ucy5nZXQodHJhbnNhY3Rpb25JZCk7CiAgICAg
aWYgKCF0cmFuc2FjdGlvbikKICAgICAgICAgcmV0dXJuOwotICAgIEFTU0VSVCh0cmFuc2FjdGlv
bi0+bW9kZSgpID09IElEQlRyYW5zYWN0aW9uOjpWRVJTSU9OX0NIQU5HRSk7CisgICAgQVNTRVJU
KHRyYW5zYWN0aW9uLT5tb2RlKCkgPT0gSW5kZXhlZERCOjpUcmFuc2FjdGlvblZlcnNpb25DaGFu
Z2UpOwogCiAgICAgUmVmUHRyPElEQktleT4gcHJpbWFyeUtleSA9IHBycFByaW1hcnlLZXk7CiAg
ICAgUmVmUHRyPElEQkJhY2tpbmdTdG9yZT4gc3RvcmUgPSBiYWNraW5nU3RvcmUoKTsKQEAgLTky
OSwxNCArOTMwLDE0IEBAIHZvaWQgU2V0SW5kZXhlc1JlYWR5T3BlcmF0aW9uOjpwZXJmb3JtKElE
QlRyYW5zYWN0aW9uQmFja2VuZEltcGwqIHRyYW5zYWN0aW9uKQogICAgICAgICB0cmFuc2FjdGlv
bi0+ZGlkQ29tcGxldGVQcmVlbXB0aXZlRXZlbnQoKTsKIH0KIAotdm9pZCBJREJEYXRhYmFzZUJh
Y2tlbmRJbXBsOjpvcGVuQ3Vyc29yKGludDY0X3QgdHJhbnNhY3Rpb25JZCwgaW50NjRfdCBvYmpl
Y3RTdG9yZUlkLCBpbnQ2NF90IGluZGV4SWQsIFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+IGtleVJh
bmdlLCB1bnNpZ25lZCBzaG9ydCBkaXJlY3Rpb24sIGJvb2wga2V5T25seSwgVGFza1R5cGUgdGFz
a1R5cGUsIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MpCit2b2lkIElEQkRhdGFi
YXNlQmFja2VuZEltcGw6Om9wZW5DdXJzb3IoaW50NjRfdCB0cmFuc2FjdGlvbklkLCBpbnQ2NF90
IG9iamVjdFN0b3JlSWQsIGludDY0X3QgaW5kZXhJZCwgUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4g
a2V5UmFuZ2UsIEluZGV4ZWREQjo6Q3Vyc29yRGlyZWN0aW9uIGRpcmVjdGlvbiwgYm9vbCBrZXlP
bmx5LCBUYXNrVHlwZSB0YXNrVHlwZSwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNr
cykKIHsKICAgICBJREJfVFJBQ0UoIklEQkRhdGFiYXNlQmFja2VuZEltcGw6Om9wZW5DdXJzb3Ii
KTsKICAgICBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsKiB0cmFuc2FjdGlvbiA9IG1fdHJhbnNh
Y3Rpb25zLmdldCh0cmFuc2FjdGlvbklkKTsKICAgICBpZiAoIXRyYW5zYWN0aW9uKQogICAgICAg
ICByZXR1cm47CiAKLSAgICB0cmFuc2FjdGlvbi0+c2NoZWR1bGVUYXNrKE9wZW5DdXJzb3JPcGVy
YXRpb246OmNyZWF0ZShtX2JhY2tpbmdTdG9yZSwgaWQoKSwgb2JqZWN0U3RvcmVJZCwgaW5kZXhJ
ZCwga2V5UmFuZ2UsIGRpcmVjdGlvbiwga2V5T25seSA/IElEQkN1cnNvckJhY2tlbmRJbnRlcmZh
Y2U6OktleU9ubHkgOiBJREJDdXJzb3JCYWNrZW5kSW50ZXJmYWNlOjpLZXlBbmRWYWx1ZSwgdGFz
a1R5cGUsIGNhbGxiYWNrcykpOworICAgIHRyYW5zYWN0aW9uLT5zY2hlZHVsZVRhc2soT3BlbkN1
cnNvck9wZXJhdGlvbjo6Y3JlYXRlKG1fYmFja2luZ1N0b3JlLCBpZCgpLCBvYmplY3RTdG9yZUlk
LCBpbmRleElkLCBrZXlSYW5nZSwgZGlyZWN0aW9uLCBrZXlPbmx5ID8gSW5kZXhlZERCOjpDdXJz
b3JLZXlPbmx5IDogSW5kZXhlZERCOjpDdXJzb3JLZXlBbmRWYWx1ZSwgdGFza1R5cGUsIGNhbGxi
YWNrcykpOwogfQogCiB2b2lkIE9wZW5DdXJzb3JPcGVyYXRpb246OnBlcmZvcm0oSURCVHJhbnNh
Y3Rpb25CYWNrZW5kSW1wbCogdHJhbnNhY3Rpb24pCkBAIC05NTAsMTcgKzk1MSwxNiBAQCB2b2lk
IE9wZW5DdXJzb3JPcGVyYXRpb246OnBlcmZvcm0oSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbCog
dHJhbnNhY3Rpb24pCiAgICAgaWYgKG1fdGFza1R5cGUgPT0gSURCRGF0YWJhc2VCYWNrZW5kSW50
ZXJmYWNlOjpQcmVlbXB0aXZlVGFzaykKICAgICAgICAgdHJhbnNhY3Rpb24tPmFkZFByZWVtcHRp
dmVFdmVudCgpOwogCi0gICAgSURCQ3Vyc29yOjpEaXJlY3Rpb24gZGlyZWN0aW9uID0gc3RhdGlj
X2Nhc3Q8SURCQ3Vyc29yOjpEaXJlY3Rpb24+KG1fZGlyZWN0aW9uKTsKICAgICBSZWZQdHI8SURC
QmFja2luZ1N0b3JlOjpDdXJzb3I+IGJhY2tpbmdTdG9yZUN1cnNvcjsKICAgICBpZiAobV9pbmRl
eElkID09IElEQkluZGV4TWV0YWRhdGE6OkludmFsaWRJZCkgewotICAgICAgICBBU1NFUlQobV9j
dXJzb3JUeXBlICE9IElEQkN1cnNvckJhY2tlbmRJbnRlcmZhY2U6OktleU9ubHkpOwotICAgICAg
ICBiYWNraW5nU3RvcmVDdXJzb3IgPSBtX2JhY2tpbmdTdG9yZS0+b3Blbk9iamVjdFN0b3JlQ3Vy
c29yKHRyYW5zYWN0aW9uLT5iYWNraW5nU3RvcmVUcmFuc2FjdGlvbigpLCBtX2RhdGFiYXNlSWQs
IG1fb2JqZWN0U3RvcmVJZCwgbV9rZXlSYW5nZS5nZXQoKSwgZGlyZWN0aW9uKTsKKyAgICAgICAg
QVNTRVJUKG1fY3Vyc29yVHlwZSAhPSBJbmRleGVkREI6OkN1cnNvcktleU9ubHkpOworICAgICAg
ICBiYWNraW5nU3RvcmVDdXJzb3IgPSBtX2JhY2tpbmdTdG9yZS0+b3Blbk9iamVjdFN0b3JlQ3Vy
c29yKHRyYW5zYWN0aW9uLT5iYWNraW5nU3RvcmVUcmFuc2FjdGlvbigpLCBtX2RhdGFiYXNlSWQs
IG1fb2JqZWN0U3RvcmVJZCwgbV9rZXlSYW5nZS5nZXQoKSwgbV9kaXJlY3Rpb24pOwogICAgIH0g
ZWxzZSB7CiAgICAgICAgIEFTU0VSVChtX3Rhc2tUeXBlID09IElEQkRhdGFiYXNlQmFja2VuZElu
dGVyZmFjZTo6Tm9ybWFsVGFzayk7Ci0gICAgICAgIGlmIChtX2N1cnNvclR5cGUgPT0gSURCQ3Vy
c29yQmFja2VuZEludGVyZmFjZTo6S2V5T25seSkKLSAgICAgICAgICAgIGJhY2tpbmdTdG9yZUN1
cnNvciA9IG1fYmFja2luZ1N0b3JlLT5vcGVuSW5kZXhLZXlDdXJzb3IodHJhbnNhY3Rpb24tPmJh
Y2tpbmdTdG9yZVRyYW5zYWN0aW9uKCksIG1fZGF0YWJhc2VJZCwgbV9vYmplY3RTdG9yZUlkLCBt
X2luZGV4SWQsIG1fa2V5UmFuZ2UuZ2V0KCksIGRpcmVjdGlvbik7CisgICAgICAgIGlmIChtX2N1
cnNvclR5cGUgPT0gSW5kZXhlZERCOjpDdXJzb3JLZXlPbmx5KQorICAgICAgICAgICAgYmFja2lu
Z1N0b3JlQ3Vyc29yID0gbV9iYWNraW5nU3RvcmUtPm9wZW5JbmRleEtleUN1cnNvcih0cmFuc2Fj
dGlvbi0+YmFja2luZ1N0b3JlVHJhbnNhY3Rpb24oKSwgbV9kYXRhYmFzZUlkLCBtX29iamVjdFN0
b3JlSWQsIG1faW5kZXhJZCwgbV9rZXlSYW5nZS5nZXQoKSwgbV9kaXJlY3Rpb24pOwogICAgICAg
ICBlbHNlCi0gICAgICAgICAgICBiYWNraW5nU3RvcmVDdXJzb3IgPSBtX2JhY2tpbmdTdG9yZS0+
b3BlbkluZGV4Q3Vyc29yKHRyYW5zYWN0aW9uLT5iYWNraW5nU3RvcmVUcmFuc2FjdGlvbigpLCBt
X2RhdGFiYXNlSWQsIG1fb2JqZWN0U3RvcmVJZCwgbV9pbmRleElkLCBtX2tleVJhbmdlLmdldCgp
LCBkaXJlY3Rpb24pOworICAgICAgICAgICAgYmFja2luZ1N0b3JlQ3Vyc29yID0gbV9iYWNraW5n
U3RvcmUtPm9wZW5JbmRleEN1cnNvcih0cmFuc2FjdGlvbi0+YmFja2luZ1N0b3JlVHJhbnNhY3Rp
b24oKSwgbV9kYXRhYmFzZUlkLCBtX29iamVjdFN0b3JlSWQsIG1faW5kZXhJZCwgbV9rZXlSYW5n
ZS5nZXQoKSwgbV9kaXJlY3Rpb24pOwogICAgIH0KIAogICAgIGlmICghYmFja2luZ1N0b3JlQ3Vy
c29yKSB7CkBAIC05OTEsOSArOTkxLDkgQEAgdm9pZCBDb3VudE9wZXJhdGlvbjo6cGVyZm9ybShJ
REJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsKiB0cmFuc2FjdGlvbikKICAgICBSZWZQdHI8SURCQmFj
a2luZ1N0b3JlOjpDdXJzb3I+IGJhY2tpbmdTdG9yZUN1cnNvcjsKIAogICAgIGlmIChtX2luZGV4
SWQgPT0gSURCSW5kZXhNZXRhZGF0YTo6SW52YWxpZElkKQotICAgICAgICBiYWNraW5nU3RvcmVD
dXJzb3IgPSBtX2JhY2tpbmdTdG9yZS0+b3Blbk9iamVjdFN0b3JlS2V5Q3Vyc29yKHRyYW5zYWN0
aW9uLT5iYWNraW5nU3RvcmVUcmFuc2FjdGlvbigpLCBtX2RhdGFiYXNlSWQsIG1fb2JqZWN0U3Rv
cmVJZCwgbV9rZXlSYW5nZS5nZXQoKSwgSURCQ3Vyc29yOjpORVhUKTsKKyAgICAgICAgYmFja2lu
Z1N0b3JlQ3Vyc29yID0gbV9iYWNraW5nU3RvcmUtPm9wZW5PYmplY3RTdG9yZUtleUN1cnNvcih0
cmFuc2FjdGlvbi0+YmFja2luZ1N0b3JlVHJhbnNhY3Rpb24oKSwgbV9kYXRhYmFzZUlkLCBtX29i
amVjdFN0b3JlSWQsIG1fa2V5UmFuZ2UuZ2V0KCksIEluZGV4ZWREQjo6Q3Vyc29yTmV4dCk7CiAg
ICAgZWxzZQotICAgICAgICBiYWNraW5nU3RvcmVDdXJzb3IgPSBtX2JhY2tpbmdTdG9yZS0+b3Bl
bkluZGV4S2V5Q3Vyc29yKHRyYW5zYWN0aW9uLT5iYWNraW5nU3RvcmVUcmFuc2FjdGlvbigpLCBt
X2RhdGFiYXNlSWQsIG1fb2JqZWN0U3RvcmVJZCwgbV9pbmRleElkLCBtX2tleVJhbmdlLmdldCgp
LCBJREJDdXJzb3I6Ok5FWFQpOworICAgICAgICBiYWNraW5nU3RvcmVDdXJzb3IgPSBtX2JhY2tp
bmdTdG9yZS0+b3BlbkluZGV4S2V5Q3Vyc29yKHRyYW5zYWN0aW9uLT5iYWNraW5nU3RvcmVUcmFu
c2FjdGlvbigpLCBtX2RhdGFiYXNlSWQsIG1fb2JqZWN0U3RvcmVJZCwgbV9pbmRleElkLCBtX2tl
eVJhbmdlLmdldCgpLCBJbmRleGVkREI6OkN1cnNvck5leHQpOwogICAgIGlmICghYmFja2luZ1N0
b3JlQ3Vyc29yKSB7CiAgICAgICAgIG1fY2FsbGJhY2tzLT5vblN1Y2Nlc3MoY291bnQpOwogICAg
ICAgICByZXR1cm47CkBAIC0xMDEyLDcgKzEwMTIsNyBAQCB2b2lkIElEQkRhdGFiYXNlQmFja2Vu
ZEltcGw6OmRlbGV0ZVJhbmdlKGludDY0X3QgdHJhbnNhY3Rpb25JZCwgaW50NjRfdCBvYmplY3RT
dAogICAgIElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGwqIHRyYW5zYWN0aW9uID0gbV90cmFuc2Fj
dGlvbnMuZ2V0KHRyYW5zYWN0aW9uSWQpOwogICAgIGlmICghdHJhbnNhY3Rpb24pCiAgICAgICAg
IHJldHVybjsKLSAgICBBU1NFUlQodHJhbnNhY3Rpb24tPm1vZGUoKSAhPSBJREJUcmFuc2FjdGlv
bjo6UkVBRF9PTkxZKTsKKyAgICBBU1NFUlQodHJhbnNhY3Rpb24tPm1vZGUoKSAhPSBJbmRleGVk
REI6OlRyYW5zYWN0aW9uUmVhZE9ubHkpOwogCiAgICAgdHJhbnNhY3Rpb24tPnNjaGVkdWxlVGFz
ayhEZWxldGVSYW5nZU9wZXJhdGlvbjo6Y3JlYXRlKG1fYmFja2luZ1N0b3JlLCBpZCgpLCBvYmpl
Y3RTdG9yZUlkLCBrZXlSYW5nZSwgY2FsbGJhY2tzKSk7CiB9CkBAIC0xMDIwLDcgKzEwMjAsNyBA
QCB2b2lkIElEQkRhdGFiYXNlQmFja2VuZEltcGw6OmRlbGV0ZVJhbmdlKGludDY0X3QgdHJhbnNh
Y3Rpb25JZCwgaW50NjRfdCBvYmplY3RTdAogdm9pZCBEZWxldGVSYW5nZU9wZXJhdGlvbjo6cGVy
Zm9ybShJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsKiB0cmFuc2FjdGlvbikKIHsKICAgICBJREJf
VFJBQ0UoIkRlbGV0ZVJhbmdlT3BlcmF0aW9uIik7Ci0gICAgUmVmUHRyPElEQkJhY2tpbmdTdG9y
ZTo6Q3Vyc29yPiBiYWNraW5nU3RvcmVDdXJzb3IgPSBtX2JhY2tpbmdTdG9yZS0+b3Blbk9iamVj
dFN0b3JlQ3Vyc29yKHRyYW5zYWN0aW9uLT5iYWNraW5nU3RvcmVUcmFuc2FjdGlvbigpLCBtX2Rh
dGFiYXNlSWQsIG1fb2JqZWN0U3RvcmVJZCwgbV9rZXlSYW5nZS5nZXQoKSwgSURCQ3Vyc29yOjpO
RVhUKTsKKyAgICBSZWZQdHI8SURCQmFja2luZ1N0b3JlOjpDdXJzb3I+IGJhY2tpbmdTdG9yZUN1
cnNvciA9IG1fYmFja2luZ1N0b3JlLT5vcGVuT2JqZWN0U3RvcmVDdXJzb3IodHJhbnNhY3Rpb24t
PmJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uKCksIG1fZGF0YWJhc2VJZCwgbV9vYmplY3RTdG9yZUlk
LCBtX2tleVJhbmdlLmdldCgpLCBJbmRleGVkREI6OkN1cnNvck5leHQpOwogICAgIGlmIChiYWNr
aW5nU3RvcmVDdXJzb3IpIHsKICAgICAgICAgZG8gewogICAgICAgICAgICAgbV9iYWNraW5nU3Rv
cmUtPmRlbGV0ZVJlY29yZCh0cmFuc2FjdGlvbi0+YmFja2luZ1N0b3JlVHJhbnNhY3Rpb24oKSwg
bV9kYXRhYmFzZUlkLCBtX29iamVjdFN0b3JlSWQsIGJhY2tpbmdTdG9yZUN1cnNvci0+cmVjb3Jk
SWRlbnRpZmllcigpKTsKQEAgLTEwMzYsNyArMTAzNiw3IEBAIHZvaWQgSURCRGF0YWJhc2VCYWNr
ZW5kSW1wbDo6Y2xlYXIoaW50NjRfdCB0cmFuc2FjdGlvbklkLCBpbnQ2NF90IG9iamVjdFN0b3Jl
SWQsCiAgICAgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbCogdHJhbnNhY3Rpb24gPSBtX3RyYW5z
YWN0aW9ucy5nZXQodHJhbnNhY3Rpb25JZCk7CiAgICAgaWYgKCF0cmFuc2FjdGlvbikKICAgICAg
ICAgcmV0dXJuOwotICAgIEFTU0VSVCh0cmFuc2FjdGlvbi0+bW9kZSgpICE9IElEQlRyYW5zYWN0
aW9uOjpSRUFEX09OTFkpOworICAgIEFTU0VSVCh0cmFuc2FjdGlvbi0+bW9kZSgpICE9IEluZGV4
ZWREQjo6VHJhbnNhY3Rpb25SZWFkT25seSk7CiAKICAgICB0cmFuc2FjdGlvbi0+c2NoZWR1bGVU
YXNrKENsZWFyT3BlcmF0aW9uOjpjcmVhdGUobV9iYWNraW5nU3RvcmUsIGlkKCksIG9iamVjdFN0
b3JlSWQsIGNhbGxiYWNrcykpOwogfQpAQCAtMTA3OSw3ICsxMDc5LDcgQEAgdm9pZCBJREJEYXRh
YmFzZUJhY2tlbmRJbXBsOjpWZXJzaW9uQ2hhbmdlT3BlcmF0aW9uOjpwZXJmb3JtKElEQlRyYW5z
YWN0aW9uQmFja2UKIHZvaWQgSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6dHJhbnNhY3Rpb25TdGFy
dGVkKFBhc3NSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbD4gcHJwVHJhbnNhY3Rpb24p
CiB7CiAgICAgUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGw+IHRyYW5zYWN0aW9uID0g
cHJwVHJhbnNhY3Rpb247Ci0gICAgaWYgKHRyYW5zYWN0aW9uLT5tb2RlKCkgPT0gSURCVHJhbnNh
Y3Rpb246OlZFUlNJT05fQ0hBTkdFKSB7CisgICAgaWYgKHRyYW5zYWN0aW9uLT5tb2RlKCkgPT0g
SW5kZXhlZERCOjpUcmFuc2FjdGlvblZlcnNpb25DaGFuZ2UpIHsKICAgICAgICAgQVNTRVJUKCFt
X3J1bm5pbmdWZXJzaW9uQ2hhbmdlVHJhbnNhY3Rpb24pOwogICAgICAgICBtX3J1bm5pbmdWZXJz
aW9uQ2hhbmdlVHJhbnNhY3Rpb24gPSB0cmFuc2FjdGlvbjsKICAgICB9CkBAIC0xMDkxLDcgKzEw
OTEsNyBAQCB2b2lkIElEQkRhdGFiYXNlQmFja2VuZEltcGw6OnRyYW5zYWN0aW9uRmluaXNoZWQo
UGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbgogICAgIEFTU0VSVChtX3RyYW5zYWN0aW9u
cy5jb250YWlucyh0cmFuc2FjdGlvbi0+aWQoKSkpOwogICAgIEFTU0VSVChtX3RyYW5zYWN0aW9u
cy5nZXQodHJhbnNhY3Rpb24tPmlkKCkpID09IHRyYW5zYWN0aW9uLmdldCgpKTsKICAgICBtX3Ry
YW5zYWN0aW9ucy5yZW1vdmUodHJhbnNhY3Rpb24tPmlkKCkpOwotICAgIGlmICh0cmFuc2FjdGlv
bi0+bW9kZSgpID09IElEQlRyYW5zYWN0aW9uOjpWRVJTSU9OX0NIQU5HRSkgeworICAgIGlmICh0
cmFuc2FjdGlvbi0+bW9kZSgpID09IEluZGV4ZWREQjo6VHJhbnNhY3Rpb25WZXJzaW9uQ2hhbmdl
KSB7CiAgICAgICAgIEFTU0VSVCh0cmFuc2FjdGlvbi5nZXQoKSA9PSBtX3J1bm5pbmdWZXJzaW9u
Q2hhbmdlVHJhbnNhY3Rpb24uZ2V0KCkpOwogICAgICAgICBtX3J1bm5pbmdWZXJzaW9uQ2hhbmdl
VHJhbnNhY3Rpb24uY2xlYXIoKTsKICAgICB9CkBAIC0xMTAwLDcgKzExMDAsNyBAQCB2b2lkIElE
QkRhdGFiYXNlQmFja2VuZEltcGw6OnRyYW5zYWN0aW9uRmluaXNoZWQoUGFzc1JlZlB0cjxJREJU
cmFuc2FjdGlvbkJhY2tlbgogdm9pZCBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjp0cmFuc2FjdGlv
bkZpbmlzaGVkQW5kQWJvcnRGaXJlZChQYXNzUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZElt
cGw+IHBycFRyYW5zYWN0aW9uKQogewogICAgIFJlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJ
bXBsPiB0cmFuc2FjdGlvbiA9IHBycFRyYW5zYWN0aW9uOwotICAgIGlmICh0cmFuc2FjdGlvbi0+
bW9kZSgpID09IElEQlRyYW5zYWN0aW9uOjpWRVJTSU9OX0NIQU5HRSkgeworICAgIGlmICh0cmFu
c2FjdGlvbi0+bW9kZSgpID09IEluZGV4ZWREQjo6VHJhbnNhY3Rpb25WZXJzaW9uQ2hhbmdlKSB7
CiAgICAgICAgIC8vIElmIHRoaXMgd2FzIGFuIG9wZW4td2l0aC12ZXJzaW9uIGNhbGwsIHRoZXJl
IHdpbGwgYmUgYSAic2Vjb25kCiAgICAgICAgIC8vIGhhbGYiIG9wZW4gY2FsbCB3YWl0aW5nIGZv
ciB1cyBpbiBwcm9jZXNzUGVuZGluZ0NhbGxzLgogICAgICAgICAvLyBGSVhNRTogV2hlbiB3ZSBu
byBsb25nZXIgc3VwcG9ydCBzZXRWZXJzaW9uLCBhc3NlcnQgc3VjaCBhIHRoaW5nLgpAQCAtMTEx
NSw3ICsxMTE1LDcgQEAgdm9pZCBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjp0cmFuc2FjdGlvbkZp
bmlzaGVkQW5kQWJvcnRGaXJlZChQYXNzUmVmUHRyPElEQlRyYW4KIHZvaWQgSURCRGF0YWJhc2VC
YWNrZW5kSW1wbDo6dHJhbnNhY3Rpb25GaW5pc2hlZEFuZENvbXBsZXRlRmlyZWQoUGFzc1JlZlB0
cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsPiBwcnBUcmFuc2FjdGlvbikKIHsKICAgICBSZWZQ
dHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbD4gdHJhbnNhY3Rpb24gPSBwcnBUcmFuc2FjdGlv
bjsKLSAgICBpZiAodHJhbnNhY3Rpb24tPm1vZGUoKSA9PSBJREJUcmFuc2FjdGlvbjo6VkVSU0lP
Tl9DSEFOR0UpCisgICAgaWYgKHRyYW5zYWN0aW9uLT5tb2RlKCkgPT0gSW5kZXhlZERCOjpUcmFu
c2FjdGlvblZlcnNpb25DaGFuZ2UpCiAgICAgICAgIHByb2Nlc3NQZW5kaW5nQ2FsbHMoKTsKIH0K
IApAQCAtMTE2NSw3ICsxMTY1LDcgQEAgdm9pZCBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpwcm9j
ZXNzUGVuZGluZ0NhbGxzKCkKIAogdm9pZCBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpjcmVhdGVU
cmFuc2FjdGlvbihpbnQ2NF90IHRyYW5zYWN0aW9uSWQsIFBhc3NSZWZQdHI8SURCRGF0YWJhc2VD
YWxsYmFja3M+IGNhbGxiYWNrcywgY29uc3QgVmVjdG9yPGludDY0X3Q+JiBvYmplY3RTdG9yZUlk
cywgdW5zaWduZWQgc2hvcnQgbW9kZSkKIHsKLSAgICBSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNr
ZW5kSW1wbD4gdHJhbnNhY3Rpb24gPSBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsOjpjcmVhdGUo
dHJhbnNhY3Rpb25JZCwgY2FsbGJhY2tzLCBvYmplY3RTdG9yZUlkcywgc3RhdGljX2Nhc3Q8SURC
VHJhbnNhY3Rpb246Ok1vZGU+KG1vZGUpLCB0aGlzKTsKKyAgICBSZWZQdHI8SURCVHJhbnNhY3Rp
b25CYWNrZW5kSW1wbD4gdHJhbnNhY3Rpb24gPSBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsOjpj
cmVhdGUodHJhbnNhY3Rpb25JZCwgY2FsbGJhY2tzLCBvYmplY3RTdG9yZUlkcywgc3RhdGljX2Nh
c3Q8SW5kZXhlZERCOjpUcmFuc2FjdGlvbk1vZGU+KG1vZGUpLCB0aGlzKTsKICAgICBBU1NFUlQo
IW1fdHJhbnNhY3Rpb25zLmNvbnRhaW5zKHRyYW5zYWN0aW9uSWQpKTsKICAgICBtX3RyYW5zYWN0
aW9ucy5hZGQodHJhbnNhY3Rpb25JZCwgdHJhbnNhY3Rpb24uZ2V0KCkpOwogfQpAQCAtMTI1Nyw3
ICsxMjU3LDcgQEAgdm9pZCBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpydW5JbnRWZXJzaW9uQ2hh
bmdlVHJhbnNhY3Rpb24oUGFzc1JlZlB0cjxJREJDYWxsYmEKICAgICB9CiAKICAgICBWZWN0b3I8
aW50NjRfdD4gb2JqZWN0U3RvcmVJZHM7Ci0gICAgY3JlYXRlVHJhbnNhY3Rpb24odHJhbnNhY3Rp
b25JZCwgZGF0YWJhc2VDYWxsYmFja3MsIG9iamVjdFN0b3JlSWRzLCBJREJUcmFuc2FjdGlvbjo6
VkVSU0lPTl9DSEFOR0UpOworICAgIGNyZWF0ZVRyYW5zYWN0aW9uKHRyYW5zYWN0aW9uSWQsIGRh
dGFiYXNlQ2FsbGJhY2tzLCBvYmplY3RTdG9yZUlkcywgSW5kZXhlZERCOjpUcmFuc2FjdGlvblZl
cnNpb25DaGFuZ2UpOwogICAgIFJlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsPiB0cmFu
c2FjdGlvbiA9IG1fdHJhbnNhY3Rpb25zLmdldCh0cmFuc2FjdGlvbklkKTsKIAogICAgIHRyYW5z
YWN0aW9uLT5zY2hlZHVsZVRhc2soVmVyc2lvbkNoYW5nZU9wZXJhdGlvbjo6Y3JlYXRlKHRoaXMs
IHRyYW5zYWN0aW9uSWQsIHJlcXVlc3RlZFZlcnNpb24sIGNhbGxiYWNrcywgZGF0YWJhc2VDYWxs
YmFja3MpLCBWZXJzaW9uQ2hhbmdlQWJvcnRPcGVyYXRpb246OmNyZWF0ZSh0aGlzLCBtX21ldGFk
YXRhLnZlcnNpb24sIG1fbWV0YWRhdGEuaW50VmVyc2lvbikpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VCYWNrZW5kSW1wbC5oIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VCYWNrZW5kSW1wbC5oCmlu
ZGV4IDFlYmM4NzgxMmU1YWU5NmRmZGI1ODc3ZDFkZjNiOTVhYjliMzAzNmQuLjM1M2JmYTA5MzE4
OWQxZDg0YmRmYTA2OTE5OTc3NWQ1ODAxNWNiOTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQmFja2VuZEltcGwuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmRJbXBsLmgKQEAgLTI3
LDcgKzI3LDcgQEAKICNkZWZpbmUgSURCRGF0YWJhc2VCYWNrZW5kSW1wbF9oCiAKICNpbmNsdWRl
ICJJREJDYWxsYmFja3MuaCIKLSNpbmNsdWRlICJJREJEYXRhYmFzZS5oIgorI2luY2x1ZGUgIklE
Qk1ldGFkYXRhLmgiCiAjaW5jbHVkZSA8c3RkaW50Lmg+CiAjaW5jbHVkZSA8d3RmL0RlcXVlLmg+
CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KQEAgLTg0LDcgKzg0LDcgQEAgcHVibGljOgogICAg
IHZpcnR1YWwgdm9pZCBwdXQoaW50NjRfdCB0cmFuc2FjdGlvbklkLCBpbnQ2NF90IG9iamVjdFN0
b3JlSWQsIFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiB2YWx1ZSwgUGFzc1JlZlB0cjxJREJLZXk+
LCBQdXRNb2RlLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4sIGNvbnN0IFZlY3RvcjxpbnQ2NF90
PiYgaW5kZXhJZHMsIGNvbnN0IFZlY3RvcjxJbmRleEtleXM+JikgT1ZFUlJJREU7CiAgICAgdmly
dHVhbCB2b2lkIHNldEluZGV4S2V5cyhpbnQ2NF90IHRyYW5zYWN0aW9uSWQsIGludDY0X3Qgb2Jq
ZWN0U3RvcmVJZCwgUGFzc1JlZlB0cjxJREJLZXk+IHBycFByaW1hcnlLZXksIGNvbnN0IFZlY3Rv
cjxpbnQ2NF90PiYgaW5kZXhJZHMsIGNvbnN0IFZlY3RvcjxJbmRleEtleXM+JikgT1ZFUlJJREU7
CiAgICAgdmlydHVhbCB2b2lkIHNldEluZGV4ZXNSZWFkeShpbnQ2NF90IHRyYW5zYWN0aW9uSWQs
IGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgY29uc3QgVmVjdG9yPGludDY0X3Q+JiBpbmRleElkcykg
T1ZFUlJJREU7Ci0gICAgdmlydHVhbCB2b2lkIG9wZW5DdXJzb3IoaW50NjRfdCB0cmFuc2FjdGlv
bklkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGludDY0X3QgaW5kZXhJZCwgUGFzc1JlZlB0cjxJ
REJLZXlSYW5nZT4sIHVuc2lnbmVkIHNob3J0IGRpcmVjdGlvbiwgYm9vbCBrZXlPbmx5LCBUYXNr
VHlwZSwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+KSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZv
aWQgb3BlbkN1cnNvcihpbnQ2NF90IHRyYW5zYWN0aW9uSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJ
ZCwgaW50NjRfdCBpbmRleElkLCBQYXNzUmVmUHRyPElEQktleVJhbmdlPiwgSW5kZXhlZERCOjpD
dXJzb3JEaXJlY3Rpb24sIGJvb2wga2V5T25seSwgVGFza1R5cGUsIFBhc3NSZWZQdHI8SURCQ2Fs
bGJhY2tzPikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIGNvdW50KGludDY0X3QgdHJhbnNh
Y3Rpb25JZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBpbnQ2NF90IGluZGV4SWQsIFBhc3NSZWZQ
dHI8SURCS2V5UmFuZ2U+LCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4pIE9WRVJSSURFOwogICAg
IHZpcnR1YWwgdm9pZCBkZWxldGVSYW5nZShpbnQ2NF90IHRyYW5zYWN0aW9uSWQsIGludDY0X3Qg
b2JqZWN0U3RvcmVJZCwgUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4sIFBhc3NSZWZQdHI8SURCQ2Fs
bGJhY2tzPikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIGNsZWFyKGludDY0X3QgdHJhbnNh
Y3Rpb25JZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4p
IE9WRVJSSURFOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
SURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2UuaAppbmRleCBlMDAxNGViM2UyZGNj
MmEzZjQzNDI1MDc0NDU3OTMwNWI3MTY3YzQ2Li4zZTUxY2MwNmEyMjM5YWNlOGU3OThjNGE4MzYw
MzY0YWYwYTI5NDA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9JREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2UuaApAQCAtMjYsNyArMjYs
OCBAQAogI2lmbmRlZiBJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2VfaAogI2RlZmluZSBJREJE
YXRhYmFzZUJhY2tlbmRJbnRlcmZhY2VfaAogCi0jaW5jbHVkZSAiSURCVHJhbnNhY3Rpb24uaCIK
KyNpbmNsdWRlICJJREJEYXRhYmFzZUVycm9yLmgiCisjaW5jbHVkZSAiSW5kZXhlZERCLmgiCiAj
aW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgog
I2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgpAQCAtODUsNyArODYsNyBAQCBwdWJsaWM6
CiAgICAgdmlydHVhbCB2b2lkIHB1dChpbnQ2NF90IHRyYW5zYWN0aW9uSWQsIGludDY0X3Qgb2Jq
ZWN0U3RvcmVJZCwgUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+IHZhbHVlLCBQYXNzUmVmUHRyPElE
QktleT4sIFB1dE1vZGUsIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiwgY29uc3QgVmVjdG9yPGlu
dDY0X3Q+JiBpbmRleElkcywgY29uc3QgVmVjdG9yPEluZGV4S2V5cz4mKSA9IDA7CiAgICAgdmly
dHVhbCB2b2lkIHNldEluZGV4S2V5cyhpbnQ2NF90IHRyYW5zYWN0aW9uSWQsIGludDY0X3Qgb2Jq
ZWN0U3RvcmVJZCwgUGFzc1JlZlB0cjxJREJLZXk+IHBycFByaW1hcnlLZXksIGNvbnN0IFZlY3Rv
cjxpbnQ2NF90PiYgaW5kZXhJZHMsIGNvbnN0IFZlY3RvcjxJbmRleEtleXM+JikgPSAwOwogICAg
IHZpcnR1YWwgdm9pZCBzZXRJbmRleGVzUmVhZHkoaW50NjRfdCB0cmFuc2FjdGlvbklkLCBpbnQ2
NF90IG9iamVjdFN0b3JlSWQsIGNvbnN0IFZlY3RvcjxpbnQ2NF90PiYgaW5kZXhJZHMpID0gMDsK
LSAgICB2aXJ0dWFsIHZvaWQgb3BlbkN1cnNvcihpbnQ2NF90IHRyYW5zYWN0aW9uSWQsIGludDY0
X3Qgb2JqZWN0U3RvcmVJZCwgaW50NjRfdCBpbmRleElkLCBQYXNzUmVmUHRyPElEQktleVJhbmdl
PiwgdW5zaWduZWQgc2hvcnQgZGlyZWN0aW9uLCBib29sIGtleU9ubHksIFRhc2tUeXBlLCBQYXNz
UmVmUHRyPElEQkNhbGxiYWNrcz4pID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgb3BlbkN1cnNvcihp
bnQ2NF90IHRyYW5zYWN0aW9uSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgaW50NjRfdCBpbmRl
eElkLCBQYXNzUmVmUHRyPElEQktleVJhbmdlPiwgSW5kZXhlZERCOjpDdXJzb3JEaXJlY3Rpb24s
IGJvb2wga2V5T25seSwgVGFza1R5cGUsIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPikgPSAwOwog
ICAgIHZpcnR1YWwgdm9pZCBjb3VudChpbnQ2NF90IHRyYW5zYWN0aW9uSWQsIGludDY0X3Qgb2Jq
ZWN0U3RvcmVJZCwgaW50NjRfdCBpbmRleElkLCBQYXNzUmVmUHRyPElEQktleVJhbmdlPiwgUGFz
c1JlZlB0cjxJREJDYWxsYmFja3M+KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRlbGV0ZVJhbmdl
KGludDY0X3QgdHJhbnNhY3Rpb25JZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBQYXNzUmVmUHRy
PElEQktleVJhbmdlPiwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+KSA9IDA7CiAgICAgdmlydHVh
bCB2b2lkIGNsZWFyKGludDY0X3QgdHJhbnNhY3Rpb25JZCwgaW50NjRfdCBvYmplY3RTdG9yZUlk
LCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4pID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkZhY3RvcnkuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL0lEQkZhY3RvcnkuaAppbmRleCBjYjFiN2IwYjM3NmI3YWE2ZDg0OWM2ODQ4
YjMwZTNlMWNlNjAyZWY4Li5jYzYxY2Q3YzZmYmQxMmU0ZTA5YTc3ZWM5ZGQwZGEyMGNmZTc3MGI5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRmFjdG9yeS5oCkBA
IC0yOCw3ICsyOCw2IEBACiAjaWZuZGVmIElEQkZhY3RvcnlfaAogI2RlZmluZSBJREJGYWN0b3J5
X2gKIAotI2luY2x1ZGUgIklEQkZhY3RvcnlCYWNrZW5kSW50ZXJmYWNlLmgiCiAjaW5jbHVkZSAi
SURCT3BlbkRCUmVxdWVzdC5oIgogI2luY2x1ZGUgIlNjcmlwdFdyYXBwYWJsZS5oIgogI2luY2x1
ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9JREJJbmRleC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9JREJJbmRleC5jcHAKaW5kZXggYmViOTgzNmE1NGVhYTg5YTVjODdiMmE1OTE3Njg5MjM3ZWMy
NDIwZS4uZmY1ZDQzNjdiODNiOTA4NWI4MzlhNzQ2Yjg2Y2I4NjA2M2FmYjE4MyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCSW5kZXguY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkluZGV4LmNwcApAQCAtMjgsNyArMjgs
NiBAQAogCiAjaWYgRU5BQkxFKElOREVYRURfREFUQUJBU0UpCiAKLSNpbmNsdWRlICJJREJDdXJz
b3JCYWNrZW5kSW50ZXJmYWNlLmgiCiAjaW5jbHVkZSAiSURCRGF0YWJhc2VFeGNlcHRpb24uaCIK
ICNpbmNsdWRlICJJREJLZXkuaCIKICNpbmNsdWRlICJJREJLZXlSYW5nZS5oIgpAQCAtNDAsNyAr
MzksNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0YXRpYyBjb25zdCB1bnNpZ25lZCBz
aG9ydCBkZWZhdWx0RGlyZWN0aW9uID0gSURCQ3Vyc29yOjpORVhUOworc3RhdGljIGNvbnN0IHVu
c2lnbmVkIHNob3J0IGRlZmF1bHREaXJlY3Rpb24gPSBJbmRleGVkREI6OkN1cnNvck5leHQ7CiAK
IElEQkluZGV4OjpJREJJbmRleChjb25zdCBJREJJbmRleE1ldGFkYXRhJiBtZXRhZGF0YSwgSURC
T2JqZWN0U3RvcmUqIG9iamVjdFN0b3JlLCBJREJUcmFuc2FjdGlvbiogdHJhbnNhY3Rpb24pCiAg
ICAgOiBtX21ldGFkYXRhKG1ldGFkYXRhKQpAQCAtNjgsMTIgKzY3LDEyIEBAIFBhc3NSZWZQdHI8
SURCUmVxdWVzdD4gSURCSW5kZXg6Om9wZW5DdXJzb3IoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCog
Y29udGV4dCwgUGFzCiAgICAgICAgIGVjID0gSURCRGF0YWJhc2VFeGNlcHRpb246OlRyYW5zYWN0
aW9uSW5hY3RpdmVFcnJvcjsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQotICAgIElEQkN1cnNv
cjo6RGlyZWN0aW9uIGRpcmVjdGlvbiA9IElEQkN1cnNvcjo6c3RyaW5nVG9EaXJlY3Rpb24oZGly
ZWN0aW9uU3RyaW5nLCBjb250ZXh0LCBlYyk7CisgICAgSW5kZXhlZERCOjpDdXJzb3JEaXJlY3Rp
b24gZGlyZWN0aW9uID0gSURCQ3Vyc29yOjpzdHJpbmdUb0RpcmVjdGlvbihkaXJlY3Rpb25TdHJp
bmcsIGNvbnRleHQsIGVjKTsKICAgICBpZiAoZWMpCiAgICAgICAgIHJldHVybiAwOwogCiAgICAg
UmVmUHRyPElEQlJlcXVlc3Q+IHJlcXVlc3QgPSBJREJSZXF1ZXN0OjpjcmVhdGUoY29udGV4dCwg
SURCQW55OjpjcmVhdGUodGhpcyksIG1fdHJhbnNhY3Rpb24uZ2V0KCkpOwotICAgIHJlcXVlc3Qt
PnNldEN1cnNvckRldGFpbHMoSURCQ3Vyc29yQmFja2VuZEludGVyZmFjZTo6S2V5QW5kVmFsdWUs
IGRpcmVjdGlvbik7CisgICAgcmVxdWVzdC0+c2V0Q3Vyc29yRGV0YWlscyhJbmRleGVkREI6OkN1
cnNvcktleUFuZFZhbHVlLCBkaXJlY3Rpb24pOwogICAgIGJhY2tlbmREQigpLT5vcGVuQ3Vyc29y
KG1fdHJhbnNhY3Rpb24tPmlkKCksIG1fb2JqZWN0U3RvcmUtPmlkKCksIG1fbWV0YWRhdGEuaWQs
IGtleVJhbmdlLCBkaXJlY3Rpb24sIGZhbHNlLCBJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2U6
Ok5vcm1hbFRhc2ssIHJlcXVlc3QpOwogICAgIHJldHVybiByZXF1ZXN0OwogfQpAQCAtMTIzLDEy
ICsxMjIsMTIgQEAgUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBJREJJbmRleDo6b3BlbktleUN1cnNv
cihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LAogICAgICAgICBlYyA9IElEQkRhdGFi
YXNlRXhjZXB0aW9uOjpUcmFuc2FjdGlvbkluYWN0aXZlRXJyb3I7CiAgICAgICAgIHJldHVybiAw
OwogICAgIH0KLSAgICBJREJDdXJzb3I6OkRpcmVjdGlvbiBkaXJlY3Rpb24gPSBJREJDdXJzb3I6
OnN0cmluZ1RvRGlyZWN0aW9uKGRpcmVjdGlvblN0cmluZywgY29udGV4dCwgZWMpOworICAgIElu
ZGV4ZWREQjo6Q3Vyc29yRGlyZWN0aW9uIGRpcmVjdGlvbiA9IElEQkN1cnNvcjo6c3RyaW5nVG9E
aXJlY3Rpb24oZGlyZWN0aW9uU3RyaW5nLCBjb250ZXh0LCBlYyk7CiAgICAgaWYgKGVjKQogICAg
ICAgICByZXR1cm4gMDsKIAogICAgIFJlZlB0cjxJREJSZXF1ZXN0PiByZXF1ZXN0ID0gSURCUmVx
dWVzdDo6Y3JlYXRlKGNvbnRleHQsIElEQkFueTo6Y3JlYXRlKHRoaXMpLCBtX3RyYW5zYWN0aW9u
LmdldCgpKTsKLSAgICByZXF1ZXN0LT5zZXRDdXJzb3JEZXRhaWxzKElEQkN1cnNvckJhY2tlbmRJ
bnRlcmZhY2U6OktleU9ubHksIGRpcmVjdGlvbik7CisgICAgcmVxdWVzdC0+c2V0Q3Vyc29yRGV0
YWlscyhJbmRleGVkREI6OkN1cnNvcktleU9ubHksIGRpcmVjdGlvbik7CiAgICAgYmFja2VuZERC
KCktPm9wZW5DdXJzb3IobV90cmFuc2FjdGlvbi0+aWQoKSwgbV9vYmplY3RTdG9yZS0+aWQoKSwg
bV9tZXRhZGF0YS5pZCwga2V5UmFuZ2UsIGRpcmVjdGlvbiwgdHJ1ZSwgSURCRGF0YWJhc2VCYWNr
ZW5kSW50ZXJmYWNlOjpOb3JtYWxUYXNrLCByZXF1ZXN0KTsKICAgICByZXR1cm4gcmVxdWVzdDsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVj
dFN0b3JlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0
b3JlLmNwcAppbmRleCBmYWE1Y2JlMjYxY2NiMDRkNGM4OTM5N2Q2Y2ZjM2IyZmUyN2E4YTNmLi41
ODkwZWMzN2ZjMWMyNTdkZWFkMmZmZTVmZWU4NjEzN2UwN2JlNTIzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmUuY3BwCkBAIC0zMSw3
ICszMSw2IEBACiAjaW5jbHVkZSAiRE9NU3RyaW5nTGlzdC5oIgogI2luY2x1ZGUgIklEQkFueS5o
IgogI2luY2x1ZGUgIklEQkJpbmRpbmdVdGlsaXRpZXMuaCIKLSNpbmNsdWRlICJJREJDdXJzb3JC
YWNrZW5kSW50ZXJmYWNlLmgiCiAjaW5jbHVkZSAiSURCQ3Vyc29yV2l0aFZhbHVlLmgiCiAjaW5j
bHVkZSAiSURCRGF0YWJhc2UuaCIKICNpbmNsdWRlICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5oIgpA
QCAtNDgsNyArNDcsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0YXRpYyBjb25zdCB1
bnNpZ25lZCBzaG9ydCBkZWZhdWx0RGlyZWN0aW9uID0gSURCQ3Vyc29yOjpORVhUOworc3RhdGlj
IGNvbnN0IHVuc2lnbmVkIHNob3J0IGRlZmF1bHREaXJlY3Rpb24gPSBJbmRleGVkREI6OkN1cnNv
ck5leHQ7CiAKIElEQk9iamVjdFN0b3JlOjpJREJPYmplY3RTdG9yZShjb25zdCBJREJPYmplY3RT
dG9yZU1ldGFkYXRhJiBtZXRhZGF0YSwgSURCVHJhbnNhY3Rpb24qIHRyYW5zYWN0aW9uKQogICAg
IDogbV9tZXRhZGF0YShtZXRhZGF0YSkKQEAgLTUwNSwxMiArNTA0LDEyIEBAIFBhc3NSZWZQdHI8
SURCUmVxdWVzdD4gSURCT2JqZWN0U3RvcmU6Om9wZW5DdXJzb3IoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCogY29udGV4CiAgICAgICAgIGVjID0gSURCRGF0YWJhc2VFeGNlcHRpb246OlRyYW5zYWN0
aW9uSW5hY3RpdmVFcnJvcjsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQotICAgIElEQkN1cnNv
cjo6RGlyZWN0aW9uIGRpcmVjdGlvbiA9IElEQkN1cnNvcjo6c3RyaW5nVG9EaXJlY3Rpb24oZGly
ZWN0aW9uU3RyaW5nLCBjb250ZXh0LCBlYyk7CisgICAgSW5kZXhlZERCOjpDdXJzb3JEaXJlY3Rp
b24gZGlyZWN0aW9uID0gSURCQ3Vyc29yOjpzdHJpbmdUb0RpcmVjdGlvbihkaXJlY3Rpb25TdHJp
bmcsIGNvbnRleHQsIGVjKTsKICAgICBpZiAoZWMpCiAgICAgICAgIHJldHVybiAwOwogCiAgICAg
UmVmUHRyPElEQlJlcXVlc3Q+IHJlcXVlc3QgPSBJREJSZXF1ZXN0OjpjcmVhdGUoY29udGV4dCwg
SURCQW55OjpjcmVhdGUodGhpcyksIG1fdHJhbnNhY3Rpb24uZ2V0KCkpOwotICAgIHJlcXVlc3Qt
PnNldEN1cnNvckRldGFpbHMoSURCQ3Vyc29yQmFja2VuZEludGVyZmFjZTo6S2V5QW5kVmFsdWUs
IGRpcmVjdGlvbik7CisgICAgcmVxdWVzdC0+c2V0Q3Vyc29yRGV0YWlscyhJbmRleGVkREI6OkN1
cnNvcktleUFuZFZhbHVlLCBkaXJlY3Rpb24pOwogCiAgICAgYmFja2VuZERCKCktPm9wZW5DdXJz
b3IobV90cmFuc2FjdGlvbi0+aWQoKSwgaWQoKSwgSURCSW5kZXhNZXRhZGF0YTo6SW52YWxpZElk
LCByYW5nZSwgZGlyZWN0aW9uLCBmYWxzZSwgc3RhdGljX2Nhc3Q8SURCRGF0YWJhc2VCYWNrZW5k
SW50ZXJmYWNlOjpUYXNrVHlwZT4odGFza1R5cGUpLCByZXF1ZXN0KTsKICAgICByZXR1cm4gcmVx
dWVzdC5yZWxlYXNlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9JREJSZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lE
QlJlcXVlc3QuY3BwCmluZGV4IDJiMTM0MzkxMTg0MzQzYWU5Y2ZhMDQ4NTM4MDNmMDcxNTlhODYz
NGIuLjY2NWUzZmZhZWI3ZjJiNDMzZDc1YTdmOGQ0NmU3ZmFiYTA4NjZjMmYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlJlcXVlc3QuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlJlcXVlc3QuY3BwCkBAIC0zNyw2ICsz
Nyw3IEBACiAjaW5jbHVkZSAiRXZlbnRRdWV1ZS5oIgogI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGVQ
bGFjZWhvbGRlci5oIgogI2luY2x1ZGUgIklEQkJpbmRpbmdVdGlsaXRpZXMuaCIKKyNpbmNsdWRl
ICJJREJDdXJzb3JCYWNrZW5kSW50ZXJmYWNlLmgiCiAjaW5jbHVkZSAiSURCQ3Vyc29yV2l0aFZh
bHVlLmgiCiAjaW5jbHVkZSAiSURCRGF0YWJhc2UuaCIKICNpbmNsdWRlICJJREJFdmVudERpc3Bh
dGNoZXIuaCIKQEAgLTc3LDggKzc4LDggQEAgSURCUmVxdWVzdDo6SURCUmVxdWVzdChTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBQYXNzUmVmUHRyPElEQkFueT4gc291cmMKICAgICAs
IG1fc291cmNlKHNvdXJjZSkKICAgICAsIG1fdGFza1R5cGUodGFza1R5cGUpCiAgICAgLCBtX2hh
c1BlbmRpbmdBY3Rpdml0eSh0cnVlKQotICAgICwgbV9jdXJzb3JUeXBlKElEQkN1cnNvckJhY2tl
bmRJbnRlcmZhY2U6OktleUFuZFZhbHVlKQotICAgICwgbV9jdXJzb3JEaXJlY3Rpb24oSURCQ3Vy
c29yOjpORVhUKQorICAgICwgbV9jdXJzb3JUeXBlKEluZGV4ZWREQjo6Q3Vyc29yS2V5QW5kVmFs
dWUpCisgICAgLCBtX2N1cnNvckRpcmVjdGlvbihJbmRleGVkREI6OkN1cnNvck5leHQpCiAgICAg
LCBtX2N1cnNvckZpbmlzaGVkKGZhbHNlKQogICAgICwgbV9wZW5kaW5nQ3Vyc29yKDApCiAgICAg
LCBtX2RpZEZpcmVVcGdyYWRlTmVlZGVkRXZlbnQoZmFsc2UpCkBAIC0xODUsNyArMTg2LDcgQEAg
dm9pZCBJREJSZXF1ZXN0OjphYm9ydCgpCiAgICAgbV9yZXF1ZXN0QWJvcnRlZCA9IHRydWU7CiB9
CiAKLXZvaWQgSURCUmVxdWVzdDo6c2V0Q3Vyc29yRGV0YWlscyhJREJDdXJzb3JCYWNrZW5kSW50
ZXJmYWNlOjpDdXJzb3JUeXBlIGN1cnNvclR5cGUsIElEQkN1cnNvcjo6RGlyZWN0aW9uIGRpcmVj
dGlvbikKK3ZvaWQgSURCUmVxdWVzdDo6c2V0Q3Vyc29yRGV0YWlscyhJbmRleGVkREI6OkN1cnNv
clR5cGUgY3Vyc29yVHlwZSwgSW5kZXhlZERCOjpDdXJzb3JEaXJlY3Rpb24gZGlyZWN0aW9uKQog
ewogICAgIEFTU0VSVChtX3JlYWR5U3RhdGUgPT0gUEVORElORyk7CiAgICAgQVNTRVJUKCFtX3Bl
bmRpbmdDdXJzb3IpOwpAQCAtMjI4LDcgKzIyOSw3IEBAIHZvaWQgSURCUmVxdWVzdDo6c2V0UmVz
dWx0Q3Vyc29yKFBhc3NSZWZQdHI8SURCQ3Vyc29yPiBjdXJzb3IsIFBhc3NSZWZQdHI8SURCS2V5
CiAgICAgbV9jdXJzb3JQcmltYXJ5S2V5ID0gcHJpbWFyeUtleTsKICAgICBtX2N1cnNvclZhbHVl
ID0gdmFsdWU7CiAKLSAgICBpZiAobV9jdXJzb3JUeXBlID09IElEQkN1cnNvckJhY2tlbmRJbnRl
cmZhY2U6OktleU9ubHkpIHsKKyAgICBpZiAobV9jdXJzb3JUeXBlID09IEluZGV4ZWREQjo6Q3Vy
c29yS2V5T25seSkgewogICAgICAgICBtX3Jlc3VsdCA9IElEQkFueTo6Y3JlYXRlKGN1cnNvcik7
CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0yOTQsMTAgKzI5NSwxMCBAQCB2b2lkIElEQlJl
cXVlc3Q6Om9uU3VjY2VzcyhQYXNzUmVmUHRyPElEQkN1cnNvckJhY2tlbmRJbnRlcmZhY2U+IGJh
Y2tlbmQsIFBhc3NSZQogICAgIEFTU0VSVCghbV9wZW5kaW5nQ3Vyc29yKTsKICAgICBSZWZQdHI8
SURCQ3Vyc29yPiBjdXJzb3I7CiAgICAgc3dpdGNoIChtX2N1cnNvclR5cGUpIHsKLSAgICBjYXNl
IElEQkN1cnNvckJhY2tlbmRJbnRlcmZhY2U6OktleU9ubHk6CisgICAgY2FzZSBJbmRleGVkREI6
OkN1cnNvcktleU9ubHk6CiAgICAgICAgIGN1cnNvciA9IElEQkN1cnNvcjo6Y3JlYXRlKGJhY2tl
bmQsIG1fY3Vyc29yRGlyZWN0aW9uLCB0aGlzLCBtX3NvdXJjZS5nZXQoKSwgbV90cmFuc2FjdGlv
bi5nZXQoKSk7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgSURCQ3Vyc29yQmFja2VuZEludGVy
ZmFjZTo6S2V5QW5kVmFsdWU6CisgICAgY2FzZSBJbmRleGVkREI6OkN1cnNvcktleUFuZFZhbHVl
OgogICAgICAgICBjdXJzb3IgPSBJREJDdXJzb3JXaXRoVmFsdWU6OmNyZWF0ZShiYWNrZW5kLCBt
X2N1cnNvckRpcmVjdGlvbiwgdGhpcywgbV9zb3VyY2UuZ2V0KCksIG1fdHJhbnNhY3Rpb24uZ2V0
KCkpOwogICAgICAgICBicmVhazsKICAgICBkZWZhdWx0OgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCUmVxdWVzdC5oIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvSURCUmVxdWVzdC5oCmluZGV4IGQwNjdlYjI5YTg4NTU3OTJjMGMxMjU1
Nzc1Y2QwMjQ4ODhjOTUxYjUuLmI4MzA2NDA3MDAzYzEyMGJiYTE3NjM4MjRiOGQyYTkzOTZjZmEy
NzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlJlcXVl
c3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJSZXF1ZXN0LmgK
QEAgLTQyLDcgKzQyLDYgQEAKICNpbmNsdWRlICJJREJBbnkuaCIKICNpbmNsdWRlICJJREJDYWxs
YmFja3MuaCIKICNpbmNsdWRlICJJREJDdXJzb3IuaCIKLSNpbmNsdWRlICJJREJDdXJzb3JCYWNr
ZW5kSW50ZXJmYWNlLmgiCiAjaW5jbHVkZSAiU2NyaXB0V3JhcHBhYmxlLmgiCiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKQEAgLTc4LDcgKzc3LDcgQEAgcHVibGljOgogICAgIERFRklORV9BVFRSSUJV
VEVfRVZFTlRfTElTVEVORVIoZXJyb3IpOwogCiAgICAgdm9pZCBtYXJrRWFybHlEZWF0aCgpOwot
ICAgIHZvaWQgc2V0Q3Vyc29yRGV0YWlscyhJREJDdXJzb3JCYWNrZW5kSW50ZXJmYWNlOjpDdXJz
b3JUeXBlLCBJREJDdXJzb3I6OkRpcmVjdGlvbik7CisgICAgdm9pZCBzZXRDdXJzb3JEZXRhaWxz
KEluZGV4ZWREQjo6Q3Vyc29yVHlwZSwgSW5kZXhlZERCOjpDdXJzb3JEaXJlY3Rpb24pOwogICAg
IHZvaWQgc2V0UGVuZGluZ0N1cnNvcihQYXNzUmVmUHRyPElEQkN1cnNvcj4pOwogICAgIHZvaWQg
ZmluaXNoQ3Vyc29yKCk7CiAgICAgdm9pZCBhYm9ydCgpOwpAQCAtMTQ5LDggKzE0OCw4IEBAIHBy
aXZhdGU6CiAgICAgVmVjdG9yPFJlZlB0cjxFdmVudD4gPiBtX2VucXVldWVkRXZlbnRzOwogCiAg
ICAgLy8gT25seSB1c2VkIGlmIHRoZSByZXN1bHQgdHlwZSB3aWxsIGJlIGEgY3Vyc29yLgotICAg
IElEQkN1cnNvckJhY2tlbmRJbnRlcmZhY2U6OkN1cnNvclR5cGUgbV9jdXJzb3JUeXBlOwotICAg
IElEQkN1cnNvcjo6RGlyZWN0aW9uIG1fY3Vyc29yRGlyZWN0aW9uOworICAgIEluZGV4ZWREQjo6
Q3Vyc29yVHlwZSBtX2N1cnNvclR5cGU7CisgICAgSW5kZXhlZERCOjpDdXJzb3JEaXJlY3Rpb24g
bV9jdXJzb3JEaXJlY3Rpb247CiAgICAgYm9vbCBtX2N1cnNvckZpbmlzaGVkOwogICAgIFJlZlB0
cjxJREJDdXJzb3I+IG1fcGVuZGluZ0N1cnNvcjsKICAgICBSZWZQdHI8SURCS2V5PiBtX2N1cnNv
cktleTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRy
YW5zYWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5z
YWN0aW9uLmNwcAppbmRleCBiYzBlZGRkZjg0MTAzZmNjZTJkZmVkMTNiMmRhMjNiNDIzNDk2N2Mz
Li5mNTU1OTQzZDgwMzNkODgwOTU4MzU2MzgyNWFkZjBhNTE2NGJkMjQyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb24uY3BwCkBAIC00
NCw3ICs0NCw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUGFzc1JlZlB0cjxJREJUcmFu
c2FjdGlvbj4gSURCVHJhbnNhY3Rpb246OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBj
b250ZXh0LCBpbnQ2NF90IGlkLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgb2JqZWN0U3RvcmVOYW1l
cywgSURCVHJhbnNhY3Rpb246Ok1vZGUgbW9kZSwgSURCRGF0YWJhc2UqIGRiKQorUGFzc1JlZlB0
cjxJREJUcmFuc2FjdGlvbj4gSURCVHJhbnNhY3Rpb246OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiBjb250ZXh0LCBpbnQ2NF90IGlkLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgb2JqZWN0
U3RvcmVOYW1lcywgSW5kZXhlZERCOjpUcmFuc2FjdGlvbk1vZGUgbW9kZSwgSURCRGF0YWJhc2Uq
IGRiKQogewogICAgIElEQk9wZW5EQlJlcXVlc3QqIG9wZW5EQlJlcXVlc3QgPSAwOwogICAgIFJl
ZlB0cjxJREJUcmFuc2FjdGlvbj4gdHJhbnNhY3Rpb24oYWRvcHRSZWYobmV3IElEQlRyYW5zYWN0
aW9uKGNvbnRleHQsIGlkLCBvYmplY3RTdG9yZU5hbWVzLCBtb2RlLCBkYiwgb3BlbkRCUmVxdWVz
dCwgSURCRGF0YWJhc2VNZXRhZGF0YSgpKSkpOwpAQCAtNTQsNyArNTQsNyBAQCBQYXNzUmVmUHRy
PElEQlRyYW5zYWN0aW9uPiBJREJUcmFuc2FjdGlvbjo6Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqIGNvbnRleAogCiBQYXNzUmVmUHRyPElEQlRyYW5zYWN0aW9uPiBJREJUcmFuc2FjdGlv
bjo6Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGludDY0X3QgaWQsIElE
QkRhdGFiYXNlKiBkYiwgSURCT3BlbkRCUmVxdWVzdCogb3BlbkRCUmVxdWVzdCwgY29uc3QgSURC
RGF0YWJhc2VNZXRhZGF0YSYgcHJldmlvdXNNZXRhZGF0YSkKIHsKLSAgICBSZWZQdHI8SURCVHJh
bnNhY3Rpb24+IHRyYW5zYWN0aW9uKGFkb3B0UmVmKG5ldyBJREJUcmFuc2FjdGlvbihjb250ZXh0
LCBpZCwgVmVjdG9yPFN0cmluZz4oKSwgVkVSU0lPTl9DSEFOR0UsIGRiLCBvcGVuREJSZXF1ZXN0
LCBwcmV2aW91c01ldGFkYXRhKSkpOworICAgIFJlZlB0cjxJREJUcmFuc2FjdGlvbj4gdHJhbnNh
Y3Rpb24oYWRvcHRSZWYobmV3IElEQlRyYW5zYWN0aW9uKGNvbnRleHQsIGlkLCBWZWN0b3I8U3Ry
aW5nPigpLCBJbmRleGVkREI6OlRyYW5zYWN0aW9uVmVyc2lvbkNoYW5nZSwgZGIsIG9wZW5EQlJl
cXVlc3QsIHByZXZpb3VzTWV0YWRhdGEpKSk7CiAgICAgdHJhbnNhY3Rpb24tPnN1c3BlbmRJZk5l
ZWRlZCgpOwogICAgIHJldHVybiB0cmFuc2FjdGlvbi5yZWxlYXNlKCk7CiB9CkBAIC05MCw3ICs5
MCw3IEBAIGNvbnN0IEF0b21pY1N0cmluZyYgSURCVHJhbnNhY3Rpb246Om1vZGVSZWFkV3JpdGVM
ZWdhY3koKQogfQogCiAKLUlEQlRyYW5zYWN0aW9uOjpJREJUcmFuc2FjdGlvbihTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiBjb250ZXh0LCBpbnQ2NF90IGlkLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYg
b2JqZWN0U3RvcmVOYW1lcywgSURCVHJhbnNhY3Rpb246Ok1vZGUgbW9kZSwgSURCRGF0YWJhc2Uq
IGRiLCBJREJPcGVuREJSZXF1ZXN0KiBvcGVuREJSZXF1ZXN0LCBjb25zdCBJREJEYXRhYmFzZU1l
dGFkYXRhJiBwcmV2aW91c01ldGFkYXRhKQorSURCVHJhbnNhY3Rpb246OklEQlRyYW5zYWN0aW9u
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGludDY0X3QgaWQsIGNvbnN0IFZlY3Rv
cjxTdHJpbmc+JiBvYmplY3RTdG9yZU5hbWVzLCBJbmRleGVkREI6OlRyYW5zYWN0aW9uTW9kZSBt
b2RlLCBJREJEYXRhYmFzZSogZGIsIElEQk9wZW5EQlJlcXVlc3QqIG9wZW5EQlJlcXVlc3QsIGNv
bnN0IElEQkRhdGFiYXNlTWV0YWRhdGEmIHByZXZpb3VzTWV0YWRhdGEpCiAgICAgOiBBY3RpdmVE
T01PYmplY3QoY29udGV4dCwgdGhpcykKICAgICAsIG1faWQoaWQpCiAgICAgLCBtX2RhdGFiYXNl
KGRiKQpAQCAtMTAyLDcgKzEwMiw3IEBAIElEQlRyYW5zYWN0aW9uOjpJREJUcmFuc2FjdGlvbihT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBpbnQ2NF90IGlkLCBjb25zCiAgICAgLCBt
X2NvbnRleHRTdG9wcGVkKGZhbHNlKQogICAgICwgbV9wcmV2aW91c01ldGFkYXRhKHByZXZpb3Vz
TWV0YWRhdGEpCiB7Ci0gICAgaWYgKG1vZGUgPT0gVkVSU0lPTl9DSEFOR0UpIHsKKyAgICBpZiAo
bW9kZSA9PSBJbmRleGVkREI6OlRyYW5zYWN0aW9uVmVyc2lvbkNoYW5nZSkgewogICAgICAgICAv
LyBOb3QgYWN0aXZlIHVudGlsIHRoZSBjYWxsYmFjay4KICAgICAgICAgbV9zdGF0ZSA9IEluYWN0
aXZlOwogICAgIH0KQEAgLTMzNiwzMCArMzM2LDMwIEBAIGJvb2wgSURCVHJhbnNhY3Rpb246Omhh
c1BlbmRpbmdBY3Rpdml0eSgpIGNvbnN0CiAgICAgcmV0dXJuIG1faGFzUGVuZGluZ0FjdGl2aXR5
OwogfQogCi1JREJUcmFuc2FjdGlvbjo6TW9kZSBJREJUcmFuc2FjdGlvbjo6c3RyaW5nVG9Nb2Rl
KGNvbnN0IFN0cmluZyYgbW9kZVN0cmluZywgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4
dCwgRXhjZXB0aW9uQ29kZSYgZWMpCitJbmRleGVkREI6OlRyYW5zYWN0aW9uTW9kZSBJREJUcmFu
c2FjdGlvbjo6c3RyaW5nVG9Nb2RlKGNvbnN0IFN0cmluZyYgbW9kZVN0cmluZywgU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCogY29udGV4dCwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgaWYgKG1v
ZGVTdHJpbmcuaXNOdWxsKCkKICAgICAgICAgfHwgbW9kZVN0cmluZyA9PSBJREJUcmFuc2FjdGlv
bjo6bW9kZVJlYWRPbmx5KCkpCi0gICAgICAgIHJldHVybiBJREJUcmFuc2FjdGlvbjo6UkVBRF9P
TkxZOworICAgICAgICByZXR1cm4gSW5kZXhlZERCOjpUcmFuc2FjdGlvblJlYWRPbmx5OwogICAg
IGlmIChtb2RlU3RyaW5nID09IElEQlRyYW5zYWN0aW9uOjptb2RlUmVhZFdyaXRlKCkpCi0gICAg
ICAgIHJldHVybiBJREJUcmFuc2FjdGlvbjo6UkVBRF9XUklURTsKKyAgICAgICAgcmV0dXJuIElu
ZGV4ZWREQjo6VHJhbnNhY3Rpb25SZWFkV3JpdGU7CiAKICAgICBlYyA9IFR5cGVFcnJvcjsKLSAg
ICByZXR1cm4gSURCVHJhbnNhY3Rpb246OlJFQURfT05MWTsKKyAgICByZXR1cm4gSW5kZXhlZERC
OjpUcmFuc2FjdGlvblJlYWRPbmx5OwogfQogCi1jb25zdCBBdG9taWNTdHJpbmcmIElEQlRyYW5z
YWN0aW9uOjptb2RlVG9TdHJpbmcoSURCVHJhbnNhY3Rpb246Ok1vZGUgbW9kZSkKK2NvbnN0IEF0
b21pY1N0cmluZyYgSURCVHJhbnNhY3Rpb246Om1vZGVUb1N0cmluZyhJbmRleGVkREI6OlRyYW5z
YWN0aW9uTW9kZSBtb2RlKQogewogICAgIHN3aXRjaCAobW9kZSkgewotICAgIGNhc2UgSURCVHJh
bnNhY3Rpb246OlJFQURfT05MWToKKyAgICBjYXNlIEluZGV4ZWREQjo6VHJhbnNhY3Rpb25SZWFk
T25seToKICAgICAgICAgcmV0dXJuIElEQlRyYW5zYWN0aW9uOjptb2RlUmVhZE9ubHkoKTsKICAg
ICAgICAgYnJlYWs7CiAKLSAgICBjYXNlIElEQlRyYW5zYWN0aW9uOjpSRUFEX1dSSVRFOgorICAg
IGNhc2UgSW5kZXhlZERCOjpUcmFuc2FjdGlvblJlYWRXcml0ZToKICAgICAgICAgcmV0dXJuIElE
QlRyYW5zYWN0aW9uOjptb2RlUmVhZFdyaXRlKCk7CiAgICAgICAgIGJyZWFrOwogCi0gICAgY2Fz
ZSBJREJUcmFuc2FjdGlvbjo6VkVSU0lPTl9DSEFOR0U6CisgICAgY2FzZSBJbmRleGVkREI6OlRy
YW5zYWN0aW9uVmVyc2lvbkNoYW5nZToKICAgICAgICAgcmV0dXJuIElEQlRyYW5zYWN0aW9uOjpt
b2RlVmVyc2lvbkNoYW5nZSgpOwogICAgICAgICBicmVhazsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb24uaCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmgKaW5kZXggNjk3NTBlYjczOWU2
ODA3ZGIxMTg3ZGMwZTZjODQ0ZmM4NTAxMmIyNy4uZjRkNjRjYjdkMTNmZTM1MzI1NmM2ZTE1ZTcy
OTc5ZTUyNTU3NTk3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvSURCVHJhbnNhY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9JREJUcmFuc2FjdGlvbi5oCkBAIC0zNSw2ICszNSw3IEBACiAjaW5jbHVkZSAiRXZlbnROYW1l
cy5oIgogI2luY2x1ZGUgIkV2ZW50VGFyZ2V0LmgiCiAjaW5jbHVkZSAiSURCTWV0YWRhdGEuaCIK
KyNpbmNsdWRlICJJbmRleGVkREIuaCIKICNpbmNsdWRlICJTY3JpcHRXcmFwcGFibGUuaCIKICNp
bmNsdWRlIDx3dGYvSGFzaFNldC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CkBAIC01
MSwxMyArNTIsNyBAQCBzdHJ1Y3QgSURCT2JqZWN0U3RvcmVNZXRhZGF0YTsKIAogY2xhc3MgSURC
VHJhbnNhY3Rpb24gOiBwdWJsaWMgU2NyaXB0V3JhcHBhYmxlLCBwdWJsaWMgUmVmQ291bnRlZDxJ
REJUcmFuc2FjdGlvbj4sIHB1YmxpYyBFdmVudFRhcmdldCwgcHVibGljIEFjdGl2ZURPTU9iamVj
dCB7CiBwdWJsaWM6Ci0gICAgZW51bSBNb2RlIHsKLSAgICAgICAgUkVBRF9PTkxZID0gMCwKLSAg
ICAgICAgUkVBRF9XUklURSA9IDEsCi0gICAgICAgIFZFUlNJT05fQ0hBTkdFID0gMgotICAgIH07
Ci0KLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbj4gY3JlYXRlKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqLCBpbnQ2NF90LCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgb2JqZWN0U3Rv
cmVOYW1lcywgTW9kZSwgSURCRGF0YWJhc2UqKTsKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxJREJU
cmFuc2FjdGlvbj4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBpbnQ2NF90LCBjb25z
dCBWZWN0b3I8U3RyaW5nPiYgb2JqZWN0U3RvcmVOYW1lcywgSW5kZXhlZERCOjpUcmFuc2FjdGlv
bk1vZGUsIElEQkRhdGFiYXNlKik7CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8SURCVHJhbnNhY3Rp
b24+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgaW50NjRfdCwgSURCRGF0YWJhc2Uq
LCBJREJPcGVuREJSZXF1ZXN0KiwgY29uc3QgSURCRGF0YWJhc2VNZXRhZGF0YSYgcHJldmlvdXNN
ZXRhZGF0YSk7CiAgICAgdmlydHVhbCB+SURCVHJhbnNhY3Rpb24oKTsKIApAQCAtNjcsMTYgKzYy
LDE2IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiBtb2RlUmVhZE9u
bHlMZWdhY3koKTsKICAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiBtb2RlUmVhZFdyaXRl
TGVnYWN5KCk7CiAKLSAgICBzdGF0aWMgTW9kZSBzdHJpbmdUb01vZGUoY29uc3QgU3RyaW5nJiwg
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIEV4Y2VwdGlvbkNvZGUmKTsKLSAgICBzdGF0aWMgY29u
c3QgQXRvbWljU3RyaW5nJiBtb2RlVG9TdHJpbmcoTW9kZSk7CisgICAgc3RhdGljIEluZGV4ZWRE
Qjo6VHJhbnNhY3Rpb25Nb2RlIHN0cmluZ1RvTW9kZShjb25zdCBTdHJpbmcmLCBTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiwgRXhjZXB0aW9uQ29kZSYpOworICAgIHN0YXRpYyBjb25zdCBBdG9taWNT
dHJpbmcmIG1vZGVUb1N0cmluZyhJbmRleGVkREI6OlRyYW5zYWN0aW9uTW9kZSk7CiAKICAgICBJ
REJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2UqIGJhY2tlbmREQigpIGNvbnN0OwogCiAgICAgaW50
NjRfdCBpZCgpIGNvbnN0IHsgcmV0dXJuIG1faWQ7IH0KICAgICBib29sIGlzQWN0aXZlKCkgY29u
c3QgeyByZXR1cm4gbV9zdGF0ZSA9PSBBY3RpdmU7IH0KICAgICBib29sIGlzRmluaXNoZWQoKSBj
b25zdCB7IHJldHVybiBtX3N0YXRlID09IEZpbmlzaGVkOyB9Ci0gICAgYm9vbCBpc1JlYWRPbmx5
KCkgY29uc3QgeyByZXR1cm4gbV9tb2RlID09IFJFQURfT05MWTsgfQotICAgIGJvb2wgaXNWZXJz
aW9uQ2hhbmdlKCkgY29uc3QgeyByZXR1cm4gbV9tb2RlID09IFZFUlNJT05fQ0hBTkdFOyB9Cisg
ICAgYm9vbCBpc1JlYWRPbmx5KCkgY29uc3QgeyByZXR1cm4gbV9tb2RlID09IEluZGV4ZWREQjo6
VHJhbnNhY3Rpb25SZWFkT25seTsgfQorICAgIGJvb2wgaXNWZXJzaW9uQ2hhbmdlKCkgY29uc3Qg
eyByZXR1cm4gbV9tb2RlID09IEluZGV4ZWREQjo6VHJhbnNhY3Rpb25WZXJzaW9uQ2hhbmdlOyB9
CiAKICAgICAvLyBJbXBsZW1lbnQgdGhlIElEQlRyYW5zYWN0aW9uIElETAogICAgIGNvbnN0IFN0
cmluZyYgbW9kZSgpIGNvbnN0OwpAQCAtMTI2LDcgKzEyMSw3IEBAIHB1YmxpYzoKICAgICB1c2lu
ZyBSZWZDb3VudGVkPElEQlRyYW5zYWN0aW9uPjo6ZGVyZWY7CiAKIHByaXZhdGU6Ci0gICAgSURC
VHJhbnNhY3Rpb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGludDY0X3QsIGNvbnN0IFZlY3Rv
cjxTdHJpbmc+JiwgTW9kZSwgSURCRGF0YWJhc2UqLCBJREJPcGVuREJSZXF1ZXN0KiwgY29uc3Qg
SURCRGF0YWJhc2VNZXRhZGF0YSYpOworICAgIElEQlRyYW5zYWN0aW9uKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqLCBpbnQ2NF90LCBjb25zdCBWZWN0b3I8U3RyaW5nPiYsIEluZGV4ZWREQjo6VHJh
bnNhY3Rpb25Nb2RlLCBJREJEYXRhYmFzZSosIElEQk9wZW5EQlJlcXVlc3QqLCBjb25zdCBJREJE
YXRhYmFzZU1ldGFkYXRhJik7CiAKICAgICB2b2lkIGVucXVldWVFdmVudChQYXNzUmVmUHRyPEV2
ZW50Pik7CiAgICAgdm9pZCBjbG9zZU9wZW5DdXJzb3JzKCk7CkBAIC0xNTEsNyArMTQ2LDcgQEAg
cHJpdmF0ZToKICAgICBSZWZQdHI8SURCRGF0YWJhc2U+IG1fZGF0YWJhc2U7CiAgICAgY29uc3Qg
VmVjdG9yPFN0cmluZz4gbV9vYmplY3RTdG9yZU5hbWVzOwogICAgIElEQk9wZW5EQlJlcXVlc3Qq
IG1fb3BlbkRCUmVxdWVzdDsKLSAgICBjb25zdCBNb2RlIG1fbW9kZTsKKyAgICBjb25zdCBJbmRl
eGVkREI6OlRyYW5zYWN0aW9uTW9kZSBtX21vZGU7CiAgICAgU3RhdGUgbV9zdGF0ZTsKICAgICBi
b29sIG1faGFzUGVuZGluZ0FjdGl2aXR5OwogICAgIGJvb2wgbV9jb250ZXh0U3RvcHBlZDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9u
QmFja2VuZEltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJh
bnNhY3Rpb25CYWNrZW5kSW1wbC5jcHAKaW5kZXggN2ZlODNiMjNkMmVjYmZmNzYwMmUzMmI0ZWIx
OWVkMWJhYzg2YWU2Zi4uNjU2MjU1NzcwNjExMmYzOTE2MDJjZjUwZjY5MjdlYmRlNDg5YzhjOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rp
b25CYWNrZW5kSW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
SURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbC5jcHAKQEAgLTMxLDEzICszMSwxNCBAQAogI2luY2x1
ZGUgIklEQkJhY2tpbmdTdG9yZS5oIgogI2luY2x1ZGUgIklEQkN1cnNvckJhY2tlbmRJbXBsLmgi
CiAjaW5jbHVkZSAiSURCRGF0YWJhc2VCYWNrZW5kSW1wbC5oIgorI2luY2x1ZGUgIklEQkRhdGFi
YXNlQ2FsbGJhY2tzLmgiCiAjaW5jbHVkZSAiSURCRGF0YWJhc2VFeGNlcHRpb24uaCIKICNpbmNs
dWRlICJJREJUcmFjaW5nLmgiCiAjaW5jbHVkZSAiSURCVHJhbnNhY3Rpb25Db29yZGluYXRvci5o
IgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVBhc3NSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNr
ZW5kSW1wbD4gSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbDo6Y3JlYXRlKGludDY0X3QgaWQsIFBh
c3NSZWZQdHI8SURCRGF0YWJhc2VDYWxsYmFja3M+IGNhbGxiYWNrcywgY29uc3QgVmVjdG9yPGlu
dDY0X3Q+JiBvYmplY3RTdG9yZUlkcywgSURCVHJhbnNhY3Rpb246Ok1vZGUgbW9kZSwgSURCRGF0
YWJhc2VCYWNrZW5kSW1wbCogZGF0YWJhc2UpCitQYXNzUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFj
a2VuZEltcGw+IElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGw6OmNyZWF0ZShpbnQ2NF90IGlkLCBQ
YXNzUmVmUHRyPElEQkRhdGFiYXNlQ2FsbGJhY2tzPiBjYWxsYmFja3MsIGNvbnN0IFZlY3Rvcjxp
bnQ2NF90PiYgb2JqZWN0U3RvcmVJZHMsIEluZGV4ZWREQjo6VHJhbnNhY3Rpb25Nb2RlIG1vZGUs
IElEQkRhdGFiYXNlQmFja2VuZEltcGwqIGRhdGFiYXNlKQogewogICAgIEhhc2hTZXQ8aW50NjRf
dD4gb2JqZWN0U3RvcmVIYXNoU2V0OwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgb2JqZWN0
U3RvcmVJZHMuc2l6ZSgpOyArK2kpCkBAIC00Niw3ICs0Nyw3IEBAIFBhc3NSZWZQdHI8SURCVHJh
bnNhY3Rpb25CYWNrZW5kSW1wbD4gSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbDo6Y3JlYXRlKGlu
dDY0X3QKICAgICByZXR1cm4gYWRvcHRSZWYobmV3IElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGwo
aWQsIGNhbGxiYWNrcywgb2JqZWN0U3RvcmVIYXNoU2V0LCBtb2RlLCBkYXRhYmFzZSkpOwogfQog
Ci1JREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsOjpJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsKGlu
dDY0X3QgaWQsIFBhc3NSZWZQdHI8SURCRGF0YWJhc2VDYWxsYmFja3M+IGNhbGxiYWNrcywgY29u
c3QgSGFzaFNldDxpbnQ2NF90PiYgb2JqZWN0U3RvcmVJZHMsIElEQlRyYW5zYWN0aW9uOjpNb2Rl
IG1vZGUsIElEQkRhdGFiYXNlQmFja2VuZEltcGwqIGRhdGFiYXNlKQorSURCVHJhbnNhY3Rpb25C
YWNrZW5kSW1wbDo6SURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbChpbnQ2NF90IGlkLCBQYXNzUmVm
UHRyPElEQkRhdGFiYXNlQ2FsbGJhY2tzPiBjYWxsYmFja3MsIGNvbnN0IEhhc2hTZXQ8aW50NjRf
dD4mIG9iamVjdFN0b3JlSWRzLCBJbmRleGVkREI6OlRyYW5zYWN0aW9uTW9kZSBtb2RlLCBJREJE
YXRhYmFzZUJhY2tlbmRJbXBsKiBkYXRhYmFzZSkKICAgICA6IG1faWQoaWQpCiAgICAgLCBtX29i
amVjdFN0b3JlSWRzKG9iamVjdFN0b3JlSWRzKQogICAgICwgbV9tb2RlKG1vZGUpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbkJhY2tl
bmRJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlv
bkJhY2tlbmRJbXBsLmgKaW5kZXggM2NlZjk3NjJhZTEwMjdlODg4NGU5ODI2ZjQ3OTFmNjM2NGEz
NGIwNi4uZTYxOGZhMDY4OGE5YzBkZGM5ZjlhMWE3OGNkZDkyYmZmMjgxMWViMyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb25CYWNrZW5k
SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0
aW9uQmFja2VuZEltcGwuaApAQCAtMzEsNyArMzEsNiBAQAogI2luY2x1ZGUgIklEQkJhY2tpbmdT
dG9yZS5oIgogI2luY2x1ZGUgIklEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZS5oIgogI2luY2x1
ZGUgIklEQkRhdGFiYXNlRXJyb3IuaCIKLSNpbmNsdWRlICJJREJUcmFuc2FjdGlvbi5oIgogI2lu
Y2x1ZGUgIlRpbWVyLmgiCiAjaW5jbHVkZSA8d3RmL0RlcXVlLmg+CiAjaW5jbHVkZSA8d3RmL0hh
c2hTZXQuaD4KQEAgLTQ1LDcgKzQ0LDcgQEAgY2xhc3MgSURCRGF0YWJhc2VDYWxsYmFja3M7CiAK
IGNsYXNzIElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGwgOiBwdWJsaWMgUmVmQ291bnRlZDxJREJU
cmFuc2FjdGlvbkJhY2tlbmRJbXBsPiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8
SURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbD4gY3JlYXRlKGludDY0X3QgdHJhbnNhY3Rpb25JZCwg
UGFzc1JlZlB0cjxJREJEYXRhYmFzZUNhbGxiYWNrcz4sIGNvbnN0IFZlY3RvcjxpbnQ2NF90PiYs
IElEQlRyYW5zYWN0aW9uOjpNb2RlLCBJREJEYXRhYmFzZUJhY2tlbmRJbXBsKik7CisgICAgc3Rh
dGljIFBhc3NSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbD4gY3JlYXRlKGludDY0X3Qg
dHJhbnNhY3Rpb25JZCwgUGFzc1JlZlB0cjxJREJEYXRhYmFzZUNhbGxiYWNrcz4sIGNvbnN0IFZl
Y3RvcjxpbnQ2NF90PiYsIEluZGV4ZWREQjo6VHJhbnNhY3Rpb25Nb2RlLCBJREJEYXRhYmFzZUJh
Y2tlbmRJbXBsKik7CiAgICAgdmlydHVhbCB+SURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbCgpOwog
CiAgICAgdmlydHVhbCB2b2lkIGFib3J0KCk7CkBAIC01OSw3ICs1OCw3IEBAIHB1YmxpYzoKIAog
ICAgIHZvaWQgYWJvcnQoUGFzc1JlZlB0cjxJREJEYXRhYmFzZUVycm9yPik7CiAgICAgdm9pZCBy
dW4oKTsKLSAgICBJREJUcmFuc2FjdGlvbjo6TW9kZSBtb2RlKCkgY29uc3QgeyByZXR1cm4gbV9t
b2RlOyB9CisgICAgSW5kZXhlZERCOjpUcmFuc2FjdGlvbk1vZGUgbW9kZSgpIGNvbnN0IHsgcmV0
dXJuIG1fbW9kZTsgfQogICAgIGNvbnN0IEhhc2hTZXQ8aW50NjRfdD4mIHNjb3BlKCkgY29uc3Qg
eyByZXR1cm4gbV9vYmplY3RTdG9yZUlkczsgfQogICAgIHZvaWQgc2NoZWR1bGVUYXNrKFBhc3NP
d25QdHI8T3BlcmF0aW9uPiB0YXNrLCBQYXNzT3duUHRyPE9wZXJhdGlvbj4gYWJvcnRUYXNrID0g
bnVsbHB0cikgeyBzY2hlZHVsZVRhc2soSURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlOjpOb3Jt
YWxUYXNrLCB0YXNrLCBhYm9ydFRhc2spOyB9CiAgICAgdm9pZCBzY2hlZHVsZVRhc2soSURCRGF0
YWJhc2VCYWNrZW5kSW50ZXJmYWNlOjpUYXNrVHlwZSwgUGFzc093blB0cjxPcGVyYXRpb24+LCBQ
YXNzT3duUHRyPE9wZXJhdGlvbj4gYWJvcnRUYXNrID0gbnVsbHB0cik7CkBAIC03Myw3ICs3Miw3
IEBAIHB1YmxpYzoKICAgICBJREJEYXRhYmFzZUJhY2tlbmRJbXBsKiBkYXRhYmFzZSgpIGNvbnN0
IHsgcmV0dXJuIG1fZGF0YWJhc2UuZ2V0KCk7IH0KIAogcHJpdmF0ZToKLSAgICBJREJUcmFuc2Fj
dGlvbkJhY2tlbmRJbXBsKGludDY0X3QgaWQsIFBhc3NSZWZQdHI8SURCRGF0YWJhc2VDYWxsYmFj
a3M+LCBjb25zdCBIYXNoU2V0PGludDY0X3Q+JiBvYmplY3RTdG9yZUlkcywgSURCVHJhbnNhY3Rp
b246Ok1vZGUsIElEQkRhdGFiYXNlQmFja2VuZEltcGwqKTsKKyAgICBJREJUcmFuc2FjdGlvbkJh
Y2tlbmRJbXBsKGludDY0X3QgaWQsIFBhc3NSZWZQdHI8SURCRGF0YWJhc2VDYWxsYmFja3M+LCBj
b25zdCBIYXNoU2V0PGludDY0X3Q+JiBvYmplY3RTdG9yZUlkcywgSW5kZXhlZERCOjpUcmFuc2Fj
dGlvbk1vZGUsIElEQkRhdGFiYXNlQmFja2VuZEltcGwqKTsKIAogICAgIGVudW0gU3RhdGUgewog
ICAgICAgICBVbnVzZWQsIC8vIENyZWF0ZWQsIGJ1dCBubyB0YXNrcyB5ZXQuCkBAIC05Miw3ICs5
MSw3IEBAIHByaXZhdGU6CiAKICAgICBjb25zdCBpbnQ2NF90IG1faWQ7CiAgICAgY29uc3QgSGFz
aFNldDxpbnQ2NF90PiBtX29iamVjdFN0b3JlSWRzOwotICAgIGNvbnN0IElEQlRyYW5zYWN0aW9u
OjpNb2RlIG1fbW9kZTsKKyAgICBjb25zdCBJbmRleGVkREI6OlRyYW5zYWN0aW9uTW9kZSBtX21v
ZGU7CiAKICAgICBTdGF0ZSBtX3N0YXRlOwogICAgIGJvb2wgbV9jb21taXRQZW5kaW5nOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb25D
b29yZGluYXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFu
c2FjdGlvbkNvb3JkaW5hdG9yLmNwcAppbmRleCAwYmI1YWNhOTVhMDhjNWM1MTZhMzY1MTMyNTQ1
YjhlNDY5N2Q1MGVmLi5hNmZjZDhlYTNlNmUxZDgyZTFiOTI4OTBhZGU1NGZkNzVlZWU4NzFlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlv
bkNvb3JkaW5hdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9J
REJUcmFuc2FjdGlvbkNvb3JkaW5hdG9yLmNwcApAQCAtMjksNyArMjksNiBAQAogI2lmIEVOQUJM
RShJTkRFWEVEX0RBVEFCQVNFKQogCiAjaW5jbHVkZSAiSURCRGF0YWJhc2VCYWNrZW5kSW1wbC5o
IgotI2luY2x1ZGUgIklEQlRyYW5zYWN0aW9uLmgiCiAjaW5jbHVkZSAiSURCVHJhbnNhY3Rpb25C
YWNrZW5kSW1wbC5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC05Nyw3ICs5Niw3IEBAIHZv
aWQgSURCVHJhbnNhY3Rpb25Db29yZGluYXRvcjo6cHJvY2Vzc1N0YXJ0ZWRUcmFuc2FjdGlvbnMo
KQogICAgIGlmIChtX3F1ZXVlZFRyYW5zYWN0aW9ucy5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVy
bjsKIAotICAgIEFTU0VSVChtX3N0YXJ0ZWRUcmFuc2FjdGlvbnMuaXNFbXB0eSgpIHx8ICgqbV9z
dGFydGVkVHJhbnNhY3Rpb25zLmJlZ2luKCkpLT5tb2RlKCkgIT0gSURCVHJhbnNhY3Rpb246OlZF
UlNJT05fQ0hBTkdFKTsKKyAgICBBU1NFUlQobV9zdGFydGVkVHJhbnNhY3Rpb25zLmlzRW1wdHko
KSB8fCAoKm1fc3RhcnRlZFRyYW5zYWN0aW9ucy5iZWdpbigpKS0+bW9kZSgpICE9IEluZGV4ZWRE
Qjo6VHJhbnNhY3Rpb25WZXJzaW9uQ2hhbmdlKTsKIAogICAgIExpc3RIYXNoU2V0PElEQlRyYW5z
YWN0aW9uQmFja2VuZEltcGwqPjo6Y29uc3RfaXRlcmF0b3IgaXQgPSBtX3F1ZXVlZFRyYW5zYWN0
aW9ucy5iZWdpbigpOwogICAgIHdoaWxlIChpdCAhPSBtX3F1ZXVlZFRyYW5zYWN0aW9ucy5lbmQo
KSkgewpAQCAtMTI0LDIyICsxMjMsMjIgQEAgYm9vbCBJREJUcmFuc2FjdGlvbkNvb3JkaW5hdG9y
OjpjYW5SdW5UcmFuc2FjdGlvbihJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsKiB0cmEKIHsKICAg
ICBBU1NFUlQobV9xdWV1ZWRUcmFuc2FjdGlvbnMuY29udGFpbnModHJhbnNhY3Rpb24pKTsKICAg
ICBzd2l0Y2ggKHRyYW5zYWN0aW9uLT5tb2RlKCkpIHsKLSAgICBjYXNlIElEQlRyYW5zYWN0aW9u
OjpWRVJTSU9OX0NIQU5HRToKKyAgICBjYXNlIEluZGV4ZWREQjo6VHJhbnNhY3Rpb25WZXJzaW9u
Q2hhbmdlOgogICAgICAgICBBU1NFUlQobV9xdWV1ZWRUcmFuc2FjdGlvbnMuc2l6ZSgpID09IDEp
OwogICAgICAgICBBU1NFUlQobV9zdGFydGVkVHJhbnNhY3Rpb25zLmlzRW1wdHkoKSk7CiAgICAg
ICAgIHJldHVybiB0cnVlOwogCi0gICAgY2FzZSBJREJUcmFuc2FjdGlvbjo6UkVBRF9PTkxZOgor
ICAgIGNhc2UgSW5kZXhlZERCOjpUcmFuc2FjdGlvblJlYWRPbmx5OgogICAgICAgICByZXR1cm4g
dHJ1ZTsKIAotICAgIGNhc2UgSURCVHJhbnNhY3Rpb246OlJFQURfV1JJVEU6CisgICAgY2FzZSBJ
bmRleGVkREI6OlRyYW5zYWN0aW9uUmVhZFdyaXRlOgogICAgICAgICBmb3IgKEhhc2hTZXQ8SURC
VHJhbnNhY3Rpb25CYWNrZW5kSW1wbCo+Ojpjb25zdF9pdGVyYXRvciBpdCA9IG1fc3RhcnRlZFRy
YW5zYWN0aW9ucy5iZWdpbigpOyBpdCAhPSBtX3N0YXJ0ZWRUcmFuc2FjdGlvbnMuZW5kKCk7ICsr
aXQpIHsKLSAgICAgICAgICAgIGlmICgoKml0KS0+bW9kZSgpID09IElEQlRyYW5zYWN0aW9uOjpS
RUFEX1dSSVRFICYmIGRvU2NvcGVzT3ZlcmxhcCh0cmFuc2FjdGlvbi0+c2NvcGUoKSwgKCppdCkt
PnNjb3BlKCkpKQorICAgICAgICAgICAgaWYgKCgqaXQpLT5tb2RlKCkgPT0gSW5kZXhlZERCOjpU
cmFuc2FjdGlvblJlYWRXcml0ZSAmJiBkb1Njb3Blc092ZXJsYXAodHJhbnNhY3Rpb24tPnNjb3Bl
KCksICgqaXQpLT5zY29wZSgpKSkKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
ICAgIH0KICAgICAgICAgZm9yIChMaXN0SGFzaFNldDxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBs
Kj46OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbV9xdWV1ZWRUcmFuc2FjdGlvbnMuYmVnaW4oKTsgKml0
ICE9IHRyYW5zYWN0aW9uOyArK2l0KSB7CiAgICAgICAgICAgICBBU1NFUlQoaXQgIT0gbV9xdWV1
ZWRUcmFuc2FjdGlvbnMuZW5kKCkpOwotICAgICAgICAgICAgaWYgKCgqaXQpLT5tb2RlKCkgPT0g
SURCVHJhbnNhY3Rpb246OlJFQURfV1JJVEUgJiYgZG9TY29wZXNPdmVybGFwKHRyYW5zYWN0aW9u
LT5zY29wZSgpLCAoKml0KS0+c2NvcGUoKSkpCisgICAgICAgICAgICBpZiAoKCppdCktPm1vZGUo
KSA9PSBJbmRleGVkREI6OlRyYW5zYWN0aW9uUmVhZFdyaXRlICYmIGRvU2NvcGVzT3ZlcmxhcCh0
cmFuc2FjdGlvbi0+c2NvcGUoKSwgKCppdCktPnNjb3BlKCkpKQogICAgICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICAgICAgfQogICAgICAgICByZXR1cm4gdHJ1ZTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0luZGV4ZWREQi5oIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSW5kZXhlZERCLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMmU4NGZjNzIx
YTVjMzIzNjQyYTY4M2IxMTQ5MmQwMzg0NGI0ZmVjOAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0luZGV4ZWREQi5oCkBAIC0wLDAgKzEsNTkgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAx
LiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUg
SU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaWZuZGVmIEluZGV4ZWREQl9oCisjZGVmaW5lIEluZGV4ZWREQl9oCisKKyNpZiBF
TkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCituYW1lc3Bh
Y2UgSW5kZXhlZERCIHsKKworZW51bSBUcmFuc2FjdGlvbk1vZGUgeworICAgIFRyYW5zYWN0aW9u
UmVhZE9ubHkgPSAwLAorICAgIFRyYW5zYWN0aW9uUmVhZFdyaXRlID0gMSwKKyAgICBUcmFuc2Fj
dGlvblZlcnNpb25DaGFuZ2UgPSAyCit9OworCitlbnVtIEN1cnNvckRpcmVjdGlvbiB7CisgICAg
Q3Vyc29yTmV4dCA9IDAsCisgICAgQ3Vyc29yTmV4dE5vRHVwbGljYXRlID0gMSwKKyAgICBDdXJz
b3JQcmV2ID0gMiwKKyAgICBDdXJzb3JQcmV2Tm9EdXBsaWNhdGUgPSAzLAorfTsKKworZW51bSBD
dXJzb3JUeXBlIHsKKyAgICBDdXJzb3JLZXlBbmRWYWx1ZSA9IDAsCisgICAgQ3Vyc29yS2V5T25s
eQorfTsKKworfSAvLyBuYW1lc3BhY2UgSW5kZXhlZERCCisKK30gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKKworI2VuZGlmIC8vIEVOQUJMRUQoSU5ERVhFRF9EQVRBQkFTRSkKKworI2VuZGlmIC8vIElu
ZGV4ZWREQl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpIGIvU291cmNl
L1dlYkNvcmUvVGFyZ2V0LnByaQppbmRleCBiOWNmOGJjYjZhMjkzMDIwNjI2MTUyNTQ1ZDk1NGY1
MzQwOTk5ZmU0Li44ZmE4ZWVlMDIxOTkyNDNhNGUwMDdlZmEzYWI4NThhNWRjZTNiYzU5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1Rh
cmdldC5wcmkKQEAgLTMxMDYsOCArMzEwNiw4IEBAIGVuYWJsZT8oSU5ERVhFRF9EQVRBQkFTRSkg
ewogICAgICAgICBNb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUV4Y2VwdGlvbi5oIFwKICAg
ICAgICAgTW9kdWxlcy9pbmRleGVkZGIvSURCRXZlbnREaXNwYXRjaGVyLmggXAogICAgICAgICBN
b2R1bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5LmggXAotICAgICAgICBNb2R1bGVzL2luZGV4ZWRk
Yi9JREJGYWN0b3J5QmFja2VuZEludGVyZmFjZS5oIFwKICAgICAgICAgTW9kdWxlcy9pbmRleGVk
ZGIvSURCRmFjdG9yeUJhY2tlbmRJbXBsLmggXAorICAgICAgICBNb2R1bGVzL2luZGV4ZWRkYi9J
REJGYWN0b3J5QmFja2VuZEludGVyZmFjZS5oIFwKICAgICAgICAgTW9kdWxlcy9pbmRleGVkZGIv
SURCSGlzdG9ncmFtcy5oIFwKICAgICAgICAgTW9kdWxlcy9pbmRleGVkZGIvSURCSW5kZXguaCBc
CiAgICAgICAgIE1vZHVsZXMvaW5kZXhlZGRiL0lEQktleS5oIFwKQEAgLTMxMTUsNyArMzExNSw4
IEBAIGVuYWJsZT8oSU5ERVhFRF9EQVRBQkFTRSkgewogICAgICAgICBNb2R1bGVzL2luZGV4ZWRk
Yi9JREJPYmplY3RTdG9yZS5oIFwKICAgICAgICAgTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0
U3RvcmVCYWNrZW5kSW1wbC5oIFwKICAgICAgICAgTW9kdWxlcy9pbmRleGVkZGIvSURCUmVxdWVz
dC5oIFwKLSAgICAgICAgTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb24uaAorICAgICAg
ICBNb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5oIFwKKyAgICAgICAgTW9kdWxlcy9p
bmRleGVkZGIvSW5kZXhlZERCLmgKIAogICAgIFNPVVJDRVMgKz0gXAogICAgICAgICBiaW5kaW5n
cy9qcy9JREJCaW5kaW5nVXRpbGl0aWVzLmNwcCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLmd5cGkgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKaW5kZXggNDExYmI3
MTMwNWRhMjMxMWI0YmM4OTJlNDQ3NDNiMzcwODc0OWZjYi4uNDNjMDJjOGYyM2FlYWE5NmQ1Njk4
YWM1ZmI3NGUzZTBkYmFjYmU4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5n
eXBpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpAQCAtODAxLDYgKzgwMSw3IEBA
CiAgICAgICAgICAgICAnTW9kdWxlcy9pbmRleGVkZGIvRE9NV2luZG93SW5kZXhlZERhdGFiYXNl
LmgnLAogICAgICAgICAgICAgJ01vZHVsZXMvaW5kZXhlZGRiL0lEQkFueS5jcHAnLAogICAgICAg
ICAgICAgJ01vZHVsZXMvaW5kZXhlZGRiL0lEQkFueS5oJywKKyAgICAgICAgICAgICdNb2R1bGVz
L2luZGV4ZWRkYi9JREJCYWNraW5nU3RvcmUuY3BwJywKICAgICAgICAgICAgICdNb2R1bGVzL2lu
ZGV4ZWRkYi9JREJCYWNraW5nU3RvcmUuaCcsCiAgICAgICAgICAgICAnTW9kdWxlcy9pbmRleGVk
ZGIvSURCQ2FsbGJhY2tzLmgnLAogICAgICAgICAgICAgJ01vZHVsZXMvaW5kZXhlZGRiL0lEQkN1
cnNvci5jcHAnLApAQCAtODQxLDcgKzg0Miw2IEBACiAgICAgICAgICAgICAnTW9kdWxlcy9pbmRl
eGVkZGIvSURCS2V5UmFuZ2UuaCcsCiAgICAgICAgICAgICAnTW9kdWxlcy9pbmRleGVkZGIvSURC
TGV2ZWxEQkNvZGluZy5jcHAnLAogICAgICAgICAgICAgJ01vZHVsZXMvaW5kZXhlZGRiL0lEQkxl
dmVsREJDb2RpbmcuaCcsCi0gICAgICAgICAgICAnTW9kdWxlcy9pbmRleGVkZGIvSURCQmFja2lu
Z1N0b3JlLmNwcCcsCiAgICAgICAgICAgICAnTW9kdWxlcy9pbmRleGVkZGIvSURCTWV0YWRhdGEu
aCcsCiAgICAgICAgICAgICAnTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmUuY3BwJywK
ICAgICAgICAgICAgICdNb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZS5oJywKQEAgLTg2
Miw2ICs4NjIsNyBAQAogICAgICAgICAgICAgJ01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0
aW9uQ29vcmRpbmF0b3IuaCcsCiAgICAgICAgICAgICAnTW9kdWxlcy9pbmRleGVkZGIvSURCVmVy
c2lvbkNoYW5nZUV2ZW50LmNwcCcsCiAgICAgICAgICAgICAnTW9kdWxlcy9pbmRleGVkZGIvSURC
VmVyc2lvbkNoYW5nZUV2ZW50LmgnLAorICAgICAgICAgICAgJ01vZHVsZXMvaW5kZXhlZGRiL0lu
ZGV4ZWREQi5oJywKICAgICAgICAgICAgICdNb2R1bGVzL2luZGV4ZWRkYi9QYWdlR3JvdXBJbmRl
eGVkRGF0YWJhc2UuY3BwJywKICAgICAgICAgICAgICdNb2R1bGVzL2luZGV4ZWRkYi9QYWdlR3Jv
dXBJbmRleGVkRGF0YWJhc2UuaCcsCiAgICAgICAgICAgICAnTW9kdWxlcy9pbmRleGVkZGIvV29y
a2VyQ29udGV4dEluZGV4ZWREYXRhYmFzZS5jcHAnLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvQXNzZXJ0TWF0Y2hpbmdFbnVtcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9Bc3NlcnRNYXRjaGluZ0VudW1zLmNwcAppbmRleCAzYjAzNzk5MzcxZDEwOTQy
Mzc2ZjY4NDM0NDMxOTQ5ODg5ZmYxZmU2Li42YTMzY2Y4Y2RlMWI4NDFkY2QzYjUzYTcyNzBmM2E3
NGI0YzAyYWUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9Bc3NlcnRN
YXRjaGluZ0VudW1zLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9Bc3NlcnRN
YXRjaGluZ0VudW1zLmNwcApAQCAtNTA0LDEwICs1MDQsMTAgQEAgQ09NUElMRV9BU1NFUlRfTUFU
Q0hJTkdfRU5VTShXZWJJREJLZXlQYXRoOjpBcnJheVR5cGUsIElEQktleVBhdGg6OkFycmF5VHlw
ZSk7CiAKIENPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oV2ViSURCTWV0YWRhdGE6Ok5vSW50
VmVyc2lvbiwgSURCRGF0YWJhc2VNZXRhZGF0YTo6Tm9JbnRWZXJzaW9uKTsKIAotQ09NUElMRV9B
U1NFUlRfTUFUQ0hJTkdfRU5VTShXZWJJREJDdXJzb3I6Ok5leHQsIElEQkN1cnNvcjo6TkVYVCk7
Ci1DT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKFdlYklEQkN1cnNvcjo6TmV4dE5vRHVwbGlj
YXRlLCBJREJDdXJzb3I6Ok5FWFRfTk9fRFVQTElDQVRFKTsKLUNPTVBJTEVfQVNTRVJUX01BVENI
SU5HX0VOVU0oV2ViSURCQ3Vyc29yOjpQcmV2LCBJREJDdXJzb3I6OlBSRVYpOwotQ09NUElMRV9B
U1NFUlRfTUFUQ0hJTkdfRU5VTShXZWJJREJDdXJzb3I6OlByZXZOb0R1cGxpY2F0ZSwgSURCQ3Vy
c29yOjpQUkVWX05PX0RVUExJQ0FURSk7CitDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKFdl
YklEQkN1cnNvcjo6TmV4dCwgSW5kZXhlZERCOjpDdXJzb3JOZXh0KTsKK0NPTVBJTEVfQVNTRVJU
X01BVENISU5HX0VOVU0oV2ViSURCQ3Vyc29yOjpOZXh0Tm9EdXBsaWNhdGUsIEluZGV4ZWREQjo6
Q3Vyc29yTmV4dE5vRHVwbGljYXRlKTsKK0NPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oV2Vi
SURCQ3Vyc29yOjpQcmV2LCBJbmRleGVkREI6OkN1cnNvclByZXYpOworQ09NUElMRV9BU1NFUlRf
TUFUQ0hJTkdfRU5VTShXZWJJREJDdXJzb3I6OlByZXZOb0R1cGxpY2F0ZSwgSW5kZXhlZERCOjpD
dXJzb3JQcmV2Tm9EdXBsaWNhdGUpOwogCiBDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKFdl
YklEQkRhdGFiYXNlOjpQcmVlbXB0aXZlVGFzaywgSURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNl
OjpQcmVlbXB0aXZlVGFzayk7CiBDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKFdlYklEQkRh
dGFiYXNlOjpOb3JtYWxUYXNrLCBJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2U6Ok5vcm1hbFRh
c2spOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCRGF0YWJhc2VC
YWNrZW5kUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCRGF0YWJhc2VC
YWNrZW5kUHJveHkuY3BwCmluZGV4IDM1NWQ4MDg5ZWVjYzZkM2M0NGJkOGNiYTA0MTExZjI2ZWZm
MTkzNGYuLjJjMmE1ZTdlOWZkNTY0MmE1OTcyMDQ4YjI5YTZjMDJhN2JlMGRiYjEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkRhdGFiYXNlQmFja2VuZFByb3h5LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJEYXRhYmFzZUJhY2tlbmRQcm94
eS5jcHAKQEAgLTkzLDcgKzkzLDcgQEAgdm9pZCBJREJEYXRhYmFzZUJhY2tlbmRQcm94eTo6YWJv
cnQoaW50NjRfdCB0cmFuc2FjdGlvbklkLCBQYXNzUmVmUHRyPElEQkRhdGFiYXMKICAgICBtX3dl
YklEQkRhdGFiYXNlLT5hYm9ydCh0cmFuc2FjdGlvbklkLCBlcnJvcik7CiB9CiAKLXZvaWQgSURC
RGF0YWJhc2VCYWNrZW5kUHJveHk6Om9wZW5DdXJzb3IoaW50NjRfdCB0cmFuc2FjdGlvbklkLCBp
bnQ2NF90IG9iamVjdFN0b3JlSWQsIGludDY0X3QgaW5kZXhJZCwgUGFzc1JlZlB0cjxJREJLZXlS
YW5nZT4ga2V5UmFuZ2UsIHVuc2lnbmVkIHNob3J0IGRpcmVjdGlvbiwgYm9vbCBrZXlPbmx5LCBU
YXNrVHlwZSB0YXNrVHlwZSwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcykKK3Zv
aWQgSURCRGF0YWJhc2VCYWNrZW5kUHJveHk6Om9wZW5DdXJzb3IoaW50NjRfdCB0cmFuc2FjdGlv
bklkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGludDY0X3QgaW5kZXhJZCwgUGFzc1JlZlB0cjxJ
REJLZXlSYW5nZT4ga2V5UmFuZ2UsIEluZGV4ZWREQjo6Q3Vyc29yRGlyZWN0aW9uIGRpcmVjdGlv
biwgYm9vbCBrZXlPbmx5LCBUYXNrVHlwZSB0YXNrVHlwZSwgUGFzc1JlZlB0cjxJREJDYWxsYmFj
a3M+IGNhbGxiYWNrcykKIHsKICAgICBtX3dlYklEQkRhdGFiYXNlLT5vcGVuQ3Vyc29yKHRyYW5z
YWN0aW9uSWQsIG9iamVjdFN0b3JlSWQsIGluZGV4SWQsIGtleVJhbmdlLCBzdGF0aWNfY2FzdDxX
ZWJJREJDdXJzb3I6OkRpcmVjdGlvbj4oZGlyZWN0aW9uKSwga2V5T25seSwgc3RhdGljX2Nhc3Q8
V2ViSURCRGF0YWJhc2U6OlRhc2tUeXBlPih0YXNrVHlwZSksIG5ldyBXZWJJREJDYWxsYmFja3NJ
bXBsKGNhbGxiYWNrcykpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvSURCRGF0YWJhc2VCYWNrZW5kUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L0lEQkRhdGFiYXNlQmFja2VuZFByb3h5LmgKaW5kZXggZGJkOTY0MmYxMTIwZDk5OGRhZjk3Y2I1
ZmE5YTUyMGJiZDVkNmQ1MS4uNWQ1ZDkwOGY5OGJlM2FhODVjMjVkNjM0YzVmYjEwNDJlZWIyZjc4
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCRGF0YWJhc2VCYWNr
ZW5kUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJEYXRhYmFzZUJh
Y2tlbmRQcm94eS5oCkBAIC01NSw3ICs1NSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQg
cHV0KGludDY0X3QgdHJhbnNhY3Rpb25JZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBQYXNzUmVm
UHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gdmFsdWUsIFBhc3NSZWZQdHI8V2ViQ29yZTo6SURC
S2V5PiwgUHV0TW9kZSwgUGFzc1JlZlB0cjxXZWJDb3JlOjpJREJDYWxsYmFja3M+LCBjb25zdCBW
ZWN0b3I8aW50NjRfdD4mIGluZGV4SWRzLCBjb25zdCBWZWN0b3I8SW5kZXhLZXlzPiYpIE9WRVJS
SURFOwogICAgIHZpcnR1YWwgdm9pZCBzZXRJbmRleEtleXMoaW50NjRfdCB0cmFuc2FjdGlvbklk
LCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIFBhc3NSZWZQdHI8V2ViQ29yZTo6SURCS2V5PiBwcnBQ
cmltYXJ5S2V5LCBjb25zdCBWZWN0b3I8aW50NjRfdD4mIGluZGV4SWRzLCBjb25zdCBWZWN0b3I8
SW5kZXhLZXlzPiYpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBzZXRJbmRleGVzUmVhZHko
aW50NjRfdCB0cmFuc2FjdGlvbklkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGNvbnN0IFZlY3Rv
cjxpbnQ2NF90PiYgaW5kZXhJZHMpIE9WRVJSSURFOwotICAgIHZpcnR1YWwgdm9pZCBvcGVuQ3Vy
c29yKGludDY0X3QgdHJhbnNhY3Rpb25JZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBpbnQ2NF90
IGluZGV4SWQsIFBhc3NSZWZQdHI8V2ViQ29yZTo6SURCS2V5UmFuZ2U+LCB1bnNpZ25lZCBzaG9y
dCBkaXJlY3Rpb24sIGJvb2wga2V5T25seSwgVGFza1R5cGUsIFBhc3NSZWZQdHI8V2ViQ29yZTo6
SURCQ2FsbGJhY2tzPikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIG9wZW5DdXJzb3IoaW50
NjRfdCB0cmFuc2FjdGlvbklkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGludDY0X3QgaW5kZXhJ
ZCwgUGFzc1JlZlB0cjxXZWJDb3JlOjpJREJLZXlSYW5nZT4sIFdlYkNvcmU6OkluZGV4ZWREQjo6
Q3Vyc29yRGlyZWN0aW9uLCBib29sIGtleU9ubHksIFRhc2tUeXBlLCBQYXNzUmVmUHRyPFdlYkNv
cmU6OklEQkNhbGxiYWNrcz4pIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBjb3VudChpbnQ2
NF90IHRyYW5zYWN0aW9uSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgaW50NjRfdCBpbmRleElk
LCBQYXNzUmVmUHRyPFdlYkNvcmU6OklEQktleVJhbmdlPiwgUGFzc1JlZlB0cjxXZWJDb3JlOjpJ
REJDYWxsYmFja3M+KSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlUmFuZ2UoaW50
NjRfdCB0cmFuc2FjdGlvbklkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIFBhc3NSZWZQdHI8V2Vi
Q29yZTo6SURCS2V5UmFuZ2U+LCBQYXNzUmVmUHRyPFdlYkNvcmU6OklEQkNhbGxiYWNrcz4pIE9W
RVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBjbGVhcihpbnQ2NF90IHRyYW5zYWN0aW9uSWQsIGlu
dDY0X3Qgb2JqZWN0U3RvcmVJZCwgUGFzc1JlZlB0cjxXZWJDb3JlOjpJREJDYWxsYmFja3M+KSBP
VkVSUklERTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkNh
bGxiYWNrc0ltcGwuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCQ2FsbGJh
Y2tzSW1wbC5jcHAKaW5kZXggMDVmYzg4ZjViY2IzNTNkODNhZDRlNDRlYzBiMWI5Y2Q3NmM4NDRl
Yi4uMzM5MDU4ZWRkZjM0YzdiZjQyYjY0MDRjODk2YzVmZTMzZjZhOGZiMiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCQ2FsbGJhY2tzSW1wbC5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCQ2FsbGJhY2tzSW1wbC5jcHAKQEAgLTM0
LDYgKzM0LDcgQEAKICNpbmNsdWRlICJJREJEYXRhYmFzZUJhY2tlbmRQcm94eS5oIgogI2luY2x1
ZGUgIklEQkRhdGFiYXNlRXJyb3IuaCIKICNpbmNsdWRlICJJREJLZXkuaCIKKyNpbmNsdWRlICJJ
REJNZXRhZGF0YS5oIgogI2luY2x1ZGUgIldlYkRPTVN0cmluZ0xpc3QuaCIKICNpbmNsdWRlICJX
ZWJJREJDYWxsYmFja3MuaCIKICNpbmNsdWRlICJXZWJJREJEYXRhYmFzZS5oIgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCRGF0YWJhc2VJbXBsLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkRhdGFiYXNlSW1wbC5jcHAKaW5kZXggYTE4
MDUxNTBkMmNhNmRjNzdkZjg2MWI2MmQwYWFiM2E5ZTVkYjJhYi4uZTRkYTdlZTIzMTI5ZjZmNjlj
ODMwZDYwYTAwOWNlNWRmMTk0MzJmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvV2ViSURCRGF0YWJhc2VJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9XZWJJREJEYXRhYmFzZUltcGwuY3BwCkBAIC0xMTgsNyArMTE4LDcgQEAgdm9pZCBXZWJJ
REJEYXRhYmFzZUltcGw6OmNvbW1pdChsb25nIGxvbmcgdHJhbnNhY3Rpb25JZCkKIHZvaWQgV2Vi
SURCRGF0YWJhc2VJbXBsOjpvcGVuQ3Vyc29yKGxvbmcgbG9uZyB0cmFuc2FjdGlvbklkLCBsb25n
IGxvbmcgb2JqZWN0U3RvcmVJZCwgbG9uZyBsb25nIGluZGV4SWQsIGNvbnN0IFdlYklEQktleVJh
bmdlJiBrZXlSYW5nZSwgdW5zaWduZWQgc2hvcnQgZGlyZWN0aW9uLCBib29sIGtleU9ubHksIFRh
c2tUeXBlIHRhc2tUeXBlLCBXZWJJREJDYWxsYmFja3MqIGNhbGxiYWNrcykKIHsKICAgICBpZiAo
bV9kYXRhYmFzZUJhY2tlbmQpCi0gICAgICAgIG1fZGF0YWJhc2VCYWNrZW5kLT5vcGVuQ3Vyc29y
KHRyYW5zYWN0aW9uSWQsIG9iamVjdFN0b3JlSWQsIGluZGV4SWQsIGtleVJhbmdlLCBzdGF0aWNf
Y2FzdDxJREJDdXJzb3I6OkRpcmVjdGlvbj4oZGlyZWN0aW9uKSwga2V5T25seSwgc3RhdGljX2Nh
c3Q8SURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlOjpUYXNrVHlwZT4odGFza1R5cGUpLCBJREJD
YWxsYmFja3NQcm94eTo6Y3JlYXRlKGFkb3B0UHRyKGNhbGxiYWNrcykpKTsKKyAgICAgICAgbV9k
YXRhYmFzZUJhY2tlbmQtPm9wZW5DdXJzb3IodHJhbnNhY3Rpb25JZCwgb2JqZWN0U3RvcmVJZCwg
aW5kZXhJZCwga2V5UmFuZ2UsIHN0YXRpY19jYXN0PEluZGV4ZWREQjo6Q3Vyc29yRGlyZWN0aW9u
PihkaXJlY3Rpb24pLCBrZXlPbmx5LCBzdGF0aWNfY2FzdDxJREJEYXRhYmFzZUJhY2tlbmRJbnRl
cmZhY2U6OlRhc2tUeXBlPih0YXNrVHlwZSksIElEQkNhbGxiYWNrc1Byb3h5OjpjcmVhdGUoYWRv
cHRQdHIoY2FsbGJhY2tzKSkpOwogfQogCiB2b2lkIFdlYklEQkRhdGFiYXNlSW1wbDo6Y291bnQo
bG9uZyBsb25nIHRyYW5zYWN0aW9uSWQsIGxvbmcgbG9uZyBvYmplY3RTdG9yZUlkLCBsb25nIGxv
bmcgaW5kZXhJZCwgY29uc3QgV2ViSURCS2V5UmFuZ2UmIGtleVJhbmdlLCBXZWJJREJDYWxsYmFj
a3MqIGNhbGxiYWNrcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMv
SURCQWJvcnRPbkNvcnJ1cHRUZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMv
SURCQWJvcnRPbkNvcnJ1cHRUZXN0LmNwcAppbmRleCBlNjNjZTJhODZiMmE5M2Q2YjIyZTZmODA0
MzhiZmQ3ODJiZDkxMWI5Li44NzFjNmI4MGMwYmNlNWQ5OTI3MDUwZjFkMTM5ZWNmODhiNDg0MjBk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0lEQkFib3J0T25Db3Jy
dXB0VGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9JREJBYm9ydE9u
Q29ycnVwdFRlc3QuY3BwCkBAIC0zMSw2ICszMSw4IEBACiAjaW5jbHVkZSAiSURCRGF0YWJhc2VD
YWxsYmFja3MuaCIKICNpbmNsdWRlICJJREJGYWN0b3J5QmFja2VuZEltcGwuaCIKICNpbmNsdWRl
ICJJREJGYWtlQmFja2luZ1N0b3JlLmgiCisjaW5jbHVkZSAiSURCS2V5LmgiCisjaW5jbHVkZSAi
SW5kZXhlZERCLmgiCiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKICNpbmNsdWRlIDxndGVz
dC9ndGVzdC5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vdGVzdHMvSURCRGF0YWJhc2VCYWNrZW5kVGVzdC5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3Rlc3RzL0lEQkRhdGFiYXNlQmFja2VuZFRlc3QuY3BwCmluZGV4IDQ1
YjllMmJiMmJmYWNhMWYwYWMxMTliN2Y1NWUyYTVjNDFiMTQ1ZWQuLmQxODQwMjViY2I0NzM0Mzlh
NGU1NDhkMjNhYTAyMDcyZWQwYTkyZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vdGVzdHMvSURCRGF0YWJhc2VCYWNrZW5kVGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS90ZXN0cy9JREJEYXRhYmFzZUJhY2tlbmRUZXN0LmNwcApAQCAtMjQsNiArMjQsOSBA
QAogICovCiAKICNpbmNsdWRlICJjb25maWcuaCIKKworI2luY2x1ZGUgIklEQkRhdGFiYXNlLmgi
CisKICNpbmNsdWRlICJJREJCYWNraW5nU3RvcmUuaCIKICNpbmNsdWRlICJJREJDdXJzb3JCYWNr
ZW5kSW50ZXJmYWNlLmgiCiAjaW5jbHVkZSAiSURCRGF0YWJhc2VCYWNrZW5kSW1wbC5oIgpAQCAt
MzEsNiArMzQsNyBAQAogI2luY2x1ZGUgIklEQkZhY3RvcnlCYWNrZW5kSW1wbC5oIgogI2luY2x1
ZGUgIklEQkZha2VCYWNraW5nU3RvcmUuaCIKICNpbmNsdWRlICJJREJUcmFuc2FjdGlvbkJhY2tl
bmRJbXBsLmgiCisjaW5jbHVkZSAiSW5kZXhlZERCLmgiCiAjaW5jbHVkZSAiU2hhcmVkQnVmZmVy
LmgiCiAjaW5jbHVkZSAiV2ViSURCRGF0YWJhc2VDYWxsYmFja3NJbXBsLmgiCiAjaW5jbHVkZSAi
V2ViSURCRGF0YWJhc2VJbXBsLmgiCkBAIC0xNTEsNyArMTU1LDcgQEAgcHVibGljOgogICAgIHZp
cnR1YWwgdm9pZCBhYm9ydChpbnQ2NF90IHRyYW5zYWN0aW9uSWQsIFBhc3NSZWZQdHI8SURCRGF0
YWJhc2VFcnJvcj4pIE9WRVJSSURFIHsgfQogICAgIHZpcnR1YWwgdm9pZCBjb21taXQoaW50NjRf
dCB0cmFuc2FjdGlvbklkKSBPVkVSUklERSB7IH0KIAotICAgIHZpcnR1YWwgdm9pZCBvcGVuQ3Vy
c29yKGludDY0X3QgdHJhbnNhY3Rpb25JZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBpbnQ2NF90
IGluZGV4SWQsIFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+LCB1bnNpZ25lZCBzaG9ydCBkaXJlY3Rp
b24sIGJvb2wga2V5T25seSwgVGFza1R5cGUsIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPikgT1ZF
UlJJREUgeyB9CisgICAgdmlydHVhbCB2b2lkIG9wZW5DdXJzb3IoaW50NjRfdCB0cmFuc2FjdGlv
bklkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGludDY0X3QgaW5kZXhJZCwgUGFzc1JlZlB0cjxJ
REJLZXlSYW5nZT4sIEluZGV4ZWREQjo6Q3Vyc29yRGlyZWN0aW9uLCBib29sIGtleU9ubHksIFRh
c2tUeXBlLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4pIE9WRVJSSURFIHsgfQogICAgIHZpcnR1
YWwgdm9pZCBjb3VudChpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGludDY0X3QgaW5kZXhJZCwgaW50
NjRfdCB0cmFuc2FjdGlvbklkLCBQYXNzUmVmUHRyPElEQktleVJhbmdlPiwgUGFzc1JlZlB0cjxJ
REJDYWxsYmFja3M+KSBPVkVSUklERSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZ2V0KGludDY0X3Qg
b2JqZWN0U3RvcmVJZCwgaW50NjRfdCBpbmRleElkLCBpbnQ2NF90IHRyYW5zYWN0aW9uSWQsIFBh
c3NSZWZQdHI8SURCS2V5UmFuZ2U+LCBib29sIGtleU9ubHksIFBhc3NSZWZQdHI8SURCQ2FsbGJh
Y2tzPikgT1ZFUlJJREUgeyB9CiAgICAgdmlydHVhbCB2b2lkIHB1dChpbnQ2NF90IHRyYW5zYWN0
aW9uSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+LCBQ
YXNzUmVmUHRyPElEQktleT4sIFB1dE1vZGUsIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiwgY29u
c3QgVmVjdG9yPGludDY0X3Q+JiBpbmRleElkcywgY29uc3QgVmVjdG9yPEluZGV4S2V5cz4mKSBP
VkVSUklERSB7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvSURC
RmFrZUJhY2tpbmdTdG9yZS5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9JREJGYWtl
QmFja2luZ1N0b3JlLmgKaW5kZXggM2VkNzI0YmI0ZWIwYTJiYmY4OGI2NDYxYTUyZmY0MjdiNjhl
YmIzMi4uZWVmYzY0OGFkMjNhNDVjMmNjODdjMjRjYmNiMzQyMTYyMWQ3NGU2OSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9JREJGYWtlQmFja2luZ1N0b3JlLmgKKysr
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9JREJGYWtlQmFja2luZ1N0b3JlLmgKQEAg
LTUxLDEwICs1MSwxMCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRlbGV0ZUluZGV4KFRy
YW5zYWN0aW9uKiwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGlu
dDY0X3QgaW5kZXhJZCkgT1ZFUlJJREUgeyB9CiAgICAgdmlydHVhbCB2b2lkIHB1dEluZGV4RGF0
YUZvclJlY29yZChUcmFuc2FjdGlvbiosIGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmpl
Y3RTdG9yZUlkLCBpbnQ2NF90IGluZGV4SWQsIGNvbnN0IElEQktleSYsIGNvbnN0IFJlY29yZElk
ZW50aWZpZXImKSBPVkVSUklERSB7IH0KIAotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxDdXJzb3I+
IG9wZW5PYmplY3RTdG9yZUtleUN1cnNvcihUcmFuc2FjdGlvbiosIGludDY0X3QgZGF0YWJhc2VJ
ZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBjb25zdCBJREJLZXlSYW5nZSosIElEQkN1cnNvcjo6
RGlyZWN0aW9uKSBPVkVSUklERSB7IHJldHVybiBQYXNzUmVmUHRyPEN1cnNvcj4oKTsgfQotICAg
IHZpcnR1YWwgUGFzc1JlZlB0cjxDdXJzb3I+IG9wZW5PYmplY3RTdG9yZUN1cnNvcihUcmFuc2Fj
dGlvbiosIGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBjb25zdCBJ
REJLZXlSYW5nZSosIElEQkN1cnNvcjo6RGlyZWN0aW9uKSBPVkVSUklERSB7IHJldHVybiBQYXNz
UmVmUHRyPEN1cnNvcj4oKTsgfQotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxDdXJzb3I+IG9wZW5J
bmRleEtleUN1cnNvcihUcmFuc2FjdGlvbiosIGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBv
YmplY3RTdG9yZUlkLCBpbnQ2NF90IGluZGV4SWQsIGNvbnN0IElEQktleVJhbmdlKiwgSURCQ3Vy
c29yOjpEaXJlY3Rpb24pIE9WRVJSSURFIHsgcmV0dXJuIFBhc3NSZWZQdHI8Q3Vyc29yPigpOyB9
Ci0gICAgdmlydHVhbCBQYXNzUmVmUHRyPEN1cnNvcj4gb3BlbkluZGV4Q3Vyc29yKFRyYW5zYWN0
aW9uKiwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGludDY0X3Qg
aW5kZXhJZCwgY29uc3QgSURCS2V5UmFuZ2UqLCBJREJDdXJzb3I6OkRpcmVjdGlvbikgT1ZFUlJJ
REUgeyByZXR1cm4gUGFzc1JlZlB0cjxDdXJzb3I+KCk7IH0KKyAgICB2aXJ0dWFsIFBhc3NSZWZQ
dHI8Q3Vyc29yPiBvcGVuT2JqZWN0U3RvcmVLZXlDdXJzb3IoVHJhbnNhY3Rpb24qLCBpbnQ2NF90
IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgY29uc3QgSURCS2V5UmFuZ2UqLCBJ
bmRleGVkREI6OkN1cnNvckRpcmVjdGlvbikgT1ZFUlJJREUgeyByZXR1cm4gUGFzc1JlZlB0cjxD
dXJzb3I+KCk7IH0KKyAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8Q3Vyc29yPiBvcGVuT2JqZWN0U3Rv
cmVDdXJzb3IoVHJhbnNhY3Rpb24qLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0
U3RvcmVJZCwgY29uc3QgSURCS2V5UmFuZ2UqLCBJbmRleGVkREI6OkN1cnNvckRpcmVjdGlvbikg
T1ZFUlJJREUgeyByZXR1cm4gUGFzc1JlZlB0cjxDdXJzb3I+KCk7IH0KKyAgICB2aXJ0dWFsIFBh
c3NSZWZQdHI8Q3Vyc29yPiBvcGVuSW5kZXhLZXlDdXJzb3IoVHJhbnNhY3Rpb24qLCBpbnQ2NF90
IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgaW50NjRfdCBpbmRleElkLCBjb25z
dCBJREJLZXlSYW5nZSosIEluZGV4ZWREQjo6Q3Vyc29yRGlyZWN0aW9uKSBPVkVSUklERSB7IHJl
dHVybiBQYXNzUmVmUHRyPEN1cnNvcj4oKTsgfQorICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxDdXJz
b3I+IG9wZW5JbmRleEN1cnNvcihUcmFuc2FjdGlvbiosIGludDY0X3QgZGF0YWJhc2VJZCwgaW50
NjRfdCBvYmplY3RTdG9yZUlkLCBpbnQ2NF90IGluZGV4SWQsIGNvbnN0IElEQktleVJhbmdlKiwg
SW5kZXhlZERCOjpDdXJzb3JEaXJlY3Rpb24pIE9WRVJSSURFIHsgcmV0dXJuIFBhc3NSZWZQdHI8
Q3Vyc29yPigpOyB9CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>