<?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>151418</bug_id>
          
          <creation_ts>2015-11-18 15:57:18 -0800</creation_ts>
          <short_desc>Remove the non-NetworkProcess configurations</short_desc>
          <delta_ts>2015-11-30 15:37:50 -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>WebKit2</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>151476</dependson>
    
    <dependson>151512</dependson>
    
    <dependson>151541</dependson>
    
    <dependson>151580</dependson>
    
    <dependson>151662</dependson>
          <blocked>150834</blocked>
    
    <blocked>140075</blocked>
    
    <blocked>146552</blocked>
    
    <blocked>151473</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Alex Christensen">achristensen</reporter>
          <assigned_to name="Alex Christensen">achristensen</assigned_to>
          <cc>cgarcia</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dbates</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>hs85.jeong</cc>
    
    <cc>jh718.park</cc>
    
    <cc>mcatanzaro</cc>
    
    <cc>ossy</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1143047</commentid>
    <comment_count>0</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2015-11-18 15:57:18 -0800</bug_when>
    <thetext>NetworkProcess should be the default.  Supporting non-NetworkProcess code paths makes the code messy.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1143397</commentid>
    <comment_count>1</comment_count>
      <attachid>265889</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2015-11-19 13:00:31 -0800</bug_when>
    <thetext>Created attachment 265889
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1143403</commentid>
    <comment_count>2</comment_count>
      <attachid>265889</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2015-11-19 13:06:03 -0800</bug_when>
    <thetext>Comment on attachment 265889
Patch

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

&gt; Source/WebKit2/UIProcess/API/C/WKContext.cpp:-340
&gt; -void WKContextSetProcessModel(WKContextRef contextRef, WKProcessModel processModel)
&gt; -{
&gt; -    toImpl(contextRef)-&gt;setProcessModel(toProcessModel(processModel));
&gt; -}
&gt; -
&gt; -WKProcessModel WKContextGetProcessModel(WKContextRef contextRef)
&gt; -{
&gt; -    return toAPI(toImpl(contextRef)-&gt;processModel());
&gt; -}

You can&apos;t remove this, it&apos;ll break nightlies. Just make these no-ops and move them to WKDeprecatedFunctions.cpp.

&gt; Source/WebKit2/UIProcess/API/C/WKContext.cpp:-560
&gt; -void WKContextSetUsesNetworkProcess(WKContextRef contextRef, bool usesNetworkProcess)
&gt; -{
&gt; -    toImpl(contextRef)-&gt;setUsesNetworkProcess(usesNetworkProcess);
&gt; -}

Ditto.

&gt; Source/WebKit2/UIProcess/API/C/WKContext.h:81
&gt;  enum {
&gt; -    kWKProcessModelSharedSecondaryProcess = 0,
&gt; -    kWKProcessModelMultipleSecondaryProcesses = 1
&gt; -};
&gt; -typedef uint32_t WKProcessModel;
&gt; -
&gt; -enum {
&gt;      kWKStatisticsOptionsWebContent = 1 &lt;&lt; 0,
&gt;      kWKStatisticsOptionsNetworking = 1 &lt;&lt; 1
&gt;  };

Pretty sure removing this is going to break the Mavericks build of Safari.

&gt; Source/WebKit2/UIProcess/API/C/WKContextPrivate.h:-80
&gt; -// FIXME: This function is temporary and useful during the development of the NetworkProcess feature.
&gt; -// At some point it should be removed.
&gt; -WK_EXPORT void WKContextSetUsesNetworkProcess(WKContextRef context, bool usesNetworkProcess);

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1143424</commentid>
    <comment_count>3</comment_count>
      <attachid>265889</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2015-11-19 13:49:31 -0800</bug_when>
    <thetext>Comment on attachment 265889
Patch

r=me if you make it build

Last 500 characters of output:
it2/UIProcess/API/efl/ewk_context.cpp:284:48: error: &apos;toEwkProcessModel&apos; declared as an &apos;inline&apos; variable
 inline Ewk_Process_Model toEwkProcessModel(WKProcessModel processModel)
                                                ^
../../Source/WebKit2/UIProcess/API/efl/ewk_context.cpp:284:48: error: &apos;WKProcessModel&apos; was not declared in this scope
../../Source/WebKit2/UIProcess/API/efl/ewk_context.cpp:285:1: error: expected &apos;,&apos; or &apos;;&apos; before &apos;{&apos; token
 {
 ^
ninja: build stopped: subcommand failed.

Failed to run &quot;[&apos;Tools/Scripts/build-webkit&apos;, &apos;--release&apos;, &apos;--efl&apos;, &apos;--update-efl&apos;, &apos;--makeargs=&quot;-j8&quot;&apos;]&quot; exit_code: 1
/Root/include/atk-1.0 -isystem ../DependenciesEFL/Root/include/eldbus-1 -isystem /usr/include/dbus-1.0 -isystem /usr/lib/x86_64-linux-gnu/dbus-1.0/include    -Werror -Wall -Wextra -Wcast-align -Wformat-security -Wmissing-format-attribute -Wpointer-arith -Wundef -Wwrite-strings  -Wno-unused-parameter -MMD -MT Source/WebKit2/CMakeFiles/WebKit2.dir/UIProcess/API/efl/ewk_context.cpp.o -MF Source/WebKit2/CMakeFiles/WebKit2.dir/UIProcess/API/efl/ewk_context.cpp.o.d -o Source/WebKit2/CMakeFiles/WebKit2.dir/UIProcess/API/efl/ewk_context.cpp.o -c ../../Source/WebKit2/UIProcess/API/efl/ewk_context.cpp
../../Source/WebKit2/UIProcess/API/efl/ewk_context.cpp:260:12: error: &apos;WKProcessModel&apos; does not name a type
 inline WKProcessModel toWKProcessModel(Ewk_Process_Model processModel)
            ^
../../Source/WebKit2/UIProcess/API/efl/ewk_context.cpp: In member function &apos;void EwkContext::setProcessModel(Ewk_Process_Model)&apos;:
../../Source/WebKit2/UIProcess/API/efl/ewk_context.cpp:275:5: error: &apos;WKProcessModel&apos; was not declared in this scope
     WKProcessModel newWKProcessModel = toWKProcessModel(processModel);
     ^</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1143433</commentid>
    <comment_count>4</comment_count>
      <attachid>265900</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2015-11-19 14:05:16 -0800</bug_when>
    <thetext>Created attachment 265900
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1143449</commentid>
    <comment_count>5</comment_count>
      <attachid>265904</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2015-11-19 14:29:41 -0800</bug_when>
    <thetext>Created attachment 265904
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1143474</commentid>
    <comment_count>6</comment_count>
      <attachid>265909</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2015-11-19 15:20:59 -0800</bug_when>
    <thetext>Created attachment 265909
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1143478</commentid>
    <comment_count>7</comment_count>
      <attachid>265912</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2015-11-19 15:31:05 -0800</bug_when>
    <thetext>Created attachment 265912
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1143482</commentid>
    <comment_count>8</comment_count>
      <attachid>265913</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2015-11-19 15:38:41 -0800</bug_when>
    <thetext>Created attachment 265913
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1143484</commentid>
    <comment_count>9</comment_count>
      <attachid>265914</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2015-11-19 15:50:51 -0800</bug_when>
    <thetext>Created attachment 265914
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1143486</commentid>
    <comment_count>10</comment_count>
      <attachid>265914</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-11-19 15:57:04 -0800</bug_when>
    <thetext>Comment on attachment 265914
Patch

Rejecting attachment 265914 from commit-queue.

Failed to run &quot;[&apos;/Volumes/Data/EWS/WebKit/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=webkit-queues.webkit.org&apos;, &apos;--bot-id=webkit-cq-01&apos;, &apos;validate-changelog&apos;, &apos;--check-oops&apos;, &apos;--non-interactive&apos;, 265914, &apos;--port=mac&apos;]&quot; exit_code: 1 cwd: /Volumes/Data/EWS/WebKit

Geoff Garen found in /Volumes/Data/EWS/WebKit/ChangeLog does not appear to be a valid reviewer according to contributors.json.
/Volumes/Data/EWS/WebKit/ChangeLog neither lists a valid reviewer nor contains the string &quot;Unreviewed&quot; or &quot;Rubber stamp&quot; (case insensitive).

Full output: http://webkit-queues.webkit.org/results/451825</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1143487</commentid>
    <comment_count>11</comment_count>
      <attachid>265915</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2015-11-19 16:01:16 -0800</bug_when>
    <thetext>Created attachment 265915
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1143503</commentid>
    <comment_count>12</comment_count>
      <attachid>265915</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-11-19 16:51:49 -0800</bug_when>
    <thetext>Comment on attachment 265915
Patch

Clearing flags on attachment: 265915

Committed r192667: &lt;http://trac.webkit.org/changeset/192667&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1143504</commentid>
    <comment_count>13</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-11-19 16:51:53 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1143515</commentid>
    <comment_count>14</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2015-11-19 17:28:11 -0800</bug_when>
    <thetext>GTK build fixed in http://trac.webkit.org/changeset/192668
I&apos;m looking into the API test failures now...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1143539</commentid>
    <comment_count>15</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2015-11-19 18:50:20 -0800</bug_when>
    <thetext>(In reply to comment #14)
&gt; GTK build fixed in http://trac.webkit.org/changeset/192668
&gt; I&apos;m looking into the API test failures now...

I haven&apos;t looked, but we probably have a test that makes sure webkit_web_context_get_process_model() after webkit_web_context_set_process_model() returns the process model that was set. Please don&apos;t worry about any GTK+ API tests you might have broken; we&apos;ll fix them.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1143557</commentid>
    <comment_count>16</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-11-19 19:49:15 -0800</bug_when>
    <thetext>Re-opened since this is blocked by bug 151476</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1143591</commentid>
    <comment_count>17</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2015-11-19 23:29:28 -0800</bug_when>
    <thetext>(In reply to comment #15)
&gt; (In reply to comment #14)
&gt; &gt; GTK build fixed in http://trac.webkit.org/changeset/192668
&gt; &gt; I&apos;m looking into the API test failures now...
&gt; 
&gt; I haven&apos;t looked, but we probably have a test that makes sure
&gt; webkit_web_context_get_process_model() after
&gt; webkit_web_context_set_process_model() returns the process model that was
&gt; set. Please don&apos;t worry about any GTK+ API tests you might have broken;
&gt; we&apos;ll fix them.

A unit test failure probably means we would be changing the behaviour of our public API, we should ensure this change is backwards compatible. See my review on bug #151473.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1143612</commentid>
    <comment_count>18</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2015-11-20 02:49:07 -0800</bug_when>
    <thetext>(In reply to comment #12)
&gt; Comment on attachment 265915 [details]
&gt; Patch
&gt; 
&gt; Clearing flags on attachment: 265915
&gt; 
&gt; Committed r192667: &lt;http://trac.webkit.org/changeset/192667&gt;

It made the EFL bot early exit due to 50+ timeouts:
https://build.webkit.org/builders/EFL%20Linux%2064-bit%20Release%20WK2/builds/25632

It would be great if the maintainers could fix this issue before relanding 
this patch. Maybe EFL needs some refactoring similar to GTK port.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1143621</commentid>
    <comment_count>19</comment_count>
      <attachid>265948</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2015-11-20 04:51:01 -0800</bug_when>
    <thetext>Created attachment 265948
Patch with the GTK changes needed

This doesn&apos;t fix the unit tests timing out, but those tests don&apos;t work with using the network process for some reason. We can deal with them in a different bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1143624</commentid>
    <comment_count>20</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2015-11-20 05:00:52 -0800</bug_when>
    <thetext>(In reply to comment #19)
&gt; Created attachment 265948 [details]
&gt; Patch with the GTK changes needed
&gt; 
&gt; This doesn&apos;t fix the unit tests timing out, but those tests don&apos;t work with
&gt; using the network process for some reason. We can deal with them in a
&gt; different bug.

https://bugs.webkit.org/show_bug.cgi?id=151490</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1143802</commentid>
    <comment_count>21</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2015-11-20 13:59:55 -0800</bug_when>
    <thetext>I&apos;m going to do this in pieces, starting with https://bugs.webkit.org/show_bug.cgi?id=151512 which shouldn&apos;t change the compiled output at all.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1144021</commentid>
    <comment_count>22</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2015-11-22 02:26:37 -0800</bug_when>
    <thetext>(In reply to comment #21)
&gt; I&apos;m going to do this in pieces, starting with
&gt; https://bugs.webkit.org/show_bug.cgi?id=151512 which shouldn&apos;t change the
&gt; compiled output at all.

Ok, I&apos;ve moved the GTK+ changes to its own bug then. It switches to use network process unconditionally in preparation for this change, so that when you fix this bug you only need to remove a few lines in the GTK+ port to make it build.

https://bugs.webkit.org/show_bug.cgi?id=151541</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1144275</commentid>
    <comment_count>23</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2015-11-23 21:41:27 -0800</bug_when>
    <thetext>(In reply to comment #22)
Thanks Carlos!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1144985</commentid>
    <comment_count>24</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2015-11-30 15:37:00 -0800</bug_when>
    <thetext>This is finished because all the dependent bugs are finished.  I&apos;ve completely landed this in pieces.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>265889</attachid>
            <date>2015-11-19 13:00:31 -0800</date>
            <delta_ts>2015-11-19 14:05:14 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-151418-20151119130019.patch</filename>
            <type>text/plain</type>
            <size>150420</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IENoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBDaGFuZ2VMb2cJKHJldmlzaW9uIDE5MjYw
MSkKKysrIENoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE1IEBACisyMDE1LTEx
LTE5ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAg
ICAgUmVtb3ZlIHRoZSBub24tTmV0d29ya1Byb2Nlc3MgY29uZmlndXJhdGlvbnMKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MTQxOAorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogU291cmNlL2NtYWtlL09w
dGlvbnNFZmwuY21ha2U6CisgICAgICAgICogU291cmNlL2NtYWtlL09wdGlvbnNHVEsuY21ha2U6
CisgICAgICAgICogU291cmNlL2NtYWtlL09wdGlvbnNNYWMuY21ha2U6CisgICAgICAgICogU291
cmNlL2NtYWtlL1dlYktpdEZlYXR1cmVzLmNtYWtlOgorCiAyMDE1LTExLTE3ICBDYXJsb3MgR2Fy
Y2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KIAogICAgICAgICBSRUdSRVNTSU9OKHIx
OTI0NTkpOiBbR1RLXSBVc2VyIGFnZW50IHN0cmluZyBpcyBicm9rZW4gYWZ0ZXIgcjE5MjQ1OQpJ
bmRleDogU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQyL0NoYW5nZUxvZwkocmV2aXNpb24gMTkyNjUzKQorKysgU291cmNlL1dlYktpdDIvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjYwIEBACisyMDE1LTExLTE5ICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmVtb3ZlIHRo
ZSBub24tTmV0d29ya1Byb2Nlc3MgY29uZmlndXJhdGlvbnMKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MTQxOAorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2ggYXNzdW1lcyBFTkFCTEUoTkVU
V09SS19QUk9DRVNTKSBpcyBhbHdheXMgMSwgdXNlc05ldHdvcmtQcm9jZXNzIGlzIGFsd2F5cyB0
cnVlLCAKKyAgICAgICAgYW5kIFByb2Nlc3NNb2RlbCBpcyBhbHdheXMgUHJvY2Vzc01vZGVsTXVs
dGlwbGVTZWNvbmRhcnlQcm9jZXNzZXMuICBJdCBkb2VzIHRoaXMgYnkgcmVtb3ZpbmcKKyAgICAg
ICAgdGhlIGNoZWNrcyBhbmQgdGhlIGNvZGUgdGhhdCB3b3VsZCBiZSBleGVjdXRlZCB3aXRoIG90
aGVyIGNvbmZpZ3VyYXRpb25zLgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAg
ICogTmV0d29ya1Byb2Nlc3MvRW50cnlQb2ludC9tYWMvTGVnYWN5UHJvY2Vzcy9OZXR3b3JrUHJv
Y2Vzc01haW4ubW06CisgICAgICAgIChOZXR3b3JrUHJvY2Vzc01haW4pOgorICAgICAgICAqIE5l
dHdvcmtQcm9jZXNzL0VudHJ5UG9pbnQvbWFjL1hQQ1NlcnZpY2UvTmV0d29ya1NlcnZpY2VFbnRy
eVBvaW50Lm1tOgorICAgICAgICAoTmV0d29ya1NlcnZpY2VJbml0aWFsaXplcik6CisgICAgICAg
ICogTmV0d29ya1Byb2Nlc3MvRmlsZUFQSS9OZXR3b3JrQmxvYlJlZ2lzdHJ5LmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6TmV0d29ya0Jsb2JSZWdpc3RyeTo6ZmlsZXNJbkJsb2IpOgorICAgICAgICAq
IE5ldHdvcmtQcm9jZXNzL0ZpbGVBUEkvTmV0d29ya0Jsb2JSZWdpc3RyeS5oOgorICAgICAgICAq
IE5ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmJsb2JTaXplKToKKyAg
ICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oOgor
ICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1l
c3NhZ2VzLmluOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkLmNwcDoKKyAg
ICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZC5oOgorICAgICAgICAqIE5ldHdvcmtQ
cm9jZXNzL05ldHdvcmtMb2FkQ2xpZW50Lmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0
d29ya0xvYWRQYXJhbWV0ZXJzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0xvYWRQYXJh
bWV0ZXJzOjpOZXR3b3JrTG9hZFBhcmFtZXRlcnMpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNz
L05ldHdvcmtMb2FkUGFyYW1ldGVycy5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdv
cmtQcm9jZXNzLmNwcDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5o
OgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluOgor
ICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHA6CisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmg6CisgICAgICAgICog
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLm1lc3NhZ2VzLmluOgorICAgICAg
ICAqIE5ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtQcm9jZXNzQ29jb2EubW06CisgICAgICAg
IChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpjbGVhckRpc2tDYWNoZSk6CisgICAgICAgICogTmV0
d29ya1Byb2Nlc3MvaW9zL05ldHdvcmtQcm9jZXNzSU9TLm1tOgorICAgICAgICAqIE5ldHdvcmtQ
cm9jZXNzL21hYy9OZXR3b3JrTG9hZE1hYy5tbToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9t
YWMvTmV0d29ya1Byb2Nlc3NNYWMubW06CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvbWFjL05l
dHdvcmtSZXNvdXJjZUxvYWRlck1hYy5tbToKKyAgICAgICAgKiBTaGFyZWQvQXV0aGVudGljYXRp
b24vQXV0aGVudGljYXRpb25NYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6QXV0aGVudGlj
YXRpb25NYW5hZ2VyOjpkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UpOgorICAgICAg
ICAqIFNoYXJlZC9OZXR3b3JrL0N1c3RvbVByb3RvY29scy9Db2NvYS9DdXN0b21Qcm90b2NvbE1h
bmFnZXJDb2NvYS5tbToKKyAgICAgICAgKFdlYktpdDo6Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyOjpp
bml0aWFsaXplKToKKyAgICAgICAgKFdlYktpdDo6Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyOjphZGRD
dXN0b21Qcm90b2NvbCk6CisgICAgICAgICogU2hhcmVkL05ldHdvcmsvQ3VzdG9tUHJvdG9jb2xz
L0N1c3RvbVByb3RvY29sTWFuYWdlci5oOgorICAgICAgICAqIFNoYXJlZC9OZXR3b3JrL05ldHdv
cmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29y
a1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnM6OmRlY29kZSk6CisgICAgICAgICogU2hhcmVkL05l
dHdvcmsvTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaDoKKyAgICAgICAgKiBTaGFy
ZWQvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1N1cHBsZW1lbnQuaDoKKyAgICAgICAgKFdlYktpdDo6
TmV0d29ya1Byb2Nlc3NTdXBwbGVtZW50Ojppbml0aWFsaXplKToKKyAgICAgICAgKiBTaGFyZWQv
TmV0d29yay9OZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycy5jcHA6CisgICAgICAgIChXZWJL
aXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzOjpkZWNvZGUpOgorICAgICAgICAqIFNo
YXJlZC9OZXR3b3JrL05ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmg6CisgICAgICAgICog
U2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuY3BwOgorICAgICAgICAoV2ViS2l0
OjpXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOjpXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0
ZXJzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyczo6ZW5j
b2RlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyczo6ZGVj
b2RlKToKKyAgICAgICAgKiBTaGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oOgor
ICAgICAgICAqIFNoYXJlZC9tYWMvQ29va2llU3RvcmFnZVNoaW0uaDoKKyAgICAgICAgKiBTaGFy
ZWQvbWFjL0Nvb2tpZVN0b3JhZ2VTaGltLm1tOgorICAgICAgICAoLVtXS05TVVJMU2Vzc2lvbkxv
Y2FsIF9nZXRDb29raWVIZWFkZXJzRm9yVGFzazpjb21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAg
ICAgKiBTaGFyZWQvbWFjL0Nvb2tpZVN0b3JhZ2VTaGltTGlicmFyeS5jcHA6CisgICAgICAgICog
U2hhcmVkL21hYy9Db29raWVTdG9yYWdlU2hpbUxpYnJhcnkuaDoKKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL0FQSVByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5jcHA6CisgICAgICAgIChBUEk6OlBy
b2Nlc3NQb29sQ29uZmlndXJhdGlvbjo6Y3JlYXRlV2l0aExlZ2FjeU9wdGlvbnMpOgorICAgICAg
ICAoQVBJOjpQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb246OmNvcHkpOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvQVBJUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmg6CisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9BUElTZXNzaW9uLmNwcDoKKyAgICAgICAgKEFQSTo6U2Vzc2lvbjo6flNlc3Npb24p
OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS0FQSUNhc3QuaDoKKyAgICAgICAgKFdlYktp
dDo6dG9BUEkpOgorICAgICAgICAoV2ViS2l0Ojp0b0ZvbnRTbW9vdGhpbmdMZXZlbCk6CisgICAg
ICAgIChXZWJLaXQ6OnRvUHJvY2Vzc01vZGVsKTogRGVsZXRlZC4KKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL0MvV0tDb250ZXh0LmNwcDoKKyAgICAgICAgKFdLQ29udGV4dEdldENhY2hlTW9kZWwp
OgorICAgICAgICAoV0tDb250ZXh0U2V0TWF4aW11bU51bWJlck9mUHJvY2Vzc2VzKToKKyAgICAg
ICAgKFdLQ29udGV4dFNldEphdmFTY3JpcHRHYXJiYWdlQ29sbGVjdG9yVGltZXJFbmFibGVkKToK
KyAgICAgICAgKFdLQ29udGV4dFVzZVRlc3RpbmdOZXR3b3JrU2Vzc2lvbik6CisgICAgICAgIChX
S0NvbnRleHRTZXRQcm9jZXNzTW9kZWwpOiBEZWxldGVkLgorICAgICAgICAoV0tDb250ZXh0R2V0
UHJvY2Vzc01vZGVsKTogRGVsZXRlZC4KKyAgICAgICAgKFdLQ29udGV4dFNldFVzZXNOZXR3b3Jr
UHJvY2Vzcyk6IERlbGV0ZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dC5o
OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHRQcml2YXRlLmg6CisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9DL21hYy9XS0NvbnRleHRQcml2YXRlTWFjLm1tOgorICAgICAgICAo
V0tDb250ZXh0R2V0TmV0d29ya1Byb2Nlc3NJZGVudGlmaWVyKToKKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL0NvY29hL1dLUHJvY2Vzc0dyb3VwLm1tOgorICAgICAgICAoLVtXS1Byb2Nlc3NHcm91
cCBpbml0V2l0aEluamVjdGVkQnVuZGxlVVJMOl0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkv
Q29jb2EvV0tQcm9jZXNzUG9vbC5tbToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV2ViUHJv
Y2Vzc1Bvb2xDb2NvYS5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnVwZGF0
ZVByb2Nlc3NTdXBwcmVzc2lvblN0YXRlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bv
b2w6OnBsYXRmb3JtSW5pdGlhbGl6ZVdlYlByb2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
cm9jZXNzUG9vbDo6cGxhdGZvcm1Jbml0aWFsaXplTmV0d29ya1Byb2Nlc3MpOgorICAgICAgICAo
V2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6cGxhdGZvcm1JbnZhbGlkYXRlQ29udGV4dCk6CisgICAg
ICAgICogVUlQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZFByb3h5LmNwcDoKKyAgICAgICAgKFdl
YktpdDo6RG93bmxvYWRQcm94eTo6Y2FuY2VsKToKKyAgICAgICAgKFdlYktpdDo6RG93bmxvYWRQ
cm94eTo6aW52YWxpZGF0ZSk6CisgICAgICAgICogVUlQcm9jZXNzL0xhdW5jaGVyL1Byb2Nlc3NM
YXVuY2hlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OlByb2Nlc3NMYXVuY2hlcjo6cHJvY2Vzc1R5
cGVBc1N0cmluZyk6CisgICAgICAgIChXZWJLaXQ6OlByb2Nlc3NMYXVuY2hlcjo6Z2V0UHJvY2Vz
c1R5cGVGcm9tU3RyaW5nKToKKyAgICAgICAgKiBVSVByb2Nlc3MvTGF1bmNoZXIvUHJvY2Vzc0xh
dW5jaGVyLmg6CisgICAgICAgICogVUlQcm9jZXNzL0xhdW5jaGVyL21hYy9Qcm9jZXNzTGF1bmNo
ZXJNYWMubW06CisgICAgICAgIChXZWJLaXQ6OmNvbXB1dGVQcm9jZXNzU2hpbVBhdGgpOgorICAg
ICAgICAoV2ViS2l0OjpzZXJ2aWNlTmFtZSk6CisgICAgICAgIChXZWJLaXQ6OnNob3VsZExlYWtC
b29zdCk6CisgICAgICAgIChXZWJLaXQ6OmNyZWF0ZVByb2Nlc3MpOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpO
ZXR3b3JrUHJvY2Vzc1Byb3h5OjpzZXRJc0hvbGRpbmdMb2NrZWRGaWxlcyk6CisgICAgICAgICog
VUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkubWVzc2FnZXMuaW46CisgICAgICAgICog
VUlQcm9jZXNzL05ldHdvcmsvbWFjL05ldHdvcmtQcm9jZXNzUHJveHlNYWMubW06CisgICAgICAg
IChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OnBsYXRmb3JtR2V0TGF1bmNoT3B0aW9ucyk6
CisgICAgICAgICogVUlQcm9jZXNzL1Byb2Nlc3NNb2RlbC5oOiBSZW1vdmVkLgorICAgICAgICAq
IFVJUHJvY2Vzcy9XZWJDb29raWVNYW5hZ2VyUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpX
ZWJDb29raWVNYW5hZ2VyUHJveHk6OnNob3VsZFRlcm1pbmF0ZSk6CisgICAgICAgIChXZWJLaXQ6
OldlYkNvb2tpZU1hbmFnZXJQcm94eTo6cmVmV2ViQ29udGV4dFN1cHBsZW1lbnQpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJDb29raWVNYW5hZ2VyUHJveHk6OnNldEhUVFBDb29raWVBY2NlcHRQb2xp
Y3kpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb29raWVNYW5hZ2VyUHJveHk6OmdldEhUVFBDb29r
aWVBY2NlcHRQb2xpY3kpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJJbnNwZWN0b3JQcm94eS5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3RvclByb3h5OjppbnNwZWN0b3JQcm9jZXNz
UG9vbCk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OldlYlBhZ2VQcm94eTo6V2ViUGFnZVByb3h5KToKKyAgICAgICAgKFdlYktpdDo6V2Vi
UGFnZVByb3h5OjpyZWF0dGFjaFRvV2ViUHJvY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBh
Z2VQcm94eTo6c2V0U2Vzc2lvbklEKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojpp
bml0aWFsaXplV2ViUGFnZSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OmNyZWF0ZSk6CisgICAgICAgIChX
ZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpXZWJQcm9jZXNzUG9vbCk6CisgICAgICAgIChXZWJLaXQ6
OldlYlByb2Nlc3NQb29sOjp+V2ViUHJvY2Vzc1Bvb2wpOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
cm9jZXNzUG9vbDo6aW5pdGlhbGl6ZUNsaWVudCk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nl
c3NQb29sOjpzZXREb3dubG9hZENsaWVudCk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQ
b29sOjpzZXRNYXhpbXVtTnVtYmVyT2ZQcm9jZXNzZXMpOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
cm9jZXNzUG9vbDo6bmV0d29ya2luZ1Byb2Nlc3NDb25uZWN0aW9uKToKKyAgICAgICAgKFdlYktp
dDo6V2ViUHJvY2Vzc1Bvb2w6Omxhbmd1YWdlQ2hhbmdlZCk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlByb2Nlc3NQb29sOjp0ZXh0Q2hlY2tlclN0YXRlQ2hhbmdlZCk6CisgICAgICAgIChXZWJLaXQ6
OldlYlByb2Nlc3NQb29sOjplbnN1cmVOZXR3b3JrUHJvY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6
OldlYlByb2Nlc3NQb29sOjpnZXROZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24pOgorICAgICAgICAo
V2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6ZW5zdXJlRGF0YWJhc2VQcm9jZXNzKToKKyAgICAgICAg
KFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnNldEFueVBhZ2VHcm91cE1pZ2h0SGF2ZVByaXZhdGVC
cm93c2luZ0VuYWJsZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6cHJvY2Vz
c0RpZENhY2hlUGFnZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpjcmVhdGVO
ZXdXZWJQcm9jZXNzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OmRpc2Nvbm5l
Y3RQcm9jZXNzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OmNyZWF0ZVdlYlBh
Z2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6ZG93bmxvYWQpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6cmVzdW1lRG93bmxvYWQpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQcm9jZXNzUG9vbDo6cG9zdE1lc3NhZ2VUb0luamVjdGVkQnVuZGxlKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnNldEFkZGl0aW9uYWxQbHVnaW5zRGlyZWN0b3J5
KToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6Om5ldHdvcmtQcm9jZXNzSWRlbnRp
Zmllcik6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpzZXRBbHdheXNVc2VzQ29t
cGxleFRleHRDb2RlUGF0aCk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpzZXRD
YW5IYW5kbGVIVFRQU1NlcnZlclRydXN0RXZhbHVhdGlvbik6CisgICAgICAgIChXZWJLaXQ6Oldl
YlByb2Nlc3NQb29sOjpyZWdpc3RlclVSTFNjaGVtZUFzTG9jYWwpOgorICAgICAgICAoV2ViS2l0
OjpXZWJQcm9jZXNzUG9vbDo6c2V0Q2FjaGVNb2RlbCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBy
b2Nlc3NQb29sOjpzZXREZWZhdWx0UmVxdWVzdFRpbWVvdXRJbnRlcnZhbCk6CisgICAgICAgIChX
ZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpjcmVhdGVEb3dubG9hZFByb3h5KToKKyAgICAgICAgKFdl
YktpdDo6V2ViUHJvY2Vzc1Bvb2w6OmFkZE1lc3NhZ2VSZWNlaXZlcik6CisgICAgICAgIChXZWJL
aXQ6OldlYlByb2Nlc3NQb29sOjp1c2VUZXN0aW5nTmV0d29ya1Nlc3Npb24pOgorICAgICAgICAo
V2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6YWxsb3dTcGVjaWZpY0hUVFBTQ2VydGlmaWNhdGVGb3JI
b3N0KToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnJlcXVlc3RXZWJDb250ZW50
U3RhdGlzdGljcyk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpyZXF1ZXN0TmV0
d29ya2luZ1N0YXRpc3RpY3MpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6aGFu
ZGxlTWVzc2FnZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpzZXRQcm9jZXNz
TW9kZWwpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6c2V0VXNl
c05ldHdvcmtQcm9jZXNzKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bv
b2w6OnVzZXNOZXR3b3JrUHJvY2Vzcyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlBy
b2Nlc3NQb29sOjplbnN1cmVTaGFyZWRXZWJQcm9jZXNzKTogRGVsZXRlZC4KKyAgICAgICAgKiBV
SVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bv
b2w6OnNlbmRUb05ldHdvcmtpbmdQcm9jZXNzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vz
c1Bvb2w6OnNlbmRUb05ldHdvcmtpbmdQcm9jZXNzUmVsYXVuY2hpbmdJZk5lY2Vzc2FyeSk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpzZW5kVG9BbGxQcm9jZXNzZXNSZWxhdW5j
aGluZ1RoZW1JZk5lY2Vzc2FyeSk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpz
ZW5kVG9PbmVQcm9jZXNzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNw
cDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5OjpyZW1vdmVXZWJQYWdlKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5OjpnZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdGlv
bik6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6Z2V0TmV0d29ya1Byb2Nlc3ND
b25uZWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5OjpnZXREYXRhYmFz
ZVByb2Nlc3NDb25uZWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5Ojp1
cGRhdGVUZXh0Q2hlY2tlclN0YXRlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5
OjpkaWRTYXZlVG9QYWdlQ2FjaGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6
OmRpZENhbmNlbFByb2Nlc3NTdXNwZW5zaW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vz
c1Byb3h5OjpyZWluc3RhdGVOZXR3b3JrUHJvY2Vzc0Fzc2VydGlvblN0YXRlKToKKyAgICAgICAg
KFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5OjpkaWRTZXRBc3NlcnRpb25TdGF0ZSk6CisgICAgICAg
IChXZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6Y3JlYXRlRG93bmxvYWRQcm94eSk6IERlbGV0ZWQu
CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oOgorICAgICAgICAoV2ViS2l0
OjpXZWJQcm9jZXNzUHJveHk6OnRocm90dGxlcik6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBy
b2Nlc3NQcm94eS5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vic2l0ZURhdGEv
V2Vic2l0ZURhdGFTdG9yZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6
On5XZWJzaXRlRGF0YVN0b3JlKToKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6
Y2xvbmVTZXNzaW9uRGF0YSk6CisgICAgICAgICogV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qOgorICAgICAgICAqIFdlYktpdDJQcmVmaXguaDoKKyAgICAgICAgKiBXZWJQcm9jZXNz
L0ZpbGVBUEkvQmxvYlJlZ2lzdHJ5UHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpCbG9iUmVn
aXN0cnlQcm94eTo6cmVnaXN0ZXJGaWxlQmxvYlVSTCk6CisgICAgICAgIChXZWJLaXQ6OkJsb2JS
ZWdpc3RyeVByb3h5OjpyZWdpc3RlckJsb2JVUkwpOgorICAgICAgICAoV2ViS2l0OjpCbG9iUmVn
aXN0cnlQcm94eTo6dW5yZWdpc3RlckJsb2JVUkwpOgorICAgICAgICAoV2ViS2l0OjpCbG9iUmVn
aXN0cnlQcm94eTo6cmVnaXN0ZXJCbG9iVVJMRm9yU2xpY2UpOgorICAgICAgICAoV2ViS2l0OjpC
bG9iUmVnaXN0cnlQcm94eTo6YmxvYlNpemUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvRmlsZUFQ
SS9CbG9iUmVnaXN0cnlQcm94eS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay9OZXR3
b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwOgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay9O
ZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsv
TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLm1lc3NhZ2VzLmluOgorICAgICAgICAqIFdlYlByb2Nl
c3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXIuY3BwOgorICAgICAgICAoV2ViS2l0
OjpXZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXI6Om5ldHdvcmtQcm9jZXNzQ3Jhc2hlZCk6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZFNjaGVkdWxlci5oOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmg6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLm1lc3NhZ2VzLmluOgorICAgICAgICAq
IFdlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZUJyb3dzZXJGdW5jcy5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OmluaXRpYWxpemVCcm93c2VyRnVuY3MpOgorICAgICAgICAoV2ViS2l0
OjpuZXRzY2FwZUJyb3dzZXJGdW5jcyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL05l
dHNjYXBlL05ldHNjYXBlUGx1Z2luLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0c2NhcGVQbHVn
aW46OnJlZ2lzdGVyUmVkaXJlY3QpOgorICAgICAgICAoV2ViS2l0OjpOZXRzY2FwZVBsdWdpbjo6
dXJsUmVkaXJlY3RSZXNwb25zZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF0Zm9y
bVN0cmF0ZWdpZXM6OmNvb2tpZXNGb3JET00pOgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF0Zm9y
bVN0cmF0ZWdpZXM6OnNldENvb2tpZXNGcm9tRE9NKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGxh
dGZvcm1TdHJhdGVnaWVzOjpjb29raWVzRW5hYmxlZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBs
YXRmb3JtU3RyYXRlZ2llczo6Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmdldFJhd0Nvb2tpZXMpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmRlbGV0ZUNvb2tpZSk6CisgICAgICAg
IChXZWJLaXQ6OldlYlBsYXRmb3JtU3RyYXRlZ2llczo6cmVzb3VyY2VMb2FkU2NoZWR1bGVyKToK
KyAgICAgICAgKFdlYktpdDo6V2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpsb2FkUmVzb3VyY2VTeW5j
aHJvbm91c2x5KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjcmVh
dGVQaW5nSGFuZGxlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpj
cmVhdGVCbG9iUmVnaXN0cnkpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViUGxhdGZvcm1TdHJhdGVnaWVzLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YkZyYW1lLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWU6OnN0YXJ0RG93bmxvYWQpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZTo6Y29udmVydE1haW5SZXNvdXJjZUxvYWRUb0Rvd25s
b2FkKToKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWU6OnNvdXJjZSk6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9XZWJQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6V2Vi
UHJvY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OmluaXRpYWxpemVDb25uZWN0
aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6aW5pdGlhbGl6ZVdlYlByb2Nlc3Mp
OgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjplbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5l
Y3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpyZWdpc3RlclVSTFNjaGVtZUFz
RW1wdHlEb2N1bWVudCk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OmRlc3Ryb3lQcml2
YXRlQnJvd3NpbmdTZXNzaW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6cGx1Z2lu
UHJvY2Vzc0Nvbm5lY3Rpb25NYW5hZ2VyKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6
c2hvdWxkVGVybWluYXRlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6c2V0SW5qZWN0
ZWRCdW5kbGVQYXJhbWV0ZXJzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6bmV0d29y
a0Nvbm5lY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjp3ZWJSZXNvdXJjZUxv
YWRTY2hlZHVsZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjp3ZWJUb0RhdGFiYXNl
UHJvY2Vzc0Nvbm5lY3Rpb25DbG9zZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpz
ZXRFbmhhbmNlZEFjY2Vzc2liaWxpdHkpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpw
cmVmZXRjaEROUyk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OmRpZENyZWF0ZURvd25s
b2FkKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6ZGlkRGVzdHJveURv
d25sb2FkKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6ZG93bmxvYWRQ
cm94eUNvbm5lY3Rpb24pOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpk
b3dubG9hZHNBdXRoZW50aWNhdGlvbk1hbmFnZXIpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0
OjpXZWJQcm9jZXNzOjpkb3dubG9hZE1hbmFnZXIpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0
OjpXZWJQcm9jZXNzOjp1c2VzTmV0d29ya1Byb2Nlc3MpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
S2l0OjpXZWJQcm9jZXNzOjpkb3dubG9hZFJlcXVlc3QpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
S2l0OjpXZWJQcm9jZXNzOjpyZXN1bWVEb3dubG9hZCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJL
aXQ6OldlYlByb2Nlc3M6OmNhbmNlbERvd25sb2FkKTogRGVsZXRlZC4KKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1dlYlByb2Nlc3MuaDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6dGV4dENo
ZWNrZXJTdGF0ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OmV2ZW50RGlzcGF0Y2hl
cik6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluOgorICAgICAg
ICAqIGNvbmZpZy5oOgorCiAyMDE1LTExLTE5ICBDc2FiYSBPc3p0cm9nb27DoWMgIDxvc3N5QHdl
YmtpdC5vcmc+CiAKICAgICAgICAgW0VGTF0gRml4IFdyZXR1cm4tdHlwZSBjbGFuZyB3YXJuaW5n
IGluIEVXSzJVbml0VGVzdEJhc2UuY3BwCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9DTWFrZUxpc3Rz
LnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9DTWFrZUxpc3RzLnR4dAkocmV2aXNp
b24gMTkyNjAxKQorKysgU291cmNlL1dlYktpdDIvQ01ha2VMaXN0cy50eHQJKHdvcmtpbmcgY29w
eSkKQEAgLTgwMywxNiArODAzLDEzIEBAIGlmIChXZWJLaXQyX1dlYlByb2Nlc3NfT1VUUFVUX05B
TUUpCiAgICAgc2V0X3RhcmdldF9wcm9wZXJ0aWVzKFdlYlByb2Nlc3MgUFJPUEVSVElFUyBPVVRQ
VVRfTkFNRSAke1dlYktpdDJfV2ViUHJvY2Vzc19PVVRQVVRfTkFNRX0pCiBlbmRpZiAoKQogCi1p
ZiAoRU5BQkxFX05FVFdPUktfUFJPQ0VTUykKLSAgICBhZGRfZXhlY3V0YWJsZShOZXR3b3JrUHJv
Y2VzcyAke05ldHdvcmtQcm9jZXNzX1NPVVJDRVN9KQotICAgIGFkZF93ZWJraXQyX3ByZWZpeF9o
ZWFkZXIoTmV0d29ya1Byb2Nlc3MpCi0gICAgdGFyZ2V0X2xpbmtfbGlicmFyaWVzKE5ldHdvcmtQ
cm9jZXNzICR7TmV0d29ya1Byb2Nlc3NfTElCUkFSSUVTfSkKLSAgICBzZXRfdGFyZ2V0X3Byb3Bl
cnRpZXMoTmV0d29ya1Byb2Nlc3MgUFJPUEVSVElFUyBGT0xERVIgIldlYktpdCIpCi0gICAgaW5z
dGFsbChUQVJHRVRTIE5ldHdvcmtQcm9jZXNzIERFU1RJTkFUSU9OICIke0xJQkVYRUNfSU5TVEFM
TF9ESVJ9IikKK2FkZF9leGVjdXRhYmxlKE5ldHdvcmtQcm9jZXNzICR7TmV0d29ya1Byb2Nlc3Nf
U09VUkNFU30pCithZGRfd2Via2l0Ml9wcmVmaXhfaGVhZGVyKE5ldHdvcmtQcm9jZXNzKQordGFy
Z2V0X2xpbmtfbGlicmFyaWVzKE5ldHdvcmtQcm9jZXNzICR7TmV0d29ya1Byb2Nlc3NfTElCUkFS
SUVTfSkKK3NldF90YXJnZXRfcHJvcGVydGllcyhOZXR3b3JrUHJvY2VzcyBQUk9QRVJUSUVTIEZP
TERFUiAiV2ViS2l0IikKIAotICAgIGlmIChXZWJLaXQyX05ldHdvcmtQcm9jZXNzX09VVFBVVF9O
QU1FKQotICAgICAgICBzZXRfdGFyZ2V0X3Byb3BlcnRpZXMoTmV0d29ya1Byb2Nlc3MgUFJPUEVS
VElFUyBPVVRQVVRfTkFNRSAke1dlYktpdDJfTmV0d29ya1Byb2Nlc3NfT1VUUFVUX05BTUV9KQot
ICAgIGVuZGlmICgpCitpZiAoV2ViS2l0Ml9OZXR3b3JrUHJvY2Vzc19PVVRQVVRfTkFNRSkKKyAg
ICBzZXRfdGFyZ2V0X3Byb3BlcnRpZXMoTmV0d29ya1Byb2Nlc3MgUFJPUEVSVElFUyBPVVRQVVRf
TkFNRSAke1dlYktpdDJfTmV0d29ya1Byb2Nlc3NfT1VUUFVUX05BTUV9KQogZW5kaWYgKCkKIAog
aWYgKEVOQUJMRV9QTFVHSU5fUFJPQ0VTUykKQEAgLTg0Nyw3ICs4NDQsNyBAQCBzZXRfdGFyZ2V0
X3Byb3BlcnRpZXMoV2ViS2l0MiBQUk9QRVJUSUVTCiBpZiAoQVBQTEUpCiAgICAgV0VCS0lUX0ZS
QU1FV09SSyhXZWJLaXQyKQogZWxzZSAoKQotICAgIGluc3RhbGwoVEFSR0VUUyBXZWJLaXQyIFdl
YlByb2Nlc3MKKyAgICBpbnN0YWxsKFRBUkdFVFMgV2ViS2l0MiBXZWJQcm9jZXNzIE5ldHdvcmtQ
cm9jZXNzCiAgICAgICAgIExJQlJBUlkgREVTVElOQVRJT04gIiR7TElCX0lOU1RBTExfRElSfSIK
ICAgICAgICAgUlVOVElNRSBERVNUSU5BVElPTiAiJHtMSUJFWEVDX0lOU1RBTExfRElSfSIKICAg
ICApCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJLaXQyUHJlZml4LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdDIvV2ViS2l0MlByZWZpeC5oCShyZXZpc2lvbiAxOTI2MDEpCisrKyBTb3Vy
Y2UvV2ViS2l0Mi9XZWJLaXQyUHJlZml4LmgJKHdvcmtpbmcgY29weSkKQEAgLTM2LDggKzM2LDYg
QEAKIAogI2RlZmluZSBFTkFCTEVfV0VCX1BST0NFU1NfU0FOREJPWCAxCiAKLSNkZWZpbmUgRU5B
QkxFX05FVFdPUktfUFJPQ0VTUyAxCi0KICNkZWZpbmUgRU5BQkxFX0RBVEFCQVNFX1BST0NFU1Mg
MQogCiAjZGVmaW5lIEVOQUJMRV9NRU1PUllfU0FNUExFUiAxCkBAIC01OSw3ICs1Nyw2IEBACiAj
ZW5kaWYKIAogI2lmIFBMQVRGT1JNKEdUSykKLSNkZWZpbmUgRU5BQkxFX05FVFdPUktfUFJPQ0VT
UyAxCiAjZGVmaW5lIEVOQUJMRV9TSEFSRUFCTEVfUkVTT1VSQ0UgMQogI2VuZGlmCiAKSW5kZXg6
IFNvdXJjZS9XZWJLaXQyL2NvbmZpZy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL2Nv
bmZpZy5oCShyZXZpc2lvbiAxOTI2MDEpCisrKyBTb3VyY2UvV2ViS2l0Mi9jb25maWcuaAkod29y
a2luZyBjb3B5KQpAQCAtOTEsNyArOTEsNyBAQAogI2VuZGlmCiAKICNpZm5kZWYgRU5BQkxFX05F
VFdPUktfQ0FDSEUKLSNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKSAmJiAoUExBVEZPUk0oQ09D
T0EpIHx8IFBMQVRGT1JNKEdUSykpCisjaWYgUExBVEZPUk0oQ09DT0EpIHx8IFBMQVRGT1JNKEdU
SykKICNkZWZpbmUgRU5BQkxFX05FVFdPUktfQ0FDSEUgMQogI2Vsc2UKICNkZWZpbmUgRU5BQkxF
X05FVFdPUktfQ0FDSEUgMApJbmRleDogU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAkocmV2
aXNpb24gMTkyNjAxKQorKysgU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw4ICsyNiw2IEBA
CiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MuaCIKIAotI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCi0KICNpbmNsdWRlICJOZXR3
b3JrQmxvYlJlZ2lzdHJ5LmgiCiAjaW5jbHVkZSAiTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3NNZXNzYWdlcy5oIgogI2luY2x1ZGUgIk5ldHdvcmtMb2FkLmgiCkBAIC0yNzQsNSArMjcyLDMg
QEAgdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6YmxvYgogfQogCiB9IC8vIG5h
bWVzcGFjZSBXZWJLaXQKLQotI2VuZGlmIC8vIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCkluZGV4
OiBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgJKHJldmlzaW9uIDE5MjYwMSkKKysrIFNvdXJjZS9X
ZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgJKHdv
cmtpbmcgY29weSkKQEAgLTI2LDggKzI2LDYgQEAKICNpZm5kZWYgTmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3NfaAogI2RlZmluZSBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzc19oCiAK
LSNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQotCiAjaW5jbHVkZSAiQmxvY2tpbmdSZXNwb25z
ZU1hcC5oIgogI2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIKICNpbmNsdWRlICJOZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2Vzc01lc3NhZ2VzLmgiCkBAIC0xMDIsNiArMTAwLDQgQEAgcHJpdmF0ZToK
IAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKLSNlbmRpZiAvLyBFTkFCTEUoTkVUV09SS19QUk9D
RVNTKQotCiAjZW5kaWYgLy8gTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3NfaApJbmRleDog
U291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MubWVzc2FnZXMuaW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4JKHJldmlzaW9uIDE5
MjYwMSkKKysrIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCSh3b3JraW5nIGNvcHkpCkBAIC0yMCw4ICsyMCw2IEBA
CiAjIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCiAjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAKLSNpZiBFTkFCTEUoTkVU
V09SS19QUk9DRVNTKQotCiBtZXNzYWdlcyAtPiBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vz
cyBMZWdhY3lSZWNlaXZlciB7CiAKICAgICBTY2hlZHVsZVJlc291cmNlTG9hZChXZWJLaXQ6Ok5l
dHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzIHJlc291cmNlTG9hZFBhcmFtZXRlcnMpCkBAIC00
OCw1ICs0NiwzIEBAIG1lc3NhZ2VzIC0+IE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXMKICAg
ICBVbnJlZ2lzdGVyQmxvYlVSTChXZWJDb3JlOjpVUkwgdXJsKQogICAgIEJsb2JTaXplKFdlYkNv
cmU6OlVSTCB1cmwpIC0+ICh1aW50NjRfdCByZXN1bHRTaXplKQogfQotCi0jZW5kaWYgLy8gRU5B
QkxFKE5FVFdPUktfUFJPQ0VTUykKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNz
L05ldHdvcmtMb2FkLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrTG9hZC5jcHAJKHJldmlzaW9uIDE5MjYwMSkKKysrIFNvdXJjZS9XZWJLaXQy
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjQsOCAr
MjQsNiBAQAogICovCiAKICNpbmNsdWRlICJjb25maWcuaCIKLQotI2lmIEVOQUJMRShORVRXT1JL
X1BST0NFU1MpCiAjaW5jbHVkZSAiTmV0d29ya0xvYWQuaCIKIAogI2luY2x1ZGUgIkF1dGhlbnRp
Y2F0aW9uTWFuYWdlci5oIgpAQCAtMzcxLDUgKzM2OSwzIEBAIHZvaWQgTmV0d29ya0xvYWQ6OnJl
Y2VpdmVkQ2FuY2VsbGF0aW9uKFIKICNlbmRpZiAvLyAhVVNFKE5FVFdPUktfU0VTU0lPTikKIAog
fSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KLSNlbmRpZiAvLyBFTkFCTEUoTkVUV09SS19QUk9DRVNT
KQpJbmRleDogU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZC5oCShy
ZXZpc2lvbiAxOTI2MDEpCisrKyBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
TG9hZC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw4ICsyNiw2IEBACiAjaWZuZGVmIE5ldHdvcmtM
b2FkX2gKICNkZWZpbmUgTmV0d29ya0xvYWRfaAogCi0jaWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VT
UykKLQogI2luY2x1ZGUgIk5ldHdvcmtMb2FkQ2xpZW50LmgiCiAjaW5jbHVkZSAiTmV0d29ya0xv
YWRQYXJhbWV0ZXJzLmgiCiAjaW5jbHVkZSAiUmVtb3RlTmV0d29ya2luZ0NvbnRleHQuaCIKQEAg
LTEyNiw2ICsxMjQsNCBAQCBwcml2YXRlOgogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAotI2Vu
ZGlmIC8vIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCi0KICNlbmRpZiAvLyBOZXR3b3JrTG9hZF9o
CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZENsaWVudC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2Fk
Q2xpZW50LmgJKHJldmlzaW9uIDE5MjYwMSkKKysrIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtMb2FkQ2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTI2LDggKzI2LDYgQEAK
ICNpZm5kZWYgTmV0d29ya0xvYWRDbGllbnRfaAogI2RlZmluZSBOZXR3b3JrTG9hZENsaWVudF9o
CiAKLSNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQotCiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNv
dXJjZUVycm9yLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZVJlcXVlc3QuaD4KICNpbmNs
dWRlIDxXZWJDb3JlL1Jlc291cmNlUmVzcG9uc2UuaD4KQEAgLTY2LDcgKzY0LDUgQEAgcHVibGlj
OgogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAotI2VuZGlmIC8vIEVOQUJMRShORVRXT1JLX1BS
T0NFU1MpCi0KICNlbmRpZiAvLyBOZXR3b3JrTG9hZENsaWVudF9oCiAKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkUGFyYW1ldGVycy5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRQYXJhbWV0ZXJz
LmNwcAkocmV2aXNpb24gMTkyNjAxKQorKysgU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya0xvYWRQYXJhbWV0ZXJzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjQsOCArMjQsNiBA
QAogICovCiAKICNpbmNsdWRlICJjb25maWcuaCIKLQotI2lmIEVOQUJMRShORVRXT1JLX1BST0NF
U1MpCiAjaW5jbHVkZSAiTmV0d29ya0xvYWRQYXJhbWV0ZXJzLmgiCiAKICNpbmNsdWRlICJOZXR3
b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycy5oIgpAQCAtNDcsNSArNDUsMyBAQCBOZXR3b3JrTG9h
ZFBhcmFtZXRlcnM6Ok5ldHdvcmtMb2FkUGFyYW1lCiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktp
dAotCi0jZW5kaWYgLy8gRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKSW5kZXg6IFNvdXJjZS9XZWJL
aXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkUGFyYW1ldGVycy5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkUGFyYW1ldGVycy5oCShy
ZXZpc2lvbiAxOTI2MDEpCisrKyBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
TG9hZFBhcmFtZXRlcnMuaAkod29ya2luZyBjb3B5KQpAQCAtMjYsOCArMjYsNiBAQAogI2lmbmRl
ZiBOZXR3b3JrTG9hZFBhcmFtZXRlcnNfaAogI2RlZmluZSBOZXR3b3JrTG9hZFBhcmFtZXRlcnNf
aAogCi0jaWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKLQogI2luY2x1ZGUgPFdlYkNvcmUvUmVz
b3VyY2VMb2FkZXJPcHRpb25zLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZVJlcXVlc3Qu
aD4KICNpbmNsdWRlIDxXZWJDb3JlL1Nlc3Npb25JRC5oPgpAQCAtNTUsNiArNTMsNCBAQCBwdWJs
aWM6CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCi0jZW5kaWYgLy8gRU5BQkxFKE5FVFdPUktf
UFJPQ0VTUykKLQogI2VuZGlmIC8vIE5ldHdvcmtMb2FkUGFyYW1ldGVyc19oCkluZGV4OiBTb3Vy
Y2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCShyZXZp
c2lvbiAxOTI2MDEpCisrKyBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJv
Y2Vzcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2LDggKzI2LDYgQEAKICNpbmNsdWRlICJjb25m
aWcuaCIKICNpbmNsdWRlICJOZXR3b3JrUHJvY2Vzcy5oIgogCi0jaWYgRU5BQkxFKE5FVFdPUktf
UFJPQ0VTUykKLQogI2luY2x1ZGUgIkFyZ3VtZW50Q29kZXJzLmgiCiAjaW5jbHVkZSAiQXR0YWNo
bWVudC5oIgogI2luY2x1ZGUgIkF1dGhlbnRpY2F0aW9uTWFuYWdlci5oIgpAQCAtNTU0LDUgKzU1
MiwzIEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnBsYXRmb3JtTG93TWVtb3J5SGEKICNlbmRpZgog
CiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQotI2VuZGlmIC8vIEVOQUJMRShORVRXT1JLX1BST0NF
U1MpCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9j
ZXNzLmgJKHJldmlzaW9uIDE5MjYwMSkKKysrIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNz
L05ldHdvcmtQcm9jZXNzLmgJKHdvcmtpbmcgY29weSkKQEAgLTI2LDggKzI2LDYgQEAKICNpZm5k
ZWYgTmV0d29ya1Byb2Nlc3NfaAogI2RlZmluZSBOZXR3b3JrUHJvY2Vzc19oCiAKLSNpZiBFTkFC
TEUoTkVUV09SS19QUk9DRVNTKQotCiAjaW5jbHVkZSAiQ2FjaGVNb2RlbC5oIgogI2luY2x1ZGUg
IkNoaWxkUHJvY2Vzcy5oIgogI2luY2x1ZGUgIkRvd25sb2FkTWFuYWdlci5oIgpAQCAtMTk3LDYg
KzE5NSw0IEBAIHByaXZhdGU6CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCi0jZW5kaWYgLy8g
RU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKLQogI2VuZGlmIC8vIE5ldHdvcmtQcm9jZXNzX2gKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2Vz
LmluCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtQ
cm9jZXNzLm1lc3NhZ2VzLmluCShyZXZpc2lvbiAxOTI2MDEpCisrKyBTb3VyY2UvV2ViS2l0Mi9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbgkod29ya2luZyBjb3B5KQpA
QCAtMjAsOCArMjAsNiBAQAogIyBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQogIyBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgog
Ci0jaWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKLQogbWVzc2FnZXMgLT4gTmV0d29ya1Byb2Nl
c3MgTGVnYWN5UmVjZWl2ZXIgewogICAgICMgSW5pdGlhbGl6ZXMgdGhlIG5ldHdvcmsgcHJvY2Vz
cy4KICAgICBJbml0aWFsaXplTmV0d29ya1Byb2Nlc3Moc3RydWN0IFdlYktpdDo6TmV0d29ya1By
b2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMgcHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycykKQEAgLTYz
LDUgKzYxLDMgQEAgbWVzc2FnZXMgLT4gTmV0d29ya1Byb2Nlc3MgTGVnYWN5UmVjZWl2ZQogICAg
IENhbmNlbFByZXBhcmVUb1N1c3BlbmQoKQogICAgIFByb2Nlc3NEaWRSZXN1bWUoKQogfQotCi0j
ZW5kaWYgLy8gRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL05l
dHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcAkocmV2
aXNpb24gMTkyNjAxKQorKysgU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jl
c291cmNlTG9hZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjYsOCArMjYsNiBAQAogI2luY2x1
ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIk5ldHdvcmtSZXNvdXJjZUxvYWRlci5oIgogCi0jaWYg
RU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKLQogI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKICNp
bmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiTmV0d29ya0Jsb2JSZWdpc3RyeS5oIgpAQCAt
NTgxLDUgKzU3OSwzIEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpjb250aW51ZUNhbkEK
ICNlbmRpZgogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQotI2VuZGlmIC8vIEVOQUJMRShORVRX
T1JLX1BST0NFU1MpCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
UmVzb3VyY2VMb2FkZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuaAkocmV2aXNpb24gMTkyNjAxKQorKysgU291cmNl
L1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTI2LDggKzI2LDYgQEAKICNpZm5kZWYgTmV0d29ya1Jlc291cmNlTG9hZGVyX2gK
ICNkZWZpbmUgTmV0d29ya1Jlc291cmNlTG9hZGVyX2gKIAotI2lmIEVOQUJMRShORVRXT1JLX1BS
T0NFU1MpCi0KICNpbmNsdWRlICJNZXNzYWdlU2VuZGVyLmgiCiAjaW5jbHVkZSAiTmV0d29ya0Nv
bm5lY3Rpb25Ub1dlYlByb2Nlc3NNZXNzYWdlcy5oIgogI2luY2x1ZGUgIk5ldHdvcmtMb2FkQ2xp
ZW50LmgiCkBAIC0xNjksNiArMTY3LDQgQEAgcHJpdmF0ZToKIAogfSAvLyBuYW1lc3BhY2UgV2Vi
S2l0CiAKLSNlbmRpZiAvLyBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQotCiAjZW5kaWYgLy8gTmV0
d29ya1Jlc291cmNlTG9hZGVyX2gKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNz
L05ldHdvcmtSZXNvdXJjZUxvYWRlci5tZXNzYWdlcy5pbgo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIubWVzc2FnZXMuaW4J
KHJldmlzaW9uIDE5MjYwMSkKKysrIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdv
cmtSZXNvdXJjZUxvYWRlci5tZXNzYWdlcy5pbgkod29ya2luZyBjb3B5KQpAQCAtMjAsOCArMjAs
NiBAQAogIyBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQogIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogCi0jaWYgRU5BQkxF
KE5FVFdPUktfUFJPQ0VTUykKLQogbWVzc2FnZXMgLT4gTmV0d29ya1Jlc291cmNlTG9hZGVyIExl
Z2FjeVJlY2VpdmVyIHsKIAogICAgIENvbnRpbnVlV2lsbFNlbmRSZXF1ZXN0KFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdCByZXF1ZXN0KQpAQCAtMzAsNSArMjgsMyBAQCBtZXNzYWdlcyAtPiBOZXR3
b3JrUmVzb3VyY2VMb2FkZXIgTGVnYWN5CiAgICAgQ29udGludWVDYW5BdXRoZW50aWNhdGVBZ2Fp
bnN0UHJvdGVjdGlvblNwYWNlKGJvb2wgY2FuQXV0aGVudGljYXRlKQogI2VuZGlmCiB9Ci0KLSNl
bmRpZiAvLyBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQpJbmRleDogU291cmNlL1dlYktpdDIvTmV0
d29ya1Byb2Nlc3MvRW50cnlQb2ludC9tYWMvTGVnYWN5UHJvY2Vzcy9OZXR3b3JrUHJvY2Vzc01h
aW4ubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvRW50cnlQ
b2ludC9tYWMvTGVnYWN5UHJvY2Vzcy9OZXR3b3JrUHJvY2Vzc01haW4ubW0JKHJldmlzaW9uIDE5
MjYwMSkKKysrIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL0VudHJ5UG9pbnQvbWFjL0xl
Z2FjeVByb2Nlc3MvTmV0d29ya1Byb2Nlc3NNYWluLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yNSw4
ICsyNSw2IEBACiAKICNpbXBvcnQgImNvbmZpZy5oIgogCi0jaWYgRU5BQkxFKE5FVFdPUktfUFJP
Q0VTUykKLQogI2ltcG9ydCAiQ2hpbGRQcm9jZXNzRW50cnlQb2ludC5oIgogI2ltcG9ydCAiTmV0
d29ya1Byb2Nlc3MuaCIKICNpbXBvcnQgIldLQmFzZS5oIgpAQCAtMzksNSArMzcsMyBAQCBpbnQg
TmV0d29ya1Byb2Nlc3NNYWluKGludCBhcmdjLCBjaGFyKiogCiB7CiAgICAgcmV0dXJuIENoaWxk
UHJvY2Vzc01haW48TmV0d29ya1Byb2Nlc3MsIENoaWxkUHJvY2Vzc01haW5EZWxlZ2F0ZT4oYXJn
YywgYXJndik7CiB9Ci0KLSNlbmRpZiAvLyBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQpJbmRleDog
U291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvRW50cnlQb2ludC9tYWMvWFBDU2VydmljZS9O
ZXR3b3JrU2VydmljZUVudHJ5UG9pbnQubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIv
TmV0d29ya1Byb2Nlc3MvRW50cnlQb2ludC9tYWMvWFBDU2VydmljZS9OZXR3b3JrU2VydmljZUVu
dHJ5UG9pbnQubW0JKHJldmlzaW9uIDE5MjYwMSkKKysrIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQ
cm9jZXNzL0VudHJ5UG9pbnQvbWFjL1hQQ1NlcnZpY2UvTmV0d29ya1NlcnZpY2VFbnRyeVBvaW50
Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC01Miw3ICs1Miw2IEBAIGV4dGVybiAiQyIgV0tfRVhQT1JU
IHZvaWQgTmV0d29ya1NlcnZpY2UKIAogdm9pZCBOZXR3b3JrU2VydmljZUluaXRpYWxpemVyKHhw
Y19jb25uZWN0aW9uX3QgY29ubmVjdGlvbiwgeHBjX29iamVjdF90IGluaXRpYWxpemVyTWVzc2Fn
ZSkKIHsKLSNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQogICAgIC8vIFJlbW92ZSB0aGUgU2Vj
SXRlbVNoaW0gZnJvbSB0aGUgRFlMRF9JTlNFUlRfTElCUkFSSUVTIGVudmlyb25tZW50IHZhcmlh
YmxlIHNvIGFueSBwcm9jZXNzZXMgc3Bhd25lZCBieQogICAgIC8vIHRoZSB0aGlzIHByb2Nlc3Mg
ZG9uJ3QgdHJ5IHRvIGluc2VydCB0aGUgc2hpbSBhbmQgY3Jhc2guCiAgICAgRW52aXJvbm1lbnRV
dGlsaXRpZXM6OnN0cmlwVmFsdWVzRW5kaW5nV2l0aFN0cmluZygiRFlMRF9JTlNFUlRfTElCUkFS
SUVTIiwgIi9TZWNJdGVtU2hpbS5keWxpYiIpOwpAQCAtNjksNSArNjgsNCBAQCB2b2lkIE5ldHdv
cmtTZXJ2aWNlSW5pdGlhbGl6ZXIoeHBjX2Nvbm5lCiAjaWYgSEFWRShPU19BQ1RJVklUWSkKICAg
ICBvc19hY3Rpdml0eV9lbmQoYWN0aXZpdHkpOwogI2VuZGlmCi0jZW5kaWYKIH0KSW5kZXg6IFNv
dXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL0ZpbGVBUEkvTmV0d29ya0Jsb2JSZWdpc3RyeS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvRmlsZUFQSS9O
ZXR3b3JrQmxvYlJlZ2lzdHJ5LmNwcAkocmV2aXNpb24gMTkyNjAxKQorKysgU291cmNlL1dlYktp
dDIvTmV0d29ya1Byb2Nlc3MvRmlsZUFQSS9OZXR3b3JrQmxvYlJlZ2lzdHJ5LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMjYsOCArMjYsNiBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUg
Ik5ldHdvcmtCbG9iUmVnaXN0cnkuaCIKIAotI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCi0K
ICNpbmNsdWRlICJCbG9iRGF0YUZpbGVSZWZlcmVuY2VXaXRoU2FuZGJveEV4dGVuc2lvbi5oIgog
I2luY2x1ZGUgIlNhbmRib3hFeHRlbnNpb24uaCIKICNpbmNsdWRlIDxXZWJDb3JlL0Jsb2JQYXJ0
Lmg+CkBAIC0xNTEsNSArMTQ5LDMgQEAgVmVjdG9yPFJlZlB0cjxCbG9iRGF0YUZpbGVSZWZlcmVu
Y2U+PiBOZQogfQogCiB9Ci0KLSNlbmRpZgpJbmRleDogU291cmNlL1dlYktpdDIvTmV0d29ya1By
b2Nlc3MvRmlsZUFQSS9OZXR3b3JrQmxvYlJlZ2lzdHJ5LmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvRmlsZUFQSS9OZXR3b3JrQmxvYlJlZ2lzdHJ5LmgJKHJl
dmlzaW9uIDE5MjYwMSkKKysrIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL0ZpbGVBUEkv
TmV0d29ya0Jsb2JSZWdpc3RyeS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw4ICsyNiw2IEBACiAj
aWZuZGVmIE5ldHdvcmtCbG9iUmVnaXN0cnlfaAogI2RlZmluZSBOZXR3b3JrQmxvYlJlZ2lzdHJ5
X2gKIAotI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCi0KICNpbmNsdWRlIDxXZWJDb3JlL1VS
TEhhc2guaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0
Lmg+CkBAIC02OCw2ICs2Niw0IEBAIHByaXZhdGU6CiAKIH0KIAotI2VuZGlmIC8vIEVOQUJMRShO
RVRXT1JLX1BST0NFU1MpCi0KICNlbmRpZiAvLyBOZXR3b3JrQmxvYlJlZ2lzdHJ5X2gKSW5kZXg6
IFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtQcm9jZXNzQ29jb2Eu
bW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0
d29ya1Byb2Nlc3NDb2NvYS5tbQkocmV2aXNpb24gMTkyNjAxKQorKysgU291cmNlL1dlYktpdDIv
TmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Byb2Nlc3NDb2NvYS5tbQkod29ya2luZyBjb3B5
KQpAQCAtMjYsOCArMjYsNiBAQAogI2ltcG9ydCAiY29uZmlnLmgiCiAjaW1wb3J0ICJOZXR3b3Jr
UHJvY2Vzcy5oIgogCi0jaWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKLQogI2ltcG9ydCAiTmV0
d29ya0NhY2hlLmgiCiAjaW1wb3J0ICJOZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5o
IgogI2ltcG9ydCAiTmV0d29ya1Jlc291cmNlTG9hZGVyLmgiCkBAIC0yNjcsNSArMjY1LDMgQEAg
dm9pZCBOZXR3b3JrUHJvY2Vzczo6Y2xlYXJEaXNrQ2FjaGUoc3RkOgogfQogCiB9Ci0KLSNlbmRp
ZgpJbmRleDogU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvaW9zL05ldHdvcmtQcm9jZXNz
SU9TLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL2lvcy9O
ZXR3b3JrUHJvY2Vzc0lPUy5tbQkocmV2aXNpb24gMTkyNjAxKQorKysgU291cmNlL1dlYktpdDIv
TmV0d29ya1Byb2Nlc3MvaW9zL05ldHdvcmtQcm9jZXNzSU9TLm1tCSh3b3JraW5nIGNvcHkpCkBA
IC0yNiw3ICsyNiw3IEBACiAjaW1wb3J0ICJjb25maWcuaCIKICNpbXBvcnQgIk5ldHdvcmtQcm9j
ZXNzLmgiCiAKLSNpZiBQTEFURk9STShJT1MpICYmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCisj
aWYgUExBVEZPUk0oSU9TKQogCiAjaW1wb3J0ICJOZXR3b3JrQ2FjaGUuaCIKICNpbXBvcnQgIk5l
dHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmgiCkBAIC0xMDEsNCArMTAxLDQgQEAgdm9p
ZCBOZXR3b3JrUHJvY2Vzczo6cGxhdGZvcm1UZXJtaW5hdGUoKQogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJLaXQKIAotI2VuZGlmIC8vIFBMQVRGT1JNKElPUykgJiYgRU5BQkxFKE5FVFdPUktfUFJPQ0VT
UykKKyNlbmRpZiAvLyBQTEFURk9STShJT1MpCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9OZXR3b3Jr
UHJvY2Vzcy9tYWMvTmV0d29ya0xvYWRNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dDIvTmV0d29ya1Byb2Nlc3MvbWFjL05ldHdvcmtMb2FkTWFjLm1tCShyZXZpc2lvbiAxOTI2MDEp
CisrKyBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9tYWMvTmV0d29ya0xvYWRNYWMubW0J
KHdvcmtpbmcgY29weSkKQEAgLTI0LDggKzI0LDYgQEAKICAqLwogCiAjaW1wb3J0ICJjb25maWcu
aCIKLQotI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCiAjaW1wb3J0ICJOZXR3b3JrTG9hZC5o
IgogCiAjaW1wb3J0IDxXZWJDb3JlL0NGTmV0d29ya1NQSS5oPgpAQCAtNjAsNSArNTgsMyBAQCB2
b2lkIE5ldHdvcmtMb2FkOjp3aWxsQ2FjaGVSZXNwb25zZUFzeW5jCiAjZW5kaWYgLy8gIVVTRShD
Rk5FVFdPUkspCiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAotCi0jZW5kaWYgLy8gRU5BQkxFKE5F
VFdPUktfUFJPQ0VTUykKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL21hYy9O
ZXR3b3JrUHJvY2Vzc01hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9OZXR3b3Jr
UHJvY2Vzcy9tYWMvTmV0d29ya1Byb2Nlc3NNYWMubW0JKHJldmlzaW9uIDE5MjYwMSkKKysrIFNv
dXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL21hYy9OZXR3b3JrUHJvY2Vzc01hYy5tbQkod29y
a2luZyBjb3B5KQpAQCAtMjYsNyArMjYsNyBAQAogI2ltcG9ydCAiY29uZmlnLmgiCiAjaW1wb3J0
ICJOZXR3b3JrUHJvY2Vzcy5oIgogCi0jaWYgUExBVEZPUk0oTUFDKSAmJiBFTkFCTEUoTkVUV09S
S19QUk9DRVNTKQorI2lmIFBMQVRGT1JNKE1BQykKIAogI2ltcG9ydCAiTmV0d29ya0NhY2hlLmgi
CiAjaW1wb3J0ICJOZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oIgpAQCAtMTQ0LDQg
KzE0NCw0IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnBsYXRmb3JtVGVybWluYXRlKCkKIAogfSAv
LyBuYW1lc3BhY2UgV2ViS2l0CiAKLSNlbmRpZiAvLyBQTEFURk9STShNQUMpICYmIEVOQUJMRShO
RVRXT1JLX1BST0NFU1MpCisjZW5kaWYgLy8gUExBVEZPUk0oTUFDKQpJbmRleDogU291cmNlL1dl
YktpdDIvTmV0d29ya1Byb2Nlc3MvbWFjL05ldHdvcmtSZXNvdXJjZUxvYWRlck1hYy5tbQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9tYWMvTmV0d29ya1Jlc291
cmNlTG9hZGVyTWFjLm1tCShyZXZpc2lvbiAxOTI2MDEpCisrKyBTb3VyY2UvV2ViS2l0Mi9OZXR3
b3JrUHJvY2Vzcy9tYWMvTmV0d29ya1Jlc291cmNlTG9hZGVyTWFjLm1tCSh3b3JraW5nIGNvcHkp
CkBAIC0yNiw4ICsyNiw2IEBACiAjaW1wb3J0ICJjb25maWcuaCIKICNpbXBvcnQgIk5ldHdvcmtS
ZXNvdXJjZUxvYWRlci5oIgogCi0jaWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKLQogI2ltcG9y
dCAiTmV0d29ya0Rpc2tDYWNoZU1vbml0b3IuaCIKICNpbXBvcnQgIlNoYXJlYWJsZVJlc291cmNl
LmgiCiAjaW1wb3J0IDxXZWJDb3JlL0NGTmV0d29ya1NQSS5oPgpAQCAtOTEsNSArODksMyBAQCB2
b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6d2lsbENhY2hlUmVzCiAKIH0gLy8gbmFtZXNwYWNl
IFdlYktpdAogCi0jZW5kaWYgLy8gRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKLQpJbmRleDogU291
cmNlL1dlYktpdDIvU2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0
ZXJzLmNwcAkocmV2aXNpb24gMTkyNjAxKQorKysgU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlBy
b2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Myw5ICs0Myw2
IEBAIFdlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnM6OldlYlByb2Nlc3MKICAgICAsIHNob3Vs
ZEVuYWJsZUpJVChmYWxzZSkKICAgICAsIHNob3VsZEVuYWJsZUZUTEpJVChmYWxzZSkKICNlbmRp
ZgotI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCi0gICAgLCB1c2VzTmV0d29ya1Byb2Nlc3Mo
ZmFsc2UpCi0jZW5kaWYKICAgICAsIG1lbW9yeUNhY2hlRGlzYWJsZWQoZmFsc2UpCiAjaWYgRU5B
QkxFKFNFUlZJQ0VfQ09OVFJPTFMpCiAgICAgLCBoYXNJbWFnZVNlcnZpY2VzKGZhbHNlKQpAQCAt
MTMzLDEwICsxMzAsNiBAQCB2b2lkIFdlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnM6OmVuY29k
CiAgICAgZW5jb2RlciA8PCBub3RpZmljYXRpb25QZXJtaXNzaW9uczsKICNlbmRpZgogCi0jaWYg
RU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKLSAgICBlbmNvZGVyIDw8IHVzZXNOZXR3b3JrUHJvY2Vz
czsKLSNlbmRpZgotCiAgICAgZW5jb2RlciA8PCBwbHVnSW5BdXRvU3RhcnRPcmlnaW5IYXNoZXM7
CiAgICAgZW5jb2RlciA8PCBwbHVnSW5BdXRvU3RhcnRPcmlnaW5zOwogICAgIGVuY29kZXIgPDwg
bWVtb3J5Q2FjaGVEaXNhYmxlZDsKQEAgLTI5MSwxMSArMjg0LDYgQEAgYm9vbCBXZWJQcm9jZXNz
Q3JlYXRpb25QYXJhbWV0ZXJzOjpkZWNvZAogICAgICAgICByZXR1cm4gZmFsc2U7CiAjZW5kaWYK
IAotI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCi0gICAgaWYgKCFkZWNvZGVyLmRlY29kZShw
YXJhbWV0ZXJzLnVzZXNOZXR3b3JrUHJvY2VzcykpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSNl
bmRpZgotCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShwYXJhbWV0ZXJzLnBsdWdJbkF1dG9TdGFy
dE9yaWdpbkhhc2hlcykpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBpZiAoIWRlY29kZXIu
ZGVjb2RlKHBhcmFtZXRlcnMucGx1Z0luQXV0b1N0YXJ0T3JpZ2lucykpCkluZGV4OiBTb3VyY2Uv
V2ViS2l0Mi9TaGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmgJ
KHJldmlzaW9uIDE5MjYwMSkKKysrIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJQcm9jZXNzQ3Jl
YXRpb25QYXJhbWV0ZXJzLmgJKHdvcmtpbmcgY29weSkKQEAgLTE1NCwxMCArMTU0LDYgQEAgc3Ry
dWN0IFdlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMgewogICAgIEhhc2hNYXA8U3RyaW5nLCBi
b29sPiBub3RpZmljYXRpb25QZXJtaXNzaW9uczsKICNlbmRpZgogCi0jaWYgRU5BQkxFKE5FVFdP
UktfUFJPQ0VTUykKLSAgICBib29sIHVzZXNOZXR3b3JrUHJvY2VzczsKLSNlbmRpZgotCiAgICAg
SGFzaE1hcDxXZWJDb3JlOjpTZXNzaW9uSUQsIEhhc2hNYXA8dW5zaWduZWQsIGRvdWJsZT4+IHBs
dWdJbkF1dG9TdGFydE9yaWdpbkhhc2hlczsKICAgICBWZWN0b3I8U3RyaW5nPiBwbHVnSW5BdXRv
U3RhcnRPcmlnaW5zOwogCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQXV0aGVudGljYXRp
b24vQXV0aGVudGljYXRpb25NYW5hZ2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvQXV0aGVudGljYXRpb24vQXV0aGVudGljYXRpb25NYW5hZ2VyLmNwcAkocmV2aXNp
b24gMTkyNjAxKQorKysgU291cmNlL1dlYktpdDIvU2hhcmVkL0F1dGhlbnRpY2F0aW9uL0F1dGhl
bnRpY2F0aW9uTWFuYWdlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMwLDYgKzMwLDcgQEAKICNp
bmNsdWRlICJDaGlsZFByb2Nlc3MuaCIKICNpbmNsdWRlICJEb3dubG9hZC5oIgogI2luY2x1ZGUg
IkRvd25sb2FkUHJveHlNZXNzYWdlcy5oIgorI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzUHJveHlN
ZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYkNvcmVBcmd1bWVudENvZGVycy5oIgogI2luY2x1ZGUg
IldlYkZyYW1lLmgiCiAjaW5jbHVkZSAiV2ViUGFnZS5oIgpAQCAtMzcsMTAgKzM4LDYgQEAKICNp
bmNsdWRlIDxXZWJDb3JlL0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9BdXRoZW50aWNhdGlvbkNsaWVudC5oPgogCi0jaWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VT
UykKLSNpbmNsdWRlICJOZXR3b3JrUHJvY2Vzc1Byb3h5TWVzc2FnZXMuaCIKLSNlbmRpZgotCiB1
c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC0xMjgsNyAr
MTI1LDYgQEAgdm9pZCBBdXRoZW50aWNhdGlvbk1hbmFnZXI6OmRpZFJlY2VpdmVBdQogICAgIG1f
cHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEaWRSZWNlaXZlQXV0aGVudGlj
YXRpb25DaGFsbGVuZ2UoZnJhbWUtPmZyYW1lSUQoKSwgYXV0aGVudGljYXRpb25DaGFsbGVuZ2Us
IGNoYWxsZW5nZUlEKSwgZnJhbWUtPnBhZ2UoKS0+cGFnZUlEKCkpOwogfQogCi0jaWYgRU5BQkxF
KE5FVFdPUktfUFJPQ0VTUykKICNpZiBVU0UoTkVUV09SS19TRVNTSU9OKQogdm9pZCBBdXRoZW50
aWNhdGlvbk1hbmFnZXI6OmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSh1aW50NjRf
dCBwYWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
JiBhdXRoZW50aWNhdGlvbkNoYWxsZW5nZSwgQ2hhbGxlbmdlQ29tcGxldGlvbkhhbmRsZXIgY29t
cGxldGlvbkhhbmRsZXIpCiB7CkBAIC0xNTcsNyArMTUzLDYgQEAgdm9pZCBBdXRoZW50aWNhdGlv
bk1hbmFnZXI6OmRpZFJlY2VpdmVBdQogICAgIAogICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdl
czo6TmV0d29ya1Byb2Nlc3NQcm94eTo6RGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
KHBhZ2VJRCwgZnJhbWVJRCwgYXV0aGVudGljYXRpb25DaGFsbGVuZ2UsIGNoYWxsZW5nZUlEKSk7
CiB9Ci0jZW5kaWYKIAogI2lmICFVU0UoTkVUV09SS19TRVNTSU9OKQogdm9pZCBBdXRoZW50aWNh
dGlvbk1hbmFnZXI6OmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShEb3dubG9hZCog
ZG93bmxvYWQsIGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiBhdXRoZW50aWNhdGlvbkNo
YWxsZW5nZSkKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9OZXR3b3JrL05ldHdvcmtQcm9j
ZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5jcHAJKHJldmlz
aW9uIDE5MjYwMSkKKysrIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9OZXR3b3JrL05ldHdvcmtQcm9j
ZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjYsOCArMjYsNiBA
QAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzQ3JlYXRpb25Q
YXJhbWV0ZXJzLmgiCiAKLSNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQotCiAjaW5jbHVkZSAi
QXJndW1lbnRDb2RlcnMuaCIKIAogI2lmIFBMQVRGT1JNKENPQ09BKQpAQCAtMTY4LDUgKzE2Niwz
IEBAIGJvb2wgTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnM6OmQKIH0KIAogfSAvLyBu
YW1lc3BhY2UgV2ViS2l0Ci0KLSNlbmRpZiAvLyBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQpJbmRl
eDogU291cmNlL1dlYktpdDIvU2hhcmVkL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBh
cmFtZXRlcnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvTmV0d29yay9O
ZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oCShyZXZpc2lvbiAxOTI2MDEpCisrKyBT
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1l
dGVycy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw4ICsyNiw2IEBACiAjaWZuZGVmIE5ldHdvcmtQ
cm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzX2gKICNkZWZpbmUgTmV0d29ya1Byb2Nlc3NDcmVhdGlv
blBhcmFtZXRlcnNfaAogCi0jaWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKLQogI2luY2x1ZGUg
IkNhY2hlTW9kZWwuaCIKICNpbmNsdWRlICJTYW5kYm94RXh0ZW5zaW9uLmgiCiAjaW5jbHVkZSA8
d3RmL1ZlY3Rvci5oPgpAQCAtMTAzLDYgKzEwMSw0IEBAIHN0cnVjdCBOZXR3b3JrUHJvY2Vzc0Ny
ZWF0aW9uUGFyYW1ldGVycyAKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKLSNlbmRpZiAvLyBF
TkFCTEUoTkVUV09SS19QUk9DRVNTKQotCiAjZW5kaWYgLy8gTmV0d29ya1Byb2Nlc3NDcmVhdGlv
blBhcmFtZXRlcnNfaApJbmRleDogU291cmNlL1dlYktpdDIvU2hhcmVkL05ldHdvcmsvTmV0d29y
a1Byb2Nlc3NTdXBwbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvU2hhcmVk
L05ldHdvcmsvTmV0d29ya1Byb2Nlc3NTdXBwbGVtZW50LmgJKHJldmlzaW9uIDE5MjYwMSkKKysr
IFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9OZXR3b3JrL05ldHdvcmtQcm9jZXNzU3VwcGxlbWVudC5o
CSh3b3JraW5nIGNvcHkpCkBAIC0zMywxMiArMzMsMTAgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiBz
dHJ1Y3QgTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnM7CiAKIGNsYXNzIE5ldHdvcmtQ
cm9jZXNzU3VwcGxlbWVudCA6IHB1YmxpYyBDaGlsZFByb2Nlc3NTdXBwbGVtZW50IHsKLSNpZiBF
TkFCTEUoTkVUV09SS19QUk9DRVNTKQogcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBpbml0aWFs
aXplKGNvbnN0IE5ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzJikKICAgICB7CiAgICAg
fQotI2VuZGlmCiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKSW5kZXg6IFNvdXJjZS9XZWJL
aXQyL1NoYXJlZC9OZXR3b3JrL05ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvTmV0d29yay9OZXR3b3JrUmVzb3VyY2VM
b2FkUGFyYW1ldGVycy5jcHAJKHJldmlzaW9uIDE5MjYwMSkKKysrIFNvdXJjZS9XZWJLaXQyL1No
YXJlZC9OZXR3b3JrL05ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMzAsOCArMzAsNiBAQAogI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKICNpbmNs
dWRlICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIKIAotI2lmIEVOQUJMRShORVRXT1JLX1BST0NF
U1MpCi0KIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAg
LTE2MCw1ICsxNTgsMyBAQCBib29sIE5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzOjpkZWNv
CiB9CiAgICAgCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQotI2VuZGlmIC8vIEVOQUJMRShORVRX
T1JLX1BST0NFU1MpCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvTmV0d29yay9OZXR3b3Jr
UmVzb3VyY2VMb2FkUGFyYW1ldGVycy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1No
YXJlZC9OZXR3b3JrL05ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmgJKHJldmlzaW9uIDE5
MjYwMSkKKysrIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9OZXR3b3JrL05ldHdvcmtSZXNvdXJjZUxv
YWRQYXJhbWV0ZXJzLmgJKHdvcmtpbmcgY29weSkKQEAgLTMyLDggKzMyLDYgQEAKICNpbmNsdWRl
IDxXZWJDb3JlL1Jlc291cmNlUmVxdWVzdC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2Vzc2lvbklE
Lmg+CiAKLSNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQotCiBuYW1lc3BhY2UgSVBDIHsKICAg
ICBjbGFzcyBBcmd1bWVudERlY29kZXI7CiAgICAgY2xhc3MgQXJndW1lbnRFbmNvZGVyOwpAQCAt
NjgsNiArNjYsNCBAQCBwdWJsaWM6CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCi0jZW5kaWYg
Ly8gRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKLQogI2VuZGlmIC8vIE5ldHdvcmtSZXNvdXJjZUxv
YWRQYXJhbWV0ZXJzX2gKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9OZXR3b3JrL0N1c3Rv
bVByb3RvY29scy9DdXN0b21Qcm90b2NvbE1hbmFnZXIuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0Mi9TaGFyZWQvTmV0d29yay9DdXN0b21Qcm90b2NvbHMvQ3VzdG9tUHJvdG9jb2xNYW5h
Z2VyLmgJKHJldmlzaW9uIDE5MjYwMSkKKysrIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9OZXR3b3Jr
L0N1c3RvbVByb3RvY29scy9DdXN0b21Qcm90b2NvbE1hbmFnZXIuaAkod29ya2luZyBjb3B5KQpA
QCAtODMsMTAgKzgzLDggQEAgcHJpdmF0ZToKICAgICAvLyBXZWJQcm9jZXNzU3VwcGxlbWVudAog
ICAgIHZvaWQgaW5pdGlhbGl6ZShjb25zdCBXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzJikg
b3ZlcnJpZGU7CiAKLSNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQogICAgIC8vIE5ldHdvcmtQ
cm9jZXNzU3VwcGxlbWVudAogICAgIHZvaWQgaW5pdGlhbGl6ZShjb25zdCBOZXR3b3JrUHJvY2Vz
c0NyZWF0aW9uUGFyYW1ldGVycyYpIG92ZXJyaWRlOwotI2VuZGlmCiAKICAgICAvLyBJUEM6Ok1l
c3NhZ2VSZWNlaXZlcgogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNv
bm5lY3Rpb24mLCBJUEM6Ok1lc3NhZ2VEZWNvZGVyJikgb3ZlcnJpZGU7CkluZGV4OiBTb3VyY2Uv
V2ViS2l0Mi9TaGFyZWQvTmV0d29yay9DdXN0b21Qcm90b2NvbHMvQ29jb2EvQ3VzdG9tUHJvdG9j
b2xNYW5hZ2VyQ29jb2EubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvU2hhcmVkL05l
dHdvcmsvQ3VzdG9tUHJvdG9jb2xzL0NvY29hL0N1c3RvbVByb3RvY29sTWFuYWdlckNvY29hLm1t
CShyZXZpc2lvbiAxOTI2MDEpCisrKyBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvTmV0d29yay9DdXN0
b21Qcm90b2NvbHMvQ29jb2EvQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ29jb2EubW0JKHdvcmtpbmcg
Y29weSkKQEAgLTMwLDYgKzMwLDcgQEAKICNpbXBvcnQgIkN1c3RvbVByb3RvY29sTWFuYWdlck1l
c3NhZ2VzLmgiCiAjaW1wb3J0ICJDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eU1lc3NhZ2VzLmgi
CiAjaW1wb3J0ICJEYXRhUmVmZXJlbmNlLmgiCisjaW1wb3J0ICJOZXR3b3JrUHJvY2Vzc0NyZWF0
aW9uUGFyYW1ldGVycy5oIgogI2ltcG9ydCAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCiAjaW1w
b3J0ICJXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmgiCiAjaW1wb3J0IDxXZWJDb3JlL1VS
TC5oPgpAQCAtMzcsMTAgKzM4LDYgQEAKICNpbXBvcnQgPFdlYkNvcmUvUmVzb3VyY2VSZXF1ZXN0
Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL1Jlc291cmNlUmVzcG9uc2UuaD4KIAotI2lmIEVOQUJMRShO
RVRXT1JLX1BST0NFU1MpCi0jaW1wb3J0ICJOZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVy
cy5oIgotI2VuZGlmCi0KICNpZmRlZiBfX2hhc19pbmNsdWRlCiAjaWYgX19oYXNfaW5jbHVkZSg8
Rm91bmRhdGlvbi9OU1VSTENvbm5lY3Rpb25Qcml2YXRlLmg+KQogI2ltcG9ydCA8Rm91bmRhdGlv
bi9OU1VSTENvbm5lY3Rpb25Qcml2YXRlLmg+CkBAIC0xMzcsMjIgKzEzNCwxMSBAQCB2b2lkIEN1
c3RvbVByb3RvY29sTWFuYWdlcjo6aW5pdGlhbGl6ZUNvCiAKIHZvaWQgQ3VzdG9tUHJvdG9jb2xN
YW5hZ2VyOjppbml0aWFsaXplKGNvbnN0IFdlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMmIHBh
cmFtZXRlcnMpCiB7Ci0jaWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKLSAgICBBU1NFUlQocGFy
YW1ldGVycy51cmxTY2hlbWVzUmVnaXN0ZXJlZEZvckN1c3RvbVByb3RvY29scy5pc0VtcHR5KCkg
fHwgIXBhcmFtZXRlcnMudXNlc05ldHdvcmtQcm9jZXNzKTsKLSAgICBpZiAocGFyYW1ldGVycy51
c2VzTmV0d29ya1Byb2Nlc3MpIHsKLSAgICAgICAgbV9jaGlsZFByb2Nlc3MtPnBhcmVudFByb2Nl
c3NDb25uZWN0aW9uKCktPnJlbW92ZVdvcmtRdWV1ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6
Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCkpOwotICAgICAgICBt
X21lc3NhZ2VRdWV1ZSA9IG51bGxwdHI7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0jZW5kaWYK
LQotICAgIFtOU1VSTFByb3RvY29sIHJlZ2lzdGVyQ2xhc3M6W1dLQ3VzdG9tUHJvdG9jb2wgY2xh
c3NdXTsKLQotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcGFyYW1ldGVycy51cmxTY2hlbWVz
UmVnaXN0ZXJlZEZvckN1c3RvbVByb3RvY29scy5zaXplKCk7ICsraSkKLSAgICAgICAgcmVnaXN0
ZXJTY2hlbWUocGFyYW1ldGVycy51cmxTY2hlbWVzUmVnaXN0ZXJlZEZvckN1c3RvbVByb3RvY29s
c1tpXSk7CisgICAgQVNTRVJUKHBhcmFtZXRlcnMudXJsU2NoZW1lc1JlZ2lzdGVyZWRGb3JDdXN0
b21Qcm90b2NvbHMuaXNFbXB0eSgpKTsKKyAgICBtX2NoaWxkUHJvY2Vzcy0+cGFyZW50UHJvY2Vz
c0Nvbm5lY3Rpb24oKS0+cmVtb3ZlV29ya1F1ZXVlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpD
dXN0b21Qcm90b2NvbE1hbmFnZXI6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSk7CisgICAgbV9tZXNz
YWdlUXVldWUgPSBudWxscHRyOwogfQogCi0jaWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKIHZv
aWQgQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyOjppbml0aWFsaXplKGNvbnN0IE5ldHdvcmtQcm9jZXNz
Q3JlYXRpb25QYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQogewogICAgIFtOU1VSTFByb3RvY29sIHJl
Z2lzdGVyQ2xhc3M6W1dLQ3VzdG9tUHJvdG9jb2wgY2xhc3NdXTsKQEAgLTE2MCw3ICsxNDYsNiBA
QCB2b2lkIEN1c3RvbVByb3RvY29sTWFuYWdlcjo6aW5pdGlhbGl6ZShjCiAgICAgZm9yIChzaXpl
X3QgaSA9IDA7IGkgPCBwYXJhbWV0ZXJzLnVybFNjaGVtZXNSZWdpc3RlcmVkRm9yQ3VzdG9tUHJv
dG9jb2xzLnNpemUoKTsgKytpKQogICAgICAgICByZWdpc3RlclNjaGVtZShwYXJhbWV0ZXJzLnVy
bFNjaGVtZXNSZWdpc3RlcmVkRm9yQ3VzdG9tUHJvdG9jb2xzW2ldKTsKIH0KLSNlbmRpZgogCiB2
b2lkIEN1c3RvbVByb3RvY29sTWFuYWdlcjo6YWRkQ3VzdG9tUHJvdG9jb2woV0tDdXN0b21Qcm90
b2NvbCAqY3VzdG9tUHJvdG9jb2wpCiB7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvbWFj
L0Nvb2tpZVN0b3JhZ2VTaGltLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvU2hhcmVk
L21hYy9Db29raWVTdG9yYWdlU2hpbS5oCShyZXZpc2lvbiAxOTI2MDEpCisrKyBTb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvbWFjL0Nvb2tpZVN0b3JhZ2VTaGltLmgJKHdvcmtpbmcgY29weSkKQEAgLTI2
LDggKzI2LDYgQEAKICNpZm5kZWYgQ29va2llU3RvcmFnZVNoaW1faAogI2RlZmluZSBDb29raWVT
dG9yYWdlU2hpbV9oCiAKLSNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQotCiAjaW5jbHVkZSA8
d3RmL05vbmNvcHlhYmxlLmg+CiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAKQEAg
LTQ5LDYgKzQ3LDQgQEAgcHJpdmF0ZToKIAogfQogCi0jZW5kaWYgLy8gRU5BQkxFKE5FVFdPUktf
UFJPQ0VTUykKLQogI2VuZGlmIC8vIENvb2tpZVN0b3JhZ2VTaGltX2gKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQyL1NoYXJlZC9tYWMvQ29va2llU3RvcmFnZVNoaW0ubW0KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdDIvU2hhcmVkL21hYy9Db29raWVTdG9yYWdlU2hpbS5tbQkocmV2aXNpb24gMTky
NjAxKQorKysgU291cmNlL1dlYktpdDIvU2hhcmVkL21hYy9Db29raWVTdG9yYWdlU2hpbS5tbQko
d29ya2luZyBjb3B5KQpAQCAtMjYsOCArMjYsNiBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2lu
Y2x1ZGUgIkNvb2tpZVN0b3JhZ2VTaGltLmgiCiAKLSNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNT
KQotCiAjaW5jbHVkZSAiQ29va2llU3RvcmFnZVNoaW1MaWJyYXJ5LmgiCiAjaW5jbHVkZSAiTmV0
d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaCIKICNpbmNsdWRlICJOZXR3b3JrUHJvY2Vzc0Nv
bm5lY3Rpb24uaCIKQEAgLTEzNSw1ICsxMzMsMyBAQCAtICh2b2lkKV9nZXRDb29raWVIZWFkZXJz
Rm9yVGFzazooTlNVUkxTCiB9CiAKIEBlbmQKLQotI2VuZGlmIC8vIEVOQUJMRShORVRXT1JLX1BS
T0NFU1MpCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvbWFjL0Nvb2tpZVN0b3JhZ2VTaGlt
TGlicmFyeS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvU2hhcmVkL21hYy9Db29r
aWVTdG9yYWdlU2hpbUxpYnJhcnkuY3BwCShyZXZpc2lvbiAxOTI2MDEpCisrKyBTb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvbWFjL0Nvb2tpZVN0b3JhZ2VTaGltTGlicmFyeS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTI2LDcgKzI2LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJDb29r
aWVTdG9yYWdlU2hpbUxpYnJhcnkuaCIKIAotI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpICYm
ICFQTEFURk9STShJT1MpCisjaWYgIVBMQVRGT1JNKElPUykKIAogI2luY2x1ZGUgPFdlYkNvcmUv
RHluYW1pY0xpbmtlckludGVycG9zaW5nLmg+CiAKQEAgLTkwLDQgKzkwLDQgQEAgdm9pZCBXZWJL
aXRDb29raWVTdG9yYWdlU2hpbUluaXRpYWxpemUoYwogICAgIAogfQogCi0jZW5kaWYgLy8gRU5B
QkxFKE5FVFdPUktfUFJPQ0VTUykgJiYgIVBMQVRGT1JNKElPUykKKyNlbmRpZiAvLyAhUExBVEZP
Uk0oSU9TKQpJbmRleDogU291cmNlL1dlYktpdDIvU2hhcmVkL21hYy9Db29raWVTdG9yYWdlU2hp
bUxpYnJhcnkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvbWFjL0Nvb2tp
ZVN0b3JhZ2VTaGltTGlicmFyeS5oCShyZXZpc2lvbiAxOTI2MDEpCisrKyBTb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvbWFjL0Nvb2tpZVN0b3JhZ2VTaGltTGlicmFyeS5oCSh3b3JraW5nIGNvcHkpCkBA
IC0yNiw4ICsyNiw2IEBACiAjaWZuZGVmIENvb2tpZVN0b3JhZ2VTaGltTGlicmFyeV9oCiAjZGVm
aW5lIENvb2tpZVN0b3JhZ2VTaGltTGlicmFyeV9oCiAKLSNpZiBFTkFCTEUoTkVUV09SS19QUk9D
RVNTKQotCiB0eXBlZGVmIHN0cnVjdCBPcGFxdWVDRkhUVFBDb29raWVTdG9yYWdlKiAgQ0ZIVFRQ
Q29va2llU3RvcmFnZVJlZjsKIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC00MCw2ICszOCw0IEBA
IHR5cGVkZWYgdm9pZCAoKkNvb2tpZVN0b3JhZ2VTaGltSW5pdGlhbGkKIAogfQogCi0jZW5kaWYg
Ly8gRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKLQogI2VuZGlmIC8vIENvb2tpZVN0b3JhZ2VTaGlt
TGlicmFyeV9oCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUHJvY2Vzc01vZGVsLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1Byb2Nlc3NNb2RlbC5oCShy
ZXZpc2lvbiAxOTI2MDEpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUHJvY2Vzc01vZGVs
LmgJKHdvcmtpbmcgY29weSkKQEAgLTEsMzggKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0g
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYg
UHJvY2Vzc01vZGVsX2gKLSNkZWZpbmUgUHJvY2Vzc01vZGVsX2gKLQotbmFtZXNwYWNlIFdlYktp
dCB7Ci0KLWVudW0gUHJvY2Vzc01vZGVsIHsKLSAgICBQcm9jZXNzTW9kZWxTaGFyZWRTZWNvbmRh
cnlQcm9jZXNzLAotICAgIFByb2Nlc3NNb2RlbE11bHRpcGxlU2Vjb25kYXJ5UHJvY2Vzc2VzCi19
OwotCi19IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQotI2VuZGlmIC8vIFByb2Nlc3NNb2RlbF9oCklu
ZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29va2llTWFuYWdlclByb3h5LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29va2llTWFuYWdlclBy
b3h5LmNwcAkocmV2aXNpb24gMTkyNjAxKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dl
YkNvb2tpZU1hbmFnZXJQcm94eS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg1LDggKzg1LDggQEAg
dm9pZCBXZWJDb29raWVNYW5hZ2VyUHJveHk6OnByb2Nlc3NEaWRDbAogCiBib29sIFdlYkNvb2tp
ZU1hbmFnZXJQcm94eTo6c2hvdWxkVGVybWluYXRlKFdlYlByb2Nlc3NQcm94eSopIGNvbnN0CiB7
Ci0gICAgcmV0dXJuIHByb2Nlc3NQb29sKCktPnByb2Nlc3NNb2RlbCgpICE9IFByb2Nlc3NNb2Rl
bFNoYXJlZFNlY29uZGFyeVByb2Nlc3MKLSAgICAgICAgfHwgKG1fYXJyYXlDYWxsYmFja3MuaXNF
bXB0eSgpICYmIG1faHR0cENvb2tpZUFjY2VwdFBvbGljeUNhbGxiYWNrcy5pc0VtcHR5KCkpOwor
ICAgIC8vIEZJWE1FOiBSZW1vdmUgdGhpcy4KKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogdm9pZCBX
ZWJDb29raWVNYW5hZ2VyUHJveHk6OnJlZldlYkNvbnRleHRTdXBwbGVtZW50KCkKQEAgLTE2Mywx
MCArMTYzLDcgQEAgdm9pZCBXZWJDb29raWVNYW5hZ2VyUHJveHk6OnNldEhUVFBDb29raQogICAg
IC8vIC0gV2hlbiB0ZXN0aW5nLCB3ZSBvbmx5IGhhdmUgb25lIFdlYlByb2Nlc3MgYW5kIG9uZSBO
ZXR3b3JrUHJvY2VzcywgYW5kIFdlYktpdFRlc3RSdW5uZXIgbmV2ZXIgcmVzdGFydHMgdGhlbTsK
ICAgICAvLyAtIFdoZW4gbm90IHRlc3RpbmcsIENvY29hIGhhcyB0aGUgcG9saWN5IHBlcnNpc3Rl
ZCwgYW5kIHRodXMgbmV3IHByb2Nlc3NlcyB1c2UgaXQgKGV2ZW4gZm9yIGVwaGVtZXJhbCBzZXNz
aW9ucykuCiAgICAgcHJvY2Vzc1Bvb2woKS0+c2VuZFRvQWxsUHJvY2Vzc2VzKE1lc3NhZ2VzOjpX
ZWJDb29raWVNYW5hZ2VyOjpTZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KHBvbGljeSkpOwotI2lm
IEVOQUJMRShORVRXT1JLX1BST0NFU1MpCi0gICAgaWYgKHByb2Nlc3NQb29sKCktPnVzZXNOZXR3
b3JrUHJvY2VzcygpKQotICAgICAgICBwcm9jZXNzUG9vbCgpLT5zZW5kVG9OZXR3b3JraW5nUHJv
Y2VzcyhNZXNzYWdlczo6V2ViQ29va2llTWFuYWdlcjo6U2V0SFRUUENvb2tpZUFjY2VwdFBvbGlj
eShwb2xpY3kpKTsKLSNlbmRpZgorICAgIHByb2Nlc3NQb29sKCktPnNlbmRUb05ldHdvcmtpbmdQ
cm9jZXNzKE1lc3NhZ2VzOjpXZWJDb29raWVNYW5hZ2VyOjpTZXRIVFRQQ29va2llQWNjZXB0UG9s
aWN5KHBvbGljeSkpOwogfQogCiB2b2lkIFdlYkNvb2tpZU1hbmFnZXJQcm94eTo6Z2V0SFRUUENv
b2tpZUFjY2VwdFBvbGljeShzdGQ6OmZ1bmN0aW9uPHZvaWQgKEhUVFBDb29raWVBY2NlcHRQb2xp
Y3ksIENhbGxiYWNrQmFzZTo6RXJyb3IpPiBjYWxsYmFja0Z1bmN0aW9uKQpJbmRleDogU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1dlYkluc3BlY3RvclByb3h5LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViSW5zcGVjdG9yUHJveHkuY3BwCShyZXZpc2lvbiAx
OTI2MDEpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViSW5zcGVjdG9yUHJveHkuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0zMTIsNyArMzEyLDYgQEAgV2ViUHJvY2Vzc1Bvb2wmIFdlYklu
c3BlY3RvclByb3h5OjppbnNwZQogICAgIC8vIGd1YXJhbnRlZXMgbm8gcHJvY2VzcyBzaGFyaW5n
IGZvciBvdXIgdXNlciBpbnRlcmZhY2UuCiAgICAgaWYgKCFzX3Byb2Nlc3NQb29sKSB7CiAgICAg
ICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IEFQSTo6UHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uOjpj
cmVhdGVXaXRoTGVnYWN5T3B0aW9ucygpOwotICAgICAgICBjb25maWd1cmF0aW9uLT5zZXRQcm9j
ZXNzTW9kZWwoUHJvY2Vzc01vZGVsTXVsdGlwbGVTZWNvbmRhcnlQcm9jZXNzZXMpOwogICAgICAg
ICBzX3Byb2Nlc3NQb29sID0gJldlYlByb2Nlc3NQb29sOjpjcmVhdGUoY29uZmlndXJhdGlvbi5n
ZXQoKSkubGVha1JlZigpOwogICAgIH07CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuY3BwCShyZXZpc2lvbiAxOTI2MDEpCisrKyBTb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjAsNiArNjAsNyBA
QAogI2luY2x1ZGUgIk5hdGl2ZVdlYk1vdXNlRXZlbnQuaCIKICNpbmNsdWRlICJOYXRpdmVXZWJX
aGVlbEV2ZW50LmgiCiAjaW5jbHVkZSAiTmF2aWdhdGlvbkFjdGlvbkRhdGEuaCIKKyNpbmNsdWRl
ICJOZXR3b3JrUHJvY2Vzc01lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiTm90aWZpY2F0aW9uUGVybWlz
c2lvblJlcXVlc3QuaCIKICNpbmNsdWRlICJOb3RpZmljYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1h
bmFnZXIuaCIKICNpbmNsdWRlICJQYWdlQ2xpZW50LmgiCkBAIC0xMzgsMTAgKzEzOSw2IEBACiAj
aW5jbHVkZSA8d3RmL1JlZkNvdW50ZWRMZWFrQ291bnRlci5oPgogI2VuZGlmCiAKLSNpZiBFTkFC
TEUoTkVUV09SS19QUk9DRVNTKQotI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzTWVzc2FnZXMuaCIK
LSNlbmRpZgotCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAjaW5jbHVkZSAiUmVtb3RlTGF5ZXJUcmVl
RHJhd2luZ0FyZWFQcm94eS5oIgogI2luY2x1ZGUgIlJlbW90ZUxheWVyVHJlZVNjcm9sbGluZ1Bl
cmZvcm1hbmNlRGF0YS5oIgpAQCAtNDg3LDEwICs0ODQsOCBAQCBXZWJQYWdlUHJveHk6OldlYlBh
Z2VQcm94eShQYWdlQ2xpZW50JiBwCiAKICAgICBtX3Byb2Nlc3MtPmFkZE1lc3NhZ2VSZWNlaXZl
cihNZXNzYWdlczo6V2ViUGFnZVByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1fcGFnZUlE
LCAqdGhpcyk7CiAKLSNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQogICAgIGlmIChtX3Nlc3Np
b25JRC5pc0VwaGVtZXJhbCgpKQogICAgICAgICBtX3Byb2Nlc3MtPnByb2Nlc3NQb29sKCkuc2Vu
ZFRvTmV0d29ya2luZ1Byb2Nlc3MoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpFbnN1cmVQcml2
YXRlQnJvd3NpbmdTZXNzaW9uKG1fc2Vzc2lvbklEKSk7Ci0jZW5kaWYKIAogI2lmIFBMQVRGT1JN
KENPQ09BKQogICAgIGNvbnN0IENGSW5kZXggdmlld1N0YXRlQ2hhbmdlUnVuTG9vcE9yZGVyID0g
KENGSW5kZXgpUnVuTG9vcE9ic2VydmVyOjpXZWxsS25vd25SdW5Mb29wT3JkZXJzOjpDb3JlQW5p
bWF0aW9uQ29tbWl0IC0gMTsKQEAgLTY5NiwxMCArNjkxLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6
OnJlYXR0YWNoVG9XZWJQcm9jZXNzKAogICAgIG1fcHJvY2Vzcy0+cmVtb3ZlV2ViUGFnZShtX3Bh
Z2VJRCk7CiAgICAgbV9wcm9jZXNzLT5yZW1vdmVNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6Oldl
YlBhZ2VQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX3BhZ2VJRCk7CiAKLSAgICBpZiAo
bV9wcm9jZXNzLT5wcm9jZXNzUG9vbCgpLnByb2Nlc3NNb2RlbCgpID09IFByb2Nlc3NNb2RlbFNo
YXJlZFNlY29uZGFyeVByb2Nlc3MpCi0gICAgICAgIG1fcHJvY2VzcyA9IG1fcHJvY2Vzcy0+cHJv
Y2Vzc1Bvb2woKS5lbnN1cmVTaGFyZWRXZWJQcm9jZXNzKCk7Ci0gICAgZWxzZQotICAgICAgICBt
X3Byb2Nlc3MgPSBtX3Byb2Nlc3MtPnByb2Nlc3NQb29sKCkuY3JlYXRlTmV3V2ViUHJvY2Vzc1Jl
c3BlY3RpbmdQcm9jZXNzQ291bnRMaW1pdCgpOworICAgIG1fcHJvY2VzcyA9IG1fcHJvY2Vzcy0+
cHJvY2Vzc1Bvb2woKS5jcmVhdGVOZXdXZWJQcm9jZXNzUmVzcGVjdGluZ1Byb2Nlc3NDb3VudExp
bWl0KCk7CiAKICAgICBBU1NFUlQobV9wcm9jZXNzLT5zdGF0ZSgpICE9IENoaWxkUHJvY2Vzc1By
b3h5OjpTdGF0ZTo6VGVybWluYXRlZCk7CiAgICAgaWYgKG1fcHJvY2Vzcy0+c3RhdGUoKSA9PSBD
aGlsZFByb2Nlc3NQcm94eTo6U3RhdGU6OlJ1bm5pbmcpCkBAIC03NzQsMTAgKzc2Niw4IEBAIHZv
aWQgV2ViUGFnZVByb3h5OjpzZXRTZXNzaW9uSUQoU2Vzc2lvbkkKICAgICBtX3Nlc3Npb25JRCA9
IHNlc3Npb25JRDsKICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldFNl
c3Npb25JRChzZXNzaW9uSUQpLCBtX3BhZ2VJRCk7CiAKLSNpZiBFTkFCTEUoTkVUV09SS19QUk9D
RVNTKQogICAgIGlmIChzZXNzaW9uSUQuaXNFcGhlbWVyYWwoKSkKICAgICAgICAgbV9wcm9jZXNz
LT5wcm9jZXNzUG9vbCgpLnNlbmRUb05ldHdvcmtpbmdQcm9jZXNzKE1lc3NhZ2VzOjpOZXR3b3Jr
UHJvY2Vzczo6RW5zdXJlUHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbihzZXNzaW9uSUQpKTsKLSNlbmRp
ZgogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6aW5pdGlhbGl6ZVdlYlBhZ2UoKQpJbmRleDogU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCShyZXZpc2lvbiAxOTI2
MDEpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zNSw2ICszNSw5IEBACiAjaW5jbHVkZSAiRG93bmxvYWRQcm94eS5oIgog
I2luY2x1ZGUgIkRvd25sb2FkUHJveHlNZXNzYWdlcy5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIK
KyNpbmNsdWRlICJOZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oIgorI2luY2x1ZGUg
Ik5ldHdvcmtQcm9jZXNzTWVzc2FnZXMuaCIKKyNpbmNsdWRlICJOZXR3b3JrUHJvY2Vzc1Byb3h5
LmgiCiAjaW5jbHVkZSAiU2FuZGJveEV4dGVuc2lvbi5oIgogI2luY2x1ZGUgIlN0YXRpc3RpY3NE
YXRhLmgiCiAjaW5jbHVkZSAiVGV4dENoZWNrZXIuaCIKQEAgLTc4LDExICs4MSw2IEBACiAjaW5j
bHVkZSAiRGF0YWJhc2VQcm9jZXNzTWVzc2FnZXMuaCIKICNlbmRpZgogCi0jaWYgRU5BQkxFKE5F
VFdPUktfUFJPQ0VTUykKLSNpbmNsdWRlICJOZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVy
cy5oIgotI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzTWVzc2FnZXMuaCIKLSNpbmNsdWRlICJOZXR3
b3JrUHJvY2Vzc1Byb3h5LmgiCi0jZW5kaWYKIAogI2lmIEVOQUJMRShTRVJWSUNFX0NPTlRST0xT
KQogI2luY2x1ZGUgIlNlcnZpY2VzQ29udHJvbGxlci5oIgpAQCAtMTA1LDggKzEwMyw2IEBAIHVz
aW5nIG5hbWVzcGFjZSBXZWJLaXQ7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1zdGF0aWMgY29u
c3QgZG91YmxlIHNoYXJlZFNlY29uZGFyeVByb2Nlc3NTaHV0ZG93blRpbWVvdXQgPSA2MDsKLQog
REVGSU5FX0RFQlVHX09OTFlfR0xPQkFMKFdURjo6UmVmQ291bnRlZExlYWtDb3VudGVyLCBwcm9j
ZXNzUG9vbENvdW50ZXIsICgiV2ViUHJvY2Vzc1Bvb2wiKSk7CiAKIFJlZjxXZWJQcm9jZXNzUG9v
bD4gV2ViUHJvY2Vzc1Bvb2w6OmNyZWF0ZShBUEk6OlByb2Nlc3NQb29sQ29uZmlndXJhdGlvbiYg
Y29uZmlndXJhdGlvbikKQEAgLTE1OSwxMCArMTU1LDggQEAgV2ViUHJvY2Vzc1Bvb2w6OldlYlBy
b2Nlc3NQb29sKEFQSTo6UHJvYwogI2VuZGlmCiAgICAgLCBtX3Nob3VsZFVzZVRlc3RpbmdOZXR3
b3JrU2Vzc2lvbihmYWxzZSkKICAgICAsIG1fcHJvY2Vzc1Rlcm1pbmF0aW9uRW5hYmxlZCh0cnVl
KQotI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCiAgICAgLCBtX2NhbkhhbmRsZUhUVFBTU2Vy
dmVyVHJ1c3RFdmFsdWF0aW9uKHRydWUpCiAgICAgLCBtX2RpZE5ldHdvcmtQcm9jZXNzQ3Jhc2go
ZmFsc2UpCi0jZW5kaWYKICNpZiBVU0UoU09VUCkKICAgICAsIG1faWdub3JlVExTRXJyb3JzKHRy
dWUpCiAjZW5kaWYKQEAgLTI1NCwxMCArMjQ4LDggQEAgV2ViUHJvY2Vzc1Bvb2w6On5XZWJQcm9j
ZXNzUG9vbCgpCiAgICAgcHJvY2Vzc1Bvb2xDb3VudGVyLmRlY3JlbWVudCgpOwogI2VuZGlmCiAK
LSNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQogICAgIGlmIChtX25ldHdvcmtQcm9jZXNzKQog
ICAgICAgICBtX25ldHdvcmtQcm9jZXNzLT5zaHV0RG93blByb2Nlc3MoKTsKLSNlbmRpZgogfQog
CiB2b2lkIFdlYlByb2Nlc3NQb29sOjppbml0aWFsaXplQ2xpZW50KGNvbnN0IFdLQ29udGV4dENs
aWVudEJhc2UqIGNsaWVudCkKQEAgLTI5MSwxNyArMjgzLDYgQEAgdm9pZCBXZWJQcm9jZXNzUG9v
bDo6c2V0RG93bmxvYWRDbGllbnQocwogICAgICAgICBtX2Rvd25sb2FkQ2xpZW50ID0gV1RGOjpt
b3ZlKGRvd25sb2FkQ2xpZW50KTsKIH0KIAotdm9pZCBXZWJQcm9jZXNzUG9vbDo6c2V0UHJvY2Vz
c01vZGVsKFByb2Nlc3NNb2RlbCBwcm9jZXNzTW9kZWwpCi17Ci0gICAgLy8gR3VhcmQgYWdhaW5z
dCBBUEkgbWlzdXNlLgotICAgIGlmICghbV9wcm9jZXNzZXMuaXNFbXB0eSgpKQotICAgICAgICBD
UkFTSCgpOwotICAgIGlmIChwcm9jZXNzTW9kZWwgIT0gUHJvY2Vzc01vZGVsU2hhcmVkU2Vjb25k
YXJ5UHJvY2VzcyAmJiAhbV9tZXNzYWdlc1RvSW5qZWN0ZWRCdW5kbGVQb3N0ZWRUb0VtcHR5Q29u
dGV4dC5pc0VtcHR5KCkpCi0gICAgICAgIENSQVNIKCk7Ci0KLSAgICBtX2NvbmZpZ3VyYXRpb24t
PnNldFByb2Nlc3NNb2RlbChwcm9jZXNzTW9kZWwpOwotfQotCiB2b2lkIFdlYlByb2Nlc3NQb29s
OjpzZXRNYXhpbXVtTnVtYmVyT2ZQcm9jZXNzZXModW5zaWduZWQgbWF4aW11bU51bWJlck9mUHJv
Y2Vzc2VzKQogewogICAgIC8vIEd1YXJkIGFnYWluc3QgQVBJIG1pc3VzZS4KQEAgLTMxMywyMyAr
Mjk0LDcgQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6c2V0TWF4aW11bU51bWJlck9mUAogCiBJUEM6
OkNvbm5lY3Rpb24qIFdlYlByb2Nlc3NQb29sOjpuZXR3b3JraW5nUHJvY2Vzc0Nvbm5lY3Rpb24o
KQogewotICAgIHN3aXRjaCAocHJvY2Vzc01vZGVsKCkpIHsKLSAgICBjYXNlIFByb2Nlc3NNb2Rl
bFNoYXJlZFNlY29uZGFyeVByb2Nlc3M6Ci0jaWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKLSAg
ICAgICAgaWYgKHVzZXNOZXR3b3JrUHJvY2VzcygpKQotICAgICAgICAgICAgcmV0dXJuIG1fbmV0
d29ya1Byb2Nlc3MtPmNvbm5lY3Rpb24oKTsKLSNlbmRpZgotICAgICAgICByZXR1cm4gbV9wcm9j
ZXNzZXNbMF0tPmNvbm5lY3Rpb24oKTsKLSAgICBjYXNlIFByb2Nlc3NNb2RlbE11bHRpcGxlU2Vj
b25kYXJ5UHJvY2Vzc2VzOgotI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCi0gICAgICAgIEFT
U0VSVCh1c2VzTmV0d29ya1Byb2Nlc3MoKSk7Ci0gICAgICAgIHJldHVybiBtX25ldHdvcmtQcm9j
ZXNzLT5jb25uZWN0aW9uKCk7Ci0jZWxzZQotICAgICAgICBicmVhazsKLSNlbmRpZgotICAgIH0K
LSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gbV9u
ZXR3b3JrUHJvY2Vzcy0+Y29ubmVjdGlvbigpOwogfQogCiB2b2lkIFdlYlByb2Nlc3NQb29sOjps
YW5ndWFnZUNoYW5nZWQodm9pZCogY29udGV4dCkKQEAgLTM0MCw4ICszMDUsOCBAQCB2b2lkIFdl
YlByb2Nlc3NQb29sOjpsYW5ndWFnZUNoYW5nZWQodm9pCiB2b2lkIFdlYlByb2Nlc3NQb29sOjps
YW5ndWFnZUNoYW5nZWQoKQogewogICAgIHNlbmRUb0FsbFByb2Nlc3NlcyhNZXNzYWdlczo6V2Vi
UHJvY2Vzczo6VXNlclByZWZlcnJlZExhbmd1YWdlc0NoYW5nZWQodXNlclByZWZlcnJlZExhbmd1
YWdlcygpKSk7Ci0jaWYgVVNFKFNPVVApICYmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCi0gICAg
aWYgKHVzZXNOZXR3b3JrUHJvY2VzcygpICYmIG1fbmV0d29ya1Byb2Nlc3MpCisjaWYgVVNFKFNP
VVApCisgICAgaWYgKG1fbmV0d29ya1Byb2Nlc3MpCiAgICAgICAgIG1fbmV0d29ya1Byb2Nlc3Mt
PnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpVc2VyUHJlZmVycmVkTGFuZ3VhZ2VzQ2hh
bmdlZCh1c2VyUHJlZmVycmVkTGFuZ3VhZ2VzKCkpLCAwKTsKICNlbmRpZgogfQpAQCAtMzU2LDI1
ICszMjEsNiBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjp0ZXh0Q2hlY2tlclN0YXRlQ2hhCiAgICAg
c2VuZFRvQWxsUHJvY2Vzc2VzKE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpTZXRUZXh0Q2hlY2tlclN0
YXRlKFRleHRDaGVja2VyOjpzdGF0ZSgpKSk7CiB9CiAKLXZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnNl
dFVzZXNOZXR3b3JrUHJvY2Vzcyhib29sIHVzZXNOZXR3b3JrUHJvY2VzcykKLXsKLSNpZiBFTkFC
TEUoTkVUV09SS19QUk9DRVNTKQotICAgIG1fY29uZmlndXJhdGlvbi0+c2V0VXNlTmV0d29ya1By
b2Nlc3ModXNlc05ldHdvcmtQcm9jZXNzKTsKLSNlbHNlCi0gICAgVU5VU0VEX1BBUkFNKHVzZXNO
ZXR3b3JrUHJvY2Vzcyk7Ci0jZW5kaWYKLX0KLQotYm9vbCBXZWJQcm9jZXNzUG9vbDo6dXNlc05l
dHdvcmtQcm9jZXNzKCkgY29uc3QKLXsKLSNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQotICAg
IHJldHVybiBtX2NvbmZpZ3VyYXRpb24tPnVzZU5ldHdvcmtQcm9jZXNzKCk7Ci0jZWxzZQotICAg
IHJldHVybiBmYWxzZTsKLSNlbmRpZgotfQotCi0jaWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykK
IE5ldHdvcmtQcm9jZXNzUHJveHkmIFdlYlByb2Nlc3NQb29sOjplbnN1cmVOZXR3b3JrUHJvY2Vz
cygpCiB7CiAgICAgaWYgKG1fbmV0d29ya1Byb2Nlc3MpCkBAIC00NTksNyArNDA1LDYgQEAgdm9p
ZCBXZWJQcm9jZXNzUG9vbDo6Z2V0TmV0d29ya1Byb2Nlc3NDbwogCiAgICAgbV9uZXR3b3JrUHJv
Y2Vzcy0+Z2V0TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKHJlcGx5KTsKIH0KLSNlbmRpZgogCiAj
aWYgRU5BQkxFKERBVEFCQVNFX1BST0NFU1MpCiB2b2lkIFdlYlByb2Nlc3NQb29sOjplbnN1cmVE
YXRhYmFzZVByb2Nlc3MoKQpAQCAtNTI3LDE0ICs0NzIsMTIgQEAgdm9pZCBXZWJQcm9jZXNzUG9v
bDo6c2V0QW55UGFnZUdyb3VwTWlnaAogewogICAgIG1faWNvbkRhdGFiYXNlLT5zZXRQcml2YXRl
QnJvd3NpbmdFbmFibGVkKHByaXZhdGVCcm93c2luZ0VuYWJsZWQpOwogCi0jaWYgRU5BQkxFKE5F
VFdPUktfUFJPQ0VTUykKLSAgICBpZiAodXNlc05ldHdvcmtQcm9jZXNzKCkgJiYgbmV0d29ya1By
b2Nlc3MoKSkgeworICAgIGlmIChuZXR3b3JrUHJvY2VzcygpKSB7CiAgICAgICAgIGlmIChwcml2
YXRlQnJvd3NpbmdFbmFibGVkKQogICAgICAgICAgICAgbmV0d29ya1Byb2Nlc3MoKS0+c2VuZChN
ZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OkVuc3VyZVByaXZhdGVCcm93c2luZ1Nlc3Npb24oU2Vz
c2lvbklEOjpsZWdhY3lQcml2YXRlU2Vzc2lvbklEKCkpLCAwKTsKICAgICAgICAgZWxzZQogICAg
ICAgICAgICAgbmV0d29ya1Byb2Nlc3MoKS0+c2VuZChNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6
OkRlc3Ryb3lQcml2YXRlQnJvd3NpbmdTZXNzaW9uKFNlc3Npb25JRDo6bGVnYWN5UHJpdmF0ZVNl
c3Npb25JRCgpKSwgMCk7CiAgICAgfQotI2VuZGlmIC8vIEVOQUJMRUQoTkVUV09SS19QUk9DRVNT
KQogCiAgICAgaWYgKHByaXZhdGVCcm93c2luZ0VuYWJsZWQpCiAgICAgICAgIHNlbmRUb0FsbFBy
b2Nlc3NlcyhNZXNzYWdlczo6V2ViUHJvY2Vzczo6RW5zdXJlUHJpdmF0ZUJyb3dzaW5nU2Vzc2lv
bihTZXNzaW9uSUQ6OmxlZ2FjeVByaXZhdGVTZXNzaW9uSUQoKSkpOwpAQCAtNTY5LDIwICs1MTIs
OSBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpwcm9jZXNzRGlkQ2FjaGVQYWdlCiAgICAgbV9wcm9j
ZXNzV2l0aFBhZ2VDYWNoZSA9IHByb2Nlc3M7CiB9CiAKLVdlYlByb2Nlc3NQcm94eSYgV2ViUHJv
Y2Vzc1Bvb2w6OmVuc3VyZVNoYXJlZFdlYlByb2Nlc3MoKQotewotICAgIEFTU0VSVChwcm9jZXNz
TW9kZWwoKSA9PSBQcm9jZXNzTW9kZWxTaGFyZWRTZWNvbmRhcnlQcm9jZXNzKTsKLSAgICBpZiAo
bV9wcm9jZXNzZXMuaXNFbXB0eSgpKQotICAgICAgICBjcmVhdGVOZXdXZWJQcm9jZXNzKCk7Ci0g
ICAgcmV0dXJuICptX3Byb2Nlc3Nlc1swXTsKLX0KLQogV2ViUHJvY2Vzc1Byb3h5JiBXZWJQcm9j
ZXNzUG9vbDo6Y3JlYXRlTmV3V2ViUHJvY2VzcygpCiB7Ci0jaWYgRU5BQkxFKE5FVFdPUktfUFJP
Q0VTUykKLSAgICBpZiAodXNlc05ldHdvcmtQcm9jZXNzKCkpCi0gICAgICAgIGVuc3VyZU5ldHdv
cmtQcm9jZXNzKCk7Ci0jZW5kaWYKKyAgICBlbnN1cmVOZXR3b3JrUHJvY2VzcygpOwogCiAgICAg
UmVmPFdlYlByb2Nlc3NQcm94eT4gcHJvY2VzcyA9IFdlYlByb2Nlc3NQcm94eTo6Y3JlYXRlKCp0
aGlzKTsKIApAQCAtNjQ2LDcgKzU3OCw3IEBAIFdlYlByb2Nlc3NQcm94eSYgV2ViUHJvY2Vzc1Bv
b2w6OmNyZWF0ZU4KICAgICAvLyBpY29uRGF0YWJhc2VQYXRoIGlzIG5vbi1lbXB0eSBieSBkZWZh
dWx0LCBidXQgbV9pY29uRGF0YWJhc2UgaXNuJ3QgZW5hYmxlZCBpbiBVSSBwcm9jZXNzIHVubGVz
cyBzZXREYXRhYmFzZVBhdGggaXMgY2FsbGVkIGV4cGxpY2l0bHkuCiAgICAgcGFyYW1ldGVycy5p
Y29uRGF0YWJhc2VFbmFibGVkID0gIWljb25EYXRhYmFzZVBhdGgoKS5pc0VtcHR5KCk7CiAKLSAg
ICBwYXJhbWV0ZXJzLnRlcm1pbmF0aW9uVGltZW91dCA9IChwcm9jZXNzTW9kZWwoKSA9PSBQcm9j
ZXNzTW9kZWxTaGFyZWRTZWNvbmRhcnlQcm9jZXNzKSA/IHNoYXJlZFNlY29uZGFyeVByb2Nlc3NT
aHV0ZG93blRpbWVvdXQgOiAwOworICAgIHBhcmFtZXRlcnMudGVybWluYXRpb25UaW1lb3V0ID0g
MDsKIAogICAgIHBhcmFtZXRlcnMudGV4dENoZWNrZXJTdGF0ZSA9IFRleHRDaGVja2VyOjpzdGF0
ZSgpOwogCkBAIC02NTksMTAgKzU5MSw2IEBAIFdlYlByb2Nlc3NQcm94eSYgV2ViUHJvY2Vzc1Bv
b2w6OmNyZWF0ZU4KICAgICBzdXBwbGVtZW50PFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eT4o
KS0+cG9wdWxhdGVDb3B5T2ZOb3RpZmljYXRpb25QZXJtaXNzaW9ucyhwYXJhbWV0ZXJzLm5vdGlm
aWNhdGlvblBlcm1pc3Npb25zKTsKICNlbmRpZgogCi0jaWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VT
UykKLSAgICBwYXJhbWV0ZXJzLnVzZXNOZXR3b3JrUHJvY2VzcyA9IHVzZXNOZXR3b3JrUHJvY2Vz
cygpOwotI2VuZGlmCi0KICAgICBwYXJhbWV0ZXJzLnBsdWdJbkF1dG9TdGFydE9yaWdpbkhhc2hl
cyA9IG1fcGx1Z0luQXV0b1N0YXJ0UHJvdmlkZXIuYXV0b1N0YXJ0T3JpZ2luSGFzaGVzQ29weSgp
OwogICAgIGNvcHlUb1ZlY3RvcihtX3BsdWdJbkF1dG9TdGFydFByb3ZpZGVyLmF1dG9TdGFydE9y
aWdpbnMoKSwgcGFyYW1ldGVycy5wbHVnSW5BdXRvU3RhcnRPcmlnaW5zKTsKIApAQCAtNzA2LDE1
ICs2MzQsNyBAQCBXZWJQcm9jZXNzUHJveHkmIFdlYlByb2Nlc3NQb29sOjpjcmVhdGVOCiAKICAg
ICBtX3Byb2Nlc3Nlcy5hcHBlbmQocHJvY2Vzcy5wdHIoKSk7CiAKLSAgICBpZiAocHJvY2Vzc01v
ZGVsKCkgPT0gUHJvY2Vzc01vZGVsU2hhcmVkU2Vjb25kYXJ5UHJvY2VzcykgewotICAgICAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSAhPSBtX21lc3NhZ2VzVG9JbmplY3RlZEJ1bmRsZVBvc3RlZFRv
RW1wdHlDb250ZXh0LnNpemUoKTsgKytpKSB7Ci0gICAgICAgICAgICBhdXRvJiBtZXNzYWdlTmFt
ZUFuZEJvZHkgPSBtX21lc3NhZ2VzVG9JbmplY3RlZEJ1bmRsZVBvc3RlZFRvRW1wdHlDb250ZXh0
W2ldOwotCi0gICAgICAgICAgICBwcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpI
YW5kbGVJbmplY3RlZEJ1bmRsZU1lc3NhZ2UobWVzc2FnZU5hbWVBbmRCb2R5LmZpcnN0LCBVc2Vy
RGF0YShwcm9jZXNzLT50cmFuc2Zvcm1PYmplY3RzVG9IYW5kbGVzKG1lc3NhZ2VOYW1lQW5kQm9k
eS5zZWNvbmQuZ2V0KCkpLmdldCgpKSksIDApOwotICAgICAgICB9Ci0gICAgICAgIG1fbWVzc2Fn
ZXNUb0luamVjdGVkQnVuZGxlUG9zdGVkVG9FbXB0eUNvbnRleHQuY2xlYXIoKTsKLSAgICB9IGVs
c2UKLSAgICAgICAgQVNTRVJUKG1fbWVzc2FnZXNUb0luamVjdGVkQnVuZGxlUG9zdGVkVG9FbXB0
eUNvbnRleHQuaXNFbXB0eSgpKTsKKyAgICBBU1NFUlQobV9tZXNzYWdlc1RvSW5qZWN0ZWRCdW5k
bGVQb3N0ZWRUb0VtcHR5Q29udGV4dC5pc0VtcHR5KCkpOwogCiAjaWYgRU5BQkxFKFJFTU9URV9J
TlNQRUNUT1IpCiAgICAgLy8gSW5pdGlhbGl6ZSByZW1vdGUgaW5zcGVjdG9yIGNvbm5lY3Rpb24g
bm93IHRoYXQgd2UgaGF2ZSBhIHN1Yi1wcm9jZXNzIHRoYXQgaXMgaG9zdGluZyBvbmUgb2Ygb3Vy
IHdlYiB2aWV3cy4KQEAgLTc5OCwyOCArNzE4LDEyIEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OmRp
c2Nvbm5lY3RQcm9jZXNzKFcKIAogICAgIC8vIEZJWE1FIChNdWx0aS1XZWJQcm9jZXNzKTogPHJk
YXI6Ly9wcm9ibGVtLzEyMjM5NzY1PiBTb21lIG9mIHRoZSBpbnZhbGlkYXRpb24gY2FsbHMgYmVs
b3cgYXJlIHN0aWxsIG5lY2Vzc2FyeSBpbiBtdWx0aS1wcm9jZXNzIG1vZGUsIGJ1dCB0aGV5IHNo
b3VsZCBvbmx5IGFmZmVjdCBkYXRhIHN0cnVjdHVyZXMgcGVydGFpbmluZyB0byB0aGUgcHJvY2Vz
cyBiZWluZyBkaXNjb25uZWN0ZWQuCiAgICAgLy8gQ2xlYXJpbmcgZXZlcnl0aGluZyBjYXVzZXMg
YXNzZXJ0aW9uIGZhaWx1cmVzLCBzbyBpdCdzIGxlc3MgdHJvdWJsZSB0byBza2lwIHRoYXQgZm9y
IG5vdy4KLSAgICBpZiAocHJvY2Vzc01vZGVsKCkgIT0gUHJvY2Vzc01vZGVsU2hhcmVkU2Vjb25k
YXJ5UHJvY2VzcykgewotICAgICAgICBSZWZQdHI8V2ViUHJvY2Vzc1Byb3h5PiBwcm90ZWN0KHBy
b2Nlc3MpOwotICAgICAgICBpZiAobV9wcm9jZXNzV2l0aFBhZ2VDYWNoZSA9PSBwcm9jZXNzKQot
ICAgICAgICAgICAgbV9wcm9jZXNzV2l0aFBhZ2VDYWNoZSA9IDA7Ci0KLSAgICAgICAgc3RhdGlj
X2Nhc3Q8V2ViQ29udGV4dFN1cHBsZW1lbnQqPihzdXBwbGVtZW50PFdlYkdlb2xvY2F0aW9uTWFu
YWdlclByb3h5PigpKS0+cHJvY2Vzc0RpZENsb3NlKHByb2Nlc3MpOwotCi0gICAgICAgIG1fcHJv
Y2Vzc2VzLnJlbW92ZUZpcnN0KHByb2Nlc3MpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0g
ICAgV2ViQ29udGV4dFN1cHBsZW1lbnRNYXA6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbV9zdXBwbGVt
ZW50cy5iZWdpbigpOwotICAgIFdlYkNvbnRleHRTdXBwbGVtZW50TWFwOjpjb25zdF9pdGVyYXRv
ciBlbmQgPSBtX3N1cHBsZW1lbnRzLmVuZCgpOwotICAgIGZvciAoOyBpdCAhPSBlbmQ7ICsraXQp
Ci0gICAgICAgIGl0LT52YWx1ZS0+cHJvY2Vzc0RpZENsb3NlKHByb2Nlc3MpOwotCi0gICAgLy8g
VGhlIHZlY3RvciBtYXkgaGF2ZSB0aGUgbGFzdCByZWZlcmVuY2UgdG8gcHJvY2VzcyBwcm94eSwg
d2hpY2ggaW4gdHVybiBtYXkgaGF2ZSB0aGUgbGFzdCByZWZlcmVuY2UgdG8gdGhlIGNvbnRleHQu
Ci0gICAgLy8gU2luY2UgdmVjdG9yIGVsZW1lbnRzIGFyZSBkZXN0cm95ZWQgaW4gcGxhY2UsIHdl
IHdvdWxkIHJlY3Vyc2UgaW50byBXZWJQcm9jZXNzUHJveHkgZGVzdHJ1Y3RvcgotICAgIC8vIGlm
IGl0IHdlcmUgaW52b2tlZCBmcm9tIFZlY3Rvcjo6cmVtb3ZlKCkuIFJlZlB0ciBkZWxheXMgZGVz
dHJ1Y3Rpb24gdW50aWwgaXQncyBzYWZlLgogICAgIFJlZlB0cjxXZWJQcm9jZXNzUHJveHk+IHBy
b3RlY3QocHJvY2Vzcyk7CiAgICAgaWYgKG1fcHJvY2Vzc1dpdGhQYWdlQ2FjaGUgPT0gcHJvY2Vz
cykKLSAgICAgICAgbV9wcm9jZXNzV2l0aFBhZ2VDYWNoZSA9IG51bGxwdHI7CisgICAgICAgIG1f
cHJvY2Vzc1dpdGhQYWdlQ2FjaGUgPSAwOworCisgICAgc3RhdGljX2Nhc3Q8V2ViQ29udGV4dFN1
cHBsZW1lbnQqPihzdXBwbGVtZW50PFdlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5PigpKS0+cHJv
Y2Vzc0RpZENsb3NlKHByb2Nlc3MpOworCiAgICAgbV9wcm9jZXNzZXMucmVtb3ZlRmlyc3QocHJv
Y2Vzcyk7CiB9CiAKQEAgLTg1MSwxOCArNzU1LDE0IEBAIFJlZjxXZWJQYWdlUHJveHk+IFdlYlBy
b2Nlc3NQb29sOjpjcmVhdGUKICAgICB9CiAKICAgICBSZWZQdHI8V2ViUHJvY2Vzc1Byb3h5PiBw
cm9jZXNzOwotICAgIGlmIChwcm9jZXNzTW9kZWwoKSA9PSBQcm9jZXNzTW9kZWxTaGFyZWRTZWNv
bmRhcnlQcm9jZXNzKSB7Ci0gICAgICAgIHByb2Nlc3MgPSAmZW5zdXJlU2hhcmVkV2ViUHJvY2Vz
cygpOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIGlmIChtX2hhdmVJbml0aWFsRW1wdHlQcm9jZXNz
KSB7Ci0gICAgICAgICAgICBwcm9jZXNzID0gbV9wcm9jZXNzZXMubGFzdCgpOwotICAgICAgICAg
ICAgbV9oYXZlSW5pdGlhbEVtcHR5UHJvY2VzcyA9IGZhbHNlOwotICAgICAgICB9IGVsc2UgaWYg
KHBhZ2VDb25maWd1cmF0aW9uLT5yZWxhdGVkUGFnZSgpKSB7Ci0gICAgICAgICAgICAvLyBTaGFy
aW5nIHByb2Nlc3NlcywgZS5nLiB3aGVuIGNyZWF0aW5nIHRoZSBwYWdlIHZpYSB3aW5kb3cub3Bl
bigpLgotICAgICAgICAgICAgcHJvY2VzcyA9ICZwYWdlQ29uZmlndXJhdGlvbi0+cmVsYXRlZFBh
Z2UoKS0+cHJvY2VzcygpOwotICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgIHByb2Nlc3MgPSAm
Y3JlYXRlTmV3V2ViUHJvY2Vzc1Jlc3BlY3RpbmdQcm9jZXNzQ291bnRMaW1pdCgpOwotICAgIH0K
KyAgICBpZiAobV9oYXZlSW5pdGlhbEVtcHR5UHJvY2VzcykgeworICAgICAgICBwcm9jZXNzID0g
bV9wcm9jZXNzZXMubGFzdCgpOworICAgICAgICBtX2hhdmVJbml0aWFsRW1wdHlQcm9jZXNzID0g
ZmFsc2U7CisgICAgfSBlbHNlIGlmIChwYWdlQ29uZmlndXJhdGlvbi0+cmVsYXRlZFBhZ2UoKSkg
eworICAgICAgICAvLyBTaGFyaW5nIHByb2Nlc3NlcywgZS5nLiB3aGVuIGNyZWF0aW5nIHRoZSBw
YWdlIHZpYSB3aW5kb3cub3BlbigpLgorICAgICAgICBwcm9jZXNzID0gJnBhZ2VDb25maWd1cmF0
aW9uLT5yZWxhdGVkUGFnZSgpLT5wcm9jZXNzKCk7CisgICAgfSBlbHNlCisgICAgICAgIHByb2Nl
c3MgPSAmY3JlYXRlTmV3V2ViUHJvY2Vzc1Jlc3BlY3RpbmdQcm9jZXNzQ291bnRMaW1pdCgpOwog
CiAgICAgcmV0dXJuIHByb2Nlc3MtPmNyZWF0ZVdlYlBhZ2UocGFnZUNsaWVudCwgV1RGOjptb3Zl
KHBhZ2VDb25maWd1cmF0aW9uKSk7CiB9CkBAIC04NzAsMTggKzc3MCwxNiBAQCBSZWY8V2ViUGFn
ZVByb3h5PiBXZWJQcm9jZXNzUG9vbDo6Y3JlYXRlCiBEb3dubG9hZFByb3h5KiBXZWJQcm9jZXNz
UG9vbDo6ZG93bmxvYWQoV2ViUGFnZVByb3h5KiBpbml0aWF0aW5nUGFnZSwgY29uc3QgUmVzb3Vy
Y2VSZXF1ZXN0JiByZXF1ZXN0KQogewogICAgIERvd25sb2FkUHJveHkqIGRvd25sb2FkUHJveHkg
PSBjcmVhdGVEb3dubG9hZFByb3h5KHJlcXVlc3QpOwotICAgIHVpbnQ2NF90IGluaXRpYXRpbmdQ
YWdlSUQgPSBpbml0aWF0aW5nUGFnZSA/IGluaXRpYXRpbmdQYWdlLT5wYWdlSUQoKSA6IDA7CiAg
ICAgU2Vzc2lvbklEIHNlc3Npb25JRCA9IGluaXRpYXRpbmdQYWdlID8gaW5pdGlhdGluZ1BhZ2Ut
PnNlc3Npb25JRCgpIDogU2Vzc2lvbklEOjpkZWZhdWx0U2Vzc2lvbklEKCk7CiAKLSNpZiBFTkFC
TEUoTkVUV09SS19QUk9DRVNTKQotICAgIGlmICh1c2VzTmV0d29ya1Byb2Nlc3MoKSAmJiBuZXR3
b3JrUHJvY2VzcygpKSB7CisgICAgaWYgKG5ldHdvcmtQcm9jZXNzKCkpIHsKICAgICAgICAgLy8g
RklYTUUgKE5ldHdvcmtQcm9jZXNzKTogUmVwbGljYXRlIHdoYXRldmVyIEZyYW1lTG9hZGVyOjpz
ZXRPcmlnaW5hbFVSTEZvckRvd25sb2FkUmVxdWVzdCBkb2VzIHdpdGggdGhlIHJlcXVlc3QgaGVy
ZS4KICAgICAgICAgbmV0d29ya1Byb2Nlc3MoKS0+c2VuZChNZXNzYWdlczo6TmV0d29ya1Byb2Nl
c3M6OkRvd25sb2FkUmVxdWVzdChzZXNzaW9uSUQsIGRvd25sb2FkUHJveHktPmRvd25sb2FkSUQo
KSwgcmVxdWVzdCksIDApOwogICAgICAgICByZXR1cm4gZG93bmxvYWRQcm94eTsKICAgICB9Ci0j
ZW5kaWYKIAotICAgIG1fcHJvY2Vzc2VzWzBdLT5zZW5kKE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpE
b3dubG9hZFJlcXVlc3Qoc2Vzc2lvbklELCBkb3dubG9hZFByb3h5LT5kb3dubG9hZElEKCksIGlu
aXRpYXRpbmdQYWdlSUQsIHJlcXVlc3QpLCAwKTsKKyAgICAvLyBGSVhNRTogbWFrZSBuZXR3b3Jr
UHJvY2VzcygpIHJldHVybiBhIHJlZmVyZW5jZSBzbyB0aGlzIGlzIG5vdCBuZWNlc3NhcnkuCisg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgcmV0dXJuIGRvd25sb2FkUHJveHk7CiB9CiAK
QEAgLTg5MywyNSArNzkxLDE4IEBAIERvd25sb2FkUHJveHkqIFdlYlByb2Nlc3NQb29sOjpyZXN1
bWVEb3cKICAgICBpZiAoIXBhdGguaXNFbXB0eSgpKQogICAgICAgICBTYW5kYm94RXh0ZW5zaW9u
OjpjcmVhdGVIYW5kbGUocGF0aCwgU2FuZGJveEV4dGVuc2lvbjo6UmVhZFdyaXRlLCBzYW5kYm94
RXh0ZW5zaW9uSGFuZGxlKTsKIAotI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCi0gICAgaWYg
KHVzZXNOZXR3b3JrUHJvY2VzcygpICYmIG5ldHdvcmtQcm9jZXNzKCkpIHsKKyAgICBpZiAobmV0
d29ya1Byb2Nlc3MoKSkgewogICAgICAgICBuZXR3b3JrUHJvY2VzcygpLT5zZW5kKE1lc3NhZ2Vz
OjpOZXR3b3JrUHJvY2Vzczo6UmVzdW1lRG93bmxvYWQoZG93bmxvYWRQcm94eS0+ZG93bmxvYWRJ
RCgpLCByZXN1bWVEYXRhLT5kYXRhUmVmZXJlbmNlKCksIHBhdGgsIHNhbmRib3hFeHRlbnNpb25I
YW5kbGUpLCAwKTsKICAgICAgICAgcmV0dXJuIGRvd25sb2FkUHJveHk7CiAgICAgfQotI2VuZGlm
CiAKLSAgICBtX3Byb2Nlc3Nlc1swXS0+c2VuZChNZXNzYWdlczo6V2ViUHJvY2Vzczo6UmVzdW1l
RG93bmxvYWQoZG93bmxvYWRQcm94eS0+ZG93bmxvYWRJRCgpLCByZXN1bWVEYXRhLT5kYXRhUmVm
ZXJlbmNlKCksIHBhdGgsIHNhbmRib3hFeHRlbnNpb25IYW5kbGUpLCAwKTsKKyAgICAvLyBGSVhN
RTogbWFrZSBuZXR3b3JrUHJvY2VzcygpIHJldHVybiBhIHJlZmVyZW5jZSBzbyB0aGlzIGlzIG5v
dCBuZWNlc3NhcnkuCisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgcmV0dXJuIGRvd25s
b2FkUHJveHk7CiB9CiAKIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnBvc3RNZXNzYWdlVG9JbmplY3Rl
ZEJ1bmRsZShjb25zdCBTdHJpbmcmIG1lc3NhZ2VOYW1lLCBBUEk6Ok9iamVjdCogbWVzc2FnZUJv
ZHkpCiB7Ci0gICAgaWYgKG1fcHJvY2Vzc2VzLmlzRW1wdHkoKSkgewotICAgICAgICBpZiAocHJv
Y2Vzc01vZGVsKCkgPT0gUHJvY2Vzc01vZGVsU2hhcmVkU2Vjb25kYXJ5UHJvY2VzcykKLSAgICAg
ICAgICAgIG1fbWVzc2FnZXNUb0luamVjdGVkQnVuZGxlUG9zdGVkVG9FbXB0eUNvbnRleHQuYXBw
ZW5kKHN0ZDo6bWFrZV9wYWlyKG1lc3NhZ2VOYW1lLCBtZXNzYWdlQm9keSkpOwotICAgICAgICBy
ZXR1cm47Ci0gICAgfQotCiAgICAgZm9yIChhdXRvJiBwcm9jZXNzIDogbV9wcm9jZXNzZXMpIHsK
ICAgICAgICAgLy8gRklYTUU6IFJldHVybiBlYXJseSBpZiB0aGUgbWVzc2FnZSBib2R5IGNvbnRh
aW5zIGFueSByZWZlcmVuY2VzIHRvIFdLUGFnZVJlZnMvV0tGcmFtZVJlZnMgZXRjLiBzaW5jZSB0
aGV5J3JlIGxvY2FsIHRvIGEgcHJvY2Vzcy4KICAgICAgICAgcHJvY2Vzcy0+c2VuZChNZXNzYWdl
czo6V2ViUHJvY2Vzczo6SGFuZGxlSW5qZWN0ZWRCdW5kbGVNZXNzYWdlKG1lc3NhZ2VOYW1lLCBV
c2VyRGF0YShwcm9jZXNzLT50cmFuc2Zvcm1PYmplY3RzVG9IYW5kbGVzKG1lc3NhZ2VCb2R5KS5n
ZXQoKSkpLCAwKTsKQEAgLTk0MCw3ICs4MzEsNiBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpzZXRB
ZGRpdGlvbmFsUGx1Z2luCiB9CiAjZW5kaWYgLy8gRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkp
CiAKLSNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQogUGxhdGZvcm1Qcm9jZXNzSWRlbnRpZmll
ciBXZWJQcm9jZXNzUG9vbDo6bmV0d29ya1Byb2Nlc3NJZGVudGlmaWVyKCkKIHsKICAgICBpZiAo
IW1fbmV0d29ya1Byb2Nlc3MpCkBAIC05NDgsNyArODM4LDYgQEAgUGxhdGZvcm1Qcm9jZXNzSWRl
bnRpZmllciBXZWJQcm9jZXNzUG9vbAogCiAgICAgcmV0dXJuIG1fbmV0d29ya1Byb2Nlc3MtPnBy
b2Nlc3NJZGVudGlmaWVyKCk7CiB9Ci0jZW5kaWYKIAogdm9pZCBXZWJQcm9jZXNzUG9vbDo6c2V0
QWx3YXlzVXNlc0NvbXBsZXhUZXh0Q29kZVBhdGgoYm9vbCBhbHdheXNVc2VDb21wbGV4VGV4dCkK
IHsKQEAgLTk4OCwxNSArODc3LDkgQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6c2V0RG9tYWluUmVs
YXhhdGlvbgogCiB2b2lkIFdlYlByb2Nlc3NQb29sOjpzZXRDYW5IYW5kbGVIVFRQU1NlcnZlclRy
dXN0RXZhbHVhdGlvbihib29sIHZhbHVlKQogewotI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1Mp
CiAgICAgbV9jYW5IYW5kbGVIVFRQU1NlcnZlclRydXN0RXZhbHVhdGlvbiA9IHZhbHVlOwotICAg
IGlmICh1c2VzTmV0d29ya1Byb2Nlc3MoKSAmJiBtX25ldHdvcmtQcm9jZXNzKSB7CisgICAgaWYg
KG1fbmV0d29ya1Byb2Nlc3MpCiAgICAgICAgIG1fbmV0d29ya1Byb2Nlc3MtPnNlbmQoTWVzc2Fn
ZXM6Ok5ldHdvcmtQcm9jZXNzOjpTZXRDYW5IYW5kbGVIVFRQU1NlcnZlclRydXN0RXZhbHVhdGlv
bih2YWx1ZSksIDApOwotICAgICAgICByZXR1cm47Ci0gICAgfQotI2Vsc2UKLSAgICBVTlVTRURf
UEFSQU0odmFsdWUpOwotI2VuZGlmCiB9CiAKIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnJlZ2lzdGVy
VVJMU2NoZW1lQXNMb2NhbChjb25zdCBTdHJpbmcmIHVybFNjaGVtZSkKQEAgLTEwNjQsMTAgKzk0
Nyw4IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnNldENhY2hlTW9kZWwoQ2FjaGUKICAgICBtX2Nv
bmZpZ3VyYXRpb24tPnNldENhY2hlTW9kZWwoY2FjaGVNb2RlbCk7CiAgICAgc2VuZFRvQWxsUHJv
Y2Vzc2VzKE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpTZXRDYWNoZU1vZGVsKGNhY2hlTW9kZWwpKTsK
IAotI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCi0gICAgaWYgKHVzZXNOZXR3b3JrUHJvY2Vz
cygpICYmIG1fbmV0d29ya1Byb2Nlc3MpCisgICAgaWYgKG1fbmV0d29ya1Byb2Nlc3MpCiAgICAg
ICAgIG1fbmV0d29ya1Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpTZXRD
YWNoZU1vZGVsKGNhY2hlTW9kZWwpLCAwKTsKLSNlbmRpZgogfQogCiB2b2lkIFdlYlByb2Nlc3NQ
b29sOjpzZXREZWZhdWx0UmVxdWVzdFRpbWVvdXRJbnRlcnZhbChkb3VibGUgdGltZW91dEludGVy
dmFsKQpAQCAtMTA3NywxNSArOTU4LDkgQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6c2V0RGVmYXVs
dFJlcXVlc3RUaQogCiBEb3dubG9hZFByb3h5KiBXZWJQcm9jZXNzUG9vbDo6Y3JlYXRlRG93bmxv
YWRQcm94eShjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCiB7Ci0jaWYgRU5BQkxFKE5F
VFdPUktfUFJPQ0VTUykKLSAgICBpZiAodXNlc05ldHdvcmtQcm9jZXNzKCkpIHsKLSAgICAgICAg
ZW5zdXJlTmV0d29ya1Byb2Nlc3MoKTsKLSAgICAgICAgQVNTRVJUKG1fbmV0d29ya1Byb2Nlc3Mp
OwotICAgICAgICByZXR1cm4gbV9uZXR3b3JrUHJvY2Vzcy0+Y3JlYXRlRG93bmxvYWRQcm94eShy
ZXF1ZXN0KTsKLSAgICB9Ci0jZW5kaWYKLQotICAgIHJldHVybiBlbnN1cmVTaGFyZWRXZWJQcm9j
ZXNzKCkuY3JlYXRlRG93bmxvYWRQcm94eShyZXF1ZXN0KTsKKyAgICBlbnN1cmVOZXR3b3JrUHJv
Y2VzcygpOworICAgIEFTU0VSVChtX25ldHdvcmtQcm9jZXNzKTsKKyAgICByZXR1cm4gbV9uZXR3
b3JrUHJvY2Vzcy0+Y3JlYXRlRG93bmxvYWRQcm94eShyZXF1ZXN0KTsKIH0KIAogdm9pZCBXZWJQ
cm9jZXNzUG9vbDo6YWRkTWVzc2FnZVJlY2VpdmVyKElQQzo6U3RyaW5nUmVmZXJlbmNlIG1lc3Nh
Z2VSZWNlaXZlck5hbWUsIElQQzo6TWVzc2FnZVJlY2VpdmVyJiBtZXNzYWdlUmVjZWl2ZXIpCkBA
IC0xMTgyLDEyICsxMDU3LDEwIEBAIFN0cmluZyBXZWJQcm9jZXNzUG9vbDo6Y29va2llU3RvcmFn
ZURpcmUKIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnVzZVRlc3RpbmdOZXR3b3JrU2Vzc2lvbigpCiB7
CiAgICAgQVNTRVJUKG1fcHJvY2Vzc2VzLmlzRW1wdHkoKSk7Ci0jaWYgRU5BQkxFKE5FVFdPUktf
UFJPQ0VTUykKICAgICBBU1NFUlQoIW1fbmV0d29ya1Byb2Nlc3MpOwogCiAgICAgaWYgKG1fbmV0
d29ya1Byb2Nlc3MpCiAgICAgICAgIHJldHVybjsKLSNlbmRpZgogCiAgICAgaWYgKCFtX3Byb2Nl
c3Nlcy5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKQEAgLTExOTcsMjIgKzEwNzAsMTggQEAg
dm9pZCBXZWJQcm9jZXNzUG9vbDo6dXNlVGVzdGluZ05ldHdvcmtTZQogCiB2b2lkIFdlYlByb2Nl
c3NQb29sOjphbGxvd1NwZWNpZmljSFRUUFNDZXJ0aWZpY2F0ZUZvckhvc3QoY29uc3QgV2ViQ2Vy
dGlmaWNhdGVJbmZvKiBjZXJ0aWZpY2F0ZSwgY29uc3QgU3RyaW5nJiBob3N0KQogewotI2lmIEVO
QUJMRShORVRXT1JLX1BST0NFU1MpCi0gICAgaWYgKHVzZXNOZXR3b3JrUHJvY2VzcygpICYmIG1f
bmV0d29ya1Byb2Nlc3MpIHsKKyAgICBpZiAobV9uZXR3b3JrUHJvY2VzcykgewogICAgICAgICBt
X25ldHdvcmtQcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6QWxsb3dTcGVj
aWZpY0hUVFBTQ2VydGlmaWNhdGVGb3JIb3N0KGNlcnRpZmljYXRlLT5jZXJ0aWZpY2F0ZUluZm8o
KSwgaG9zdCksIDApOwogICAgICAgICByZXR1cm47CiAgICAgfQotI2VuZGlmCiAKICNpZiBVU0Uo
U09VUCkKICAgICBtX3Byb2Nlc3Nlc1swXS0+c2VuZChNZXNzYWdlczo6V2ViUHJvY2Vzczo6QWxs
b3dTcGVjaWZpY0hUVFBTQ2VydGlmaWNhdGVGb3JIb3N0KGNlcnRpZmljYXRlLT5jZXJ0aWZpY2F0
ZUluZm8oKSwgaG9zdCksIDApOwogICAgIHJldHVybjsKLSNlbHNlCi0gICAgVU5VU0VEX1BBUkFN
KGNlcnRpZmljYXRlKTsKLSAgICBVTlVTRURfUEFSQU0oaG9zdCk7CiAjZW5kaWYKIAogI2lmICFQ
TEFURk9STShJT1MpCisgICAgLy8gRklYTUU6IFdoeSBpcyB0aGlzIG9ubHkgb24gaU9TPyBDYW4g
d2UgcmVtb3ZlIGl0PwogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogI2VuZGlmCiB9CkBAIC0x
MjUzLDQwICsxMTIyLDE5IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OmdldFN0YXRpc3RpY3ModWlu
dDMKIAogdm9pZCBXZWJQcm9jZXNzUG9vbDo6cmVxdWVzdFdlYkNvbnRlbnRTdGF0aXN0aWNzKFN0
YXRpc3RpY3NSZXF1ZXN0KiByZXF1ZXN0KQogewotICAgIGlmIChwcm9jZXNzTW9kZWwoKSA9PSBQ
cm9jZXNzTW9kZWxTaGFyZWRTZWNvbmRhcnlQcm9jZXNzKSB7Ci0gICAgICAgIGlmIChtX3Byb2Nl
c3Nlcy5pc0VtcHR5KCkpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIAotICAgICAgICB1
aW50NjRfdCByZXF1ZXN0SUQgPSByZXF1ZXN0LT5hZGRPdXRzdGFuZGluZ1JlcXVlc3QoKTsKLSAg
ICAgICAgbV9zdGF0aXN0aWNzUmVxdWVzdHMuc2V0KHJlcXVlc3RJRCwgcmVxdWVzdCk7Ci0gICAg
ICAgIG1fcHJvY2Vzc2VzWzBdLT5zZW5kKE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpHZXRXZWJDb3Jl
U3RhdGlzdGljcyhyZXF1ZXN0SUQpLCAwKTsKLQotICAgIH0gZWxzZSB7Ci0gICAgICAgIC8vIEZJ
WE1FIChNdWx0aS1XZWJQcm9jZXNzKSA8cmRhcjovL3Byb2JsZW0vMTMyMDAwNTk+OiBNYWtlIGdl
dHRpbmcgc3RhdGlzdGljcyBmcm9tIG11bHRpcGxlIFdlYlByb2Nlc3NlcyB3b3JrLgotICAgIH0K
KyAgICAvLyBGSVhNRSAoTXVsdGktV2ViUHJvY2VzcykgPHJkYXI6Ly9wcm9ibGVtLzEzMjAwMDU5
PjogTWFrZSBnZXR0aW5nIHN0YXRpc3RpY3MgZnJvbSBtdWx0aXBsZSBXZWJQcm9jZXNzZXMgd29y
ay4KIH0KIAogdm9pZCBXZWJQcm9jZXNzUG9vbDo6cmVxdWVzdE5ldHdvcmtpbmdTdGF0aXN0aWNz
KFN0YXRpc3RpY3NSZXF1ZXN0KiByZXF1ZXN0KQogewotICAgIGJvb2wgbmV0d29ya1Byb2Nlc3NV
bmF2YWlsYWJsZTsKLSNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQotICAgIG5ldHdvcmtQcm9j
ZXNzVW5hdmFpbGFibGUgPSAhdXNlc05ldHdvcmtQcm9jZXNzKCkgfHwgIW1fbmV0d29ya1Byb2Nl
c3M7Ci0jZWxzZQotICAgIG5ldHdvcmtQcm9jZXNzVW5hdmFpbGFibGUgPSB0cnVlOwotI2VuZGlm
Ci0KLSAgICBpZiAobmV0d29ya1Byb2Nlc3NVbmF2YWlsYWJsZSkgeworICAgIGlmICghbV9uZXR3
b3JrUHJvY2VzcykgewogICAgICAgICBMT0dfRVJST1IoIkF0dGVtcHQgdG8gZ2V0IE5ldHdvcmtQ
cm9jZXNzIHN0YXRpc3RpY3MgYnV0IHRoZSBOZXR3b3JrUHJvY2VzcyBpcyB1bmF2YWlsYWJsZSIp
OwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0jaWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykK
ICAgICB1aW50NjRfdCByZXF1ZXN0SUQgPSByZXF1ZXN0LT5hZGRPdXRzdGFuZGluZ1JlcXVlc3Qo
KTsKICAgICBtX3N0YXRpc3RpY3NSZXF1ZXN0cy5zZXQocmVxdWVzdElELCByZXF1ZXN0KTsKICAg
ICBtX25ldHdvcmtQcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6R2V0TmV0
d29ya1Byb2Nlc3NTdGF0aXN0aWNzKHJlcXVlc3RJRCksIDApOwotI2Vsc2UKLSAgICBVTlVTRURf
UEFSQU0ocmVxdWVzdCk7Ci0jZW5kaWYKIH0KIAogdm9pZCBXZWJQcm9jZXNzUG9vbDo6aGFuZGxl
TWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIGNvbnN0IFN0cmluZyYgbWVzc2Fn
ZU5hbWUsIGNvbnN0IFdlYktpdDo6VXNlckRhdGEmIG1lc3NhZ2VCb2R5KQpJbmRleDogU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgJKHJldmlzaW9uIDE5MjYwMSkKKysr
IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCSh3b3JraW5nIGNvcHkp
CkBAIC0zNCw5ICszNCw5IEBACiAjaW5jbHVkZSAiR2VuZXJpY0NhbGxiYWNrLmgiCiAjaW5jbHVk
ZSAiTWVzc2FnZVJlY2VpdmVyLmgiCiAjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyTWFwLmgiCisj
aW5jbHVkZSAiTmV0d29ya1Byb2Nlc3NQcm94eS5oIgogI2luY2x1ZGUgIlBsdWdJbkF1dG9TdGFy
dFByb3ZpZGVyLmgiCiAjaW5jbHVkZSAiUGx1Z2luSW5mb1N0b3JlLmgiCi0jaW5jbHVkZSAiUHJv
Y2Vzc01vZGVsLmgiCiAjaW5jbHVkZSAiUHJvY2Vzc1Rocm90dGxlci5oIgogI2luY2x1ZGUgIlN0
YXRpc3RpY3NSZXF1ZXN0LmgiCiAjaW5jbHVkZSAiVmlzaXRlZExpbmtTdG9yZS5oIgpAQCAtNTks
MTAgKzU5LDYgQEAKICNpbmNsdWRlICJEYXRhYmFzZVByb2Nlc3NQcm94eS5oIgogI2VuZGlmCiAK
LSNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQotI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzUHJv
eHkuaCIKLSNlbmRpZgotCiAjaWYgRU5BQkxFKE1FRElBX1NFU1NJT04pCiAjaW5jbHVkZSAiV2Vi
TWVkaWFTZXNzaW9uRm9jdXNNYW5hZ2VyLmgiCiAjZW5kaWYKQEAgLTg2LDE0ICs4MiwxMiBAQCBj
bGFzcyBXZWJDb250ZXh0U3VwcGxlbWVudDsKIGNsYXNzIFdlYkljb25EYXRhYmFzZTsKIGNsYXNz
IFdlYlBhZ2VHcm91cDsKIGNsYXNzIFdlYlBhZ2VQcm94eTsKK3N0cnVjdCBOZXR3b3JrUHJvY2Vz
c0NyZWF0aW9uUGFyYW1ldGVyczsKIHN0cnVjdCBTdGF0aXN0aWNzRGF0YTsKIHN0cnVjdCBXZWJQ
cm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOwogICAgIAogdHlwZWRlZiBHZW5lcmljQ2FsbGJhY2s8
QVBJOjpEaWN0aW9uYXJ5Kj4gRGljdGlvbmFyeUNhbGxiYWNrOwogCi0jaWYgRU5BQkxFKE5FVFdP
UktfUFJPQ0VTUykKLXN0cnVjdCBOZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyczsKLSNl
bmRpZgogCiAjaWYgUExBVEZPUk0oQ09DT0EpCiBpbnQgbmV0d29ya1Byb2Nlc3NMYXRlbmN5UU9T
KCk7CkBAIC0xNDIsOSArMTM2LDYgQEAgcHVibGljOgogICAgIHZvaWQgc2V0SGlzdG9yeUNsaWVu
dChzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpMZWdhY3lDb250ZXh0SGlzdG9yeUNsaWVudD4pOwogICAg
IHZvaWQgc2V0RG93bmxvYWRDbGllbnQoc3RkOjp1bmlxdWVfcHRyPEFQSTo6RG93bmxvYWRDbGll
bnQ+KTsKIAotICAgIHZvaWQgc2V0UHJvY2Vzc01vZGVsKFByb2Nlc3NNb2RlbCk7IC8vIENhbiBv
bmx5IGJlIGNhbGxlZCB3aGVuIHRoZXJlIGFyZSBubyBwcm9jZXNzZXMgcnVubmluZy4KLSAgICBQ
cm9jZXNzTW9kZWwgcHJvY2Vzc01vZGVsKCkgY29uc3QgeyByZXR1cm4gbV9jb25maWd1cmF0aW9u
LT5wcm9jZXNzTW9kZWwoKTsgfQotCiAgICAgdm9pZCBzZXRNYXhpbXVtTnVtYmVyT2ZQcm9jZXNz
ZXModW5zaWduZWQpOyAvLyBDYW4gb25seSBiZSBjYWxsZWQgd2hlbiB0aGVyZSBhcmUgbm8gcHJv
Y2Vzc2VzIHJ1bm5pbmcuCiAgICAgdW5zaWduZWQgbWF4aW11bU51bWJlck9mUHJvY2Vzc2VzKCkg
Y29uc3QgeyByZXR1cm4gIW1fY29uZmlndXJhdGlvbi0+bWF4aW11bVByb2Nlc3NDb3VudCgpID8g
VUlOVF9NQVggOiBtX2NvbmZpZ3VyYXRpb24tPm1heGltdW1Qcm9jZXNzQ291bnQoKTsgfQogCkBA
IC0xOTMsOSArMTg0LDcgQEAgcHVibGljOgogICAgIHZvaWQgY2xlYXJQbHVnaW5DbGllbnRQb2xp
Y2llcygpOwogI2VuZGlmCiAKLSNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQogICAgIFBsYXRm
b3JtUHJvY2Vzc0lkZW50aWZpZXIgbmV0d29ya1Byb2Nlc3NJZGVudGlmaWVyKCk7Ci0jZW5kaWYK
IAogICAgIHZvaWQgc2V0QWx3YXlzVXNlc0NvbXBsZXhUZXh0Q29kZVBhdGgoYm9vbCk7CiAgICAg
dm9pZCBzZXRTaG91bGRVc2VGb250U21vb3RoaW5nKGJvb2wpOwpAQCAtMjg2LDE2ICsyNzUsMTEg
QEAgcHVibGljOgogCiAgICAgLy8gTmV0d29yayBQcm9jZXNzIE1hbmFnZW1lbnQKIAotICAgIHZv
aWQgc2V0VXNlc05ldHdvcmtQcm9jZXNzKGJvb2wpOwotICAgIGJvb2wgdXNlc05ldHdvcmtQcm9j
ZXNzKCkgY29uc3Q7Ci0KLSNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQogICAgIE5ldHdvcmtQ
cm9jZXNzUHJveHkmIGVuc3VyZU5ldHdvcmtQcm9jZXNzKCk7CiAgICAgTmV0d29ya1Byb2Nlc3NQ
cm94eSogbmV0d29ya1Byb2Nlc3MoKSB7IHJldHVybiBtX25ldHdvcmtQcm9jZXNzLmdldCgpOyB9
CiAgICAgdm9pZCBuZXR3b3JrUHJvY2Vzc0NyYXNoZWQoTmV0d29ya1Byb2Nlc3NQcm94eSopOwog
CiAgICAgdm9pZCBnZXROZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oUGFzc1JlZlB0cjxNZXNzYWdl
czo6V2ViUHJvY2Vzc1Byb3h5OjpHZXROZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb246OkRlbGF5ZWRS
ZXBseT4pOwotI2VuZGlmCiAKICNpZiBFTkFCTEUoREFUQUJBU0VfUFJPQ0VTUykKICAgICB2b2lk
IGVuc3VyZURhdGFiYXNlUHJvY2VzcygpOwpAQCAtMzc4LDkgKzM2Miw3IEBAIHByaXZhdGU6CiAg
ICAgdm9pZCByZXF1ZXN0V2ViQ29udGVudFN0YXRpc3RpY3MoU3RhdGlzdGljc1JlcXVlc3QqKTsK
ICAgICB2b2lkIHJlcXVlc3ROZXR3b3JraW5nU3RhdGlzdGljcyhTdGF0aXN0aWNzUmVxdWVzdCop
OwogCi0jaWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKICAgICB2b2lkIHBsYXRmb3JtSW5pdGlh
bGl6ZU5ldHdvcmtQcm9jZXNzKE5ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzJik7Ci0j
ZW5kaWYKIAogICAgIHZvaWQgaGFuZGxlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBjb25zdCBT
dHJpbmcmIG1lc3NhZ2VOYW1lLCBjb25zdCBVc2VyRGF0YSYgbWVzc2FnZUJvZHkpOwogICAgIHZv
aWQgaGFuZGxlU3luY2hyb25vdXNNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIGNvbnN0IFN0cmlu
ZyYgbWVzc2FnZU5hbWUsIGNvbnN0IFVzZXJEYXRhJiBtZXNzYWdlQm9keSwgVXNlckRhdGEmIHJl
dHVyblVzZXJEYXRhKTsKQEAgLTUwMCwxMSArNDgyLDkgQEAgcHJpdmF0ZToKIAogICAgIGJvb2wg
bV9wcm9jZXNzVGVybWluYXRpb25FbmFibGVkOwogCi0jaWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VT
UykKICAgICBib29sIG1fY2FuSGFuZGxlSFRUUFNTZXJ2ZXJUcnVzdEV2YWx1YXRpb247CiAgICAg
Ym9vbCBtX2RpZE5ldHdvcmtQcm9jZXNzQ3Jhc2g7CiAgICAgUmVmUHRyPE5ldHdvcmtQcm9jZXNz
UHJveHk+IG1fbmV0d29ya1Byb2Nlc3M7Ci0jZW5kaWYKIAogI2lmIEVOQUJMRShEQVRBQkFTRV9Q
Uk9DRVNTKQogICAgIFJlZlB0cjxEYXRhYmFzZVByb2Nlc3NQcm94eT4gbV9kYXRhYmFzZVByb2Nl
c3M7CkBAIC01MzksNTUgKzUxOSwxNSBAQCBwcml2YXRlOgogdGVtcGxhdGU8dHlwZW5hbWUgVD4K
IHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnNlbmRUb05ldHdvcmtpbmdQcm9jZXNzKFQmJiBtZXNzYWdl
KQogewotICAgIHN3aXRjaCAocHJvY2Vzc01vZGVsKCkpIHsKLSAgICBjYXNlIFByb2Nlc3NNb2Rl
bFNoYXJlZFNlY29uZGFyeVByb2Nlc3M6Ci0jaWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKLSAg
ICAgICAgaWYgKHVzZXNOZXR3b3JrUHJvY2VzcygpKSB7Ci0gICAgICAgICAgICBpZiAobV9uZXR3
b3JrUHJvY2VzcyAmJiBtX25ldHdvcmtQcm9jZXNzLT5jYW5TZW5kTWVzc2FnZSgpKQotICAgICAg
ICAgICAgICAgIG1fbmV0d29ya1Byb2Nlc3MtPnNlbmQoc3RkOjpmb3J3YXJkPFQ+KG1lc3NhZ2Up
LCAwKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotI2VuZGlmCi0gICAgICAgIGlm
ICghbV9wcm9jZXNzZXMuaXNFbXB0eSgpICYmIG1fcHJvY2Vzc2VzWzBdLT5jYW5TZW5kTWVzc2Fn
ZSgpKQotICAgICAgICAgICAgbV9wcm9jZXNzZXNbMF0tPnNlbmQoc3RkOjpmb3J3YXJkPFQ+KG1l
c3NhZ2UpLCAwKTsKLSAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgUHJvY2Vzc01vZGVsTXVsdGlw
bGVTZWNvbmRhcnlQcm9jZXNzZXM6Ci0jaWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKLSAgICAg
ICAgaWYgKG1fbmV0d29ya1Byb2Nlc3MgJiYgbV9uZXR3b3JrUHJvY2Vzcy0+Y2FuU2VuZE1lc3Nh
Z2UoKSkKLSAgICAgICAgICAgIG1fbmV0d29ya1Byb2Nlc3MtPnNlbmQoc3RkOjpmb3J3YXJkPFQ+
KG1lc3NhZ2UpLCAwKTsKLSAgICAgICAgcmV0dXJuOwotI2Vsc2UKLSAgICAgICAgYnJlYWs7Ci0j
ZW5kaWYKLSAgICB9Ci0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgaWYgKG1fbmV0d29y
a1Byb2Nlc3MgJiYgbV9uZXR3b3JrUHJvY2Vzcy0+Y2FuU2VuZE1lc3NhZ2UoKSkKKyAgICAgICAg
bV9uZXR3b3JrUHJvY2Vzcy0+c2VuZChzdGQ6OmZvcndhcmQ8VD4obWVzc2FnZSksIDApOwogfQog
CiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgogdm9pZCBXZWJQcm9jZXNzUG9vbDo6c2VuZFRvTmV0d29y
a2luZ1Byb2Nlc3NSZWxhdW5jaGluZ0lmTmVjZXNzYXJ5KFQmJiBtZXNzYWdlKQogewotICAgIHN3
aXRjaCAocHJvY2Vzc01vZGVsKCkpIHsKLSAgICBjYXNlIFByb2Nlc3NNb2RlbFNoYXJlZFNlY29u
ZGFyeVByb2Nlc3M6Ci0jaWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKLSAgICAgICAgaWYgKHVz
ZXNOZXR3b3JrUHJvY2VzcygpKSB7Ci0gICAgICAgICAgICBlbnN1cmVOZXR3b3JrUHJvY2Vzcygp
OwotICAgICAgICAgICAgbV9uZXR3b3JrUHJvY2Vzcy0+c2VuZChzdGQ6OmZvcndhcmQ8VD4obWVz
c2FnZSksIDApOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0jZW5kaWYKLSAgICAg
ICAgZW5zdXJlU2hhcmVkV2ViUHJvY2VzcygpOwotICAgICAgICBtX3Byb2Nlc3Nlc1swXS0+c2Vu
ZChzdGQ6OmZvcndhcmQ8VD4obWVzc2FnZSksIDApOwotICAgICAgICByZXR1cm47Ci0gICAgY2Fz
ZSBQcm9jZXNzTW9kZWxNdWx0aXBsZVNlY29uZGFyeVByb2Nlc3NlczoKLSNpZiBFTkFCTEUoTkVU
V09SS19QUk9DRVNTKQotICAgICAgICBlbnN1cmVOZXR3b3JrUHJvY2VzcygpOwotICAgICAgICBt
X25ldHdvcmtQcm9jZXNzLT5zZW5kKHN0ZDo6Zm9yd2FyZDxUPihtZXNzYWdlKSwgMCk7Ci0gICAg
ICAgIHJldHVybjsKLSNlbHNlCi0gICAgICAgIGJyZWFrOwotI2VuZGlmCi0gICAgfQotICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIGVuc3VyZU5ldHdvcmtQcm9jZXNzKCk7CisgICAgbV9u
ZXR3b3JrUHJvY2Vzcy0+c2VuZChzdGQ6OmZvcndhcmQ8VD4obWVzc2FnZSksIDApOwogfQogCiB0
ZW1wbGF0ZTx0eXBlbmFtZSBUPgpAQCAtNjE2LDE3ICs1NTYsMTIgQEAgdGVtcGxhdGU8dHlwZW5h
bWUgVD4KIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnNlbmRUb0FsbFByb2Nlc3Nlc1JlbGF1bmNoaW5n
VGhlbUlmTmVjZXNzYXJ5KGNvbnN0IFQmIG1lc3NhZ2UpCiB7CiAgICAgLy8gRklYTUUgKE11bHRp
LVdlYlByb2Nlc3MpOiBXZWJQcm9jZXNzUG9vbCBkb2Vzbid0IHRyYWNrIHByb2Nlc3NlcyB0aGF0
IGhhdmUgZXhpdGVkLCBzbyBpdCBjYW5ub3QgcmVsYXVuY2ggdGhlc2UuIFBlcmhhcHMgdGhpcyBm
dW5jdGlvbmFsaXR5IHdvbid0IGJlIG5lZWRlZCBpbiB0aGlzIG1vZGUuCi0gICAgaWYgKHByb2Nl
c3NNb2RlbCgpID09IFByb2Nlc3NNb2RlbFNoYXJlZFNlY29uZGFyeVByb2Nlc3MpCi0gICAgICAg
IGVuc3VyZVNoYXJlZFdlYlByb2Nlc3MoKTsKICAgICBzZW5kVG9BbGxQcm9jZXNzZXMobWVzc2Fn
ZSk7CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CiB2b2lkIFdlYlByb2Nlc3NQb29sOjpzZW5k
VG9PbmVQcm9jZXNzKFQmJiBtZXNzYWdlKQogewotICAgIGlmIChwcm9jZXNzTW9kZWwoKSA9PSBQ
cm9jZXNzTW9kZWxTaGFyZWRTZWNvbmRhcnlQcm9jZXNzKQotICAgICAgICBlbnN1cmVTaGFyZWRX
ZWJQcm9jZXNzKCk7Ci0KICAgICBib29sIG1lc3NhZ2VTZW50ID0gZmFsc2U7CiAgICAgc2l6ZV90
IHByb2Nlc3NDb3VudCA9IG1fcHJvY2Vzc2VzLnNpemUoKTsKICAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IHByb2Nlc3NDb3VudDsgKytpKSB7CkBAIC02MzgsNyArNTczLDcgQEAgdm9pZCBXZWJQ
cm9jZXNzUG9vbDo6c2VuZFRvT25lUHJvY2VzcyhUJgogICAgICAgICB9CiAgICAgfQogCi0gICAg
aWYgKCFtZXNzYWdlU2VudCAmJiBwcm9jZXNzTW9kZWwoKSA9PSBQcm9jZXNzTW9kZWxNdWx0aXBs
ZVNlY29uZGFyeVByb2Nlc3NlcykgeworICAgIGlmICghbWVzc2FnZVNlbnQpIHsKICAgICAgICAg
d2FybUluaXRpYWxQcm9jZXNzKCk7CiAgICAgICAgIFJlZlB0cjxXZWJQcm9jZXNzUHJveHk+IHBy
b2Nlc3MgPSBtX3Byb2Nlc3Nlcy5sYXN0KCk7CiAgICAgICAgIGlmIChwcm9jZXNzLT5jYW5TZW5k
TWVzc2FnZSgpKQpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94
eS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQ
cm94eS5jcHAJKHJldmlzaW9uIDE5MjYwMSkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9X
ZWJQcm9jZXNzUHJveHkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNTYsNyArMjU2LDcgQEAgdm9p
ZCBXZWJQcm9jZXNzUHJveHk6OnJlbW92ZVdlYlBhZ2UodWludAogCiAgICAgLy8gSWYgdGhpcyB3
YXMgdGhlIGxhc3QgV2ViUGFnZSBvcGVuIGluIHRoYXQgd2ViIHByb2Nlc3MsIGFuZCB3ZSBoYXZl
IG5vIG90aGVyIHJlYXNvbiB0byBrZWVwIGl0IGFsaXZlLCBsZXQgaXQgZ28uCiAgICAgLy8gV2Ug
b25seSBhbGxvdyB0aGlzIHdoZW4gdXNpbmcgYSBuZXR3b3JrIHByb2Nlc3MsIGFzIG90aGVyd2lz
ZSB0aGUgV2ViUHJvY2VzcyBuZWVkcyB0byBwcmVzZXJ2ZSBpdHMgc2Vzc2lvbiBzdGF0ZS4KLSAg
ICBpZiAoIW1fcHJvY2Vzc1Bvb2wtPnVzZXNOZXR3b3JrUHJvY2VzcygpIHx8IHN0YXRlKCkgPT0g
U3RhdGU6OlRlcm1pbmF0ZWQgfHwgIWNhblRlcm1pbmF0ZUNoaWxkUHJvY2VzcygpKQorICAgIGlm
IChzdGF0ZSgpID09IFN0YXRlOjpUZXJtaW5hdGVkIHx8ICFjYW5UZXJtaW5hdGVDaGlsZFByb2Nl
c3MoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgc2h1dERvd24oKTsKQEAgLTQyNywxMiArNDI3
LDEwIEBAIHZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpnZXRQbHVnaW5Qcm9jZXNzQ28KIH0KICNlbmRp
ZgogCi0jaWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKIHZvaWQgV2ViUHJvY2Vzc1Byb3h5Ojpn
ZXROZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oUGFzc1JlZlB0cjxNZXNzYWdlczo6V2ViUHJvY2Vz
c1Byb3h5OjpHZXROZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb246OkRlbGF5ZWRSZXBseT4gcmVwbHkp
CiB7CiAgICAgbV9wcm9jZXNzUG9vbC0+Z2V0TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKHJlcGx5
KTsKIH0KLSNlbmRpZiAvLyBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQogCiAjaWYgRU5BQkxFKERB
VEFCQVNFX1BST0NFU1MpCiB2b2lkIFdlYlByb2Nlc3NQcm94eTo6Z2V0RGF0YWJhc2VQcm9jZXNz
Q29ubmVjdGlvbihQYXNzUmVmUHRyPE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6OkdldERhdGFi
YXNlUHJvY2Vzc0Nvbm5lY3Rpb246OkRlbGF5ZWRSZXBseT4gcmVwbHkpCkBAIC03MDIsMTggKzcw
MCw2IEBAIHZvaWQgV2ViUHJvY2Vzc1Byb3h5Ojp1cGRhdGVUZXh0Q2hlY2tlclMKICAgICAgICAg
c2VuZChNZXNzYWdlczo6V2ViUHJvY2Vzczo6U2V0VGV4dENoZWNrZXJTdGF0ZShUZXh0Q2hlY2tl
cjo6c3RhdGUoKSksIDApOwogfQogCi1Eb3dubG9hZFByb3h5KiBXZWJQcm9jZXNzUHJveHk6OmNy
ZWF0ZURvd25sb2FkUHJveHkoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQotewotI2lm
IEVOQUJMRShORVRXT1JLX1BST0NFU1MpCi0gICAgQVNTRVJUKCFtX3Byb2Nlc3NQb29sLT51c2Vz
TmV0d29ya1Byb2Nlc3MoKSk7Ci0jZW5kaWYKLQotICAgIGlmICghbV9kb3dubG9hZFByb3h5TWFw
KQotICAgICAgICBtX2Rvd25sb2FkUHJveHlNYXAgPSBzdGQ6Om1ha2VfdW5pcXVlPERvd25sb2Fk
UHJveHlNYXA+KHRoaXMpOwotCi0gICAgcmV0dXJuIG1fZG93bmxvYWRQcm94eU1hcC0+Y3JlYXRl
RG93bmxvYWRQcm94eShtX3Byb2Nlc3NQb29sLCByZXF1ZXN0KTsKLX0KLQogdm9pZCBXZWJQcm9j
ZXNzUHJveHk6OmRpZFNhdmVUb1BhZ2VDYWNoZSgpCiB7CiAgICAgbV9wcm9jZXNzUG9vbC0+cHJv
Y2Vzc0RpZENhY2hlUGFnZSh0aGlzKTsKQEAgLTk0Nyw3ICs5MzMsNiBAQCB2b2lkIFdlYlByb2Nl
c3NQcm94eTo6ZGlkQ2FuY2VsUHJvY2Vzc1N1CiAgICAgbV90aHJvdHRsZXIuZGlkQ2FuY2VsUHJv
Y2Vzc1N1c3BlbnNpb24oKTsKIH0KIAotI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCiB2b2lk
IFdlYlByb2Nlc3NQcm94eTo6cmVpbnN0YXRlTmV0d29ya1Byb2Nlc3NBc3NlcnRpb25TdGF0ZShO
ZXR3b3JrUHJvY2Vzc1Byb3h5JiBuZXdOZXR3b3JrUHJvY2Vzc1Byb3h5KQogewogI2lmIFBMQVRG
T1JNKElPUykKQEAgLTk2MiwxMSArOTQ3LDEwIEBAIHZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpyZWlu
c3RhdGVOZXR3b3JrUHIKICAgICBVTlVTRURfUEFSQU0obmV3TmV0d29ya1Byb2Nlc3NQcm94eSk7
CiAjZW5kaWYKIH0KLSNlbmRpZgogCiB2b2lkIFdlYlByb2Nlc3NQcm94eTo6ZGlkU2V0QXNzZXJ0
aW9uU3RhdGUoQXNzZXJ0aW9uU3RhdGUgc3RhdGUpCiB7Ci0jaWYgUExBVEZPUk0oSU9TKSAmJiBF
TkFCTEUoTkVUV09SS19QUk9DRVNTKQorI2lmIFBMQVRGT1JNKElPUykKICAgICBBU1NFUlQoIW1f
YmFja2dyb3VuZFRva2VuRm9yTmV0d29ya1Byb2Nlc3MgfHwgIW1fZm9yZWdyb3VuZFRva2VuRm9y
TmV0d29ya1Byb2Nlc3MpOwogCiAgICAgc3dpdGNoIChzdGF0ZSkgewpAQCAtOTc4LDE0ICs5NjIs
MTIgQEAgdm9pZCBXZWJQcm9jZXNzUHJveHk6OmRpZFNldEFzc2VydGlvblN0YQogICAgICAgICBi
cmVhazsKIAogICAgIGNhc2UgQXNzZXJ0aW9uU3RhdGU6OkJhY2tncm91bmQ6Ci0gICAgICAgIGlm
IChwcm9jZXNzUG9vbCgpLnVzZXNOZXR3b3JrUHJvY2VzcygpKQotICAgICAgICAgICAgbV9iYWNr
Z3JvdW5kVG9rZW5Gb3JOZXR3b3JrUHJvY2VzcyA9IHByb2Nlc3NQb29sKCkuZW5zdXJlTmV0d29y
a1Byb2Nlc3MoKS50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpOworICAgICAg
ICBtX2JhY2tncm91bmRUb2tlbkZvck5ldHdvcmtQcm9jZXNzID0gcHJvY2Vzc1Bvb2woKS5lbnN1
cmVOZXR3b3JrUHJvY2VzcygpLnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCk7
CiAgICAgICAgIG1fZm9yZWdyb3VuZFRva2VuRm9yTmV0d29ya1Byb2Nlc3MgPSBudWxscHRyOwog
ICAgICAgICBicmVhazsKICAgICAKICAgICBjYXNlIEFzc2VydGlvblN0YXRlOjpGb3JlZ3JvdW5k
OgotICAgICAgICBpZiAocHJvY2Vzc1Bvb2woKS51c2VzTmV0d29ya1Byb2Nlc3MoKSkKLSAgICAg
ICAgICAgIG1fZm9yZWdyb3VuZFRva2VuRm9yTmV0d29ya1Byb2Nlc3MgPSBwcm9jZXNzUG9vbCgp
LmVuc3VyZU5ldHdvcmtQcm9jZXNzKCkudGhyb3R0bGVyKCkuZm9yZWdyb3VuZEFjdGl2aXR5VG9r
ZW4oKTsKKyAgICAgICAgbV9mb3JlZ3JvdW5kVG9rZW5Gb3JOZXR3b3JrUHJvY2VzcyA9IHByb2Nl
c3NQb29sKCkuZW5zdXJlTmV0d29ya1Byb2Nlc3MoKS50aHJvdHRsZXIoKS5mb3JlZ3JvdW5kQWN0
aXZpdHlUb2tlbigpOwogICAgICAgICBtX2JhY2tncm91bmRUb2tlbkZvck5ldHdvcmtQcm9jZXNz
ID0gbnVsbHB0cjsKICAgICAgICAgZm9yIChhdXRvJiBwYWdlIDogbV9wYWdlTWFwLnZhbHVlcygp
KQogICAgICAgICAgICAgcGFnZS0+cHJvY2Vzc1dpbGxCZWNvbWVGb3JlZ3JvdW5kKCk7CkluZGV4
OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oCShyZXZpc2lvbiAx
OTI2MDEpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmgJKHdv
cmtpbmcgY29weSkKQEAgLTE1Miw5ICsxNTIsNyBAQCBwdWJsaWM6CiAKICAgICBQcm9jZXNzVGhy
b3R0bGVyJiB0aHJvdHRsZXIoKSB7IHJldHVybiBtX3Rocm90dGxlcjsgfQogCi0jaWYgRU5BQkxF
KE5FVFdPUktfUFJPQ0VTUykKICAgICB2b2lkIHJlaW5zdGF0ZU5ldHdvcmtQcm9jZXNzQXNzZXJ0
aW9uU3RhdGUoTmV0d29ya1Byb2Nlc3NQcm94eSYpOwotI2VuZGlmCiAKIHByaXZhdGU6CiAgICAg
ZXhwbGljaXQgV2ViUHJvY2Vzc1Byb3h5KFdlYlByb2Nlc3NQb29sJik7CkBAIC0xODYsOSArMTg0
LDcgQEAgcHJpdmF0ZToKICNpZiBFTkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQSSkKICAgICB2b2lk
IGdldFBsdWdpblByb2Nlc3NDb25uZWN0aW9uKHVpbnQ2NF90IHBsdWdpblByb2Nlc3NUb2tlbiwg
UGFzc1JlZlB0cjxNZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpHZXRQbHVnaW5Qcm9jZXNzQ29u
bmVjdGlvbjo6RGVsYXllZFJlcGx5Pik7CiAjZW5kaWYKLSNpZiBFTkFCTEUoTkVUV09SS19QUk9D
RVNTKQogICAgIHZvaWQgZ2V0TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKFBhc3NSZWZQdHI8TWVz
c2FnZXM6OldlYlByb2Nlc3NQcm94eTo6R2V0TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uOjpEZWxh
eWVkUmVwbHk+KTsKLSNlbmRpZgogI2lmIEVOQUJMRShEQVRBQkFTRV9QUk9DRVNTKQogICAgIHZv
aWQgZ2V0RGF0YWJhc2VQcm9jZXNzQ29ubmVjdGlvbihQYXNzUmVmUHRyPE1lc3NhZ2VzOjpXZWJQ
cm9jZXNzUHJveHk6OkdldERhdGFiYXNlUHJvY2Vzc0Nvbm5lY3Rpb246OkRlbGF5ZWRSZXBseT4p
OwogI2VuZGlmCkBAIC0yNTMsNyArMjQ5LDcgQEAgcHJpdmF0ZToKICAgICBpbnQgbV9udW1iZXJP
ZlRpbWVzU3VkZGVuVGVybWluYXRpb25XYXNEaXNhYmxlZDsKICAgICBQcm9jZXNzVGhyb3R0bGVy
IG1fdGhyb3R0bGVyOwogICAgIFByb2Nlc3NUaHJvdHRsZXI6OkJhY2tncm91bmRBY3Rpdml0eVRv
a2VuIG1fdG9rZW5Gb3JIb2xkaW5nTG9ja2VkRmlsZXM7Ci0jaWYgUExBVEZPUk0oSU9TKSAmJiBF
TkFCTEUoTkVUV09SS19QUk9DRVNTKQorI2lmIFBMQVRGT1JNKElPUykKICAgICBQcm9jZXNzVGhy
b3R0bGVyOjpGb3JlZ3JvdW5kQWN0aXZpdHlUb2tlbiBtX2ZvcmVncm91bmRUb2tlbkZvck5ldHdv
cmtQcm9jZXNzOwogICAgIFByb2Nlc3NUaHJvdHRsZXI6OkJhY2tncm91bmRBY3Rpdml0eVRva2Vu
IG1fYmFja2dyb3VuZFRva2VuRm9yTmV0d29ya1Byb2Nlc3M7CiAjZW5kaWYKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkubWVzc2FnZXMuaW4KPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5tZXNzYWdlcy5p
bgkocmV2aXNpb24gMTkyNjAxKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nl
c3NQcm94eS5tZXNzYWdlcy5pbgkod29ya2luZyBjb3B5KQpAQCAtMzgsOSArMzgsNyBAQCBtZXNz
YWdlcyAtPiBXZWJQcm9jZXNzUHJveHkgTGVnYWN5UmVjZWl2CiAgICAgR2V0UGx1Z2lucyhib29s
IHJlZnJlc2gpIC0+IChWZWN0b3I8V2ViQ29yZTo6UGx1Z2luSW5mbz4gcGx1Z2lucywgVmVjdG9y
PFdlYkNvcmU6OlBsdWdpbkluZm8+IGFwcGxpY2F0aW9uUGx1Z2lucykKICAgICBHZXRQbHVnaW5Q
cm9jZXNzQ29ubmVjdGlvbih1aW50NjRfdCBwbHVnaW5Qcm9jZXNzVG9rZW4pIC0+IChJUEM6OkF0
dGFjaG1lbnQgY29ubmVjdGlvbkhhbmRsZSwgYm9vbCBzdXBwb3J0c0FzeW5jaHJvbm91c0luaXRp
YWxpemF0aW9uKSBEZWxheWVkCiAjZW5kaWYKLSNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQog
ICAgIEdldE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpIC0+IChJUEM6OkF0dGFjaG1lbnQgY29u
bmVjdGlvbkhhbmRsZSkgRGVsYXllZAotI2VuZGlmCiAjaWYgRU5BQkxFKERBVEFCQVNFX1BST0NF
U1MpCiAgICAgR2V0RGF0YWJhc2VQcm9jZXNzQ29ubmVjdGlvbigpIC0+IChJUEM6OkF0dGFjaG1l
bnQgY29ubmVjdGlvbkhhbmRsZSkgRGVsYXllZAogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL0FQSVByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9BUElQcm9jZXNzUG9vbENvbmZpZ3Vy
YXRpb24uY3BwCShyZXZpc2lvbiAxOTI2MDEpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL0FQSVByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQx
LDcgKzQxLDYgQEAgUmVmPFByb2Nlc3NQb29sQ29uZmlndXJhdGlvbj4gUHJvY2Vzc1BvbwogICAg
IGF1dG8gY29uZmlndXJhdGlvbiA9IFByb2Nlc3NQb29sQ29uZmlndXJhdGlvbjo6Y3JlYXRlKCk7
CiAKICAgICBjb25maWd1cmF0aW9uLT5tX3Nob3VsZEhhdmVMZWdhY3lEYXRhU3RvcmUgPSB0cnVl
OwotICAgIGNvbmZpZ3VyYXRpb24tPm1fcHJvY2Vzc01vZGVsID0gV2ViS2l0OjpQcm9jZXNzTW9k
ZWxTaGFyZWRTZWNvbmRhcnlQcm9jZXNzOwogICAgIGNvbmZpZ3VyYXRpb24tPm1fdXNlTmV0d29y
a1Byb2Nlc3MgPSBmYWxzZTsKICAgICBjb25maWd1cmF0aW9uLT5tX2NhY2hlTW9kZWwgPSBXZWJL
aXQ6OkNhY2hlTW9kZWxEb2N1bWVudFZpZXdlcjsKIApAQCAtNzQsNyArNzMsNiBAQCBSZWY8UHJv
Y2Vzc1Bvb2xDb25maWd1cmF0aW9uPiBQcm9jZXNzUG9vCiAgICAgYXV0byBjb3B5ID0gdGhpcy0+
Y3JlYXRlKCk7CiAKICAgICBjb3B5LT5tX3Nob3VsZEhhdmVMZWdhY3lEYXRhU3RvcmUgPSB0aGlz
LT5tX3Nob3VsZEhhdmVMZWdhY3lEYXRhU3RvcmU7Ci0gICAgY29weS0+bV9wcm9jZXNzTW9kZWwg
PSB0aGlzLT5tX3Byb2Nlc3NNb2RlbDsKICAgICBjb3B5LT5tX3VzZU5ldHdvcmtQcm9jZXNzID0g
dGhpcy0+bV91c2VOZXR3b3JrUHJvY2VzczsKICAgICBjb3B5LT5tX21heGltdW1Qcm9jZXNzQ291
bnQgPSB0aGlzLT5tX21heGltdW1Qcm9jZXNzQ291bnQ7CiAgICAgY29weS0+bV9jYWNoZU1vZGVs
ID0gdGhpcy0+bV9jYWNoZU1vZGVsOwpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9BUElQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL0FQSVByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5oCShyZXZpc2lv
biAxOTI2MDEpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0FQSVByb2Nlc3NQb29s
Q29uZmlndXJhdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw3ICsyOCw2IEBACiAKICNpbmNs
dWRlICJBUElPYmplY3QuaCIKICNpbmNsdWRlICJDYWNoZU1vZGVsLmgiCi0jaW5jbHVkZSAiUHJv
Y2Vzc01vZGVsLmgiCiAjaW5jbHVkZSA8d3RmL1JlZi5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3Iu
aD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KQEAgLTQ4LDkgKzQ3LDYgQEAgcHVi
bGljOgogICAgIGJvb2wgc2hvdWxkSGF2ZUxlZ2FjeURhdGFTdG9yZSgpIGNvbnN0IHsgcmV0dXJu
IG1fc2hvdWxkSGF2ZUxlZ2FjeURhdGFTdG9yZTsgfQogICAgIHZvaWQgc2V0U2hvdWxkSGF2ZUxl
Z2FjeURhdGFTdG9yZShib29sIHNob3VsZEhhdmVMZWdhY3lEYXRhU3RvcmUpIHsgbV9zaG91bGRI
YXZlTGVnYWN5RGF0YVN0b3JlID0gc2hvdWxkSGF2ZUxlZ2FjeURhdGFTdG9yZTsgfQogCi0gICAg
V2ViS2l0OjpQcm9jZXNzTW9kZWwgcHJvY2Vzc01vZGVsKCkgY29uc3QgeyByZXR1cm4gbV9wcm9j
ZXNzTW9kZWw7IH0KLSAgICB2b2lkIHNldFByb2Nlc3NNb2RlbChXZWJLaXQ6OlByb2Nlc3NNb2Rl
bCBwcm9jZXNzTW9kZWwpIHsgbV9wcm9jZXNzTW9kZWwgPSBwcm9jZXNzTW9kZWw7IH0gCi0KICAg
ICBib29sIHVzZU5ldHdvcmtQcm9jZXNzKCkgY29uc3QgeyByZXR1cm4gbV91c2VOZXR3b3JrUHJv
Y2VzczsgfQogICAgIHZvaWQgc2V0VXNlTmV0d29ya1Byb2Nlc3MoYm9vbCB1c2VOZXR3b3JrUHJv
Y2VzcykgeyBtX3VzZU5ldHdvcmtQcm9jZXNzID0gdXNlTmV0d29ya1Byb2Nlc3M7IH0gCiAKQEAg
LTk2LDcgKzkyLDYgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBib29sIG1fc2hvdWxkSGF2ZUxl
Z2FjeURhdGFTdG9yZSB7IGZhbHNlIH07CiAKLSAgICBXZWJLaXQ6OlByb2Nlc3NNb2RlbCBtX3By
b2Nlc3NNb2RlbCB7IFdlYktpdDo6UHJvY2Vzc01vZGVsTXVsdGlwbGVTZWNvbmRhcnlQcm9jZXNz
ZXMgfTsKICAgICBib29sIG1fdXNlTmV0d29ya1Byb2Nlc3MgeyB0cnVlIH07CiAgICAgdW5zaWdu
ZWQgbV9tYXhpbXVtUHJvY2Vzc0NvdW50IHsgMCB9OwogICAgIFdlYktpdDo6Q2FjaGVNb2RlbCBt
X2NhY2hlTW9kZWwgeyBXZWJLaXQ6OkNhY2hlTW9kZWxQcmltYXJ5V2ViQnJvd3NlciB9OwpJbmRl
eDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9BUElTZXNzaW9uLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0FQSVNlc3Npb24uY3BwCShyZXZpc2lv
biAxOTI2MDEpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0FQSVNlc3Npb24uY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0yOCwxMCArMjgsOCBAQAogCiAjaW5jbHVkZSA8d3RmL1J1bkxv
b3AuaD4KIAotI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCiAjaW5jbHVkZSAiTmV0d29ya1By
b2Nlc3NNZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NQb29sLmgiCi0jZW5kaWYKIAog
bmFtZXNwYWNlIEFQSSB7CiAKQEAgLTgwLDEyICs3OCwxMCBAQCBXZWJDb3JlOjpTZXNzaW9uSUQg
U2Vzc2lvbjo6Z2V0SUQoKSBjb25zCiAKIFNlc3Npb246On5TZXNzaW9uKCkKIHsKLSNpZiBFTkFC
TEUoTkVUV09SS19QUk9DRVNTKQogICAgIGlmIChtX3Nlc3Npb25JRC5pc0VwaGVtZXJhbCgpKSB7
CiAgICAgICAgIGZvciAoYXV0byYgcHJvY2Vzc1Bvb2wgOiBXZWJLaXQ6OldlYlByb2Nlc3NQb29s
OjphbGxQcm9jZXNzUG9vbHMoKSkKICAgICAgICAgICAgIHByb2Nlc3NQb29sLT5zZW5kVG9OZXR3
b3JraW5nUHJvY2VzcyhNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OkRlc3Ryb3lQcml2YXRlQnJv
d3NpbmdTZXNzaW9uKG1fc2Vzc2lvbklEKSk7CiAgICAgfQotI2VuZGlmCiB9CiAKIH0gLy8gbmFt
ZXNwYWNlIEFQSQpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLQVBJQ2Fz
dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0FQSUNh
c3QuaAkocmV2aXNpb24gMTkyNjAxKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9D
L1dLQVBJQ2FzdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw3ICszMiw2IEBACiAjaW5jbHVkZSAi
SFRUUENvb2tpZUFjY2VwdFBvbGljeS5oIgogI2luY2x1ZGUgIkluamVjdGVkQnVuZGxlSGl0VGVz
dFJlc3VsdE1lZGlhVHlwZS5oIgogI2luY2x1ZGUgIlBsdWdpbk1vZHVsZUluZm8uaCIKLSNpbmNs
dWRlICJQcm9jZXNzTW9kZWwuaCIKICNpbmNsdWRlICJSZXNvdXJjZUNhY2hlc1RvQ2xlYXIuaCIK
ICNpbmNsdWRlICJXS0J1bmRsZUhpdFRlc3RSZXN1bHQuaCIKICNpbmNsdWRlICJXS0NvbnRleHQu
aCIKQEAgLTIzMCwzMSArMjI5LDYgQEAgaW5saW5lIFdLQ2FjaGVNb2RlbCB0b0FQSShDYWNoZU1v
ZGVsIGNhYwogICAgIHJldHVybiBrV0tDYWNoZU1vZGVsRG9jdW1lbnRWaWV3ZXI7CiB9CiAKLWlu
bGluZSBQcm9jZXNzTW9kZWwgdG9Qcm9jZXNzTW9kZWwoV0tQcm9jZXNzTW9kZWwgd2tQcm9jZXNz
TW9kZWwpCi17Ci0gICAgc3dpdGNoICh3a1Byb2Nlc3NNb2RlbCkgewotICAgIGNhc2Uga1dLUHJv
Y2Vzc01vZGVsU2hhcmVkU2Vjb25kYXJ5UHJvY2VzczoKLSAgICAgICAgcmV0dXJuIFByb2Nlc3NN
b2RlbFNoYXJlZFNlY29uZGFyeVByb2Nlc3M7Ci0gICAgY2FzZSBrV0tQcm9jZXNzTW9kZWxNdWx0
aXBsZVNlY29uZGFyeVByb2Nlc3NlczoKLSAgICAgICAgcmV0dXJuIFByb2Nlc3NNb2RlbE11bHRp
cGxlU2Vjb25kYXJ5UHJvY2Vzc2VzOwotICAgIH0KLQotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OwotICAgIHJldHVybiBQcm9jZXNzTW9kZWxTaGFyZWRTZWNvbmRhcnlQcm9jZXNzOwotfQotCi1p
bmxpbmUgV0tQcm9jZXNzTW9kZWwgdG9BUEkoUHJvY2Vzc01vZGVsIHByb2Nlc3NNb2RlbCkKLXsK
LSAgICBzd2l0Y2ggKHByb2Nlc3NNb2RlbCkgewotICAgIGNhc2UgUHJvY2Vzc01vZGVsU2hhcmVk
U2Vjb25kYXJ5UHJvY2VzczoKLSAgICAgICAgcmV0dXJuIGtXS1Byb2Nlc3NNb2RlbFNoYXJlZFNl
Y29uZGFyeVByb2Nlc3M7Ci0gICAgY2FzZSBQcm9jZXNzTW9kZWxNdWx0aXBsZVNlY29uZGFyeVBy
b2Nlc3NlczoKLSAgICAgICAgcmV0dXJuIGtXS1Byb2Nlc3NNb2RlbE11bHRpcGxlU2Vjb25kYXJ5
UHJvY2Vzc2VzOwotICAgIH0KLSAgICAKLSAgICByZXR1cm4ga1dLUHJvY2Vzc01vZGVsU2hhcmVk
U2Vjb25kYXJ5UHJvY2VzczsKLX0KLQogaW5saW5lIEZvbnRTbW9vdGhpbmdMZXZlbCB0b0ZvbnRT
bW9vdGhpbmdMZXZlbChXS0ZvbnRTbW9vdGhpbmdMZXZlbCB3a0xldmVsKQogewogICAgIHN3aXRj
aCAod2tMZXZlbCkgewpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLQ29u
dGV4dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dL
Q29udGV4dC5jcHAJKHJldmlzaW9uIDE5MjYwMSkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvQy9XS0NvbnRleHQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMjksMTYgKzMyOSw2IEBA
IFdLQ2FjaGVNb2RlbCBXS0NvbnRleHRHZXRDYWNoZU1vZGVsKFdLQ28KICAgICByZXR1cm4gdG9B
UEkodG9JbXBsKGNvbnRleHRSZWYpLT5jYWNoZU1vZGVsKCkpOwogfQogCi12b2lkIFdLQ29udGV4
dFNldFByb2Nlc3NNb2RlbChXS0NvbnRleHRSZWYgY29udGV4dFJlZiwgV0tQcm9jZXNzTW9kZWwg
cHJvY2Vzc01vZGVsKQotewotICAgIHRvSW1wbChjb250ZXh0UmVmKS0+c2V0UHJvY2Vzc01vZGVs
KHRvUHJvY2Vzc01vZGVsKHByb2Nlc3NNb2RlbCkpOwotfQotCi1XS1Byb2Nlc3NNb2RlbCBXS0Nv
bnRleHRHZXRQcm9jZXNzTW9kZWwoV0tDb250ZXh0UmVmIGNvbnRleHRSZWYpCi17Ci0gICAgcmV0
dXJuIHRvQVBJKHRvSW1wbChjb250ZXh0UmVmKS0+cHJvY2Vzc01vZGVsKCkpOwotfQotCiB2b2lk
IFdLQ29udGV4dFNldE1heGltdW1OdW1iZXJPZlByb2Nlc3NlcyhXS0NvbnRleHRSZWYgY29udGV4
dFJlZiwgdW5zaWduZWQgbnVtYmVyT2ZQcm9jZXNzZXMpCiB7CiAgICAgdG9JbXBsKGNvbnRleHRS
ZWYpLT5zZXRNYXhpbXVtTnVtYmVyT2ZQcm9jZXNzZXMobnVtYmVyT2ZQcm9jZXNzZXMpOwpAQCAt
NTU0LDExICs1NDQsNiBAQCB2b2lkIFdLQ29udGV4dFNldEphdmFTY3JpcHRHYXJiYWdlQ29sbGVj
CiAgICAgdG9JbXBsKGNvbnRleHRSZWYpLT5zZXRKYXZhU2NyaXB0R2FyYmFnZUNvbGxlY3RvclRp
bWVyRW5hYmxlZChlbmFibGUpOwogfQogCi12b2lkIFdLQ29udGV4dFNldFVzZXNOZXR3b3JrUHJv
Y2VzcyhXS0NvbnRleHRSZWYgY29udGV4dFJlZiwgYm9vbCB1c2VzTmV0d29ya1Byb2Nlc3MpCi17
Ci0gICAgdG9JbXBsKGNvbnRleHRSZWYpLT5zZXRVc2VzTmV0d29ya1Byb2Nlc3ModXNlc05ldHdv
cmtQcm9jZXNzKTsKLX0KLQogdm9pZCBXS0NvbnRleHRVc2VUZXN0aW5nTmV0d29ya1Nlc3Npb24o
V0tDb250ZXh0UmVmIGNvbnRleHQpCiB7CiAgICAgdG9JbXBsKGNvbnRleHQpLT51c2VUZXN0aW5n
TmV0d29ya1Nlc3Npb24oKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9X
S0NvbnRleHQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0Mv
V0tDb250ZXh0LmgJKHJldmlzaW9uIDE5MjYwMSkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvQy9XS0NvbnRleHQuaAkod29ya2luZyBjb3B5KQpAQCAtNzYsMTIgKzc2LDYgQEAgdHlw
ZWRlZiBzdHJ1Y3QgV0tDb250ZXh0Q2xpZW50VjEgewogfSBXS0NvbnRleHRDbGllbnRWMTsKIAog
ZW51bSB7Ci0gICAga1dLUHJvY2Vzc01vZGVsU2hhcmVkU2Vjb25kYXJ5UHJvY2VzcyA9IDAsCi0g
ICAga1dLUHJvY2Vzc01vZGVsTXVsdGlwbGVTZWNvbmRhcnlQcm9jZXNzZXMgPSAxCi19OwotdHlw
ZWRlZiB1aW50MzJfdCBXS1Byb2Nlc3NNb2RlbDsKLQotZW51bSB7CiAgICAga1dLU3RhdGlzdGlj
c09wdGlvbnNXZWJDb250ZW50ID0gMSA8PCAwLAogICAgIGtXS1N0YXRpc3RpY3NPcHRpb25zTmV0
d29ya2luZyA9IDEgPDwgMQogfTsKQEAgLTExMSw5ICsxMDUsNiBAQCBXS19FWFBPUlQgdm9pZCBX
S0NvbnRleHRDbGVhclZpc2l0ZWRMaW5rCiBXS19FWFBPUlQgdm9pZCBXS0NvbnRleHRTZXRDYWNo
ZU1vZGVsKFdLQ29udGV4dFJlZiBjb250ZXh0LCBXS0NhY2hlTW9kZWwgY2FjaGVNb2RlbCk7CiBX
S19FWFBPUlQgV0tDYWNoZU1vZGVsIFdLQ29udGV4dEdldENhY2hlTW9kZWwoV0tDb250ZXh0UmVm
IGNvbnRleHQpOwogCi1XS19FWFBPUlQgdm9pZCBXS0NvbnRleHRTZXRQcm9jZXNzTW9kZWwoV0tD
b250ZXh0UmVmIGNvbnRleHQsIFdLUHJvY2Vzc01vZGVsIHByb2Nlc3NNb2RlbCk7Ci1XS19FWFBP
UlQgV0tQcm9jZXNzTW9kZWwgV0tDb250ZXh0R2V0UHJvY2Vzc01vZGVsKFdLQ29udGV4dFJlZiBj
b250ZXh0KTsKLQogV0tfRVhQT1JUIHZvaWQgV0tDb250ZXh0U2V0TWF4aW11bU51bWJlck9mUHJv
Y2Vzc2VzKFdLQ29udGV4dFJlZiBjb250ZXh0LCB1bnNpZ25lZCBudW1iZXJPZlByb2Nlc3Nlcyk7
CiBXS19FWFBPUlQgdW5zaWduZWQgV0tDb250ZXh0R2V0TWF4aW11bU51bWJlck9mUHJvY2Vzc2Vz
KFdLQ29udGV4dFJlZiBjb250ZXh0KTsKIApJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9DL1dLQ29udGV4dFByaXZhdGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0UHJpdmF0ZS5oCShyZXZpc2lvbiAxOTI2MDEpCisrKyBT
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0UHJpdmF0ZS5oCSh3b3JraW5n
IGNvcHkpCkBAIC03NSwxMCArNzUsNiBAQCBXS19FWFBPUlQgdm9pZCBXS0NvbnRleHRTZXRIVFRQ
UGlwZWxpbmluCiAKIFdLX0VYUE9SVCB2b2lkIFdLQ29udGV4dFdhcm1Jbml0aWFsUHJvY2VzcyhX
S0NvbnRleHRSZWYgY29udGV4dCk7CiAKLS8vIEZJWE1FOiBUaGlzIGZ1bmN0aW9uIGlzIHRlbXBv
cmFyeSBhbmQgdXNlZnVsIGR1cmluZyB0aGUgZGV2ZWxvcG1lbnQgb2YgdGhlIE5ldHdvcmtQcm9j
ZXNzIGZlYXR1cmUuCi0vLyBBdCBzb21lIHBvaW50IGl0IHNob3VsZCBiZSByZW1vdmVkLgotV0tf
RVhQT1JUIHZvaWQgV0tDb250ZXh0U2V0VXNlc05ldHdvcmtQcm9jZXNzKFdLQ29udGV4dFJlZiBj
b250ZXh0LCBib29sIHVzZXNOZXR3b3JrUHJvY2Vzcyk7Ci0KIC8vIFRlc3Qgb25seS4gU2hvdWxk
IGJlIGNhbGxlZCBiZWZvcmUgYW55IHNlY29uZGFyeSBwcm9jZXNzZXMgYXJlIHN0YXJ0ZWQuCiBX
S19FWFBPUlQgdm9pZCBXS0NvbnRleHRVc2VUZXN0aW5nTmV0d29ya1Nlc3Npb24oV0tDb250ZXh0
UmVmIGNvbnRleHQpOwogCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvbWFj
L1dLQ29udGV4dFByaXZhdGVNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9DL21hYy9XS0NvbnRleHRQcml2YXRlTWFjLm1tCShyZXZpc2lvbiAxOTI2MDEp
CisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvbWFjL1dLQ29udGV4dFByaXZhdGVN
YWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTE2NiwxMCArMTY2LDUgQEAgYm9vbCBXS0NvbnRleHRT
aG91bGRTdWdnZXN0QmxvY2tXZWJHTCgpCiAKIHBpZF90IFdLQ29udGV4dEdldE5ldHdvcmtQcm9j
ZXNzSWRlbnRpZmllcihXS0NvbnRleHRSZWYgY29udGV4dFJlZikKIHsKLSNpZiBFTkFCTEUoTkVU
V09SS19QUk9DRVNTKQogICAgIHJldHVybiB0b0ltcGwoY29udGV4dFJlZiktPm5ldHdvcmtQcm9j
ZXNzSWRlbnRpZmllcigpOwotI2Vsc2UKLSAgICBVTlVTRURfUEFSQU0oY29udGV4dFJlZik7Ci0g
ICAgcmV0dXJuIDA7Ci0jZW5kaWYKIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvQ29jb2EvV0tQcm9jZXNzR3JvdXAubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NHcm91cC5tbQkocmV2aXNpb24gMTkyNjAxKQor
KysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NHcm91cC5tbQko
d29ya2luZyBjb3B5KQpAQCAtMTkyLDEwICsxOTIsNiBAQCAtIChpZClpbml0V2l0aEluamVjdGVk
QnVuZGxlVVJMOihOU1VSTCAqCiAKICAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBBUEk6OlByb2Nl
c3NQb29sQ29uZmlndXJhdGlvbjo6Y3JlYXRlV2l0aExlZ2FjeU9wdGlvbnMoKTsKICAgICBjb25m
aWd1cmF0aW9uLT5zZXRJbmplY3RlZEJ1bmRsZVBhdGgoYnVuZGxlVVJMID8gU3RyaW5nKGJ1bmRs
ZVVSTC5wYXRoKSA6IFN0cmluZygpKTsKLSNpZiBQTEFURk9STShJT1MpCi0gICAgY29uZmlndXJh
dGlvbi0+c2V0VXNlTmV0d29ya1Byb2Nlc3ModHJ1ZSk7Ci0gICAgY29uZmlndXJhdGlvbi0+c2V0
UHJvY2Vzc01vZGVsKFByb2Nlc3NNb2RlbE11bHRpcGxlU2Vjb25kYXJ5UHJvY2Vzc2VzKTsKLSNl
bmRpZgogCiAgICAgX3Byb2Nlc3NQb29sID0gV2ViUHJvY2Vzc1Bvb2w6OmNyZWF0ZShjb25maWd1
cmF0aW9uKTsKIApJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1By
b2Nlc3NQb29sLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Q29jb2EvV0tQcm9jZXNzUG9vbC5tbQkocmV2aXNpb24gMTkyNjAxKQorKysgU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29sLm1tCSh3b3JraW5nIGNvcHkpCkBA
IC0zMCw3ICszMCw2IEBACiAKICNpbXBvcnQgIkNhY2hlTW9kZWwuaCIKICNpbXBvcnQgIkRvd25s
b2FkQ2xpZW50LmgiCi0jaW1wb3J0ICJQcm9jZXNzTW9kZWwuaCIKICNpbXBvcnQgIlNhbmRib3hV
dGlsaXRpZXMuaCIKICNpbXBvcnQgIldLT2JqZWN0LmgiCiAjaW1wb3J0ICJXZWFrT2JqQ1B0ci5o
IgpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQb29sQ29j
b2EubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL1dlYlBy
b2Nlc3NQb29sQ29jb2EubW0JKHJldmlzaW9uIDE5MjYwMSkKKysrIFNvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUG9vbENvY29hLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0y
Niw2ICsyNiw4IEBACiAjaW1wb3J0ICJjb25maWcuaCIKICNpbXBvcnQgIldlYlByb2Nlc3NQb29s
LmgiCiAKKyNpbXBvcnQgIk5ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmgiCisjaW1w
b3J0ICJOZXR3b3JrUHJvY2Vzc1Byb3h5LmgiCiAjaW1wb3J0ICJQbHVnaW5Qcm9jZXNzTWFuYWdl
ci5oIgogI2ltcG9ydCAiU2FuZGJveFV0aWxpdGllcy5oIgogI2ltcG9ydCAiVGV4dENoZWNrZXIu
aCIKQEAgLTQ3LDExICs0OSw2IEBACiAjaW1wb3J0IDxXZWJDb3JlL1J1bnRpbWVBcHBsaWNhdGlv
bkNoZWNrcy5oPgogI2ltcG9ydCA8c3lzL3BhcmFtLmg+CiAKLSNpZiBFTkFCTEUoTkVUV09SS19Q
Uk9DRVNTKQotI2ltcG9ydCAiTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaCIKLSNp
bXBvcnQgIk5ldHdvcmtQcm9jZXNzUHJveHkuaCIKLSNlbmRpZgotCiAjaWYgUExBVEZPUk0oSU9T
KQogI2ltcG9ydCAiQXJndW1lbnRDb2RlcnNDRi5oIgogI2ltcG9ydCAiV2ViTWVtb3J5UHJlc3N1
cmVIYW5kbGVySU9TLmgiCkBAIC03NiwxMCArNzMsOCBAQCBzdGF0aWMgTlNTdHJpbmcgKldlYktp
dEFwcGxpY2F0aW9uRGlkQ2hhCiAvLyBGSVhNRTogPHJkYXI6Ly9wcm9ibGVtLzkxMzg4MTc+IC0g
QWZ0ZXIgdGhpcyAiYmFja3dhcmRzIGNvbXBhdGliaWxpdHkiIHJhZGFyIGlzIHJlbW92ZWQsIHRo
aXMgY29kZSBzaG91bGQgYmUgcmVtb3ZlZCB0byBvbmx5IHJldHVybiBhbiBlbXB0eSBTdHJpbmcu
CiBOU1N0cmluZyAqV2ViSWNvbkRhdGFiYXNlRGlyZWN0b3J5RGVmYXVsdHNLZXkgPSBAIldlYklj
b25EYXRhYmFzZURpcmVjdG9yeURlZmF1bHRzS2V5IjsKIAotI2lmIEVOQUJMRShORVRXT1JLX1BS
T0NFU1MpCiBzdGF0aWMgTlNTdHJpbmcgKiBjb25zdCBXZWJLaXQySFRUUFByb3h5RGVmYXVsdHNL
ZXkgPSBAIldlYktpdDJIVFRQUHJveHkiOwogc3RhdGljIE5TU3RyaW5nICogY29uc3QgV2ViS2l0
MkhUVFBTUHJveHlEZWZhdWx0c0tleSA9IEAiV2ViS2l0MkhUVFBTUHJveHkiOwotI2VuZGlmCiAK
ICNpZiBFTkFCTEUoTkVUV09SS19DQUNIRSkKIHN0YXRpYyBOU1N0cmluZyAqIGNvbnN0IFdlYktp
dE5ldHdvcmtDYWNoZUVuYWJsZWREZWZhdWx0c0tleSA9IEAiV2ViS2l0TmV0d29ya0NhY2hlRW5h
YmxlZCI7CkBAIC0xMTksMTAgKzExNCw4IEBAIHN0YXRpYyB2b2lkIHJlZ2lzdGVyVXNlckRlZmF1
bHRzSWZOZWVkZWQKIAogdm9pZCBXZWJQcm9jZXNzUG9vbDo6dXBkYXRlUHJvY2Vzc1N1cHByZXNz
aW9uU3RhdGUoKQogewotI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCi0gICAgaWYgKHVzZXNO
ZXR3b3JrUHJvY2VzcygpICYmIG1fbmV0d29ya1Byb2Nlc3MpCisgICAgaWYgKG1fbmV0d29ya1By
b2Nlc3MpCiAgICAgICAgIG1fbmV0d29ya1Byb2Nlc3MtPnNldFByb2Nlc3NTdXBwcmVzc2lvbkVu
YWJsZWQocHJvY2Vzc1N1cHByZXNzaW9uRW5hYmxlZCgpKTsKLSNlbmRpZgogCiAjaWYgRU5BQkxF
KE5FVFNDQVBFX1BMVUdJTl9BUEkpCiAgICAgaWYgKCFtX3Byb2Nlc3NTdXBwcmVzc2lvbkRpc2Fi
bGVkRm9yUGFnZUNvdW50ZXIudmFsdWUoKSkKQEAgLTE5NywxNSArMTkwLDYgQEAgdm9pZCBXZWJQ
cm9jZXNzUG9vbDo6cGxhdGZvcm1Jbml0aWFsaXplVwogCiAgICAgcGFyYW1ldGVycy51aVByb2Nl
c3NCdW5kbGVJZGVudGlmaWVyID0gU3RyaW5nKFtbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gYnVuZGxl
SWRlbnRpZmllcl0pOwogCi0jaWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKLSAgICBpZiAoIXVz
ZXNOZXR3b3JrUHJvY2VzcygpKSB7Ci0jZW5kaWYKLSAgICAgICAgZm9yIChjb25zdCBhdXRvJiBz
Y2hlbWUgOiBnbG9iYWxVUkxTY2hlbWVzV2l0aEN1c3RvbVByb3RvY29sSGFuZGxlcnMoKSkKLSAg
ICAgICAgICAgIHBhcmFtZXRlcnMudXJsU2NoZW1lc1JlZ2lzdGVyZWRGb3JDdXN0b21Qcm90b2Nv
bHMuYXBwZW5kKHNjaGVtZSk7Ci0jaWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKLSAgICB9Ci0j
ZW5kaWYKLQogICAgIHBhcmFtZXRlcnMuZm9udFdoaXRlbGlzdCA9IG1fZm9udFdoaXRlbGlzdDsK
IAogICAgIGlmIChtX2J1bmRsZVBhcmFtZXRlcnMpIHsKQEAgLTIzNiw3ICsyMjAsNiBAQCB2b2lk
IFdlYlByb2Nlc3NQb29sOjpwbGF0Zm9ybUluaXRpYWxpemVXCiAjZW5kaWYKIH0KIAotI2lmIEVO
QUJMRShORVRXT1JLX1BST0NFU1MpCiB2b2lkIFdlYlByb2Nlc3NQb29sOjpwbGF0Zm9ybUluaXRp
YWxpemVOZXR3b3JrUHJvY2VzcyhOZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycyYgcGFy
YW1ldGVycykKIHsKICAgICBOU1VSTENhY2hlICp1cmxDYWNoZSA9IFtOU1VSTENhY2hlIHNoYXJl
ZFVSTENhY2hlXTsKQEAgLTI3MSw3ICsyNTQsNiBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpwbGF0
Zm9ybUluaXRpYWxpemVOCiAgICAgcGFyYW1ldGVycy51aVByb2Nlc3NDb29raWVTdG9yYWdlSWRl
bnRpZmllci5hcHBlbmQoQ0ZEYXRhR2V0Qnl0ZVB0cihjb29raWVTdG9yYWdlRGF0YS5nZXQoKSks
IENGRGF0YUdldExlbmd0aChjb29raWVTdG9yYWdlRGF0YS5nZXQoKSkpOwogI2VuZGlmCiB9Ci0j
ZW5kaWYKIAogdm9pZCBXZWJQcm9jZXNzUG9vbDo6cGxhdGZvcm1JbnZhbGlkYXRlQ29udGV4dCgp
CiB7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkUHJv
eHkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Eb3dubG9hZHMv
RG93bmxvYWRQcm94eS5jcHAJKHJldmlzaW9uIDE5MjYwMSkKKysrIFNvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRQcm94eS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMx
LDE2ICszMSwxMyBAQAogI2luY2x1ZGUgIkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHkuaCIK
ICNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiRG93bmxvYWRQcm94eU1hcC5o
IgorI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzTWVzc2FnZXMuaCIKKyNpbmNsdWRlICJOZXR3b3Jr
UHJvY2Vzc1Byb3h5LmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc01lc3NhZ2VzLmgiCiAjaW5jbHVk
ZSAiV2ViUHJvY2Vzc1Bvb2wuaCIKICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAjaW5j
bHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKLSNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNT
KQotI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzTWVzc2FnZXMuaCIKLSNpbmNsdWRlICJOZXR3b3Jr
UHJvY2Vzc1Byb3h5LmgiCi0jZW5kaWYKLQogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIG5h
bWVzcGFjZSBXZWJLaXQgewpAQCAtNzQsMTUgKzcxLDggQEAgdm9pZCBEb3dubG9hZFByb3h5Ojpj
YW5jZWwoKQogICAgIGlmICghbV9wcm9jZXNzUG9vbCkKICAgICAgICAgcmV0dXJuOwogCi0jaWYg
RU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKLSAgICBpZiAobV9wcm9jZXNzUG9vbC0+dXNlc05ldHdv
cmtQcm9jZXNzKCkpIHsKLSAgICAgICAgaWYgKE5ldHdvcmtQcm9jZXNzUHJveHkqIG5ldHdvcmtQ
cm9jZXNzID0gbV9wcm9jZXNzUG9vbC0+bmV0d29ya1Byb2Nlc3MoKSkKLSAgICAgICAgICAgIG5l
dHdvcmtQcm9jZXNzLT5jb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNz
OjpDYW5jZWxEb3dubG9hZChtX2Rvd25sb2FkSUQpLCAwKTsKLSAgICAgICAgcmV0dXJuOwotICAg
IH0KLSNlbmRpZgotCi0gICAgbV9wcm9jZXNzUG9vbC0+c2VuZFRvQWxsUHJvY2Vzc2VzKE1lc3Nh
Z2VzOjpXZWJQcm9jZXNzOjpDYW5jZWxEb3dubG9hZChtX2Rvd25sb2FkSUQpKTsKKyAgICBpZiAo
TmV0d29ya1Byb2Nlc3NQcm94eSogbmV0d29ya1Byb2Nlc3MgPSBtX3Byb2Nlc3NQb29sLT5uZXR3
b3JrUHJvY2VzcygpKQorICAgICAgICBuZXR3b3JrUHJvY2Vzcy0+Y29ubmVjdGlvbigpLT5zZW5k
KE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6Q2FuY2VsRG93bmxvYWQobV9kb3dubG9hZElEKSwg
MCk7CiB9CiAKIHZvaWQgRG93bmxvYWRQcm94eTo6aW52YWxpZGF0ZSgpCkluZGV4OiBTb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvTGF1bmNoZXIvUHJvY2Vzc0xhdW5jaGVyLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTGF1bmNoZXIvUHJvY2Vzc0xhdW5jaGVyLmNw
cAkocmV2aXNpb24gMTkyNjAxKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0xhdW5jaGVy
L1Byb2Nlc3NMYXVuY2hlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg0LDEwICs4NCw4IEBAIGNv
bnN0IGNoYXIqIFByb2Nlc3NMYXVuY2hlcjo6cHJvY2Vzc1R5cGUKICAgICBjYXNlIFBsdWdpblBy
b2Nlc3M6CiAgICAgICAgIHJldHVybiAicGx1Z2lucHJvY2VzcyI7CiAjZW5kaWYKLSNpZiBFTkFC
TEUoTkVUV09SS19QUk9DRVNTKQogICAgIGNhc2UgTmV0d29ya1Byb2Nlc3M6CiAgICAgICAgIHJl
dHVybiAibmV0d29ya3Byb2Nlc3MiOwotI2VuZGlmCiAjaWYgRU5BQkxFKERBVEFCQVNFX1BST0NF
U1MpCiAgICAgY2FzZSBEYXRhYmFzZVByb2Nlc3M6CiAgICAgICAgIHJldHVybiAiZGF0YWJhc2Vw
cm9jZXNzIjsKQEAgLTExMiwxMiArMTEwLDEwIEBAIGJvb2wgUHJvY2Vzc0xhdW5jaGVyOjpnZXRQ
cm9jZXNzVHlwZUZyb20KICAgICB9CiAjZW5kaWYKIAotI2lmIEVOQUJMRShORVRXT1JLX1BST0NF
U1MpCiAgICAgaWYgKCFzdHJjbXAoc3RyaW5nLCAibmV0d29ya3Byb2Nlc3MiKSkgewogICAgICAg
ICBwcm9jZXNzVHlwZSA9IE5ldHdvcmtQcm9jZXNzOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAg
ICB9Ci0jZW5kaWYKIAogI2lmIEVOQUJMRShEQVRBQkFTRV9QUk9DRVNTKQogICAgIGlmICghc3Ry
Y21wKHN0cmluZywgImRhdGFiYXNlcHJvY2VzcyIpKSB7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvTGF1bmNoZXIvUHJvY2Vzc0xhdW5jaGVyLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0xhdW5jaGVyL1Byb2Nlc3NMYXVuY2hlci5oCShyZXZpc2lvbiAx
OTI2MDEpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTGF1bmNoZXIvUHJvY2Vzc0xhdW5j
aGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTUwLDkgKzUwLDcgQEAgcHVibGljOgogI2lmIEVOQUJM
RShORVRTQ0FQRV9QTFVHSU5fQVBJKQogICAgICAgICBQbHVnaW5Qcm9jZXNzLAogI2VuZGlmCi0j
aWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKICAgICAgICAgTmV0d29ya1Byb2Nlc3MsCi0jZW5k
aWYKICNpZiBFTkFCTEUoREFUQUJBU0VfUFJPQ0VTUykKICAgICAgICAgRGF0YWJhc2VQcm9jZXNz
LAogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTGF1bmNoZXIvbWFjL1By
b2Nlc3NMYXVuY2hlck1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvTGF1bmNoZXIvbWFjL1Byb2Nlc3NMYXVuY2hlck1hYy5tbQkocmV2aXNpb24gMTkyNjAxKQor
KysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0xhdW5jaGVyL21hYy9Qcm9jZXNzTGF1bmNoZXJN
YWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTEwNSwxNCArMTA1LDEyIEBAIHN0YXRpYyBSZXRhaW5Q
dHI8TlNTdHJpbmc+IGNvbXB1dGVQcm9jZXMKICAgICB9CiAjZW5kaWYKIAotI2lmIEVOQUJMRShO
RVRXT1JLX1BST0NFU1MpCiAgICAgaWYgKGxhdW5jaE9wdGlvbnMucHJvY2Vzc1R5cGUgPT0gUHJv
Y2Vzc0xhdW5jaGVyOjpOZXR3b3JrUHJvY2VzcykgewogICAgICAgICBOU1N0cmluZyAqcHJvY2Vz
c1BhdGggPSBbd2ViS2l0QnVuZGxlIHBhdGhGb3JBdXhpbGlhcnlFeGVjdXRhYmxlOkAiTmV0d29y
a1Byb2Nlc3MuYXBwIl07CiAgICAgICAgIE5TU3RyaW5nICpwcm9jZXNzQXBwRXhlY3V0YWJsZVBh
dGggPSBbW05TQnVuZGxlIGJ1bmRsZVdpdGhQYXRoOnByb2Nlc3NQYXRoXSBleGVjdXRhYmxlUGF0
aF07CiAKICAgICAgICAgcmV0dXJuIFtbcHJvY2Vzc0FwcEV4ZWN1dGFibGVQYXRoIHN0cmluZ0J5
RGVsZXRpbmdMYXN0UGF0aENvbXBvbmVudF0gc3RyaW5nQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50
OkAiU2VjSXRlbVNoaW0uZHlsaWIiXTsKICAgICB9Ci0jZW5kaWYKIAogICAgIGlmIChsYXVuY2hP
cHRpb25zLnByb2Nlc3NUeXBlID09IFByb2Nlc3NMYXVuY2hlcjo6V2ViUHJvY2VzcykgewogICAg
ICAgICBOU1N0cmluZyAqcHJvY2Vzc1BhdGggPSBbd2ViS2l0QnVuZGxlIHBhdGhGb3JBdXhpbGlh
cnlFeGVjdXRhYmxlOkAiV2ViUHJvY2Vzcy5hcHAiXTsKQEAgLTE2NywxMiArMTY1LDEwIEBAIHN0
YXRpYyBjb25zdCBjaGFyKiBzZXJ2aWNlTmFtZShjb25zdCBQcm8KICAgICAgICAgaWYgKGZvckRl
dmVsb3BtZW50KQogICAgICAgICAgICAgcmV0dXJuICJjb20uYXBwbGUuV2ViS2l0LldlYkNvbnRl
bnQuRGV2ZWxvcG1lbnQiOwogICAgICAgICByZXR1cm4gImNvbS5hcHBsZS5XZWJLaXQuV2ViQ29u
dGVudCI7Ci0jaWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKICAgICBjYXNlIFByb2Nlc3NMYXVu
Y2hlcjo6TmV0d29ya1Byb2Nlc3M6CiAgICAgICAgIGlmIChmb3JEZXZlbG9wbWVudCkKICAgICAg
ICAgICAgIHJldHVybiAiY29tLmFwcGxlLldlYktpdC5OZXR3b3JraW5nLkRldmVsb3BtZW50IjsK
ICAgICAgICAgcmV0dXJuICJjb20uYXBwbGUuV2ViS2l0Lk5ldHdvcmtpbmciOwotI2VuZGlmCiAj
aWYgRU5BQkxFKERBVEFCQVNFX1BST0NFU1MpCiAgICAgY2FzZSBQcm9jZXNzTGF1bmNoZXI6OkRh
dGFiYXNlUHJvY2VzczoKICAgICAgICAgaWYgKGZvckRldmVsb3BtZW50KQpAQCAtMjA2LDEyICsy
MDIsOSBAQCBzdGF0aWMgYm9vbCBzaG91bGRMZWFrQm9vc3QoY29uc3QgUHJvY2VzCiAgICAgLy8g
T24gaU9TLCBsZWFrIGEgYm9vc3Qgb250byBhbGwgY2hpbGQgcHJvY2Vzc2VzCiAgICAgVU5VU0VE
X1BBUkFNKGxhdW5jaE9wdGlvbnMpOwogICAgIHJldHVybiB0cnVlOwotI2VsaWYgRU5BQkxFKE5F
VFdPUktfUFJPQ0VTUykKKyNlbHNlCiAgICAgLy8gT24gTWFjLCBsZWFrIGEgYm9vc3Qgb250byB0
aGUgTmV0d29ya1Byb2Nlc3MuCiAgICAgcmV0dXJuIGxhdW5jaE9wdGlvbnMucHJvY2Vzc1R5cGUg
PT0gUHJvY2Vzc0xhdW5jaGVyOjpOZXR3b3JrUHJvY2VzczsKLSNlbHNlCi0gICAgVU5VU0VEX1BB
UkFNKGxhdW5jaE9wdGlvbnMpOwotICAgIHJldHVybiBmYWxzZTsKICNlbmRpZgogfQogICAgIApA
QCAtNDgzLDExICs0NzYsOSBAQCBzdGF0aWMgdm9pZCBjcmVhdGVQcm9jZXNzKGNvbnN0IFByb2Nl
c3NMCiAgICAgICAgIHByb2Nlc3NQYXRoID0gW3dlYktpdEJ1bmRsZSBwYXRoRm9yQXV4aWxpYXJ5
RXhlY3V0YWJsZTpAIlBsdWdpblByb2Nlc3MuYXBwIl07CiAgICAgICAgIGJyZWFrOwogI2VuZGlm
Ci0jaWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKICAgICBjYXNlIFByb2Nlc3NMYXVuY2hlcjo6
TmV0d29ya1Byb2Nlc3M6CiAgICAgICAgIHByb2Nlc3NQYXRoID0gW3dlYktpdEJ1bmRsZSBwYXRo
Rm9yQXV4aWxpYXJ5RXhlY3V0YWJsZTpAIk5ldHdvcmtQcm9jZXNzLmFwcCJdOwogICAgICAgICBi
cmVhazsKLSNlbmRpZgogI2lmIEVOQUJMRShEQVRBQkFTRV9QUk9DRVNTKQogICAgIGNhc2UgUHJv
Y2Vzc0xhdW5jaGVyOjpEYXRhYmFzZVByb2Nlc3M6CiAgICAgICAgIHByb2Nlc3NQYXRoID0gW3dl
YktpdEJ1bmRsZSBwYXRoRm9yQXV4aWxpYXJ5RXhlY3V0YWJsZTpAIkRhdGFiYXNlUHJvY2Vzcy5h
cHAiXTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9j
ZXNzUHJveHkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9OZXR3
b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCShyZXZpc2lvbiAxOTI2MDEpCisrKyBTb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMjYsOCArMjYsNiBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUg
Ik5ldHdvcmtQcm9jZXNzUHJveHkuaCIKIAotI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCi0K
ICNpbmNsdWRlICJBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5LmgiCiAjaW5jbHVkZSAiQ3Vz
dG9tUHJvdG9jb2xNYW5hZ2VyUHJveHlNZXNzYWdlcy5oIgogI2luY2x1ZGUgIkRvd25sb2FkUHJv
eHlNZXNzYWdlcy5oIgpAQCAtMzc3LDUgKzM3NSwzIEBAIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94
eTo6c2V0SXNIb2xkaW5nTG8KIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KLSNlbmRpZiAv
LyBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaAkocmV2aXNpb24gMTky
NjAxKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQ
cm94eS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw4ICsyNiw2IEBACiAjaWZuZGVmIE5ldHdvcmtQ
cm9jZXNzUHJveHlfaAogI2RlZmluZSBOZXR3b3JrUHJvY2Vzc1Byb3h5X2gKIAotI2lmIEVOQUJM
RShORVRXT1JLX1BST0NFU1MpCi0KICNpbmNsdWRlICJDaGlsZFByb2Nlc3NQcm94eS5oIgogI2lu
Y2x1ZGUgIkN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5LmgiCiAjaW5jbHVkZSAiUHJvY2Vzc0xh
dW5jaGVyLmgiCkBAIC0xMzIsNiArMTMwLDQgQEAgcHJpdmF0ZToKIAogfSAvLyBuYW1lc3BhY2Ug
V2ViS2l0CiAKLSNlbmRpZiAvLyBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQotCiAjZW5kaWYgLy8g
TmV0d29ya1Byb2Nlc3NQcm94eV9oCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTmV0
d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkubWVzc2FnZXMu
aW4JKHJldmlzaW9uIDE5MjYwMSkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9OZXR3b3Jr
L05ldHdvcmtQcm9jZXNzUHJveHkubWVzc2FnZXMuaW4JKHdvcmtpbmcgY29weSkKQEAgLTIwLDgg
KzIwLDYgQEAKICMgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKICMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KIAotI2lmIEVO
QUJMRShORVRXT1JLX1BST0NFU1MpCi0KIG1lc3NhZ2VzIC0+IE5ldHdvcmtQcm9jZXNzUHJveHkg
TGVnYWN5UmVjZWl2ZXIgewogICAgIERpZENyZWF0ZU5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzKElQQzo6QXR0YWNobWVudCBjb25uZWN0aW9uSWRlbnRpZmllcikKIApAQCAtMzksNSArMzcs
MyBAQCBtZXNzYWdlcyAtPiBOZXR3b3JrUHJvY2Vzc1Byb3h5IExlZ2FjeVJlCiAgICAgTG9nU2Ft
cGxlZERpYWdub3N0aWNNZXNzYWdlV2l0aFJlc3VsdCh1aW50NjRfdCBwYWdlSUQsIFN0cmluZyBt
ZXNzYWdlLCBTdHJpbmcgZGVzY3JpcHRpb24sIHVpbnQzMl90IHJlc3VsdCkKICAgICBMb2dTYW1w
bGVkRGlhZ25vc3RpY01lc3NhZ2VXaXRoVmFsdWUodWludDY0X3QgcGFnZUlELCBTdHJpbmcgbWVz
c2FnZSwgU3RyaW5nIGRlc2NyaXB0aW9uLCBTdHJpbmcgdmFsdWUpCiB9Ci0KLSNlbmRpZiAvLyBF
TkFCTEUoTkVUV09SS19QUk9DRVNTKQpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL05l
dHdvcmsvbWFjL05ldHdvcmtQcm9jZXNzUHJveHlNYWMubW0KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL05ldHdvcmsvbWFjL05ldHdvcmtQcm9jZXNzUHJveHlNYWMubW0J
KHJldmlzaW9uIDE5MjYwMSkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9OZXR3b3JrL21h
Yy9OZXR3b3JrUHJvY2Vzc1Byb3h5TWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw4ICsyOCw2
IEBACiAKICNpbXBvcnQgIk5ldHdvcmtQcm9jZXNzTWVzc2FnZXMuaCIKIAotI2lmIEVOQUJMRShO
RVRXT1JLX1BST0NFU1MpCi0KIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBuYW1lc3BhY2Ug
V2ViS2l0IHsKQEAgLTU5LDUgKzU3LDMgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpwbGF0
Zm9ybUdldExhdQogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQotI2VuZGlmIC8vIEVOQUJM
RShORVRXT1JLX1BST0NFU1MpCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vic2l0
ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwCShyZXZpc2lvbiAxOTI2
MDEpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFT
dG9yZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk0LDEyICs5NCwxMCBAQCBXZWJzaXRlRGF0YVN0
b3JlOjp+V2Vic2l0ZURhdGFTdG9yZSgpCiB7CiAgICAgcGxhdGZvcm1EZXN0cm95KCk7CiAKLSNp
ZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQogICAgIGlmIChtX3Nlc3Npb25JRC5pc0VwaGVtZXJh
bCgpKSB7CiAgICAgICAgIGZvciAoYXV0byYgcHJvY2Vzc1Bvb2wgOiBXZWJQcm9jZXNzUG9vbDo6
YWxsUHJvY2Vzc1Bvb2xzKCkpCiAgICAgICAgICAgICBwcm9jZXNzUG9vbC0+c2VuZFRvTmV0d29y
a2luZ1Byb2Nlc3MoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpEZXN0cm95UHJpdmF0ZUJyb3dz
aW5nU2Vzc2lvbihtX3Nlc3Npb25JRCkpOwogICAgIH0KLSNlbmRpZgogfQogCiB2b2lkIFdlYnNp
dGVEYXRhU3RvcmU6OmNsb25lU2Vzc2lvbkRhdGEoV2ViUGFnZVByb3h5JiBzb3VyY2VQYWdlLCBX
ZWJQYWdlUHJveHkmIG5ld1BhZ2UpCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViS2l0
Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAxOTI2MDEpCisrKyBTb3VyY2Uv
V2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkK
QEAgLTE0NjAsNyArMTQ2MCw2IEBACiAJCUJDNTc1MDk4MTI2OEYzQzYwMDZGMEYxMiAvKiBXZWJQ
b3B1cE1lbnVQcm94eU1hYy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEJDNTc1MDk2MTI2OEYzQzYwMDZGMEYxMiAvKiBXZWJQb3B1cE1lbnVQcm94eU1h
Yy5tbSAqLzsgfTsKIAkJQkM1NzU2MTMxMjZFMDEzODAwNkYwRjEyIC8qIEFQSUVycm9yLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDNTc1NjEyMTI2
RTAxMzgwMDZGMEYxMiAvKiBBUElFcnJvci5jcHAgKi87IH07CiAJCUJDNTk1NDg5MTVDNzg2ODUw
MEZEMUUzRSAvKiBXZWJLaXQyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBCQzU5NTQ4ODE1Qzc4Njg1MDBGRDFFM0UgLyogV2ViS2l0Mi5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCUJDNTk3MDc1MTE2NTkx
RDAwMDU1MUZDQSAvKiBQcm9jZXNzTW9kZWwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEJDNTk3MDc0MTE2NTkxRDAwMDU1MUZDQSAvKiBQcm9jZXNzTW9k
ZWwuaCAqLzsgfTsKIAkJQkM1Qzc1QzgxNDk1NERBNjAwQkM0Nzc1IC8qIFdLQ29ubmVjdGlvbklu
dGVybmFsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBC
QzVDNzVDNjE0OTU0REE2MDBCQzQ3NzUgLyogV0tDb25uZWN0aW9uSW50ZXJuYWwuaCAqLzsgfTsK
IAkJQkM1RDI0QTExNkNDM0I5RTAwN0Q1NDYxIC8qIENoaWxkUHJvY2Vzc01haW4ubW0gaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzVEMjQ5RjE2Q0MzQjlF
MDA3RDU0NjEgLyogQ2hpbGRQcm9jZXNzTWFpbi5tbSAqLzsgfTsKIAkJQkM1RDI0QTIxNkNDM0I5
RTAwN0Q1NDYxIC8qIENoaWxkUHJvY2Vzc01haW4ubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzVEMjQ5RjE2Q0MzQjlFMDA3RDU0NjEgLyogQ2hpbGRQ
cm9jZXNzTWFpbi5tbSAqLzsgfTsKQEAgLTM3MzIsNyArMzczMSw2IEBACiAJCUJDNTc1MDk2MTI2
OEYzQzYwMDZGMEYxMiAvKiBXZWJQb3B1cE1lbnVQcm94eU1hYy5tbSAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdlYlBvcHVwTWVudVByb3h5TWFjLm1tOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlCQzU3NTYxMjEyNkUwMTM4MDA2RjBGMTIgLyogQVBJRXJy
b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQVBJRXJyb3IuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQzU5NTQ4ODE1Qzc4Njg1MDBGRDFFM0Ug
LyogV2ViS2l0Mi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJLaXQyLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUJDNTk3MDc0MTE2NTkxRDAwMDU1MUZDQSAv
KiBQcm9jZXNzTW9kZWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUHJvY2Vz
c01vZGVsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDNUM3NUM2MTQ5NTREQTYw
MEJDNDc3NSAvKiBXS0Nvbm5lY3Rpb25JbnRlcm5hbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBXS0Nvbm5lY3Rpb25JbnRlcm5hbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlCQzVEMjQ5RjE2Q0MzQjlFMDA3RDU0NjEgLyogQ2hpbGRQcm9jZXNzTWFpbi5tbSAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IENoaWxkUHJvY2Vzc01haW4u
bW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDNUQyNEI4MTZDQzQwQkIwMDdENTQ2
MSAvKiBCYXNlTGVnYWN5UHJvY2Vzcy54Y2NvbmZpZyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQueGNjb25maWc7IHBhdGggPSBCYXNlTGVnYWN5
UHJvY2Vzcy54Y2NvbmZpZzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTYyMzgsNyAr
NjIzNiw2IEBACiAJCQkJMUFDNzUzN0ExODNBOUZEQjAwNzJDQjE1IC8qIFBhZ2VMb2FkU3RhdGUu
aCAqLywKIAkJCQkzNzcxNkE1OTE5NUI5MTA1MDBFRThCMUIgLyogUHJvY2Vzc0Fzc2VydGlvbi5j
cHAgKi8sCiAJCQkJODZGOTUzNjAxOEZGNEZENDAwMURCMkVGIC8qIFByb2Nlc3NBc3NlcnRpb24u
aCAqLywKLQkJCQlCQzU5NzA3NDExNjU5MUQwMDA1NTFGQ0EgLyogUHJvY2Vzc01vZGVsLmggKi8s
CiAJCQkJODZFNjdBMjIxOTBGNDExODAwMDA0QUI3IC8qIFByb2Nlc3NUaHJvdHRsZXIuY3BwICov
LAogCQkJCTg2RTY3QTIxMTkwRjQxMTgwMDAwNEFCNyAvKiBQcm9jZXNzVGhyb3R0bGVyLmggKi8s
CiAJCQkJODMwNDhBRTUxQUNBNDVEQzAwODJDODMyIC8qIFByb2Nlc3NUaHJvdHRsZXJDbGllbnQu
aCAqLywKQEAgLTc5ODksNyArNzk4Niw2IEBACiAJCQkJRTFDQzFCOTAxMkQ3RUFERjAwNjI1ODM4
IC8qIFByaW50SW5mby5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODZGOTUzNjUxOEZGNThGNTAwMURC
MkVGIC8qIFByb2Nlc3NBc3NlcnRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMUE3QzU4MTEz
NkUxOUMwMEZCNzE2NyAvKiBQcm9jZXNzTGF1bmNoZXIuaCBpbiBIZWFkZXJzICovLAotCQkJCUJD
NTk3MDc1MTE2NTkxRDAwMDU1MUZDQSAvKiBQcm9jZXNzTW9kZWwuaCBpbiBIZWFkZXJzICovLAog
CQkJCTg2RTY3QTI1MTkxMEI5RDEwMDAwNEFCNyAvKiBQcm9jZXNzVGhyb3R0bGVyLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk4MzA0OEFFNjFBQ0E0NURDMDA4MkM4MzIgLyogUHJvY2Vzc1Rocm90dGxl
ckNsaWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkQ3RjEzMTAxQTcwMkZCQTAwOUE2RkJEIC8q
IFByb2Nlc3NUeXBlLmggaW4gSGVhZGVycyAqLywKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUHJvY2Vzcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQcm9jZXNzLmNwcAkocmV2aXNpb24gMTkyNjAxKQorKysgU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzcsNiArMzcsNyBA
QAogI2luY2x1ZGUgIkluamVjdGVkQnVuZGxlLmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2lu
Y2x1ZGUgIk5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzTWVzc2FnZXMuaCIKKyNpbmNsdWRl
ICJOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uaCIKICNpbmNsdWRlICJQbHVnaW5Qcm9jZXNzQ29u
bmVjdGlvbk1hbmFnZXIuaCIKICNpbmNsdWRlICJTZXNzaW9uVHJhY2tlci5oIgogI2luY2x1ZGUg
IlN0YXRpc3RpY3NEYXRhLmgiCkBAIC02MCw2ICs2MSw3IEBACiAjaW5jbHVkZSAiV2ViUHJvY2Vz
c01lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc1Bvb2xNZXNzYWdlcy5oIgogI2luY2x1
ZGUgIldlYlByb2Nlc3NQcm94eU1lc3NhZ2VzLmgiCisjaW5jbHVkZSAiV2ViUmVzb3VyY2VMb2Fk
U2NoZWR1bGVyLmgiCiAjaW5jbHVkZSAiV2Vic2l0ZURhdGEuaCIKICNpbmNsdWRlICJXZWJzaXRl
RGF0YVR5cGVzLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNMb2NrLmg+CkBAIC0xMDEs
MTIgKzEwMyw5IEBACiAjaW5jbHVkZSAiT2JqQ09iamVjdEdyYXBoLmgiCiAjZW5kaWYKIAotI2lm
IEVOQUJMRShORVRXT1JLX1BST0NFU1MpCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAjaW5jbHVkZSAi
Q29va2llU3RvcmFnZVNoaW0uaCIKICNlbmRpZgotI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzQ29u
bmVjdGlvbi5oIgotI2VuZGlmCiAKICNpZiBFTkFCTEUoU0VDX0lURU1fU0hJTSkKICNpbmNsdWRl
ICJTZWNJdGVtU2hpbS5oIgpAQCAtMTI0LDEwICsxMjMsNiBAQAogI2luY2x1ZGUgIldlYkJhdHRl
cnlNYW5hZ2VyLmgiCiAjZW5kaWYKIAotI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCi0jaW5j
bHVkZSAiV2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVyLmgiCi0jZW5kaWYKLQogI2lmIEVOQUJMRShS
RU1PVEVfSU5TUEVDVE9SKQogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1JlbW90ZUluc3BlY3Rv
ci5oPgogI2VuZGlmCkBAIC0xNjEsMTEgKzE1Niw4IEBAIFdlYlByb2Nlc3M6OldlYlByb2Nlc3Mo
KQogICAgICwgbV9mdWxsS2V5Ym9hcmRBY2Nlc3NFbmFibGVkKGZhbHNlKQogICAgICwgbV90ZXh0
Q2hlY2tlclN0YXRlKCkKICAgICAsIG1faWNvbkRhdGFiYXNlUHJveHkobmV3IFdlYkljb25EYXRh
YmFzZVByb3h5KHRoaXMpKQotI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCi0gICAgLCBtX3Vz
ZXNOZXR3b3JrUHJvY2VzcyhmYWxzZSkKICAgICAsIG1fd2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVy
KG5ldyBXZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXIpCiAgICAgLCBtX2Ruc1ByZWZldGNoSHlzdGVy
ZXJpcyhbdGhpc10oSHlzdGVyZXNpc1N0YXRlIHN0YXRlKSB7IGlmIChzdGF0ZSA9PSBIeXN0ZXJl
c2lzU3RhdGU6OlN0b3BwZWQpIG1fZG5zUHJlZmV0Y2hlZEhvc3RzLmNsZWFyKCk7IH0pCi0jZW5k
aWYKICNpZiBFTkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQSSkKICAgICAsIG1fcGx1Z2luUHJvY2Vz
c0Nvbm5lY3Rpb25NYW5hZ2VyKFBsdWdpblByb2Nlc3NDb25uZWN0aW9uTWFuYWdlcjo6Y3JlYXRl
KCkpCiAjZW5kaWYKQEAgLTI1MiwzNCArMjQ0LDEwIEBAIHZvaWQgV2ViUHJvY2Vzczo6aW5pdGlh
bGl6ZUNvbm5lY3Rpb24oSVAKICAgICBjb25uZWN0aW9uLT5zZXRPbmx5U2VuZE1lc3NhZ2VzQXNE
aXNwYXRjaFdoZW5XYWl0aW5nRm9yU3luY1JlcGx5V2hlblByb2Nlc3NpbmdTdWNoQU1lc3NhZ2Uo
dHJ1ZSk7CiB9CiAKLXZvaWQgV2ViUHJvY2Vzczo6ZGlkQ3JlYXRlRG93bmxvYWQoKQotewotICAg
IGRpc2FibGVUZXJtaW5hdGlvbigpOwotfQotCi12b2lkIFdlYlByb2Nlc3M6OmRpZERlc3Ryb3lE
b3dubG9hZCgpCi17Ci0gICAgZW5hYmxlVGVybWluYXRpb24oKTsKLX0KLQotSVBDOjpDb25uZWN0
aW9uKiBXZWJQcm9jZXNzOjpkb3dubG9hZFByb3h5Q29ubmVjdGlvbigpCi17Ci0gICAgcmV0dXJu
IHBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCk7Ci19Ci0KLUF1dGhlbnRpY2F0aW9uTWFuYWdlciYg
V2ViUHJvY2Vzczo6ZG93bmxvYWRzQXV0aGVudGljYXRpb25NYW5hZ2VyKCkKLXsKLSAgICByZXR1
cm4gKnN1cHBsZW1lbnQ8QXV0aGVudGljYXRpb25NYW5hZ2VyPigpOwotfQotCiB2b2lkIFdlYlBy
b2Nlc3M6OmluaXRpYWxpemVXZWJQcm9jZXNzKFdlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMm
JiBwYXJhbWV0ZXJzKQogewogICAgIEFTU0VSVChtX3BhZ2VNYXAuaXNFbXB0eSgpKTsKIAotI2lm
IEVOQUJMRShORVRXT1JLX1BST0NFU1MpCi0gICAgbV91c2VzTmV0d29ya1Byb2Nlc3MgPSBwYXJh
bWV0ZXJzLnVzZXNOZXR3b3JrUHJvY2VzczsKLSNlbmRpZgotCiAjaWYgT1MoTElOVVgpCiAgICAg
V2ViQ29yZTo6TWVtb3J5UHJlc3N1cmVIYW5kbGVyOjpSZWxpZWZMb2dnZXI6OnNldExvZ2dpbmdF
bmFibGVkKHBhcmFtZXRlcnMuc2hvdWxkRW5hYmxlTWVtb3J5UHJlc3N1cmVSZWxpZWZMb2dnaW5n
KTsKICNlbmRpZgpAQCAtMzU4LDEzICszMjYsMTAgQEAgdm9pZCBXZWJQcm9jZXNzOjppbml0aWFs
aXplV2ViUHJvY2VzcyhXZQogICAgIGlmIChwYXJhbWV0ZXJzLnNob3VsZFVzZVRlc3RpbmdOZXR3
b3JrU2Vzc2lvbikKICAgICAgICAgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzd2l0Y2hUb05ld1Rl
c3RpbmdTZXNzaW9uKCk7CiAKLSNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQogICAgIGVuc3Vy
ZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpOwogCiAjaWYgUExBVEZPUk0oQ09DT0EpCi0gICAg
aWYgKHVzZXNOZXR3b3JrUHJvY2VzcygpKQotICAgICAgICBDb29raWVTdG9yYWdlU2hpbTo6c2lu
Z2xldG9uKCkuaW5pdGlhbGl6ZSgpOwotI2VuZGlmCisgICAgQ29va2llU3RvcmFnZVNoaW06OnNp
bmdsZXRvbigpLmluaXRpYWxpemUoKTsKICNlbmRpZgogICAgIHNldFRlcm1pbmF0aW9uVGltZW91
dChwYXJhbWV0ZXJzLnRlcm1pbmF0aW9uVGltZW91dCk7CiAKQEAgLTM5NiwxMiArMzYxLDggQEAg
dm9pZCBXZWJQcm9jZXNzOjppbml0aWFsaXplV2ViUHJvY2VzcyhXZQogI2VuZGlmCiB9CiAKLSNp
ZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQogdm9pZCBXZWJQcm9jZXNzOjplbnN1cmVOZXR3b3Jr
UHJvY2Vzc0Nvbm5lY3Rpb24oKQogewotICAgIGlmICghbV91c2VzTmV0d29ya1Byb2Nlc3MpCi0g
ICAgICAgIHJldHVybjsKLQogICAgIGlmIChtX25ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbikKICAg
ICAgICAgcmV0dXJuOwogCkBAIC00MjIsNyArMzgzLDYgQEAgdm9pZCBXZWJQcm9jZXNzOjplbnN1
cmVOZXR3b3JrUHJvY2Vzc0NvbgogICAgICAgICByZXR1cm47CiAgICAgbV9uZXR3b3JrUHJvY2Vz
c0Nvbm5lY3Rpb24gPSBOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb246OmNyZWF0ZShjb25uZWN0aW9u
SWRlbnRpZmllcik7CiB9Ci0jZW5kaWYgLy8gRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKIAogdm9p
ZCBXZWJQcm9jZXNzOjpyZWdpc3RlclVSTFNjaGVtZUFzRW1wdHlEb2N1bWVudChjb25zdCBTdHJp
bmcmIHVybFNjaGVtZSkKIHsKQEAgLTUxMSwxNCArNDcxLDYgQEAgdm9pZCBXZWJQcm9jZXNzOjpk
ZXN0cm95UHJpdmF0ZUJyb3dzaW5nUwogI2VuZGlmCiB9CiAKLURvd25sb2FkTWFuYWdlciYgV2Vi
UHJvY2Vzczo6ZG93bmxvYWRNYW5hZ2VyKCkKLXsKLSAgICBBU1NFUlQoIXVzZXNOZXR3b3JrUHJv
Y2VzcygpKTsKLQotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxEb3dubG9hZE1hbmFnZXI+IGRv
d25sb2FkTWFuYWdlcih0aGlzKTsKLSAgICByZXR1cm4gZG93bmxvYWRNYW5hZ2VyOwotfQotCiAj
aWYgRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpCiBQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbk1h
bmFnZXImIFdlYlByb2Nlc3M6OnBsdWdpblByb2Nlc3NDb25uZWN0aW9uTWFuYWdlcigpCiB7CkBA
IC01ODEsNyArNTMzLDYgQEAgdm9pZCBXZWJQcm9jZXNzOjpyZW1vdmVXZWJQYWdlKHVpbnQ2NF90
IAogYm9vbCBXZWJQcm9jZXNzOjpzaG91bGRUZXJtaW5hdGUoKQogewogICAgIEFTU0VSVChtX3Bh
Z2VNYXAuaXNFbXB0eSgpKTsKLSAgICBBU1NFUlQodXNlc05ldHdvcmtQcm9jZXNzKCkgfHwgIWRv
d25sb2FkTWFuYWdlcigpLmlzRG93bmxvYWRpbmcoKSk7CiAKICAgICAvLyBGSVhNRTogdGhlIFNo
b3VsZFRlcm1pbmF0ZSBtZXNzYWdlIHNob3VsZCBhbHNvIHNlbmQgdGVybWluYXRpb24gcGFyYW1l
dGVycywgc3VjaCBhcyBhbnkgc2Vzc2lvbiBjb29raWVzIHRoYXQgbmVlZCB0byBiZSBwcmVzZXJ2
ZWQuCiAgICAgYm9vbCBzaG91bGRUZXJtaW5hdGUgPSBmYWxzZTsKQEAgLTEwMjUsMjAgKzk3Niw4
IEBAIHZvaWQgV2ViUHJvY2Vzczo6c2V0SW5qZWN0ZWRCdW5kbGVQYXJhbWUKICAgICBpbmplY3Rl
ZEJ1bmRsZS0+c2V0QnVuZGxlUGFyYW1ldGVycyh2YWx1ZSk7CiB9CiAKLWJvb2wgV2ViUHJvY2Vz
czo6dXNlc05ldHdvcmtQcm9jZXNzKCkgY29uc3QKLXsKLSNpZiBFTkFCTEUoTkVUV09SS19QUk9D
RVNTKQotICAgIHJldHVybiBtX3VzZXNOZXR3b3JrUHJvY2VzczsKLSNlbHNlCi0gICAgcmV0dXJu
IGZhbHNlOwotI2VuZGlmCi19Ci0KLSNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQogTmV0d29y
a1Byb2Nlc3NDb25uZWN0aW9uKiBXZWJQcm9jZXNzOjpuZXR3b3JrQ29ubmVjdGlvbigpCiB7Ci0g
ICAgQVNTRVJUKG1fdXNlc05ldHdvcmtQcm9jZXNzKTsKLQogICAgIC8vIElmIHdlJ3ZlIGxvc3Qg
b3VyIGNvbm5lY3Rpb24gdG8gdGhlIG5ldHdvcmsgcHJvY2VzcyAoZS5nLiBpdCBjcmFzaGVkKSB0
cnkgdG8gcmUtZXN0YWJsaXNoIGl0LgogICAgIGlmICghbV9uZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rp
b24pCiAgICAgICAgIGVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpOwpAQCAtMTA2NCw3
ICsxMDAzLDYgQEAgV2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVyJiBXZWJQcm9jZXNzOjp3ZQogewog
ICAgIHJldHVybiAqbV93ZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXI7CiB9Ci0jZW5kaWYgLy8gRU5B
QkxFRChORVRXT1JLX1BST0NFU1MpCiAKICNpZiBFTkFCTEUoREFUQUJBU0VfUFJPQ0VTUykKIHZv
aWQgV2ViUHJvY2Vzczo6d2ViVG9EYXRhYmFzZVByb2Nlc3NDb25uZWN0aW9uQ2xvc2VkKFdlYlRv
RGF0YWJhc2VQcm9jZXNzQ29ubmVjdGlvbiogY29ubmVjdGlvbikKQEAgLTExMDgsMjcgKzEwNDYs
NiBAQCB2b2lkIFdlYlByb2Nlc3M6OmVuc3VyZVdlYlRvRGF0YWJhc2VQcm9jCiAKICNlbmRpZiAv
LyBFTkFCTEVEKERBVEFCQVNFX1BST0NFU1MpCiAKLXZvaWQgV2ViUHJvY2Vzczo6ZG93bmxvYWRS
ZXF1ZXN0KFNlc3Npb25JRCBzZXNzaW9uSUQsIHVpbnQ2NF90IGRvd25sb2FkSUQsIHVpbnQ2NF90
IGluaXRpYXRpbmdQYWdlSUQsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKLXsKLSAg
ICBXZWJQYWdlKiBpbml0aWF0aW5nUGFnZSA9IGluaXRpYXRpbmdQYWdlSUQgPyB3ZWJQYWdlKGlu
aXRpYXRpbmdQYWdlSUQpIDogMDsKLQotICAgIFJlc291cmNlUmVxdWVzdCByZXF1ZXN0V2l0aE9y
aWdpbmFsVVJMID0gcmVxdWVzdDsKLSAgICBpZiAoaW5pdGlhdGluZ1BhZ2UpCi0gICAgICAgIGlu
aXRpYXRpbmdQYWdlLT5tYWluRnJhbWUoKS0+bG9hZGVyKCkuc2V0T3JpZ2luYWxVUkxGb3JEb3du
bG9hZFJlcXVlc3QocmVxdWVzdFdpdGhPcmlnaW5hbFVSTCk7Ci0KLSAgICBkb3dubG9hZE1hbmFn
ZXIoKS5zdGFydERvd25sb2FkKHNlc3Npb25JRCwgZG93bmxvYWRJRCwgcmVxdWVzdFdpdGhPcmln
aW5hbFVSTCk7Ci19Ci0KLXZvaWQgV2ViUHJvY2Vzczo6cmVzdW1lRG93bmxvYWQodWludDY0X3Qg
ZG93bmxvYWRJRCwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiByZXN1bWVEYXRhLCBjb25zdCBT
dHJpbmcmIHBhdGgsIGNvbnN0IFdlYktpdDo6U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiBzYW5k
Ym94RXh0ZW5zaW9uSGFuZGxlKQotewotICAgIGRvd25sb2FkTWFuYWdlcigpLnJlc3VtZURvd25s
b2FkKGRvd25sb2FkSUQsIHJlc3VtZURhdGEsIHBhdGgsIHNhbmRib3hFeHRlbnNpb25IYW5kbGUp
OwotfQotCi12b2lkIFdlYlByb2Nlc3M6OmNhbmNlbERvd25sb2FkKHVpbnQ2NF90IGRvd25sb2Fk
SUQpCi17Ci0gICAgZG93bmxvYWRNYW5hZ2VyKCkuY2FuY2VsRG93bmxvYWQoZG93bmxvYWRJRCk7
Ci19Ci0KIHZvaWQgV2ViUHJvY2Vzczo6c2V0RW5oYW5jZWRBY2Nlc3NpYmlsaXR5KGJvb2wgZmxh
ZykKIHsKICAgICBXZWJDb3JlOjpBWE9iamVjdENhY2hlOjpzZXRFbmhhbmNlZFVzZXJJbnRlcmZh
Y2VBY2Nlc3NpYmlsaXR5KGZsYWcpOwpAQCAtMTQ3MCwxOCArMTM4NywxMiBAQCB2b2lkIFdlYlBy
b2Nlc3M6OnByZWZldGNoRE5TKGNvbnN0IFN0cmluCiAgICAgaWYgKGhvc3RuYW1lLmlzRW1wdHko
KSkKICAgICAgICAgcmV0dXJuOwogCi0jaWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKLSAgICBp
ZiAodXNlc05ldHdvcmtQcm9jZXNzKCkpIHsKLSAgICAgICAgaWYgKG1fZG5zUHJlZmV0Y2hlZEhv
c3RzLmFkZChob3N0bmFtZSkuaXNOZXdFbnRyeSkKLSAgICAgICAgICAgIG5ldHdvcmtDb25uZWN0
aW9uKCktPmNvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3M6OlByZWZldGNoRE5TKGhvc3RuYW1lKSwgMCk7Ci0gICAgICAgIC8vIFRoZSBETlMg
cHJlZmV0Y2hlZCBob3N0cyBjYWNoZSBpcyBvbmx5IHRvIGF2b2lkIGFza2luZyBmb3IgdGhlIHNh
bWUgaG9zdHMgdG9vIG1hbnkgdGltZXMKLSAgICAgICAgLy8gaW4gYSB2ZXJ5IHNob3J0IHBlcmlv
ZCBvZiB0aW1lLCBwcm9kdWNpbmcgYSBsb3Qgb2YgSVBDIHRyYWZmaWMuIFNvIHdlIGNsZWFyIHRo
aXMgY2FjaGUgYWZ0ZXIKLSAgICAgICAgLy8gc29tZSB0aW1lIG9mIG5vIEROUyByZXF1ZXN0cy4K
LSAgICAgICAgbV9kbnNQcmVmZXRjaEh5c3RlcmVyaXMuaW1wdWxzZSgpOwotICAgICAgICByZXR1
cm47Ci0gICAgfQotI2VuZGlmCi0gICAgV2ViQ29yZTo6cHJlZmV0Y2hETlMoaG9zdG5hbWUpOwor
ICAgIGlmIChtX2Ruc1ByZWZldGNoZWRIb3N0cy5hZGQoaG9zdG5hbWUpLmlzTmV3RW50cnkpCisg
ICAgICAgIG5ldHdvcmtDb25uZWN0aW9uKCktPmNvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OlByZWZldGNoRE5TKGhvc3RuYW1lKSwgMCk7
CisgICAgLy8gVGhlIEROUyBwcmVmZXRjaGVkIGhvc3RzIGNhY2hlIGlzIG9ubHkgdG8gYXZvaWQg
YXNraW5nIGZvciB0aGUgc2FtZSBob3N0cyB0b28gbWFueSB0aW1lcworICAgIC8vIGluIGEgdmVy
eSBzaG9ydCBwZXJpb2Qgb2YgdGltZSwgcHJvZHVjaW5nIGEgbG90IG9mIElQQyB0cmFmZmljLiBT
byB3ZSBjbGVhciB0aGlzIGNhY2hlIGFmdGVyCisgICAgLy8gc29tZSB0aW1lIG9mIG5vIEROUyBy
ZXF1ZXN0cy4KKyAgICBtX2Ruc1ByZWZldGNoSHlzdGVyZXJpcy5pbXB1bHNlKCk7CiB9CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYktpdApJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
cm9jZXNzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9j
ZXNzLmgJKHJldmlzaW9uIDE5MjYwMSkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UHJvY2Vzcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw3ICsyOCw2IEBACiAKICNpbmNsdWRlICJD
YWNoZU1vZGVsLmgiCiAjaW5jbHVkZSAiQ2hpbGRQcm9jZXNzLmgiCi0jaW5jbHVkZSAiRG93bmxv
YWRNYW5hZ2VyLmgiCiAjaW5jbHVkZSAiRHJhd2luZ0FyZWEuaCIKICNpbmNsdWRlICJQbHVnaW5Q
cm9jZXNzQ29ubmVjdGlvbk1hbmFnZXIuaCIKICNpbmNsdWRlICJSZXNvdXJjZUNhY2hlc1RvQ2xl
YXIuaCIKQEAgLTcxLDkgKzcwLDkgQEAgc3RydWN0IFNlY3VyaXR5T3JpZ2luRGF0YTsKIAogbmFt
ZXNwYWNlIFdlYktpdCB7CiAKLWNsYXNzIERvd25sb2FkTWFuYWdlcjsKIGNsYXNzIEV2ZW50RGlz
cGF0Y2hlcjsKIGNsYXNzIEluamVjdGVkQnVuZGxlOworY2xhc3MgTmV0d29ya1Byb2Nlc3NDb25u
ZWN0aW9uOwogY2xhc3MgT2JqQ09iamVjdEdyYXBoOwogY2xhc3MgVXNlckRhdGE7CiBjbGFzcyBX
ZWJDb25uZWN0aW9uVG9VSVByb2Nlc3M7CkBAIC04MiwyMiArODEsMTcgQEAgY2xhc3MgV2ViSWNv
bkRhdGFiYXNlUHJveHk7CiBjbGFzcyBXZWJQYWdlOwogY2xhc3MgV2ViUGFnZUdyb3VwUHJveHk7
CiBjbGFzcyBXZWJQcm9jZXNzU3VwcGxlbWVudDsKK2NsYXNzIFdlYlJlc291cmNlTG9hZFNjaGVk
dWxlcjsKIHN0cnVjdCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzOwogc3RydWN0IFdlYlBhZ2VH
cm91cERhdGE7CiBzdHJ1Y3QgV2ViUHJlZmVyZW5jZXNTdG9yZTsKIHN0cnVjdCBXZWJQcm9jZXNz
Q3JlYXRpb25QYXJhbWV0ZXJzOwogCi0jaWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKLWNsYXNz
IE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbjsKLWNsYXNzIFdlYlJlc291cmNlTG9hZFNjaGVkdWxl
cjsKLSNlbmRpZgotCiAjaWYgRU5BQkxFKERBVEFCQVNFX1BST0NFU1MpCiBjbGFzcyBXZWJUb0Rh
dGFiYXNlUHJvY2Vzc0Nvbm5lY3Rpb247CiAjZW5kaWYKIAotY2xhc3MgV2ViUHJvY2VzcyA6IHB1
YmxpYyBDaGlsZFByb2Nlc3MsIHByaXZhdGUgRG93bmxvYWRNYW5hZ2VyOjpDbGllbnQgewotICAg
IGZyaWVuZCBjbGFzcyBOZXZlckRlc3Ryb3llZDxEb3dubG9hZE1hbmFnZXI+OworY2xhc3MgV2Vi
UHJvY2VzcyA6IHB1YmxpYyBDaGlsZFByb2Nlc3MgewogcHVibGljOgogICAgIHN0YXRpYyBXZWJQ
cm9jZXNzJiBzaW5nbGV0b24oKTsKIApAQCAtMTQ3LDcgKzE0MSw2IEBAIHB1YmxpYzoKICNlbmRp
ZgogICAgIAogICAgIGNvbnN0IFRleHRDaGVja2VyU3RhdGUmIHRleHRDaGVja2VyU3RhdGUoKSBj
b25zdCB7IHJldHVybiBtX3RleHRDaGVja2VyU3RhdGU7IH0KLSAgICBEb3dubG9hZE1hbmFnZXIm
IGRvd25sb2FkTWFuYWdlcigpOwogCiAgICAgdm9pZCBjbGVhclJlc291cmNlQ2FjaGVzKFJlc291
cmNlQ2FjaGVzVG9DbGVhciA9IEFsbFJlc291cmNlQ2FjaGVzKTsKICAgICAKQEAgLTE1NywxMyAr
MTUwLDkgQEAgcHVibGljOgogCiAgICAgRXZlbnREaXNwYXRjaGVyJiBldmVudERpc3BhdGNoZXIo
KSB7IHJldHVybiAqbV9ldmVudERpc3BhdGNoZXI7IH0KIAotICAgIGJvb2wgdXNlc05ldHdvcmtQ
cm9jZXNzKCkgY29uc3Q7Ci0KLSNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQogICAgIE5ldHdv
cmtQcm9jZXNzQ29ubmVjdGlvbiogbmV0d29ya0Nvbm5lY3Rpb24oKTsKICAgICB2b2lkIG5ldHdv
cmtQcm9jZXNzQ29ubmVjdGlvbkNsb3NlZChOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24qKTsKICAg
ICBXZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXImIHdlYlJlc291cmNlTG9hZFNjaGVkdWxlcigpOwot
I2VuZGlmCiAKICNpZiBFTkFCTEUoREFUQUJBU0VfUFJPQ0VTUykKICAgICB2b2lkIHdlYlRvRGF0
YWJhc2VQcm9jZXNzQ29ubmVjdGlvbkNsb3NlZChXZWJUb0RhdGFiYXNlUHJvY2Vzc0Nvbm5lY3Rp
b24qKTsKQEAgLTIyMiwxMiArMjExLDYgQEAgcHJpdmF0ZToKICAgICBXZWJQcm9jZXNzKCk7CiAg
ICAgfldlYlByb2Nlc3MoKTsKIAotICAgIC8vIERvd25sb2FkTWFuYWdlcjo6Q2xpZW50LgotICAg
IHZpcnR1YWwgdm9pZCBkaWRDcmVhdGVEb3dubG9hZCgpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwg
dm9pZCBkaWREZXN0cm95RG93bmxvYWQoKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIElQQzo6Q29u
bmVjdGlvbiogZG93bmxvYWRQcm94eUNvbm5lY3Rpb24oKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFs
IEF1dGhlbnRpY2F0aW9uTWFuYWdlciYgZG93bmxvYWRzQXV0aGVudGljYXRpb25NYW5hZ2VyKCkg
b3ZlcnJpZGU7Ci0KICAgICB2b2lkIGluaXRpYWxpemVXZWJQcm9jZXNzKFdlYlByb2Nlc3NDcmVh
dGlvblBhcmFtZXRlcnMmJik7CiAgICAgdm9pZCBwbGF0Zm9ybUluaXRpYWxpemVXZWJQcm9jZXNz
KFdlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMmJik7CiAKQEAgLTM1OSwxNCArMzQyLDExIEBA
IHByaXZhdGU6CiAKICAgICBXZWJJY29uRGF0YWJhc2VQcm94eSogbV9pY29uRGF0YWJhc2VQcm94
eTsKIAotI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCiAgICAgdm9pZCBlbnN1cmVOZXR3b3Jr
UHJvY2Vzc0Nvbm5lY3Rpb24oKTsKICAgICBSZWZQdHI8TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9u
PiBtX25ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbjsKLSAgICBib29sIG1fdXNlc05ldHdvcmtQcm9j
ZXNzOwogICAgIFdlYlJlc291cmNlTG9hZFNjaGVkdWxlciogbV93ZWJSZXNvdXJjZUxvYWRTY2hl
ZHVsZXI7CiAgICAgSGFzaFNldDxTdHJpbmc+IG1fZG5zUHJlZmV0Y2hlZEhvc3RzOwogICAgIFdl
YkNvcmU6Okh5c3RlcmVzaXNBY3Rpdml0eSBtX2Ruc1ByZWZldGNoSHlzdGVyZXJpczsKLSNlbmRp
ZgogCiAjaWYgRU5BQkxFKERBVEFCQVNFX1BST0NFU1MpCiAgICAgdm9pZCBlbnN1cmVXZWJUb0Rh
dGFiYXNlUHJvY2Vzc0Nvbm5lY3Rpb24oKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMuaW4JKHJldmlzaW9uIDE5MjYwMSkKKysrIFNv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgkod29ya2luZyBj
b3B5KQpAQCAtNjIsMTIgKzYyLDYgQEAgbWVzc2FnZXMgLT4gV2ViUHJvY2VzcyBMZWdhY3lSZWNl
aXZlciB7CiAgICAgdm9pZCBTdGFydE1lbW9yeVNhbXBsZXIoV2ViS2l0OjpTYW5kYm94RXh0ZW5z
aW9uOjpIYW5kbGUgc2FtcGxlTG9nRmlsZUhhbmRsZSwgU3RyaW5nIHNhbXBsZUxvZ0ZpbGVQYXRo
LCBkb3VibGUgaW50ZXJ2YWwpOwogICAgIHZvaWQgU3RvcE1lbW9yeVNhbXBsZXIoKTsKIAotICAg
ICMgRG93bmxvYWRzLiBUaGlzIHNob3VsZCByZWFsbHkgYmUgaW4gYSBEb3dubG9hZC5tZXNzYWdl
cy5pbiwgYnV0IGl0IHNlZW1lZCB1bm5lY2Vzc2FyeSB0byBjcmVhdGUgYSBuZXcgZmlsZSBqdXN0
IGZvcgotICAgICMgdGhyZWUgbWVzc2FnZXMuCi0gICAgRG93bmxvYWRSZXF1ZXN0KFdlYkNvcmU6
OlNlc3Npb25JRCBzZXNzaW9uSUQsIHVpbnQ2NF90IGRvd25sb2FkSUQsIHVpbnQ2NF90IGluaXRp
YXRpbmdQYWdlSUQsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCByZXF1ZXN0KQotICAgIFJlc3Vt
ZURvd25sb2FkKHVpbnQ2NF90IGRvd25sb2FkSUQsIElQQzo6RGF0YVJlZmVyZW5jZSByZXN1bWVE
YXRhLCBTdHJpbmcgcGF0aCwgV2ViS2l0OjpTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUgc2FuZGJv
eEV4dGVuc2lvbkhhbmRsZSkKLSAgICBDYW5jZWxEb3dubG9hZCh1aW50NjRfdCBkb3dubG9hZElE
KQotCiAgICAgU2V0VGV4dENoZWNrZXJTdGF0ZShzdHJ1Y3QgV2ViS2l0OjpUZXh0Q2hlY2tlclN0
YXRlIHRleHRDaGVja2VyU3RhdGUpCiAKICAgICBTZXRFbmhhbmNlZEFjY2Vzc2liaWxpdHkoYm9v
bCBmbGFnKQpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9GaWxlQVBJL0Jsb2JSZWdp
c3RyeVByb3h5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0Zp
bGVBUEkvQmxvYlJlZ2lzdHJ5UHJveHkuY3BwCShyZXZpc2lvbiAxOTI2MDEpCisrKyBTb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL0ZpbGVBUEkvQmxvYlJlZ2lzdHJ5UHJveHkuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0yNiw4ICsyNiw2IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAi
QmxvYlJlZ2lzdHJ5UHJveHkuaCIKIAotI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCi0KICNp
bmNsdWRlICJOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzc01lc3NhZ2VzLmgiCiAjaW5jbHVk
ZSAiTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmgiCiAjaW5jbHVkZSAiV2ViQ29yZUFyZ3VtZW50
Q29kZXJzLmgiCkBAIC00MCw4ICszOCw2IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiB2b2lkIEJs
b2JSZWdpc3RyeVByb3h5OjpyZWdpc3RlckZpbGVCbG9iVVJMKGNvbnN0IFdlYkNvcmU6OlVSTCYg
dXJsLCBQYXNzUmVmUHRyPEJsb2JEYXRhRmlsZVJlZmVyZW5jZT4gZmlsZSwgY29uc3QgU3RyaW5n
JiBjb250ZW50VHlwZSkKIHsKLSAgICBBU1NFUlQoV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkudXNl
c05ldHdvcmtQcm9jZXNzKCkpOwotCiAgICAgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlIGV4dGVu
c2lvbkhhbmRsZTsKIAogICAgIC8vIEZpbGUgcGF0aCBjYW4gYmUgZW1wdHkgd2hlbiBzdWJtaXR0
aW5nIGEgZm9ybSBmaWxlIGlucHV0IHdpdGhvdXQgYSBmaWxlLCBzZWUgYnVnIDExMTc3OC4KQEAg
LTUzLDM2ICs0OSwyNiBAQCB2b2lkIEJsb2JSZWdpc3RyeVByb3h5OjpyZWdpc3RlckZpbGVCbG9i
CiAKIHZvaWQgQmxvYlJlZ2lzdHJ5UHJveHk6OnJlZ2lzdGVyQmxvYlVSTChjb25zdCBVUkwmIHVy
bCwgVmVjdG9yPEJsb2JQYXJ0PiBibG9iUGFydHMsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUp
CiB7Ci0gICAgQVNTRVJUKFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnVzZXNOZXR3b3JrUHJvY2Vz
cygpKTsKLQogICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLm5ldHdvcmtDb25uZWN0aW9uKCkt
PmNvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3M6OlJlZ2lzdGVyQmxvYlVSTCh1cmwsIGJsb2JQYXJ0cywgY29udGVudFR5cGUpLCAwKTsKIH0K
IAogdm9pZCBCbG9iUmVnaXN0cnlQcm94eTo6cmVnaXN0ZXJCbG9iVVJMKGNvbnN0IFVSTCYgdXJs
LCBjb25zdCBVUkwmIHNyY1VSTCkKIHsKLSAgICBBU1NFUlQoV2ViUHJvY2Vzczo6c2luZ2xldG9u
KCkudXNlc05ldHdvcmtQcm9jZXNzKCkpOwotCiAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCku
bmV0d29ya0Nvbm5lY3Rpb24oKS0+Y29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2Vzczo6UmVnaXN0ZXJCbG9iVVJMRnJvbVVSTCh1cmwsIHNyY1VS
TCksIDApOwogfQogCiB2b2lkIEJsb2JSZWdpc3RyeVByb3h5Ojp1bnJlZ2lzdGVyQmxvYlVSTChj
b25zdCBVUkwmIHVybCkKIHsKLSAgICBBU1NFUlQoV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkudXNl
c05ldHdvcmtQcm9jZXNzKCkpOwotCiAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkubmV0d29y
a0Nvbm5lY3Rpb24oKS0+Y29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2Vzczo6VW5yZWdpc3RlckJsb2JVUkwodXJsKSwgMCk7CiB9CiAKIHZvaWQg
QmxvYlJlZ2lzdHJ5UHJveHk6OnJlZ2lzdGVyQmxvYlVSTEZvclNsaWNlKGNvbnN0IFVSTCYgdXJs
LCBjb25zdCBVUkwmIHNyY1VSTCwgbG9uZyBsb25nIHN0YXJ0LCBsb25nIGxvbmcgZW5kKQogewot
ICAgIEFTU0VSVChXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS51c2VzTmV0d29ya1Byb2Nlc3MoKSk7
Ci0KICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5uZXR3b3JrQ29ubmVjdGlvbigpLT5jb25u
ZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpS
ZWdpc3RlckJsb2JVUkxGb3JTbGljZSh1cmwsIHNyY1VSTCwgc3RhcnQsIGVuZCksIDApOwogfQog
CiB1bnNpZ25lZCBsb25nIGxvbmcgQmxvYlJlZ2lzdHJ5UHJveHk6OmJsb2JTaXplKGNvbnN0IFVS
TCYgdXJsKQogewotICAgIEFTU0VSVChXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS51c2VzTmV0d29y
a1Byb2Nlc3MoKSk7Ci0KICAgICB1aW50NjRfdCByZXN1bHRTaXplOwogICAgIGlmICghV2ViUHJv
Y2Vzczo6c2luZ2xldG9uKCkubmV0d29ya0Nvbm5lY3Rpb24oKS0+Y29ubmVjdGlvbigpLT5zZW5k
U3luYyhNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkJsb2JTaXplKHVy
bCksIE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6QmxvYlNpemU6OlJl
cGx5KHJlc3VsdFNpemUpLCAwKSkKICAgICAgICAgcmV0dXJuIDA7CkBAIC05MCw1ICs3NiwzIEBA
IHVuc2lnbmVkIGxvbmcgbG9uZyBCbG9iUmVnaXN0cnlQcm94eTo6YmwKIH0KIAogfQotCi0jZW5k
aWYgLy8gRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvRmlsZUFQSS9CbG9iUmVnaXN0cnlQcm94eS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvRmlsZUFQSS9CbG9iUmVnaXN0cnlQcm94eS5oCShyZXZpc2lvbiAx
OTI2MDEpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0ZpbGVBUEkvQmxvYlJlZ2lzdHJ5
UHJveHkuaAkod29ya2luZyBjb3B5KQpAQCAtMjYsOCArMjYsNiBAQAogI2lmbmRlZiBCbG9iUmVn
aXN0cnlQcm94eV9oCiAjZGVmaW5lIEJsb2JSZWdpc3RyeVByb3h5X2gKIAotI2lmIEVOQUJMRShO
RVRXT1JLX1BST0NFU1MpCi0KICNpbmNsdWRlIDxXZWJDb3JlL0Jsb2JSZWdpc3RyeS5oPgogCiBu
YW1lc3BhY2UgV2ViS2l0IHsKQEAgLTQ0LDYgKzQyLDQgQEAgcHVibGljOgogCiB9CiAKLSNlbmRp
ZiAvLyBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQotCiAjZW5kaWYgLy8gQmxvYlJlZ2lzdHJ5UHJv
eHlfaApJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9j
ZXNzQ29ubmVjdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5jcHAJKHJldmlzaW9uIDE5MjYwMSkK
KysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5l
Y3Rpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw4ICszNyw2IEBACiAjaW5jbHVkZSA8V2Vi
Q29yZS9TZXNzaW9uSUQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NoYXJlZEJ1ZmZlci5oPgogCi0j
aWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKLQogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAK
IG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtOTgsNSArOTYsMyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNz
Q29ubmVjdGlvbjo6ZGlkQ2FjaGVSCiAjZW5kaWYKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0K
LSNlbmRpZiAvLyBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQpJbmRleDogU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5l
Y3Rpb24uaAkocmV2aXNpb24gMTkyNjAxKQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9O
ZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw4
ICszMSw2IEBACiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvdGV4
dC9XVEZTdHJpbmcuaD4KIAotI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCi0KIG5hbWVzcGFj
ZSBJUEMgewogY2xhc3MgRGF0YVJlZmVyZW5jZTsKIH0KQEAgLTgyLDcgKzgwLDQgQEAgcHJpdmF0
ZToKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKLSNlbmRpZiAvLyBFTkFCTEUoTkVUV09SS19Q
Uk9DRVNTKQotCi0KICNlbmRpZiAvLyBOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb25faApJbmRleDog
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlv
bi5tZXNzYWdlcy5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL05l
dHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLm1lc3NhZ2VzLmluCShyZXZpc2lvbiAxOTI2
MDEpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3ND
b25uZWN0aW9uLm1lc3NhZ2VzLmluCSh3b3JraW5nIGNvcHkpCkBAIC0yMCw4ICsyMCw2IEBACiAj
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCiAjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAKLSNpZiBFTkFCTEUoTkVUV09S
S19QUk9DRVNTKQotCiBtZXNzYWdlcyAtPiBOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24gTGVnYWN5
UmVjZWl2ZXIgewogCiAjaWYgRU5BQkxFKFNIQVJFQUJMRV9SRVNPVVJDRSkKQEAgLTI5LDUgKzI3
LDMgQEAgbWVzc2FnZXMgLT4gTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uIExlZwogI2VuZGlmCiAK
IH0KLQotI2VuZGlmIC8vIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCkluZGV4OiBTb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVyLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VM
b2FkU2NoZWR1bGVyLmNwcAkocmV2aXNpb24gMTkyNjAxKQorKysgU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZFNjaGVkdWxlci5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTUyLDggKzUyLDYgQEAKICNpbmNsdWRlIDxXZWJDb3JlL1N1YnJlc291cmNlTG9hZGVy
Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogCi0jaWYgRU5BQkxFKE5FVFdPUktf
UFJPQ0VTUykKLQogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIG5hbWVzcGFjZSBXZWJLaXQg
ewpAQCAtMjg2LDUgKzI4NCwzIEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVyOjpuZXR3
b3JrUHIKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KLSNlbmRpZiAvLyBFTkFCTEUoTkVU
V09SS19QUk9DRVNTKQpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9OZXR3b3JrL1dl
YlJlc291cmNlTG9hZFNjaGVkdWxlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXIuaAkocmV2aXNpb24gMTky
NjAxKQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9h
ZFNjaGVkdWxlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw4ICszMiw2IEBACiAjaW5jbHVkZSA8
V2ViQ29yZS9SZXNvdXJjZUxvYWRlci5oPgogI2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+CiAKLSNp
ZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQotCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3Mg
TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uOwpAQCAtNzcsNiArNzUsNCBAQCBwcml2YXRlOgogCiB9
IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAotI2VuZGlmIC8vIEVOQUJMRShORVRXT1JLX1BST0NFU1Mp
Ci0KICNlbmRpZiAvLyBXZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXJfaApJbmRleDogU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIu
Y3BwCShyZXZpc2lvbiAxOTI2MDEpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL05ldHdv
cmsvV2ViUmVzb3VyY2VMb2FkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw4ICsyNiw2IEBA
CiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiV2ViUmVzb3VyY2VMb2FkZXIuaCIKIAot
I2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCi0KICNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgi
CiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzQ29ubmVjdGlv
bi5oIgpAQCAtMjIxLDUgKzIxOSwzIEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkZXI6OmNhbkF1dGhl
bnRpY2F0ZUEKICNlbmRpZgogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQotI2VuZGlmIC8vIEVO
QUJMRShORVRXT1JLX1BST0NFU1MpCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL05l
dHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuaAkocmV2aXNpb24gMTkyNjAxKQor
KysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTI2LDggKzI2LDYgQEAKICNpZm5kZWYgV2ViUmVzb3VyY2VMb2Fk
ZXJfaAogI2RlZmluZSBXZWJSZXNvdXJjZUxvYWRlcl9oCiAKLSNpZiBFTkFCTEUoTkVUV09SS19Q
Uk9DRVNTKQotCiAjaW5jbHVkZSAiQ29ubmVjdGlvbi5oIgogI2luY2x1ZGUgIk1lc3NhZ2VTZW5k
ZXIuaCIKICNpbmNsdWRlICJTaGFyZWFibGVSZXNvdXJjZS5oIgpAQCAtOTQsNiArOTIsNCBAQCBw
cml2YXRlOgogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAotI2VuZGlmIC8vIEVOQUJMRShORVRX
T1JLX1BST0NFU1MpCi0KICNlbmRpZiAvLyBXZWJSZXNvdXJjZUxvYWRlcl9oCkluZGV4OiBTb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIubWVzc2FnZXMu
aW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJl
c291cmNlTG9hZGVyLm1lc3NhZ2VzLmluCShyZXZpc2lvbiAxOTI2MDEpCisrKyBTb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIubWVzc2FnZXMuaW4JKHdv
cmtpbmcgY29weSkKQEAgLTIwLDggKzIwLDYgQEAKICMgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKICMg
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KIAotI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCi0KIG1lc3NhZ2VzIC0+
IFdlYlJlc291cmNlTG9hZGVyIExlZ2FjeVJlY2VpdmVyIHsKICAgICBXaWxsU2VuZFJlcXVlc3Qo
V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9u
c2UgcmVkaXJlY3RSZXNwb25zZSkKICAgICBEaWRTZW5kRGF0YSh1aW50NjRfdCBieXRlc1NlbnQs
IHVpbnQ2NF90IHRvdGFsQnl0ZXNUb0JlU2VudCkKQEAgLTM5LDUgKzM3LDMgQEAgbWVzc2FnZXMg
LT4gV2ViUmVzb3VyY2VMb2FkZXIgTGVnYWN5UmVjZQogICAgIERpZFJlY2VpdmVSZXNvdXJjZShX
ZWJLaXQ6OlNoYXJlYWJsZVJlc291cmNlOjpIYW5kbGUgcmVzb3VyY2UsIGRvdWJsZSBmaW5pc2hU
aW1lKQogI2VuZGlmCiB9Ci0KLSNlbmRpZiAvLyBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQpJbmRl
eDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlQnJv
d3NlckZ1bmNzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1Bs
dWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVCcm93c2VyRnVuY3MuY3BwCShyZXZpc2lvbiAxOTI2MDEp
CisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVC
cm93c2VyRnVuY3MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDUzLDExICsxMDUzLDcgQEAgc3Rh
dGljIHZvaWQgaW5pdGlhbGl6ZUJyb3dzZXJGdW5jcyhOUE5ldAogICAgIG5ldHNjYXBlRnVuY3Mu
cG9wdXBjb250ZXh0bWVudSA9IDA7CiAgICAgbmV0c2NhcGVGdW5jcy5jb252ZXJ0cG9pbnQgPSAw
OwogI2VuZGlmCi0jaWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKICAgICBuZXRzY2FwZUZ1bmNz
LnVybHJlZGlyZWN0cmVzcG9uc2UgPSBOUE5fVVJMUmVkaXJlY3RSZXNwb25zZTsKLSNlbHNlCi0g
ICAgbmV0c2NhcGVGdW5jcy51cmxyZWRpcmVjdHJlc3BvbnNlID0gMDsKLSNlbmRpZgogfQogICAg
IAogTlBOZXRzY2FwZUZ1bmNzKiBuZXRzY2FwZUJyb3dzZXJGdW5jcygpCkluZGV4OiBTb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4uY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9O
ZXRzY2FwZVBsdWdpbi5jcHAJKHJldmlzaW9uIDE5MjYwMSkKKysrIFNvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTQwMCwxNiArNDAwLDEyIEBAIGJvb2wgTmV0c2NhcGVQbHVnaW46OmdldEF1dGhlbnRp
Y2F0aW9uSW4KIAogdm9pZCBOZXRzY2FwZVBsdWdpbjo6cmVnaXN0ZXJSZWRpcmVjdChOZXRzY2Fw
ZVBsdWdpblN0cmVhbSogc3RyZWFtLCBjb25zdCBVUkwmIHJlcXVlc3RVUkwsIGludCByZWRpcmVj
dFJlc3BvbnNlU3RhdHVzLCB2b2lkKiBub3RpZmljYXRpb25EYXRhKQogewotI2lmIEVOQUJMRShO
RVRXT1JLX1BST0NFU1MpCiAgICAgLy8gTlBQX1VSTFJlZGlyZWN0Tm90aWZ5IG1heSBzeW5jaHJv
bm91c2x5IHJlcXVlc3QgdGhpcyBzdHJlYW0gYmFjayBvdXQsIHNvIHNldCBpdCBmaXJzdAogICAg
IG1fcmVkaXJlY3RzLnNldChub3RpZmljYXRpb25EYXRhLCBzdGQ6Om1ha2VfcGFpcihzdHJlYW0s
IHJlcXVlc3RVUkwuc3RyaW5nKCkpKTsKICAgICBpZiAoIU5QUF9VUkxSZWRpcmVjdE5vdGlmeShy
ZXF1ZXN0VVJMLnN0cmluZygpLnV0ZjgoKS5kYXRhKCksIHJlZGlyZWN0UmVzcG9uc2VTdGF0dXMs
IG5vdGlmaWNhdGlvbkRhdGEpKSB7CiAgICAgICAgIG1fcmVkaXJlY3RzLnRha2Uobm90aWZpY2F0
aW9uRGF0YSk7CiAgICAgICAgIGNvbnRyb2xsZXIoKS0+Y29udGludWVTdHJlYW1Mb2FkKHN0cmVh
bS0+c3RyZWFtSUQoKSk7CiAgICAgfQotI2Vsc2UKLSAgICBjb250cm9sbGVyKCktPmNvbnRpbnVl
U3RyZWFtTG9hZChzdHJlYW0tPnN0cmVhbUlEKCkpOwotI2VuZGlmCiB9CiAKIHZvaWQgTmV0c2Nh
cGVQbHVnaW46OnVybFJlZGlyZWN0UmVzcG9uc2Uodm9pZCogbm90aWZ5RGF0YSwgYm9vbCBhbGxv
dykKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxh
dGZvcm1TdHJhdGVnaWVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHAJKHJldmlzaW9uIDE5
MjYwMSkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxh
dGZvcm1TdHJhdGVnaWVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjYsOSArMjYsMTIgQEAKICNp
bmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJXZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaCIKIAor
I2luY2x1ZGUgIkJsb2JSZWdpc3RyeVByb3h5LmgiCiAjaW5jbHVkZSAiQmxvY2tpbmdSZXNwb25z
ZU1hcC5oIgogI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlICJIYW5nRGV0ZWN0
aW9uRGlzYWJsZXIuaCIKKyNpbmNsdWRlICJOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzc01l
c3NhZ2VzLmgiCisjaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmgiCiAjaW5jbHVk
ZSAiTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMuaCIKICNpbmNsdWRlICJQbHVnaW5JbmZv
U3RvcmUuaCIKICNpbmNsdWRlICJTZXNzaW9uVHJhY2tlci5oIgpAQCAtNDQsNiArNDcsNyBAQAog
I2luY2x1ZGUgIldlYlBhc3RlYm9hcmRQcm94eU1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViUHJv
Y2Vzcy5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NQcm94eU1lc3NhZ2VzLmgiCisjaW5jbHVkZSAi
V2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVyLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9Db2xvci5oPgog
I2luY2x1ZGUgPFdlYkNvcmUvRG9jdW1lbnRMb2FkZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0lE
QkZhY3RvcnlCYWNrZW5kSW50ZXJmYWNlLmg+CkBAIC02MywxMyArNjcsNiBAQAogI2luY2x1ZGUg
PFdlYkNvcmUvVVJMLmg+CiAjaW5jbHVkZSA8d3RmL0F0b21pY3MuaD4KIAotI2lmIEVOQUJMRShO
RVRXT1JLX1BST0NFU1MpCi0jaW5jbHVkZSAiQmxvYlJlZ2lzdHJ5UHJveHkuaCIKLSNpbmNsdWRl
ICJOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzc01lc3NhZ2VzLmgiCi0jaW5jbHVkZSAiTmV0
d29ya1Byb2Nlc3NDb25uZWN0aW9uLmgiCi0jaW5jbHVkZSAiV2ViUmVzb3VyY2VMb2FkU2NoZWR1
bGVyLmgiCi0jZW5kaWYKLQogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIG5hbWVzcGFjZSBX
ZWJLaXQgewpAQCAtMTEyLDExNCArMTA5LDU2IEBAIFBsdWdpblN0cmF0ZWd5KiBXZWJQbGF0Zm9y
bVN0cmF0ZWdpZXM6OmMKIAogU3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y29va2llc0Zv
ckRPTShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IFVSTCYgZmly
c3RQYXJ0eSwgY29uc3QgVVJMJiB1cmwpCiB7Ci0jaWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykK
ICAgICBhdXRvJiB3ZWJQcm9jZXNzID0gV2ViUHJvY2Vzczo6c2luZ2xldG9uKCk7Ci0gICAgaWYg
KHdlYlByb2Nlc3MudXNlc05ldHdvcmtQcm9jZXNzKCkpIHsKLSAgICAgICAgU3RyaW5nIHJlc3Vs
dDsKLSAgICAgICAgaWYgKCF3ZWJQcm9jZXNzLm5ldHdvcmtDb25uZWN0aW9uKCktPmNvbm5lY3Rp
b24oKS0+c2VuZFN5bmMoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpD
b29raWVzRm9yRE9NKFNlc3Npb25UcmFja2VyOjpzZXNzaW9uSUQoc2Vzc2lvbiksIGZpcnN0UGFy
dHksIHVybCksIE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Q29va2ll
c0ZvckRPTTo6UmVwbHkocmVzdWx0KSwgMCkpCi0gICAgICAgICAgICByZXR1cm4gU3RyaW5nKCk7
Ci0gICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAgfQotI2VuZGlmCi0KLSAgICByZXR1cm4gV2Vi
Q29yZTo6Y29va2llc0ZvckRPTShzZXNzaW9uLCBmaXJzdFBhcnR5LCB1cmwpOworICAgIFN0cmlu
ZyByZXN1bHQ7CisgICAgaWYgKCF3ZWJQcm9jZXNzLm5ldHdvcmtDb25uZWN0aW9uKCktPmNvbm5l
Y3Rpb24oKS0+c2VuZFN5bmMoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
OjpDb29raWVzRm9yRE9NKFNlc3Npb25UcmFja2VyOjpzZXNzaW9uSUQoc2Vzc2lvbiksIGZpcnN0
UGFydHksIHVybCksIE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Q29v
a2llc0ZvckRPTTo6UmVwbHkocmVzdWx0KSwgMCkpCisgICAgICAgIHJldHVybiBTdHJpbmcoKTsK
KyAgICByZXR1cm4gcmVzdWx0OwogfQogCiB2b2lkIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6c2V0
Q29va2llc0Zyb21ET00oY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25z
dCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIGNvb2tpZVN0
cmluZykKIHsKLSNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQogICAgIGF1dG8mIHdlYlByb2Nl
c3MgPSBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKTsKLSAgICBpZiAod2ViUHJvY2Vzcy51c2VzTmV0
d29ya1Byb2Nlc3MoKSkgewotICAgICAgICB3ZWJQcm9jZXNzLm5ldHdvcmtDb25uZWN0aW9uKCkt
PmNvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3M6OlNldENvb2tpZXNGcm9tRE9NKFNlc3Npb25UcmFja2VyOjpzZXNzaW9uSUQoc2Vzc2lvbiks
IGZpcnN0UGFydHksIHVybCwgY29va2llU3RyaW5nKSwgMCk7Ci0gICAgICAgIHJldHVybjsKLSAg
ICB9Ci0jZW5kaWYKLQotICAgIFdlYkNvcmU6OnNldENvb2tpZXNGcm9tRE9NKHNlc3Npb24sIGZp
cnN0UGFydHksIHVybCwgY29va2llU3RyaW5nKTsKKyAgICB3ZWJQcm9jZXNzLm5ldHdvcmtDb25u
ZWN0aW9uKCktPmNvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3M6OlNldENvb2tpZXNGcm9tRE9NKFNlc3Npb25UcmFja2VyOjpzZXNzaW9uSUQo
c2Vzc2lvbiksIGZpcnN0UGFydHksIHVybCwgY29va2llU3RyaW5nKSwgMCk7CiB9CiAKIGJvb2wg
V2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjb29raWVzRW5hYmxlZChjb25zdCBOZXR3b3JrU3RvcmFn
ZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgVVJMJiB1cmwp
CiB7Ci0jaWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKLSAgICBhdXRvJiB3ZWJQcm9jZXNzID0g
V2ViUHJvY2Vzczo6c2luZ2xldG9uKCk7Ci0gICAgaWYgKHdlYlByb2Nlc3MudXNlc05ldHdvcmtQ
cm9jZXNzKCkpIHsKLSAgICAgICAgYm9vbCByZXN1bHQ7Ci0gICAgICAgIGlmICghd2ViUHJvY2Vz
cy5uZXR3b3JrQ29ubmVjdGlvbigpLT5jb25uZWN0aW9uKCktPnNlbmRTeW5jKE1lc3NhZ2VzOjpO
ZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Q29va2llc0VuYWJsZWQoU2Vzc2lvblRyYWNr
ZXI6OnNlc3Npb25JRChzZXNzaW9uKSwgZmlyc3RQYXJ0eSwgdXJsKSwgTWVzc2FnZXM6Ok5ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpDb29raWVzRW5hYmxlZDo6UmVwbHkocmVzdWx0KSwg
MCkpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIHJldHVybiByZXN1bHQ7Ci0g
ICAgfQotI2VuZGlmCi0KLSAgICByZXR1cm4gV2ViQ29yZTo6Y29va2llc0VuYWJsZWQoc2Vzc2lv
biwgZmlyc3RQYXJ0eSwgdXJsKTsKKyAgICBib29sIHJlc3VsdDsKKyAgICBpZiAoIVdlYlByb2Nl
c3M6OnNpbmdsZXRvbigpLm5ldHdvcmtDb25uZWN0aW9uKCktPmNvbm5lY3Rpb24oKS0+c2VuZFN5
bmMoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpDb29raWVzRW5hYmxl
ZChTZXNzaW9uVHJhY2tlcjo6c2Vzc2lvbklEKHNlc3Npb24pLCBmaXJzdFBhcnR5LCB1cmwpLCBN
ZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkNvb2tpZXNFbmFibGVkOjpS
ZXBseShyZXN1bHQpLCAwKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVybiByZXN1
bHQ7CiB9CiAKIFN0cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNvb2tpZVJlcXVlc3RIZWFk
ZXJGaWVsZFZhbHVlKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3Qg
VVJMJiBmaXJzdFBhcnR5LCBjb25zdCBVUkwmIHVybCkKIHsKLSNpZiBFTkFCTEUoTkVUV09SS19Q
Uk9DRVNTKQotICAgIGF1dG8mIHdlYlByb2Nlc3MgPSBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKTsK
LSAgICBpZiAod2ViUHJvY2Vzcy51c2VzTmV0d29ya1Byb2Nlc3MoKSkgewotICAgICAgICBTdHJp
bmcgcmVzdWx0OwotICAgICAgICBpZiAoIXdlYlByb2Nlc3MubmV0d29ya0Nvbm5lY3Rpb24oKS0+
Y29ubmVjdGlvbigpLT5zZW5kU3luYyhNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3M6OkNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKFNlc3Npb25UcmFja2VyOjpzZXNz
aW9uSUQoc2Vzc2lvbiksIGZpcnN0UGFydHksIHVybCksIE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2Vzczo6Q29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWU6OlJlcGx5KHJl
c3VsdCksIDApKQotICAgICAgICAgICAgcmV0dXJuIFN0cmluZygpOwotICAgICAgICByZXR1cm4g
cmVzdWx0OwotICAgIH0KLSNlbmRpZgotCi0gICAgcmV0dXJuIFdlYkNvcmU6OmNvb2tpZVJlcXVl
c3RIZWFkZXJGaWVsZFZhbHVlKHNlc3Npb24sIGZpcnN0UGFydHksIHVybCk7CisgICAgU3RyaW5n
IHJlc3VsdDsKKyAgICBpZiAoIVdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLm5ldHdvcmtDb25uZWN0
aW9uKCktPmNvbm5lY3Rpb24oKS0+c2VuZFN5bmMoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzOjpDb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShTZXNzaW9uVHJhY2tl
cjo6c2Vzc2lvbklEKHNlc3Npb24pLCBmaXJzdFBhcnR5LCB1cmwpLCBNZXNzYWdlczo6TmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlOjpS
ZXBseShyZXN1bHQpLCAwKSkKKyAgICAgICAgcmV0dXJuIFN0cmluZygpOworICAgIHJldHVybiBy
ZXN1bHQ7CiB9CiAKIGJvb2wgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpnZXRSYXdDb29raWVzKGNv
bnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgVVJMJiBmaXJzdFBhcnR5
LCBjb25zdCBVUkwmIHVybCwgVmVjdG9yPENvb2tpZT4mIHJhd0Nvb2tpZXMpCiB7Ci0jaWYgRU5B
QkxFKE5FVFdPUktfUFJPQ0VTUykKLSAgICBhdXRvJiB3ZWJQcm9jZXNzID0gV2ViUHJvY2Vzczo6
c2luZ2xldG9uKCk7Ci0gICAgaWYgKHdlYlByb2Nlc3MudXNlc05ldHdvcmtQcm9jZXNzKCkpIHsK
LSAgICAgICAgaWYgKCF3ZWJQcm9jZXNzLm5ldHdvcmtDb25uZWN0aW9uKCktPmNvbm5lY3Rpb24o
KS0+c2VuZFN5bmMoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpHZXRS
YXdDb29raWVzKFNlc3Npb25UcmFja2VyOjpzZXNzaW9uSUQoc2Vzc2lvbiksIGZpcnN0UGFydHks
IHVybCksIE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6R2V0UmF3Q29v
a2llczo6UmVwbHkocmF3Q29va2llcyksIDApKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwot
ICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0jZW5kaWYKLQotICAgIHJldHVybiBXZWJDb3Jl
OjpnZXRSYXdDb29raWVzKHNlc3Npb24sIGZpcnN0UGFydHksIHVybCwgcmF3Q29va2llcyk7Cisg
ICAgaWYgKCFXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5uZXR3b3JrQ29ubmVjdGlvbigpLT5jb25u
ZWN0aW9uKCktPnNlbmRTeW5jKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vz
czo6R2V0UmF3Q29va2llcyhTZXNzaW9uVHJhY2tlcjo6c2Vzc2lvbklEKHNlc3Npb24pLCBmaXJz
dFBhcnR5LCB1cmwpLCBNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6Okdl
dFJhd0Nvb2tpZXM6OlJlcGx5KHJhd0Nvb2tpZXMpLCAwKSkKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgIHJldHVybiB0cnVlOwogfQogCiB2b2lkIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6ZGVs
ZXRlQ29va2llKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgVVJM
JiB1cmwsIGNvbnN0IFN0cmluZyYgY29va2llTmFtZSkKIHsKLSNpZiBFTkFCTEUoTkVUV09SS19Q
Uk9DRVNTKQotICAgIGF1dG8mIHdlYlByb2Nlc3MgPSBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKTsK
LSAgICBpZiAod2ViUHJvY2Vzcy51c2VzTmV0d29ya1Byb2Nlc3MoKSkgewotICAgICAgICB3ZWJQ
cm9jZXNzLm5ldHdvcmtDb25uZWN0aW9uKCktPmNvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkRlbGV0ZUNvb2tpZShTZXNzaW9uVHJhY2tl
cjo6c2Vzc2lvbklEKHNlc3Npb24pLCB1cmwsIGNvb2tpZU5hbWUpLCAwKTsKLSAgICAgICAgcmV0
dXJuOwotICAgIH0KLSNlbmRpZgotCi0gICAgV2ViQ29yZTo6ZGVsZXRlQ29va2llKHNlc3Npb24s
IHVybCwgY29va2llTmFtZSk7CisgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkubmV0d29ya0Nv
bm5lY3Rpb24oKS0+Y29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2Vzczo6RGVsZXRlQ29va2llKFNlc3Npb25UcmFja2VyOjpzZXNzaW9uSUQoc2Vz
c2lvbiksIHVybCwgY29va2llTmFtZSksIDApOwogfQogCiAvLyBMb2FkZXJTdHJhdGVneQogCi0j
aWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKIFJlc291cmNlTG9hZFNjaGVkdWxlciogV2ViUGxh
dGZvcm1TdHJhdGVnaWVzOjpyZXNvdXJjZUxvYWRTY2hlZHVsZXIoKQogewotICAgIHN0YXRpYyBS
ZXNvdXJjZUxvYWRTY2hlZHVsZXIqIHNjaGVkdWxlcjsKLSAgICBpZiAoIXNjaGVkdWxlcikgewot
ICAgICAgICBhdXRvJiB3ZWJQcm9jZXNzID0gV2ViUHJvY2Vzczo6c2luZ2xldG9uKCk7Ci0gICAg
ICAgIGlmICh3ZWJQcm9jZXNzLnVzZXNOZXR3b3JrUHJvY2VzcygpKQotICAgICAgICAgICAgc2No
ZWR1bGVyID0gJndlYlByb2Nlc3Mud2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVyKCk7Ci0gICAgICAg
IGVsc2UKLSAgICAgICAgICAgIHNjaGVkdWxlciA9IFdlYkNvcmU6OnJlc291cmNlTG9hZFNjaGVk
dWxlcigpOwotICAgIH0KLSAgICAKLSAgICByZXR1cm4gc2NoZWR1bGVyOworICAgIHJldHVybiAm
V2ViUHJvY2Vzczo6c2luZ2xldG9uKCkud2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVyKCk7CiB9CiAK
IHZvaWQgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KE5l
dHdvcmtpbmdDb250ZXh0KiBjb250ZXh0LCB1bnNpZ25lZCBsb25nIHJlc291cmNlTG9hZElkZW50
aWZpZXIsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgU3RvcmVkQ3JlZGVudGlhbHMg
c3RvcmVkQ3JlZGVudGlhbHMsIENsaWVudENyZWRlbnRpYWxQb2xpY3kgY2xpZW50Q3JlZGVudGlh
bFBvbGljeSwgUmVzb3VyY2VFcnJvciYgZXJyb3IsIFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNl
LCBWZWN0b3I8Y2hhcj4mIGRhdGEpCiB7Ci0gICAgYXV0byYgd2ViUHJvY2VzcyA9IFdlYlByb2Nl
c3M6OnNpbmdsZXRvbigpOwotICAgIGlmICghd2ViUHJvY2Vzcy51c2VzTmV0d29ya1Byb2Nlc3Mo
KSkgewotICAgICAgICBMb2FkZXJTdHJhdGVneTo6bG9hZFJlc291cmNlU3luY2hyb25vdXNseShj
b250ZXh0LCByZXNvdXJjZUxvYWRJZGVudGlmaWVyLCByZXF1ZXN0LCBzdG9yZWRDcmVkZW50aWFs
cywgY2xpZW50Q3JlZGVudGlhbFBvbGljeSwgZXJyb3IsIHJlc3BvbnNlLCBkYXRhKTsKLSAgICAg
ICAgcmV0dXJuOwotICAgIH0KLQogICAgIFdlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQqIHdlYkNv
bnRleHQgPSBzdGF0aWNfY2FzdDxXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0Kj4oY29udGV4dCk7
CiAgICAgLy8gRklYTUU6IFNvbWUgZW50aXRpZXMgaW4gV2ViQ29yZSB1c2UgV2ViQ29yZSdzICJF
bXB0eUZyYW1lTG9hZGVyQ2xpZW50IiBpbnN0ZWFkIG9mIGhhdmluZyBhIHByb3BlciBXZWJGcmFt
ZUxvYWRlckNsaWVudC4KICAgICAvLyBFbXB0eUZyYW1lTG9hZGVyQ2xpZW50IHNob3VsZG4ndCBl
eGlzdCBhbmQgZXZlcnl0aGluZyBzaG91bGQgYmUgdXNpbmcgYSBXZWJGcmFtZUxvYWRlckNsaWVu
dCwKQEAgLTI0Myw3ICsxODIsNyBAQCB2b2lkIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6bG9hZFJl
c291cmNlCiAKICAgICBIYW5nRGV0ZWN0aW9uRGlzYWJsZXIgaGFuZ0RldGVjdGlvbkRpc2FibGVy
OwogCi0gICAgaWYgKCF3ZWJQcm9jZXNzLm5ldHdvcmtDb25uZWN0aW9uKCktPmNvbm5lY3Rpb24o
KS0+c2VuZFN5bmMoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpQZXJm
b3JtU3luY2hyb25vdXNMb2FkKGxvYWRQYXJhbWV0ZXJzKSwgTWVzc2FnZXM6Ok5ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzOjpQZXJmb3JtU3luY2hyb25vdXNMb2FkOjpSZXBseShlcnJvciwg
cmVzcG9uc2UsIGRhdGEpLCAwKSkgeworICAgIGlmICghV2ViUHJvY2Vzczo6c2luZ2xldG9uKCku
bmV0d29ya0Nvbm5lY3Rpb24oKS0+Y29ubmVjdGlvbigpLT5zZW5kU3luYyhNZXNzYWdlczo6TmV0
d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OlBlcmZvcm1TeW5jaHJvbm91c0xvYWQobG9hZFBh
cmFtZXRlcnMpLCBNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OlBlcmZv
cm1TeW5jaHJvbm91c0xvYWQ6OlJlcGx5KGVycm9yLCByZXNwb25zZSwgZGF0YSksIDApKSB7CiAg
ICAgICAgIHJlc3BvbnNlID0gUmVzb3VyY2VSZXNwb25zZSgpOwogICAgICAgICBlcnJvciA9IGlu
dGVybmFsRXJyb3IocmVxdWVzdC51cmwoKSk7CiAgICAgfQpAQCAtMjU2LDEyICsxOTUsNiBAQCB2
b2lkIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y3JlYXRlUGluZ0hhCiAgICAgaWYgKCFuZXR3b3Jr
aW5nQ29udGV4dCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgYXV0byYgd2ViUHJvY2VzcyA9IFdl
YlByb2Nlc3M6OnNpbmdsZXRvbigpOwotICAgIGlmICghd2ViUHJvY2Vzcy51c2VzTmV0d29ya1By
b2Nlc3MoKSkgewotICAgICAgICBMb2FkZXJTdHJhdGVneTo6Y3JlYXRlUGluZ0hhbmRsZShuZXR3
b3JraW5nQ29udGV4dCwgcmVxdWVzdCwgc2hvdWxkVXNlQ3JlZGVudGlhbFN0b3JhZ2UpOwotICAg
ICAgICByZXR1cm47Ci0gICAgfQotCiAgICAgV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dCogd2Vi
Q29udGV4dCA9IHN0YXRpY19jYXN0PFdlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQqPihuZXR3b3Jr
aW5nQ29udGV4dCk7CiAgICAgV2ViRnJhbWVMb2FkZXJDbGllbnQqIHdlYkZyYW1lTG9hZGVyQ2xp
ZW50ID0gd2ViQ29udGV4dC0+d2ViRnJhbWVMb2FkZXJDbGllbnQoKTsKICAgICBXZWJGcmFtZSog
d2ViRnJhbWUgPSB3ZWJGcmFtZUxvYWRlckNsaWVudCA/IHdlYkZyYW1lTG9hZGVyQ2xpZW50LT53
ZWJGcmFtZSgpIDogbnVsbHB0cjsKQEAgLTI3MywxNiArMjA2LDEzIEBAIHZvaWQgV2ViUGxhdGZv
cm1TdHJhdGVnaWVzOjpjcmVhdGVQaW5nSGEKICAgICBsb2FkUGFyYW1ldGVycy5hbGxvd1N0b3Jl
ZENyZWRlbnRpYWxzID0gc2hvdWxkVXNlQ3JlZGVudGlhbFN0b3JhZ2UgPyBBbGxvd1N0b3JlZENy
ZWRlbnRpYWxzIDogRG9Ob3RBbGxvd1N0b3JlZENyZWRlbnRpYWxzOwogICAgIGxvYWRQYXJhbWV0
ZXJzLnNob3VsZENsZWFyUmVmZXJyZXJPbkhUVFBTVG9IVFRQUmVkaXJlY3QgPSBuZXR3b3JraW5n
Q29udGV4dC0+c2hvdWxkQ2xlYXJSZWZlcnJlck9uSFRUUFNUb0hUVFBSZWRpcmVjdCgpOwogCi0g
ICAgd2ViUHJvY2Vzcy5uZXR3b3JrQ29ubmVjdGlvbigpLT5jb25uZWN0aW9uKCktPnNlbmQoTWVz
c2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpMb2FkUGluZyhsb2FkUGFyYW1l
dGVycyksIDApOworICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLm5ldHdvcmtDb25uZWN0aW9u
KCktPmNvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3M6OkxvYWRQaW5nKGxvYWRQYXJhbWV0ZXJzKSwgMCk7CiB9CiAKIEJsb2JSZWdpc3RyeSog
V2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjcmVhdGVCbG9iUmVnaXN0cnkoKQogewotICAgIGlmICgh
V2ViUHJvY2Vzczo6c2luZ2xldG9uKCkudXNlc05ldHdvcmtQcm9jZXNzKCkpCi0gICAgICAgIHJl
dHVybiBMb2FkZXJTdHJhdGVneTo6Y3JlYXRlQmxvYlJlZ2lzdHJ5KCk7CiAgICAgcmV0dXJuIG5l
dyBCbG9iUmVnaXN0cnlQcm94eTsgICAgCiB9Ci0jZW5kaWYKIAogLy8gUGx1Z2luU3RyYXRlZ3kK
IApJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0
Zm9ybVN0cmF0ZWdpZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oCShyZXZpc2lvbiAxOTI2MDEp
CisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3Jt
U3RyYXRlZ2llcy5oCSh3b3JraW5nIGNvcHkpCkBAIC01OSwxMiArNTksMTAgQEAgcHJpdmF0ZToK
ICAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlQ29va2llKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9y
YWdlU2Vzc2lvbiYsIGNvbnN0IFdlYkNvcmU6OlVSTCYsIGNvbnN0IFN0cmluZyYpIG92ZXJyaWRl
OwogCiAgICAgLy8gV2ViQ29yZTo6TG9hZGVyU3RyYXRlZ3kKLSNpZiBFTkFCTEUoTkVUV09SS19Q
Uk9DRVNTKQogICAgIHZpcnR1YWwgV2ViQ29yZTo6UmVzb3VyY2VMb2FkU2NoZWR1bGVyKiByZXNv
dXJjZUxvYWRTY2hlZHVsZXIoKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgbG9hZFJlc291
cmNlU3luY2hyb25vdXNseShXZWJDb3JlOjpOZXR3b3JraW5nQ29udGV4dCosIHVuc2lnbmVkIGxv
bmcgcmVzb3VyY2VMb2FkSWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0
JiwgV2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlhbHMsIFdlYkNvcmU6OkNsaWVudENyZWRlbnRpYWxQ
b2xpY3ksIFdlYkNvcmU6OlJlc291cmNlRXJyb3ImLCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNl
JiwgVmVjdG9yPGNoYXI+JiBkYXRhKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIFdlYkNvcmU6OkJs
b2JSZWdpc3RyeSogY3JlYXRlQmxvYlJlZ2lzdHJ5KCkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2
b2lkIGNyZWF0ZVBpbmdIYW5kbGUoV2ViQ29yZTo6TmV0d29ya2luZ0NvbnRleHQqLCBXZWJDb3Jl
OjpSZXNvdXJjZVJlcXVlc3QmLCBib29sIHNob3VsZFVzZUNyZWRlbnRpYWxTdG9yYWdlKSBvdmVy
cmlkZTsKLSNlbmRpZgogCiAgICAgLy8gV2ViQ29yZTo6UGx1Z2luU3RyYXRlZ3kKICAgICB2aXJ0
dWFsIHZvaWQgcmVmcmVzaFBsdWdpbnMoKSBvdmVycmlkZTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcAkocmV2aXNpb24gMTkyNjAxKQor
KysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMzMsMTAgKzMzLDEzIEBACiAjaW5jbHVkZSAiSW5qZWN0ZWRCdW5kbGVOb2Rl
SGFuZGxlLmgiCiAjaW5jbHVkZSAiSW5qZWN0ZWRCdW5kbGVSYW5nZUhhbmRsZS5oIgogI2luY2x1
ZGUgIkluamVjdGVkQnVuZGxlU2NyaXB0V29ybGQuaCIKKyNpbmNsdWRlICJOZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2Vzc01lc3NhZ2VzLmgiCisjaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3NDb25u
ZWN0aW9uLmgiCiAjaW5jbHVkZSAiUGx1Z2luVmlldy5oIgogI2luY2x1ZGUgIldLQVBJQ2FzdC5o
IgogI2luY2x1ZGUgIldLQnVuZGxlQVBJQ2FzdC5oIgogI2luY2x1ZGUgIldlYkNocm9tZUNsaWVu
dC5oIgorI2luY2x1ZGUgIldlYkNvcmVBcmd1bWVudENvZGVycy5oIgogI2luY2x1ZGUgIldlYkRv
Y3VtZW50TG9hZGVyLmgiCiAjaW5jbHVkZSAiV2ViUGFnZS5oIgogI2luY2x1ZGUgIldlYlBhZ2VQ
cm94eU1lc3NhZ2VzLmgiCkBAIC04MSwxMiArODQsNiBAQAogI2luY2x1ZGUgPFdlYkNvcmUvTGVn
YWN5V2ViQXJjaGl2ZS5oPgogI2VuZGlmCiAKLSNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQot
I2luY2x1ZGUgIk5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzTWVzc2FnZXMuaCIKLSNpbmNs
dWRlICJOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uaCIKLSNpbmNsdWRlICJXZWJDb3JlQXJndW1l
bnRDb2RlcnMuaCIKLSNlbmRpZgotCiAjaWZuZGVmIE5ERUJVRwogI2luY2x1ZGUgPHd0Zi9SZWZD
b3VudGVkTGVha0NvdW50ZXIuaD4KICNlbmRpZgpAQCAtMjU3LDIzICsyNTQsOSBAQCB2b2lkIFdl
YkZyYW1lOjpzdGFydERvd25sb2FkKGNvbnN0IFdlYkNvCiAgICAgbV9wb2xpY3lEb3dubG9hZElE
ID0gMDsKIAogICAgIGF1dG8mIHdlYlByb2Nlc3MgPSBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKTsK
LSNpZiBVU0UoTkVUV09SS19TRVNTSU9OKQotICAgIEFTU0VSVCh3ZWJQcm9jZXNzLnVzZXNOZXR3
b3JrUHJvY2VzcygpKTsKLSNlbmRpZgogICAgIFNlc3Npb25JRCBzZXNzaW9uSUQgPSBwYWdlKCkg
PyBwYWdlKCktPnNlc3Npb25JRCgpIDogU2Vzc2lvbklEOjpkZWZhdWx0U2Vzc2lvbklEKCk7Ci0j
aWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKLSAgICBpZiAod2ViUHJvY2Vzcy51c2VzTmV0d29y
a1Byb2Nlc3MoKSkgewotICAgICAgICB3ZWJQcm9jZXNzLm5ldHdvcmtDb25uZWN0aW9uKCktPmNv
bm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6
OlN0YXJ0RG93bmxvYWQoc2Vzc2lvbklELCBwb2xpY3lEb3dubG9hZElELCByZXF1ZXN0KSwgMCk7
Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0jZW5kaWYKLQotI2lmIFVTRShORVRXT1JLX1NFU1NJ
T04pCi0gICAgLy8gVXNpbmcgTkVUV09SS19TRVNTSU9OIHJlcXVpcmVzIHRoZSB1c2Ugb2YgYSBu
ZXR3b3JrIHByb2Nlc3MuCi0gICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSNlbHNl
Ci0gICAgd2ViUHJvY2Vzcy5kb3dubG9hZE1hbmFnZXIoKS5zdGFydERvd25sb2FkKHNlc3Npb25J
RCwgcG9saWN5RG93bmxvYWRJRCwgcmVxdWVzdCk7Ci0jZW5kaWYKKyAgICB3ZWJQcm9jZXNzLm5l
dHdvcmtDb25uZWN0aW9uKCktPmNvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6TmV0d29ya0Nv
bm5lY3Rpb25Ub1dlYlByb2Nlc3M6OlN0YXJ0RG93bmxvYWQoc2Vzc2lvbklELCBwb2xpY3lEb3du
bG9hZElELCByZXF1ZXN0KSwgMCk7CisgICAgcmV0dXJuOwogfQogCiB2b2lkIFdlYkZyYW1lOjpj
b252ZXJ0TWFpblJlc291cmNlTG9hZFRvRG93bmxvYWQoRG9jdW1lbnRMb2FkZXIqIGRvY3VtZW50
TG9hZGVyLCBTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVl
c3QsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQpAQCAtMjg2LDM5ICsyNjksMTIg
QEAgdm9pZCBXZWJGcmFtZTo6Y29udmVydE1haW5SZXNvdXJjZUxvYWRUbwogICAgIFN1YnJlc291
cmNlTG9hZGVyKiBtYWluUmVzb3VyY2VMb2FkZXIgPSBkb2N1bWVudExvYWRlci0+bWFpblJlc291
cmNlTG9hZGVyKCk7CiAKICAgICBhdXRvJiB3ZWJQcm9jZXNzID0gV2ViUHJvY2Vzczo6c2luZ2xl
dG9uKCk7Ci0jaWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKLSNpZiBVU0UoTkVUV09SS19TRVNT
SU9OKQotICAgIEFTU0VSVCh3ZWJQcm9jZXNzLnVzZXNOZXR3b3JrUHJvY2VzcygpKTsKLSNlbmRp
ZgotICAgIGlmICh3ZWJQcm9jZXNzLnVzZXNOZXR3b3JrUHJvY2VzcygpKSB7Ci0gICAgICAgIC8v
IFVzZSAwIHRvIGluZGljYXRlIHRoYXQgdGhlIHJlc291cmNlIGxvYWQgY2FuJ3QgYmUgY29udmVy
dGVkIGFuZCBhIG5ldyBkb3dubG9hZCBtdXN0IGJlIHN0YXJ0ZWQuCi0gICAgICAgIC8vIFRoaXMg
Y2FuIGhhcHBlbiBpZiB0aGVyZSBpcyBubyBsb2FkZXIgYmVjYXVzZSB0aGUgbWFpbiByZXNvdXJj
ZSBpcyBpbiB0aGUgV2ViQ29yZSBtZW1vcnkgY2FjaGUsCi0gICAgICAgIC8vIG9yIGJlY2F1c2Ug
dGhlIGNvbnZlcnNpb24gd2FzIGF0dGVtcHRlZCB3aGVuIG5vdCBjYWxsaW5nIFN1YnJlc291cmNl
TG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2UoKS4KLSAgICAgICAgdWludDY0X3QgbWFpblJlc291
cmNlTG9hZElkZW50aWZpZXI7Ci0gICAgICAgIGlmIChtYWluUmVzb3VyY2VMb2FkZXIpCi0gICAg
ICAgICAgICBtYWluUmVzb3VyY2VMb2FkSWRlbnRpZmllciA9IG1haW5SZXNvdXJjZUxvYWRlci0+
aWRlbnRpZmllcigpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBtYWluUmVzb3VyY2VMb2Fk
SWRlbnRpZmllciA9IDA7Ci0KLSAgICAgICAgd2ViUHJvY2Vzcy5uZXR3b3JrQ29ubmVjdGlvbigp
LT5jb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzOjpDb252ZXJ0TWFpblJlc291cmNlTG9hZFRvRG93bmxvYWQoc2Vzc2lvbklELCBtYWluUmVz
b3VyY2VMb2FkSWRlbnRpZmllciwgcG9saWN5RG93bmxvYWRJRCwgcmVxdWVzdCwgcmVzcG9uc2Up
LCAwKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSNlbmRpZgotCi0gICAgaWYgKCFtYWluUmVz
b3VyY2VMb2FkZXIpIHsKLSAgICAgICAgLy8gVGhlIG1haW4gcmVzb3VyY2UgaGFzIGFscmVhZHkg
YmVlbiBsb2FkZWQuIFN0YXJ0IGEgbmV3IGRvd25sb2FkIGluc3RlYWQuCi0jaWYgIVVTRShORVRX
T1JLX1NFU1NJT04pCi0gICAgICAgIHdlYlByb2Nlc3MuZG93bmxvYWRNYW5hZ2VyKCkuc3RhcnRE
b3dubG9hZChzZXNzaW9uSUQsIHBvbGljeURvd25sb2FkSUQsIHJlcXVlc3QpOwotI2VuZGlmCi0g
ICAgICAgIHJldHVybjsKLSAgICB9CisgICAgLy8gVXNlIDAgdG8gaW5kaWNhdGUgdGhhdCB0aGUg
cmVzb3VyY2UgbG9hZCBjYW4ndCBiZSBjb252ZXJ0ZWQgYW5kIGEgbmV3IGRvd25sb2FkIG11c3Qg
YmUgc3RhcnRlZC4KKyAgICAvLyBUaGlzIGNhbiBoYXBwZW4gaWYgdGhlcmUgaXMgbm8gbG9hZGVy
IGJlY2F1c2UgdGhlIG1haW4gcmVzb3VyY2UgaXMgaW4gdGhlIFdlYkNvcmUgbWVtb3J5IGNhY2hl
LAorICAgIC8vIG9yIGJlY2F1c2UgdGhlIGNvbnZlcnNpb24gd2FzIGF0dGVtcHRlZCB3aGVuIG5v
dCBjYWxsaW5nIFN1YnJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2UoKS4KKyAgICB1
aW50NjRfdCBtYWluUmVzb3VyY2VMb2FkSWRlbnRpZmllciA9IG1haW5SZXNvdXJjZUxvYWRlciA/
IG1haW5SZXNvdXJjZUxvYWRlci0+aWRlbnRpZmllcigpIDogMDsKIAotI2lmIFVTRShORVRXT1JL
X1NFU1NJT04pCi0gICAgLy8gVXNpbmcgTkVUV09SS19TRVNTSU9OIHJlcXVpcmVzIHRoZSB1c2Ug
b2YgYSBuZXR3b3JrIHByb2Nlc3MuCi0gICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsK
LSNlbHNlCi0gICAgd2ViUHJvY2Vzcy5kb3dubG9hZE1hbmFnZXIoKS5jb252ZXJ0SGFuZGxlVG9E
b3dubG9hZChwb2xpY3lEb3dubG9hZElELCBkb2N1bWVudExvYWRlci0+bWFpblJlc291cmNlTG9h
ZGVyKCktPmhhbmRsZSgpLCByZXF1ZXN0LCByZXNwb25zZSk7Ci0jZW5kaWYKKyAgICB3ZWJQcm9j
ZXNzLm5ldHdvcmtDb25uZWN0aW9uKCktPmNvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6TmV0
d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkNvbnZlcnRNYWluUmVzb3VyY2VMb2FkVG9Eb3du
bG9hZChzZXNzaW9uSUQsIG1haW5SZXNvdXJjZUxvYWRJZGVudGlmaWVyLCBwb2xpY3lEb3dubG9h
ZElELCByZXF1ZXN0LCByZXNwb25zZSksIDApOwogfQogCiBTdHJpbmcgV2ViRnJhbWU6OnNvdXJj
ZSgpIGNvbnN0CkluZGV4OiBTb3VyY2UvY21ha2UvT3B0aW9uc0VmbC5jbWFrZQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvY21ha2UvT3B0aW9uc0VmbC5jbWFrZQkocmV2aXNpb24gMTkyNjAxKQorKysg
U291cmNlL2NtYWtlL09wdGlvbnNFZmwuY21ha2UJKHdvcmtpbmcgY29weSkKQEAgLTEwNiw3ICsx
MDYsNiBAQCBXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfCiBXRUJLSVRf
T1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfTkFWSUdBVE9SX0NPTlRFTlRfVVRJTFMg
UFVCTElDIE9OKQogV0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX05BVklH
QVRPUl9IV0NPTkNVUlJFTkNZIFBVQkxJQyBPTikKIFdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JU
X1ZBTFVFKEVOQUJMRV9ORVRTQ0FQRV9QTFVHSU5fQVBJIFBVQkxJQyBPTikKLVdFQktJVF9PUFRJ
T05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9ORVRXT1JLX1BST0NFU1MgUFVCTElDIE9OKQog
V0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX05PU05JRkYgUFVCTElDIE9O
KQogV0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX1BPSU5URVJfTE9DSyBQ
UklWQVRFIE9GRikKIFdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9QVUJM
SUNfU1VGRklYX0xJU1QgUFJJVkFURSBPTikKSW5kZXg6IFNvdXJjZS9jbWFrZS9PcHRpb25zR1RL
LmNtYWtlCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9jbWFrZS9PcHRpb25zR1RLLmNtYWtlCShyZXZp
c2lvbiAxOTI2MDEpCisrKyBTb3VyY2UvY21ha2UvT3B0aW9uc0dUSy5jbWFrZQkod29ya2luZyBj
b3B5KQpAQCAtMTg2LDcgKzE4Niw2IEBAIFdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVF
KEVOQUJMRV8KIFdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9WSUVXX01P
REVfQ1NTX01FRElBIFBSSVZBVEUgT04pCiBXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxV
RShFTkFCTEVfV0VCX1RJTUlORyBQUklWQVRFIE9OKQogV0VCS0lUX09QVElPTl9ERUZBVUxUX1BP
UlRfVkFMVUUoRU5BQkxFX1dFQkdMIFBSSVZBVEUgT04pCi1XRUJLSVRfT1BUSU9OX0RFRkFVTFRf
UE9SVF9WQUxVRShFTkFCTEVfTkVUV09SS19QUk9DRVNTIFBSSVZBVEUgT04pCiBXRUJLSVRfT1BU
SU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfVEhSRUFERURfQ09NUE9TSVRPUiBQUklWQVRF
IE9GRikKIFdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9TSEFET1dfRE9N
IFBSSVZBVEUgT0ZGKQogCkluZGV4OiBTb3VyY2UvY21ha2UvT3B0aW9uc01hYy5jbWFrZQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvY21ha2UvT3B0aW9uc01hYy5jbWFrZQkocmV2aXNpb24gMTkyNjAx
KQorKysgU291cmNlL2NtYWtlL09wdGlvbnNNYWMuY21ha2UJKHdvcmtpbmcgY29weSkKQEAgLTIy
MCw3ICsyMjAsNiBAQCBXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfCiAK
IFdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9TQU5EQk9YX0VYVEVOU0lP
TlMgUFJJVkFURSBPTikKIFdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9X
RUJfUFJPQ0VTU19TQU5EQk9YIFBSSVZBVEUgT04pCi1XRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9S
VF9WQUxVRShFTkFCTEVfTkVUV09SS19QUk9DRVNTIFBSSVZBVEUgT04pCiBXRUJLSVRfT1BUSU9O
X0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfREFUQUJBU0VfUFJPQ0VTUyBQUklWQVRFIE9OKQog
V0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX1BMVUdJTl9QUk9DRVNTIFBS
SVZBVEUgT04pCiBXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfTUVNT1JZ
X1NBTVBMRVIgUFJJVkFURSBPTikKSW5kZXg6IFNvdXJjZS9jbWFrZS9XZWJLaXRGZWF0dXJlcy5j
bWFrZQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvY21ha2UvV2ViS2l0RmVhdHVyZXMuY21ha2UJKHJl
dmlzaW9uIDE5MjYwMSkKKysrIFNvdXJjZS9jbWFrZS9XZWJLaXRGZWF0dXJlcy5jbWFrZQkod29y
a2luZyBjb3B5KQpAQCAtMTI4LDcgKzEyOCw2IEBAIG1hY3JvKFdFQktJVF9PUFRJT05fQkVHSU4p
CiAgICAgV0VCS0lUX09QVElPTl9ERUZJTkUoRU5BQkxFX05BVklHQVRPUl9IV0NPTkNVUlJFTkNZ
ICJUb2dnbGUgTmF2aWdhdG9yIGhhcmR3YXJlIGNvbmN1cnJlbmN5IHN1cHBvcnQiIFBSSVZBVEUg
T04pCiAgICAgV0VCS0lUX09QVElPTl9ERUZJTkUoRU5BQkxFX05PU05JRkYgIlRvZ2dsZSBzdXBw
b3J0IGZvciAnWC1Db250ZW50LVR5cGUtT3B0aW9uczogbm9zbmlmZiciIFBSSVZBVEUgT0ZGKQog
ICAgIFdFQktJVF9PUFRJT05fREVGSU5FKEVOQUJMRV9ORVRTQ0FQRV9QTFVHSU5fQVBJICJUb2dn
bGUgTmV0c2NhcGUgUGx1Z2luIHN1cHBvcnQiIFBSSVZBVEUgT04pCi0gICAgV0VCS0lUX09QVElP
Tl9ERUZJTkUoRU5BQkxFX05FVFdPUktfUFJPQ0VTUyAiVG9nZ2xlIGRlZGljYXRlZCBuZXR3b3Jr
IHByb2Nlc3Mgc3VwcG9ydCBpbiBXZWJLaXQyIiBQUklWQVRFIE9GRikKICAgICBXRUJLSVRfT1BU
SU9OX0RFRklORShFTkFCTEVfTk9USUZJQ0FUSU9OUyAiVG9nZ2xlIERlc2t0b3AgTm90aWZpY2F0
aW9ucyBTdXBwb3J0IiBQUklWQVRFIE9GRikKICAgICBXRUJLSVRfT1BUSU9OX0RFRklORShFTkFC
TEVfT1JJRU5UQVRJT05fRVZFTlRTICJUb2dnbGUgT3JpZW50YXRpb24gRXZlbnRzIHN1cHBvcnQi
IFBSSVZBVEUgT0ZGKQogICAgIFdFQktJVF9PUFRJT05fREVGSU5FKEVOQUJMRV9QREZLSVRfUExV
R0lOICJUb2dnbGUgUERGS2l0IHBsdWdpbiBzdXBwb3J0IiBQUklWQVRFIE9GRikKSW5kZXg6IFRv
b2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJldmlzaW9uIDE5
MjY1MykKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE1IEBA
CisyMDE1LTExLTE5ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+
CisKKyAgICAgICAgUmVtb3ZlIHRoZSBub24tTmV0d29ya1Byb2Nlc3MgY29uZmlndXJhdGlvbnMK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MTQxOAor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXQyL21hYy9HZXRQSURBZnRlckFib3J0ZWRQcm9jZXNzTGF1bmNo
LmNwcDoKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorICAgICAgICAqIFdlYktpdFRl
c3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV1RSOjpUZXN0Q29udHJvbGxl
cjo6Z2VuZXJhdGVQYWdlQ29uZmlndXJhdGlvbik6CisKIDIwMTUtMTEtMTkgIEFsZXhleSBQcm9z
a3VyeWFrb3YgIDxhcEBhcHBsZS5jb20+CiAKICAgICAgICAgTGF5b3V0VGVzdFJlbGF5IHByb2Nl
c3NlcyBsZWFrIG9uIGlPUyB0ZXN0ZXJzCkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdDIvbWFjL0dldFBJREFmdGVyQWJvcnRlZFByb2Nlc3NMYXVuY2guY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9tYWMvR2V0UElEQWZ0ZXJB
Ym9ydGVkUHJvY2Vzc0xhdW5jaC5jcHAJKHJldmlzaW9uIDE5MjYwMSkKKysrIFRvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9tYWMvR2V0UElEQWZ0ZXJBYm9ydGVkUHJvY2Vzc0xhdW5j
aC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQyLDcgKzQyLDYgQEAgc3RhdGljIHZvaWQgZGlkRmlu
aXNoTG9hZEZvckZyYW1lKFdLUGFnZQogVEVTVChXZWJLaXQyLCBHZXRQSURBZnRlckFib3J0ZWRQ
cm9jZXNzTGF1bmNoKQogewogICAgIFdLUmV0YWluUHRyPFdLQ29udGV4dFJlZj4gY29udGV4dChB
ZG9wdFdLLCBXS0NvbnRleHRDcmVhdGUoKSk7Ci0gICAgV0tDb250ZXh0U2V0VXNlc05ldHdvcmtQ
cm9jZXNzKGNvbnRleHQuZ2V0KCksIHRydWUpOwogCiAgICAgUGxhdGZvcm1XZWJWaWV3IHdlYlZp
ZXcoY29udGV4dC5nZXQoKSk7CiAKSW5kZXg6IFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENv
bnRyb2xsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENv
bnRyb2xsZXIuY3BwCShyZXZpc2lvbiAxOTI2MDEpCisrKyBUb29scy9XZWJLaXRUZXN0UnVubmVy
L1Rlc3RDb250cm9sbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDAwLDExICs0MDAsNiBAQCBX
S1JldGFpblB0cjxXS1BhZ2VDb25maWd1cmF0aW9uUmVmPiBUZXN0CiAKICAgICBtX2dlb2xvY2F0
aW9uUHJvdmlkZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEdlb2xvY2F0aW9uUHJvdmlkZXJNb2NrPiht
X2NvbnRleHQuZ2V0KCkpOwogCi0jaWYgUExBVEZPUk0oRUZMKQotICAgIFdLQ29udGV4dFNldFVz
ZXNOZXR3b3JrUHJvY2VzcyhtX2NvbnRleHQuZ2V0KCksIGZhbHNlKTsKLSAgICBXS0NvbnRleHRT
ZXRQcm9jZXNzTW9kZWwobV9jb250ZXh0LmdldCgpLCBrV0tQcm9jZXNzTW9kZWxTaGFyZWRTZWNv
bmRhcnlQcm9jZXNzKTsKLSNlbmRpZgotCiAgICAgaWYgKGNvbnN0IGNoYXIqIGR1bXBSZW5kZXJU
cmVlVGVtcCA9IGxpYnJhcnlQYXRoRm9yVGVzdGluZygpKSB7CiAgICAgICAgIFN0cmluZyB0ZW1w
b3JhcnlGb2xkZXIgPSBTdHJpbmc6OmZyb21VVEY4KGR1bXBSZW5kZXJUcmVlVGVtcCk7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>265900</attachid>
            <date>2015-11-19 14:05:16 -0800</date>
            <delta_ts>2015-11-19 14:29:38 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-151418-20151119140504.patch</filename>
            <type>text/plain</type>
            <size>150220</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IENoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBDaGFuZ2VMb2cJKHJldmlzaW9uIDE5MjYw
MSkKKysrIENoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE1IEBACisyMDE1LTEx
LTE5ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAg
ICAgUmVtb3ZlIHRoZSBub24tTmV0d29ya1Byb2Nlc3MgY29uZmlndXJhdGlvbnMKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MTQxOAorCisgICAgICAg
IFJldmlld2VkIGJ5IEdlb2ZmIEdhcmVuLgorCisgICAgICAgICogU291cmNlL2NtYWtlL09wdGlv
bnNFZmwuY21ha2U6CisgICAgICAgICogU291cmNlL2NtYWtlL09wdGlvbnNHVEsuY21ha2U6Cisg
ICAgICAgICogU291cmNlL2NtYWtlL09wdGlvbnNNYWMuY21ha2U6CisgICAgICAgICogU291cmNl
L2NtYWtlL1dlYktpdEZlYXR1cmVzLmNtYWtlOgorCiAyMDE1LTExLTE3ICBDYXJsb3MgR2FyY2lh
IENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KIAogICAgICAgICBSRUdSRVNTSU9OKHIxOTI0
NTkpOiBbR1RLXSBVc2VyIGFnZW50IHN0cmluZyBpcyBicm9rZW4gYWZ0ZXIgcjE5MjQ1OQpJbmRl
eDogU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQy
L0NoYW5nZUxvZwkocmV2aXNpb24gMTkyNjU3KQorKysgU291cmNlL1dlYktpdDIvQ2hhbmdlTG9n
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjY1IEBACisyMDE1LTExLTE5ICBBbGV4IENocmlz
dGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmVtb3ZlIHRoZSBu
b24tTmV0d29ya1Byb2Nlc3MgY29uZmlndXJhdGlvbnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MTQxOAorCisgICAgICAgIFJldmlld2VkIGJ5IEdl
b2ZmIEdhcmVuLgorCisgICAgICAgIFRoaXMgcGF0Y2ggYXNzdW1lcyBFTkFCTEUoTkVUV09SS19Q
Uk9DRVNTKSBpcyBhbHdheXMgMSwgdXNlc05ldHdvcmtQcm9jZXNzIGlzIGFsd2F5cyB0cnVlLCAK
KyAgICAgICAgYW5kIFByb2Nlc3NNb2RlbCBpcyBhbHdheXMgUHJvY2Vzc01vZGVsTXVsdGlwbGVT
ZWNvbmRhcnlQcm9jZXNzZXMuICBJdCBkb2VzIHRoaXMgYnkgcmVtb3ZpbmcKKyAgICAgICAgdGhl
IGNoZWNrcyBhbmQgdGhlIGNvZGUgdGhhdCB3b3VsZCBiZSBleGVjdXRlZCB3aXRoIG90aGVyIGNv
bmZpZ3VyYXRpb25zLgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogTmV0
d29ya1Byb2Nlc3MvRW50cnlQb2ludC9tYWMvTGVnYWN5UHJvY2Vzcy9OZXR3b3JrUHJvY2Vzc01h
aW4ubW06CisgICAgICAgIChOZXR3b3JrUHJvY2Vzc01haW4pOgorICAgICAgICAqIE5ldHdvcmtQ
cm9jZXNzL0VudHJ5UG9pbnQvbWFjL1hQQ1NlcnZpY2UvTmV0d29ya1NlcnZpY2VFbnRyeVBvaW50
Lm1tOgorICAgICAgICAoTmV0d29ya1NlcnZpY2VJbml0aWFsaXplcik6CisgICAgICAgICogTmV0
d29ya1Byb2Nlc3MvRmlsZUFQSS9OZXR3b3JrQmxvYlJlZ2lzdHJ5LmNwcDoKKyAgICAgICAgKFdl
YktpdDo6TmV0d29ya0Jsb2JSZWdpc3RyeTo6ZmlsZXNJbkJsb2IpOgorICAgICAgICAqIE5ldHdv
cmtQcm9jZXNzL0ZpbGVBUEkvTmV0d29ya0Jsb2JSZWdpc3RyeS5oOgorICAgICAgICAqIE5ldHdv
cmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmJsb2JTaXplKToKKyAgICAgICAg
KiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oOgorICAgICAg
ICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2Vz
LmluOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkLmNwcDoKKyAgICAgICAg
KiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZC5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNz
L05ldHdvcmtMb2FkQ2xpZW50Lmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xv
YWRQYXJhbWV0ZXJzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0xvYWRQYXJhbWV0ZXJz
OjpOZXR3b3JrTG9hZFBhcmFtZXRlcnMpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdv
cmtMb2FkUGFyYW1ldGVycy5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9j
ZXNzLmNwcDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oOgorICAg
ICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluOgorICAgICAg
ICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgICog
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmg6CisgICAgICAgICogTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLm1lc3NhZ2VzLmluOgorICAgICAgICAqIE5l
dHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtQcm9jZXNzQ29jb2EubW06CisgICAgICAgIChXZWJL
aXQ6Ok5ldHdvcmtQcm9jZXNzOjpjbGVhckRpc2tDYWNoZSk6CisgICAgICAgICogTmV0d29ya1By
b2Nlc3MvaW9zL05ldHdvcmtQcm9jZXNzSU9TLm1tOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNz
L21hYy9OZXR3b3JrTG9hZE1hYy5tbToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9tYWMvTmV0
d29ya1Byb2Nlc3NNYWMubW06CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvbWFjL05ldHdvcmtS
ZXNvdXJjZUxvYWRlck1hYy5tbToKKyAgICAgICAgKiBTaGFyZWQvQVBJL2MvV0tEZXByZWNhdGVk
RnVuY3Rpb25zLmNwcDoKKyAgICAgICAgKFdLSW5zcGVjdG9yVG9nZ2xlSmF2YVNjcmlwdFByb2Zp
bGluZyk6CisgICAgICAgIChXS0NvbnRleHRTZXRQcm9jZXNzTW9kZWwpOgorICAgICAgICAoV0tD
b250ZXh0R2V0UHJvY2Vzc01vZGVsKToKKyAgICAgICAgKFdLQ29udGV4dFNldFVzZXNOZXR3b3Jr
UHJvY2Vzcyk6CisgICAgICAgIChXS0dyYXBoaWNzQ29udGV4dEdldENHQ29udGV4dCk6CisgICAg
ICAgICogU2hhcmVkL0F1dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0aW9uTWFuYWdlci5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OkF1dGhlbnRpY2F0aW9uTWFuYWdlcjo6ZGlkUmVjZWl2ZUF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlKToKKyAgICAgICAgKiBTaGFyZWQvTmV0d29yay9DdXN0b21Qcm90b2Nv
bHMvQ29jb2EvQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ29jb2EubW06CisgICAgICAgIChXZWJLaXQ6
OkN1c3RvbVByb3RvY29sTWFuYWdlcjo6aW5pdGlhbGl6ZSk6CisgICAgICAgIChXZWJLaXQ6OkN1
c3RvbVByb3RvY29sTWFuYWdlcjo6YWRkQ3VzdG9tUHJvdG9jb2wpOgorICAgICAgICAqIFNoYXJl
ZC9OZXR3b3JrL0N1c3RvbVByb3RvY29scy9DdXN0b21Qcm90b2NvbE1hbmFnZXIuaDoKKyAgICAg
ICAgKiBTaGFyZWQvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5jcHA6
CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOjpkZWNv
ZGUpOgorICAgICAgICAqIFNoYXJlZC9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJh
bWV0ZXJzLmg6CisgICAgICAgICogU2hhcmVkL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NTdXBwbGVt
ZW50Lmg6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzU3VwcGxlbWVudDo6aW5pdGlh
bGl6ZSk6CisgICAgICAgICogU2hhcmVkL05ldHdvcmsvTmV0d29ya1Jlc291cmNlTG9hZFBhcmFt
ZXRlcnMuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVy
czo6ZGVjb2RlKToKKyAgICAgICAgKiBTaGFyZWQvTmV0d29yay9OZXR3b3JrUmVzb3VyY2VMb2Fk
UGFyYW1ldGVycy5oOgorICAgICAgICAqIFNoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0
ZXJzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyczo6
V2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycyk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nl
c3NDcmVhdGlvblBhcmFtZXRlcnM6OmVuY29kZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nl
c3NDcmVhdGlvblBhcmFtZXRlcnM6OmRlY29kZSk6CisgICAgICAgICogU2hhcmVkL1dlYlByb2Nl
c3NDcmVhdGlvblBhcmFtZXRlcnMuaDoKKyAgICAgICAgKiBTaGFyZWQvbWFjL0Nvb2tpZVN0b3Jh
Z2VTaGltLmg6CisgICAgICAgICogU2hhcmVkL21hYy9Db29raWVTdG9yYWdlU2hpbS5tbToKKyAg
ICAgICAgKC1bV0tOU1VSTFNlc3Npb25Mb2NhbCBfZ2V0Q29va2llSGVhZGVyc0ZvclRhc2s6Y29t
cGxldGlvbkhhbmRsZXI6XSk6CisgICAgICAgICogU2hhcmVkL21hYy9Db29raWVTdG9yYWdlU2hp
bUxpYnJhcnkuY3BwOgorICAgICAgICAqIFNoYXJlZC9tYWMvQ29va2llU3RvcmFnZVNoaW1MaWJy
YXJ5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElQcm9jZXNzUG9vbENvbmZpZ3VyYXRp
b24uY3BwOgorICAgICAgICAoQVBJOjpQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb246OmNyZWF0ZVdp
dGhMZWdhY3lPcHRpb25zKToKKyAgICAgICAgKEFQSTo6UHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9u
Ojpjb3B5KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSVByb2Nlc3NQb29sQ29uZmlndXJh
dGlvbi5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJU2Vzc2lvbi5jcHA6CisgICAgICAg
IChBUEk6OlNlc3Npb246On5TZXNzaW9uKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tB
UElDYXN0Lmg6CisgICAgICAgIChXZWJLaXQ6OnRvQVBJKToKKyAgICAgICAgKFdlYktpdDo6dG9G
b250U21vb3RoaW5nTGV2ZWwpOgorICAgICAgICAoV2ViS2l0Ojp0b1Byb2Nlc3NNb2RlbCk6IERl
bGV0ZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dC5jcHA6CisgICAgICAg
IChXS0NvbnRleHRHZXRDYWNoZU1vZGVsKToKKyAgICAgICAgKFdLQ29udGV4dFNldE1heGltdW1O
dW1iZXJPZlByb2Nlc3Nlcyk6CisgICAgICAgIChXS0NvbnRleHRTZXRKYXZhU2NyaXB0R2FyYmFn
ZUNvbGxlY3RvclRpbWVyRW5hYmxlZCk6CisgICAgICAgIChXS0NvbnRleHRVc2VUZXN0aW5nTmV0
d29ya1Nlc3Npb24pOgorICAgICAgICAoV0tDb250ZXh0U2V0UHJvY2Vzc01vZGVsKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdLQ29udGV4dEdldFByb2Nlc3NNb2RlbCk6IERlbGV0ZWQuCisgICAgICAg
IChXS0NvbnRleHRTZXRVc2VzTmV0d29ya1Byb2Nlc3MpOiBEZWxldGVkLgorICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvQy9XS0NvbnRleHQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvbWFj
L1dLQ29udGV4dFByaXZhdGVNYWMubW06CisgICAgICAgIChXS0NvbnRleHRHZXROZXR3b3JrUHJv
Y2Vzc0lkZW50aWZpZXIpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNz
R3JvdXAubW06CisgICAgICAgICgtW1dLUHJvY2Vzc0dyb3VwIGluaXRXaXRoSW5qZWN0ZWRCdW5k
bGVVUkw6XSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29sLm1t
OgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUG9vbENvY29hLm1tOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6dXBkYXRlUHJvY2Vzc1N1cHByZXNzaW9uU3Rh
dGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6cGxhdGZvcm1Jbml0aWFsaXpl
V2ViUHJvY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpwbGF0Zm9ybUlu
aXRpYWxpemVOZXR3b3JrUHJvY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29s
OjpwbGF0Zm9ybUludmFsaWRhdGVDb250ZXh0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvRG93bmxv
YWRzL0Rvd25sb2FkUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpEb3dubG9hZFByb3h5Ojpj
YW5jZWwpOgorICAgICAgICAoV2ViS2l0OjpEb3dubG9hZFByb3h5OjppbnZhbGlkYXRlKToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvTGF1bmNoZXIvUHJvY2Vzc0xhdW5jaGVyLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6UHJvY2Vzc0xhdW5jaGVyOjpwcm9jZXNzVHlwZUFzU3RyaW5nKToKKyAgICAgICAg
KFdlYktpdDo6UHJvY2Vzc0xhdW5jaGVyOjpnZXRQcm9jZXNzVHlwZUZyb21TdHJpbmcpOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9MYXVuY2hlci9Qcm9jZXNzTGF1bmNoZXIuaDoKKyAgICAgICAgKiBV
SVByb2Nlc3MvTGF1bmNoZXIvbWFjL1Byb2Nlc3NMYXVuY2hlck1hYy5tbToKKyAgICAgICAgKFdl
YktpdDo6Y29tcHV0ZVByb2Nlc3NTaGltUGF0aCk6CisgICAgICAgIChXZWJLaXQ6OnNlcnZpY2VO
YW1lKToKKyAgICAgICAgKFdlYktpdDo6c2hvdWxkTGVha0Jvb3N0KToKKyAgICAgICAgKFdlYktp
dDo6Y3JlYXRlUHJvY2Vzcyk6CisgICAgICAgICogVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1By
b2Nlc3NQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OnNl
dElzSG9sZGluZ0xvY2tlZEZpbGVzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvTmV0d29yay9OZXR3
b3JrUHJvY2Vzc1Byb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1By
b2Nlc3NQcm94eS5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBVSVByb2Nlc3MvTmV0d29yay9tYWMv
TmV0d29ya1Byb2Nlc3NQcm94eU1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nl
c3NQcm94eTo6cGxhdGZvcm1HZXRMYXVuY2hPcHRpb25zKToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
UHJvY2Vzc01vZGVsLmg6IFJlbW92ZWQuCisgICAgICAgICogVUlQcm9jZXNzL1dlYkNvb2tpZU1h
bmFnZXJQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkNvb2tpZU1hbmFnZXJQcm94eTo6
c2hvdWxkVGVybWluYXRlKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29va2llTWFuYWdlclByb3h5
OjpyZWZXZWJDb250ZXh0U3VwcGxlbWVudCk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvb2tpZU1h
bmFnZXJQcm94eTo6c2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeSk6CisgICAgICAgIChXZWJLaXQ6
OldlYkNvb2tpZU1hbmFnZXJQcm94eTo6Z2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeSk6CisgICAg
ICAgICogVUlQcm9jZXNzL1dlYkluc3BlY3RvclByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6
V2ViSW5zcGVjdG9yUHJveHk6Omluc3BlY3RvclByb2Nlc3NQb29sKToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpX
ZWJQYWdlUHJveHkpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnJlYXR0YWNoVG9X
ZWJQcm9jZXNzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpzZXRTZXNzaW9uSUQp
OgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmluaXRpYWxpemVXZWJQYWdlKToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQcm9jZXNzUG9vbDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6
OldlYlByb2Nlc3NQb29sKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6On5XZWJQ
cm9jZXNzUG9vbCk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjppbml0aWFsaXpl
Q2xpZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnNldERvd25sb2FkQ2xp
ZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnNldE1heGltdW1OdW1iZXJP
ZlByb2Nlc3Nlcyk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpuZXR3b3JraW5n
UHJvY2Vzc0Nvbm5lY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6bGFu
Z3VhZ2VDaGFuZ2VkKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnRleHRDaGVj
a2VyU3RhdGVDaGFuZ2VkKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OmVuc3Vy
ZU5ldHdvcmtQcm9jZXNzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OmdldE5l
dHdvcmtQcm9jZXNzQ29ubmVjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29s
OjplbnN1cmVEYXRhYmFzZVByb2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9v
bDo6c2V0QW55UGFnZUdyb3VwTWlnaHRIYXZlUHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpwcm9jZXNzRGlkQ2FjaGVQYWdlKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OmNyZWF0ZU5ld1dlYlByb2Nlc3MpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6ZGlzY29ubmVjdFByb2Nlc3MpOgorICAgICAgICAo
V2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6Y3JlYXRlV2ViUGFnZSk6CisgICAgICAgIChXZWJLaXQ6
OldlYlByb2Nlc3NQb29sOjpkb3dubG9hZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQ
b29sOjpyZXN1bWVEb3dubG9hZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpw
b3N0TWVzc2FnZVRvSW5qZWN0ZWRCdW5kbGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNz
UG9vbDo6c2V0QWRkaXRpb25hbFBsdWdpbnNEaXJlY3RvcnkpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQcm9jZXNzUG9vbDo6bmV0d29ya1Byb2Nlc3NJZGVudGlmaWVyKToKKyAgICAgICAgKFdlYktp
dDo6V2ViUHJvY2Vzc1Bvb2w6OnNldEFsd2F5c1VzZXNDb21wbGV4VGV4dENvZGVQYXRoKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnNldENhbkhhbmRsZUhUVFBTU2VydmVyVHJ1
c3RFdmFsdWF0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnJlZ2lzdGVy
VVJMU2NoZW1lQXNMb2NhbCk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpzZXRD
YWNoZU1vZGVsKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnNldERlZmF1bHRS
ZXF1ZXN0VGltZW91dEludGVydmFsKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6
OmNyZWF0ZURvd25sb2FkUHJveHkpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6
YWRkTWVzc2FnZVJlY2VpdmVyKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnVz
ZVRlc3RpbmdOZXR3b3JrU2Vzc2lvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29s
OjphbGxvd1NwZWNpZmljSFRUUFNDZXJ0aWZpY2F0ZUZvckhvc3QpOgorICAgICAgICAoV2ViS2l0
OjpXZWJQcm9jZXNzUG9vbDo6cmVxdWVzdFdlYkNvbnRlbnRTdGF0aXN0aWNzKToKKyAgICAgICAg
KFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnJlcXVlc3ROZXR3b3JraW5nU3RhdGlzdGljcyk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpoYW5kbGVNZXNzYWdlKToKKyAgICAgICAg
KFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnNldFByb2Nlc3NNb2RlbCk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpzZXRVc2VzTmV0d29ya1Byb2Nlc3MpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6dXNlc05ldHdvcmtQcm9jZXNz
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OmVuc3VyZVNoYXJl
ZFdlYlByb2Nlc3MpOiBEZWxldGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUG9v
bC5oOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6c2VuZFRvTmV0d29ya2luZ1By
b2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6c2VuZFRvTmV0d29ya2lu
Z1Byb2Nlc3NSZWxhdW5jaGluZ0lmTmVjZXNzYXJ5KToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJv
Y2Vzc1Bvb2w6OnNlbmRUb0FsbFByb2Nlc3Nlc1JlbGF1bmNoaW5nVGhlbUlmTmVjZXNzYXJ5KToK
KyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnNlbmRUb09uZVByb2Nlc3MpOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQcm9jZXNzUHJveHk6OnJlbW92ZVdlYlBhZ2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9j
ZXNzUHJveHk6OmdldFBsdWdpblByb2Nlc3NDb25uZWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6
V2ViUHJvY2Vzc1Byb3h5OjpnZXROZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24pOgorICAgICAgICAo
V2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OmdldERhdGFiYXNlUHJvY2Vzc0Nvbm5lY3Rpb24pOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OnVwZGF0ZVRleHRDaGVja2VyU3RhdGUp
OgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OmRpZFNhdmVUb1BhZ2VDYWNoZSk6
CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6ZGlkQ2FuY2VsUHJvY2Vzc1N1c3Bl
bnNpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OnJlaW5zdGF0ZU5ldHdv
cmtQcm9jZXNzQXNzZXJ0aW9uU3RhdGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJv
eHk6OmRpZFNldEFzc2VydGlvblN0YXRlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1By
b3h5OjpjcmVhdGVEb3dubG9hZFByb3h5KTogRGVsZXRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3Mv
V2ViUHJvY2Vzc1Byb3h5Lmg6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6dGhy
b3R0bGVyKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmlu
OgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6fldlYnNpdGVEYXRhU3RvcmUpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpjbG9uZVNlc3Npb25EYXRhKToKKyAg
ICAgICAgKiBXZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogV2Vi
S2l0MlByZWZpeC5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvRmlsZUFQSS9CbG9iUmVnaXN0cnlQ
cm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OkJsb2JSZWdpc3RyeVByb3h5OjpyZWdpc3RlckZp
bGVCbG9iVVJMKToKKyAgICAgICAgKFdlYktpdDo6QmxvYlJlZ2lzdHJ5UHJveHk6OnJlZ2lzdGVy
QmxvYlVSTCk6CisgICAgICAgIChXZWJLaXQ6OkJsb2JSZWdpc3RyeVByb3h5Ojp1bnJlZ2lzdGVy
QmxvYlVSTCk6CisgICAgICAgIChXZWJLaXQ6OkJsb2JSZWdpc3RyeVByb3h5OjpyZWdpc3RlckJs
b2JVUkxGb3JTbGljZSk6CisgICAgICAgIChXZWJLaXQ6OkJsb2JSZWdpc3RyeVByb3h5OjpibG9i
U2l6ZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9GaWxlQVBJL0Jsb2JSZWdpc3RyeVByb3h5Lmg6
CisgICAgICAgICogV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5j
cHA6CisgICAgICAgICogV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlv
bi5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rp
b24ubWVzc2FnZXMuaW46CisgICAgICAgICogV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNl
TG9hZFNjaGVkdWxlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZFNjaGVk
dWxlcjo6bmV0d29ya1Byb2Nlc3NDcmFzaGVkKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdv
cmsvV2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVyLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9OZXR3
b3JrL1dlYlJlc291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsv
V2ViUmVzb3VyY2VMb2FkZXIuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVz
b3VyY2VMb2FkZXIubWVzc2FnZXMuaW46CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL05l
dHNjYXBlL05ldHNjYXBlQnJvd3NlckZ1bmNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6aW5pdGlh
bGl6ZUJyb3dzZXJGdW5jcyk6CisgICAgICAgIChXZWJLaXQ6Om5ldHNjYXBlQnJvd3NlckZ1bmNz
KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4u
Y3BwOgorICAgICAgICAoV2ViS2l0OjpOZXRzY2FwZVBsdWdpbjo6cmVnaXN0ZXJSZWRpcmVjdCk6
CisgICAgICAgIChXZWJLaXQ6Ok5ldHNjYXBlUGx1Z2luOjp1cmxSZWRpcmVjdFJlc3BvbnNlKToK
KyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2ll
cy5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y29va2llc0Zv
ckRPTSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBsYXRmb3JtU3RyYXRlZ2llczo6c2V0Q29va2ll
c0Zyb21ET00pOgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNvb2tp
ZXNFbmFibGVkKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjb29r
aWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBsYXRmb3Jt
U3RyYXRlZ2llczo6Z2V0UmF3Q29va2llcyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBsYXRmb3Jt
U3RyYXRlZ2llczo6ZGVsZXRlQ29va2llKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGxhdGZvcm1T
dHJhdGVnaWVzOjpyZXNvdXJjZUxvYWRTY2hlZHVsZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
bGF0Zm9ybVN0cmF0ZWdpZXM6OmxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkpOgorICAgICAgICAo
V2ViS2l0OjpXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNyZWF0ZVBpbmdIYW5kbGUpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNyZWF0ZUJsb2JSZWdpc3RyeSk6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMu
aDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwOgorICAgICAgICAo
V2ViS2l0OjpXZWJGcmFtZTo6c3RhcnREb3dubG9hZCk6CisgICAgICAgIChXZWJLaXQ6OldlYkZy
YW1lOjpjb252ZXJ0TWFpblJlc291cmNlTG9hZFRvRG93bmxvYWQpOgorICAgICAgICAoV2ViS2l0
OjpXZWJGcmFtZTo6c291cmNlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpXZWJQcm9jZXNzKToKKyAgICAgICAgKFdl
YktpdDo6V2ViUHJvY2Vzczo6aW5pdGlhbGl6ZUNvbm5lY3Rpb24pOgorICAgICAgICAoV2ViS2l0
OjpXZWJQcm9jZXNzOjppbml0aWFsaXplV2ViUHJvY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlByb2Nlc3M6OmVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbik6CisgICAgICAgIChXZWJL
aXQ6OldlYlByb2Nlc3M6OnJlZ2lzdGVyVVJMU2NoZW1lQXNFbXB0eURvY3VtZW50KToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6ZGVzdHJveVByaXZhdGVCcm93c2luZ1Nlc3Npb24pOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpwbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbk1hbmFn
ZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpzaG91bGRUZXJtaW5hdGUpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpzZXRJbmplY3RlZEJ1bmRsZVBhcmFtZXRlcnMpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpuZXR3b3JrQ29ubmVjdGlvbik6CisgICAgICAg
IChXZWJLaXQ6OldlYlByb2Nlc3M6OndlYlJlc291cmNlTG9hZFNjaGVkdWxlcik6CisgICAgICAg
IChXZWJLaXQ6OldlYlByb2Nlc3M6OndlYlRvRGF0YWJhc2VQcm9jZXNzQ29ubmVjdGlvbkNsb3Nl
ZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OnNldEVuaGFuY2VkQWNjZXNzaWJpbGl0
eSk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OnByZWZldGNoRE5TKToKKyAgICAgICAg
KFdlYktpdDo6V2ViUHJvY2Vzczo6ZGlkQ3JlYXRlRG93bmxvYWQpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpkaWREZXN0cm95RG93bmxvYWQpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpkb3dubG9hZFByb3h5Q29ubmVjdGlvbik6IERlbGV0
ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OmRvd25sb2Fkc0F1dGhlbnRpY2F0aW9u
TWFuYWdlcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OmRvd25sb2Fk
TWFuYWdlcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OnVzZXNOZXR3
b3JrUHJvY2Vzcyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OmRvd25s
b2FkUmVxdWVzdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OnJlc3Vt
ZURvd25sb2FkKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6Y2FuY2Vs
RG93bmxvYWQpOiBEZWxldGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjp0ZXh0Q2hlY2tlclN0YXRlKToKKyAgICAgICAg
KFdlYktpdDo6V2ViUHJvY2Vzczo6ZXZlbnREaXNwYXRjaGVyKToKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMuaW46CisgICAgICAgICogY29uZmlnLmg6CisKIDIwMTUt
MTEtMTkgIENzYWJhIE9zenRyb2dvbsOhYyAgPG9zc3lAd2Via2l0Lm9yZz4KIAogICAgICAgICBb
RUZMXSBGaXggV3JldHVybi10eXBlIGNsYW5nIHdhcm5pbmcgaW4gRVdLMlVuaXRUZXN0QmFzZS5j
cHAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NNYWtlTGlzdHMudHh0Cj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQyL0NNYWtlTGlzdHMudHh0CShyZXZpc2lvbiAxOTI2MDEpCisrKyBTb3VyY2Uv
V2ViS2l0Mi9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpAQCAtODAzLDE2ICs4MDMsMTMg
QEAgaWYgKFdlYktpdDJfV2ViUHJvY2Vzc19PVVRQVVRfTkFNRSkKICAgICBzZXRfdGFyZ2V0X3By
b3BlcnRpZXMoV2ViUHJvY2VzcyBQUk9QRVJUSUVTIE9VVFBVVF9OQU1FICR7V2ViS2l0Ml9XZWJQ
cm9jZXNzX09VVFBVVF9OQU1FfSkKIGVuZGlmICgpCiAKLWlmIChFTkFCTEVfTkVUV09SS19QUk9D
RVNTKQotICAgIGFkZF9leGVjdXRhYmxlKE5ldHdvcmtQcm9jZXNzICR7TmV0d29ya1Byb2Nlc3Nf
U09VUkNFU30pCi0gICAgYWRkX3dlYmtpdDJfcHJlZml4X2hlYWRlcihOZXR3b3JrUHJvY2VzcykK
LSAgICB0YXJnZXRfbGlua19saWJyYXJpZXMoTmV0d29ya1Byb2Nlc3MgJHtOZXR3b3JrUHJvY2Vz
c19MSUJSQVJJRVN9KQotICAgIHNldF90YXJnZXRfcHJvcGVydGllcyhOZXR3b3JrUHJvY2VzcyBQ
Uk9QRVJUSUVTIEZPTERFUiAiV2ViS2l0IikKLSAgICBpbnN0YWxsKFRBUkdFVFMgTmV0d29ya1By
b2Nlc3MgREVTVElOQVRJT04gIiR7TElCRVhFQ19JTlNUQUxMX0RJUn0iKQorYWRkX2V4ZWN1dGFi
bGUoTmV0d29ya1Byb2Nlc3MgJHtOZXR3b3JrUHJvY2Vzc19TT1VSQ0VTfSkKK2FkZF93ZWJraXQy
X3ByZWZpeF9oZWFkZXIoTmV0d29ya1Byb2Nlc3MpCit0YXJnZXRfbGlua19saWJyYXJpZXMoTmV0
d29ya1Byb2Nlc3MgJHtOZXR3b3JrUHJvY2Vzc19MSUJSQVJJRVN9KQorc2V0X3RhcmdldF9wcm9w
ZXJ0aWVzKE5ldHdvcmtQcm9jZXNzIFBST1BFUlRJRVMgRk9MREVSICJXZWJLaXQiKQogCi0gICAg
aWYgKFdlYktpdDJfTmV0d29ya1Byb2Nlc3NfT1VUUFVUX05BTUUpCi0gICAgICAgIHNldF90YXJn
ZXRfcHJvcGVydGllcyhOZXR3b3JrUHJvY2VzcyBQUk9QRVJUSUVTIE9VVFBVVF9OQU1FICR7V2Vi
S2l0Ml9OZXR3b3JrUHJvY2Vzc19PVVRQVVRfTkFNRX0pCi0gICAgZW5kaWYgKCkKK2lmIChXZWJL
aXQyX05ldHdvcmtQcm9jZXNzX09VVFBVVF9OQU1FKQorICAgIHNldF90YXJnZXRfcHJvcGVydGll
cyhOZXR3b3JrUHJvY2VzcyBQUk9QRVJUSUVTIE9VVFBVVF9OQU1FICR7V2ViS2l0Ml9OZXR3b3Jr
UHJvY2Vzc19PVVRQVVRfTkFNRX0pCiBlbmRpZiAoKQogCiBpZiAoRU5BQkxFX1BMVUdJTl9QUk9D
RVNTKQpAQCAtODQ3LDcgKzg0NCw3IEBAIHNldF90YXJnZXRfcHJvcGVydGllcyhXZWJLaXQyIFBS
T1BFUlRJRVMKIGlmIChBUFBMRSkKICAgICBXRUJLSVRfRlJBTUVXT1JLKFdlYktpdDIpCiBlbHNl
ICgpCi0gICAgaW5zdGFsbChUQVJHRVRTIFdlYktpdDIgV2ViUHJvY2VzcworICAgIGluc3RhbGwo
VEFSR0VUUyBXZWJLaXQyIFdlYlByb2Nlc3MgTmV0d29ya1Byb2Nlc3MKICAgICAgICAgTElCUkFS
WSBERVNUSU5BVElPTiAiJHtMSUJfSU5TVEFMTF9ESVJ9IgogICAgICAgICBSVU5USU1FIERFU1RJ
TkFUSU9OICIke0xJQkVYRUNfSU5TVEFMTF9ESVJ9IgogICAgICkKSW5kZXg6IFNvdXJjZS9XZWJL
aXQyL1dlYktpdDJQcmVmaXguaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJLaXQy
UHJlZml4LmgJKHJldmlzaW9uIDE5MjYwMSkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYktpdDJQcmVm
aXguaAkod29ya2luZyBjb3B5KQpAQCAtMzYsOCArMzYsNiBAQAogCiAjZGVmaW5lIEVOQUJMRV9X
RUJfUFJPQ0VTU19TQU5EQk9YIDEKIAotI2RlZmluZSBFTkFCTEVfTkVUV09SS19QUk9DRVNTIDEK
LQogI2RlZmluZSBFTkFCTEVfREFUQUJBU0VfUFJPQ0VTUyAxCiAKICNkZWZpbmUgRU5BQkxFX01F
TU9SWV9TQU1QTEVSIDEKQEAgLTU5LDcgKzU3LDYgQEAKICNlbmRpZgogCiAjaWYgUExBVEZPUk0o
R1RLKQotI2RlZmluZSBFTkFCTEVfTkVUV09SS19QUk9DRVNTIDEKICNkZWZpbmUgRU5BQkxFX1NI
QVJFQUJMRV9SRVNPVVJDRSAxCiAjZW5kaWYKIApJbmRleDogU291cmNlL1dlYktpdDIvY29uZmln
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvY29uZmlnLmgJKHJldmlzaW9uIDE5MjYw
MSkKKysrIFNvdXJjZS9XZWJLaXQyL2NvbmZpZy5oCSh3b3JraW5nIGNvcHkpCkBAIC05MSw3ICs5
MSw3IEBACiAjZW5kaWYKIAogI2lmbmRlZiBFTkFCTEVfTkVUV09SS19DQUNIRQotI2lmIEVOQUJM
RShORVRXT1JLX1BST0NFU1MpICYmIChQTEFURk9STShDT0NPQSkgfHwgUExBVEZPUk0oR1RLKSkK
KyNpZiBQTEFURk9STShDT0NPQSkgfHwgUExBVEZPUk0oR1RLKQogI2RlZmluZSBFTkFCTEVfTkVU
V09SS19DQUNIRSAxCiAjZWxzZQogI2RlZmluZSBFTkFCTEVfTkVUV09SS19DQUNIRSAwCkluZGV4
OiBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCShyZXZpc2lvbiAxOTI2MDEpCisrKyBTb3Vy
Y2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTI2LDggKzI2LDYgQEAKICNpbmNsdWRlICJjb25maWcuaCIK
ICNpbmNsdWRlICJOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oIgogCi0jaWYgRU5BQkxF
KE5FVFdPUktfUFJPQ0VTUykKLQogI2luY2x1ZGUgIk5ldHdvcmtCbG9iUmVnaXN0cnkuaCIKICNp
bmNsdWRlICJOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzc01lc3NhZ2VzLmgiCiAjaW5jbHVk
ZSAiTmV0d29ya0xvYWQuaCIKQEAgLTI3NCw1ICsyNzIsMyBAQCB2b2lkIE5ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzOjpibG9iCiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAotCi0jZW5k
aWYgLy8gRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL05ldHdv
cmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MuaAkocmV2aXNpb24gMTkyNjAxKQorKysgU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaAkod29ya2luZyBjb3B5KQpAQCAtMjYsOCAr
MjYsNiBAQAogI2lmbmRlZiBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzc19oCiAjZGVmaW5l
IE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzX2gKIAotI2lmIEVOQUJMRShORVRXT1JLX1BS
T0NFU1MpCi0KICNpbmNsdWRlICJCbG9ja2luZ1Jlc3BvbnNlTWFwLmgiCiAjaW5jbHVkZSAiQ29u
bmVjdGlvbi5oIgogI2luY2x1ZGUgIk5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzTWVzc2Fn
ZXMuaCIKQEAgLTEwMiw2ICsxMDAsNCBAQCBwcml2YXRlOgogCiB9IC8vIG5hbWVzcGFjZSBXZWJL
aXQKIAotI2VuZGlmIC8vIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCi0KICNlbmRpZiAvLyBOZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzc19oCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgkocmV2aXNpb24gMTkyNjAxKQorKysgU291cmNlL1dlYktp
dDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMu
aW4JKHdvcmtpbmcgY29weSkKQEAgLTIwLDggKzIwLDYgQEAKICMgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKICMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KIAotI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCi0KIG1lc3Nh
Z2VzIC0+IE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzIExlZ2FjeVJlY2VpdmVyIHsKIAog
ICAgIFNjaGVkdWxlUmVzb3VyY2VMb2FkKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZFBhcmFt
ZXRlcnMgcmVzb3VyY2VMb2FkUGFyYW1ldGVycykKQEAgLTQ4LDUgKzQ2LDMgQEAgbWVzc2FnZXMg
LT4gTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2NlcwogICAgIFVucmVnaXN0ZXJCbG9iVVJMKFdl
YkNvcmU6OlVSTCB1cmwpCiAgICAgQmxvYlNpemUoV2ViQ29yZTo6VVJMIHVybCkgLT4gKHVpbnQ2
NF90IHJlc3VsdFNpemUpCiB9Ci0KLSNlbmRpZiAvLyBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQpJ
bmRleDogU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkLmNwcAko
cmV2aXNpb24gMTkyNjAxKQorKysgU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a0xvYWQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNCw4ICsyNCw2IEBACiAgKi8KIAogI2luY2x1
ZGUgImNvbmZpZy5oIgotCi0jaWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKICNpbmNsdWRlICJO
ZXR3b3JrTG9hZC5oIgogCiAjaW5jbHVkZSAiQXV0aGVudGljYXRpb25NYW5hZ2VyLmgiCkBAIC0z
NzEsNSArMzY5LDMgQEAgdm9pZCBOZXR3b3JrTG9hZDo6cmVjZWl2ZWRDYW5jZWxsYXRpb24oUgog
I2VuZGlmIC8vICFVU0UoTkVUV09SS19TRVNTSU9OKQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
LQotI2VuZGlmIC8vIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCkluZGV4OiBTb3VyY2UvV2ViS2l0
Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkLmgJKHJldmlzaW9uIDE5MjYwMSkKKysrIFNv
dXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkLmgJKHdvcmtpbmcgY29weSkK
QEAgLTI2LDggKzI2LDYgQEAKICNpZm5kZWYgTmV0d29ya0xvYWRfaAogI2RlZmluZSBOZXR3b3Jr
TG9hZF9oCiAKLSNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQotCiAjaW5jbHVkZSAiTmV0d29y
a0xvYWRDbGllbnQuaCIKICNpbmNsdWRlICJOZXR3b3JrTG9hZFBhcmFtZXRlcnMuaCIKICNpbmNs
dWRlICJSZW1vdGVOZXR3b3JraW5nQ29udGV4dC5oIgpAQCAtMTI2LDYgKzEyNCw0IEBAIHByaXZh
dGU6CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCi0jZW5kaWYgLy8gRU5BQkxFKE5FVFdPUktf
UFJPQ0VTUykKLQogI2VuZGlmIC8vIE5ldHdvcmtMb2FkX2gKSW5kZXg6IFNvdXJjZS9XZWJLaXQy
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkQ2xpZW50LmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRDbGllbnQuaAkocmV2aXNpb24gMTky
NjAxKQorKysgU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRDbGllbnQu
aAkod29ya2luZyBjb3B5KQpAQCAtMjYsOCArMjYsNiBAQAogI2lmbmRlZiBOZXR3b3JrTG9hZENs
aWVudF9oCiAjZGVmaW5lIE5ldHdvcmtMb2FkQ2xpZW50X2gKIAotI2lmIEVOQUJMRShORVRXT1JL
X1BST0NFU1MpCi0KICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlRXJyb3IuaD4KICNpbmNsdWRl
IDxXZWJDb3JlL1Jlc291cmNlUmVxdWVzdC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VS
ZXNwb25zZS5oPgpAQCAtNjYsNyArNjQsNSBAQCBwdWJsaWM6CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YktpdAogCi0jZW5kaWYgLy8gRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKLQogI2VuZGlmIC8vIE5l
dHdvcmtMb2FkQ2xpZW50X2gKIApJbmRleDogU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya0xvYWRQYXJhbWV0ZXJzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZFBhcmFtZXRlcnMuY3BwCShyZXZpc2lvbiAxOTI2MDEp
CisrKyBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZFBhcmFtZXRlcnMu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNCw4ICsyNCw2IEBACiAgKi8KIAogI2luY2x1ZGUgImNv
bmZpZy5oIgotCi0jaWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKICNpbmNsdWRlICJOZXR3b3Jr
TG9hZFBhcmFtZXRlcnMuaCIKIAogI2luY2x1ZGUgIk5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0
ZXJzLmgiCkBAIC00Nyw1ICs0NSwzIEBAIE5ldHdvcmtMb2FkUGFyYW1ldGVyczo6TmV0d29ya0xv
YWRQYXJhbWUKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KLSNlbmRpZiAvLyBFTkFCTEUo
TkVUV09SS19QUk9DRVNTKQpJbmRleDogU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya0xvYWRQYXJhbWV0ZXJzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya0xvYWRQYXJhbWV0ZXJzLmgJKHJldmlzaW9uIDE5MjYwMSkKKysrIFNv
dXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkUGFyYW1ldGVycy5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yNiw4ICsyNiw2IEBACiAjaWZuZGVmIE5ldHdvcmtMb2FkUGFyYW1ldGVy
c19oCiAjZGVmaW5lIE5ldHdvcmtMb2FkUGFyYW1ldGVyc19oCiAKLSNpZiBFTkFCTEUoTkVUV09S
S19QUk9DRVNTKQotCiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZUxvYWRlck9wdGlvbnMuaD4K
ICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlUmVxdWVzdC5oPgogI2luY2x1ZGUgPFdlYkNvcmUv
U2Vzc2lvbklELmg+CkBAIC01NSw2ICs1Myw0IEBAIHB1YmxpYzoKIAogfSAvLyBuYW1lc3BhY2Ug
V2ViS2l0CiAKLSNlbmRpZiAvLyBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQotCiAjZW5kaWYgLy8g
TmV0d29ya0xvYWRQYXJhbWV0ZXJzX2gKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtQcm9jZXNzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAJKHJldmlzaW9uIDE5MjYwMSkKKysrIFNvdXJj
ZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMjYsOCArMjYsNiBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIk5ldHdv
cmtQcm9jZXNzLmgiCiAKLSNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQotCiAjaW5jbHVkZSAi
QXJndW1lbnRDb2RlcnMuaCIKICNpbmNsdWRlICJBdHRhY2htZW50LmgiCiAjaW5jbHVkZSAiQXV0
aGVudGljYXRpb25NYW5hZ2VyLmgiCkBAIC01NTQsNSArNTUyLDMgQEAgdm9pZCBOZXR3b3JrUHJv
Y2Vzczo6cGxhdGZvcm1Mb3dNZW1vcnlIYQogI2VuZGlmCiAKIH0gLy8gbmFtZXNwYWNlIFdlYktp
dAotCi0jZW5kaWYgLy8gRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKSW5kZXg6IFNvdXJjZS9XZWJL
aXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaAkocmV2aXNpb24gMTkyNjAx
KQorKysgU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaAkod29y
a2luZyBjb3B5KQpAQCAtMjYsOCArMjYsNiBAQAogI2lmbmRlZiBOZXR3b3JrUHJvY2Vzc19oCiAj
ZGVmaW5lIE5ldHdvcmtQcm9jZXNzX2gKIAotI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCi0K
ICNpbmNsdWRlICJDYWNoZU1vZGVsLmgiCiAjaW5jbHVkZSAiQ2hpbGRQcm9jZXNzLmgiCiAjaW5j
bHVkZSAiRG93bmxvYWRNYW5hZ2VyLmgiCkBAIC0xOTcsNiArMTk1LDQgQEAgcHJpdmF0ZToKIAog
fSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKLSNlbmRpZiAvLyBFTkFCTEUoTkVUV09SS19QUk9DRVNT
KQotCiAjZW5kaWYgLy8gTmV0d29ya1Byb2Nlc3NfaApJbmRleDogU291cmNlL1dlYktpdDIvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4JKHJl
dmlzaW9uIDE5MjYwMSkKKysrIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtQ
cm9jZXNzLm1lc3NhZ2VzLmluCSh3b3JraW5nIGNvcHkpCkBAIC0yMCw4ICsyMCw2IEBACiAjIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCiAjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAKLSNpZiBFTkFCTEUoTkVUV09SS19Q
Uk9DRVNTKQotCiBtZXNzYWdlcyAtPiBOZXR3b3JrUHJvY2VzcyBMZWdhY3lSZWNlaXZlciB7CiAg
ICAgIyBJbml0aWFsaXplcyB0aGUgbmV0d29yayBwcm9jZXNzLgogICAgIEluaXRpYWxpemVOZXR3
b3JrUHJvY2VzcyhzdHJ1Y3QgV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVy
cyBwcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzKQpAQCAtNjMsNSArNjEsMyBAQCBtZXNzYWdlcyAt
PiBOZXR3b3JrUHJvY2VzcyBMZWdhY3lSZWNlaXZlCiAgICAgQ2FuY2VsUHJlcGFyZVRvU3VzcGVu
ZCgpCiAgICAgUHJvY2Vzc0RpZFJlc3VtZSgpCiB9Ci0KLSNlbmRpZiAvLyBFTkFCTEUoTkVUV09S
S19QUk9DRVNTKQpJbmRleDogU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jl
c291cmNlTG9hZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCShyZXZpc2lvbiAxOTI2MDEpCisrKyBTb3Vy
Y2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yNiw4ICsyNiw2IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVk
ZSAiTmV0d29ya1Jlc291cmNlTG9hZGVyLmgiCiAKLSNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNT
KQotCiAjaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNp
bmNsdWRlICJOZXR3b3JrQmxvYlJlZ2lzdHJ5LmgiCkBAIC01ODEsNSArNTc5LDMgQEAgdm9pZCBO
ZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmNvbnRpbnVlQ2FuQQogI2VuZGlmCiAKIH0gLy8gbmFtZXNw
YWNlIFdlYktpdAotCi0jZW5kaWYgLy8gRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKSW5kZXg6IFNv
dXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxv
YWRlci5oCShyZXZpc2lvbiAxOTI2MDEpCisrKyBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMjYsOCArMjYsNiBA
QAogI2lmbmRlZiBOZXR3b3JrUmVzb3VyY2VMb2FkZXJfaAogI2RlZmluZSBOZXR3b3JrUmVzb3Vy
Y2VMb2FkZXJfaAogCi0jaWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKLQogI2luY2x1ZGUgIk1l
c3NhZ2VTZW5kZXIuaCIKICNpbmNsdWRlICJOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzc01l
c3NhZ2VzLmgiCiAjaW5jbHVkZSAiTmV0d29ya0xvYWRDbGllbnQuaCIKQEAgLTE2OSw2ICsxNjcs
NCBAQCBwcml2YXRlOgogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAotI2VuZGlmIC8vIEVOQUJM
RShORVRXT1JLX1BST0NFU1MpCi0KICNlbmRpZiAvLyBOZXR3b3JrUmVzb3VyY2VMb2FkZXJfaApJ
bmRleDogU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVy
Lm1lc3NhZ2VzLmluCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNz
L05ldHdvcmtSZXNvdXJjZUxvYWRlci5tZXNzYWdlcy5pbgkocmV2aXNpb24gMTkyNjAxKQorKysg
U291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLm1lc3Nh
Z2VzLmluCSh3b3JraW5nIGNvcHkpCkBAIC0yMCw4ICsyMCw2IEBACiAjIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCiAjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAKLSNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQotCiBt
ZXNzYWdlcyAtPiBOZXR3b3JrUmVzb3VyY2VMb2FkZXIgTGVnYWN5UmVjZWl2ZXIgewogCiAgICAg
Q29udGludWVXaWxsU2VuZFJlcXVlc3QoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3Qp
CkBAIC0zMCw1ICsyOCwzIEBAIG1lc3NhZ2VzIC0+IE5ldHdvcmtSZXNvdXJjZUxvYWRlciBMZWdh
Y3kKICAgICBDb250aW51ZUNhbkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2UoYm9v
bCBjYW5BdXRoZW50aWNhdGUpCiAjZW5kaWYKIH0KLQotI2VuZGlmIC8vIEVOQUJMRShORVRXT1JL
X1BST0NFU1MpCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9FbnRyeVBvaW50
L21hYy9MZWdhY3lQcm9jZXNzL05ldHdvcmtQcm9jZXNzTWFpbi5tbQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9FbnRyeVBvaW50L21hYy9MZWdhY3lQcm9jZXNz
L05ldHdvcmtQcm9jZXNzTWFpbi5tbQkocmV2aXNpb24gMTkyNjAxKQorKysgU291cmNlL1dlYktp
dDIvTmV0d29ya1Byb2Nlc3MvRW50cnlQb2ludC9tYWMvTGVnYWN5UHJvY2Vzcy9OZXR3b3JrUHJv
Y2Vzc01haW4ubW0JKHdvcmtpbmcgY29weSkKQEAgLTI1LDggKzI1LDYgQEAKIAogI2ltcG9ydCAi
Y29uZmlnLmgiCiAKLSNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQotCiAjaW1wb3J0ICJDaGls
ZFByb2Nlc3NFbnRyeVBvaW50LmgiCiAjaW1wb3J0ICJOZXR3b3JrUHJvY2Vzcy5oIgogI2ltcG9y
dCAiV0tCYXNlLmgiCkBAIC0zOSw1ICszNywzIEBAIGludCBOZXR3b3JrUHJvY2Vzc01haW4oaW50
IGFyZ2MsIGNoYXIqKiAKIHsKICAgICByZXR1cm4gQ2hpbGRQcm9jZXNzTWFpbjxOZXR3b3JrUHJv
Y2VzcywgQ2hpbGRQcm9jZXNzTWFpbkRlbGVnYXRlPihhcmdjLCBhcmd2KTsKIH0KLQotI2VuZGlm
IC8vIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9OZXR3b3Jr
UHJvY2Vzcy9FbnRyeVBvaW50L21hYy9YUENTZXJ2aWNlL05ldHdvcmtTZXJ2aWNlRW50cnlQb2lu
dC5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9FbnRyeVBv
aW50L21hYy9YUENTZXJ2aWNlL05ldHdvcmtTZXJ2aWNlRW50cnlQb2ludC5tbQkocmV2aXNpb24g
MTkyNjAxKQorKysgU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvRW50cnlQb2ludC9tYWMv
WFBDU2VydmljZS9OZXR3b3JrU2VydmljZUVudHJ5UG9pbnQubW0JKHdvcmtpbmcgY29weSkKQEAg
LTUyLDcgKzUyLDYgQEAgZXh0ZXJuICJDIiBXS19FWFBPUlQgdm9pZCBOZXR3b3JrU2VydmljZQog
CiB2b2lkIE5ldHdvcmtTZXJ2aWNlSW5pdGlhbGl6ZXIoeHBjX2Nvbm5lY3Rpb25fdCBjb25uZWN0
aW9uLCB4cGNfb2JqZWN0X3QgaW5pdGlhbGl6ZXJNZXNzYWdlKQogewotI2lmIEVOQUJMRShORVRX
T1JLX1BST0NFU1MpCiAgICAgLy8gUmVtb3ZlIHRoZSBTZWNJdGVtU2hpbSBmcm9tIHRoZSBEWUxE
X0lOU0VSVF9MSUJSQVJJRVMgZW52aXJvbm1lbnQgdmFyaWFibGUgc28gYW55IHByb2Nlc3NlcyBz
cGF3bmVkIGJ5CiAgICAgLy8gdGhlIHRoaXMgcHJvY2VzcyBkb24ndCB0cnkgdG8gaW5zZXJ0IHRo
ZSBzaGltIGFuZCBjcmFzaC4KICAgICBFbnZpcm9ubWVudFV0aWxpdGllczo6c3RyaXBWYWx1ZXNF
bmRpbmdXaXRoU3RyaW5nKCJEWUxEX0lOU0VSVF9MSUJSQVJJRVMiLCAiL1NlY0l0ZW1TaGltLmR5
bGliIik7CkBAIC02OSw1ICs2OCw0IEBAIHZvaWQgTmV0d29ya1NlcnZpY2VJbml0aWFsaXplcih4
cGNfY29ubmUKICNpZiBIQVZFKE9TX0FDVElWSVRZKQogICAgIG9zX2FjdGl2aXR5X2VuZChhY3Rp
dml0eSk7CiAjZW5kaWYKLSNlbmRpZgogfQpJbmRleDogU291cmNlL1dlYktpdDIvTmV0d29ya1By
b2Nlc3MvRmlsZUFQSS9OZXR3b3JrQmxvYlJlZ2lzdHJ5LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9GaWxlQVBJL05ldHdvcmtCbG9iUmVnaXN0cnkuY3Bw
CShyZXZpc2lvbiAxOTI2MDEpCisrKyBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9GaWxl
QVBJL05ldHdvcmtCbG9iUmVnaXN0cnkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw4ICsyNiw2
IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiTmV0d29ya0Jsb2JSZWdpc3RyeS5o
IgogCi0jaWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKLQogI2luY2x1ZGUgIkJsb2JEYXRhRmls
ZVJlZmVyZW5jZVdpdGhTYW5kYm94RXh0ZW5zaW9uLmgiCiAjaW5jbHVkZSAiU2FuZGJveEV4dGVu
c2lvbi5oIgogI2luY2x1ZGUgPFdlYkNvcmUvQmxvYlBhcnQuaD4KQEAgLTE1MSw1ICsxNDksMyBA
QCBWZWN0b3I8UmVmUHRyPEJsb2JEYXRhRmlsZVJlZmVyZW5jZT4+IE5lCiB9CiAKIH0KLQotI2Vu
ZGlmCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9GaWxlQVBJL05ldHdvcmtC
bG9iUmVnaXN0cnkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vz
cy9GaWxlQVBJL05ldHdvcmtCbG9iUmVnaXN0cnkuaAkocmV2aXNpb24gMTkyNjAxKQorKysgU291
cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvRmlsZUFQSS9OZXR3b3JrQmxvYlJlZ2lzdHJ5LmgJ
KHdvcmtpbmcgY29weSkKQEAgLTI2LDggKzI2LDYgQEAKICNpZm5kZWYgTmV0d29ya0Jsb2JSZWdp
c3RyeV9oCiAjZGVmaW5lIE5ldHdvcmtCbG9iUmVnaXN0cnlfaAogCi0jaWYgRU5BQkxFKE5FVFdP
UktfUFJPQ0VTUykKLQogI2luY2x1ZGUgPFdlYkNvcmUvVVJMSGFzaC5oPgogI2luY2x1ZGUgPHd0
Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KQEAgLTY4LDYgKzY2LDQgQEAg
cHJpdmF0ZToKIAogfQogCi0jZW5kaWYgLy8gRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKLQogI2Vu
ZGlmIC8vIE5ldHdvcmtCbG9iUmVnaXN0cnlfaApJbmRleDogU291cmNlL1dlYktpdDIvTmV0d29y
a1Byb2Nlc3MvY29jb2EvTmV0d29ya1Byb2Nlc3NDb2NvYS5tbQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrUHJvY2Vzc0NvY29hLm1tCShy
ZXZpc2lvbiAxOTI2MDEpCisrKyBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9O
ZXR3b3JrUHJvY2Vzc0NvY29hLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw4ICsyNiw2IEBACiAj
aW1wb3J0ICJjb25maWcuaCIKICNpbXBvcnQgIk5ldHdvcmtQcm9jZXNzLmgiCiAKLSNpZiBFTkFC
TEUoTkVUV09SS19QUk9DRVNTKQotCiAjaW1wb3J0ICJOZXR3b3JrQ2FjaGUuaCIKICNpbXBvcnQg
Ik5ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmgiCiAjaW1wb3J0ICJOZXR3b3JrUmVz
b3VyY2VMb2FkZXIuaCIKQEAgLTI2Nyw1ICsyNjUsMyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpj
bGVhckRpc2tDYWNoZShzdGQ6CiB9CiAKIH0KLQotI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViS2l0
Mi9OZXR3b3JrUHJvY2Vzcy9pb3MvTmV0d29ya1Byb2Nlc3NJT1MubW0KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvaW9zL05ldHdvcmtQcm9jZXNzSU9TLm1tCShy
ZXZpc2lvbiAxOTI2MDEpCisrKyBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9pb3MvTmV0
d29ya1Byb2Nlc3NJT1MubW0JKHdvcmtpbmcgY29weSkKQEAgLTI2LDcgKzI2LDcgQEAKICNpbXBv
cnQgImNvbmZpZy5oIgogI2ltcG9ydCAiTmV0d29ya1Byb2Nlc3MuaCIKIAotI2lmIFBMQVRGT1JN
KElPUykgJiYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKKyNpZiBQTEFURk9STShJT1MpCiAKICNp
bXBvcnQgIk5ldHdvcmtDYWNoZS5oIgogI2ltcG9ydCAiTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBh
cmFtZXRlcnMuaCIKQEAgLTEwMSw0ICsxMDEsNCBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpwbGF0
Zm9ybVRlcm1pbmF0ZSgpCiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCi0jZW5kaWYgLy8gUExB
VEZPUk0oSU9TKSAmJiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQorI2VuZGlmIC8vIFBMQVRGT1JN
KElPUykKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL21hYy9OZXR3b3JrTG9h
ZE1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9tYWMv
TmV0d29ya0xvYWRNYWMubW0JKHJldmlzaW9uIDE5MjYwMSkKKysrIFNvdXJjZS9XZWJLaXQyL05l
dHdvcmtQcm9jZXNzL21hYy9OZXR3b3JrTG9hZE1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtMjQs
OCArMjQsNiBAQAogICovCiAKICNpbXBvcnQgImNvbmZpZy5oIgotCi0jaWYgRU5BQkxFKE5FVFdP
UktfUFJPQ0VTUykKICNpbXBvcnQgIk5ldHdvcmtMb2FkLmgiCiAKICNpbXBvcnQgPFdlYkNvcmUv
Q0ZOZXR3b3JrU1BJLmg+CkBAIC02MCw1ICs1OCwzIEBAIHZvaWQgTmV0d29ya0xvYWQ6OndpbGxD
YWNoZVJlc3BvbnNlQXN5bmMKICNlbmRpZiAvLyAhVVNFKENGTkVUV09SSykKIAogfSAvLyBuYW1l
c3BhY2UgV2ViS2l0Ci0KLSNlbmRpZiAvLyBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQpJbmRleDog
U291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvbWFjL05ldHdvcmtQcm9jZXNzTWFjLm1tCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL21hYy9OZXR3b3JrUHJv
Y2Vzc01hYy5tbQkocmV2aXNpb24gMTkyNjAxKQorKysgU291cmNlL1dlYktpdDIvTmV0d29ya1By
b2Nlc3MvbWFjL05ldHdvcmtQcm9jZXNzTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw3ICsy
Niw3IEBACiAjaW1wb3J0ICJjb25maWcuaCIKICNpbXBvcnQgIk5ldHdvcmtQcm9jZXNzLmgiCiAK
LSNpZiBQTEFURk9STShNQUMpICYmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCisjaWYgUExBVEZP
Uk0oTUFDKQogCiAjaW1wb3J0ICJOZXR3b3JrQ2FjaGUuaCIKICNpbXBvcnQgIk5ldHdvcmtQcm9j
ZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmgiCkBAIC0xNDQsNCArMTQ0LDQgQEAgdm9pZCBOZXR3b3Jr
UHJvY2Vzczo6cGxhdGZvcm1UZXJtaW5hdGUoKQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAot
I2VuZGlmIC8vIFBMQVRGT1JNKE1BQykgJiYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKKyNlbmRp
ZiAvLyBQTEFURk9STShNQUMpCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9t
YWMvTmV0d29ya1Jlc291cmNlTG9hZGVyTWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQyL05ldHdvcmtQcm9jZXNzL21hYy9OZXR3b3JrUmVzb3VyY2VMb2FkZXJNYWMubW0JKHJldmlz
aW9uIDE5MjYwMSkKKysrIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL21hYy9OZXR3b3Jr
UmVzb3VyY2VMb2FkZXJNYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTI2LDggKzI2LDYgQEAKICNp
bXBvcnQgImNvbmZpZy5oIgogI2ltcG9ydCAiTmV0d29ya1Jlc291cmNlTG9hZGVyLmgiCiAKLSNp
ZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQotCiAjaW1wb3J0ICJOZXR3b3JrRGlza0NhY2hlTW9u
aXRvci5oIgogI2ltcG9ydCAiU2hhcmVhYmxlUmVzb3VyY2UuaCIKICNpbXBvcnQgPFdlYkNvcmUv
Q0ZOZXR3b3JrU1BJLmg+CkBAIC05MSw1ICs4OSwzIEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9h
ZGVyOjp3aWxsQ2FjaGVSZXMKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKLSNlbmRpZiAvLyBF
TkFCTEUoTkVUV09SS19QUk9DRVNTKQotCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2Vi
UHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dDIvU2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuY3BwCShyZXZpc2lvbiAxOTI2
MDEpCisrKyBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVy
cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQzLDkgKzQzLDYgQEAgV2ViUHJvY2Vzc0NyZWF0aW9u
UGFyYW1ldGVyczo6V2ViUHJvY2VzcwogICAgICwgc2hvdWxkRW5hYmxlSklUKGZhbHNlKQogICAg
ICwgc2hvdWxkRW5hYmxlRlRMSklUKGZhbHNlKQogI2VuZGlmCi0jaWYgRU5BQkxFKE5FVFdPUktf
UFJPQ0VTUykKLSAgICAsIHVzZXNOZXR3b3JrUHJvY2VzcyhmYWxzZSkKLSNlbmRpZgogICAgICwg
bWVtb3J5Q2FjaGVEaXNhYmxlZChmYWxzZSkKICNpZiBFTkFCTEUoU0VSVklDRV9DT05UUk9MUykK
ICAgICAsIGhhc0ltYWdlU2VydmljZXMoZmFsc2UpCkBAIC0xMzMsMTAgKzEzMCw2IEBAIHZvaWQg
V2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyczo6ZW5jb2QKICAgICBlbmNvZGVyIDw8IG5vdGlm
aWNhdGlvblBlcm1pc3Npb25zOwogI2VuZGlmCiAKLSNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNT
KQotICAgIGVuY29kZXIgPDwgdXNlc05ldHdvcmtQcm9jZXNzOwotI2VuZGlmCi0KICAgICBlbmNv
ZGVyIDw8IHBsdWdJbkF1dG9TdGFydE9yaWdpbkhhc2hlczsKICAgICBlbmNvZGVyIDw8IHBsdWdJ
bkF1dG9TdGFydE9yaWdpbnM7CiAgICAgZW5jb2RlciA8PCBtZW1vcnlDYWNoZURpc2FibGVkOwpA
QCAtMjkxLDExICsyODQsNiBAQCBib29sIFdlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnM6OmRl
Y29kCiAgICAgICAgIHJldHVybiBmYWxzZTsKICNlbmRpZgogCi0jaWYgRU5BQkxFKE5FVFdPUktf
UFJPQ0VTUykKLSAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFtZXRlcnMudXNlc05ldHdvcmtQ
cm9jZXNzKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotI2VuZGlmCi0KICAgICBpZiAoIWRlY29k
ZXIuZGVjb2RlKHBhcmFtZXRlcnMucGx1Z0luQXV0b1N0YXJ0T3JpZ2luSGFzaGVzKSkKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocGFyYW1ldGVycy5wbHVn
SW5BdXRvU3RhcnRPcmlnaW5zKSkKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJQcm9j
ZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvU2hh
cmVkL1dlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaAkocmV2aXNpb24gMTkyNjAxKQorKysg
U291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaAkod29y
a2luZyBjb3B5KQpAQCAtMTU0LDEwICsxNTQsNiBAQCBzdHJ1Y3QgV2ViUHJvY2Vzc0NyZWF0aW9u
UGFyYW1ldGVycyB7CiAgICAgSGFzaE1hcDxTdHJpbmcsIGJvb2w+IG5vdGlmaWNhdGlvblBlcm1p
c3Npb25zOwogI2VuZGlmCiAKLSNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQotICAgIGJvb2wg
dXNlc05ldHdvcmtQcm9jZXNzOwotI2VuZGlmCi0KICAgICBIYXNoTWFwPFdlYkNvcmU6OlNlc3Np
b25JRCwgSGFzaE1hcDx1bnNpZ25lZCwgZG91YmxlPj4gcGx1Z0luQXV0b1N0YXJ0T3JpZ2luSGFz
aGVzOwogICAgIFZlY3RvcjxTdHJpbmc+IHBsdWdJbkF1dG9TdGFydE9yaWdpbnM7CiAKSW5kZXg6
IFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9XS0RlcHJlY2F0ZWRGdW5jdGlvbnMuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9XS0RlcHJlY2F0ZWRGdW5j
dGlvbnMuY3BwCShyZXZpc2lvbiAxOTI2MDEpCisrKyBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJ
L2MvV0tEZXByZWNhdGVkRnVuY3Rpb25zLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjcsNiArMjcs
OCBAQAogCiAjaW5jbHVkZSAiQVBJRGljdGlvbmFyeS5oIgogI2luY2x1ZGUgIldLQXJyYXkuaCIK
KyNpbmNsdWRlICJXS0NvbnRleHQuaCIKKyNpbmNsdWRlICJXS0NvbnRleHRQcml2YXRlLmgiCiAj
aW5jbHVkZSAiV0tNdXRhYmxlRGljdGlvbmFyeS5oIgogI2luY2x1ZGUgIldLUHJlZmVyZW5jZXNS
ZWZQcml2YXRlLmgiCiAjaW5jbHVkZSAiV0tTaGFyZWRBUElDYXN0LmgiCkBAIC0xMzQsNiArMTM2
LDE5IEBAIHZvaWQgV0tJbnNwZWN0b3JUb2dnbGVKYXZhU2NyaXB0UHJvZmlsaW4KIHsKIH0KIAor
dm9pZCBXS0NvbnRleHRTZXRQcm9jZXNzTW9kZWwoV0tDb250ZXh0UmVmLCBXS1Byb2Nlc3NNb2Rl
bCkKK3sKK30KKworV0tQcm9jZXNzTW9kZWwgV0tDb250ZXh0R2V0UHJvY2Vzc01vZGVsKFdLQ29u
dGV4dFJlZikKK3sKKyAgICByZXR1cm4ga1dLUHJvY2Vzc01vZGVsTXVsdGlwbGVTZWNvbmRhcnlQ
cm9jZXNzZXM7Cit9CisKK3ZvaWQgV0tDb250ZXh0U2V0VXNlc05ldHdvcmtQcm9jZXNzKFdLQ29u
dGV4dFJlZiwgYm9vbCkKK3sKK30KKwogI2lmIFBMQVRGT1JNKE1BQykKIENHQ29udGV4dFJlZiBX
S0dyYXBoaWNzQ29udGV4dEdldENHQ29udGV4dChXS0dyYXBoaWNzQ29udGV4dFJlZiBncmFwaGlj
c0NvbnRleHQpCiB7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQXV0aGVudGljYXRpb24v
QXV0aGVudGljYXRpb25NYW5hZ2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvQXV0aGVudGljYXRpb24vQXV0aGVudGljYXRpb25NYW5hZ2VyLmNwcAkocmV2aXNpb24g
MTkyNjAxKQorKysgU291cmNlL1dlYktpdDIvU2hhcmVkL0F1dGhlbnRpY2F0aW9uL0F1dGhlbnRp
Y2F0aW9uTWFuYWdlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNs
dWRlICJDaGlsZFByb2Nlc3MuaCIKICNpbmNsdWRlICJEb3dubG9hZC5oIgogI2luY2x1ZGUgIkRv
d25sb2FkUHJveHlNZXNzYWdlcy5oIgorI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzUHJveHlNZXNz
YWdlcy5oIgogI2luY2x1ZGUgIldlYkNvcmVBcmd1bWVudENvZGVycy5oIgogI2luY2x1ZGUgIldl
YkZyYW1lLmgiCiAjaW5jbHVkZSAiV2ViUGFnZS5oIgpAQCAtMzcsMTAgKzM4LDYgQEAKICNpbmNs
dWRlIDxXZWJDb3JlL0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9BdXRoZW50aWNhdGlvbkNsaWVudC5oPgogCi0jaWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykK
LSNpbmNsdWRlICJOZXR3b3JrUHJvY2Vzc1Byb3h5TWVzc2FnZXMuaCIKLSNlbmRpZgotCiB1c2lu
ZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC0xMjgsNyArMTI1
LDYgQEAgdm9pZCBBdXRoZW50aWNhdGlvbk1hbmFnZXI6OmRpZFJlY2VpdmVBdQogICAgIG1fcHJv
Y2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEaWRSZWNlaXZlQXV0aGVudGljYXRp
b25DaGFsbGVuZ2UoZnJhbWUtPmZyYW1lSUQoKSwgYXV0aGVudGljYXRpb25DaGFsbGVuZ2UsIGNo
YWxsZW5nZUlEKSwgZnJhbWUtPnBhZ2UoKS0+cGFnZUlEKCkpOwogfQogCi0jaWYgRU5BQkxFKE5F
VFdPUktfUFJPQ0VTUykKICNpZiBVU0UoTkVUV09SS19TRVNTSU9OKQogdm9pZCBBdXRoZW50aWNh
dGlvbk1hbmFnZXI6OmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSh1aW50NjRfdCBw
YWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiBh
dXRoZW50aWNhdGlvbkNoYWxsZW5nZSwgQ2hhbGxlbmdlQ29tcGxldGlvbkhhbmRsZXIgY29tcGxl
dGlvbkhhbmRsZXIpCiB7CkBAIC0xNTcsNyArMTUzLDYgQEAgdm9pZCBBdXRoZW50aWNhdGlvbk1h
bmFnZXI6OmRpZFJlY2VpdmVBdQogICAgIAogICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6
TmV0d29ya1Byb2Nlc3NQcm94eTo6RGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKHBh
Z2VJRCwgZnJhbWVJRCwgYXV0aGVudGljYXRpb25DaGFsbGVuZ2UsIGNoYWxsZW5nZUlEKSk7CiB9
Ci0jZW5kaWYKIAogI2lmICFVU0UoTkVUV09SS19TRVNTSU9OKQogdm9pZCBBdXRoZW50aWNhdGlv
bk1hbmFnZXI6OmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShEb3dubG9hZCogZG93
bmxvYWQsIGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiBhdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZSkKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9OZXR3b3JrL05ldHdvcmtQcm9jZXNz
Q3JlYXRpb25QYXJhbWV0ZXJzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5jcHAJKHJldmlzaW9u
IDE5MjYwMSkKKysrIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9OZXR3b3JrL05ldHdvcmtQcm9jZXNz
Q3JlYXRpb25QYXJhbWV0ZXJzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjYsOCArMjYsNiBAQAog
I2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJh
bWV0ZXJzLmgiCiAKLSNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQotCiAjaW5jbHVkZSAiQXJn
dW1lbnRDb2RlcnMuaCIKIAogI2lmIFBMQVRGT1JNKENPQ09BKQpAQCAtMTY4LDUgKzE2NiwzIEBA
IGJvb2wgTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnM6OmQKIH0KIAogfSAvLyBuYW1l
c3BhY2UgV2ViS2l0Ci0KLSNlbmRpZiAvLyBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQpJbmRleDog
U291cmNlL1dlYktpdDIvU2hhcmVkL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFt
ZXRlcnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvTmV0d29yay9OZXR3
b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oCShyZXZpc2lvbiAxOTI2MDEpCisrKyBTb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVy
cy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw4ICsyNiw2IEBACiAjaWZuZGVmIE5ldHdvcmtQcm9j
ZXNzQ3JlYXRpb25QYXJhbWV0ZXJzX2gKICNkZWZpbmUgTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBh
cmFtZXRlcnNfaAogCi0jaWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKLQogI2luY2x1ZGUgIkNh
Y2hlTW9kZWwuaCIKICNpbmNsdWRlICJTYW5kYm94RXh0ZW5zaW9uLmgiCiAjaW5jbHVkZSA8d3Rm
L1ZlY3Rvci5oPgpAQCAtMTAzLDYgKzEwMSw0IEBAIHN0cnVjdCBOZXR3b3JrUHJvY2Vzc0NyZWF0
aW9uUGFyYW1ldGVycyAKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKLSNlbmRpZiAvLyBFTkFC
TEUoTkVUV09SS19QUk9DRVNTKQotCiAjZW5kaWYgLy8gTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBh
cmFtZXRlcnNfaApJbmRleDogU291cmNlL1dlYktpdDIvU2hhcmVkL05ldHdvcmsvTmV0d29ya1By
b2Nlc3NTdXBwbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvU2hhcmVkL05l
dHdvcmsvTmV0d29ya1Byb2Nlc3NTdXBwbGVtZW50LmgJKHJldmlzaW9uIDE5MjYwMSkKKysrIFNv
dXJjZS9XZWJLaXQyL1NoYXJlZC9OZXR3b3JrL05ldHdvcmtQcm9jZXNzU3VwcGxlbWVudC5oCSh3
b3JraW5nIGNvcHkpCkBAIC0zMywxMiArMzMsMTAgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiBzdHJ1
Y3QgTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnM7CiAKIGNsYXNzIE5ldHdvcmtQcm9j
ZXNzU3VwcGxlbWVudCA6IHB1YmxpYyBDaGlsZFByb2Nlc3NTdXBwbGVtZW50IHsKLSNpZiBFTkFC
TEUoTkVUV09SS19QUk9DRVNTKQogcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBpbml0aWFsaXpl
KGNvbnN0IE5ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzJikKICAgICB7CiAgICAgfQot
I2VuZGlmCiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKSW5kZXg6IFNvdXJjZS9XZWJLaXQy
L1NoYXJlZC9OZXR3b3JrL05ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvTmV0d29yay9OZXR3b3JrUmVzb3VyY2VMb2Fk
UGFyYW1ldGVycy5jcHAJKHJldmlzaW9uIDE5MjYwMSkKKysrIFNvdXJjZS9XZWJLaXQyL1NoYXJl
ZC9OZXR3b3JrL05ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMzAsOCArMzAsNiBAQAogI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRl
ICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIKIAotI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1Mp
Ci0KIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTE2
MCw1ICsxNTgsMyBAQCBib29sIE5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzOjpkZWNvCiB9
CiAgICAgCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQotI2VuZGlmIC8vIEVOQUJMRShORVRXT1JL
X1BST0NFU1MpCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvTmV0d29yay9OZXR3b3JrUmVz
b3VyY2VMb2FkUGFyYW1ldGVycy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1NoYXJl
ZC9OZXR3b3JrL05ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmgJKHJldmlzaW9uIDE5MjYw
MSkKKysrIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9OZXR3b3JrL05ldHdvcmtSZXNvdXJjZUxvYWRQ
YXJhbWV0ZXJzLmgJKHdvcmtpbmcgY29weSkKQEAgLTMyLDggKzMyLDYgQEAKICNpbmNsdWRlIDxX
ZWJDb3JlL1Jlc291cmNlUmVxdWVzdC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2Vzc2lvbklELmg+
CiAKLSNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQotCiBuYW1lc3BhY2UgSVBDIHsKICAgICBj
bGFzcyBBcmd1bWVudERlY29kZXI7CiAgICAgY2xhc3MgQXJndW1lbnRFbmNvZGVyOwpAQCAtNjgs
NiArNjYsNCBAQCBwdWJsaWM6CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCi0jZW5kaWYgLy8g
RU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKLQogI2VuZGlmIC8vIE5ldHdvcmtSZXNvdXJjZUxvYWRQ
YXJhbWV0ZXJzX2gKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9OZXR3b3JrL0N1c3RvbVBy
b3RvY29scy9DdXN0b21Qcm90b2NvbE1hbmFnZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvTmV0d29yay9DdXN0b21Qcm90b2NvbHMvQ3VzdG9tUHJvdG9jb2xNYW5hZ2Vy
LmgJKHJldmlzaW9uIDE5MjYwMSkKKysrIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9OZXR3b3JrL0N1
c3RvbVByb3RvY29scy9DdXN0b21Qcm90b2NvbE1hbmFnZXIuaAkod29ya2luZyBjb3B5KQpAQCAt
ODMsMTAgKzgzLDggQEAgcHJpdmF0ZToKICAgICAvLyBXZWJQcm9jZXNzU3VwcGxlbWVudAogICAg
IHZvaWQgaW5pdGlhbGl6ZShjb25zdCBXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzJikgb3Zl
cnJpZGU7CiAKLSNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQogICAgIC8vIE5ldHdvcmtQcm9j
ZXNzU3VwcGxlbWVudAogICAgIHZvaWQgaW5pdGlhbGl6ZShjb25zdCBOZXR3b3JrUHJvY2Vzc0Ny
ZWF0aW9uUGFyYW1ldGVycyYpIG92ZXJyaWRlOwotI2VuZGlmCiAKICAgICAvLyBJUEM6Ok1lc3Nh
Z2VSZWNlaXZlcgogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5l
Y3Rpb24mLCBJUEM6Ok1lc3NhZ2VEZWNvZGVyJikgb3ZlcnJpZGU7CkluZGV4OiBTb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvTmV0d29yay9DdXN0b21Qcm90b2NvbHMvQ29jb2EvQ3VzdG9tUHJvdG9jb2xN
YW5hZ2VyQ29jb2EubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvU2hhcmVkL05ldHdv
cmsvQ3VzdG9tUHJvdG9jb2xzL0NvY29hL0N1c3RvbVByb3RvY29sTWFuYWdlckNvY29hLm1tCShy
ZXZpc2lvbiAxOTI2MDEpCisrKyBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvTmV0d29yay9DdXN0b21Q
cm90b2NvbHMvQ29jb2EvQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ29jb2EubW0JKHdvcmtpbmcgY29w
eSkKQEAgLTMwLDYgKzMwLDcgQEAKICNpbXBvcnQgIkN1c3RvbVByb3RvY29sTWFuYWdlck1lc3Nh
Z2VzLmgiCiAjaW1wb3J0ICJDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eU1lc3NhZ2VzLmgiCiAj
aW1wb3J0ICJEYXRhUmVmZXJlbmNlLmgiCisjaW1wb3J0ICJOZXR3b3JrUHJvY2Vzc0NyZWF0aW9u
UGFyYW1ldGVycy5oIgogI2ltcG9ydCAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCiAjaW1wb3J0
ICJXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmgiCiAjaW1wb3J0IDxXZWJDb3JlL1VSTC5o
PgpAQCAtMzcsMTAgKzM4LDYgQEAKICNpbXBvcnQgPFdlYkNvcmUvUmVzb3VyY2VSZXF1ZXN0Lmg+
CiAjaW1wb3J0IDxXZWJDb3JlL1Jlc291cmNlUmVzcG9uc2UuaD4KIAotI2lmIEVOQUJMRShORVRX
T1JLX1BST0NFU1MpCi0jaW1wb3J0ICJOZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5o
IgotI2VuZGlmCi0KICNpZmRlZiBfX2hhc19pbmNsdWRlCiAjaWYgX19oYXNfaW5jbHVkZSg8Rm91
bmRhdGlvbi9OU1VSTENvbm5lY3Rpb25Qcml2YXRlLmg+KQogI2ltcG9ydCA8Rm91bmRhdGlvbi9O
U1VSTENvbm5lY3Rpb25Qcml2YXRlLmg+CkBAIC0xMzcsMjIgKzEzNCwxMSBAQCB2b2lkIEN1c3Rv
bVByb3RvY29sTWFuYWdlcjo6aW5pdGlhbGl6ZUNvCiAKIHZvaWQgQ3VzdG9tUHJvdG9jb2xNYW5h
Z2VyOjppbml0aWFsaXplKGNvbnN0IFdlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMmIHBhcmFt
ZXRlcnMpCiB7Ci0jaWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKLSAgICBBU1NFUlQocGFyYW1l
dGVycy51cmxTY2hlbWVzUmVnaXN0ZXJlZEZvckN1c3RvbVByb3RvY29scy5pc0VtcHR5KCkgfHwg
IXBhcmFtZXRlcnMudXNlc05ldHdvcmtQcm9jZXNzKTsKLSAgICBpZiAocGFyYW1ldGVycy51c2Vz
TmV0d29ya1Byb2Nlc3MpIHsKLSAgICAgICAgbV9jaGlsZFByb2Nlc3MtPnBhcmVudFByb2Nlc3ND
b25uZWN0aW9uKCktPnJlbW92ZVdvcmtRdWV1ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6Q3Vz
dG9tUHJvdG9jb2xNYW5hZ2VyOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCkpOwotICAgICAgICBtX21l
c3NhZ2VRdWV1ZSA9IG51bGxwdHI7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0jZW5kaWYKLQot
ICAgIFtOU1VSTFByb3RvY29sIHJlZ2lzdGVyQ2xhc3M6W1dLQ3VzdG9tUHJvdG9jb2wgY2xhc3Nd
XTsKLQotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcGFyYW1ldGVycy51cmxTY2hlbWVzUmVn
aXN0ZXJlZEZvckN1c3RvbVByb3RvY29scy5zaXplKCk7ICsraSkKLSAgICAgICAgcmVnaXN0ZXJT
Y2hlbWUocGFyYW1ldGVycy51cmxTY2hlbWVzUmVnaXN0ZXJlZEZvckN1c3RvbVByb3RvY29sc1tp
XSk7CisgICAgQVNTRVJUKHBhcmFtZXRlcnMudXJsU2NoZW1lc1JlZ2lzdGVyZWRGb3JDdXN0b21Q
cm90b2NvbHMuaXNFbXB0eSgpKTsKKyAgICBtX2NoaWxkUHJvY2Vzcy0+cGFyZW50UHJvY2Vzc0Nv
bm5lY3Rpb24oKS0+cmVtb3ZlV29ya1F1ZXVlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpDdXN0
b21Qcm90b2NvbE1hbmFnZXI6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSk7CisgICAgbV9tZXNzYWdl
UXVldWUgPSBudWxscHRyOwogfQogCi0jaWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKIHZvaWQg
Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyOjppbml0aWFsaXplKGNvbnN0IE5ldHdvcmtQcm9jZXNzQ3Jl
YXRpb25QYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQogewogICAgIFtOU1VSTFByb3RvY29sIHJlZ2lz
dGVyQ2xhc3M6W1dLQ3VzdG9tUHJvdG9jb2wgY2xhc3NdXTsKQEAgLTE2MCw3ICsxNDYsNiBAQCB2
b2lkIEN1c3RvbVByb3RvY29sTWFuYWdlcjo6aW5pdGlhbGl6ZShjCiAgICAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCBwYXJhbWV0ZXJzLnVybFNjaGVtZXNSZWdpc3RlcmVkRm9yQ3VzdG9tUHJvdG9j
b2xzLnNpemUoKTsgKytpKQogICAgICAgICByZWdpc3RlclNjaGVtZShwYXJhbWV0ZXJzLnVybFNj
aGVtZXNSZWdpc3RlcmVkRm9yQ3VzdG9tUHJvdG9jb2xzW2ldKTsKIH0KLSNlbmRpZgogCiB2b2lk
IEN1c3RvbVByb3RvY29sTWFuYWdlcjo6YWRkQ3VzdG9tUHJvdG9jb2woV0tDdXN0b21Qcm90b2Nv
bCAqY3VzdG9tUHJvdG9jb2wpCiB7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvbWFjL0Nv
b2tpZVN0b3JhZ2VTaGltLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvU2hhcmVkL21h
Yy9Db29raWVTdG9yYWdlU2hpbS5oCShyZXZpc2lvbiAxOTI2MDEpCisrKyBTb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvbWFjL0Nvb2tpZVN0b3JhZ2VTaGltLmgJKHdvcmtpbmcgY29weSkKQEAgLTI2LDgg
KzI2LDYgQEAKICNpZm5kZWYgQ29va2llU3RvcmFnZVNoaW1faAogI2RlZmluZSBDb29raWVTdG9y
YWdlU2hpbV9oCiAKLSNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQotCiAjaW5jbHVkZSA8d3Rm
L05vbmNvcHlhYmxlLmg+CiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAKQEAgLTQ5
LDYgKzQ3LDQgQEAgcHJpdmF0ZToKIAogfQogCi0jZW5kaWYgLy8gRU5BQkxFKE5FVFdPUktfUFJP
Q0VTUykKLQogI2VuZGlmIC8vIENvb2tpZVN0b3JhZ2VTaGltX2gKSW5kZXg6IFNvdXJjZS9XZWJL
aXQyL1NoYXJlZC9tYWMvQ29va2llU3RvcmFnZVNoaW0ubW0KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdDIvU2hhcmVkL21hYy9Db29raWVTdG9yYWdlU2hpbS5tbQkocmV2aXNpb24gMTkyNjAx
KQorKysgU291cmNlL1dlYktpdDIvU2hhcmVkL21hYy9Db29raWVTdG9yYWdlU2hpbS5tbQkod29y
a2luZyBjb3B5KQpAQCAtMjYsOCArMjYsNiBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1
ZGUgIkNvb2tpZVN0b3JhZ2VTaGltLmgiCiAKLSNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQot
CiAjaW5jbHVkZSAiQ29va2llU3RvcmFnZVNoaW1MaWJyYXJ5LmgiCiAjaW5jbHVkZSAiTmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaCIKICNpbmNsdWRlICJOZXR3b3JrUHJvY2Vzc0Nvbm5l
Y3Rpb24uaCIKQEAgLTEzNSw1ICsxMzMsMyBAQCAtICh2b2lkKV9nZXRDb29raWVIZWFkZXJzRm9y
VGFzazooTlNVUkxTCiB9CiAKIEBlbmQKLQotI2VuZGlmIC8vIEVOQUJMRShORVRXT1JLX1BST0NF
U1MpCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvbWFjL0Nvb2tpZVN0b3JhZ2VTaGltTGli
cmFyeS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvU2hhcmVkL21hYy9Db29raWVT
dG9yYWdlU2hpbUxpYnJhcnkuY3BwCShyZXZpc2lvbiAxOTI2MDEpCisrKyBTb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvbWFjL0Nvb2tpZVN0b3JhZ2VTaGltTGlicmFyeS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTI2LDcgKzI2LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJDb29raWVT
dG9yYWdlU2hpbUxpYnJhcnkuaCIKIAotI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpICYmICFQ
TEFURk9STShJT1MpCisjaWYgIVBMQVRGT1JNKElPUykKIAogI2luY2x1ZGUgPFdlYkNvcmUvRHlu
YW1pY0xpbmtlckludGVycG9zaW5nLmg+CiAKQEAgLTkwLDQgKzkwLDQgQEAgdm9pZCBXZWJLaXRD
b29raWVTdG9yYWdlU2hpbUluaXRpYWxpemUoYwogICAgIAogfQogCi0jZW5kaWYgLy8gRU5BQkxF
KE5FVFdPUktfUFJPQ0VTUykgJiYgIVBMQVRGT1JNKElPUykKKyNlbmRpZiAvLyAhUExBVEZPUk0o
SU9TKQpJbmRleDogU291cmNlL1dlYktpdDIvU2hhcmVkL21hYy9Db29raWVTdG9yYWdlU2hpbUxp
YnJhcnkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvbWFjL0Nvb2tpZVN0
b3JhZ2VTaGltTGlicmFyeS5oCShyZXZpc2lvbiAxOTI2MDEpCisrKyBTb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvbWFjL0Nvb2tpZVN0b3JhZ2VTaGltTGlicmFyeS5oCSh3b3JraW5nIGNvcHkpCkBAIC0y
Niw4ICsyNiw2IEBACiAjaWZuZGVmIENvb2tpZVN0b3JhZ2VTaGltTGlicmFyeV9oCiAjZGVmaW5l
IENvb2tpZVN0b3JhZ2VTaGltTGlicmFyeV9oCiAKLSNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNT
KQotCiB0eXBlZGVmIHN0cnVjdCBPcGFxdWVDRkhUVFBDb29raWVTdG9yYWdlKiAgQ0ZIVFRQQ29v
a2llU3RvcmFnZVJlZjsKIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC00MCw2ICszOCw0IEBAIHR5
cGVkZWYgdm9pZCAoKkNvb2tpZVN0b3JhZ2VTaGltSW5pdGlhbGkKIAogfQogCi0jZW5kaWYgLy8g
RU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKLQogI2VuZGlmIC8vIENvb2tpZVN0b3JhZ2VTaGltTGli
cmFyeV9oCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUHJvY2Vzc01vZGVsLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1Byb2Nlc3NNb2RlbC5oCShyZXZp
c2lvbiAxOTI2MDEpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUHJvY2Vzc01vZGVsLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTEsMzggKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAx
MCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYgUHJv
Y2Vzc01vZGVsX2gKLSNkZWZpbmUgUHJvY2Vzc01vZGVsX2gKLQotbmFtZXNwYWNlIFdlYktpdCB7
Ci0KLWVudW0gUHJvY2Vzc01vZGVsIHsKLSAgICBQcm9jZXNzTW9kZWxTaGFyZWRTZWNvbmRhcnlQ
cm9jZXNzLAotICAgIFByb2Nlc3NNb2RlbE11bHRpcGxlU2Vjb25kYXJ5UHJvY2Vzc2VzCi19Owot
Ci19IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQotI2VuZGlmIC8vIFByb2Nlc3NNb2RlbF9oCkluZGV4
OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29va2llTWFuYWdlclByb3h5LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29va2llTWFuYWdlclByb3h5
LmNwcAkocmV2aXNpb24gMTkyNjAxKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNv
b2tpZU1hbmFnZXJQcm94eS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg1LDggKzg1LDggQEAgdm9p
ZCBXZWJDb29raWVNYW5hZ2VyUHJveHk6OnByb2Nlc3NEaWRDbAogCiBib29sIFdlYkNvb2tpZU1h
bmFnZXJQcm94eTo6c2hvdWxkVGVybWluYXRlKFdlYlByb2Nlc3NQcm94eSopIGNvbnN0CiB7Ci0g
ICAgcmV0dXJuIHByb2Nlc3NQb29sKCktPnByb2Nlc3NNb2RlbCgpICE9IFByb2Nlc3NNb2RlbFNo
YXJlZFNlY29uZGFyeVByb2Nlc3MKLSAgICAgICAgfHwgKG1fYXJyYXlDYWxsYmFja3MuaXNFbXB0
eSgpICYmIG1faHR0cENvb2tpZUFjY2VwdFBvbGljeUNhbGxiYWNrcy5pc0VtcHR5KCkpOworICAg
IC8vIEZJWE1FOiBSZW1vdmUgdGhpcy4KKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogdm9pZCBXZWJD
b29raWVNYW5hZ2VyUHJveHk6OnJlZldlYkNvbnRleHRTdXBwbGVtZW50KCkKQEAgLTE2MywxMCAr
MTYzLDcgQEAgdm9pZCBXZWJDb29raWVNYW5hZ2VyUHJveHk6OnNldEhUVFBDb29raQogICAgIC8v
IC0gV2hlbiB0ZXN0aW5nLCB3ZSBvbmx5IGhhdmUgb25lIFdlYlByb2Nlc3MgYW5kIG9uZSBOZXR3
b3JrUHJvY2VzcywgYW5kIFdlYktpdFRlc3RSdW5uZXIgbmV2ZXIgcmVzdGFydHMgdGhlbTsKICAg
ICAvLyAtIFdoZW4gbm90IHRlc3RpbmcsIENvY29hIGhhcyB0aGUgcG9saWN5IHBlcnNpc3RlZCwg
YW5kIHRodXMgbmV3IHByb2Nlc3NlcyB1c2UgaXQgKGV2ZW4gZm9yIGVwaGVtZXJhbCBzZXNzaW9u
cykuCiAgICAgcHJvY2Vzc1Bvb2woKS0+c2VuZFRvQWxsUHJvY2Vzc2VzKE1lc3NhZ2VzOjpXZWJD
b29raWVNYW5hZ2VyOjpTZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KHBvbGljeSkpOwotI2lmIEVO
QUJMRShORVRXT1JLX1BST0NFU1MpCi0gICAgaWYgKHByb2Nlc3NQb29sKCktPnVzZXNOZXR3b3Jr
UHJvY2VzcygpKQotICAgICAgICBwcm9jZXNzUG9vbCgpLT5zZW5kVG9OZXR3b3JraW5nUHJvY2Vz
cyhNZXNzYWdlczo6V2ViQ29va2llTWFuYWdlcjo6U2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeShw
b2xpY3kpKTsKLSNlbmRpZgorICAgIHByb2Nlc3NQb29sKCktPnNlbmRUb05ldHdvcmtpbmdQcm9j
ZXNzKE1lc3NhZ2VzOjpXZWJDb29raWVNYW5hZ2VyOjpTZXRIVFRQQ29va2llQWNjZXB0UG9saWN5
KHBvbGljeSkpOwogfQogCiB2b2lkIFdlYkNvb2tpZU1hbmFnZXJQcm94eTo6Z2V0SFRUUENvb2tp
ZUFjY2VwdFBvbGljeShzdGQ6OmZ1bmN0aW9uPHZvaWQgKEhUVFBDb29raWVBY2NlcHRQb2xpY3ks
IENhbGxiYWNrQmFzZTo6RXJyb3IpPiBjYWxsYmFja0Z1bmN0aW9uKQpJbmRleDogU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL1dlYkluc3BlY3RvclByb3h5LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViSW5zcGVjdG9yUHJveHkuY3BwCShyZXZpc2lvbiAxOTI2
MDEpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViSW5zcGVjdG9yUHJveHkuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0zMTIsNyArMzEyLDYgQEAgV2ViUHJvY2Vzc1Bvb2wmIFdlYkluc3Bl
Y3RvclByb3h5OjppbnNwZQogICAgIC8vIGd1YXJhbnRlZXMgbm8gcHJvY2VzcyBzaGFyaW5nIGZv
ciBvdXIgdXNlciBpbnRlcmZhY2UuCiAgICAgaWYgKCFzX3Byb2Nlc3NQb29sKSB7CiAgICAgICAg
IGF1dG8gY29uZmlndXJhdGlvbiA9IEFQSTo6UHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uOjpjcmVh
dGVXaXRoTGVnYWN5T3B0aW9ucygpOwotICAgICAgICBjb25maWd1cmF0aW9uLT5zZXRQcm9jZXNz
TW9kZWwoUHJvY2Vzc01vZGVsTXVsdGlwbGVTZWNvbmRhcnlQcm9jZXNzZXMpOwogICAgICAgICBz
X3Byb2Nlc3NQb29sID0gJldlYlByb2Nlc3NQb29sOjpjcmVhdGUoY29uZmlndXJhdGlvbi5nZXQo
KSkubGVha1JlZigpOwogICAgIH07CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuY3BwCShyZXZpc2lvbiAxOTI2MDEpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvV2ViUGFnZVByb3h5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjAsNiArNjAsNyBAQAog
I2luY2x1ZGUgIk5hdGl2ZVdlYk1vdXNlRXZlbnQuaCIKICNpbmNsdWRlICJOYXRpdmVXZWJXaGVl
bEV2ZW50LmgiCiAjaW5jbHVkZSAiTmF2aWdhdGlvbkFjdGlvbkRhdGEuaCIKKyNpbmNsdWRlICJO
ZXR3b3JrUHJvY2Vzc01lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiTm90aWZpY2F0aW9uUGVybWlzc2lv
blJlcXVlc3QuaCIKICNpbmNsdWRlICJOb3RpZmljYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFn
ZXIuaCIKICNpbmNsdWRlICJQYWdlQ2xpZW50LmgiCkBAIC0xMzgsMTAgKzEzOSw2IEBACiAjaW5j
bHVkZSA8d3RmL1JlZkNvdW50ZWRMZWFrQ291bnRlci5oPgogI2VuZGlmCiAKLSNpZiBFTkFCTEUo
TkVUV09SS19QUk9DRVNTKQotI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzTWVzc2FnZXMuaCIKLSNl
bmRpZgotCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAjaW5jbHVkZSAiUmVtb3RlTGF5ZXJUcmVlRHJh
d2luZ0FyZWFQcm94eS5oIgogI2luY2x1ZGUgIlJlbW90ZUxheWVyVHJlZVNjcm9sbGluZ1BlcmZv
cm1hbmNlRGF0YS5oIgpAQCAtNDg3LDEwICs0ODQsOCBAQCBXZWJQYWdlUHJveHk6OldlYlBhZ2VQ
cm94eShQYWdlQ2xpZW50JiBwCiAKICAgICBtX3Byb2Nlc3MtPmFkZE1lc3NhZ2VSZWNlaXZlcihN
ZXNzYWdlczo6V2ViUGFnZVByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1fcGFnZUlELCAq
dGhpcyk7CiAKLSNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQogICAgIGlmIChtX3Nlc3Npb25J
RC5pc0VwaGVtZXJhbCgpKQogICAgICAgICBtX3Byb2Nlc3MtPnByb2Nlc3NQb29sKCkuc2VuZFRv
TmV0d29ya2luZ1Byb2Nlc3MoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpFbnN1cmVQcml2YXRl
QnJvd3NpbmdTZXNzaW9uKG1fc2Vzc2lvbklEKSk7Ci0jZW5kaWYKIAogI2lmIFBMQVRGT1JNKENP
Q09BKQogICAgIGNvbnN0IENGSW5kZXggdmlld1N0YXRlQ2hhbmdlUnVuTG9vcE9yZGVyID0gKENG
SW5kZXgpUnVuTG9vcE9ic2VydmVyOjpXZWxsS25vd25SdW5Mb29wT3JkZXJzOjpDb3JlQW5pbWF0
aW9uQ29tbWl0IC0gMTsKQEAgLTY5NiwxMCArNjkxLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnJl
YXR0YWNoVG9XZWJQcm9jZXNzKAogICAgIG1fcHJvY2Vzcy0+cmVtb3ZlV2ViUGFnZShtX3BhZ2VJ
RCk7CiAgICAgbV9wcm9jZXNzLT5yZW1vdmVNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OldlYlBh
Z2VQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX3BhZ2VJRCk7CiAKLSAgICBpZiAobV9w
cm9jZXNzLT5wcm9jZXNzUG9vbCgpLnByb2Nlc3NNb2RlbCgpID09IFByb2Nlc3NNb2RlbFNoYXJl
ZFNlY29uZGFyeVByb2Nlc3MpCi0gICAgICAgIG1fcHJvY2VzcyA9IG1fcHJvY2Vzcy0+cHJvY2Vz
c1Bvb2woKS5lbnN1cmVTaGFyZWRXZWJQcm9jZXNzKCk7Ci0gICAgZWxzZQotICAgICAgICBtX3By
b2Nlc3MgPSBtX3Byb2Nlc3MtPnByb2Nlc3NQb29sKCkuY3JlYXRlTmV3V2ViUHJvY2Vzc1Jlc3Bl
Y3RpbmdQcm9jZXNzQ291bnRMaW1pdCgpOworICAgIG1fcHJvY2VzcyA9IG1fcHJvY2Vzcy0+cHJv
Y2Vzc1Bvb2woKS5jcmVhdGVOZXdXZWJQcm9jZXNzUmVzcGVjdGluZ1Byb2Nlc3NDb3VudExpbWl0
KCk7CiAKICAgICBBU1NFUlQobV9wcm9jZXNzLT5zdGF0ZSgpICE9IENoaWxkUHJvY2Vzc1Byb3h5
OjpTdGF0ZTo6VGVybWluYXRlZCk7CiAgICAgaWYgKG1fcHJvY2Vzcy0+c3RhdGUoKSA9PSBDaGls
ZFByb2Nlc3NQcm94eTo6U3RhdGU6OlJ1bm5pbmcpCkBAIC03NzQsMTAgKzc2Niw4IEBAIHZvaWQg
V2ViUGFnZVByb3h5OjpzZXRTZXNzaW9uSUQoU2Vzc2lvbkkKICAgICBtX3Nlc3Npb25JRCA9IHNl
c3Npb25JRDsKICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldFNlc3Np
b25JRChzZXNzaW9uSUQpLCBtX3BhZ2VJRCk7CiAKLSNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNT
KQogICAgIGlmIChzZXNzaW9uSUQuaXNFcGhlbWVyYWwoKSkKICAgICAgICAgbV9wcm9jZXNzLT5w
cm9jZXNzUG9vbCgpLnNlbmRUb05ldHdvcmtpbmdQcm9jZXNzKE1lc3NhZ2VzOjpOZXR3b3JrUHJv
Y2Vzczo6RW5zdXJlUHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbihzZXNzaW9uSUQpKTsKLSNlbmRpZgog
fQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6aW5pdGlhbGl6ZVdlYlBhZ2UoKQpJbmRleDogU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCShyZXZpc2lvbiAxOTI2MDEp
CisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0zNSw2ICszNSw5IEBACiAjaW5jbHVkZSAiRG93bmxvYWRQcm94eS5oIgogI2lu
Y2x1ZGUgIkRvd25sb2FkUHJveHlNZXNzYWdlcy5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKKyNp
bmNsdWRlICJOZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oIgorI2luY2x1ZGUgIk5l
dHdvcmtQcm9jZXNzTWVzc2FnZXMuaCIKKyNpbmNsdWRlICJOZXR3b3JrUHJvY2Vzc1Byb3h5Lmgi
CiAjaW5jbHVkZSAiU2FuZGJveEV4dGVuc2lvbi5oIgogI2luY2x1ZGUgIlN0YXRpc3RpY3NEYXRh
LmgiCiAjaW5jbHVkZSAiVGV4dENoZWNrZXIuaCIKQEAgLTc4LDExICs4MSw2IEBACiAjaW5jbHVk
ZSAiRGF0YWJhc2VQcm9jZXNzTWVzc2FnZXMuaCIKICNlbmRpZgogCi0jaWYgRU5BQkxFKE5FVFdP
UktfUFJPQ0VTUykKLSNpbmNsdWRlICJOZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5o
IgotI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzTWVzc2FnZXMuaCIKLSNpbmNsdWRlICJOZXR3b3Jr
UHJvY2Vzc1Byb3h5LmgiCi0jZW5kaWYKIAogI2lmIEVOQUJMRShTRVJWSUNFX0NPTlRST0xTKQog
I2luY2x1ZGUgIlNlcnZpY2VzQ29udHJvbGxlci5oIgpAQCAtMTA1LDggKzEwMyw2IEBAIHVzaW5n
IG5hbWVzcGFjZSBXZWJLaXQ7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1zdGF0aWMgY29uc3Qg
ZG91YmxlIHNoYXJlZFNlY29uZGFyeVByb2Nlc3NTaHV0ZG93blRpbWVvdXQgPSA2MDsKLQogREVG
SU5FX0RFQlVHX09OTFlfR0xPQkFMKFdURjo6UmVmQ291bnRlZExlYWtDb3VudGVyLCBwcm9jZXNz
UG9vbENvdW50ZXIsICgiV2ViUHJvY2Vzc1Bvb2wiKSk7CiAKIFJlZjxXZWJQcm9jZXNzUG9vbD4g
V2ViUHJvY2Vzc1Bvb2w6OmNyZWF0ZShBUEk6OlByb2Nlc3NQb29sQ29uZmlndXJhdGlvbiYgY29u
ZmlndXJhdGlvbikKQEAgLTE1OSwxMCArMTU1LDggQEAgV2ViUHJvY2Vzc1Bvb2w6OldlYlByb2Nl
c3NQb29sKEFQSTo6UHJvYwogI2VuZGlmCiAgICAgLCBtX3Nob3VsZFVzZVRlc3RpbmdOZXR3b3Jr
U2Vzc2lvbihmYWxzZSkKICAgICAsIG1fcHJvY2Vzc1Rlcm1pbmF0aW9uRW5hYmxlZCh0cnVlKQot
I2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCiAgICAgLCBtX2NhbkhhbmRsZUhUVFBTU2VydmVy
VHJ1c3RFdmFsdWF0aW9uKHRydWUpCiAgICAgLCBtX2RpZE5ldHdvcmtQcm9jZXNzQ3Jhc2goZmFs
c2UpCi0jZW5kaWYKICNpZiBVU0UoU09VUCkKICAgICAsIG1faWdub3JlVExTRXJyb3JzKHRydWUp
CiAjZW5kaWYKQEAgLTI1NCwxMCArMjQ4LDggQEAgV2ViUHJvY2Vzc1Bvb2w6On5XZWJQcm9jZXNz
UG9vbCgpCiAgICAgcHJvY2Vzc1Bvb2xDb3VudGVyLmRlY3JlbWVudCgpOwogI2VuZGlmCiAKLSNp
ZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQogICAgIGlmIChtX25ldHdvcmtQcm9jZXNzKQogICAg
ICAgICBtX25ldHdvcmtQcm9jZXNzLT5zaHV0RG93blByb2Nlc3MoKTsKLSNlbmRpZgogfQogCiB2
b2lkIFdlYlByb2Nlc3NQb29sOjppbml0aWFsaXplQ2xpZW50KGNvbnN0IFdLQ29udGV4dENsaWVu
dEJhc2UqIGNsaWVudCkKQEAgLTI5MSwxNyArMjgzLDYgQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6
c2V0RG93bmxvYWRDbGllbnQocwogICAgICAgICBtX2Rvd25sb2FkQ2xpZW50ID0gV1RGOjptb3Zl
KGRvd25sb2FkQ2xpZW50KTsKIH0KIAotdm9pZCBXZWJQcm9jZXNzUG9vbDo6c2V0UHJvY2Vzc01v
ZGVsKFByb2Nlc3NNb2RlbCBwcm9jZXNzTW9kZWwpCi17Ci0gICAgLy8gR3VhcmQgYWdhaW5zdCBB
UEkgbWlzdXNlLgotICAgIGlmICghbV9wcm9jZXNzZXMuaXNFbXB0eSgpKQotICAgICAgICBDUkFT
SCgpOwotICAgIGlmIChwcm9jZXNzTW9kZWwgIT0gUHJvY2Vzc01vZGVsU2hhcmVkU2Vjb25kYXJ5
UHJvY2VzcyAmJiAhbV9tZXNzYWdlc1RvSW5qZWN0ZWRCdW5kbGVQb3N0ZWRUb0VtcHR5Q29udGV4
dC5pc0VtcHR5KCkpCi0gICAgICAgIENSQVNIKCk7Ci0KLSAgICBtX2NvbmZpZ3VyYXRpb24tPnNl
dFByb2Nlc3NNb2RlbChwcm9jZXNzTW9kZWwpOwotfQotCiB2b2lkIFdlYlByb2Nlc3NQb29sOjpz
ZXRNYXhpbXVtTnVtYmVyT2ZQcm9jZXNzZXModW5zaWduZWQgbWF4aW11bU51bWJlck9mUHJvY2Vz
c2VzKQogewogICAgIC8vIEd1YXJkIGFnYWluc3QgQVBJIG1pc3VzZS4KQEAgLTMxMywyMyArMjk0
LDcgQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6c2V0TWF4aW11bU51bWJlck9mUAogCiBJUEM6OkNv
bm5lY3Rpb24qIFdlYlByb2Nlc3NQb29sOjpuZXR3b3JraW5nUHJvY2Vzc0Nvbm5lY3Rpb24oKQog
ewotICAgIHN3aXRjaCAocHJvY2Vzc01vZGVsKCkpIHsKLSAgICBjYXNlIFByb2Nlc3NNb2RlbFNo
YXJlZFNlY29uZGFyeVByb2Nlc3M6Ci0jaWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKLSAgICAg
ICAgaWYgKHVzZXNOZXR3b3JrUHJvY2VzcygpKQotICAgICAgICAgICAgcmV0dXJuIG1fbmV0d29y
a1Byb2Nlc3MtPmNvbm5lY3Rpb24oKTsKLSNlbmRpZgotICAgICAgICByZXR1cm4gbV9wcm9jZXNz
ZXNbMF0tPmNvbm5lY3Rpb24oKTsKLSAgICBjYXNlIFByb2Nlc3NNb2RlbE11bHRpcGxlU2Vjb25k
YXJ5UHJvY2Vzc2VzOgotI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCi0gICAgICAgIEFTU0VS
VCh1c2VzTmV0d29ya1Byb2Nlc3MoKSk7Ci0gICAgICAgIHJldHVybiBtX25ldHdvcmtQcm9jZXNz
LT5jb25uZWN0aW9uKCk7Ci0jZWxzZQotICAgICAgICBicmVhazsKLSNlbmRpZgotICAgIH0KLSAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gbV9uZXR3
b3JrUHJvY2Vzcy0+Y29ubmVjdGlvbigpOwogfQogCiB2b2lkIFdlYlByb2Nlc3NQb29sOjpsYW5n
dWFnZUNoYW5nZWQodm9pZCogY29udGV4dCkKQEAgLTM0MCw4ICszMDUsOCBAQCB2b2lkIFdlYlBy
b2Nlc3NQb29sOjpsYW5ndWFnZUNoYW5nZWQodm9pCiB2b2lkIFdlYlByb2Nlc3NQb29sOjpsYW5n
dWFnZUNoYW5nZWQoKQogewogICAgIHNlbmRUb0FsbFByb2Nlc3NlcyhNZXNzYWdlczo6V2ViUHJv
Y2Vzczo6VXNlclByZWZlcnJlZExhbmd1YWdlc0NoYW5nZWQodXNlclByZWZlcnJlZExhbmd1YWdl
cygpKSk7Ci0jaWYgVVNFKFNPVVApICYmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCi0gICAgaWYg
KHVzZXNOZXR3b3JrUHJvY2VzcygpICYmIG1fbmV0d29ya1Byb2Nlc3MpCisjaWYgVVNFKFNPVVAp
CisgICAgaWYgKG1fbmV0d29ya1Byb2Nlc3MpCiAgICAgICAgIG1fbmV0d29ya1Byb2Nlc3MtPnNl
bmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpVc2VyUHJlZmVycmVkTGFuZ3VhZ2VzQ2hhbmdl
ZCh1c2VyUHJlZmVycmVkTGFuZ3VhZ2VzKCkpLCAwKTsKICNlbmRpZgogfQpAQCAtMzU2LDI1ICsz
MjEsNiBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjp0ZXh0Q2hlY2tlclN0YXRlQ2hhCiAgICAgc2Vu
ZFRvQWxsUHJvY2Vzc2VzKE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpTZXRUZXh0Q2hlY2tlclN0YXRl
KFRleHRDaGVja2VyOjpzdGF0ZSgpKSk7CiB9CiAKLXZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnNldFVz
ZXNOZXR3b3JrUHJvY2Vzcyhib29sIHVzZXNOZXR3b3JrUHJvY2VzcykKLXsKLSNpZiBFTkFCTEUo
TkVUV09SS19QUk9DRVNTKQotICAgIG1fY29uZmlndXJhdGlvbi0+c2V0VXNlTmV0d29ya1Byb2Nl
c3ModXNlc05ldHdvcmtQcm9jZXNzKTsKLSNlbHNlCi0gICAgVU5VU0VEX1BBUkFNKHVzZXNOZXR3
b3JrUHJvY2Vzcyk7Ci0jZW5kaWYKLX0KLQotYm9vbCBXZWJQcm9jZXNzUG9vbDo6dXNlc05ldHdv
cmtQcm9jZXNzKCkgY29uc3QKLXsKLSNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQotICAgIHJl
dHVybiBtX2NvbmZpZ3VyYXRpb24tPnVzZU5ldHdvcmtQcm9jZXNzKCk7Ci0jZWxzZQotICAgIHJl
dHVybiBmYWxzZTsKLSNlbmRpZgotfQotCi0jaWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKIE5l
dHdvcmtQcm9jZXNzUHJveHkmIFdlYlByb2Nlc3NQb29sOjplbnN1cmVOZXR3b3JrUHJvY2Vzcygp
CiB7CiAgICAgaWYgKG1fbmV0d29ya1Byb2Nlc3MpCkBAIC00NTksNyArNDA1LDYgQEAgdm9pZCBX
ZWJQcm9jZXNzUG9vbDo6Z2V0TmV0d29ya1Byb2Nlc3NDbwogCiAgICAgbV9uZXR3b3JrUHJvY2Vz
cy0+Z2V0TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKHJlcGx5KTsKIH0KLSNlbmRpZgogCiAjaWYg
RU5BQkxFKERBVEFCQVNFX1BST0NFU1MpCiB2b2lkIFdlYlByb2Nlc3NQb29sOjplbnN1cmVEYXRh
YmFzZVByb2Nlc3MoKQpAQCAtNTI3LDE0ICs0NzIsMTIgQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6
c2V0QW55UGFnZUdyb3VwTWlnaAogewogICAgIG1faWNvbkRhdGFiYXNlLT5zZXRQcml2YXRlQnJv
d3NpbmdFbmFibGVkKHByaXZhdGVCcm93c2luZ0VuYWJsZWQpOwogCi0jaWYgRU5BQkxFKE5FVFdP
UktfUFJPQ0VTUykKLSAgICBpZiAodXNlc05ldHdvcmtQcm9jZXNzKCkgJiYgbmV0d29ya1Byb2Nl
c3MoKSkgeworICAgIGlmIChuZXR3b3JrUHJvY2VzcygpKSB7CiAgICAgICAgIGlmIChwcml2YXRl
QnJvd3NpbmdFbmFibGVkKQogICAgICAgICAgICAgbmV0d29ya1Byb2Nlc3MoKS0+c2VuZChNZXNz
YWdlczo6TmV0d29ya1Byb2Nlc3M6OkVuc3VyZVByaXZhdGVCcm93c2luZ1Nlc3Npb24oU2Vzc2lv
bklEOjpsZWdhY3lQcml2YXRlU2Vzc2lvbklEKCkpLCAwKTsKICAgICAgICAgZWxzZQogICAgICAg
ICAgICAgbmV0d29ya1Byb2Nlc3MoKS0+c2VuZChNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OkRl
c3Ryb3lQcml2YXRlQnJvd3NpbmdTZXNzaW9uKFNlc3Npb25JRDo6bGVnYWN5UHJpdmF0ZVNlc3Np
b25JRCgpKSwgMCk7CiAgICAgfQotI2VuZGlmIC8vIEVOQUJMRUQoTkVUV09SS19QUk9DRVNTKQog
CiAgICAgaWYgKHByaXZhdGVCcm93c2luZ0VuYWJsZWQpCiAgICAgICAgIHNlbmRUb0FsbFByb2Nl
c3NlcyhNZXNzYWdlczo6V2ViUHJvY2Vzczo6RW5zdXJlUHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbihT
ZXNzaW9uSUQ6OmxlZ2FjeVByaXZhdGVTZXNzaW9uSUQoKSkpOwpAQCAtNTY5LDIwICs1MTIsOSBA
QCB2b2lkIFdlYlByb2Nlc3NQb29sOjpwcm9jZXNzRGlkQ2FjaGVQYWdlCiAgICAgbV9wcm9jZXNz
V2l0aFBhZ2VDYWNoZSA9IHByb2Nlc3M7CiB9CiAKLVdlYlByb2Nlc3NQcm94eSYgV2ViUHJvY2Vz
c1Bvb2w6OmVuc3VyZVNoYXJlZFdlYlByb2Nlc3MoKQotewotICAgIEFTU0VSVChwcm9jZXNzTW9k
ZWwoKSA9PSBQcm9jZXNzTW9kZWxTaGFyZWRTZWNvbmRhcnlQcm9jZXNzKTsKLSAgICBpZiAobV9w
cm9jZXNzZXMuaXNFbXB0eSgpKQotICAgICAgICBjcmVhdGVOZXdXZWJQcm9jZXNzKCk7Ci0gICAg
cmV0dXJuICptX3Byb2Nlc3Nlc1swXTsKLX0KLQogV2ViUHJvY2Vzc1Byb3h5JiBXZWJQcm9jZXNz
UG9vbDo6Y3JlYXRlTmV3V2ViUHJvY2VzcygpCiB7Ci0jaWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VT
UykKLSAgICBpZiAodXNlc05ldHdvcmtQcm9jZXNzKCkpCi0gICAgICAgIGVuc3VyZU5ldHdvcmtQ
cm9jZXNzKCk7Ci0jZW5kaWYKKyAgICBlbnN1cmVOZXR3b3JrUHJvY2VzcygpOwogCiAgICAgUmVm
PFdlYlByb2Nlc3NQcm94eT4gcHJvY2VzcyA9IFdlYlByb2Nlc3NQcm94eTo6Y3JlYXRlKCp0aGlz
KTsKIApAQCAtNjQ2LDcgKzU3OCw3IEBAIFdlYlByb2Nlc3NQcm94eSYgV2ViUHJvY2Vzc1Bvb2w6
OmNyZWF0ZU4KICAgICAvLyBpY29uRGF0YWJhc2VQYXRoIGlzIG5vbi1lbXB0eSBieSBkZWZhdWx0
LCBidXQgbV9pY29uRGF0YWJhc2UgaXNuJ3QgZW5hYmxlZCBpbiBVSSBwcm9jZXNzIHVubGVzcyBz
ZXREYXRhYmFzZVBhdGggaXMgY2FsbGVkIGV4cGxpY2l0bHkuCiAgICAgcGFyYW1ldGVycy5pY29u
RGF0YWJhc2VFbmFibGVkID0gIWljb25EYXRhYmFzZVBhdGgoKS5pc0VtcHR5KCk7CiAKLSAgICBw
YXJhbWV0ZXJzLnRlcm1pbmF0aW9uVGltZW91dCA9IChwcm9jZXNzTW9kZWwoKSA9PSBQcm9jZXNz
TW9kZWxTaGFyZWRTZWNvbmRhcnlQcm9jZXNzKSA/IHNoYXJlZFNlY29uZGFyeVByb2Nlc3NTaHV0
ZG93blRpbWVvdXQgOiAwOworICAgIHBhcmFtZXRlcnMudGVybWluYXRpb25UaW1lb3V0ID0gMDsK
IAogICAgIHBhcmFtZXRlcnMudGV4dENoZWNrZXJTdGF0ZSA9IFRleHRDaGVja2VyOjpzdGF0ZSgp
OwogCkBAIC02NTksMTAgKzU5MSw2IEBAIFdlYlByb2Nlc3NQcm94eSYgV2ViUHJvY2Vzc1Bvb2w6
OmNyZWF0ZU4KICAgICBzdXBwbGVtZW50PFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eT4oKS0+
cG9wdWxhdGVDb3B5T2ZOb3RpZmljYXRpb25QZXJtaXNzaW9ucyhwYXJhbWV0ZXJzLm5vdGlmaWNh
dGlvblBlcm1pc3Npb25zKTsKICNlbmRpZgogCi0jaWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykK
LSAgICBwYXJhbWV0ZXJzLnVzZXNOZXR3b3JrUHJvY2VzcyA9IHVzZXNOZXR3b3JrUHJvY2Vzcygp
OwotI2VuZGlmCi0KICAgICBwYXJhbWV0ZXJzLnBsdWdJbkF1dG9TdGFydE9yaWdpbkhhc2hlcyA9
IG1fcGx1Z0luQXV0b1N0YXJ0UHJvdmlkZXIuYXV0b1N0YXJ0T3JpZ2luSGFzaGVzQ29weSgpOwog
ICAgIGNvcHlUb1ZlY3RvcihtX3BsdWdJbkF1dG9TdGFydFByb3ZpZGVyLmF1dG9TdGFydE9yaWdp
bnMoKSwgcGFyYW1ldGVycy5wbHVnSW5BdXRvU3RhcnRPcmlnaW5zKTsKIApAQCAtNzA2LDE1ICs2
MzQsNyBAQCBXZWJQcm9jZXNzUHJveHkmIFdlYlByb2Nlc3NQb29sOjpjcmVhdGVOCiAKICAgICBt
X3Byb2Nlc3Nlcy5hcHBlbmQocHJvY2Vzcy5wdHIoKSk7CiAKLSAgICBpZiAocHJvY2Vzc01vZGVs
KCkgPT0gUHJvY2Vzc01vZGVsU2hhcmVkU2Vjb25kYXJ5UHJvY2VzcykgewotICAgICAgICBmb3Ig
KHNpemVfdCBpID0gMDsgaSAhPSBtX21lc3NhZ2VzVG9JbmplY3RlZEJ1bmRsZVBvc3RlZFRvRW1w
dHlDb250ZXh0LnNpemUoKTsgKytpKSB7Ci0gICAgICAgICAgICBhdXRvJiBtZXNzYWdlTmFtZUFu
ZEJvZHkgPSBtX21lc3NhZ2VzVG9JbmplY3RlZEJ1bmRsZVBvc3RlZFRvRW1wdHlDb250ZXh0W2ld
OwotCi0gICAgICAgICAgICBwcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpIYW5k
bGVJbmplY3RlZEJ1bmRsZU1lc3NhZ2UobWVzc2FnZU5hbWVBbmRCb2R5LmZpcnN0LCBVc2VyRGF0
YShwcm9jZXNzLT50cmFuc2Zvcm1PYmplY3RzVG9IYW5kbGVzKG1lc3NhZ2VOYW1lQW5kQm9keS5z
ZWNvbmQuZ2V0KCkpLmdldCgpKSksIDApOwotICAgICAgICB9Ci0gICAgICAgIG1fbWVzc2FnZXNU
b0luamVjdGVkQnVuZGxlUG9zdGVkVG9FbXB0eUNvbnRleHQuY2xlYXIoKTsKLSAgICB9IGVsc2UK
LSAgICAgICAgQVNTRVJUKG1fbWVzc2FnZXNUb0luamVjdGVkQnVuZGxlUG9zdGVkVG9FbXB0eUNv
bnRleHQuaXNFbXB0eSgpKTsKKyAgICBBU1NFUlQobV9tZXNzYWdlc1RvSW5qZWN0ZWRCdW5kbGVQ
b3N0ZWRUb0VtcHR5Q29udGV4dC5pc0VtcHR5KCkpOwogCiAjaWYgRU5BQkxFKFJFTU9URV9JTlNQ
RUNUT1IpCiAgICAgLy8gSW5pdGlhbGl6ZSByZW1vdGUgaW5zcGVjdG9yIGNvbm5lY3Rpb24gbm93
IHRoYXQgd2UgaGF2ZSBhIHN1Yi1wcm9jZXNzIHRoYXQgaXMgaG9zdGluZyBvbmUgb2Ygb3VyIHdl
YiB2aWV3cy4KQEAgLTc5OCwyOCArNzE4LDEyIEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OmRpc2Nv
bm5lY3RQcm9jZXNzKFcKIAogICAgIC8vIEZJWE1FIChNdWx0aS1XZWJQcm9jZXNzKTogPHJkYXI6
Ly9wcm9ibGVtLzEyMjM5NzY1PiBTb21lIG9mIHRoZSBpbnZhbGlkYXRpb24gY2FsbHMgYmVsb3cg
YXJlIHN0aWxsIG5lY2Vzc2FyeSBpbiBtdWx0aS1wcm9jZXNzIG1vZGUsIGJ1dCB0aGV5IHNob3Vs
ZCBvbmx5IGFmZmVjdCBkYXRhIHN0cnVjdHVyZXMgcGVydGFpbmluZyB0byB0aGUgcHJvY2VzcyBi
ZWluZyBkaXNjb25uZWN0ZWQuCiAgICAgLy8gQ2xlYXJpbmcgZXZlcnl0aGluZyBjYXVzZXMgYXNz
ZXJ0aW9uIGZhaWx1cmVzLCBzbyBpdCdzIGxlc3MgdHJvdWJsZSB0byBza2lwIHRoYXQgZm9yIG5v
dy4KLSAgICBpZiAocHJvY2Vzc01vZGVsKCkgIT0gUHJvY2Vzc01vZGVsU2hhcmVkU2Vjb25kYXJ5
UHJvY2VzcykgewotICAgICAgICBSZWZQdHI8V2ViUHJvY2Vzc1Byb3h5PiBwcm90ZWN0KHByb2Nl
c3MpOwotICAgICAgICBpZiAobV9wcm9jZXNzV2l0aFBhZ2VDYWNoZSA9PSBwcm9jZXNzKQotICAg
ICAgICAgICAgbV9wcm9jZXNzV2l0aFBhZ2VDYWNoZSA9IDA7Ci0KLSAgICAgICAgc3RhdGljX2Nh
c3Q8V2ViQ29udGV4dFN1cHBsZW1lbnQqPihzdXBwbGVtZW50PFdlYkdlb2xvY2F0aW9uTWFuYWdl
clByb3h5PigpKS0+cHJvY2Vzc0RpZENsb3NlKHByb2Nlc3MpOwotCi0gICAgICAgIG1fcHJvY2Vz
c2VzLnJlbW92ZUZpcnN0KHByb2Nlc3MpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAg
V2ViQ29udGV4dFN1cHBsZW1lbnRNYXA6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbV9zdXBwbGVtZW50
cy5iZWdpbigpOwotICAgIFdlYkNvbnRleHRTdXBwbGVtZW50TWFwOjpjb25zdF9pdGVyYXRvciBl
bmQgPSBtX3N1cHBsZW1lbnRzLmVuZCgpOwotICAgIGZvciAoOyBpdCAhPSBlbmQ7ICsraXQpCi0g
ICAgICAgIGl0LT52YWx1ZS0+cHJvY2Vzc0RpZENsb3NlKHByb2Nlc3MpOwotCi0gICAgLy8gVGhl
IHZlY3RvciBtYXkgaGF2ZSB0aGUgbGFzdCByZWZlcmVuY2UgdG8gcHJvY2VzcyBwcm94eSwgd2hp
Y2ggaW4gdHVybiBtYXkgaGF2ZSB0aGUgbGFzdCByZWZlcmVuY2UgdG8gdGhlIGNvbnRleHQuCi0g
ICAgLy8gU2luY2UgdmVjdG9yIGVsZW1lbnRzIGFyZSBkZXN0cm95ZWQgaW4gcGxhY2UsIHdlIHdv
dWxkIHJlY3Vyc2UgaW50byBXZWJQcm9jZXNzUHJveHkgZGVzdHJ1Y3RvcgotICAgIC8vIGlmIGl0
IHdlcmUgaW52b2tlZCBmcm9tIFZlY3Rvcjo6cmVtb3ZlKCkuIFJlZlB0ciBkZWxheXMgZGVzdHJ1
Y3Rpb24gdW50aWwgaXQncyBzYWZlLgogICAgIFJlZlB0cjxXZWJQcm9jZXNzUHJveHk+IHByb3Rl
Y3QocHJvY2Vzcyk7CiAgICAgaWYgKG1fcHJvY2Vzc1dpdGhQYWdlQ2FjaGUgPT0gcHJvY2VzcykK
LSAgICAgICAgbV9wcm9jZXNzV2l0aFBhZ2VDYWNoZSA9IG51bGxwdHI7CisgICAgICAgIG1fcHJv
Y2Vzc1dpdGhQYWdlQ2FjaGUgPSAwOworCisgICAgc3RhdGljX2Nhc3Q8V2ViQ29udGV4dFN1cHBs
ZW1lbnQqPihzdXBwbGVtZW50PFdlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5PigpKS0+cHJvY2Vz
c0RpZENsb3NlKHByb2Nlc3MpOworCiAgICAgbV9wcm9jZXNzZXMucmVtb3ZlRmlyc3QocHJvY2Vz
cyk7CiB9CiAKQEAgLTg1MSwxOCArNzU1LDE0IEBAIFJlZjxXZWJQYWdlUHJveHk+IFdlYlByb2Nl
c3NQb29sOjpjcmVhdGUKICAgICB9CiAKICAgICBSZWZQdHI8V2ViUHJvY2Vzc1Byb3h5PiBwcm9j
ZXNzOwotICAgIGlmIChwcm9jZXNzTW9kZWwoKSA9PSBQcm9jZXNzTW9kZWxTaGFyZWRTZWNvbmRh
cnlQcm9jZXNzKSB7Ci0gICAgICAgIHByb2Nlc3MgPSAmZW5zdXJlU2hhcmVkV2ViUHJvY2Vzcygp
OwotICAgIH0gZWxzZSB7Ci0gICAgICAgIGlmIChtX2hhdmVJbml0aWFsRW1wdHlQcm9jZXNzKSB7
Ci0gICAgICAgICAgICBwcm9jZXNzID0gbV9wcm9jZXNzZXMubGFzdCgpOwotICAgICAgICAgICAg
bV9oYXZlSW5pdGlhbEVtcHR5UHJvY2VzcyA9IGZhbHNlOwotICAgICAgICB9IGVsc2UgaWYgKHBh
Z2VDb25maWd1cmF0aW9uLT5yZWxhdGVkUGFnZSgpKSB7Ci0gICAgICAgICAgICAvLyBTaGFyaW5n
IHByb2Nlc3NlcywgZS5nLiB3aGVuIGNyZWF0aW5nIHRoZSBwYWdlIHZpYSB3aW5kb3cub3Blbigp
LgotICAgICAgICAgICAgcHJvY2VzcyA9ICZwYWdlQ29uZmlndXJhdGlvbi0+cmVsYXRlZFBhZ2Uo
KS0+cHJvY2VzcygpOwotICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgIHByb2Nlc3MgPSAmY3Jl
YXRlTmV3V2ViUHJvY2Vzc1Jlc3BlY3RpbmdQcm9jZXNzQ291bnRMaW1pdCgpOwotICAgIH0KKyAg
ICBpZiAobV9oYXZlSW5pdGlhbEVtcHR5UHJvY2VzcykgeworICAgICAgICBwcm9jZXNzID0gbV9w
cm9jZXNzZXMubGFzdCgpOworICAgICAgICBtX2hhdmVJbml0aWFsRW1wdHlQcm9jZXNzID0gZmFs
c2U7CisgICAgfSBlbHNlIGlmIChwYWdlQ29uZmlndXJhdGlvbi0+cmVsYXRlZFBhZ2UoKSkgewor
ICAgICAgICAvLyBTaGFyaW5nIHByb2Nlc3NlcywgZS5nLiB3aGVuIGNyZWF0aW5nIHRoZSBwYWdl
IHZpYSB3aW5kb3cub3BlbigpLgorICAgICAgICBwcm9jZXNzID0gJnBhZ2VDb25maWd1cmF0aW9u
LT5yZWxhdGVkUGFnZSgpLT5wcm9jZXNzKCk7CisgICAgfSBlbHNlCisgICAgICAgIHByb2Nlc3Mg
PSAmY3JlYXRlTmV3V2ViUHJvY2Vzc1Jlc3BlY3RpbmdQcm9jZXNzQ291bnRMaW1pdCgpOwogCiAg
ICAgcmV0dXJuIHByb2Nlc3MtPmNyZWF0ZVdlYlBhZ2UocGFnZUNsaWVudCwgV1RGOjptb3ZlKHBh
Z2VDb25maWd1cmF0aW9uKSk7CiB9CkBAIC04NzAsMTggKzc3MCwxNiBAQCBSZWY8V2ViUGFnZVBy
b3h5PiBXZWJQcm9jZXNzUG9vbDo6Y3JlYXRlCiBEb3dubG9hZFByb3h5KiBXZWJQcm9jZXNzUG9v
bDo6ZG93bmxvYWQoV2ViUGFnZVByb3h5KiBpbml0aWF0aW5nUGFnZSwgY29uc3QgUmVzb3VyY2VS
ZXF1ZXN0JiByZXF1ZXN0KQogewogICAgIERvd25sb2FkUHJveHkqIGRvd25sb2FkUHJveHkgPSBj
cmVhdGVEb3dubG9hZFByb3h5KHJlcXVlc3QpOwotICAgIHVpbnQ2NF90IGluaXRpYXRpbmdQYWdl
SUQgPSBpbml0aWF0aW5nUGFnZSA/IGluaXRpYXRpbmdQYWdlLT5wYWdlSUQoKSA6IDA7CiAgICAg
U2Vzc2lvbklEIHNlc3Npb25JRCA9IGluaXRpYXRpbmdQYWdlID8gaW5pdGlhdGluZ1BhZ2UtPnNl
c3Npb25JRCgpIDogU2Vzc2lvbklEOjpkZWZhdWx0U2Vzc2lvbklEKCk7CiAKLSNpZiBFTkFCTEUo
TkVUV09SS19QUk9DRVNTKQotICAgIGlmICh1c2VzTmV0d29ya1Byb2Nlc3MoKSAmJiBuZXR3b3Jr
UHJvY2VzcygpKSB7CisgICAgaWYgKG5ldHdvcmtQcm9jZXNzKCkpIHsKICAgICAgICAgLy8gRklY
TUUgKE5ldHdvcmtQcm9jZXNzKTogUmVwbGljYXRlIHdoYXRldmVyIEZyYW1lTG9hZGVyOjpzZXRP
cmlnaW5hbFVSTEZvckRvd25sb2FkUmVxdWVzdCBkb2VzIHdpdGggdGhlIHJlcXVlc3QgaGVyZS4K
ICAgICAgICAgbmV0d29ya1Byb2Nlc3MoKS0+c2VuZChNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6
OkRvd25sb2FkUmVxdWVzdChzZXNzaW9uSUQsIGRvd25sb2FkUHJveHktPmRvd25sb2FkSUQoKSwg
cmVxdWVzdCksIDApOwogICAgICAgICByZXR1cm4gZG93bmxvYWRQcm94eTsKICAgICB9Ci0jZW5k
aWYKIAotICAgIG1fcHJvY2Vzc2VzWzBdLT5zZW5kKE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpEb3du
bG9hZFJlcXVlc3Qoc2Vzc2lvbklELCBkb3dubG9hZFByb3h5LT5kb3dubG9hZElEKCksIGluaXRp
YXRpbmdQYWdlSUQsIHJlcXVlc3QpLCAwKTsKKyAgICAvLyBGSVhNRTogbWFrZSBuZXR3b3JrUHJv
Y2VzcygpIHJldHVybiBhIHJlZmVyZW5jZSBzbyB0aGlzIGlzIG5vdCBuZWNlc3NhcnkuCisgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgcmV0dXJuIGRvd25sb2FkUHJveHk7CiB9CiAKQEAg
LTg5MywyNSArNzkxLDE4IEBAIERvd25sb2FkUHJveHkqIFdlYlByb2Nlc3NQb29sOjpyZXN1bWVE
b3cKICAgICBpZiAoIXBhdGguaXNFbXB0eSgpKQogICAgICAgICBTYW5kYm94RXh0ZW5zaW9uOjpj
cmVhdGVIYW5kbGUocGF0aCwgU2FuZGJveEV4dGVuc2lvbjo6UmVhZFdyaXRlLCBzYW5kYm94RXh0
ZW5zaW9uSGFuZGxlKTsKIAotI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCi0gICAgaWYgKHVz
ZXNOZXR3b3JrUHJvY2VzcygpICYmIG5ldHdvcmtQcm9jZXNzKCkpIHsKKyAgICBpZiAobmV0d29y
a1Byb2Nlc3MoKSkgewogICAgICAgICBuZXR3b3JrUHJvY2VzcygpLT5zZW5kKE1lc3NhZ2VzOjpO
ZXR3b3JrUHJvY2Vzczo6UmVzdW1lRG93bmxvYWQoZG93bmxvYWRQcm94eS0+ZG93bmxvYWRJRCgp
LCByZXN1bWVEYXRhLT5kYXRhUmVmZXJlbmNlKCksIHBhdGgsIHNhbmRib3hFeHRlbnNpb25IYW5k
bGUpLCAwKTsKICAgICAgICAgcmV0dXJuIGRvd25sb2FkUHJveHk7CiAgICAgfQotI2VuZGlmCiAK
LSAgICBtX3Byb2Nlc3Nlc1swXS0+c2VuZChNZXNzYWdlczo6V2ViUHJvY2Vzczo6UmVzdW1lRG93
bmxvYWQoZG93bmxvYWRQcm94eS0+ZG93bmxvYWRJRCgpLCByZXN1bWVEYXRhLT5kYXRhUmVmZXJl
bmNlKCksIHBhdGgsIHNhbmRib3hFeHRlbnNpb25IYW5kbGUpLCAwKTsKKyAgICAvLyBGSVhNRTog
bWFrZSBuZXR3b3JrUHJvY2VzcygpIHJldHVybiBhIHJlZmVyZW5jZSBzbyB0aGlzIGlzIG5vdCBu
ZWNlc3NhcnkuCisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgcmV0dXJuIGRvd25sb2Fk
UHJveHk7CiB9CiAKIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnBvc3RNZXNzYWdlVG9JbmplY3RlZEJ1
bmRsZShjb25zdCBTdHJpbmcmIG1lc3NhZ2VOYW1lLCBBUEk6Ok9iamVjdCogbWVzc2FnZUJvZHkp
CiB7Ci0gICAgaWYgKG1fcHJvY2Vzc2VzLmlzRW1wdHkoKSkgewotICAgICAgICBpZiAocHJvY2Vz
c01vZGVsKCkgPT0gUHJvY2Vzc01vZGVsU2hhcmVkU2Vjb25kYXJ5UHJvY2VzcykKLSAgICAgICAg
ICAgIG1fbWVzc2FnZXNUb0luamVjdGVkQnVuZGxlUG9zdGVkVG9FbXB0eUNvbnRleHQuYXBwZW5k
KHN0ZDo6bWFrZV9wYWlyKG1lc3NhZ2VOYW1lLCBtZXNzYWdlQm9keSkpOwotICAgICAgICByZXR1
cm47Ci0gICAgfQotCiAgICAgZm9yIChhdXRvJiBwcm9jZXNzIDogbV9wcm9jZXNzZXMpIHsKICAg
ICAgICAgLy8gRklYTUU6IFJldHVybiBlYXJseSBpZiB0aGUgbWVzc2FnZSBib2R5IGNvbnRhaW5z
IGFueSByZWZlcmVuY2VzIHRvIFdLUGFnZVJlZnMvV0tGcmFtZVJlZnMgZXRjLiBzaW5jZSB0aGV5
J3JlIGxvY2FsIHRvIGEgcHJvY2Vzcy4KICAgICAgICAgcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6
V2ViUHJvY2Vzczo6SGFuZGxlSW5qZWN0ZWRCdW5kbGVNZXNzYWdlKG1lc3NhZ2VOYW1lLCBVc2Vy
RGF0YShwcm9jZXNzLT50cmFuc2Zvcm1PYmplY3RzVG9IYW5kbGVzKG1lc3NhZ2VCb2R5KS5nZXQo
KSkpLCAwKTsKQEAgLTk0MCw3ICs4MzEsNiBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpzZXRBZGRp
dGlvbmFsUGx1Z2luCiB9CiAjZW5kaWYgLy8gRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpCiAK
LSNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQogUGxhdGZvcm1Qcm9jZXNzSWRlbnRpZmllciBX
ZWJQcm9jZXNzUG9vbDo6bmV0d29ya1Byb2Nlc3NJZGVudGlmaWVyKCkKIHsKICAgICBpZiAoIW1f
bmV0d29ya1Byb2Nlc3MpCkBAIC05NDgsNyArODM4LDYgQEAgUGxhdGZvcm1Qcm9jZXNzSWRlbnRp
ZmllciBXZWJQcm9jZXNzUG9vbAogCiAgICAgcmV0dXJuIG1fbmV0d29ya1Byb2Nlc3MtPnByb2Nl
c3NJZGVudGlmaWVyKCk7CiB9Ci0jZW5kaWYKIAogdm9pZCBXZWJQcm9jZXNzUG9vbDo6c2V0QWx3
YXlzVXNlc0NvbXBsZXhUZXh0Q29kZVBhdGgoYm9vbCBhbHdheXNVc2VDb21wbGV4VGV4dCkKIHsK
QEAgLTk4OCwxNSArODc3LDkgQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6c2V0RG9tYWluUmVsYXhh
dGlvbgogCiB2b2lkIFdlYlByb2Nlc3NQb29sOjpzZXRDYW5IYW5kbGVIVFRQU1NlcnZlclRydXN0
RXZhbHVhdGlvbihib29sIHZhbHVlKQogewotI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCiAg
ICAgbV9jYW5IYW5kbGVIVFRQU1NlcnZlclRydXN0RXZhbHVhdGlvbiA9IHZhbHVlOwotICAgIGlm
ICh1c2VzTmV0d29ya1Byb2Nlc3MoKSAmJiBtX25ldHdvcmtQcm9jZXNzKSB7CisgICAgaWYgKG1f
bmV0d29ya1Byb2Nlc3MpCiAgICAgICAgIG1fbmV0d29ya1Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6
Ok5ldHdvcmtQcm9jZXNzOjpTZXRDYW5IYW5kbGVIVFRQU1NlcnZlclRydXN0RXZhbHVhdGlvbih2
YWx1ZSksIDApOwotICAgICAgICByZXR1cm47Ci0gICAgfQotI2Vsc2UKLSAgICBVTlVTRURfUEFS
QU0odmFsdWUpOwotI2VuZGlmCiB9CiAKIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnJlZ2lzdGVyVVJM
U2NoZW1lQXNMb2NhbChjb25zdCBTdHJpbmcmIHVybFNjaGVtZSkKQEAgLTEwNjQsMTAgKzk0Nyw4
IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnNldENhY2hlTW9kZWwoQ2FjaGUKICAgICBtX2NvbmZp
Z3VyYXRpb24tPnNldENhY2hlTW9kZWwoY2FjaGVNb2RlbCk7CiAgICAgc2VuZFRvQWxsUHJvY2Vz
c2VzKE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpTZXRDYWNoZU1vZGVsKGNhY2hlTW9kZWwpKTsKIAot
I2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCi0gICAgaWYgKHVzZXNOZXR3b3JrUHJvY2Vzcygp
ICYmIG1fbmV0d29ya1Byb2Nlc3MpCisgICAgaWYgKG1fbmV0d29ya1Byb2Nlc3MpCiAgICAgICAg
IG1fbmV0d29ya1Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpTZXRDYWNo
ZU1vZGVsKGNhY2hlTW9kZWwpLCAwKTsKLSNlbmRpZgogfQogCiB2b2lkIFdlYlByb2Nlc3NQb29s
OjpzZXREZWZhdWx0UmVxdWVzdFRpbWVvdXRJbnRlcnZhbChkb3VibGUgdGltZW91dEludGVydmFs
KQpAQCAtMTA3NywxNSArOTU4LDkgQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6c2V0RGVmYXVsdFJl
cXVlc3RUaQogCiBEb3dubG9hZFByb3h5KiBXZWJQcm9jZXNzUG9vbDo6Y3JlYXRlRG93bmxvYWRQ
cm94eShjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCiB7Ci0jaWYgRU5BQkxFKE5FVFdP
UktfUFJPQ0VTUykKLSAgICBpZiAodXNlc05ldHdvcmtQcm9jZXNzKCkpIHsKLSAgICAgICAgZW5z
dXJlTmV0d29ya1Byb2Nlc3MoKTsKLSAgICAgICAgQVNTRVJUKG1fbmV0d29ya1Byb2Nlc3MpOwot
ICAgICAgICByZXR1cm4gbV9uZXR3b3JrUHJvY2Vzcy0+Y3JlYXRlRG93bmxvYWRQcm94eShyZXF1
ZXN0KTsKLSAgICB9Ci0jZW5kaWYKLQotICAgIHJldHVybiBlbnN1cmVTaGFyZWRXZWJQcm9jZXNz
KCkuY3JlYXRlRG93bmxvYWRQcm94eShyZXF1ZXN0KTsKKyAgICBlbnN1cmVOZXR3b3JrUHJvY2Vz
cygpOworICAgIEFTU0VSVChtX25ldHdvcmtQcm9jZXNzKTsKKyAgICByZXR1cm4gbV9uZXR3b3Jr
UHJvY2Vzcy0+Y3JlYXRlRG93bmxvYWRQcm94eShyZXF1ZXN0KTsKIH0KIAogdm9pZCBXZWJQcm9j
ZXNzUG9vbDo6YWRkTWVzc2FnZVJlY2VpdmVyKElQQzo6U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VS
ZWNlaXZlck5hbWUsIElQQzo6TWVzc2FnZVJlY2VpdmVyJiBtZXNzYWdlUmVjZWl2ZXIpCkBAIC0x
MTgyLDEyICsxMDU3LDEwIEBAIFN0cmluZyBXZWJQcm9jZXNzUG9vbDo6Y29va2llU3RvcmFnZURp
cmUKIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnVzZVRlc3RpbmdOZXR3b3JrU2Vzc2lvbigpCiB7CiAg
ICAgQVNTRVJUKG1fcHJvY2Vzc2VzLmlzRW1wdHkoKSk7Ci0jaWYgRU5BQkxFKE5FVFdPUktfUFJP
Q0VTUykKICAgICBBU1NFUlQoIW1fbmV0d29ya1Byb2Nlc3MpOwogCiAgICAgaWYgKG1fbmV0d29y
a1Byb2Nlc3MpCiAgICAgICAgIHJldHVybjsKLSNlbmRpZgogCiAgICAgaWYgKCFtX3Byb2Nlc3Nl
cy5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKQEAgLTExOTcsMjIgKzEwNzAsMTggQEAgdm9p
ZCBXZWJQcm9jZXNzUG9vbDo6dXNlVGVzdGluZ05ldHdvcmtTZQogCiB2b2lkIFdlYlByb2Nlc3NQ
b29sOjphbGxvd1NwZWNpZmljSFRUUFNDZXJ0aWZpY2F0ZUZvckhvc3QoY29uc3QgV2ViQ2VydGlm
aWNhdGVJbmZvKiBjZXJ0aWZpY2F0ZSwgY29uc3QgU3RyaW5nJiBob3N0KQogewotI2lmIEVOQUJM
RShORVRXT1JLX1BST0NFU1MpCi0gICAgaWYgKHVzZXNOZXR3b3JrUHJvY2VzcygpICYmIG1fbmV0
d29ya1Byb2Nlc3MpIHsKKyAgICBpZiAobV9uZXR3b3JrUHJvY2VzcykgewogICAgICAgICBtX25l
dHdvcmtQcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6QWxsb3dTcGVjaWZp
Y0hUVFBTQ2VydGlmaWNhdGVGb3JIb3N0KGNlcnRpZmljYXRlLT5jZXJ0aWZpY2F0ZUluZm8oKSwg
aG9zdCksIDApOwogICAgICAgICByZXR1cm47CiAgICAgfQotI2VuZGlmCiAKICNpZiBVU0UoU09V
UCkKICAgICBtX3Byb2Nlc3Nlc1swXS0+c2VuZChNZXNzYWdlczo6V2ViUHJvY2Vzczo6QWxsb3dT
cGVjaWZpY0hUVFBTQ2VydGlmaWNhdGVGb3JIb3N0KGNlcnRpZmljYXRlLT5jZXJ0aWZpY2F0ZUlu
Zm8oKSwgaG9zdCksIDApOwogICAgIHJldHVybjsKLSNlbHNlCi0gICAgVU5VU0VEX1BBUkFNKGNl
cnRpZmljYXRlKTsKLSAgICBVTlVTRURfUEFSQU0oaG9zdCk7CiAjZW5kaWYKIAogI2lmICFQTEFU
Rk9STShJT1MpCisgICAgLy8gRklYTUU6IFdoeSBpcyB0aGlzIG9ubHkgb24gaU9TPyBDYW4gd2Ug
cmVtb3ZlIGl0PwogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogI2VuZGlmCiB9CkBAIC0xMjUz
LDQwICsxMTIyLDE5IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OmdldFN0YXRpc3RpY3ModWludDMK
IAogdm9pZCBXZWJQcm9jZXNzUG9vbDo6cmVxdWVzdFdlYkNvbnRlbnRTdGF0aXN0aWNzKFN0YXRp
c3RpY3NSZXF1ZXN0KiByZXF1ZXN0KQogewotICAgIGlmIChwcm9jZXNzTW9kZWwoKSA9PSBQcm9j
ZXNzTW9kZWxTaGFyZWRTZWNvbmRhcnlQcm9jZXNzKSB7Ci0gICAgICAgIGlmIChtX3Byb2Nlc3Nl
cy5pc0VtcHR5KCkpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIAotICAgICAgICB1aW50
NjRfdCByZXF1ZXN0SUQgPSByZXF1ZXN0LT5hZGRPdXRzdGFuZGluZ1JlcXVlc3QoKTsKLSAgICAg
ICAgbV9zdGF0aXN0aWNzUmVxdWVzdHMuc2V0KHJlcXVlc3RJRCwgcmVxdWVzdCk7Ci0gICAgICAg
IG1fcHJvY2Vzc2VzWzBdLT5zZW5kKE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpHZXRXZWJDb3JlU3Rh
dGlzdGljcyhyZXF1ZXN0SUQpLCAwKTsKLQotICAgIH0gZWxzZSB7Ci0gICAgICAgIC8vIEZJWE1F
IChNdWx0aS1XZWJQcm9jZXNzKSA8cmRhcjovL3Byb2JsZW0vMTMyMDAwNTk+OiBNYWtlIGdldHRp
bmcgc3RhdGlzdGljcyBmcm9tIG11bHRpcGxlIFdlYlByb2Nlc3NlcyB3b3JrLgotICAgIH0KKyAg
ICAvLyBGSVhNRSAoTXVsdGktV2ViUHJvY2VzcykgPHJkYXI6Ly9wcm9ibGVtLzEzMjAwMDU5Pjog
TWFrZSBnZXR0aW5nIHN0YXRpc3RpY3MgZnJvbSBtdWx0aXBsZSBXZWJQcm9jZXNzZXMgd29yay4K
IH0KIAogdm9pZCBXZWJQcm9jZXNzUG9vbDo6cmVxdWVzdE5ldHdvcmtpbmdTdGF0aXN0aWNzKFN0
YXRpc3RpY3NSZXF1ZXN0KiByZXF1ZXN0KQogewotICAgIGJvb2wgbmV0d29ya1Byb2Nlc3NVbmF2
YWlsYWJsZTsKLSNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQotICAgIG5ldHdvcmtQcm9jZXNz
VW5hdmFpbGFibGUgPSAhdXNlc05ldHdvcmtQcm9jZXNzKCkgfHwgIW1fbmV0d29ya1Byb2Nlc3M7
Ci0jZWxzZQotICAgIG5ldHdvcmtQcm9jZXNzVW5hdmFpbGFibGUgPSB0cnVlOwotI2VuZGlmCi0K
LSAgICBpZiAobmV0d29ya1Byb2Nlc3NVbmF2YWlsYWJsZSkgeworICAgIGlmICghbV9uZXR3b3Jr
UHJvY2VzcykgewogICAgICAgICBMT0dfRVJST1IoIkF0dGVtcHQgdG8gZ2V0IE5ldHdvcmtQcm9j
ZXNzIHN0YXRpc3RpY3MgYnV0IHRoZSBOZXR3b3JrUHJvY2VzcyBpcyB1bmF2YWlsYWJsZSIpOwog
ICAgICAgICByZXR1cm47CiAgICAgfQogCi0jaWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKICAg
ICB1aW50NjRfdCByZXF1ZXN0SUQgPSByZXF1ZXN0LT5hZGRPdXRzdGFuZGluZ1JlcXVlc3QoKTsK
ICAgICBtX3N0YXRpc3RpY3NSZXF1ZXN0cy5zZXQocmVxdWVzdElELCByZXF1ZXN0KTsKICAgICBt
X25ldHdvcmtQcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6R2V0TmV0d29y
a1Byb2Nlc3NTdGF0aXN0aWNzKHJlcXVlc3RJRCksIDApOwotI2Vsc2UKLSAgICBVTlVTRURfUEFS
QU0ocmVxdWVzdCk7Ci0jZW5kaWYKIH0KIAogdm9pZCBXZWJQcm9jZXNzUG9vbDo6aGFuZGxlTWVz
c2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIGNvbnN0IFN0cmluZyYgbWVzc2FnZU5h
bWUsIGNvbnN0IFdlYktpdDo6VXNlckRhdGEmIG1lc3NhZ2VCb2R5KQpJbmRleDogU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgJKHJldmlzaW9uIDE5MjYwMSkKKysrIFNv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCSh3b3JraW5nIGNvcHkpCkBA
IC0zNCw5ICszNCw5IEBACiAjaW5jbHVkZSAiR2VuZXJpY0NhbGxiYWNrLmgiCiAjaW5jbHVkZSAi
TWVzc2FnZVJlY2VpdmVyLmgiCiAjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyTWFwLmgiCisjaW5j
bHVkZSAiTmV0d29ya1Byb2Nlc3NQcm94eS5oIgogI2luY2x1ZGUgIlBsdWdJbkF1dG9TdGFydFBy
b3ZpZGVyLmgiCiAjaW5jbHVkZSAiUGx1Z2luSW5mb1N0b3JlLmgiCi0jaW5jbHVkZSAiUHJvY2Vz
c01vZGVsLmgiCiAjaW5jbHVkZSAiUHJvY2Vzc1Rocm90dGxlci5oIgogI2luY2x1ZGUgIlN0YXRp
c3RpY3NSZXF1ZXN0LmgiCiAjaW5jbHVkZSAiVmlzaXRlZExpbmtTdG9yZS5oIgpAQCAtNTksMTAg
KzU5LDYgQEAKICNpbmNsdWRlICJEYXRhYmFzZVByb2Nlc3NQcm94eS5oIgogI2VuZGlmCiAKLSNp
ZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQotI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzUHJveHku
aCIKLSNlbmRpZgotCiAjaWYgRU5BQkxFKE1FRElBX1NFU1NJT04pCiAjaW5jbHVkZSAiV2ViTWVk
aWFTZXNzaW9uRm9jdXNNYW5hZ2VyLmgiCiAjZW5kaWYKQEAgLTg2LDE0ICs4MiwxMiBAQCBjbGFz
cyBXZWJDb250ZXh0U3VwcGxlbWVudDsKIGNsYXNzIFdlYkljb25EYXRhYmFzZTsKIGNsYXNzIFdl
YlBhZ2VHcm91cDsKIGNsYXNzIFdlYlBhZ2VQcm94eTsKK3N0cnVjdCBOZXR3b3JrUHJvY2Vzc0Ny
ZWF0aW9uUGFyYW1ldGVyczsKIHN0cnVjdCBTdGF0aXN0aWNzRGF0YTsKIHN0cnVjdCBXZWJQcm9j
ZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOwogICAgIAogdHlwZWRlZiBHZW5lcmljQ2FsbGJhY2s8QVBJ
OjpEaWN0aW9uYXJ5Kj4gRGljdGlvbmFyeUNhbGxiYWNrOwogCi0jaWYgRU5BQkxFKE5FVFdPUktf
UFJPQ0VTUykKLXN0cnVjdCBOZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyczsKLSNlbmRp
ZgogCiAjaWYgUExBVEZPUk0oQ09DT0EpCiBpbnQgbmV0d29ya1Byb2Nlc3NMYXRlbmN5UU9TKCk7
CkBAIC0xNDIsOSArMTM2LDYgQEAgcHVibGljOgogICAgIHZvaWQgc2V0SGlzdG9yeUNsaWVudChz
dGQ6OnVuaXF1ZV9wdHI8QVBJOjpMZWdhY3lDb250ZXh0SGlzdG9yeUNsaWVudD4pOwogICAgIHZv
aWQgc2V0RG93bmxvYWRDbGllbnQoc3RkOjp1bmlxdWVfcHRyPEFQSTo6RG93bmxvYWRDbGllbnQ+
KTsKIAotICAgIHZvaWQgc2V0UHJvY2Vzc01vZGVsKFByb2Nlc3NNb2RlbCk7IC8vIENhbiBvbmx5
IGJlIGNhbGxlZCB3aGVuIHRoZXJlIGFyZSBubyBwcm9jZXNzZXMgcnVubmluZy4KLSAgICBQcm9j
ZXNzTW9kZWwgcHJvY2Vzc01vZGVsKCkgY29uc3QgeyByZXR1cm4gbV9jb25maWd1cmF0aW9uLT5w
cm9jZXNzTW9kZWwoKTsgfQotCiAgICAgdm9pZCBzZXRNYXhpbXVtTnVtYmVyT2ZQcm9jZXNzZXMo
dW5zaWduZWQpOyAvLyBDYW4gb25seSBiZSBjYWxsZWQgd2hlbiB0aGVyZSBhcmUgbm8gcHJvY2Vz
c2VzIHJ1bm5pbmcuCiAgICAgdW5zaWduZWQgbWF4aW11bU51bWJlck9mUHJvY2Vzc2VzKCkgY29u
c3QgeyByZXR1cm4gIW1fY29uZmlndXJhdGlvbi0+bWF4aW11bVByb2Nlc3NDb3VudCgpID8gVUlO
VF9NQVggOiBtX2NvbmZpZ3VyYXRpb24tPm1heGltdW1Qcm9jZXNzQ291bnQoKTsgfQogCkBAIC0x
OTMsOSArMTg0LDcgQEAgcHVibGljOgogICAgIHZvaWQgY2xlYXJQbHVnaW5DbGllbnRQb2xpY2ll
cygpOwogI2VuZGlmCiAKLSNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQogICAgIFBsYXRmb3Jt
UHJvY2Vzc0lkZW50aWZpZXIgbmV0d29ya1Byb2Nlc3NJZGVudGlmaWVyKCk7Ci0jZW5kaWYKIAog
ICAgIHZvaWQgc2V0QWx3YXlzVXNlc0NvbXBsZXhUZXh0Q29kZVBhdGgoYm9vbCk7CiAgICAgdm9p
ZCBzZXRTaG91bGRVc2VGb250U21vb3RoaW5nKGJvb2wpOwpAQCAtMjg2LDE2ICsyNzUsMTEgQEAg
cHVibGljOgogCiAgICAgLy8gTmV0d29yayBQcm9jZXNzIE1hbmFnZW1lbnQKIAotICAgIHZvaWQg
c2V0VXNlc05ldHdvcmtQcm9jZXNzKGJvb2wpOwotICAgIGJvb2wgdXNlc05ldHdvcmtQcm9jZXNz
KCkgY29uc3Q7Ci0KLSNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQogICAgIE5ldHdvcmtQcm9j
ZXNzUHJveHkmIGVuc3VyZU5ldHdvcmtQcm9jZXNzKCk7CiAgICAgTmV0d29ya1Byb2Nlc3NQcm94
eSogbmV0d29ya1Byb2Nlc3MoKSB7IHJldHVybiBtX25ldHdvcmtQcm9jZXNzLmdldCgpOyB9CiAg
ICAgdm9pZCBuZXR3b3JrUHJvY2Vzc0NyYXNoZWQoTmV0d29ya1Byb2Nlc3NQcm94eSopOwogCiAg
ICAgdm9pZCBnZXROZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oUGFzc1JlZlB0cjxNZXNzYWdlczo6
V2ViUHJvY2Vzc1Byb3h5OjpHZXROZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb246OkRlbGF5ZWRSZXBs
eT4pOwotI2VuZGlmCiAKICNpZiBFTkFCTEUoREFUQUJBU0VfUFJPQ0VTUykKICAgICB2b2lkIGVu
c3VyZURhdGFiYXNlUHJvY2VzcygpOwpAQCAtMzc4LDkgKzM2Miw3IEBAIHByaXZhdGU6CiAgICAg
dm9pZCByZXF1ZXN0V2ViQ29udGVudFN0YXRpc3RpY3MoU3RhdGlzdGljc1JlcXVlc3QqKTsKICAg
ICB2b2lkIHJlcXVlc3ROZXR3b3JraW5nU3RhdGlzdGljcyhTdGF0aXN0aWNzUmVxdWVzdCopOwog
Ci0jaWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKICAgICB2b2lkIHBsYXRmb3JtSW5pdGlhbGl6
ZU5ldHdvcmtQcm9jZXNzKE5ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzJik7Ci0jZW5k
aWYKIAogICAgIHZvaWQgaGFuZGxlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBjb25zdCBTdHJp
bmcmIG1lc3NhZ2VOYW1lLCBjb25zdCBVc2VyRGF0YSYgbWVzc2FnZUJvZHkpOwogICAgIHZvaWQg
aGFuZGxlU3luY2hyb25vdXNNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIGNvbnN0IFN0cmluZyYg
bWVzc2FnZU5hbWUsIGNvbnN0IFVzZXJEYXRhJiBtZXNzYWdlQm9keSwgVXNlckRhdGEmIHJldHVy
blVzZXJEYXRhKTsKQEAgLTUwMCwxMSArNDgyLDkgQEAgcHJpdmF0ZToKIAogICAgIGJvb2wgbV9w
cm9jZXNzVGVybWluYXRpb25FbmFibGVkOwogCi0jaWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykK
ICAgICBib29sIG1fY2FuSGFuZGxlSFRUUFNTZXJ2ZXJUcnVzdEV2YWx1YXRpb247CiAgICAgYm9v
bCBtX2RpZE5ldHdvcmtQcm9jZXNzQ3Jhc2g7CiAgICAgUmVmUHRyPE5ldHdvcmtQcm9jZXNzUHJv
eHk+IG1fbmV0d29ya1Byb2Nlc3M7Ci0jZW5kaWYKIAogI2lmIEVOQUJMRShEQVRBQkFTRV9QUk9D
RVNTKQogICAgIFJlZlB0cjxEYXRhYmFzZVByb2Nlc3NQcm94eT4gbV9kYXRhYmFzZVByb2Nlc3M7
CkBAIC01MzksNTUgKzUxOSwxNSBAQCBwcml2YXRlOgogdGVtcGxhdGU8dHlwZW5hbWUgVD4KIHZv
aWQgV2ViUHJvY2Vzc1Bvb2w6OnNlbmRUb05ldHdvcmtpbmdQcm9jZXNzKFQmJiBtZXNzYWdlKQog
ewotICAgIHN3aXRjaCAocHJvY2Vzc01vZGVsKCkpIHsKLSAgICBjYXNlIFByb2Nlc3NNb2RlbFNo
YXJlZFNlY29uZGFyeVByb2Nlc3M6Ci0jaWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKLSAgICAg
ICAgaWYgKHVzZXNOZXR3b3JrUHJvY2VzcygpKSB7Ci0gICAgICAgICAgICBpZiAobV9uZXR3b3Jr
UHJvY2VzcyAmJiBtX25ldHdvcmtQcm9jZXNzLT5jYW5TZW5kTWVzc2FnZSgpKQotICAgICAgICAg
ICAgICAgIG1fbmV0d29ya1Byb2Nlc3MtPnNlbmQoc3RkOjpmb3J3YXJkPFQ+KG1lc3NhZ2UpLCAw
KTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotI2VuZGlmCi0gICAgICAgIGlmICgh
bV9wcm9jZXNzZXMuaXNFbXB0eSgpICYmIG1fcHJvY2Vzc2VzWzBdLT5jYW5TZW5kTWVzc2FnZSgp
KQotICAgICAgICAgICAgbV9wcm9jZXNzZXNbMF0tPnNlbmQoc3RkOjpmb3J3YXJkPFQ+KG1lc3Nh
Z2UpLCAwKTsKLSAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgUHJvY2Vzc01vZGVsTXVsdGlwbGVT
ZWNvbmRhcnlQcm9jZXNzZXM6Ci0jaWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKLSAgICAgICAg
aWYgKG1fbmV0d29ya1Byb2Nlc3MgJiYgbV9uZXR3b3JrUHJvY2Vzcy0+Y2FuU2VuZE1lc3NhZ2Uo
KSkKLSAgICAgICAgICAgIG1fbmV0d29ya1Byb2Nlc3MtPnNlbmQoc3RkOjpmb3J3YXJkPFQ+KG1l
c3NhZ2UpLCAwKTsKLSAgICAgICAgcmV0dXJuOwotI2Vsc2UKLSAgICAgICAgYnJlYWs7Ci0jZW5k
aWYKLSAgICB9Ci0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgaWYgKG1fbmV0d29ya1By
b2Nlc3MgJiYgbV9uZXR3b3JrUHJvY2Vzcy0+Y2FuU2VuZE1lc3NhZ2UoKSkKKyAgICAgICAgbV9u
ZXR3b3JrUHJvY2Vzcy0+c2VuZChzdGQ6OmZvcndhcmQ8VD4obWVzc2FnZSksIDApOwogfQogCiB0
ZW1wbGF0ZTx0eXBlbmFtZSBUPgogdm9pZCBXZWJQcm9jZXNzUG9vbDo6c2VuZFRvTmV0d29ya2lu
Z1Byb2Nlc3NSZWxhdW5jaGluZ0lmTmVjZXNzYXJ5KFQmJiBtZXNzYWdlKQogewotICAgIHN3aXRj
aCAocHJvY2Vzc01vZGVsKCkpIHsKLSAgICBjYXNlIFByb2Nlc3NNb2RlbFNoYXJlZFNlY29uZGFy
eVByb2Nlc3M6Ci0jaWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKLSAgICAgICAgaWYgKHVzZXNO
ZXR3b3JrUHJvY2VzcygpKSB7Ci0gICAgICAgICAgICBlbnN1cmVOZXR3b3JrUHJvY2VzcygpOwot
ICAgICAgICAgICAgbV9uZXR3b3JrUHJvY2Vzcy0+c2VuZChzdGQ6OmZvcndhcmQ8VD4obWVzc2Fn
ZSksIDApOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0jZW5kaWYKLSAgICAgICAg
ZW5zdXJlU2hhcmVkV2ViUHJvY2VzcygpOwotICAgICAgICBtX3Byb2Nlc3Nlc1swXS0+c2VuZChz
dGQ6OmZvcndhcmQ8VD4obWVzc2FnZSksIDApOwotICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBQ
cm9jZXNzTW9kZWxNdWx0aXBsZVNlY29uZGFyeVByb2Nlc3NlczoKLSNpZiBFTkFCTEUoTkVUV09S
S19QUk9DRVNTKQotICAgICAgICBlbnN1cmVOZXR3b3JrUHJvY2VzcygpOwotICAgICAgICBtX25l
dHdvcmtQcm9jZXNzLT5zZW5kKHN0ZDo6Zm9yd2FyZDxUPihtZXNzYWdlKSwgMCk7Ci0gICAgICAg
IHJldHVybjsKLSNlbHNlCi0gICAgICAgIGJyZWFrOwotI2VuZGlmCi0gICAgfQotICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOworICAgIGVuc3VyZU5ldHdvcmtQcm9jZXNzKCk7CisgICAgbV9uZXR3
b3JrUHJvY2Vzcy0+c2VuZChzdGQ6OmZvcndhcmQ8VD4obWVzc2FnZSksIDApOwogfQogCiB0ZW1w
bGF0ZTx0eXBlbmFtZSBUPgpAQCAtNjE2LDE3ICs1NTYsMTIgQEAgdGVtcGxhdGU8dHlwZW5hbWUg
VD4KIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnNlbmRUb0FsbFByb2Nlc3Nlc1JlbGF1bmNoaW5nVGhl
bUlmTmVjZXNzYXJ5KGNvbnN0IFQmIG1lc3NhZ2UpCiB7CiAgICAgLy8gRklYTUUgKE11bHRpLVdl
YlByb2Nlc3MpOiBXZWJQcm9jZXNzUG9vbCBkb2Vzbid0IHRyYWNrIHByb2Nlc3NlcyB0aGF0IGhh
dmUgZXhpdGVkLCBzbyBpdCBjYW5ub3QgcmVsYXVuY2ggdGhlc2UuIFBlcmhhcHMgdGhpcyBmdW5j
dGlvbmFsaXR5IHdvbid0IGJlIG5lZWRlZCBpbiB0aGlzIG1vZGUuCi0gICAgaWYgKHByb2Nlc3NN
b2RlbCgpID09IFByb2Nlc3NNb2RlbFNoYXJlZFNlY29uZGFyeVByb2Nlc3MpCi0gICAgICAgIGVu
c3VyZVNoYXJlZFdlYlByb2Nlc3MoKTsKICAgICBzZW5kVG9BbGxQcm9jZXNzZXMobWVzc2FnZSk7
CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CiB2b2lkIFdlYlByb2Nlc3NQb29sOjpzZW5kVG9P
bmVQcm9jZXNzKFQmJiBtZXNzYWdlKQogewotICAgIGlmIChwcm9jZXNzTW9kZWwoKSA9PSBQcm9j
ZXNzTW9kZWxTaGFyZWRTZWNvbmRhcnlQcm9jZXNzKQotICAgICAgICBlbnN1cmVTaGFyZWRXZWJQ
cm9jZXNzKCk7Ci0KICAgICBib29sIG1lc3NhZ2VTZW50ID0gZmFsc2U7CiAgICAgc2l6ZV90IHBy
b2Nlc3NDb3VudCA9IG1fcHJvY2Vzc2VzLnNpemUoKTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsg
aSA8IHByb2Nlc3NDb3VudDsgKytpKSB7CkBAIC02MzgsNyArNTczLDcgQEAgdm9pZCBXZWJQcm9j
ZXNzUG9vbDo6c2VuZFRvT25lUHJvY2VzcyhUJgogICAgICAgICB9CiAgICAgfQogCi0gICAgaWYg
KCFtZXNzYWdlU2VudCAmJiBwcm9jZXNzTW9kZWwoKSA9PSBQcm9jZXNzTW9kZWxNdWx0aXBsZVNl
Y29uZGFyeVByb2Nlc3NlcykgeworICAgIGlmICghbWVzc2FnZVNlbnQpIHsKICAgICAgICAgd2Fy
bUluaXRpYWxQcm9jZXNzKCk7CiAgICAgICAgIFJlZlB0cjxXZWJQcm9jZXNzUHJveHk+IHByb2Nl
c3MgPSBtX3Byb2Nlc3Nlcy5sYXN0KCk7CiAgICAgICAgIGlmIChwcm9jZXNzLT5jYW5TZW5kTWVz
c2FnZSgpKQpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94
eS5jcHAJKHJldmlzaW9uIDE5MjYwMSkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQ
cm9jZXNzUHJveHkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNTYsNyArMjU2LDcgQEAgdm9pZCBX
ZWJQcm9jZXNzUHJveHk6OnJlbW92ZVdlYlBhZ2UodWludAogCiAgICAgLy8gSWYgdGhpcyB3YXMg
dGhlIGxhc3QgV2ViUGFnZSBvcGVuIGluIHRoYXQgd2ViIHByb2Nlc3MsIGFuZCB3ZSBoYXZlIG5v
IG90aGVyIHJlYXNvbiB0byBrZWVwIGl0IGFsaXZlLCBsZXQgaXQgZ28uCiAgICAgLy8gV2Ugb25s
eSBhbGxvdyB0aGlzIHdoZW4gdXNpbmcgYSBuZXR3b3JrIHByb2Nlc3MsIGFzIG90aGVyd2lzZSB0
aGUgV2ViUHJvY2VzcyBuZWVkcyB0byBwcmVzZXJ2ZSBpdHMgc2Vzc2lvbiBzdGF0ZS4KLSAgICBp
ZiAoIW1fcHJvY2Vzc1Bvb2wtPnVzZXNOZXR3b3JrUHJvY2VzcygpIHx8IHN0YXRlKCkgPT0gU3Rh
dGU6OlRlcm1pbmF0ZWQgfHwgIWNhblRlcm1pbmF0ZUNoaWxkUHJvY2VzcygpKQorICAgIGlmIChz
dGF0ZSgpID09IFN0YXRlOjpUZXJtaW5hdGVkIHx8ICFjYW5UZXJtaW5hdGVDaGlsZFByb2Nlc3Mo
KSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgc2h1dERvd24oKTsKQEAgLTQyNywxMiArNDI3LDEw
IEBAIHZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpnZXRQbHVnaW5Qcm9jZXNzQ28KIH0KICNlbmRpZgog
Ci0jaWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKIHZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpnZXRO
ZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oUGFzc1JlZlB0cjxNZXNzYWdlczo6V2ViUHJvY2Vzc1By
b3h5OjpHZXROZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb246OkRlbGF5ZWRSZXBseT4gcmVwbHkpCiB7
CiAgICAgbV9wcm9jZXNzUG9vbC0+Z2V0TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKHJlcGx5KTsK
IH0KLSNlbmRpZiAvLyBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQogCiAjaWYgRU5BQkxFKERBVEFC
QVNFX1BST0NFU1MpCiB2b2lkIFdlYlByb2Nlc3NQcm94eTo6Z2V0RGF0YWJhc2VQcm9jZXNzQ29u
bmVjdGlvbihQYXNzUmVmUHRyPE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6OkdldERhdGFiYXNl
UHJvY2Vzc0Nvbm5lY3Rpb246OkRlbGF5ZWRSZXBseT4gcmVwbHkpCkBAIC03MDIsMTggKzcwMCw2
IEBAIHZvaWQgV2ViUHJvY2Vzc1Byb3h5Ojp1cGRhdGVUZXh0Q2hlY2tlclMKICAgICAgICAgc2Vu
ZChNZXNzYWdlczo6V2ViUHJvY2Vzczo6U2V0VGV4dENoZWNrZXJTdGF0ZShUZXh0Q2hlY2tlcjo6
c3RhdGUoKSksIDApOwogfQogCi1Eb3dubG9hZFByb3h5KiBXZWJQcm9jZXNzUHJveHk6OmNyZWF0
ZURvd25sb2FkUHJveHkoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQotewotI2lmIEVO
QUJMRShORVRXT1JLX1BST0NFU1MpCi0gICAgQVNTRVJUKCFtX3Byb2Nlc3NQb29sLT51c2VzTmV0
d29ya1Byb2Nlc3MoKSk7Ci0jZW5kaWYKLQotICAgIGlmICghbV9kb3dubG9hZFByb3h5TWFwKQot
ICAgICAgICBtX2Rvd25sb2FkUHJveHlNYXAgPSBzdGQ6Om1ha2VfdW5pcXVlPERvd25sb2FkUHJv
eHlNYXA+KHRoaXMpOwotCi0gICAgcmV0dXJuIG1fZG93bmxvYWRQcm94eU1hcC0+Y3JlYXRlRG93
bmxvYWRQcm94eShtX3Byb2Nlc3NQb29sLCByZXF1ZXN0KTsKLX0KLQogdm9pZCBXZWJQcm9jZXNz
UHJveHk6OmRpZFNhdmVUb1BhZ2VDYWNoZSgpCiB7CiAgICAgbV9wcm9jZXNzUG9vbC0+cHJvY2Vz
c0RpZENhY2hlUGFnZSh0aGlzKTsKQEAgLTk0Nyw3ICs5MzMsNiBAQCB2b2lkIFdlYlByb2Nlc3NQ
cm94eTo6ZGlkQ2FuY2VsUHJvY2Vzc1N1CiAgICAgbV90aHJvdHRsZXIuZGlkQ2FuY2VsUHJvY2Vz
c1N1c3BlbnNpb24oKTsKIH0KIAotI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCiB2b2lkIFdl
YlByb2Nlc3NQcm94eTo6cmVpbnN0YXRlTmV0d29ya1Byb2Nlc3NBc3NlcnRpb25TdGF0ZShOZXR3
b3JrUHJvY2Vzc1Byb3h5JiBuZXdOZXR3b3JrUHJvY2Vzc1Byb3h5KQogewogI2lmIFBMQVRGT1JN
KElPUykKQEAgLTk2MiwxMSArOTQ3LDEwIEBAIHZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpyZWluc3Rh
dGVOZXR3b3JrUHIKICAgICBVTlVTRURfUEFSQU0obmV3TmV0d29ya1Byb2Nlc3NQcm94eSk7CiAj
ZW5kaWYKIH0KLSNlbmRpZgogCiB2b2lkIFdlYlByb2Nlc3NQcm94eTo6ZGlkU2V0QXNzZXJ0aW9u
U3RhdGUoQXNzZXJ0aW9uU3RhdGUgc3RhdGUpCiB7Ci0jaWYgUExBVEZPUk0oSU9TKSAmJiBFTkFC
TEUoTkVUV09SS19QUk9DRVNTKQorI2lmIFBMQVRGT1JNKElPUykKICAgICBBU1NFUlQoIW1fYmFj
a2dyb3VuZFRva2VuRm9yTmV0d29ya1Byb2Nlc3MgfHwgIW1fZm9yZWdyb3VuZFRva2VuRm9yTmV0
d29ya1Byb2Nlc3MpOwogCiAgICAgc3dpdGNoIChzdGF0ZSkgewpAQCAtOTc4LDE0ICs5NjIsMTIg
QEAgdm9pZCBXZWJQcm9jZXNzUHJveHk6OmRpZFNldEFzc2VydGlvblN0YQogICAgICAgICBicmVh
azsKIAogICAgIGNhc2UgQXNzZXJ0aW9uU3RhdGU6OkJhY2tncm91bmQ6Ci0gICAgICAgIGlmIChw
cm9jZXNzUG9vbCgpLnVzZXNOZXR3b3JrUHJvY2VzcygpKQotICAgICAgICAgICAgbV9iYWNrZ3Jv
dW5kVG9rZW5Gb3JOZXR3b3JrUHJvY2VzcyA9IHByb2Nlc3NQb29sKCkuZW5zdXJlTmV0d29ya1By
b2Nlc3MoKS50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpOworICAgICAgICBt
X2JhY2tncm91bmRUb2tlbkZvck5ldHdvcmtQcm9jZXNzID0gcHJvY2Vzc1Bvb2woKS5lbnN1cmVO
ZXR3b3JrUHJvY2VzcygpLnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCk7CiAg
ICAgICAgIG1fZm9yZWdyb3VuZFRva2VuRm9yTmV0d29ya1Byb2Nlc3MgPSBudWxscHRyOwogICAg
ICAgICBicmVhazsKICAgICAKICAgICBjYXNlIEFzc2VydGlvblN0YXRlOjpGb3JlZ3JvdW5kOgot
ICAgICAgICBpZiAocHJvY2Vzc1Bvb2woKS51c2VzTmV0d29ya1Byb2Nlc3MoKSkKLSAgICAgICAg
ICAgIG1fZm9yZWdyb3VuZFRva2VuRm9yTmV0d29ya1Byb2Nlc3MgPSBwcm9jZXNzUG9vbCgpLmVu
c3VyZU5ldHdvcmtQcm9jZXNzKCkudGhyb3R0bGVyKCkuZm9yZWdyb3VuZEFjdGl2aXR5VG9rZW4o
KTsKKyAgICAgICAgbV9mb3JlZ3JvdW5kVG9rZW5Gb3JOZXR3b3JrUHJvY2VzcyA9IHByb2Nlc3NQ
b29sKCkuZW5zdXJlTmV0d29ya1Byb2Nlc3MoKS50aHJvdHRsZXIoKS5mb3JlZ3JvdW5kQWN0aXZp
dHlUb2tlbigpOwogICAgICAgICBtX2JhY2tncm91bmRUb2tlbkZvck5ldHdvcmtQcm9jZXNzID0g
bnVsbHB0cjsKICAgICAgICAgZm9yIChhdXRvJiBwYWdlIDogbV9wYWdlTWFwLnZhbHVlcygpKQog
ICAgICAgICAgICAgcGFnZS0+cHJvY2Vzc1dpbGxCZWNvbWVGb3JlZ3JvdW5kKCk7CkluZGV4OiBT
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oCShyZXZpc2lvbiAxOTI2
MDEpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmgJKHdvcmtp
bmcgY29weSkKQEAgLTE1Miw5ICsxNTIsNyBAQCBwdWJsaWM6CiAKICAgICBQcm9jZXNzVGhyb3R0
bGVyJiB0aHJvdHRsZXIoKSB7IHJldHVybiBtX3Rocm90dGxlcjsgfQogCi0jaWYgRU5BQkxFKE5F
VFdPUktfUFJPQ0VTUykKICAgICB2b2lkIHJlaW5zdGF0ZU5ldHdvcmtQcm9jZXNzQXNzZXJ0aW9u
U3RhdGUoTmV0d29ya1Byb2Nlc3NQcm94eSYpOwotI2VuZGlmCiAKIHByaXZhdGU6CiAgICAgZXhw
bGljaXQgV2ViUHJvY2Vzc1Byb3h5KFdlYlByb2Nlc3NQb29sJik7CkBAIC0xODYsOSArMTg0LDcg
QEAgcHJpdmF0ZToKICNpZiBFTkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQSSkKICAgICB2b2lkIGdl
dFBsdWdpblByb2Nlc3NDb25uZWN0aW9uKHVpbnQ2NF90IHBsdWdpblByb2Nlc3NUb2tlbiwgUGFz
c1JlZlB0cjxNZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpHZXRQbHVnaW5Qcm9jZXNzQ29ubmVj
dGlvbjo6RGVsYXllZFJlcGx5Pik7CiAjZW5kaWYKLSNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNT
KQogICAgIHZvaWQgZ2V0TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKFBhc3NSZWZQdHI8TWVzc2Fn
ZXM6OldlYlByb2Nlc3NQcm94eTo6R2V0TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uOjpEZWxheWVk
UmVwbHk+KTsKLSNlbmRpZgogI2lmIEVOQUJMRShEQVRBQkFTRV9QUk9DRVNTKQogICAgIHZvaWQg
Z2V0RGF0YWJhc2VQcm9jZXNzQ29ubmVjdGlvbihQYXNzUmVmUHRyPE1lc3NhZ2VzOjpXZWJQcm9j
ZXNzUHJveHk6OkdldERhdGFiYXNlUHJvY2Vzc0Nvbm5lY3Rpb246OkRlbGF5ZWRSZXBseT4pOwog
I2VuZGlmCkBAIC0yNTMsNyArMjQ5LDcgQEAgcHJpdmF0ZToKICAgICBpbnQgbV9udW1iZXJPZlRp
bWVzU3VkZGVuVGVybWluYXRpb25XYXNEaXNhYmxlZDsKICAgICBQcm9jZXNzVGhyb3R0bGVyIG1f
dGhyb3R0bGVyOwogICAgIFByb2Nlc3NUaHJvdHRsZXI6OkJhY2tncm91bmRBY3Rpdml0eVRva2Vu
IG1fdG9rZW5Gb3JIb2xkaW5nTG9ja2VkRmlsZXM7Ci0jaWYgUExBVEZPUk0oSU9TKSAmJiBFTkFC
TEUoTkVUV09SS19QUk9DRVNTKQorI2lmIFBMQVRGT1JNKElPUykKICAgICBQcm9jZXNzVGhyb3R0
bGVyOjpGb3JlZ3JvdW5kQWN0aXZpdHlUb2tlbiBtX2ZvcmVncm91bmRUb2tlbkZvck5ldHdvcmtQ
cm9jZXNzOwogICAgIFByb2Nlc3NUaHJvdHRsZXI6OkJhY2tncm91bmRBY3Rpdml0eVRva2VuIG1f
YmFja2dyb3VuZFRva2VuRm9yTmV0d29ya1Byb2Nlc3M7CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkubWVzc2FnZXMuaW4KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5tZXNzYWdlcy5pbgko
cmV2aXNpb24gMTkyNjAxKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQ
cm94eS5tZXNzYWdlcy5pbgkod29ya2luZyBjb3B5KQpAQCAtMzgsOSArMzgsNyBAQCBtZXNzYWdl
cyAtPiBXZWJQcm9jZXNzUHJveHkgTGVnYWN5UmVjZWl2CiAgICAgR2V0UGx1Z2lucyhib29sIHJl
ZnJlc2gpIC0+IChWZWN0b3I8V2ViQ29yZTo6UGx1Z2luSW5mbz4gcGx1Z2lucywgVmVjdG9yPFdl
YkNvcmU6OlBsdWdpbkluZm8+IGFwcGxpY2F0aW9uUGx1Z2lucykKICAgICBHZXRQbHVnaW5Qcm9j
ZXNzQ29ubmVjdGlvbih1aW50NjRfdCBwbHVnaW5Qcm9jZXNzVG9rZW4pIC0+IChJUEM6OkF0dGFj
aG1lbnQgY29ubmVjdGlvbkhhbmRsZSwgYm9vbCBzdXBwb3J0c0FzeW5jaHJvbm91c0luaXRpYWxp
emF0aW9uKSBEZWxheWVkCiAjZW5kaWYKLSNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQogICAg
IEdldE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpIC0+IChJUEM6OkF0dGFjaG1lbnQgY29ubmVj
dGlvbkhhbmRsZSkgRGVsYXllZAotI2VuZGlmCiAjaWYgRU5BQkxFKERBVEFCQVNFX1BST0NFU1Mp
CiAgICAgR2V0RGF0YWJhc2VQcm9jZXNzQ29ubmVjdGlvbigpIC0+IChJUEM6OkF0dGFjaG1lbnQg
Y29ubmVjdGlvbkhhbmRsZSkgRGVsYXllZAogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL0FQSVByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9BUElQcm9jZXNzUG9vbENvbmZpZ3VyYXRp
b24uY3BwCShyZXZpc2lvbiAxOTI2MDEpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L0FQSVByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQxLDcg
KzQxLDYgQEAgUmVmPFByb2Nlc3NQb29sQ29uZmlndXJhdGlvbj4gUHJvY2Vzc1BvbwogICAgIGF1
dG8gY29uZmlndXJhdGlvbiA9IFByb2Nlc3NQb29sQ29uZmlndXJhdGlvbjo6Y3JlYXRlKCk7CiAK
ICAgICBjb25maWd1cmF0aW9uLT5tX3Nob3VsZEhhdmVMZWdhY3lEYXRhU3RvcmUgPSB0cnVlOwot
ICAgIGNvbmZpZ3VyYXRpb24tPm1fcHJvY2Vzc01vZGVsID0gV2ViS2l0OjpQcm9jZXNzTW9kZWxT
aGFyZWRTZWNvbmRhcnlQcm9jZXNzOwogICAgIGNvbmZpZ3VyYXRpb24tPm1fdXNlTmV0d29ya1By
b2Nlc3MgPSBmYWxzZTsKICAgICBjb25maWd1cmF0aW9uLT5tX2NhY2hlTW9kZWwgPSBXZWJLaXQ6
OkNhY2hlTW9kZWxEb2N1bWVudFZpZXdlcjsKIApAQCAtNzQsNyArNzMsNiBAQCBSZWY8UHJvY2Vz
c1Bvb2xDb25maWd1cmF0aW9uPiBQcm9jZXNzUG9vCiAgICAgYXV0byBjb3B5ID0gdGhpcy0+Y3Jl
YXRlKCk7CiAKICAgICBjb3B5LT5tX3Nob3VsZEhhdmVMZWdhY3lEYXRhU3RvcmUgPSB0aGlzLT5t
X3Nob3VsZEhhdmVMZWdhY3lEYXRhU3RvcmU7Ci0gICAgY29weS0+bV9wcm9jZXNzTW9kZWwgPSB0
aGlzLT5tX3Byb2Nlc3NNb2RlbDsKICAgICBjb3B5LT5tX3VzZU5ldHdvcmtQcm9jZXNzID0gdGhp
cy0+bV91c2VOZXR3b3JrUHJvY2VzczsKICAgICBjb3B5LT5tX21heGltdW1Qcm9jZXNzQ291bnQg
PSB0aGlzLT5tX21heGltdW1Qcm9jZXNzQ291bnQ7CiAgICAgY29weS0+bV9jYWNoZU1vZGVsID0g
dGhpcy0+bV9jYWNoZU1vZGVsOwpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9B
UElQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL0FQSVByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5oCShyZXZpc2lvbiAx
OTI2MDEpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0FQSVByb2Nlc3NQb29sQ29u
ZmlndXJhdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw3ICsyOCw2IEBACiAKICNpbmNsdWRl
ICJBUElPYmplY3QuaCIKICNpbmNsdWRlICJDYWNoZU1vZGVsLmgiCi0jaW5jbHVkZSAiUHJvY2Vz
c01vZGVsLmgiCiAjaW5jbHVkZSA8d3RmL1JlZi5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4K
ICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KQEAgLTQ4LDkgKzQ3LDYgQEAgcHVibGlj
OgogICAgIGJvb2wgc2hvdWxkSGF2ZUxlZ2FjeURhdGFTdG9yZSgpIGNvbnN0IHsgcmV0dXJuIG1f
c2hvdWxkSGF2ZUxlZ2FjeURhdGFTdG9yZTsgfQogICAgIHZvaWQgc2V0U2hvdWxkSGF2ZUxlZ2Fj
eURhdGFTdG9yZShib29sIHNob3VsZEhhdmVMZWdhY3lEYXRhU3RvcmUpIHsgbV9zaG91bGRIYXZl
TGVnYWN5RGF0YVN0b3JlID0gc2hvdWxkSGF2ZUxlZ2FjeURhdGFTdG9yZTsgfQogCi0gICAgV2Vi
S2l0OjpQcm9jZXNzTW9kZWwgcHJvY2Vzc01vZGVsKCkgY29uc3QgeyByZXR1cm4gbV9wcm9jZXNz
TW9kZWw7IH0KLSAgICB2b2lkIHNldFByb2Nlc3NNb2RlbChXZWJLaXQ6OlByb2Nlc3NNb2RlbCBw
cm9jZXNzTW9kZWwpIHsgbV9wcm9jZXNzTW9kZWwgPSBwcm9jZXNzTW9kZWw7IH0gCi0KICAgICBi
b29sIHVzZU5ldHdvcmtQcm9jZXNzKCkgY29uc3QgeyByZXR1cm4gbV91c2VOZXR3b3JrUHJvY2Vz
czsgfQogICAgIHZvaWQgc2V0VXNlTmV0d29ya1Byb2Nlc3MoYm9vbCB1c2VOZXR3b3JrUHJvY2Vz
cykgeyBtX3VzZU5ldHdvcmtQcm9jZXNzID0gdXNlTmV0d29ya1Byb2Nlc3M7IH0gCiAKQEAgLTk2
LDcgKzkyLDYgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBib29sIG1fc2hvdWxkSGF2ZUxlZ2Fj
eURhdGFTdG9yZSB7IGZhbHNlIH07CiAKLSAgICBXZWJLaXQ6OlByb2Nlc3NNb2RlbCBtX3Byb2Nl
c3NNb2RlbCB7IFdlYktpdDo6UHJvY2Vzc01vZGVsTXVsdGlwbGVTZWNvbmRhcnlQcm9jZXNzZXMg
fTsKICAgICBib29sIG1fdXNlTmV0d29ya1Byb2Nlc3MgeyB0cnVlIH07CiAgICAgdW5zaWduZWQg
bV9tYXhpbXVtUHJvY2Vzc0NvdW50IHsgMCB9OwogICAgIFdlYktpdDo6Q2FjaGVNb2RlbCBtX2Nh
Y2hlTW9kZWwgeyBXZWJLaXQ6OkNhY2hlTW9kZWxQcmltYXJ5V2ViQnJvd3NlciB9OwpJbmRleDog
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9BUElTZXNzaW9uLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0FQSVNlc3Npb24uY3BwCShyZXZpc2lvbiAx
OTI2MDEpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0FQSVNlc3Npb24uY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0yOCwxMCArMjgsOCBAQAogCiAjaW5jbHVkZSA8d3RmL1J1bkxvb3Au
aD4KIAotI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCiAjaW5jbHVkZSAiTmV0d29ya1Byb2Nl
c3NNZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NQb29sLmgiCi0jZW5kaWYKIAogbmFt
ZXNwYWNlIEFQSSB7CiAKQEAgLTgwLDEyICs3OCwxMCBAQCBXZWJDb3JlOjpTZXNzaW9uSUQgU2Vz
c2lvbjo6Z2V0SUQoKSBjb25zCiAKIFNlc3Npb246On5TZXNzaW9uKCkKIHsKLSNpZiBFTkFCTEUo
TkVUV09SS19QUk9DRVNTKQogICAgIGlmIChtX3Nlc3Npb25JRC5pc0VwaGVtZXJhbCgpKSB7CiAg
ICAgICAgIGZvciAoYXV0byYgcHJvY2Vzc1Bvb2wgOiBXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjph
bGxQcm9jZXNzUG9vbHMoKSkKICAgICAgICAgICAgIHByb2Nlc3NQb29sLT5zZW5kVG9OZXR3b3Jr
aW5nUHJvY2VzcyhNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OkRlc3Ryb3lQcml2YXRlQnJvd3Np
bmdTZXNzaW9uKG1fc2Vzc2lvbklEKSk7CiAgICAgfQotI2VuZGlmCiB9CiAKIH0gLy8gbmFtZXNw
YWNlIEFQSQpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLQVBJQ2FzdC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0FQSUNhc3Qu
aAkocmV2aXNpb24gMTkyNjAxKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dL
QVBJQ2FzdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw3ICszMiw2IEBACiAjaW5jbHVkZSAiSFRU
UENvb2tpZUFjY2VwdFBvbGljeS5oIgogI2luY2x1ZGUgIkluamVjdGVkQnVuZGxlSGl0VGVzdFJl
c3VsdE1lZGlhVHlwZS5oIgogI2luY2x1ZGUgIlBsdWdpbk1vZHVsZUluZm8uaCIKLSNpbmNsdWRl
ICJQcm9jZXNzTW9kZWwuaCIKICNpbmNsdWRlICJSZXNvdXJjZUNhY2hlc1RvQ2xlYXIuaCIKICNp
bmNsdWRlICJXS0J1bmRsZUhpdFRlc3RSZXN1bHQuaCIKICNpbmNsdWRlICJXS0NvbnRleHQuaCIK
QEAgLTIzMCwzMSArMjI5LDYgQEAgaW5saW5lIFdLQ2FjaGVNb2RlbCB0b0FQSShDYWNoZU1vZGVs
IGNhYwogICAgIHJldHVybiBrV0tDYWNoZU1vZGVsRG9jdW1lbnRWaWV3ZXI7CiB9CiAKLWlubGlu
ZSBQcm9jZXNzTW9kZWwgdG9Qcm9jZXNzTW9kZWwoV0tQcm9jZXNzTW9kZWwgd2tQcm9jZXNzTW9k
ZWwpCi17Ci0gICAgc3dpdGNoICh3a1Byb2Nlc3NNb2RlbCkgewotICAgIGNhc2Uga1dLUHJvY2Vz
c01vZGVsU2hhcmVkU2Vjb25kYXJ5UHJvY2VzczoKLSAgICAgICAgcmV0dXJuIFByb2Nlc3NNb2Rl
bFNoYXJlZFNlY29uZGFyeVByb2Nlc3M7Ci0gICAgY2FzZSBrV0tQcm9jZXNzTW9kZWxNdWx0aXBs
ZVNlY29uZGFyeVByb2Nlc3NlczoKLSAgICAgICAgcmV0dXJuIFByb2Nlc3NNb2RlbE11bHRpcGxl
U2Vjb25kYXJ5UHJvY2Vzc2VzOwotICAgIH0KLQotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwot
ICAgIHJldHVybiBQcm9jZXNzTW9kZWxTaGFyZWRTZWNvbmRhcnlQcm9jZXNzOwotfQotCi1pbmxp
bmUgV0tQcm9jZXNzTW9kZWwgdG9BUEkoUHJvY2Vzc01vZGVsIHByb2Nlc3NNb2RlbCkKLXsKLSAg
ICBzd2l0Y2ggKHByb2Nlc3NNb2RlbCkgewotICAgIGNhc2UgUHJvY2Vzc01vZGVsU2hhcmVkU2Vj
b25kYXJ5UHJvY2VzczoKLSAgICAgICAgcmV0dXJuIGtXS1Byb2Nlc3NNb2RlbFNoYXJlZFNlY29u
ZGFyeVByb2Nlc3M7Ci0gICAgY2FzZSBQcm9jZXNzTW9kZWxNdWx0aXBsZVNlY29uZGFyeVByb2Nl
c3NlczoKLSAgICAgICAgcmV0dXJuIGtXS1Byb2Nlc3NNb2RlbE11bHRpcGxlU2Vjb25kYXJ5UHJv
Y2Vzc2VzOwotICAgIH0KLSAgICAKLSAgICByZXR1cm4ga1dLUHJvY2Vzc01vZGVsU2hhcmVkU2Vj
b25kYXJ5UHJvY2VzczsKLX0KLQogaW5saW5lIEZvbnRTbW9vdGhpbmdMZXZlbCB0b0ZvbnRTbW9v
dGhpbmdMZXZlbChXS0ZvbnRTbW9vdGhpbmdMZXZlbCB3a0xldmVsKQogewogICAgIHN3aXRjaCAo
d2tMZXZlbCkgewpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4
dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLQ29u
dGV4dC5jcHAJKHJldmlzaW9uIDE5MjYwMSkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvQy9XS0NvbnRleHQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMjksMTYgKzMyOSw2IEBAIFdL
Q2FjaGVNb2RlbCBXS0NvbnRleHRHZXRDYWNoZU1vZGVsKFdLQ28KICAgICByZXR1cm4gdG9BUEko
dG9JbXBsKGNvbnRleHRSZWYpLT5jYWNoZU1vZGVsKCkpOwogfQogCi12b2lkIFdLQ29udGV4dFNl
dFByb2Nlc3NNb2RlbChXS0NvbnRleHRSZWYgY29udGV4dFJlZiwgV0tQcm9jZXNzTW9kZWwgcHJv
Y2Vzc01vZGVsKQotewotICAgIHRvSW1wbChjb250ZXh0UmVmKS0+c2V0UHJvY2Vzc01vZGVsKHRv
UHJvY2Vzc01vZGVsKHByb2Nlc3NNb2RlbCkpOwotfQotCi1XS1Byb2Nlc3NNb2RlbCBXS0NvbnRl
eHRHZXRQcm9jZXNzTW9kZWwoV0tDb250ZXh0UmVmIGNvbnRleHRSZWYpCi17Ci0gICAgcmV0dXJu
IHRvQVBJKHRvSW1wbChjb250ZXh0UmVmKS0+cHJvY2Vzc01vZGVsKCkpOwotfQotCiB2b2lkIFdL
Q29udGV4dFNldE1heGltdW1OdW1iZXJPZlByb2Nlc3NlcyhXS0NvbnRleHRSZWYgY29udGV4dFJl
ZiwgdW5zaWduZWQgbnVtYmVyT2ZQcm9jZXNzZXMpCiB7CiAgICAgdG9JbXBsKGNvbnRleHRSZWYp
LT5zZXRNYXhpbXVtTnVtYmVyT2ZQcm9jZXNzZXMobnVtYmVyT2ZQcm9jZXNzZXMpOwpAQCAtNTU0
LDExICs1NDQsNiBAQCB2b2lkIFdLQ29udGV4dFNldEphdmFTY3JpcHRHYXJiYWdlQ29sbGVjCiAg
ICAgdG9JbXBsKGNvbnRleHRSZWYpLT5zZXRKYXZhU2NyaXB0R2FyYmFnZUNvbGxlY3RvclRpbWVy
RW5hYmxlZChlbmFibGUpOwogfQogCi12b2lkIFdLQ29udGV4dFNldFVzZXNOZXR3b3JrUHJvY2Vz
cyhXS0NvbnRleHRSZWYgY29udGV4dFJlZiwgYm9vbCB1c2VzTmV0d29ya1Byb2Nlc3MpCi17Ci0g
ICAgdG9JbXBsKGNvbnRleHRSZWYpLT5zZXRVc2VzTmV0d29ya1Byb2Nlc3ModXNlc05ldHdvcmtQ
cm9jZXNzKTsKLX0KLQogdm9pZCBXS0NvbnRleHRVc2VUZXN0aW5nTmV0d29ya1Nlc3Npb24oV0tD
b250ZXh0UmVmIGNvbnRleHQpCiB7CiAgICAgdG9JbXBsKGNvbnRleHQpLT51c2VUZXN0aW5nTmV0
d29ya1Nlc3Npb24oKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0Nv
bnRleHQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tD
b250ZXh0LmgJKHJldmlzaW9uIDE5MjYwMSkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvQy9XS0NvbnRleHQuaAkod29ya2luZyBjb3B5KQpAQCAtNzUsNiArNzUsNyBAQCB0eXBlZGVm
IHN0cnVjdCBXS0NvbnRleHRDbGllbnRWMSB7CiAgICAgV0tDb250ZXh0Q29weVdlYkNyeXB0b01h
c3RlcktleUNhbGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb3B5V2ViQ3J5cHRv
TWFzdGVyS2V5OwogfSBXS0NvbnRleHRDbGllbnRWMTsKIAorLy8gRklYTUU6IFRoZXNlIGNhbiBi
ZSByZW1vdmVkIG9uY2Ugd2UgYXJlIG5vIGxvbmdlciBzdXBwb3J0aW5nIE1hdmVyaWNrcy4KIGVu
dW0gewogICAgIGtXS1Byb2Nlc3NNb2RlbFNoYXJlZFNlY29uZGFyeVByb2Nlc3MgPSAwLAogICAg
IGtXS1Byb2Nlc3NNb2RlbE11bHRpcGxlU2Vjb25kYXJ5UHJvY2Vzc2VzID0gMQpJbmRleDogU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL21hYy9XS0NvbnRleHRQcml2YXRlTWFjLm1tCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9tYWMvV0tDb250ZXh0
UHJpdmF0ZU1hYy5tbQkocmV2aXNpb24gMTkyNjAxKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9DL21hYy9XS0NvbnRleHRQcml2YXRlTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0x
NjYsMTAgKzE2Niw1IEBAIGJvb2wgV0tDb250ZXh0U2hvdWxkU3VnZ2VzdEJsb2NrV2ViR0woKQog
CiBwaWRfdCBXS0NvbnRleHRHZXROZXR3b3JrUHJvY2Vzc0lkZW50aWZpZXIoV0tDb250ZXh0UmVm
IGNvbnRleHRSZWYpCiB7Ci0jaWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKICAgICByZXR1cm4g
dG9JbXBsKGNvbnRleHRSZWYpLT5uZXR3b3JrUHJvY2Vzc0lkZW50aWZpZXIoKTsKLSNlbHNlCi0g
ICAgVU5VU0VEX1BBUkFNKGNvbnRleHRSZWYpOwotICAgIHJldHVybiAwOwotI2VuZGlmCiB9Cklu
ZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc0dyb3VwLm1t
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9j
ZXNzR3JvdXAubW0JKHJldmlzaW9uIDE5MjYwMSkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvQ29jb2EvV0tQcm9jZXNzR3JvdXAubW0JKHdvcmtpbmcgY29weSkKQEAgLTE5MiwxMCAr
MTkyLDYgQEAgLSAoaWQpaW5pdFdpdGhJbmplY3RlZEJ1bmRsZVVSTDooTlNVUkwgKgogCiAgICAg
YXV0byBjb25maWd1cmF0aW9uID0gQVBJOjpQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb246OmNyZWF0
ZVdpdGhMZWdhY3lPcHRpb25zKCk7CiAgICAgY29uZmlndXJhdGlvbi0+c2V0SW5qZWN0ZWRCdW5k
bGVQYXRoKGJ1bmRsZVVSTCA/IFN0cmluZyhidW5kbGVVUkwucGF0aCkgOiBTdHJpbmcoKSk7Ci0j
aWYgUExBVEZPUk0oSU9TKQotICAgIGNvbmZpZ3VyYXRpb24tPnNldFVzZU5ldHdvcmtQcm9jZXNz
KHRydWUpOwotICAgIGNvbmZpZ3VyYXRpb24tPnNldFByb2Nlc3NNb2RlbChQcm9jZXNzTW9kZWxN
dWx0aXBsZVNlY29uZGFyeVByb2Nlc3Nlcyk7Ci0jZW5kaWYKIAogICAgIF9wcm9jZXNzUG9vbCA9
IFdlYlByb2Nlc3NQb29sOjpjcmVhdGUoY29uZmlndXJhdGlvbik7CiAKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9vbC5tbQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc1Bvb2wubW0JKHJl
dmlzaW9uIDE5MjYwMSkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQ
cm9jZXNzUG9vbC5tbQkod29ya2luZyBjb3B5KQpAQCAtMzAsNyArMzAsNiBAQAogCiAjaW1wb3J0
ICJDYWNoZU1vZGVsLmgiCiAjaW1wb3J0ICJEb3dubG9hZENsaWVudC5oIgotI2ltcG9ydCAiUHJv
Y2Vzc01vZGVsLmgiCiAjaW1wb3J0ICJTYW5kYm94VXRpbGl0aWVzLmgiCiAjaW1wb3J0ICJXS09i
amVjdC5oIgogI2ltcG9ydCAiV2Vha09iakNQdHIuaCIKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUG9vbENvY29hLm1tCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUG9vbENvY29hLm1tCShyZXZpc2lv
biAxOTI2MDEpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Bv
b2xDb2NvYS5tbQkod29ya2luZyBjb3B5KQpAQCAtMjYsNiArMjYsOCBAQAogI2ltcG9ydCAiY29u
ZmlnLmgiCiAjaW1wb3J0ICJXZWJQcm9jZXNzUG9vbC5oIgogCisjaW1wb3J0ICJOZXR3b3JrUHJv
Y2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oIgorI2ltcG9ydCAiTmV0d29ya1Byb2Nlc3NQcm94eS5o
IgogI2ltcG9ydCAiUGx1Z2luUHJvY2Vzc01hbmFnZXIuaCIKICNpbXBvcnQgIlNhbmRib3hVdGls
aXRpZXMuaCIKICNpbXBvcnQgIlRleHRDaGVja2VyLmgiCkBAIC00NywxMSArNDksNiBAQAogI2lt
cG9ydCA8V2ViQ29yZS9SdW50aW1lQXBwbGljYXRpb25DaGVja3MuaD4KICNpbXBvcnQgPHN5cy9w
YXJhbS5oPgogCi0jaWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKLSNpbXBvcnQgIk5ldHdvcmtQ
cm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmgiCi0jaW1wb3J0ICJOZXR3b3JrUHJvY2Vzc1Byb3h5
LmgiCi0jZW5kaWYKLQogI2lmIFBMQVRGT1JNKElPUykKICNpbXBvcnQgIkFyZ3VtZW50Q29kZXJz
Q0YuaCIKICNpbXBvcnQgIldlYk1lbW9yeVByZXNzdXJlSGFuZGxlcklPUy5oIgpAQCAtNzYsMTAg
KzczLDggQEAgc3RhdGljIE5TU3RyaW5nICpXZWJLaXRBcHBsaWNhdGlvbkRpZENoYQogLy8gRklY
TUU6IDxyZGFyOi8vcHJvYmxlbS85MTM4ODE3PiAtIEFmdGVyIHRoaXMgImJhY2t3YXJkcyBjb21w
YXRpYmlsaXR5IiByYWRhciBpcyByZW1vdmVkLCB0aGlzIGNvZGUgc2hvdWxkIGJlIHJlbW92ZWQg
dG8gb25seSByZXR1cm4gYW4gZW1wdHkgU3RyaW5nLgogTlNTdHJpbmcgKldlYkljb25EYXRhYmFz
ZURpcmVjdG9yeURlZmF1bHRzS2V5ID0gQCJXZWJJY29uRGF0YWJhc2VEaXJlY3RvcnlEZWZhdWx0
c0tleSI7CiAKLSNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQogc3RhdGljIE5TU3RyaW5nICog
Y29uc3QgV2ViS2l0MkhUVFBQcm94eURlZmF1bHRzS2V5ID0gQCJXZWJLaXQySFRUUFByb3h5IjsK
IHN0YXRpYyBOU1N0cmluZyAqIGNvbnN0IFdlYktpdDJIVFRQU1Byb3h5RGVmYXVsdHNLZXkgPSBA
IldlYktpdDJIVFRQU1Byb3h5IjsKLSNlbmRpZgogCiAjaWYgRU5BQkxFKE5FVFdPUktfQ0FDSEUp
CiBzdGF0aWMgTlNTdHJpbmcgKiBjb25zdCBXZWJLaXROZXR3b3JrQ2FjaGVFbmFibGVkRGVmYXVs
dHNLZXkgPSBAIldlYktpdE5ldHdvcmtDYWNoZUVuYWJsZWQiOwpAQCAtMTE5LDEwICsxMTQsOCBA
QCBzdGF0aWMgdm9pZCByZWdpc3RlclVzZXJEZWZhdWx0c0lmTmVlZGVkCiAKIHZvaWQgV2ViUHJv
Y2Vzc1Bvb2w6OnVwZGF0ZVByb2Nlc3NTdXBwcmVzc2lvblN0YXRlKCkKIHsKLSNpZiBFTkFCTEUo
TkVUV09SS19QUk9DRVNTKQotICAgIGlmICh1c2VzTmV0d29ya1Byb2Nlc3MoKSAmJiBtX25ldHdv
cmtQcm9jZXNzKQorICAgIGlmIChtX25ldHdvcmtQcm9jZXNzKQogICAgICAgICBtX25ldHdvcmtQ
cm9jZXNzLT5zZXRQcm9jZXNzU3VwcHJlc3Npb25FbmFibGVkKHByb2Nlc3NTdXBwcmVzc2lvbkVu
YWJsZWQoKSk7Ci0jZW5kaWYKIAogI2lmIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJKQogICAg
IGlmICghbV9wcm9jZXNzU3VwcHJlc3Npb25EaXNhYmxlZEZvclBhZ2VDb3VudGVyLnZhbHVlKCkp
CkBAIC0xOTcsMTUgKzE5MCw2IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnBsYXRmb3JtSW5pdGlh
bGl6ZVcKIAogICAgIHBhcmFtZXRlcnMudWlQcm9jZXNzQnVuZGxlSWRlbnRpZmllciA9IFN0cmlu
ZyhbW05TQnVuZGxlIG1haW5CdW5kbGVdIGJ1bmRsZUlkZW50aWZpZXJdKTsKIAotI2lmIEVOQUJM
RShORVRXT1JLX1BST0NFU1MpCi0gICAgaWYgKCF1c2VzTmV0d29ya1Byb2Nlc3MoKSkgewotI2Vu
ZGlmCi0gICAgICAgIGZvciAoY29uc3QgYXV0byYgc2NoZW1lIDogZ2xvYmFsVVJMU2NoZW1lc1dp
dGhDdXN0b21Qcm90b2NvbEhhbmRsZXJzKCkpCi0gICAgICAgICAgICBwYXJhbWV0ZXJzLnVybFNj
aGVtZXNSZWdpc3RlcmVkRm9yQ3VzdG9tUHJvdG9jb2xzLmFwcGVuZChzY2hlbWUpOwotI2lmIEVO
QUJMRShORVRXT1JLX1BST0NFU1MpCi0gICAgfQotI2VuZGlmCi0KICAgICBwYXJhbWV0ZXJzLmZv
bnRXaGl0ZWxpc3QgPSBtX2ZvbnRXaGl0ZWxpc3Q7CiAKICAgICBpZiAobV9idW5kbGVQYXJhbWV0
ZXJzKSB7CkBAIC0yMzYsNyArMjIwLDYgQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6cGxhdGZvcm1J
bml0aWFsaXplVwogI2VuZGlmCiB9CiAKLSNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQogdm9p
ZCBXZWJQcm9jZXNzUG9vbDo6cGxhdGZvcm1Jbml0aWFsaXplTmV0d29ya1Byb2Nlc3MoTmV0d29y
a1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMmIHBhcmFtZXRlcnMpCiB7CiAgICAgTlNVUkxDYWNo
ZSAqdXJsQ2FjaGUgPSBbTlNVUkxDYWNoZSBzaGFyZWRVUkxDYWNoZV07CkBAIC0yNzEsNyArMjU0
LDYgQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6cGxhdGZvcm1Jbml0aWFsaXplTgogICAgIHBhcmFt
ZXRlcnMudWlQcm9jZXNzQ29va2llU3RvcmFnZUlkZW50aWZpZXIuYXBwZW5kKENGRGF0YUdldEJ5
dGVQdHIoY29va2llU3RvcmFnZURhdGEuZ2V0KCkpLCBDRkRhdGFHZXRMZW5ndGgoY29va2llU3Rv
cmFnZURhdGEuZ2V0KCkpKTsKICNlbmRpZgogfQotI2VuZGlmCiAKIHZvaWQgV2ViUHJvY2Vzc1Bv
b2w6OnBsYXRmb3JtSW52YWxpZGF0ZUNvbnRleHQoKQogewpJbmRleDogU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZFByb3h5LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkUHJveHkuY3BwCShyZXZpc2lv
biAxOTI2MDEpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2Fk
UHJveHkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMSwxNiArMzEsMTMgQEAKICNpbmNsdWRlICJB
dXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5LmgiCiAjaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5o
IgogI2luY2x1ZGUgIkRvd25sb2FkUHJveHlNYXAuaCIKKyNpbmNsdWRlICJOZXR3b3JrUHJvY2Vz
c01lc3NhZ2VzLmgiCisjaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3NQcm94eS5oIgogI2luY2x1ZGUg
IldlYlByb2Nlc3NNZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NQb29sLmgiCiAjaW5j
bHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5o
PgogCi0jaWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKLSNpbmNsdWRlICJOZXR3b3JrUHJvY2Vz
c01lc3NhZ2VzLmgiCi0jaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3NQcm94eS5oIgotI2VuZGlmCi0K
IHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTc0LDE1
ICs3MSw4IEBAIHZvaWQgRG93bmxvYWRQcm94eTo6Y2FuY2VsKCkKICAgICBpZiAoIW1fcHJvY2Vz
c1Bvb2wpCiAgICAgICAgIHJldHVybjsKIAotI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCi0g
ICAgaWYgKG1fcHJvY2Vzc1Bvb2wtPnVzZXNOZXR3b3JrUHJvY2VzcygpKSB7Ci0gICAgICAgIGlm
IChOZXR3b3JrUHJvY2Vzc1Byb3h5KiBuZXR3b3JrUHJvY2VzcyA9IG1fcHJvY2Vzc1Bvb2wtPm5l
dHdvcmtQcm9jZXNzKCkpCi0gICAgICAgICAgICBuZXR3b3JrUHJvY2Vzcy0+Y29ubmVjdGlvbigp
LT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6Q2FuY2VsRG93bmxvYWQobV9kb3dubG9h
ZElEKSwgMCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0jZW5kaWYKLQotICAgIG1fcHJvY2Vz
c1Bvb2wtPnNlbmRUb0FsbFByb2Nlc3NlcyhNZXNzYWdlczo6V2ViUHJvY2Vzczo6Q2FuY2VsRG93
bmxvYWQobV9kb3dubG9hZElEKSk7CisgICAgaWYgKE5ldHdvcmtQcm9jZXNzUHJveHkqIG5ldHdv
cmtQcm9jZXNzID0gbV9wcm9jZXNzUG9vbC0+bmV0d29ya1Byb2Nlc3MoKSkKKyAgICAgICAgbmV0
d29ya1Byb2Nlc3MtPmNvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6
OkNhbmNlbERvd25sb2FkKG1fZG93bmxvYWRJRCksIDApOwogfQogCiB2b2lkIERvd25sb2FkUHJv
eHk6OmludmFsaWRhdGUoKQpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0xhdW5jaGVy
L1Byb2Nlc3NMYXVuY2hlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0xhdW5jaGVyL1Byb2Nlc3NMYXVuY2hlci5jcHAJKHJldmlzaW9uIDE5MjYwMSkKKysrIFNv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9MYXVuY2hlci9Qcm9jZXNzTGF1bmNoZXIuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC04NCwxMCArODQsOCBAQCBjb25zdCBjaGFyKiBQcm9jZXNzTGF1bmNoZXI6
OnByb2Nlc3NUeXBlCiAgICAgY2FzZSBQbHVnaW5Qcm9jZXNzOgogICAgICAgICByZXR1cm4gInBs
dWdpbnByb2Nlc3MiOwogI2VuZGlmCi0jaWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKICAgICBj
YXNlIE5ldHdvcmtQcm9jZXNzOgogICAgICAgICByZXR1cm4gIm5ldHdvcmtwcm9jZXNzIjsKLSNl
bmRpZgogI2lmIEVOQUJMRShEQVRBQkFTRV9QUk9DRVNTKQogICAgIGNhc2UgRGF0YWJhc2VQcm9j
ZXNzOgogICAgICAgICByZXR1cm4gImRhdGFiYXNlcHJvY2VzcyI7CkBAIC0xMTIsMTIgKzExMCwx
MCBAQCBib29sIFByb2Nlc3NMYXVuY2hlcjo6Z2V0UHJvY2Vzc1R5cGVGcm9tCiAgICAgfQogI2Vu
ZGlmCiAKLSNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQogICAgIGlmICghc3RyY21wKHN0cmlu
ZywgIm5ldHdvcmtwcm9jZXNzIikpIHsKICAgICAgICAgcHJvY2Vzc1R5cGUgPSBOZXR3b3JrUHJv
Y2VzczsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQotI2VuZGlmCiAKICNpZiBFTkFCTEUo
REFUQUJBU0VfUFJPQ0VTUykKICAgICBpZiAoIXN0cmNtcChzdHJpbmcsICJkYXRhYmFzZXByb2Nl
c3MiKSkgewpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0xhdW5jaGVyL1Byb2Nlc3NM
YXVuY2hlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9MYXVuY2hl
ci9Qcm9jZXNzTGF1bmNoZXIuaAkocmV2aXNpb24gMTkyNjAxKQorKysgU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0xhdW5jaGVyL1Byb2Nlc3NMYXVuY2hlci5oCSh3b3JraW5nIGNvcHkpCkBAIC01
MCw5ICs1MCw3IEBAIHB1YmxpYzoKICNpZiBFTkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQSSkKICAg
ICAgICAgUGx1Z2luUHJvY2VzcywKICNlbmRpZgotI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1Mp
CiAgICAgICAgIE5ldHdvcmtQcm9jZXNzLAotI2VuZGlmCiAjaWYgRU5BQkxFKERBVEFCQVNFX1BS
T0NFU1MpCiAgICAgICAgIERhdGFiYXNlUHJvY2VzcywKICNlbmRpZgpJbmRleDogU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0xhdW5jaGVyL21hYy9Qcm9jZXNzTGF1bmNoZXJNYWMubW0KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0xhdW5jaGVyL21hYy9Qcm9jZXNzTGF1
bmNoZXJNYWMubW0JKHJldmlzaW9uIDE5MjYwMSkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9MYXVuY2hlci9tYWMvUHJvY2Vzc0xhdW5jaGVyTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0x
MDUsMTQgKzEwNSwxMiBAQCBzdGF0aWMgUmV0YWluUHRyPE5TU3RyaW5nPiBjb21wdXRlUHJvY2Vz
CiAgICAgfQogI2VuZGlmCiAKLSNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQogICAgIGlmIChs
YXVuY2hPcHRpb25zLnByb2Nlc3NUeXBlID09IFByb2Nlc3NMYXVuY2hlcjo6TmV0d29ya1Byb2Nl
c3MpIHsKICAgICAgICAgTlNTdHJpbmcgKnByb2Nlc3NQYXRoID0gW3dlYktpdEJ1bmRsZSBwYXRo
Rm9yQXV4aWxpYXJ5RXhlY3V0YWJsZTpAIk5ldHdvcmtQcm9jZXNzLmFwcCJdOwogICAgICAgICBO
U1N0cmluZyAqcHJvY2Vzc0FwcEV4ZWN1dGFibGVQYXRoID0gW1tOU0J1bmRsZSBidW5kbGVXaXRo
UGF0aDpwcm9jZXNzUGF0aF0gZXhlY3V0YWJsZVBhdGhdOwogCiAgICAgICAgIHJldHVybiBbW3By
b2Nlc3NBcHBFeGVjdXRhYmxlUGF0aCBzdHJpbmdCeURlbGV0aW5nTGFzdFBhdGhDb21wb25lbnRd
IHN0cmluZ0J5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpAIlNlY0l0ZW1TaGltLmR5bGliIl07CiAg
ICAgfQotI2VuZGlmCiAKICAgICBpZiAobGF1bmNoT3B0aW9ucy5wcm9jZXNzVHlwZSA9PSBQcm9j
ZXNzTGF1bmNoZXI6OldlYlByb2Nlc3MpIHsKICAgICAgICAgTlNTdHJpbmcgKnByb2Nlc3NQYXRo
ID0gW3dlYktpdEJ1bmRsZSBwYXRoRm9yQXV4aWxpYXJ5RXhlY3V0YWJsZTpAIldlYlByb2Nlc3Mu
YXBwIl07CkBAIC0xNjcsMTIgKzE2NSwxMCBAQCBzdGF0aWMgY29uc3QgY2hhciogc2VydmljZU5h
bWUoY29uc3QgUHJvCiAgICAgICAgIGlmIChmb3JEZXZlbG9wbWVudCkKICAgICAgICAgICAgIHJl
dHVybiAiY29tLmFwcGxlLldlYktpdC5XZWJDb250ZW50LkRldmVsb3BtZW50IjsKICAgICAgICAg
cmV0dXJuICJjb20uYXBwbGUuV2ViS2l0LldlYkNvbnRlbnQiOwotI2lmIEVOQUJMRShORVRXT1JL
X1BST0NFU1MpCiAgICAgY2FzZSBQcm9jZXNzTGF1bmNoZXI6Ok5ldHdvcmtQcm9jZXNzOgogICAg
ICAgICBpZiAoZm9yRGV2ZWxvcG1lbnQpCiAgICAgICAgICAgICByZXR1cm4gImNvbS5hcHBsZS5X
ZWJLaXQuTmV0d29ya2luZy5EZXZlbG9wbWVudCI7CiAgICAgICAgIHJldHVybiAiY29tLmFwcGxl
LldlYktpdC5OZXR3b3JraW5nIjsKLSNlbmRpZgogI2lmIEVOQUJMRShEQVRBQkFTRV9QUk9DRVNT
KQogICAgIGNhc2UgUHJvY2Vzc0xhdW5jaGVyOjpEYXRhYmFzZVByb2Nlc3M6CiAgICAgICAgIGlm
IChmb3JEZXZlbG9wbWVudCkKQEAgLTIwNiwxMiArMjAyLDkgQEAgc3RhdGljIGJvb2wgc2hvdWxk
TGVha0Jvb3N0KGNvbnN0IFByb2NlcwogICAgIC8vIE9uIGlPUywgbGVhayBhIGJvb3N0IG9udG8g
YWxsIGNoaWxkIHByb2Nlc3NlcwogICAgIFVOVVNFRF9QQVJBTShsYXVuY2hPcHRpb25zKTsKICAg
ICByZXR1cm4gdHJ1ZTsKLSNlbGlmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCisjZWxzZQogICAg
IC8vIE9uIE1hYywgbGVhayBhIGJvb3N0IG9udG8gdGhlIE5ldHdvcmtQcm9jZXNzLgogICAgIHJl
dHVybiBsYXVuY2hPcHRpb25zLnByb2Nlc3NUeXBlID09IFByb2Nlc3NMYXVuY2hlcjo6TmV0d29y
a1Byb2Nlc3M7Ci0jZWxzZQotICAgIFVOVVNFRF9QQVJBTShsYXVuY2hPcHRpb25zKTsKLSAgICBy
ZXR1cm4gZmFsc2U7CiAjZW5kaWYKIH0KICAgICAKQEAgLTQ4MywxMSArNDc2LDkgQEAgc3RhdGlj
IHZvaWQgY3JlYXRlUHJvY2Vzcyhjb25zdCBQcm9jZXNzTAogICAgICAgICBwcm9jZXNzUGF0aCA9
IFt3ZWJLaXRCdW5kbGUgcGF0aEZvckF1eGlsaWFyeUV4ZWN1dGFibGU6QCJQbHVnaW5Qcm9jZXNz
LmFwcCJdOwogICAgICAgICBicmVhazsKICNlbmRpZgotI2lmIEVOQUJMRShORVRXT1JLX1BST0NF
U1MpCiAgICAgY2FzZSBQcm9jZXNzTGF1bmNoZXI6Ok5ldHdvcmtQcm9jZXNzOgogICAgICAgICBw
cm9jZXNzUGF0aCA9IFt3ZWJLaXRCdW5kbGUgcGF0aEZvckF1eGlsaWFyeUV4ZWN1dGFibGU6QCJO
ZXR3b3JrUHJvY2Vzcy5hcHAiXTsKICAgICAgICAgYnJlYWs7Ci0jZW5kaWYKICNpZiBFTkFCTEUo
REFUQUJBU0VfUFJPQ0VTUykKICAgICBjYXNlIFByb2Nlc3NMYXVuY2hlcjo6RGF0YWJhc2VQcm9j
ZXNzOgogICAgICAgICBwcm9jZXNzUGF0aCA9IFt3ZWJLaXRCdW5kbGUgcGF0aEZvckF1eGlsaWFy
eUV4ZWN1dGFibGU6QCJEYXRhYmFzZVByb2Nlc3MuYXBwIl07CkluZGV4OiBTb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNw
cAkocmV2aXNpb24gMTkyNjAxKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL05ldHdvcmsv
TmV0d29ya1Byb2Nlc3NQcm94eS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2LDggKzI2LDYgQEAK
ICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJOZXR3b3JrUHJvY2Vzc1Byb3h5LmgiCiAK
LSNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQotCiAjaW5jbHVkZSAiQXV0aGVudGljYXRpb25D
aGFsbGVuZ2VQcm94eS5oIgogI2luY2x1ZGUgIkN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5TWVz
c2FnZXMuaCIKICNpbmNsdWRlICJEb3dubG9hZFByb3h5TWVzc2FnZXMuaCIKQEAgLTM3Nyw1ICsz
NzUsMyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OnNldElzSG9sZGluZ0xvCiB9CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYktpdAotCi0jZW5kaWYgLy8gRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykK
SW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJv
eHkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTmV0d29yay9OZXR3
b3JrUHJvY2Vzc1Byb3h5LmgJKHJldmlzaW9uIDE5MjYwMSkKKysrIFNvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaAkod29ya2luZyBjb3B5KQpAQCAt
MjYsOCArMjYsNiBAQAogI2lmbmRlZiBOZXR3b3JrUHJvY2Vzc1Byb3h5X2gKICNkZWZpbmUgTmV0
d29ya1Byb2Nlc3NQcm94eV9oCiAKLSNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQotCiAjaW5j
bHVkZSAiQ2hpbGRQcm9jZXNzUHJveHkuaCIKICNpbmNsdWRlICJDdXN0b21Qcm90b2NvbE1hbmFn
ZXJQcm94eS5oIgogI2luY2x1ZGUgIlByb2Nlc3NMYXVuY2hlci5oIgpAQCAtMTMyLDYgKzEzMCw0
IEBAIHByaXZhdGU6CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCi0jZW5kaWYgLy8gRU5BQkxF
KE5FVFdPUktfUFJPQ0VTUykKLQogI2VuZGlmIC8vIE5ldHdvcmtQcm9jZXNzUHJveHlfaApJbmRl
eDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5t
ZXNzYWdlcy5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTmV0d29y
ay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluCShyZXZpc2lvbiAxOTI2MDEpCisrKyBT
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lm1lc3Nh
Z2VzLmluCSh3b3JraW5nIGNvcHkpCkBAIC0yMCw4ICsyMCw2IEBACiAjIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCiAjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAKLSNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQotCiBt
ZXNzYWdlcyAtPiBOZXR3b3JrUHJvY2Vzc1Byb3h5IExlZ2FjeVJlY2VpdmVyIHsKICAgICBEaWRD
cmVhdGVOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyhJUEM6OkF0dGFjaG1lbnQgY29ubmVj
dGlvbklkZW50aWZpZXIpCiAKQEAgLTM5LDUgKzM3LDMgQEAgbWVzc2FnZXMgLT4gTmV0d29ya1By
b2Nlc3NQcm94eSBMZWdhY3lSZQogICAgIExvZ1NhbXBsZWREaWFnbm9zdGljTWVzc2FnZVdpdGhS
ZXN1bHQodWludDY0X3QgcGFnZUlELCBTdHJpbmcgbWVzc2FnZSwgU3RyaW5nIGRlc2NyaXB0aW9u
LCB1aW50MzJfdCByZXN1bHQpCiAgICAgTG9nU2FtcGxlZERpYWdub3N0aWNNZXNzYWdlV2l0aFZh
bHVlKHVpbnQ2NF90IHBhZ2VJRCwgU3RyaW5nIG1lc3NhZ2UsIFN0cmluZyBkZXNjcmlwdGlvbiwg
U3RyaW5nIHZhbHVlKQogfQotCi0jZW5kaWYgLy8gRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9OZXR3b3JrL21hYy9OZXR3b3JrUHJvY2Vzc1By
b3h5TWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9OZXR3b3Jr
L21hYy9OZXR3b3JrUHJvY2Vzc1Byb3h5TWFjLm1tCShyZXZpc2lvbiAxOTI2MDEpCisrKyBTb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvTmV0d29yay9tYWMvTmV0d29ya1Byb2Nlc3NQcm94eU1hYy5t
bQkod29ya2luZyBjb3B5KQpAQCAtMjgsOCArMjgsNiBAQAogCiAjaW1wb3J0ICJOZXR3b3JrUHJv
Y2Vzc01lc3NhZ2VzLmgiCiAKLSNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQotCiB1c2luZyBu
YW1lc3BhY2UgV2ViQ29yZTsKIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC01OSw1ICs1NywzIEBA
IHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6cGxhdGZvcm1HZXRMYXUKIH0KIAogfSAvLyBuYW1l
c3BhY2UgV2ViS2l0Ci0KLSNlbmRpZiAvLyBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQpJbmRleDog
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJz
aXRlRGF0YVN0b3JlLmNwcAkocmV2aXNpb24gMTkyNjAxKQorKysgU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC05NCwxMiArOTQsMTAgQEAgV2Vic2l0ZURhdGFTdG9yZTo6fldlYnNpdGVEYXRhU3RvcmUoKQog
ewogICAgIHBsYXRmb3JtRGVzdHJveSgpOwogCi0jaWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykK
ICAgICBpZiAobV9zZXNzaW9uSUQuaXNFcGhlbWVyYWwoKSkgewogICAgICAgICBmb3IgKGF1dG8m
IHByb2Nlc3NQb29sIDogV2ViUHJvY2Vzc1Bvb2w6OmFsbFByb2Nlc3NQb29scygpKQogICAgICAg
ICAgICAgcHJvY2Vzc1Bvb2wtPnNlbmRUb05ldHdvcmtpbmdQcm9jZXNzKE1lc3NhZ2VzOjpOZXR3
b3JrUHJvY2Vzczo6RGVzdHJveVByaXZhdGVCcm93c2luZ1Nlc3Npb24obV9zZXNzaW9uSUQpKTsK
ICAgICB9Ci0jZW5kaWYKIH0KIAogdm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpjbG9uZVNlc3Npb25E
YXRhKFdlYlBhZ2VQcm94eSYgc291cmNlUGFnZSwgV2ViUGFnZVByb3h5JiBuZXdQYWdlKQpJbmRl
eDogU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agkocmV2aXNpb24gMTkyNjAxKQorKysgU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0xNDYwLDcgKzE0NjAsNiBAQAogCQlC
QzU3NTA5ODEyNjhGM0M2MDA2RjBGMTIgLyogV2ViUG9wdXBNZW51UHJveHlNYWMubW0gaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzU3NTA5NjEyNjhGM0M2
MDA2RjBGMTIgLyogV2ViUG9wdXBNZW51UHJveHlNYWMubW0gKi87IH07CiAJCUJDNTc1NjEzMTI2
RTAxMzgwMDZGMEYxMiAvKiBBUElFcnJvci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBCQzU3NTYxMjEyNkUwMTM4MDA2RjBGMTIgLyogQVBJRXJyb3Iu
Y3BwICovOyB9OwogCQlCQzU5NTQ4OTE1Qzc4Njg1MDBGRDFFM0UgLyogV2ViS2l0Mi5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkM1OTU0ODgxNUM3ODY4
NTAwRkQxRTNFIC8qIFdlYktpdDIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwotCQlCQzU5NzA3NTExNjU5MUQwMDA1NTFGQ0EgLyogUHJvY2Vzc01vZGVs
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzU5NzA3
NDExNjU5MUQwMDA1NTFGQ0EgLyogUHJvY2Vzc01vZGVsLmggKi87IH07CiAJCUJDNUM3NUM4MTQ5
NTREQTYwMEJDNDc3NSAvKiBXS0Nvbm5lY3Rpb25JbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkM1Qzc1QzYxNDk1NERBNjAwQkM0Nzc1IC8q
IFdLQ29ubmVjdGlvbkludGVybmFsLmggKi87IH07CiAJCUJDNUQyNEExMTZDQzNCOUUwMDdENTQ2
MSAvKiBDaGlsZFByb2Nlc3NNYWluLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQkM1RDI0OUYxNkNDM0I5RTAwN0Q1NDYxIC8qIENoaWxkUHJvY2Vzc01h
aW4ubW0gKi87IH07CiAJCUJDNUQyNEEyMTZDQzNCOUUwMDdENTQ2MSAvKiBDaGlsZFByb2Nlc3NN
YWluLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkM1
RDI0OUYxNkNDM0I5RTAwN0Q1NDYxIC8qIENoaWxkUHJvY2Vzc01haW4ubW0gKi87IH07CkBAIC0z
NzMyLDcgKzM3MzEsNiBAQAogCQlCQzU3NTA5NjEyNjhGM0M2MDA2RjBGMTIgLyogV2ViUG9wdXBN
ZW51UHJveHlNYWMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBX
ZWJQb3B1cE1lbnVQcm94eU1hYy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkM1
NzU2MTIxMjZFMDEzODAwNkYwRjEyIC8qIEFQSUVycm9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IEFQSUVycm9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJQkM1OTU0ODgxNUM3ODY4NTAwRkQxRTNFIC8qIFdlYktpdDIuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViS2l0Mi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwotCQlCQzU5NzA3NDExNjU5MUQwMDA1NTFGQ0EgLyogUHJvY2Vzc01vZGVsLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFByb2Nlc3NNb2RlbC5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlCQzVDNzVDNjE0OTU0REE2MDBCQzQ3NzUgLyogV0tDb25uZWN0aW9uSW50
ZXJuYWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tDb25uZWN0aW9uSW50
ZXJuYWwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkM1RDI0OUYxNkNDM0I5RTAw
N0Q1NDYxIC8qIENoaWxkUHJvY2Vzc01haW4ubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5v
YmpjcHA7IHBhdGggPSBDaGlsZFByb2Nlc3NNYWluLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlCQzVEMjRCODE2Q0M0MEJCMDA3RDU0NjEgLyogQmFzZUxlZ2FjeVByb2Nlc3MueGNj
b25maWcgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0
ZXh0LnhjY29uZmlnOyBwYXRoID0gQmFzZUxlZ2FjeVByb2Nlc3MueGNjb25maWc7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CkBAIC02MjM4LDcgKzYyMzYsNiBAQAogCQkJCTFBQzc1MzdBMTgz
QTlGREIwMDcyQ0IxNSAvKiBQYWdlTG9hZFN0YXRlLmggKi8sCiAJCQkJMzc3MTZBNTkxOTVCOTEw
NTAwRUU4QjFCIC8qIFByb2Nlc3NBc3NlcnRpb24uY3BwICovLAogCQkJCTg2Rjk1MzYwMThGRjRG
RDQwMDFEQjJFRiAvKiBQcm9jZXNzQXNzZXJ0aW9uLmggKi8sCi0JCQkJQkM1OTcwNzQxMTY1OTFE
MDAwNTUxRkNBIC8qIFByb2Nlc3NNb2RlbC5oICovLAogCQkJCTg2RTY3QTIyMTkwRjQxMTgwMDAw
NEFCNyAvKiBQcm9jZXNzVGhyb3R0bGVyLmNwcCAqLywKIAkJCQk4NkU2N0EyMTE5MEY0MTE4MDAw
MDRBQjcgLyogUHJvY2Vzc1Rocm90dGxlci5oICovLAogCQkJCTgzMDQ4QUU1MUFDQTQ1REMwMDgy
QzgzMiAvKiBQcm9jZXNzVGhyb3R0bGVyQ2xpZW50LmggKi8sCkBAIC03OTg5LDcgKzc5ODYsNiBA
QAogCQkJCUUxQ0MxQjkwMTJEN0VBREYwMDYyNTgzOCAvKiBQcmludEluZm8uaCBpbiBIZWFkZXJz
ICovLAogCQkJCTg2Rjk1MzY1MThGRjU4RjUwMDFEQjJFRiAvKiBQcm9jZXNzQXNzZXJ0aW9uLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlCQzFBN0M1ODExMzZFMTlDMDBGQjcxNjcgLyogUHJvY2Vzc0xh
dW5jaGVyLmggaW4gSGVhZGVycyAqLywKLQkJCQlCQzU5NzA3NTExNjU5MUQwMDA1NTFGQ0EgLyog
UHJvY2Vzc01vZGVsLmggaW4gSGVhZGVycyAqLywKIAkJCQk4NkU2N0EyNTE5MTBCOUQxMDAwMDRB
QjcgLyogUHJvY2Vzc1Rocm90dGxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODMwNDhBRTYxQUNB
NDVEQzAwODJDODMyIC8qIFByb2Nlc3NUaHJvdHRsZXJDbGllbnQuaCBpbiBIZWFkZXJzICovLAog
CQkJCTJEN0YxMzEwMUE3MDJGQkEwMDlBNkZCRCAvKiBQcm9jZXNzVHlwZS5oIGluIEhlYWRlcnMg
Ki8sCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAJKHJldmlz
aW9uIDE5MjYwMSkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTM3LDYgKzM3LDcgQEAKICNpbmNsdWRlICJJbmplY3RlZEJ1bmRs
ZS5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJOZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2Vzc01lc3NhZ2VzLmgiCisjaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9u
LmgiCiAjaW5jbHVkZSAiUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25NYW5hZ2VyLmgiCiAjaW5jbHVk
ZSAiU2Vzc2lvblRyYWNrZXIuaCIKICNpbmNsdWRlICJTdGF0aXN0aWNzRGF0YS5oIgpAQCAtNjAs
NiArNjEsNyBAQAogI2luY2x1ZGUgIldlYlByb2Nlc3NNZXNzYWdlcy5oIgogI2luY2x1ZGUgIldl
YlByb2Nlc3NQb29sTWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzUHJveHlNZXNzYWdl
cy5oIgorI2luY2x1ZGUgIldlYlJlc291cmNlTG9hZFNjaGVkdWxlci5oIgogI2luY2x1ZGUgIldl
YnNpdGVEYXRhLmgiCiAjaW5jbHVkZSAiV2Vic2l0ZURhdGFUeXBlcy5oIgogI2luY2x1ZGUgPEph
dmFTY3JpcHRDb3JlL0pTTG9jay5oPgpAQCAtMTAxLDEyICsxMDMsOSBAQAogI2luY2x1ZGUgIk9i
akNPYmplY3RHcmFwaC5oIgogI2VuZGlmCiAKLSNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQog
I2lmIFBMQVRGT1JNKENPQ09BKQogI2luY2x1ZGUgIkNvb2tpZVN0b3JhZ2VTaGltLmgiCiAjZW5k
aWYKLSNpbmNsdWRlICJOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uaCIKLSNlbmRpZgogCiAjaWYg
RU5BQkxFKFNFQ19JVEVNX1NISU0pCiAjaW5jbHVkZSAiU2VjSXRlbVNoaW0uaCIKQEAgLTEyNCwx
MCArMTIzLDYgQEAKICNpbmNsdWRlICJXZWJCYXR0ZXJ5TWFuYWdlci5oIgogI2VuZGlmCiAKLSNp
ZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQotI2luY2x1ZGUgIldlYlJlc291cmNlTG9hZFNjaGVk
dWxlci5oIgotI2VuZGlmCi0KICNpZiBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKICNpbmNsdWRl
IDxKYXZhU2NyaXB0Q29yZS9SZW1vdGVJbnNwZWN0b3IuaD4KICNlbmRpZgpAQCAtMTYxLDExICsx
NTYsOCBAQCBXZWJQcm9jZXNzOjpXZWJQcm9jZXNzKCkKICAgICAsIG1fZnVsbEtleWJvYXJkQWNj
ZXNzRW5hYmxlZChmYWxzZSkKICAgICAsIG1fdGV4dENoZWNrZXJTdGF0ZSgpCiAgICAgLCBtX2lj
b25EYXRhYmFzZVByb3h5KG5ldyBXZWJJY29uRGF0YWJhc2VQcm94eSh0aGlzKSkKLSNpZiBFTkFC
TEUoTkVUV09SS19QUk9DRVNTKQotICAgICwgbV91c2VzTmV0d29ya1Byb2Nlc3MoZmFsc2UpCiAg
ICAgLCBtX3dlYlJlc291cmNlTG9hZFNjaGVkdWxlcihuZXcgV2ViUmVzb3VyY2VMb2FkU2NoZWR1
bGVyKQogICAgICwgbV9kbnNQcmVmZXRjaEh5c3RlcmVyaXMoW3RoaXNdKEh5c3RlcmVzaXNTdGF0
ZSBzdGF0ZSkgeyBpZiAoc3RhdGUgPT0gSHlzdGVyZXNpc1N0YXRlOjpTdG9wcGVkKSBtX2Ruc1By
ZWZldGNoZWRIb3N0cy5jbGVhcigpOyB9KQotI2VuZGlmCiAjaWYgRU5BQkxFKE5FVFNDQVBFX1BM
VUdJTl9BUEkpCiAgICAgLCBtX3BsdWdpblByb2Nlc3NDb25uZWN0aW9uTWFuYWdlcihQbHVnaW5Q
cm9jZXNzQ29ubmVjdGlvbk1hbmFnZXI6OmNyZWF0ZSgpKQogI2VuZGlmCkBAIC0yNTIsMzQgKzI0
NCwxMCBAQCB2b2lkIFdlYlByb2Nlc3M6OmluaXRpYWxpemVDb25uZWN0aW9uKElQCiAgICAgY29u
bmVjdGlvbi0+c2V0T25seVNlbmRNZXNzYWdlc0FzRGlzcGF0Y2hXaGVuV2FpdGluZ0ZvclN5bmNS
ZXBseVdoZW5Qcm9jZXNzaW5nU3VjaEFNZXNzYWdlKHRydWUpOwogfQogCi12b2lkIFdlYlByb2Nl
c3M6OmRpZENyZWF0ZURvd25sb2FkKCkKLXsKLSAgICBkaXNhYmxlVGVybWluYXRpb24oKTsKLX0K
LQotdm9pZCBXZWJQcm9jZXNzOjpkaWREZXN0cm95RG93bmxvYWQoKQotewotICAgIGVuYWJsZVRl
cm1pbmF0aW9uKCk7Ci19Ci0KLUlQQzo6Q29ubmVjdGlvbiogV2ViUHJvY2Vzczo6ZG93bmxvYWRQ
cm94eUNvbm5lY3Rpb24oKQotewotICAgIHJldHVybiBwYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigp
OwotfQotCi1BdXRoZW50aWNhdGlvbk1hbmFnZXImIFdlYlByb2Nlc3M6OmRvd25sb2Fkc0F1dGhl
bnRpY2F0aW9uTWFuYWdlcigpCi17Ci0gICAgcmV0dXJuICpzdXBwbGVtZW50PEF1dGhlbnRpY2F0
aW9uTWFuYWdlcj4oKTsKLX0KLQogdm9pZCBXZWJQcm9jZXNzOjppbml0aWFsaXplV2ViUHJvY2Vz
cyhXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzJiYgcGFyYW1ldGVycykKIHsKICAgICBBU1NF
UlQobV9wYWdlTWFwLmlzRW1wdHkoKSk7CiAKLSNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQot
ICAgIG1fdXNlc05ldHdvcmtQcm9jZXNzID0gcGFyYW1ldGVycy51c2VzTmV0d29ya1Byb2Nlc3M7
Ci0jZW5kaWYKLQogI2lmIE9TKExJTlVYKQogICAgIFdlYkNvcmU6Ok1lbW9yeVByZXNzdXJlSGFu
ZGxlcjo6UmVsaWVmTG9nZ2VyOjpzZXRMb2dnaW5nRW5hYmxlZChwYXJhbWV0ZXJzLnNob3VsZEVu
YWJsZU1lbW9yeVByZXNzdXJlUmVsaWVmTG9nZ2luZyk7CiAjZW5kaWYKQEAgLTM1OCwxMyArMzI2
LDEwIEBAIHZvaWQgV2ViUHJvY2Vzczo6aW5pdGlhbGl6ZVdlYlByb2Nlc3MoV2UKICAgICBpZiAo
cGFyYW1ldGVycy5zaG91bGRVc2VUZXN0aW5nTmV0d29ya1Nlc3Npb24pCiAgICAgICAgIE5ldHdv
cmtTdG9yYWdlU2Vzc2lvbjo6c3dpdGNoVG9OZXdUZXN0aW5nU2Vzc2lvbigpOwogCi0jaWYgRU5B
QkxFKE5FVFdPUktfUFJPQ0VTUykKICAgICBlbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24o
KTsKIAogI2lmIFBMQVRGT1JNKENPQ09BKQotICAgIGlmICh1c2VzTmV0d29ya1Byb2Nlc3MoKSkK
LSAgICAgICAgQ29va2llU3RvcmFnZVNoaW06OnNpbmdsZXRvbigpLmluaXRpYWxpemUoKTsKLSNl
bmRpZgorICAgIENvb2tpZVN0b3JhZ2VTaGltOjpzaW5nbGV0b24oKS5pbml0aWFsaXplKCk7CiAj
ZW5kaWYKICAgICBzZXRUZXJtaW5hdGlvblRpbWVvdXQocGFyYW1ldGVycy50ZXJtaW5hdGlvblRp
bWVvdXQpOwogCkBAIC0zOTYsMTIgKzM2MSw4IEBAIHZvaWQgV2ViUHJvY2Vzczo6aW5pdGlhbGl6
ZVdlYlByb2Nlc3MoV2UKICNlbmRpZgogfQogCi0jaWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykK
IHZvaWQgV2ViUHJvY2Vzczo6ZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkKIHsKLSAg
ICBpZiAoIW1fdXNlc05ldHdvcmtQcm9jZXNzKQotICAgICAgICByZXR1cm47Ci0KICAgICBpZiAo
bV9uZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24pCiAgICAgICAgIHJldHVybjsKIApAQCAtNDIyLDcg
KzM4Myw2IEBAIHZvaWQgV2ViUHJvY2Vzczo6ZW5zdXJlTmV0d29ya1Byb2Nlc3NDb24KICAgICAg
ICAgcmV0dXJuOwogICAgIG1fbmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uID0gTmV0d29ya1Byb2Nl
c3NDb25uZWN0aW9uOjpjcmVhdGUoY29ubmVjdGlvbklkZW50aWZpZXIpOwogfQotI2VuZGlmIC8v
IEVOQUJMRShORVRXT1JLX1BST0NFU1MpCiAKIHZvaWQgV2ViUHJvY2Vzczo6cmVnaXN0ZXJVUkxT
Y2hlbWVBc0VtcHR5RG9jdW1lbnQoY29uc3QgU3RyaW5nJiB1cmxTY2hlbWUpCiB7CkBAIC01MTEs
MTQgKzQ3MSw2IEBAIHZvaWQgV2ViUHJvY2Vzczo6ZGVzdHJveVByaXZhdGVCcm93c2luZ1MKICNl
bmRpZgogfQogCi1Eb3dubG9hZE1hbmFnZXImIFdlYlByb2Nlc3M6OmRvd25sb2FkTWFuYWdlcigp
Ci17Ci0gICAgQVNTRVJUKCF1c2VzTmV0d29ya1Byb2Nlc3MoKSk7Ci0KLSAgICBzdGF0aWMgTmV2
ZXJEZXN0cm95ZWQ8RG93bmxvYWRNYW5hZ2VyPiBkb3dubG9hZE1hbmFnZXIodGhpcyk7Ci0gICAg
cmV0dXJuIGRvd25sb2FkTWFuYWdlcjsKLX0KLQogI2lmIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5f
QVBJKQogUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25NYW5hZ2VyJiBXZWJQcm9jZXNzOjpwbHVnaW5Q
cm9jZXNzQ29ubmVjdGlvbk1hbmFnZXIoKQogewpAQCAtNTgxLDcgKzUzMyw2IEBAIHZvaWQgV2Vi
UHJvY2Vzczo6cmVtb3ZlV2ViUGFnZSh1aW50NjRfdCAKIGJvb2wgV2ViUHJvY2Vzczo6c2hvdWxk
VGVybWluYXRlKCkKIHsKICAgICBBU1NFUlQobV9wYWdlTWFwLmlzRW1wdHkoKSk7Ci0gICAgQVNT
RVJUKHVzZXNOZXR3b3JrUHJvY2VzcygpIHx8ICFkb3dubG9hZE1hbmFnZXIoKS5pc0Rvd25sb2Fk
aW5nKCkpOwogCiAgICAgLy8gRklYTUU6IHRoZSBTaG91bGRUZXJtaW5hdGUgbWVzc2FnZSBzaG91
bGQgYWxzbyBzZW5kIHRlcm1pbmF0aW9uIHBhcmFtZXRlcnMsIHN1Y2ggYXMgYW55IHNlc3Npb24g
Y29va2llcyB0aGF0IG5lZWQgdG8gYmUgcHJlc2VydmVkLgogICAgIGJvb2wgc2hvdWxkVGVybWlu
YXRlID0gZmFsc2U7CkBAIC0xMDI1LDIwICs5NzYsOCBAQCB2b2lkIFdlYlByb2Nlc3M6OnNldElu
amVjdGVkQnVuZGxlUGFyYW1lCiAgICAgaW5qZWN0ZWRCdW5kbGUtPnNldEJ1bmRsZVBhcmFtZXRl
cnModmFsdWUpOwogfQogCi1ib29sIFdlYlByb2Nlc3M6OnVzZXNOZXR3b3JrUHJvY2VzcygpIGNv
bnN0Ci17Ci0jaWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKLSAgICByZXR1cm4gbV91c2VzTmV0
d29ya1Byb2Nlc3M7Ci0jZWxzZQotICAgIHJldHVybiBmYWxzZTsKLSNlbmRpZgotfQotCi0jaWYg
RU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKIE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbiogV2ViUHJv
Y2Vzczo6bmV0d29ya0Nvbm5lY3Rpb24oKQogewotICAgIEFTU0VSVChtX3VzZXNOZXR3b3JrUHJv
Y2Vzcyk7Ci0KICAgICAvLyBJZiB3ZSd2ZSBsb3N0IG91ciBjb25uZWN0aW9uIHRvIHRoZSBuZXR3
b3JrIHByb2Nlc3MgKGUuZy4gaXQgY3Jhc2hlZCkgdHJ5IHRvIHJlLWVzdGFibGlzaCBpdC4KICAg
ICBpZiAoIW1fbmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKQogICAgICAgICBlbnN1cmVOZXR3b3Jr
UHJvY2Vzc0Nvbm5lY3Rpb24oKTsKQEAgLTEwNjQsNyArMTAwMyw2IEBAIFdlYlJlc291cmNlTG9h
ZFNjaGVkdWxlciYgV2ViUHJvY2Vzczo6d2UKIHsKICAgICByZXR1cm4gKm1fd2ViUmVzb3VyY2VM
b2FkU2NoZWR1bGVyOwogfQotI2VuZGlmIC8vIEVOQUJMRUQoTkVUV09SS19QUk9DRVNTKQogCiAj
aWYgRU5BQkxFKERBVEFCQVNFX1BST0NFU1MpCiB2b2lkIFdlYlByb2Nlc3M6OndlYlRvRGF0YWJh
c2VQcm9jZXNzQ29ubmVjdGlvbkNsb3NlZChXZWJUb0RhdGFiYXNlUHJvY2Vzc0Nvbm5lY3Rpb24q
IGNvbm5lY3Rpb24pCkBAIC0xMTA4LDI3ICsxMDQ2LDYgQEAgdm9pZCBXZWJQcm9jZXNzOjplbnN1
cmVXZWJUb0RhdGFiYXNlUHJvYwogCiAjZW5kaWYgLy8gRU5BQkxFRChEQVRBQkFTRV9QUk9DRVNT
KQogCi12b2lkIFdlYlByb2Nlc3M6OmRvd25sb2FkUmVxdWVzdChTZXNzaW9uSUQgc2Vzc2lvbklE
LCB1aW50NjRfdCBkb3dubG9hZElELCB1aW50NjRfdCBpbml0aWF0aW5nUGFnZUlELCBjb25zdCBS
ZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCi17Ci0gICAgV2ViUGFnZSogaW5pdGlhdGluZ1BhZ2Ug
PSBpbml0aWF0aW5nUGFnZUlEID8gd2ViUGFnZShpbml0aWF0aW5nUGFnZUlEKSA6IDA7Ci0KLSAg
ICBSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdFdpdGhPcmlnaW5hbFVSTCA9IHJlcXVlc3Q7Ci0gICAg
aWYgKGluaXRpYXRpbmdQYWdlKQotICAgICAgICBpbml0aWF0aW5nUGFnZS0+bWFpbkZyYW1lKCkt
PmxvYWRlcigpLnNldE9yaWdpbmFsVVJMRm9yRG93bmxvYWRSZXF1ZXN0KHJlcXVlc3RXaXRoT3Jp
Z2luYWxVUkwpOwotCi0gICAgZG93bmxvYWRNYW5hZ2VyKCkuc3RhcnREb3dubG9hZChzZXNzaW9u
SUQsIGRvd25sb2FkSUQsIHJlcXVlc3RXaXRoT3JpZ2luYWxVUkwpOwotfQotCi12b2lkIFdlYlBy
b2Nlc3M6OnJlc3VtZURvd25sb2FkKHVpbnQ2NF90IGRvd25sb2FkSUQsIGNvbnN0IElQQzo6RGF0
YVJlZmVyZW5jZSYgcmVzdW1lRGF0YSwgY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBXZWJLaXQ6
OlNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYgc2FuZGJveEV4dGVuc2lvbkhhbmRsZSkKLXsKLSAg
ICBkb3dubG9hZE1hbmFnZXIoKS5yZXN1bWVEb3dubG9hZChkb3dubG9hZElELCByZXN1bWVEYXRh
LCBwYXRoLCBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlKTsKLX0KLQotdm9pZCBXZWJQcm9jZXNzOjpj
YW5jZWxEb3dubG9hZCh1aW50NjRfdCBkb3dubG9hZElEKQotewotICAgIGRvd25sb2FkTWFuYWdl
cigpLmNhbmNlbERvd25sb2FkKGRvd25sb2FkSUQpOwotfQotCiB2b2lkIFdlYlByb2Nlc3M6OnNl
dEVuaGFuY2VkQWNjZXNzaWJpbGl0eShib29sIGZsYWcpCiB7CiAgICAgV2ViQ29yZTo6QVhPYmpl
Y3RDYWNoZTo6c2V0RW5oYW5jZWRVc2VySW50ZXJmYWNlQWNjZXNzaWJpbGl0eShmbGFnKTsKQEAg
LTE0NzAsMTggKzEzODcsMTIgQEAgdm9pZCBXZWJQcm9jZXNzOjpwcmVmZXRjaEROUyhjb25zdCBT
dHJpbgogICAgIGlmIChob3N0bmFtZS5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKIAotI2lm
IEVOQUJMRShORVRXT1JLX1BST0NFU1MpCi0gICAgaWYgKHVzZXNOZXR3b3JrUHJvY2VzcygpKSB7
Ci0gICAgICAgIGlmIChtX2Ruc1ByZWZldGNoZWRIb3N0cy5hZGQoaG9zdG5hbWUpLmlzTmV3RW50
cnkpCi0gICAgICAgICAgICBuZXR3b3JrQ29ubmVjdGlvbigpLT5jb25uZWN0aW9uKCktPnNlbmQo
TWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpQcmVmZXRjaEROUyhob3N0
bmFtZSksIDApOwotICAgICAgICAvLyBUaGUgRE5TIHByZWZldGNoZWQgaG9zdHMgY2FjaGUgaXMg
b25seSB0byBhdm9pZCBhc2tpbmcgZm9yIHRoZSBzYW1lIGhvc3RzIHRvbyBtYW55IHRpbWVzCi0g
ICAgICAgIC8vIGluIGEgdmVyeSBzaG9ydCBwZXJpb2Qgb2YgdGltZSwgcHJvZHVjaW5nIGEgbG90
IG9mIElQQyB0cmFmZmljLiBTbyB3ZSBjbGVhciB0aGlzIGNhY2hlIGFmdGVyCi0gICAgICAgIC8v
IHNvbWUgdGltZSBvZiBubyBETlMgcmVxdWVzdHMuCi0gICAgICAgIG1fZG5zUHJlZmV0Y2hIeXN0
ZXJlcmlzLmltcHVsc2UoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSNlbmRpZgotICAgIFdl
YkNvcmU6OnByZWZldGNoRE5TKGhvc3RuYW1lKTsKKyAgICBpZiAobV9kbnNQcmVmZXRjaGVkSG9z
dHMuYWRkKGhvc3RuYW1lKS5pc05ld0VudHJ5KQorICAgICAgICBuZXR3b3JrQ29ubmVjdGlvbigp
LT5jb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzOjpQcmVmZXRjaEROUyhob3N0bmFtZSksIDApOworICAgIC8vIFRoZSBETlMgcHJlZmV0Y2hl
ZCBob3N0cyBjYWNoZSBpcyBvbmx5IHRvIGF2b2lkIGFza2luZyBmb3IgdGhlIHNhbWUgaG9zdHMg
dG9vIG1hbnkgdGltZXMKKyAgICAvLyBpbiBhIHZlcnkgc2hvcnQgcGVyaW9kIG9mIHRpbWUsIHBy
b2R1Y2luZyBhIGxvdCBvZiBJUEMgdHJhZmZpYy4gU28gd2UgY2xlYXIgdGhpcyBjYWNoZSBhZnRl
cgorICAgIC8vIHNvbWUgdGltZSBvZiBubyBETlMgcmVxdWVzdHMuCisgICAgbV9kbnNQcmVmZXRj
aEh5c3RlcmVyaXMuaW1wdWxzZSgpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKSW5kZXg6
IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCShyZXZpc2lvbiAxOTI2MDEpCisr
KyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaAkod29ya2luZyBjb3B5KQpA
QCAtMjgsNyArMjgsNiBAQAogCiAjaW5jbHVkZSAiQ2FjaGVNb2RlbC5oIgogI2luY2x1ZGUgIkNo
aWxkUHJvY2Vzcy5oIgotI2luY2x1ZGUgIkRvd25sb2FkTWFuYWdlci5oIgogI2luY2x1ZGUgIkRy
YXdpbmdBcmVhLmgiCiAjaW5jbHVkZSAiUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25NYW5hZ2VyLmgi
CiAjaW5jbHVkZSAiUmVzb3VyY2VDYWNoZXNUb0NsZWFyLmgiCkBAIC03MSw5ICs3MCw5IEBAIHN0
cnVjdCBTZWN1cml0eU9yaWdpbkRhdGE7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1jbGFzcyBE
b3dubG9hZE1hbmFnZXI7CiBjbGFzcyBFdmVudERpc3BhdGNoZXI7CiBjbGFzcyBJbmplY3RlZEJ1
bmRsZTsKK2NsYXNzIE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbjsKIGNsYXNzIE9iakNPYmplY3RH
cmFwaDsKIGNsYXNzIFVzZXJEYXRhOwogY2xhc3MgV2ViQ29ubmVjdGlvblRvVUlQcm9jZXNzOwpA
QCAtODIsMjIgKzgxLDE3IEBAIGNsYXNzIFdlYkljb25EYXRhYmFzZVByb3h5OwogY2xhc3MgV2Vi
UGFnZTsKIGNsYXNzIFdlYlBhZ2VHcm91cFByb3h5OwogY2xhc3MgV2ViUHJvY2Vzc1N1cHBsZW1l
bnQ7CitjbGFzcyBXZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXI7CiBzdHJ1Y3QgV2ViUGFnZUNyZWF0
aW9uUGFyYW1ldGVyczsKIHN0cnVjdCBXZWJQYWdlR3JvdXBEYXRhOwogc3RydWN0IFdlYlByZWZl
cmVuY2VzU3RvcmU7CiBzdHJ1Y3QgV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyczsKIAotI2lm
IEVOQUJMRShORVRXT1JLX1BST0NFU1MpCi1jbGFzcyBOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb247
Ci1jbGFzcyBXZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXI7Ci0jZW5kaWYKLQogI2lmIEVOQUJMRShE
QVRBQkFTRV9QUk9DRVNTKQogY2xhc3MgV2ViVG9EYXRhYmFzZVByb2Nlc3NDb25uZWN0aW9uOwog
I2VuZGlmCiAKLWNsYXNzIFdlYlByb2Nlc3MgOiBwdWJsaWMgQ2hpbGRQcm9jZXNzLCBwcml2YXRl
IERvd25sb2FkTWFuYWdlcjo6Q2xpZW50IHsKLSAgICBmcmllbmQgY2xhc3MgTmV2ZXJEZXN0cm95
ZWQ8RG93bmxvYWRNYW5hZ2VyPjsKK2NsYXNzIFdlYlByb2Nlc3MgOiBwdWJsaWMgQ2hpbGRQcm9j
ZXNzIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgV2ViUHJvY2VzcyYgc2luZ2xldG9uKCk7CiAKQEAg
LTE0Nyw3ICsxNDEsNiBAQCBwdWJsaWM6CiAjZW5kaWYKICAgICAKICAgICBjb25zdCBUZXh0Q2hl
Y2tlclN0YXRlJiB0ZXh0Q2hlY2tlclN0YXRlKCkgY29uc3QgeyByZXR1cm4gbV90ZXh0Q2hlY2tl
clN0YXRlOyB9Ci0gICAgRG93bmxvYWRNYW5hZ2VyJiBkb3dubG9hZE1hbmFnZXIoKTsKIAogICAg
IHZvaWQgY2xlYXJSZXNvdXJjZUNhY2hlcyhSZXNvdXJjZUNhY2hlc1RvQ2xlYXIgPSBBbGxSZXNv
dXJjZUNhY2hlcyk7CiAgICAgCkBAIC0xNTcsMTMgKzE1MCw5IEBAIHB1YmxpYzoKIAogICAgIEV2
ZW50RGlzcGF0Y2hlciYgZXZlbnREaXNwYXRjaGVyKCkgeyByZXR1cm4gKm1fZXZlbnREaXNwYXRj
aGVyOyB9CiAKLSAgICBib29sIHVzZXNOZXR3b3JrUHJvY2VzcygpIGNvbnN0OwotCi0jaWYgRU5B
QkxFKE5FVFdPUktfUFJPQ0VTUykKICAgICBOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24qIG5ldHdv
cmtDb25uZWN0aW9uKCk7CiAgICAgdm9pZCBuZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb25DbG9zZWQo
TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKik7CiAgICAgV2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVy
JiB3ZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXIoKTsKLSNlbmRpZgogCiAjaWYgRU5BQkxFKERBVEFC
QVNFX1BST0NFU1MpCiAgICAgdm9pZCB3ZWJUb0RhdGFiYXNlUHJvY2Vzc0Nvbm5lY3Rpb25DbG9z
ZWQoV2ViVG9EYXRhYmFzZVByb2Nlc3NDb25uZWN0aW9uKik7CkBAIC0yMjIsMTIgKzIxMSw2IEBA
IHByaXZhdGU6CiAgICAgV2ViUHJvY2VzcygpOwogICAgIH5XZWJQcm9jZXNzKCk7CiAKLSAgICAv
LyBEb3dubG9hZE1hbmFnZXI6OkNsaWVudC4KLSAgICB2aXJ0dWFsIHZvaWQgZGlkQ3JlYXRlRG93
bmxvYWQoKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkRGVzdHJveURvd25sb2FkKCkg
b3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBJUEM6OkNvbm5lY3Rpb24qIGRvd25sb2FkUHJveHlDb25u
ZWN0aW9uKCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBBdXRoZW50aWNhdGlvbk1hbmFnZXImIGRv
d25sb2Fkc0F1dGhlbnRpY2F0aW9uTWFuYWdlcigpIG92ZXJyaWRlOwotCiAgICAgdm9pZCBpbml0
aWFsaXplV2ViUHJvY2VzcyhXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzJiYpOwogICAgIHZv
aWQgcGxhdGZvcm1Jbml0aWFsaXplV2ViUHJvY2VzcyhXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0
ZXJzJiYpOwogCkBAIC0zNTksMTQgKzM0MiwxMSBAQCBwcml2YXRlOgogCiAgICAgV2ViSWNvbkRh
dGFiYXNlUHJveHkqIG1faWNvbkRhdGFiYXNlUHJveHk7CiAKLSNpZiBFTkFCTEUoTkVUV09SS19Q
Uk9DRVNTKQogICAgIHZvaWQgZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCk7CiAgICAg
UmVmUHRyPE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbj4gbV9uZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rp
b247Ci0gICAgYm9vbCBtX3VzZXNOZXR3b3JrUHJvY2VzczsKICAgICBXZWJSZXNvdXJjZUxvYWRT
Y2hlZHVsZXIqIG1fd2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVyOwogICAgIEhhc2hTZXQ8U3RyaW5n
PiBtX2Ruc1ByZWZldGNoZWRIb3N0czsKICAgICBXZWJDb3JlOjpIeXN0ZXJlc2lzQWN0aXZpdHkg
bV9kbnNQcmVmZXRjaEh5c3RlcmVyaXM7Ci0jZW5kaWYKIAogI2lmIEVOQUJMRShEQVRBQkFTRV9Q
Uk9DRVNTKQogICAgIHZvaWQgZW5zdXJlV2ViVG9EYXRhYmFzZVByb2Nlc3NDb25uZWN0aW9uKCk7
CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMuaW4K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3Nh
Z2VzLmluCShyZXZpc2lvbiAxOTI2MDEpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlByb2Nlc3MubWVzc2FnZXMuaW4JKHdvcmtpbmcgY29weSkKQEAgLTYyLDEyICs2Miw2IEBAIG1l
c3NhZ2VzIC0+IFdlYlByb2Nlc3MgTGVnYWN5UmVjZWl2ZXIgewogICAgIHZvaWQgU3RhcnRNZW1v
cnlTYW1wbGVyKFdlYktpdDo6U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlIHNhbXBsZUxvZ0ZpbGVI
YW5kbGUsIFN0cmluZyBzYW1wbGVMb2dGaWxlUGF0aCwgZG91YmxlIGludGVydmFsKTsKICAgICB2
b2lkIFN0b3BNZW1vcnlTYW1wbGVyKCk7CiAKLSAgICAjIERvd25sb2Fkcy4gVGhpcyBzaG91bGQg
cmVhbGx5IGJlIGluIGEgRG93bmxvYWQubWVzc2FnZXMuaW4sIGJ1dCBpdCBzZWVtZWQgdW5uZWNl
c3NhcnkgdG8gY3JlYXRlIGEgbmV3IGZpbGUganVzdCBmb3IKLSAgICAjIHRocmVlIG1lc3NhZ2Vz
LgotICAgIERvd25sb2FkUmVxdWVzdChXZWJDb3JlOjpTZXNzaW9uSUQgc2Vzc2lvbklELCB1aW50
NjRfdCBkb3dubG9hZElELCB1aW50NjRfdCBpbml0aWF0aW5nUGFnZUlELCBXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3QgcmVxdWVzdCkKLSAgICBSZXN1bWVEb3dubG9hZCh1aW50NjRfdCBkb3dubG9h
ZElELCBJUEM6OkRhdGFSZWZlcmVuY2UgcmVzdW1lRGF0YSwgU3RyaW5nIHBhdGgsIFdlYktpdDo6
U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlIHNhbmRib3hFeHRlbnNpb25IYW5kbGUpCi0gICAgQ2Fu
Y2VsRG93bmxvYWQodWludDY0X3QgZG93bmxvYWRJRCkKLQogICAgIFNldFRleHRDaGVja2VyU3Rh
dGUoc3RydWN0IFdlYktpdDo6VGV4dENoZWNrZXJTdGF0ZSB0ZXh0Q2hlY2tlclN0YXRlKQogCiAg
ICAgU2V0RW5oYW5jZWRBY2Nlc3NpYmlsaXR5KGJvb2wgZmxhZykKSW5kZXg6IFNvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvRmlsZUFQSS9CbG9iUmVnaXN0cnlQcm94eS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9GaWxlQVBJL0Jsb2JSZWdpc3RyeVByb3h5LmNw
cAkocmV2aXNpb24gMTkyNjAxKQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9GaWxlQVBJ
L0Jsb2JSZWdpc3RyeVByb3h5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjYsOCArMjYsNiBAQAog
I2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkJsb2JSZWdpc3RyeVByb3h5LmgiCiAKLSNp
ZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQotCiAjaW5jbHVkZSAiTmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3NNZXNzYWdlcy5oIgogI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzQ29ubmVjdGlv
bi5oIgogI2luY2x1ZGUgIldlYkNvcmVBcmd1bWVudENvZGVycy5oIgpAQCAtNDAsOCArMzgsNiBA
QCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogdm9pZCBCbG9iUmVnaXN0cnlQcm94eTo6cmVnaXN0ZXJG
aWxlQmxvYlVSTChjb25zdCBXZWJDb3JlOjpVUkwmIHVybCwgUGFzc1JlZlB0cjxCbG9iRGF0YUZp
bGVSZWZlcmVuY2U+IGZpbGUsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpCiB7Ci0gICAgQVNT
RVJUKFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnVzZXNOZXR3b3JrUHJvY2VzcygpKTsKLQogICAg
IFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSBleHRlbnNpb25IYW5kbGU7CiAKICAgICAvLyBGaWxl
IHBhdGggY2FuIGJlIGVtcHR5IHdoZW4gc3VibWl0dGluZyBhIGZvcm0gZmlsZSBpbnB1dCB3aXRo
b3V0IGEgZmlsZSwgc2VlIGJ1ZyAxMTE3NzguCkBAIC01MywzNiArNDksMjYgQEAgdm9pZCBCbG9i
UmVnaXN0cnlQcm94eTo6cmVnaXN0ZXJGaWxlQmxvYgogCiB2b2lkIEJsb2JSZWdpc3RyeVByb3h5
OjpyZWdpc3RlckJsb2JVUkwoY29uc3QgVVJMJiB1cmwsIFZlY3RvcjxCbG9iUGFydD4gYmxvYlBh
cnRzLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKQogewotICAgIEFTU0VSVChXZWJQcm9jZXNz
OjpzaW5nbGV0b24oKS51c2VzTmV0d29ya1Byb2Nlc3MoKSk7Ci0KICAgICBXZWJQcm9jZXNzOjpz
aW5nbGV0b24oKS5uZXR3b3JrQ29ubmVjdGlvbigpLT5jb25uZWN0aW9uKCktPnNlbmQoTWVzc2Fn
ZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpSZWdpc3RlckJsb2JVUkwodXJsLCBi
bG9iUGFydHMsIGNvbnRlbnRUeXBlKSwgMCk7CiB9CiAKIHZvaWQgQmxvYlJlZ2lzdHJ5UHJveHk6
OnJlZ2lzdGVyQmxvYlVSTChjb25zdCBVUkwmIHVybCwgY29uc3QgVVJMJiBzcmNVUkwpCiB7Ci0g
ICAgQVNTRVJUKFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnVzZXNOZXR3b3JrUHJvY2VzcygpKTsK
LQogICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLm5ldHdvcmtDb25uZWN0aW9uKCktPmNvbm5l
Y3Rpb24oKS0+c2VuZChNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OlJl
Z2lzdGVyQmxvYlVSTEZyb21VUkwodXJsLCBzcmNVUkwpLCAwKTsKIH0KIAogdm9pZCBCbG9iUmVn
aXN0cnlQcm94eTo6dW5yZWdpc3RlckJsb2JVUkwoY29uc3QgVVJMJiB1cmwpCiB7Ci0gICAgQVNT
RVJUKFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnVzZXNOZXR3b3JrUHJvY2VzcygpKTsKLQogICAg
IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLm5ldHdvcmtDb25uZWN0aW9uKCktPmNvbm5lY3Rpb24o
KS0+c2VuZChNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OlVucmVnaXN0
ZXJCbG9iVVJMKHVybCksIDApOwogfQogCiB2b2lkIEJsb2JSZWdpc3RyeVByb3h5OjpyZWdpc3Rl
ckJsb2JVUkxGb3JTbGljZShjb25zdCBVUkwmIHVybCwgY29uc3QgVVJMJiBzcmNVUkwsIGxvbmcg
bG9uZyBzdGFydCwgbG9uZyBsb25nIGVuZCkKIHsKLSAgICBBU1NFUlQoV2ViUHJvY2Vzczo6c2lu
Z2xldG9uKCkudXNlc05ldHdvcmtQcm9jZXNzKCkpOwotCiAgICAgV2ViUHJvY2Vzczo6c2luZ2xl
dG9uKCkubmV0d29ya0Nvbm5lY3Rpb24oKS0+Y29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpO
ZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6UmVnaXN0ZXJCbG9iVVJMRm9yU2xpY2UodXJs
LCBzcmNVUkwsIHN0YXJ0LCBlbmQpLCAwKTsKIH0KIAogdW5zaWduZWQgbG9uZyBsb25nIEJsb2JS
ZWdpc3RyeVByb3h5OjpibG9iU2l6ZShjb25zdCBVUkwmIHVybCkKIHsKLSAgICBBU1NFUlQoV2Vi
UHJvY2Vzczo6c2luZ2xldG9uKCkudXNlc05ldHdvcmtQcm9jZXNzKCkpOwotCiAgICAgdWludDY0
X3QgcmVzdWx0U2l6ZTsKICAgICBpZiAoIVdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLm5ldHdvcmtD
b25uZWN0aW9uKCktPmNvbm5lY3Rpb24oKS0+c2VuZFN5bmMoTWVzc2FnZXM6Ok5ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzOjpCbG9iU2l6ZSh1cmwpLCBNZXNzYWdlczo6TmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3M6OkJsb2JTaXplOjpSZXBseShyZXN1bHRTaXplKSwgMCkpCiAgICAg
ICAgIHJldHVybiAwOwpAQCAtOTAsNSArNzYsMyBAQCB1bnNpZ25lZCBsb25nIGxvbmcgQmxvYlJl
Z2lzdHJ5UHJveHk6OmJsCiB9CiAKIH0KLQotI2VuZGlmIC8vIEVOQUJMRShORVRXT1JLX1BST0NF
U1MpCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0ZpbGVBUEkvQmxvYlJlZ2lzdHJ5
UHJveHkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0ZpbGVBUEkv
QmxvYlJlZ2lzdHJ5UHJveHkuaAkocmV2aXNpb24gMTkyNjAxKQorKysgU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9GaWxlQVBJL0Jsb2JSZWdpc3RyeVByb3h5LmgJKHdvcmtpbmcgY29weSkKQEAg
LTI2LDggKzI2LDYgQEAKICNpZm5kZWYgQmxvYlJlZ2lzdHJ5UHJveHlfaAogI2RlZmluZSBCbG9i
UmVnaXN0cnlQcm94eV9oCiAKLSNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQotCiAjaW5jbHVk
ZSA8V2ViQ29yZS9CbG9iUmVnaXN0cnkuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC00NCw2
ICs0Miw0IEBAIHB1YmxpYzoKIAogfQogCi0jZW5kaWYgLy8gRU5BQkxFKE5FVFdPUktfUFJPQ0VT
UykKLQogI2VuZGlmIC8vIEJsb2JSZWdpc3RyeVByb3h5X2gKSW5kZXg6IFNvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nv
bm5lY3Rpb24uY3BwCShyZXZpc2lvbiAxOTI2MDEpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMzcsOCArMzcsNiBAQAogI2luY2x1ZGUgPFdlYkNvcmUvU2Vzc2lvbklELmg+CiAjaW5jbHVk
ZSA8V2ViQ29yZS9TaGFyZWRCdWZmZXIuaD4KIAotI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1Mp
Ci0KIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTk4
LDUgKzk2LDMgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb246OmRpZENhY2hlUgogI2Vu
ZGlmCiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAotCi0jZW5kaWYgLy8gRU5BQkxFKE5FVFdPUktf
UFJPQ0VTUykKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3Jr
UHJvY2Vzc0Nvbm5lY3Rpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmgJKHJldmlzaW9uIDE5MjYwMSkK
KysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5l
Y3Rpb24uaAkod29ya2luZyBjb3B5KQpAQCAtMzEsOCArMzEsNiBAQAogI2luY2x1ZGUgPHd0Zi9S
ZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKLSNpZiBFTkFC
TEUoTkVUV09SS19QUk9DRVNTKQotCiBuYW1lc3BhY2UgSVBDIHsKIGNsYXNzIERhdGFSZWZlcmVu
Y2U7CiB9CkBAIC04Miw3ICs4MCw0IEBAIHByaXZhdGU6CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktp
dAogCi0jZW5kaWYgLy8gRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKLQotCiAjZW5kaWYgLy8gTmV0
d29ya1Byb2Nlc3NDb25uZWN0aW9uX2gKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
TmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24ubWVzc2FnZXMuaW4KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVj
dGlvbi5tZXNzYWdlcy5pbgkocmV2aXNpb24gMTkyNjAxKQorKysgU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5tZXNzYWdlcy5pbgkod29y
a2luZyBjb3B5KQpAQCAtMjAsOCArMjAsNiBAQAogIyBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQogIyBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgogCi0jaWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKLQogbWVzc2FnZXMgLT4g
TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uIExlZ2FjeVJlY2VpdmVyIHsKIAogI2lmIEVOQUJMRShT
SEFSRUFCTEVfUkVTT1VSQ0UpCkBAIC0yOSw1ICsyNywzIEBAIG1lc3NhZ2VzIC0+IE5ldHdvcmtQ
cm9jZXNzQ29ubmVjdGlvbiBMZWcKICNlbmRpZgogCiB9Ci0KLSNlbmRpZiAvLyBFTkFCTEUoTkVU
V09SS19QUk9DRVNTKQpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9OZXR3b3JrL1dl
YlJlc291cmNlTG9hZFNjaGVkdWxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZFNjaGVkdWxlci5jcHAJKHJldmlzaW9u
IDE5MjYwMSkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJj
ZUxvYWRTY2hlZHVsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01Miw4ICs1Miw2IEBACiAjaW5j
bHVkZSA8V2ViQ29yZS9TdWJyZXNvdXJjZUxvYWRlci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NT
dHJpbmcuaD4KIAotI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCi0KIHVzaW5nIG5hbWVzcGFj
ZSBXZWJDb3JlOwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTI4Niw1ICsyODQsMyBAQCB2b2lk
IFdlYlJlc291cmNlTG9hZFNjaGVkdWxlcjo6bmV0d29ya1ByCiB9CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYktpdAotCi0jZW5kaWYgLy8gRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXIuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3Vy
Y2VMb2FkU2NoZWR1bGVyLmgJKHJldmlzaW9uIDE5MjYwMSkKKysrIFNvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXIuaAkod29ya2luZyBjb3B5
KQpAQCAtMzIsOCArMzIsNiBAQAogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VMb2FkZXIuaD4K
ICNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgogCi0jaWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykK
LQogbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbjsK
QEAgLTc3LDYgKzc1LDQgQEAgcHJpdmF0ZToKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKLSNl
bmRpZiAvLyBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQotCiAjZW5kaWYgLy8gV2ViUmVzb3VyY2VM
b2FkU2NoZWR1bGVyX2gKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvTmV0d29yay9X
ZWJSZXNvdXJjZUxvYWRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmNwcAkocmV2aXNpb24gMTkyNjAxKQorKysg
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMjYsOCArMjYsNiBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2lu
Y2x1ZGUgIldlYlJlc291cmNlTG9hZGVyLmgiCiAKLSNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNT
KQotCiAjaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNp
bmNsdWRlICJOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uaCIKQEAgLTIyMSw1ICsyMTksMyBAQCB2
b2lkIFdlYlJlc291cmNlTG9hZGVyOjpjYW5BdXRoZW50aWNhdGVBCiAjZW5kaWYKIAogfSAvLyBu
YW1lc3BhY2UgV2ViS2l0Ci0KLSNlbmRpZiAvLyBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQpJbmRl
eDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291
cmNlTG9hZGVyLmgJKHJldmlzaW9uIDE5MjYwMSkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw4ICsy
Niw2IEBACiAjaWZuZGVmIFdlYlJlc291cmNlTG9hZGVyX2gKICNkZWZpbmUgV2ViUmVzb3VyY2VM
b2FkZXJfaAogCi0jaWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKLQogI2luY2x1ZGUgIkNvbm5l
Y3Rpb24uaCIKICNpbmNsdWRlICJNZXNzYWdlU2VuZGVyLmgiCiAjaW5jbHVkZSAiU2hhcmVhYmxl
UmVzb3VyY2UuaCIKQEAgLTk0LDYgKzkyLDQgQEAgcHJpdmF0ZToKIAogfSAvLyBuYW1lc3BhY2Ug
V2ViS2l0CiAKLSNlbmRpZiAvLyBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQotCiAjZW5kaWYgLy8g
V2ViUmVzb3VyY2VMb2FkZXJfaApJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9OZXR3
b3JrL1dlYlJlc291cmNlTG9hZGVyLm1lc3NhZ2VzLmluCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5tZXNzYWdlcy5pbgko
cmV2aXNpb24gMTkyNjAxKQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9OZXR3b3JrL1dl
YlJlc291cmNlTG9hZGVyLm1lc3NhZ2VzLmluCSh3b3JraW5nIGNvcHkpCkBAIC0yMCw4ICsyMCw2
IEBACiAjIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCiAjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAKLSNpZiBFTkFCTEUo
TkVUV09SS19QUk9DRVNTKQotCiBtZXNzYWdlcyAtPiBXZWJSZXNvdXJjZUxvYWRlciBMZWdhY3lS
ZWNlaXZlciB7CiAgICAgV2lsbFNlbmRSZXF1ZXN0KFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCBy
ZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlIHJlZGlyZWN0UmVzcG9uc2UpCiAgICAg
RGlkU2VuZERhdGEodWludDY0X3QgYnl0ZXNTZW50LCB1aW50NjRfdCB0b3RhbEJ5dGVzVG9CZVNl
bnQpCkBAIC0zOSw1ICszNywzIEBAIG1lc3NhZ2VzIC0+IFdlYlJlc291cmNlTG9hZGVyIExlZ2Fj
eVJlY2UKICAgICBEaWRSZWNlaXZlUmVzb3VyY2UoV2ViS2l0OjpTaGFyZWFibGVSZXNvdXJjZTo6
SGFuZGxlIHJlc291cmNlLCBkb3VibGUgZmluaXNoVGltZSkKICNlbmRpZgogfQotCi0jZW5kaWYg
Ly8gRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZUJyb3dzZXJGdW5jcy5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlQnJv
d3NlckZ1bmNzLmNwcAkocmV2aXNpb24gMTkyNjAxKQorKysgU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlQnJvd3NlckZ1bmNzLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMTA1MywxMSArMTA1Myw3IEBAIHN0YXRpYyB2b2lkIGluaXRpYWxpemVCcm93c2Vy
RnVuY3MoTlBOZXQKICAgICBuZXRzY2FwZUZ1bmNzLnBvcHVwY29udGV4dG1lbnUgPSAwOwogICAg
IG5ldHNjYXBlRnVuY3MuY29udmVydHBvaW50ID0gMDsKICNlbmRpZgotI2lmIEVOQUJMRShORVRX
T1JLX1BST0NFU1MpCiAgICAgbmV0c2NhcGVGdW5jcy51cmxyZWRpcmVjdHJlc3BvbnNlID0gTlBO
X1VSTFJlZGlyZWN0UmVzcG9uc2U7Ci0jZWxzZQotICAgIG5ldHNjYXBlRnVuY3MudXJscmVkaXJl
Y3RyZXNwb25zZSA9IDA7Ci0jZW5kaWYKIH0KICAgICAKIE5QTmV0c2NhcGVGdW5jcyogbmV0c2Nh
cGVCcm93c2VyRnVuY3MoKQpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5z
L05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4uY3BwCShyZXZpc2lv
biAxOTI2MDEpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUv
TmV0c2NhcGVQbHVnaW4uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MDAsMTYgKzQwMCwxMiBAQCBi
b29sIE5ldHNjYXBlUGx1Z2luOjpnZXRBdXRoZW50aWNhdGlvbkluCiAKIHZvaWQgTmV0c2NhcGVQ
bHVnaW46OnJlZ2lzdGVyUmVkaXJlY3QoTmV0c2NhcGVQbHVnaW5TdHJlYW0qIHN0cmVhbSwgY29u
c3QgVVJMJiByZXF1ZXN0VVJMLCBpbnQgcmVkaXJlY3RSZXNwb25zZVN0YXR1cywgdm9pZCogbm90
aWZpY2F0aW9uRGF0YSkKIHsKLSNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQogICAgIC8vIE5Q
UF9VUkxSZWRpcmVjdE5vdGlmeSBtYXkgc3luY2hyb25vdXNseSByZXF1ZXN0IHRoaXMgc3RyZWFt
IGJhY2sgb3V0LCBzbyBzZXQgaXQgZmlyc3QKICAgICBtX3JlZGlyZWN0cy5zZXQobm90aWZpY2F0
aW9uRGF0YSwgc3RkOjptYWtlX3BhaXIoc3RyZWFtLCByZXF1ZXN0VVJMLnN0cmluZygpKSk7CiAg
ICAgaWYgKCFOUFBfVVJMUmVkaXJlY3ROb3RpZnkocmVxdWVzdFVSTC5zdHJpbmcoKS51dGY4KCku
ZGF0YSgpLCByZWRpcmVjdFJlc3BvbnNlU3RhdHVzLCBub3RpZmljYXRpb25EYXRhKSkgewogICAg
ICAgICBtX3JlZGlyZWN0cy50YWtlKG5vdGlmaWNhdGlvbkRhdGEpOwogICAgICAgICBjb250cm9s
bGVyKCktPmNvbnRpbnVlU3RyZWFtTG9hZChzdHJlYW0tPnN0cmVhbUlEKCkpOwogICAgIH0KLSNl
bHNlCi0gICAgY29udHJvbGxlcigpLT5jb250aW51ZVN0cmVhbUxvYWQoc3RyZWFtLT5zdHJlYW1J
RCgpKTsKLSNlbmRpZgogfQogCiB2b2lkIE5ldHNjYXBlUGx1Z2luOjp1cmxSZWRpcmVjdFJlc3Bv
bnNlKHZvaWQqIG5vdGlmeURhdGEsIGJvb2wgYWxsb3cpCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0
Zm9ybVN0cmF0ZWdpZXMuY3BwCShyZXZpc2lvbiAxOTI2MDEpCisrKyBTb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTI2LDkgKzI2LDEyIEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVk
ZSAiV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgiCiAKKyNpbmNsdWRlICJCbG9iUmVnaXN0cnlQcm94
eS5oIgogI2luY2x1ZGUgIkJsb2NraW5nUmVzcG9uc2VNYXAuaCIKICNpbmNsdWRlICJEYXRhUmVm
ZXJlbmNlLmgiCiAjaW5jbHVkZSAiSGFuZ0RldGVjdGlvbkRpc2FibGVyLmgiCisjaW5jbHVkZSAi
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3NNZXNzYWdlcy5oIgorI2luY2x1ZGUgIk5ldHdv
cmtQcm9jZXNzQ29ubmVjdGlvbi5oIgogI2luY2x1ZGUgIk5ldHdvcmtSZXNvdXJjZUxvYWRQYXJh
bWV0ZXJzLmgiCiAjaW5jbHVkZSAiUGx1Z2luSW5mb1N0b3JlLmgiCiAjaW5jbHVkZSAiU2Vzc2lv
blRyYWNrZXIuaCIKQEAgLTQ0LDYgKzQ3LDcgQEAKICNpbmNsdWRlICJXZWJQYXN0ZWJvYXJkUHJv
eHlNZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3MuaCIKICNpbmNsdWRlICJXZWJQcm9j
ZXNzUHJveHlNZXNzYWdlcy5oIgorI2luY2x1ZGUgIldlYlJlc291cmNlTG9hZFNjaGVkdWxlci5o
IgogI2luY2x1ZGUgPFdlYkNvcmUvQ29sb3IuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0RvY3VtZW50
TG9hZGVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9JREJGYWN0b3J5QmFja2VuZEludGVyZmFjZS5o
PgpAQCAtNjMsMTMgKzY3LDYgQEAKICNpbmNsdWRlIDxXZWJDb3JlL1VSTC5oPgogI2luY2x1ZGUg
PHd0Zi9BdG9taWNzLmg+CiAKLSNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQotI2luY2x1ZGUg
IkJsb2JSZWdpc3RyeVByb3h5LmgiCi0jaW5jbHVkZSAiTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3NNZXNzYWdlcy5oIgotI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5oIgot
I2luY2x1ZGUgIldlYlJlc291cmNlTG9hZFNjaGVkdWxlci5oIgotI2VuZGlmCi0KIHVzaW5nIG5h
bWVzcGFjZSBXZWJDb3JlOwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTExMiwxMTQgKzEwOSw1
NiBAQCBQbHVnaW5TdHJhdGVneSogV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjCiAKIFN0cmluZyBX
ZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNvb2tpZXNGb3JET00oY29uc3QgTmV0d29ya1N0b3JhZ2VT
ZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFVSTCYgdXJsKQog
ewotI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCiAgICAgYXV0byYgd2ViUHJvY2VzcyA9IFdl
YlByb2Nlc3M6OnNpbmdsZXRvbigpOwotICAgIGlmICh3ZWJQcm9jZXNzLnVzZXNOZXR3b3JrUHJv
Y2VzcygpKSB7Ci0gICAgICAgIFN0cmluZyByZXN1bHQ7Ci0gICAgICAgIGlmICghd2ViUHJvY2Vz
cy5uZXR3b3JrQ29ubmVjdGlvbigpLT5jb25uZWN0aW9uKCktPnNlbmRTeW5jKE1lc3NhZ2VzOjpO
ZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Q29va2llc0ZvckRPTShTZXNzaW9uVHJhY2tl
cjo6c2Vzc2lvbklEKHNlc3Npb24pLCBmaXJzdFBhcnR5LCB1cmwpLCBNZXNzYWdlczo6TmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkNvb2tpZXNGb3JET006OlJlcGx5KHJlc3VsdCksIDAp
KQotICAgICAgICAgICAgcmV0dXJuIFN0cmluZygpOwotICAgICAgICByZXR1cm4gcmVzdWx0Owot
ICAgIH0KLSNlbmRpZgotCi0gICAgcmV0dXJuIFdlYkNvcmU6OmNvb2tpZXNGb3JET00oc2Vzc2lv
biwgZmlyc3RQYXJ0eSwgdXJsKTsKKyAgICBTdHJpbmcgcmVzdWx0OworICAgIGlmICghd2ViUHJv
Y2Vzcy5uZXR3b3JrQ29ubmVjdGlvbigpLT5jb25uZWN0aW9uKCktPnNlbmRTeW5jKE1lc3NhZ2Vz
OjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Q29va2llc0ZvckRPTShTZXNzaW9uVHJh
Y2tlcjo6c2Vzc2lvbklEKHNlc3Npb24pLCBmaXJzdFBhcnR5LCB1cmwpLCBNZXNzYWdlczo6TmV0
d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkNvb2tpZXNGb3JET006OlJlcGx5KHJlc3VsdCks
IDApKQorICAgICAgICByZXR1cm4gU3RyaW5nKCk7CisgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAog
dm9pZCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnNldENvb2tpZXNGcm9tRE9NKGNvbnN0IE5ldHdv
cmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBV
UkwmIHVybCwgY29uc3QgU3RyaW5nJiBjb29raWVTdHJpbmcpCiB7Ci0jaWYgRU5BQkxFKE5FVFdP
UktfUFJPQ0VTUykKICAgICBhdXRvJiB3ZWJQcm9jZXNzID0gV2ViUHJvY2Vzczo6c2luZ2xldG9u
KCk7Ci0gICAgaWYgKHdlYlByb2Nlc3MudXNlc05ldHdvcmtQcm9jZXNzKCkpIHsKLSAgICAgICAg
d2ViUHJvY2Vzcy5uZXR3b3JrQ29ubmVjdGlvbigpLT5jb25uZWN0aW9uKCktPnNlbmQoTWVzc2Fn
ZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpTZXRDb29raWVzRnJvbURPTShTZXNz
aW9uVHJhY2tlcjo6c2Vzc2lvbklEKHNlc3Npb24pLCBmaXJzdFBhcnR5LCB1cmwsIGNvb2tpZVN0
cmluZyksIDApOwotICAgICAgICByZXR1cm47Ci0gICAgfQotI2VuZGlmCi0KLSAgICBXZWJDb3Jl
OjpzZXRDb29raWVzRnJvbURPTShzZXNzaW9uLCBmaXJzdFBhcnR5LCB1cmwsIGNvb2tpZVN0cmlu
Zyk7CisgICAgd2ViUHJvY2Vzcy5uZXR3b3JrQ29ubmVjdGlvbigpLT5jb25uZWN0aW9uKCktPnNl
bmQoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpTZXRDb29raWVzRnJv
bURPTShTZXNzaW9uVHJhY2tlcjo6c2Vzc2lvbklEKHNlc3Npb24pLCBmaXJzdFBhcnR5LCB1cmws
IGNvb2tpZVN0cmluZyksIDApOwogfQogCiBib29sIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y29v
a2llc0VuYWJsZWQoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBV
UkwmIGZpcnN0UGFydHksIGNvbnN0IFVSTCYgdXJsKQogewotI2lmIEVOQUJMRShORVRXT1JLX1BS
T0NFU1MpCi0gICAgYXV0byYgd2ViUHJvY2VzcyA9IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpOwot
ICAgIGlmICh3ZWJQcm9jZXNzLnVzZXNOZXR3b3JrUHJvY2VzcygpKSB7Ci0gICAgICAgIGJvb2wg
cmVzdWx0OwotICAgICAgICBpZiAoIXdlYlByb2Nlc3MubmV0d29ya0Nvbm5lY3Rpb24oKS0+Y29u
bmVjdGlvbigpLT5zZW5kU3luYyhNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3M6OkNvb2tpZXNFbmFibGVkKFNlc3Npb25UcmFja2VyOjpzZXNzaW9uSUQoc2Vzc2lvbiksIGZp
cnN0UGFydHksIHVybCksIE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6
Q29va2llc0VuYWJsZWQ6OlJlcGx5KHJlc3VsdCksIDApKQotICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwotICAgICAgICByZXR1cm4gcmVzdWx0OwotICAgIH0KLSNlbmRpZgotCi0gICAgcmV0dXJu
IFdlYkNvcmU6OmNvb2tpZXNFbmFibGVkKHNlc3Npb24sIGZpcnN0UGFydHksIHVybCk7CisgICAg
Ym9vbCByZXN1bHQ7CisgICAgaWYgKCFXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5uZXR3b3JrQ29u
bmVjdGlvbigpLT5jb25uZWN0aW9uKCktPnNlbmRTeW5jKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2Vzczo6Q29va2llc0VuYWJsZWQoU2Vzc2lvblRyYWNrZXI6OnNlc3Npb25J
RChzZXNzaW9uKSwgZmlyc3RQYXJ0eSwgdXJsKSwgTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzOjpDb29raWVzRW5hYmxlZDo6UmVwbHkocmVzdWx0KSwgMCkpCisgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gcmVzdWx0OwogfQogCiBTdHJpbmcgV2ViUGxhdGZv
cm1TdHJhdGVnaWVzOjpjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25zdCBOZXR3b3Jr
U3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgVVJM
JiB1cmwpCiB7Ci0jaWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKLSAgICBhdXRvJiB3ZWJQcm9j
ZXNzID0gV2ViUHJvY2Vzczo6c2luZ2xldG9uKCk7Ci0gICAgaWYgKHdlYlByb2Nlc3MudXNlc05l
dHdvcmtQcm9jZXNzKCkpIHsKLSAgICAgICAgU3RyaW5nIHJlc3VsdDsKLSAgICAgICAgaWYgKCF3
ZWJQcm9jZXNzLm5ldHdvcmtDb25uZWN0aW9uKCktPmNvbm5lY3Rpb24oKS0+c2VuZFN5bmMoTWVz
c2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpDb29raWVSZXF1ZXN0SGVhZGVy
RmllbGRWYWx1ZShTZXNzaW9uVHJhY2tlcjo6c2Vzc2lvbklEKHNlc3Npb24pLCBmaXJzdFBhcnR5
LCB1cmwpLCBNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkNvb2tpZVJl
cXVlc3RIZWFkZXJGaWVsZFZhbHVlOjpSZXBseShyZXN1bHQpLCAwKSkKLSAgICAgICAgICAgIHJl
dHVybiBTdHJpbmcoKTsKLSAgICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgICB9Ci0jZW5kaWYKLQot
ICAgIHJldHVybiBXZWJDb3JlOjpjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShzZXNzaW9u
LCBmaXJzdFBhcnR5LCB1cmwpOworICAgIFN0cmluZyByZXN1bHQ7CisgICAgaWYgKCFXZWJQcm9j
ZXNzOjpzaW5nbGV0b24oKS5uZXR3b3JrQ29ubmVjdGlvbigpLT5jb25uZWN0aW9uKCktPnNlbmRT
eW5jKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Q29va2llUmVxdWVz
dEhlYWRlckZpZWxkVmFsdWUoU2Vzc2lvblRyYWNrZXI6OnNlc3Npb25JRChzZXNzaW9uKSwgZmly
c3RQYXJ0eSwgdXJsKSwgTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpD
b29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZTo6UmVwbHkocmVzdWx0KSwgMCkpCisgICAgICAg
IHJldHVybiBTdHJpbmcoKTsKKyAgICByZXR1cm4gcmVzdWx0OwogfQogCiBib29sIFdlYlBsYXRm
b3JtU3RyYXRlZ2llczo6Z2V0UmF3Q29va2llcyhjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24m
IHNlc3Npb24sIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgVVJMJiB1cmwsIFZlY3RvcjxD
b29raWU+JiByYXdDb29raWVzKQogewotI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCi0gICAg
YXV0byYgd2ViUHJvY2VzcyA9IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpOwotICAgIGlmICh3ZWJQ
cm9jZXNzLnVzZXNOZXR3b3JrUHJvY2VzcygpKSB7Ci0gICAgICAgIGlmICghd2ViUHJvY2Vzcy5u
ZXR3b3JrQ29ubmVjdGlvbigpLT5jb25uZWN0aW9uKCktPnNlbmRTeW5jKE1lc3NhZ2VzOjpOZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6R2V0UmF3Q29va2llcyhTZXNzaW9uVHJhY2tlcjo6
c2Vzc2lvbklEKHNlc3Npb24pLCBmaXJzdFBhcnR5LCB1cmwpLCBNZXNzYWdlczo6TmV0d29ya0Nv
bm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkdldFJhd0Nvb2tpZXM6OlJlcGx5KHJhd0Nvb2tpZXMpLCAw
KSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAg
fQotI2VuZGlmCi0KLSAgICByZXR1cm4gV2ViQ29yZTo6Z2V0UmF3Q29va2llcyhzZXNzaW9uLCBm
aXJzdFBhcnR5LCB1cmwsIHJhd0Nvb2tpZXMpOworICAgIGlmICghV2ViUHJvY2Vzczo6c2luZ2xl
dG9uKCkubmV0d29ya0Nvbm5lY3Rpb24oKS0+Y29ubmVjdGlvbigpLT5zZW5kU3luYyhNZXNzYWdl
czo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkdldFJhd0Nvb2tpZXMoU2Vzc2lvblRy
YWNrZXI6OnNlc3Npb25JRChzZXNzaW9uKSwgZmlyc3RQYXJ0eSwgdXJsKSwgTWVzc2FnZXM6Ok5l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpHZXRSYXdDb29raWVzOjpSZXBseShyYXdDb29r
aWVzKSwgMCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAog
dm9pZCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmRlbGV0ZUNvb2tpZShjb25zdCBOZXR3b3JrU3Rv
cmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIGNvb2tp
ZU5hbWUpCiB7Ci0jaWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKLSAgICBhdXRvJiB3ZWJQcm9j
ZXNzID0gV2ViUHJvY2Vzczo6c2luZ2xldG9uKCk7Ci0gICAgaWYgKHdlYlByb2Nlc3MudXNlc05l
dHdvcmtQcm9jZXNzKCkpIHsKLSAgICAgICAgd2ViUHJvY2Vzcy5uZXR3b3JrQ29ubmVjdGlvbigp
LT5jb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzOjpEZWxldGVDb29raWUoU2Vzc2lvblRyYWNrZXI6OnNlc3Npb25JRChzZXNzaW9uKSwgdXJs
LCBjb29raWVOYW1lKSwgMCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0jZW5kaWYKLQotICAg
IFdlYkNvcmU6OmRlbGV0ZUNvb2tpZShzZXNzaW9uLCB1cmwsIGNvb2tpZU5hbWUpOworICAgIFdl
YlByb2Nlc3M6OnNpbmdsZXRvbigpLm5ldHdvcmtDb25uZWN0aW9uKCktPmNvbm5lY3Rpb24oKS0+
c2VuZChNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkRlbGV0ZUNvb2tp
ZShTZXNzaW9uVHJhY2tlcjo6c2Vzc2lvbklEKHNlc3Npb24pLCB1cmwsIGNvb2tpZU5hbWUpLCAw
KTsKIH0KIAogLy8gTG9hZGVyU3RyYXRlZ3kKIAotI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1Mp
CiBSZXNvdXJjZUxvYWRTY2hlZHVsZXIqIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6cmVzb3VyY2VM
b2FkU2NoZWR1bGVyKCkKIHsKLSAgICBzdGF0aWMgUmVzb3VyY2VMb2FkU2NoZWR1bGVyKiBzY2hl
ZHVsZXI7Ci0gICAgaWYgKCFzY2hlZHVsZXIpIHsKLSAgICAgICAgYXV0byYgd2ViUHJvY2VzcyA9
IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpOwotICAgICAgICBpZiAod2ViUHJvY2Vzcy51c2VzTmV0
d29ya1Byb2Nlc3MoKSkKLSAgICAgICAgICAgIHNjaGVkdWxlciA9ICZ3ZWJQcm9jZXNzLndlYlJl
c291cmNlTG9hZFNjaGVkdWxlcigpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBzY2hlZHVs
ZXIgPSBXZWJDb3JlOjpyZXNvdXJjZUxvYWRTY2hlZHVsZXIoKTsKLSAgICB9Ci0gICAgCi0gICAg
cmV0dXJuIHNjaGVkdWxlcjsKKyAgICByZXR1cm4gJldlYlByb2Nlc3M6OnNpbmdsZXRvbigpLndl
YlJlc291cmNlTG9hZFNjaGVkdWxlcigpOwogfQogCiB2b2lkIFdlYlBsYXRmb3JtU3RyYXRlZ2ll
czo6bG9hZFJlc291cmNlU3luY2hyb25vdXNseShOZXR3b3JraW5nQ29udGV4dCogY29udGV4dCwg
dW5zaWduZWQgbG9uZyByZXNvdXJjZUxvYWRJZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZVJlcXVl
c3QmIHJlcXVlc3QsIFN0b3JlZENyZWRlbnRpYWxzIHN0b3JlZENyZWRlbnRpYWxzLCBDbGllbnRD
cmVkZW50aWFsUG9saWN5IGNsaWVudENyZWRlbnRpYWxQb2xpY3ksIFJlc291cmNlRXJyb3ImIGVy
cm9yLCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgVmVjdG9yPGNoYXI+JiBkYXRhKQogewot
ICAgIGF1dG8mIHdlYlByb2Nlc3MgPSBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKTsKLSAgICBpZiAo
IXdlYlByb2Nlc3MudXNlc05ldHdvcmtQcm9jZXNzKCkpIHsKLSAgICAgICAgTG9hZGVyU3RyYXRl
Z3k6OmxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkoY29udGV4dCwgcmVzb3VyY2VMb2FkSWRlbnRp
ZmllciwgcmVxdWVzdCwgc3RvcmVkQ3JlZGVudGlhbHMsIGNsaWVudENyZWRlbnRpYWxQb2xpY3ks
IGVycm9yLCByZXNwb25zZSwgZGF0YSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KICAgICBX
ZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0KiB3ZWJDb250ZXh0ID0gc3RhdGljX2Nhc3Q8V2ViRnJh
bWVOZXR3b3JraW5nQ29udGV4dCo+KGNvbnRleHQpOwogICAgIC8vIEZJWE1FOiBTb21lIGVudGl0
aWVzIGluIFdlYkNvcmUgdXNlIFdlYkNvcmUncyAiRW1wdHlGcmFtZUxvYWRlckNsaWVudCIgaW5z
dGVhZCBvZiBoYXZpbmcgYSBwcm9wZXIgV2ViRnJhbWVMb2FkZXJDbGllbnQuCiAgICAgLy8gRW1w
dHlGcmFtZUxvYWRlckNsaWVudCBzaG91bGRuJ3QgZXhpc3QgYW5kIGV2ZXJ5dGhpbmcgc2hvdWxk
IGJlIHVzaW5nIGEgV2ViRnJhbWVMb2FkZXJDbGllbnQsCkBAIC0yNDMsNyArMTgyLDcgQEAgdm9p
ZCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmxvYWRSZXNvdXJjZQogCiAgICAgSGFuZ0RldGVjdGlv
bkRpc2FibGVyIGhhbmdEZXRlY3Rpb25EaXNhYmxlcjsKIAotICAgIGlmICghd2ViUHJvY2Vzcy5u
ZXR3b3JrQ29ubmVjdGlvbigpLT5jb25uZWN0aW9uKCktPnNlbmRTeW5jKE1lc3NhZ2VzOjpOZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6UGVyZm9ybVN5bmNocm9ub3VzTG9hZChsb2FkUGFy
YW1ldGVycyksIE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6UGVyZm9y
bVN5bmNocm9ub3VzTG9hZDo6UmVwbHkoZXJyb3IsIHJlc3BvbnNlLCBkYXRhKSwgMCkpIHsKKyAg
ICBpZiAoIVdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLm5ldHdvcmtDb25uZWN0aW9uKCktPmNvbm5l
Y3Rpb24oKS0+c2VuZFN5bmMoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
OjpQZXJmb3JtU3luY2hyb25vdXNMb2FkKGxvYWRQYXJhbWV0ZXJzKSwgTWVzc2FnZXM6Ok5ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpQZXJmb3JtU3luY2hyb25vdXNMb2FkOjpSZXBseShl
cnJvciwgcmVzcG9uc2UsIGRhdGEpLCAwKSkgewogICAgICAgICByZXNwb25zZSA9IFJlc291cmNl
UmVzcG9uc2UoKTsKICAgICAgICAgZXJyb3IgPSBpbnRlcm5hbEVycm9yKHJlcXVlc3QudXJsKCkp
OwogICAgIH0KQEAgLTI1NiwxMiArMTk1LDYgQEAgdm9pZCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6
OmNyZWF0ZVBpbmdIYQogICAgIGlmICghbmV0d29ya2luZ0NvbnRleHQpCiAgICAgICAgIHJldHVy
bjsKIAotICAgIGF1dG8mIHdlYlByb2Nlc3MgPSBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKTsKLSAg
ICBpZiAoIXdlYlByb2Nlc3MudXNlc05ldHdvcmtQcm9jZXNzKCkpIHsKLSAgICAgICAgTG9hZGVy
U3RyYXRlZ3k6OmNyZWF0ZVBpbmdIYW5kbGUobmV0d29ya2luZ0NvbnRleHQsIHJlcXVlc3QsIHNo
b3VsZFVzZUNyZWRlbnRpYWxTdG9yYWdlKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQogICAg
IFdlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQqIHdlYkNvbnRleHQgPSBzdGF0aWNfY2FzdDxXZWJG
cmFtZU5ldHdvcmtpbmdDb250ZXh0Kj4obmV0d29ya2luZ0NvbnRleHQpOwogICAgIFdlYkZyYW1l
TG9hZGVyQ2xpZW50KiB3ZWJGcmFtZUxvYWRlckNsaWVudCA9IHdlYkNvbnRleHQtPndlYkZyYW1l
TG9hZGVyQ2xpZW50KCk7CiAgICAgV2ViRnJhbWUqIHdlYkZyYW1lID0gd2ViRnJhbWVMb2FkZXJD
bGllbnQgPyB3ZWJGcmFtZUxvYWRlckNsaWVudC0+d2ViRnJhbWUoKSA6IG51bGxwdHI7CkBAIC0y
NzMsMTYgKzIwNiwxMyBAQCB2b2lkIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y3JlYXRlUGluZ0hh
CiAgICAgbG9hZFBhcmFtZXRlcnMuYWxsb3dTdG9yZWRDcmVkZW50aWFscyA9IHNob3VsZFVzZUNy
ZWRlbnRpYWxTdG9yYWdlID8gQWxsb3dTdG9yZWRDcmVkZW50aWFscyA6IERvTm90QWxsb3dTdG9y
ZWRDcmVkZW50aWFsczsKICAgICBsb2FkUGFyYW1ldGVycy5zaG91bGRDbGVhclJlZmVycmVyT25I
VFRQU1RvSFRUUFJlZGlyZWN0ID0gbmV0d29ya2luZ0NvbnRleHQtPnNob3VsZENsZWFyUmVmZXJy
ZXJPbkhUVFBTVG9IVFRQUmVkaXJlY3QoKTsKIAotICAgIHdlYlByb2Nlc3MubmV0d29ya0Nvbm5l
Y3Rpb24oKS0+Y29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2Vzczo6TG9hZFBpbmcobG9hZFBhcmFtZXRlcnMpLCAwKTsKKyAgICBXZWJQcm9jZXNz
OjpzaW5nbGV0b24oKS5uZXR3b3JrQ29ubmVjdGlvbigpLT5jb25uZWN0aW9uKCktPnNlbmQoTWVz
c2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpMb2FkUGluZyhsb2FkUGFyYW1l
dGVycyksIDApOwogfQogCiBCbG9iUmVnaXN0cnkqIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y3Jl
YXRlQmxvYlJlZ2lzdHJ5KCkKIHsKLSAgICBpZiAoIVdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnVz
ZXNOZXR3b3JrUHJvY2VzcygpKQotICAgICAgICByZXR1cm4gTG9hZGVyU3RyYXRlZ3k6OmNyZWF0
ZUJsb2JSZWdpc3RyeSgpOwogICAgIHJldHVybiBuZXcgQmxvYlJlZ2lzdHJ5UHJveHk7ICAgIAog
fQotI2VuZGlmCiAKIC8vIFBsdWdpblN0cmF0ZWd5CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9y
bVN0cmF0ZWdpZXMuaAkocmV2aXNpb24gMTkyNjAxKQorKysgU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaAkod29ya2luZyBjb3B5
KQpAQCAtNTksMTIgKzU5LDEwIEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIGRlbGV0ZUNv
b2tpZShjb25zdCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBXZWJDb3Jl
OjpVUkwmLCBjb25zdCBTdHJpbmcmKSBvdmVycmlkZTsKIAogICAgIC8vIFdlYkNvcmU6OkxvYWRl
clN0cmF0ZWd5Ci0jaWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKICAgICB2aXJ0dWFsIFdlYkNv
cmU6OlJlc291cmNlTG9hZFNjaGVkdWxlciogcmVzb3VyY2VMb2FkU2NoZWR1bGVyKCkgb3ZlcnJp
ZGU7CiAgICAgdmlydHVhbCB2b2lkIGxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkoV2ViQ29yZTo6
TmV0d29ya2luZ0NvbnRleHQqLCB1bnNpZ25lZCBsb25nIHJlc291cmNlTG9hZElkZW50aWZpZXIs
IGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIFdlYkNvcmU6OlN0b3JlZENyZWRlbnRp
YWxzLCBXZWJDb3JlOjpDbGllbnRDcmVkZW50aWFsUG9saWN5LCBXZWJDb3JlOjpSZXNvdXJjZUVy
cm9yJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIFZlY3RvcjxjaGFyPiYgZGF0YSkgb3Zl
cnJpZGU7CiAgICAgdmlydHVhbCBXZWJDb3JlOjpCbG9iUmVnaXN0cnkqIGNyZWF0ZUJsb2JSZWdp
c3RyeSgpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBjcmVhdGVQaW5nSGFuZGxlKFdlYkNv
cmU6Ok5ldHdvcmtpbmdDb250ZXh0KiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgYm9vbCBz
aG91bGRVc2VDcmVkZW50aWFsU3RvcmFnZSkgb3ZlcnJpZGU7Ci0jZW5kaWYKIAogICAgIC8vIFdl
YkNvcmU6OlBsdWdpblN0cmF0ZWd5CiAgICAgdmlydHVhbCB2b2lkIHJlZnJlc2hQbHVnaW5zKCkg
b3ZlcnJpZGU7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJh
bWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJGcmFtZS5jcHAJKHJldmlzaW9uIDE5MjYwMSkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMzLDEwICszMywxMyBA
QAogI2luY2x1ZGUgIkluamVjdGVkQnVuZGxlTm9kZUhhbmRsZS5oIgogI2luY2x1ZGUgIkluamVj
dGVkQnVuZGxlUmFuZ2VIYW5kbGUuaCIKICNpbmNsdWRlICJJbmplY3RlZEJ1bmRsZVNjcmlwdFdv
cmxkLmgiCisjaW5jbHVkZSAiTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3NNZXNzYWdlcy5o
IgorI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5oIgogI2luY2x1ZGUgIlBsdWdp
blZpZXcuaCIKICNpbmNsdWRlICJXS0FQSUNhc3QuaCIKICNpbmNsdWRlICJXS0J1bmRsZUFQSUNh
c3QuaCIKICNpbmNsdWRlICJXZWJDaHJvbWVDbGllbnQuaCIKKyNpbmNsdWRlICJXZWJDb3JlQXJn
dW1lbnRDb2RlcnMuaCIKICNpbmNsdWRlICJXZWJEb2N1bWVudExvYWRlci5oIgogI2luY2x1ZGUg
IldlYlBhZ2UuaCIKICNpbmNsdWRlICJXZWJQYWdlUHJveHlNZXNzYWdlcy5oIgpAQCAtODEsMTIg
Kzg0LDYgQEAKICNpbmNsdWRlIDxXZWJDb3JlL0xlZ2FjeVdlYkFyY2hpdmUuaD4KICNlbmRpZgog
Ci0jaWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKLSNpbmNsdWRlICJOZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2Vzc01lc3NhZ2VzLmgiCi0jaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3NDb25uZWN0
aW9uLmgiCi0jaW5jbHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCi0jZW5kaWYKLQogI2lm
bmRlZiBOREVCVUcKICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZExlYWtDb3VudGVyLmg+CiAjZW5k
aWYKQEAgLTI1NywyMyArMjU0LDkgQEAgdm9pZCBXZWJGcmFtZTo6c3RhcnREb3dubG9hZChjb25z
dCBXZWJDbwogICAgIG1fcG9saWN5RG93bmxvYWRJRCA9IDA7CiAKICAgICBhdXRvJiB3ZWJQcm9j
ZXNzID0gV2ViUHJvY2Vzczo6c2luZ2xldG9uKCk7Ci0jaWYgVVNFKE5FVFdPUktfU0VTU0lPTikK
LSAgICBBU1NFUlQod2ViUHJvY2Vzcy51c2VzTmV0d29ya1Byb2Nlc3MoKSk7Ci0jZW5kaWYKICAg
ICBTZXNzaW9uSUQgc2Vzc2lvbklEID0gcGFnZSgpID8gcGFnZSgpLT5zZXNzaW9uSUQoKSA6IFNl
c3Npb25JRDo6ZGVmYXVsdFNlc3Npb25JRCgpOwotI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1Mp
Ci0gICAgaWYgKHdlYlByb2Nlc3MudXNlc05ldHdvcmtQcm9jZXNzKCkpIHsKLSAgICAgICAgd2Vi
UHJvY2Vzcy5uZXR3b3JrQ29ubmVjdGlvbigpLT5jb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6
Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpTdGFydERvd25sb2FkKHNlc3Npb25JRCwg
cG9saWN5RG93bmxvYWRJRCwgcmVxdWVzdCksIDApOwotICAgICAgICByZXR1cm47Ci0gICAgfQot
I2VuZGlmCi0KLSNpZiBVU0UoTkVUV09SS19TRVNTSU9OKQotICAgIC8vIFVzaW5nIE5FVFdPUktf
U0VTU0lPTiByZXF1aXJlcyB0aGUgdXNlIG9mIGEgbmV0d29yayBwcm9jZXNzLgotICAgIFJFTEVB
U0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0jZWxzZQotICAgIHdlYlByb2Nlc3MuZG93bmxvYWRN
YW5hZ2VyKCkuc3RhcnREb3dubG9hZChzZXNzaW9uSUQsIHBvbGljeURvd25sb2FkSUQsIHJlcXVl
c3QpOwotI2VuZGlmCisgICAgd2ViUHJvY2Vzcy5uZXR3b3JrQ29ubmVjdGlvbigpLT5jb25uZWN0
aW9uKCktPnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpTdGFy
dERvd25sb2FkKHNlc3Npb25JRCwgcG9saWN5RG93bmxvYWRJRCwgcmVxdWVzdCksIDApOworICAg
IHJldHVybjsKIH0KIAogdm9pZCBXZWJGcmFtZTo6Y29udmVydE1haW5SZXNvdXJjZUxvYWRUb0Rv
d25sb2FkKERvY3VtZW50TG9hZGVyKiBkb2N1bWVudExvYWRlciwgU2Vzc2lvbklEIHNlc3Npb25J
RCwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNl
JiByZXNwb25zZSkKQEAgLTI4NiwzOSArMjY5LDEyIEBAIHZvaWQgV2ViRnJhbWU6OmNvbnZlcnRN
YWluUmVzb3VyY2VMb2FkVG8KICAgICBTdWJyZXNvdXJjZUxvYWRlciogbWFpblJlc291cmNlTG9h
ZGVyID0gZG9jdW1lbnRMb2FkZXItPm1haW5SZXNvdXJjZUxvYWRlcigpOwogCiAgICAgYXV0byYg
d2ViUHJvY2VzcyA9IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpOwotI2lmIEVOQUJMRShORVRXT1JL
X1BST0NFU1MpCi0jaWYgVVNFKE5FVFdPUktfU0VTU0lPTikKLSAgICBBU1NFUlQod2ViUHJvY2Vz
cy51c2VzTmV0d29ya1Byb2Nlc3MoKSk7Ci0jZW5kaWYKLSAgICBpZiAod2ViUHJvY2Vzcy51c2Vz
TmV0d29ya1Byb2Nlc3MoKSkgewotICAgICAgICAvLyBVc2UgMCB0byBpbmRpY2F0ZSB0aGF0IHRo
ZSByZXNvdXJjZSBsb2FkIGNhbid0IGJlIGNvbnZlcnRlZCBhbmQgYSBuZXcgZG93bmxvYWQgbXVz
dCBiZSBzdGFydGVkLgotICAgICAgICAvLyBUaGlzIGNhbiBoYXBwZW4gaWYgdGhlcmUgaXMgbm8g
bG9hZGVyIGJlY2F1c2UgdGhlIG1haW4gcmVzb3VyY2UgaXMgaW4gdGhlIFdlYkNvcmUgbWVtb3J5
IGNhY2hlLAotICAgICAgICAvLyBvciBiZWNhdXNlIHRoZSBjb252ZXJzaW9uIHdhcyBhdHRlbXB0
ZWQgd2hlbiBub3QgY2FsbGluZyBTdWJyZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNl
KCkuCi0gICAgICAgIHVpbnQ2NF90IG1haW5SZXNvdXJjZUxvYWRJZGVudGlmaWVyOwotICAgICAg
ICBpZiAobWFpblJlc291cmNlTG9hZGVyKQotICAgICAgICAgICAgbWFpblJlc291cmNlTG9hZElk
ZW50aWZpZXIgPSBtYWluUmVzb3VyY2VMb2FkZXItPmlkZW50aWZpZXIoKTsKLSAgICAgICAgZWxz
ZQotICAgICAgICAgICAgbWFpblJlc291cmNlTG9hZElkZW50aWZpZXIgPSAwOwotCi0gICAgICAg
IHdlYlByb2Nlc3MubmV0d29ya0Nvbm5lY3Rpb24oKS0+Y29ubmVjdGlvbigpLT5zZW5kKE1lc3Nh
Z2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Q29udmVydE1haW5SZXNvdXJjZUxv
YWRUb0Rvd25sb2FkKHNlc3Npb25JRCwgbWFpblJlc291cmNlTG9hZElkZW50aWZpZXIsIHBvbGlj
eURvd25sb2FkSUQsIHJlcXVlc3QsIHJlc3BvbnNlKSwgMCk7Ci0gICAgICAgIHJldHVybjsKLSAg
ICB9Ci0jZW5kaWYKLQotICAgIGlmICghbWFpblJlc291cmNlTG9hZGVyKSB7Ci0gICAgICAgIC8v
IFRoZSBtYWluIHJlc291cmNlIGhhcyBhbHJlYWR5IGJlZW4gbG9hZGVkLiBTdGFydCBhIG5ldyBk
b3dubG9hZCBpbnN0ZWFkLgotI2lmICFVU0UoTkVUV09SS19TRVNTSU9OKQotICAgICAgICB3ZWJQ
cm9jZXNzLmRvd25sb2FkTWFuYWdlcigpLnN0YXJ0RG93bmxvYWQoc2Vzc2lvbklELCBwb2xpY3lE
b3dubG9hZElELCByZXF1ZXN0KTsKLSNlbmRpZgotICAgICAgICByZXR1cm47Ci0gICAgfQorICAg
IC8vIFVzZSAwIHRvIGluZGljYXRlIHRoYXQgdGhlIHJlc291cmNlIGxvYWQgY2FuJ3QgYmUgY29u
dmVydGVkIGFuZCBhIG5ldyBkb3dubG9hZCBtdXN0IGJlIHN0YXJ0ZWQuCisgICAgLy8gVGhpcyBj
YW4gaGFwcGVuIGlmIHRoZXJlIGlzIG5vIGxvYWRlciBiZWNhdXNlIHRoZSBtYWluIHJlc291cmNl
IGlzIGluIHRoZSBXZWJDb3JlIG1lbW9yeSBjYWNoZSwKKyAgICAvLyBvciBiZWNhdXNlIHRoZSBj
b252ZXJzaW9uIHdhcyBhdHRlbXB0ZWQgd2hlbiBub3QgY2FsbGluZyBTdWJyZXNvdXJjZUxvYWRl
cjo6ZGlkUmVjZWl2ZVJlc3BvbnNlKCkuCisgICAgdWludDY0X3QgbWFpblJlc291cmNlTG9hZElk
ZW50aWZpZXIgPSBtYWluUmVzb3VyY2VMb2FkZXIgPyBtYWluUmVzb3VyY2VMb2FkZXItPmlkZW50
aWZpZXIoKSA6IDA7CiAKLSNpZiBVU0UoTkVUV09SS19TRVNTSU9OKQotICAgIC8vIFVzaW5nIE5F
VFdPUktfU0VTU0lPTiByZXF1aXJlcyB0aGUgdXNlIG9mIGEgbmV0d29yayBwcm9jZXNzLgotICAg
IFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0jZWxzZQotICAgIHdlYlByb2Nlc3MuZG93
bmxvYWRNYW5hZ2VyKCkuY29udmVydEhhbmRsZVRvRG93bmxvYWQocG9saWN5RG93bmxvYWRJRCwg
ZG9jdW1lbnRMb2FkZXItPm1haW5SZXNvdXJjZUxvYWRlcigpLT5oYW5kbGUoKSwgcmVxdWVzdCwg
cmVzcG9uc2UpOwotI2VuZGlmCisgICAgd2ViUHJvY2Vzcy5uZXR3b3JrQ29ubmVjdGlvbigpLT5j
b25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
OjpDb252ZXJ0TWFpblJlc291cmNlTG9hZFRvRG93bmxvYWQoc2Vzc2lvbklELCBtYWluUmVzb3Vy
Y2VMb2FkSWRlbnRpZmllciwgcG9saWN5RG93bmxvYWRJRCwgcmVxdWVzdCwgcmVzcG9uc2UpLCAw
KTsKIH0KIAogU3RyaW5nIFdlYkZyYW1lOjpzb3VyY2UoKSBjb25zdApJbmRleDogU291cmNlL2Nt
YWtlL09wdGlvbnNFZmwuY21ha2UKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL2NtYWtlL09wdGlvbnNF
ZmwuY21ha2UJKHJldmlzaW9uIDE5MjYwMSkKKysrIFNvdXJjZS9jbWFrZS9PcHRpb25zRWZsLmNt
YWtlCSh3b3JraW5nIGNvcHkpCkBAIC0xMDYsNyArMTA2LDYgQEAgV0VCS0lUX09QVElPTl9ERUZB
VUxUX1BPUlRfVkFMVUUoRU5BQkxFXwogV0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUo
RU5BQkxFX05BVklHQVRPUl9DT05URU5UX1VUSUxTIFBVQkxJQyBPTikKIFdFQktJVF9PUFRJT05f
REVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9OQVZJR0FUT1JfSFdDT05DVVJSRU5DWSBQVUJMSUMg
T04pCiBXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfTkVUU0NBUEVfUExV
R0lOX0FQSSBQVUJMSUMgT04pCi1XRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFC
TEVfTkVUV09SS19QUk9DRVNTIFBVQkxJQyBPTikKIFdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JU
X1ZBTFVFKEVOQUJMRV9OT1NOSUZGIFBVQkxJQyBPTikKIFdFQktJVF9PUFRJT05fREVGQVVMVF9Q
T1JUX1ZBTFVFKEVOQUJMRV9QT0lOVEVSX0xPQ0sgUFJJVkFURSBPRkYpCiBXRUJLSVRfT1BUSU9O
X0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfUFVCTElDX1NVRkZJWF9MSVNUIFBSSVZBVEUgT04p
CkluZGV4OiBTb3VyY2UvY21ha2UvT3B0aW9uc0dUSy5jbWFrZQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvY21ha2UvT3B0aW9uc0dUSy5jbWFrZQkocmV2aXNpb24gMTkyNjAxKQorKysgU291cmNlL2Nt
YWtlL09wdGlvbnNHVEsuY21ha2UJKHdvcmtpbmcgY29weSkKQEAgLTE4Niw3ICsxODYsNiBAQCBX
RUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfCiBXRUJLSVRfT1BUSU9OX0RF
RkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfVklFV19NT0RFX0NTU19NRURJQSBQUklWQVRFIE9OKQog
V0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX1dFQl9USU1JTkcgUFJJVkFU
RSBPTikKIFdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9XRUJHTCBQUklW
QVRFIE9OKQotV0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX05FVFdPUktf
UFJPQ0VTUyBQUklWQVRFIE9OKQogV0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5B
QkxFX1RIUkVBREVEX0NPTVBPU0lUT1IgUFJJVkFURSBPRkYpCiBXRUJLSVRfT1BUSU9OX0RFRkFV
TFRfUE9SVF9WQUxVRShFTkFCTEVfU0hBRE9XX0RPTSBQUklWQVRFIE9GRikKIApJbmRleDogU291
cmNlL2NtYWtlL09wdGlvbnNNYWMuY21ha2UKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL2NtYWtlL09w
dGlvbnNNYWMuY21ha2UJKHJldmlzaW9uIDE5MjYwMSkKKysrIFNvdXJjZS9jbWFrZS9PcHRpb25z
TWFjLmNtYWtlCSh3b3JraW5nIGNvcHkpCkBAIC0yMjAsNyArMjIwLDYgQEAgV0VCS0lUX09QVElP
Tl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFXwogCiBXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9S
VF9WQUxVRShFTkFCTEVfU0FOREJPWF9FWFRFTlNJT05TIFBSSVZBVEUgT04pCiBXRUJLSVRfT1BU
SU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfV0VCX1BST0NFU1NfU0FOREJPWCBQUklWQVRF
IE9OKQotV0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX05FVFdPUktfUFJP
Q0VTUyBQUklWQVRFIE9OKQogV0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxF
X0RBVEFCQVNFX1BST0NFU1MgUFJJVkFURSBPTikKIFdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JU
X1ZBTFVFKEVOQUJMRV9QTFVHSU5fUFJPQ0VTUyBQUklWQVRFIE9OKQogV0VCS0lUX09QVElPTl9E
RUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX01FTU9SWV9TQU1QTEVSIFBSSVZBVEUgT04pCkluZGV4
OiBTb3VyY2UvY21ha2UvV2ViS2l0RmVhdHVyZXMuY21ha2UKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L2NtYWtlL1dlYktpdEZlYXR1cmVzLmNtYWtlCShyZXZpc2lvbiAxOTI2MDEpCisrKyBTb3VyY2Uv
Y21ha2UvV2ViS2l0RmVhdHVyZXMuY21ha2UJKHdvcmtpbmcgY29weSkKQEAgLTEyOCw3ICsxMjgs
NiBAQCBtYWNybyhXRUJLSVRfT1BUSU9OX0JFR0lOKQogICAgIFdFQktJVF9PUFRJT05fREVGSU5F
KEVOQUJMRV9OQVZJR0FUT1JfSFdDT05DVVJSRU5DWSAiVG9nZ2xlIE5hdmlnYXRvciBoYXJkd2Fy
ZSBjb25jdXJyZW5jeSBzdXBwb3J0IiBQUklWQVRFIE9OKQogICAgIFdFQktJVF9PUFRJT05fREVG
SU5FKEVOQUJMRV9OT1NOSUZGICJUb2dnbGUgc3VwcG9ydCBmb3IgJ1gtQ29udGVudC1UeXBlLU9w
dGlvbnM6IG5vc25pZmYnIiBQUklWQVRFIE9GRikKICAgICBXRUJLSVRfT1BUSU9OX0RFRklORShF
TkFCTEVfTkVUU0NBUEVfUExVR0lOX0FQSSAiVG9nZ2xlIE5ldHNjYXBlIFBsdWdpbiBzdXBwb3J0
IiBQUklWQVRFIE9OKQotICAgIFdFQktJVF9PUFRJT05fREVGSU5FKEVOQUJMRV9ORVRXT1JLX1BS
T0NFU1MgIlRvZ2dsZSBkZWRpY2F0ZWQgbmV0d29yayBwcm9jZXNzIHN1cHBvcnQgaW4gV2ViS2l0
MiIgUFJJVkFURSBPRkYpCiAgICAgV0VCS0lUX09QVElPTl9ERUZJTkUoRU5BQkxFX05PVElGSUNB
VElPTlMgIlRvZ2dsZSBEZXNrdG9wIE5vdGlmaWNhdGlvbnMgU3VwcG9ydCIgUFJJVkFURSBPRkYp
CiAgICAgV0VCS0lUX09QVElPTl9ERUZJTkUoRU5BQkxFX09SSUVOVEFUSU9OX0VWRU5UUyAiVG9n
Z2xlIE9yaWVudGF0aW9uIEV2ZW50cyBzdXBwb3J0IiBQUklWQVRFIE9GRikKICAgICBXRUJLSVRf
T1BUSU9OX0RFRklORShFTkFCTEVfUERGS0lUX1BMVUdJTiAiVG9nZ2xlIFBERktpdCBwbHVnaW4g
c3VwcG9ydCIgUFJJVkFURSBPRkYpCkluZGV4OiBUb29scy9DaGFuZ2VMb2cKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gVG9vbHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAxOTI2NTMpCisrKyBUb29scy9DaGFuZ2VMb2cJ
KHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNSBAQAorMjAxNS0xMS0xOSAgQWxleCBDaHJpc3Rl
bnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgorCisgICAgICAgIFJlbW92ZSB0aGUgbm9u
LU5ldHdvcmtQcm9jZXNzIGNvbmZpZ3VyYXRpb25zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTE0MTgKKworICAgICAgICBSZXZpZXdlZCBieSBHZW9m
ZiBHYXJlbi4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9tYWMvR2V0
UElEQWZ0ZXJBYm9ydGVkUHJvY2Vzc0xhdW5jaC5jcHA6CisgICAgICAgIChUZXN0V2ViS2l0QVBJ
OjpURVNUKToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcDoK
KyAgICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6OmdlbmVyYXRlUGFnZUNvbmZpZ3VyYXRpb24p
OgorCiAyMDE1LTExLTE5ICBBbGV4ZXkgUHJvc2t1cnlha292ICA8YXBAYXBwbGUuY29tPgogCiAg
ICAgICAgIExheW91dFRlc3RSZWxheSBwcm9jZXNzZXMgbGVhayBvbiBpT1MgdGVzdGVycwpJbmRl
eDogVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL21hYy9HZXRQSURBZnRlckFib3J0
ZWRQcm9jZXNzTGF1bmNoLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdDIvbWFjL0dldFBJREFmdGVyQWJvcnRlZFByb2Nlc3NMYXVuY2guY3BwCShyZXZp
c2lvbiAxOTI2MDEpCisrKyBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvbWFjL0dl
dFBJREFmdGVyQWJvcnRlZFByb2Nlc3NMYXVuY2guY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Miw3
ICs0Miw2IEBAIHN0YXRpYyB2b2lkIGRpZEZpbmlzaExvYWRGb3JGcmFtZShXS1BhZ2UKIFRFU1Qo
V2ViS2l0MiwgR2V0UElEQWZ0ZXJBYm9ydGVkUHJvY2Vzc0xhdW5jaCkKIHsKICAgICBXS1JldGFp
blB0cjxXS0NvbnRleHRSZWY+IGNvbnRleHQoQWRvcHRXSywgV0tDb250ZXh0Q3JlYXRlKCkpOwot
ICAgIFdLQ29udGV4dFNldFVzZXNOZXR3b3JrUHJvY2Vzcyhjb250ZXh0LmdldCgpLCB0cnVlKTsK
IAogICAgIFBsYXRmb3JtV2ViVmlldyB3ZWJWaWV3KGNvbnRleHQuZ2V0KCkpOwogCkluZGV4OiBU
b29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBU
b29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcAkocmV2aXNpb24gMTkyNjAx
KQorKysgVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTQwMCwxMSArNDAwLDYgQEAgV0tSZXRhaW5QdHI8V0tQYWdlQ29uZmlndXJhdGlv
blJlZj4gVGVzdAogCiAgICAgbV9nZW9sb2NhdGlvblByb3ZpZGVyID0gc3RkOjptYWtlX3VuaXF1
ZTxHZW9sb2NhdGlvblByb3ZpZGVyTW9jaz4obV9jb250ZXh0LmdldCgpKTsKIAotI2lmIFBMQVRG
T1JNKEVGTCkKLSAgICBXS0NvbnRleHRTZXRVc2VzTmV0d29ya1Byb2Nlc3MobV9jb250ZXh0Lmdl
dCgpLCBmYWxzZSk7Ci0gICAgV0tDb250ZXh0U2V0UHJvY2Vzc01vZGVsKG1fY29udGV4dC5nZXQo
KSwga1dLUHJvY2Vzc01vZGVsU2hhcmVkU2Vjb25kYXJ5UHJvY2Vzcyk7Ci0jZW5kaWYKLQogICAg
IGlmIChjb25zdCBjaGFyKiBkdW1wUmVuZGVyVHJlZVRlbXAgPSBsaWJyYXJ5UGF0aEZvclRlc3Rp
bmcoKSkgewogICAgICAgICBTdHJpbmcgdGVtcG9yYXJ5Rm9sZGVyID0gU3RyaW5nOjpmcm9tVVRG
OChkdW1wUmVuZGVyVHJlZVRlbXApOwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>265904</attachid>
            <date>2015-11-19 14:29:41 -0800</date>
            <delta_ts>2015-11-19 15:20:56 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-151418-20151119142929.patch</filename>
            <type>text/plain</type>
            <size>149104</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDE5MjY1OSkKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI3MyBAQAorMjAxNS0xMS0xOSAgQWxleCBD
aHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgorCisgICAgICAgIFJlbW92ZSB0
aGUgbm9uLU5ldHdvcmtQcm9jZXNzIGNvbmZpZ3VyYXRpb25zCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTE0MTgKKworICAgICAgICBSZXZpZXdlZCBi
eSBHZW9mZiBHYXJlbi4KKworICAgICAgICBUaGlzIHBhdGNoIGFzc3VtZXMgRU5BQkxFKE5FVFdP
UktfUFJPQ0VTUykgaXMgYWx3YXlzIDEsIHVzZXNOZXR3b3JrUHJvY2VzcyBpcyBhbHdheXMgdHJ1
ZSwgCisgICAgICAgIGFuZCBQcm9jZXNzTW9kZWwgaXMgYWx3YXlzIFByb2Nlc3NNb2RlbE11bHRp
cGxlU2Vjb25kYXJ5UHJvY2Vzc2VzLiAgSXQgZG9lcyB0aGlzIGJ5IHJlbW92aW5nCisgICAgICAg
IHRoZSBjaGVja3MgYW5kIHRoZSBjb2RlIHRoYXQgd291bGQgYmUgZXhlY3V0ZWQgd2l0aCBvdGhl
ciBjb25maWd1cmF0aW9ucy4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAq
IE5ldHdvcmtQcm9jZXNzL0VudHJ5UG9pbnQvbWFjL0xlZ2FjeVByb2Nlc3MvTmV0d29ya1Byb2Nl
c3NNYWluLm1tOgorICAgICAgICAoTmV0d29ya1Byb2Nlc3NNYWluKToKKyAgICAgICAgKiBOZXR3
b3JrUHJvY2Vzcy9FbnRyeVBvaW50L21hYy9YUENTZXJ2aWNlL05ldHdvcmtTZXJ2aWNlRW50cnlQ
b2ludC5tbToKKyAgICAgICAgKE5ldHdvcmtTZXJ2aWNlSW5pdGlhbGl6ZXIpOgorICAgICAgICAq
IE5ldHdvcmtQcm9jZXNzL0ZpbGVBUEkvTmV0d29ya0Jsb2JSZWdpc3RyeS5jcHA6CisgICAgICAg
IChXZWJLaXQ6Ok5ldHdvcmtCbG9iUmVnaXN0cnk6OmZpbGVzSW5CbG9iKToKKyAgICAgICAgKiBO
ZXR3b3JrUHJvY2Vzcy9GaWxlQVBJL05ldHdvcmtCbG9iUmVnaXN0cnkuaDoKKyAgICAgICAgKiBO
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHA6CisgICAgICAg
IChXZWJLaXQ6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpibG9iU2l6ZSk6CisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaDoKKyAg
ICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNz
YWdlcy5pbjoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZC5jcHA6CisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrTG9hZENsaWVudC5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdv
cmtMb2FkUGFyYW1ldGVycy5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtMb2FkUGFyYW1l
dGVyczo6TmV0d29ya0xvYWRQYXJhbWV0ZXJzKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrTG9hZFBhcmFtZXRlcnMuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
UHJvY2Vzcy5jcHA6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaDoK
KyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbjoKKyAg
ICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAg
ICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5oOgorICAgICAgICAqIE5l
dHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5tZXNzYWdlcy5pbjoKKyAgICAgICAg
KiBOZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrUHJvY2Vzc0NvY29hLm1tOgorICAgICAgICAo
V2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6Y2xlYXJEaXNrQ2FjaGUpOgorICAgICAgICAqIE5ldHdv
cmtQcm9jZXNzL2lvcy9OZXR3b3JrUHJvY2Vzc0lPUy5tbToKKyAgICAgICAgKiBOZXR3b3JrUHJv
Y2Vzcy9tYWMvTmV0d29ya0xvYWRNYWMubW06CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvbWFj
L05ldHdvcmtQcm9jZXNzTWFjLm1tOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL21hYy9OZXR3
b3JrUmVzb3VyY2VMb2FkZXJNYWMubW06CisgICAgICAgICogU2hhcmVkL0FQSS9jL1dLRGVwcmVj
YXRlZEZ1bmN0aW9ucy5jcHA6CisgICAgICAgIChXS0luc3BlY3RvclRvZ2dsZUphdmFTY3JpcHRQ
cm9maWxpbmcpOgorICAgICAgICAoV0tDb250ZXh0U2V0UHJvY2Vzc01vZGVsKToKKyAgICAgICAg
KFdLQ29udGV4dEdldFByb2Nlc3NNb2RlbCk6CisgICAgICAgIChXS0NvbnRleHRTZXRVc2VzTmV0
d29ya1Byb2Nlc3MpOgorICAgICAgICAoV0tHcmFwaGljc0NvbnRleHRHZXRDR0NvbnRleHQpOgor
ICAgICAgICAqIFNoYXJlZC9BdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdGlvbk1hbmFnZXIuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpBdXRoZW50aWNhdGlvbk1hbmFnZXI6OmRpZFJlY2VpdmVBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZSk6CisgICAgICAgICogU2hhcmVkL05ldHdvcmsvQ3VzdG9tUHJv
dG9jb2xzL0NvY29hL0N1c3RvbVByb3RvY29sTWFuYWdlckNvY29hLm1tOgorICAgICAgICAoV2Vi
S2l0OjpDdXN0b21Qcm90b2NvbE1hbmFnZXI6OmluaXRpYWxpemUpOgorICAgICAgICAoV2ViS2l0
OjpDdXN0b21Qcm90b2NvbE1hbmFnZXI6OmFkZEN1c3RvbVByb3RvY29sKToKKyAgICAgICAgKiBT
aGFyZWQvTmV0d29yay9DdXN0b21Qcm90b2NvbHMvQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyLmg6Cisg
ICAgICAgICogU2hhcmVkL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyczo6
ZGVjb2RlKToKKyAgICAgICAgKiBTaGFyZWQvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0NyZWF0aW9u
UGFyYW1ldGVycy5oOgorICAgICAgICAqIFNoYXJlZC9OZXR3b3JrL05ldHdvcmtQcm9jZXNzU3Vw
cGxlbWVudC5oOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc1N1cHBsZW1lbnQ6Omlu
aXRpYWxpemUpOgorICAgICAgICAqIFNoYXJlZC9OZXR3b3JrL05ldHdvcmtSZXNvdXJjZUxvYWRQ
YXJhbWV0ZXJzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZFBhcmFt
ZXRlcnM6OmRlY29kZSk6CisgICAgICAgICogU2hhcmVkL05ldHdvcmsvTmV0d29ya1Jlc291cmNl
TG9hZFBhcmFtZXRlcnMuaDoKKyAgICAgICAgKiBTaGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFy
YW1ldGVycy5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRl
cnM6OldlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMpOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
cm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOjplbmNvZGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
cm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOjpkZWNvZGUpOgorICAgICAgICAqIFNoYXJlZC9XZWJQ
cm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmg6CisgICAgICAgICogU2hhcmVkL21hYy9Db29raWVT
dG9yYWdlU2hpbS5oOgorICAgICAgICAqIFNoYXJlZC9tYWMvQ29va2llU3RvcmFnZVNoaW0ubW06
CisgICAgICAgICgtW1dLTlNVUkxTZXNzaW9uTG9jYWwgX2dldENvb2tpZUhlYWRlcnNGb3JUYXNr
OmNvbXBsZXRpb25IYW5kbGVyOl0pOgorICAgICAgICAqIFNoYXJlZC9tYWMvQ29va2llU3RvcmFn
ZVNoaW1MaWJyYXJ5LmNwcDoKKyAgICAgICAgKiBTaGFyZWQvbWFjL0Nvb2tpZVN0b3JhZ2VTaGlt
TGlicmFyeS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJUHJvY2Vzc1Bvb2xDb25maWd1
cmF0aW9uLmNwcDoKKyAgICAgICAgKEFQSTo6UHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uOjpjcmVh
dGVXaXRoTGVnYWN5T3B0aW9ucyk6CisgICAgICAgIChBUEk6OlByb2Nlc3NQb29sQ29uZmlndXJh
dGlvbjo6Y29weSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElQcm9jZXNzUG9vbENvbmZp
Z3VyYXRpb24uaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSVNlc3Npb24uY3BwOgorICAg
ICAgICAoQVBJOjpTZXNzaW9uOjp+U2Vzc2lvbik6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9D
L1dLQVBJQ2FzdC5oOgorICAgICAgICAoV2ViS2l0Ojp0b0FQSSk6CisgICAgICAgIChXZWJLaXQ6
OnRvRm9udFNtb290aGluZ0xldmVsKToKKyAgICAgICAgKFdlYktpdDo6dG9Qcm9jZXNzTW9kZWwp
OiBEZWxldGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHQuY3BwOgorICAg
ICAgICAoV0tDb250ZXh0R2V0Q2FjaGVNb2RlbCk6CisgICAgICAgIChXS0NvbnRleHRTZXRNYXhp
bXVtTnVtYmVyT2ZQcm9jZXNzZXMpOgorICAgICAgICAoV0tDb250ZXh0U2V0SmF2YVNjcmlwdEdh
cmJhZ2VDb2xsZWN0b3JUaW1lckVuYWJsZWQpOgorICAgICAgICAoV0tDb250ZXh0VXNlVGVzdGlu
Z05ldHdvcmtTZXNzaW9uKToKKyAgICAgICAgKFdLQ29udGV4dFNldFByb2Nlc3NNb2RlbCk6IERl
bGV0ZWQuCisgICAgICAgIChXS0NvbnRleHRHZXRQcm9jZXNzTW9kZWwpOiBEZWxldGVkLgorICAg
ICAgICAoV0tDb250ZXh0U2V0VXNlc05ldHdvcmtQcm9jZXNzKTogRGVsZXRlZC4KKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9D
L21hYy9XS0NvbnRleHRQcml2YXRlTWFjLm1tOgorICAgICAgICAoV0tDb250ZXh0R2V0TmV0d29y
a1Byb2Nlc3NJZGVudGlmaWVyKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJv
Y2Vzc0dyb3VwLm1tOgorICAgICAgICAoLVtXS1Byb2Nlc3NHcm91cCBpbml0V2l0aEluamVjdGVk
QnVuZGxlVVJMOl0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9v
bC5tbToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Bvb2xDb2NvYS5tbToK
KyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnVwZGF0ZVByb2Nlc3NTdXBwcmVzc2lv
blN0YXRlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnBsYXRmb3JtSW5pdGlh
bGl6ZVdlYlByb2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6cGxhdGZv
cm1Jbml0aWFsaXplTmV0d29ya1Byb2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNz
UG9vbDo6cGxhdGZvcm1JbnZhbGlkYXRlQ29udGV4dCk6CisgICAgICAgICogVUlQcm9jZXNzL0Rv
d25sb2Fkcy9Eb3dubG9hZFByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6RG93bmxvYWRQcm94
eTo6Y2FuY2VsKToKKyAgICAgICAgKFdlYktpdDo6RG93bmxvYWRQcm94eTo6aW52YWxpZGF0ZSk6
CisgICAgICAgICogVUlQcm9jZXNzL0xhdW5jaGVyL1Byb2Nlc3NMYXVuY2hlci5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OlByb2Nlc3NMYXVuY2hlcjo6cHJvY2Vzc1R5cGVBc1N0cmluZyk6CisgICAg
ICAgIChXZWJLaXQ6OlByb2Nlc3NMYXVuY2hlcjo6Z2V0UHJvY2Vzc1R5cGVGcm9tU3RyaW5nKToK
KyAgICAgICAgKiBVSVByb2Nlc3MvTGF1bmNoZXIvUHJvY2Vzc0xhdW5jaGVyLmg6CisgICAgICAg
ICogVUlQcm9jZXNzL0xhdW5jaGVyL21hYy9Qcm9jZXNzTGF1bmNoZXJNYWMubW06CisgICAgICAg
IChXZWJLaXQ6OmNvbXB1dGVQcm9jZXNzU2hpbVBhdGgpOgorICAgICAgICAoV2ViS2l0OjpzZXJ2
aWNlTmFtZSk6CisgICAgICAgIChXZWJLaXQ6OnNob3VsZExlYWtCb29zdCk6CisgICAgICAgIChX
ZWJLaXQ6OmNyZWF0ZVByb2Nlc3MpOgorICAgICAgICAqIFVJUHJvY2Vzcy9OZXR3b3JrL05ldHdv
cmtQcm9jZXNzUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc1Byb3h5
OjpzZXRJc0hvbGRpbmdMb2NrZWRGaWxlcyk6CisgICAgICAgICogVUlQcm9jZXNzL05ldHdvcmsv
TmV0d29ya1Byb2Nlc3NQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9OZXR3b3JrL05ldHdv
cmtQcm9jZXNzUHJveHkubWVzc2FnZXMuaW46CisgICAgICAgICogVUlQcm9jZXNzL05ldHdvcmsv
bWFjL05ldHdvcmtQcm9jZXNzUHJveHlNYWMubW06CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQ
cm9jZXNzUHJveHk6OnBsYXRmb3JtR2V0TGF1bmNoT3B0aW9ucyk6CisgICAgICAgICogVUlQcm9j
ZXNzL1Byb2Nlc3NNb2RlbC5oOiBSZW1vdmVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJDb29r
aWVNYW5hZ2VyUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJDb29raWVNYW5hZ2VyUHJv
eHk6OnNob3VsZFRlcm1pbmF0ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvb2tpZU1hbmFnZXJQ
cm94eTo6cmVmV2ViQ29udGV4dFN1cHBsZW1lbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb29r
aWVNYW5hZ2VyUHJveHk6OnNldEhUVFBDb29raWVBY2NlcHRQb2xpY3kpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJDb29raWVNYW5hZ2VyUHJveHk6OmdldEhUVFBDb29raWVBY2NlcHRQb2xpY3kpOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9XZWJJbnNwZWN0b3JQcm94eS5jcHA6CisgICAgICAgIChXZWJL
aXQ6OldlYkluc3BlY3RvclByb3h5OjppbnNwZWN0b3JQcm9jZXNzUG9vbCk6CisgICAgICAgICog
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94
eTo6V2ViUGFnZVByb3h5KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpyZWF0dGFj
aFRvV2ViUHJvY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6c2V0U2Vzc2lv
bklEKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojppbml0aWFsaXplV2ViUGFnZSk6
CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6V2ViUHJvY2Vzc1Bvb2w6OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQ
b29sOjpXZWJQcm9jZXNzUG9vbCk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjp+
V2ViUHJvY2Vzc1Bvb2wpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6aW5pdGlh
bGl6ZUNsaWVudCk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpzZXREb3dubG9h
ZENsaWVudCk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpzZXRNYXhpbXVtTnVt
YmVyT2ZQcm9jZXNzZXMpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6bmV0d29y
a2luZ1Byb2Nlc3NDb25uZWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6
Omxhbmd1YWdlQ2hhbmdlZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjp0ZXh0
Q2hlY2tlclN0YXRlQ2hhbmdlZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpl
bnN1cmVOZXR3b3JrUHJvY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpn
ZXROZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNz
UG9vbDo6ZW5zdXJlRGF0YWJhc2VQcm9jZXNzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vz
c1Bvb2w6OnNldEFueVBhZ2VHcm91cE1pZ2h0SGF2ZVByaXZhdGVCcm93c2luZ0VuYWJsZWQpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6cHJvY2Vzc0RpZENhY2hlUGFnZSk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpjcmVhdGVOZXdXZWJQcm9jZXNzKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OmRpc2Nvbm5lY3RQcm9jZXNzKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OmNyZWF0ZVdlYlBhZ2UpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQcm9jZXNzUG9vbDo6ZG93bmxvYWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9j
ZXNzUG9vbDo6cmVzdW1lRG93bmxvYWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9v
bDo6cG9zdE1lc3NhZ2VUb0luamVjdGVkQnVuZGxlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJv
Y2Vzc1Bvb2w6OnNldEFkZGl0aW9uYWxQbHVnaW5zRGlyZWN0b3J5KToKKyAgICAgICAgKFdlYktp
dDo6V2ViUHJvY2Vzc1Bvb2w6Om5ldHdvcmtQcm9jZXNzSWRlbnRpZmllcik6CisgICAgICAgIChX
ZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpzZXRBbHdheXNVc2VzQ29tcGxleFRleHRDb2RlUGF0aCk6
CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpzZXRDYW5IYW5kbGVIVFRQU1NlcnZl
clRydXN0RXZhbHVhdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpyZWdp
c3RlclVSTFNjaGVtZUFzTG9jYWwpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6
c2V0Q2FjaGVNb2RlbCk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpzZXREZWZh
dWx0UmVxdWVzdFRpbWVvdXRJbnRlcnZhbCk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQ
b29sOjpjcmVhdGVEb3dubG9hZFByb3h5KToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bv
b2w6OmFkZE1lc3NhZ2VSZWNlaXZlcik6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29s
Ojp1c2VUZXN0aW5nTmV0d29ya1Nlc3Npb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNz
UG9vbDo6YWxsb3dTcGVjaWZpY0hUVFBTQ2VydGlmaWNhdGVGb3JIb3N0KToKKyAgICAgICAgKFdl
YktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnJlcXVlc3RXZWJDb250ZW50U3RhdGlzdGljcyk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpyZXF1ZXN0TmV0d29ya2luZ1N0YXRpc3RpY3Mp
OgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6aGFuZGxlTWVzc2FnZSk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpzZXRQcm9jZXNzTW9kZWwpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6c2V0VXNlc05ldHdvcmtQcm9jZXNzKTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnVzZXNOZXR3b3JrUHJv
Y2Vzcyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjplbnN1cmVT
aGFyZWRXZWJQcm9jZXNzKTogRGVsZXRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vz
c1Bvb2wuaDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnNlbmRUb05ldHdvcmtp
bmdQcm9jZXNzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnNlbmRUb05ldHdv
cmtpbmdQcm9jZXNzUmVsYXVuY2hpbmdJZk5lY2Vzc2FyeSk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlByb2Nlc3NQb29sOjpzZW5kVG9BbGxQcm9jZXNzZXNSZWxhdW5jaGluZ1RoZW1JZk5lY2Vzc2Fy
eSk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpzZW5kVG9PbmVQcm9jZXNzKToK
KyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcDoKKyAgICAgICAgKFdlYktp
dDo6V2ViUHJvY2Vzc1Byb3h5OjpyZW1vdmVXZWJQYWdlKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
UHJvY2Vzc1Byb3h5OjpnZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbik6CisgICAgICAgIChXZWJL
aXQ6OldlYlByb2Nlc3NQcm94eTo6Z2V0TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5OjpnZXREYXRhYmFzZVByb2Nlc3NDb25uZWN0aW9u
KToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5Ojp1cGRhdGVUZXh0Q2hlY2tlclN0
YXRlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5OjpkaWRTYXZlVG9QYWdlQ2Fj
aGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OmRpZENhbmNlbFByb2Nlc3NT
dXNwZW5zaW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5OjpyZWluc3RhdGVO
ZXR3b3JrUHJvY2Vzc0Fzc2VydGlvblN0YXRlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vz
c1Byb3h5OjpkaWRTZXRBc3NlcnRpb25TdGF0ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nl
c3NQcm94eTo6Y3JlYXRlRG93bmxvYWRQcm94eSk6IERlbGV0ZWQuCisgICAgICAgICogVUlQcm9j
ZXNzL1dlYlByb2Nlc3NQcm94eS5oOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6
OnRocm90dGxlcik6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5tZXNzYWdl
cy5pbjoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6On5XZWJzaXRlRGF0YVN0b3Jl
KToKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6Y2xvbmVTZXNzaW9uRGF0YSk6
CisgICAgICAgICogV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAq
IFdlYktpdDJQcmVmaXguaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0ZpbGVBUEkvQmxvYlJlZ2lz
dHJ5UHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpCbG9iUmVnaXN0cnlQcm94eTo6cmVnaXN0
ZXJGaWxlQmxvYlVSTCk6CisgICAgICAgIChXZWJLaXQ6OkJsb2JSZWdpc3RyeVByb3h5OjpyZWdp
c3RlckJsb2JVUkwpOgorICAgICAgICAoV2ViS2l0OjpCbG9iUmVnaXN0cnlQcm94eTo6dW5yZWdp
c3RlckJsb2JVUkwpOgorICAgICAgICAoV2ViS2l0OjpCbG9iUmVnaXN0cnlQcm94eTo6cmVnaXN0
ZXJCbG9iVVJMRm9yU2xpY2UpOgorICAgICAgICAoV2ViS2l0OjpCbG9iUmVnaXN0cnlQcm94eTo6
YmxvYlNpemUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvRmlsZUFQSS9CbG9iUmVnaXN0cnlQcm94
eS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rp
b24uY3BwOgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5l
Y3Rpb24uaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25u
ZWN0aW9uLm1lc3NhZ2VzLmluOgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNv
dXJjZUxvYWRTY2hlZHVsZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRT
Y2hlZHVsZXI6Om5ldHdvcmtQcm9jZXNzQ3Jhc2hlZCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9O
ZXR3b3JrL1dlYlJlc291cmNlTG9hZFNjaGVkdWxlci5oOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
TmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgICogV2ViUHJvY2Vzcy9OZXR3
b3JrL1dlYlJlc291cmNlTG9hZGVyLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9OZXR3b3JrL1dl
YlJlc291cmNlTG9hZGVyLm1lc3NhZ2VzLmluOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lu
cy9OZXRzY2FwZS9OZXRzY2FwZUJyb3dzZXJGdW5jcy5jcHA6CisgICAgICAgIChXZWJLaXQ6Omlu
aXRpYWxpemVCcm93c2VyRnVuY3MpOgorICAgICAgICAoV2ViS2l0OjpuZXRzY2FwZUJyb3dzZXJG
dW5jcyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1
Z2luLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0c2NhcGVQbHVnaW46OnJlZ2lzdGVyUmVkaXJl
Y3QpOgorICAgICAgICAoV2ViS2l0OjpOZXRzY2FwZVBsdWdpbjo6dXJsUmVkaXJlY3RSZXNwb25z
ZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0
ZWdpZXMuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNvb2tp
ZXNGb3JET00pOgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnNldENv
b2tpZXNGcm9tRE9NKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpj
b29raWVzRW5hYmxlZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBsYXRmb3JtU3RyYXRlZ2llczo6
Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF0
Zm9ybVN0cmF0ZWdpZXM6OmdldFJhd0Nvb2tpZXMpOgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF0
Zm9ybVN0cmF0ZWdpZXM6OmRlbGV0ZUNvb2tpZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBsYXRm
b3JtU3RyYXRlZ2llczo6cmVzb3VyY2VMb2FkU2NoZWR1bGVyKToKKyAgICAgICAgKFdlYktpdDo6
V2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjcmVhdGVQaW5nSGFuZGxlKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjcmVhdGVCbG9iUmVnaXN0cnkp
OgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVn
aWVzLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6V2ViRnJhbWU6OnN0YXJ0RG93bmxvYWQpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJGcmFtZTo6Y29udmVydE1haW5SZXNvdXJjZUxvYWRUb0Rvd25sb2FkKToKKyAgICAgICAgKFdl
YktpdDo6V2ViRnJhbWU6OnNvdXJjZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNz
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6V2ViUHJvY2Vzcyk6CisgICAgICAg
IChXZWJLaXQ6OldlYlByb2Nlc3M6OmluaXRpYWxpemVDb25uZWN0aW9uKToKKyAgICAgICAgKFdl
YktpdDo6V2ViUHJvY2Vzczo6aW5pdGlhbGl6ZVdlYlByb2Nlc3MpOgorICAgICAgICAoV2ViS2l0
OjpXZWJQcm9jZXNzOjplbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24pOgorICAgICAgICAo
V2ViS2l0OjpXZWJQcm9jZXNzOjpyZWdpc3RlclVSTFNjaGVtZUFzRW1wdHlEb2N1bWVudCk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OmRlc3Ryb3lQcml2YXRlQnJvd3NpbmdTZXNzaW9u
KToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6cGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25N
YW5hZ2VyKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6c2hvdWxkVGVybWluYXRlKToK
KyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6c2V0SW5qZWN0ZWRCdW5kbGVQYXJhbWV0ZXJz
KToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6bmV0d29ya0Nvbm5lY3Rpb24pOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjp3ZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXIpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjp3ZWJUb0RhdGFiYXNlUHJvY2Vzc0Nvbm5lY3Rpb25D
bG9zZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpzZXRFbmhhbmNlZEFjY2Vzc2li
aWxpdHkpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpwcmVmZXRjaEROUyk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OmRpZENyZWF0ZURvd25sb2FkKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6ZGlkRGVzdHJveURvd25sb2FkKTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6ZG93bmxvYWRQcm94eUNvbm5lY3Rpb24pOiBE
ZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpkb3dubG9hZHNBdXRoZW50aWNh
dGlvbk1hbmFnZXIpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpkb3du
bG9hZE1hbmFnZXIpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjp1c2Vz
TmV0d29ya1Byb2Nlc3MpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpk
b3dubG9hZFJlcXVlc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpy
ZXN1bWVEb3dubG9hZCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OmNh
bmNlbERvd25sb2FkKTogRGVsZXRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nlc3Mu
aDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6dGV4dENoZWNrZXJTdGF0ZSk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OmV2ZW50RGlzcGF0Y2hlcik6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluOgorICAgICAgICAqIFdlYlByb2Nlc3Mvc291
cC9XZWJQcm9jZXNzU291cC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OnBsYXRm
b3JtU2V0Q2FjaGVNb2RlbCk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OnBsYXRmb3Jt
Q2xlYXJSZXNvdXJjZUNhY2hlcyk6CisgICAgICAgIChXZWJLaXQ6OnNldFNvdXBTZXNzaW9uQWNj
ZXB0TGFuZ3VhZ2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpwbGF0Zm9ybUluaXRp
YWxpemVXZWJQcm9jZXNzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6cGxhdGZvcm1U
ZXJtaW5hdGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpzZXRJZ25vcmVUTFNFcnJv
cnMpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjphbGxvd1NwZWNpZmljSFRUUFNDZXJ0
aWZpY2F0ZUZvckhvc3QpOgorICAgICAgICAqIGNvbmZpZy5oOgorCiAyMDE1LTExLTE5ICBDc2Fi
YSBPc3p0cm9nb27DoWMgIDxvc3N5QHdlYmtpdC5vcmc+CiAKICAgICAgICAgW0VGTF0gRml4IFdy
ZXR1cm4tdHlwZSBjbGFuZyB3YXJuaW5nIGluIEVXSzJVbml0VGVzdEJhc2UuY3BwCkluZGV4OiBT
b3VyY2UvV2ViS2l0Mi9DTWFrZUxpc3RzLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
Mi9DTWFrZUxpc3RzLnR4dAkocmV2aXNpb24gMTkyNjAxKQorKysgU291cmNlL1dlYktpdDIvQ01h
a2VMaXN0cy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTgwMywxNiArODAzLDEzIEBAIGlmIChXZWJL
aXQyX1dlYlByb2Nlc3NfT1VUUFVUX05BTUUpCiAgICAgc2V0X3RhcmdldF9wcm9wZXJ0aWVzKFdl
YlByb2Nlc3MgUFJPUEVSVElFUyBPVVRQVVRfTkFNRSAke1dlYktpdDJfV2ViUHJvY2Vzc19PVVRQ
VVRfTkFNRX0pCiBlbmRpZiAoKQogCi1pZiAoRU5BQkxFX05FVFdPUktfUFJPQ0VTUykKLSAgICBh
ZGRfZXhlY3V0YWJsZShOZXR3b3JrUHJvY2VzcyAke05ldHdvcmtQcm9jZXNzX1NPVVJDRVN9KQot
ICAgIGFkZF93ZWJraXQyX3ByZWZpeF9oZWFkZXIoTmV0d29ya1Byb2Nlc3MpCi0gICAgdGFyZ2V0
X2xpbmtfbGlicmFyaWVzKE5ldHdvcmtQcm9jZXNzICR7TmV0d29ya1Byb2Nlc3NfTElCUkFSSUVT
fSkKLSAgICBzZXRfdGFyZ2V0X3Byb3BlcnRpZXMoTmV0d29ya1Byb2Nlc3MgUFJPUEVSVElFUyBG
T0xERVIgIldlYktpdCIpCi0gICAgaW5zdGFsbChUQVJHRVRTIE5ldHdvcmtQcm9jZXNzIERFU1RJ
TkFUSU9OICIke0xJQkVYRUNfSU5TVEFMTF9ESVJ9IikKK2FkZF9leGVjdXRhYmxlKE5ldHdvcmtQ
cm9jZXNzICR7TmV0d29ya1Byb2Nlc3NfU09VUkNFU30pCithZGRfd2Via2l0Ml9wcmVmaXhfaGVh
ZGVyKE5ldHdvcmtQcm9jZXNzKQordGFyZ2V0X2xpbmtfbGlicmFyaWVzKE5ldHdvcmtQcm9jZXNz
ICR7TmV0d29ya1Byb2Nlc3NfTElCUkFSSUVTfSkKK3NldF90YXJnZXRfcHJvcGVydGllcyhOZXR3
b3JrUHJvY2VzcyBQUk9QRVJUSUVTIEZPTERFUiAiV2ViS2l0IikKIAotICAgIGlmIChXZWJLaXQy
X05ldHdvcmtQcm9jZXNzX09VVFBVVF9OQU1FKQotICAgICAgICBzZXRfdGFyZ2V0X3Byb3BlcnRp
ZXMoTmV0d29ya1Byb2Nlc3MgUFJPUEVSVElFUyBPVVRQVVRfTkFNRSAke1dlYktpdDJfTmV0d29y
a1Byb2Nlc3NfT1VUUFVUX05BTUV9KQotICAgIGVuZGlmICgpCitpZiAoV2ViS2l0Ml9OZXR3b3Jr
UHJvY2Vzc19PVVRQVVRfTkFNRSkKKyAgICBzZXRfdGFyZ2V0X3Byb3BlcnRpZXMoTmV0d29ya1By
b2Nlc3MgUFJPUEVSVElFUyBPVVRQVVRfTkFNRSAke1dlYktpdDJfTmV0d29ya1Byb2Nlc3NfT1VU
UFVUX05BTUV9KQogZW5kaWYgKCkKIAogaWYgKEVOQUJMRV9QTFVHSU5fUFJPQ0VTUykKQEAgLTg0
Nyw3ICs4NDQsNyBAQCBzZXRfdGFyZ2V0X3Byb3BlcnRpZXMoV2ViS2l0MiBQUk9QRVJUSUVTCiBp
ZiAoQVBQTEUpCiAgICAgV0VCS0lUX0ZSQU1FV09SSyhXZWJLaXQyKQogZWxzZSAoKQotICAgIGlu
c3RhbGwoVEFSR0VUUyBXZWJLaXQyIFdlYlByb2Nlc3MKKyAgICBpbnN0YWxsKFRBUkdFVFMgV2Vi
S2l0MiBXZWJQcm9jZXNzIE5ldHdvcmtQcm9jZXNzCiAgICAgICAgIExJQlJBUlkgREVTVElOQVRJ
T04gIiR7TElCX0lOU1RBTExfRElSfSIKICAgICAgICAgUlVOVElNRSBERVNUSU5BVElPTiAiJHtM
SUJFWEVDX0lOU1RBTExfRElSfSIKICAgICApCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJLaXQy
UHJlZml4LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViS2l0MlByZWZpeC5oCShy
ZXZpc2lvbiAxOTI2MDEpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJLaXQyUHJlZml4LmgJKHdvcmtp
bmcgY29weSkKQEAgLTM2LDggKzM2LDYgQEAKIAogI2RlZmluZSBFTkFCTEVfV0VCX1BST0NFU1Nf
U0FOREJPWCAxCiAKLSNkZWZpbmUgRU5BQkxFX05FVFdPUktfUFJPQ0VTUyAxCi0KICNkZWZpbmUg
RU5BQkxFX0RBVEFCQVNFX1BST0NFU1MgMQogCiAjZGVmaW5lIEVOQUJMRV9NRU1PUllfU0FNUExF
UiAxCkBAIC01OSw3ICs1Nyw2IEBACiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKEdUSykKLSNkZWZp
bmUgRU5BQkxFX05FVFdPUktfUFJPQ0VTUyAxCiAjZGVmaW5lIEVOQUJMRV9TSEFSRUFCTEVfUkVT
T1VSQ0UgMQogI2VuZGlmCiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL2NvbmZpZy5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQyL2NvbmZpZy5oCShyZXZpc2lvbiAxOTI2MDEpCisrKyBTb3Vy
Y2UvV2ViS2l0Mi9jb25maWcuaAkod29ya2luZyBjb3B5KQpAQCAtOTEsNyArOTEsNyBAQAogI2Vu
ZGlmCiAKICNpZm5kZWYgRU5BQkxFX05FVFdPUktfQ0FDSEUKLSNpZiBFTkFCTEUoTkVUV09SS19Q
Uk9DRVNTKSAmJiAoUExBVEZPUk0oQ09DT0EpIHx8IFBMQVRGT1JNKEdUSykpCisjaWYgUExBVEZP
Uk0oQ09DT0EpIHx8IFBMQVRGT1JNKEdUSykKICNkZWZpbmUgRU5BQkxFX05FVFdPUktfQ0FDSEUg
MQogI2Vsc2UKICNkZWZpbmUgRU5BQkxFX05FVFdPUktfQ0FDSEUgMApJbmRleDogU291cmNlL1dl
YktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzLmNwcAkocmV2aXNpb24gMTkyNjAxKQorKysgU291cmNlL1dlYktpdDIv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0yNiw4ICsyNiw2IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAi
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaCIKIAotI2lmIEVOQUJMRShORVRXT1JLX1BS
T0NFU1MpCi0KICNpbmNsdWRlICJOZXR3b3JrQmxvYlJlZ2lzdHJ5LmgiCiAjaW5jbHVkZSAiTmV0
d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3NNZXNzYWdlcy5oIgogI2luY2x1ZGUgIk5ldHdvcmtM
b2FkLmgiCkBAIC0yNzQsNSArMjcyLDMgQEAgdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzczo6YmxvYgogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQotI2VuZGlmIC8vIEVOQUJM
RShORVRXT1JLX1BST0NFU1MpCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgJKHJldmlz
aW9uIDE5MjYwMSkKKysrIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzLmgJKHdvcmtpbmcgY29weSkKQEAgLTI2LDggKzI2LDYgQEAKICNp
Zm5kZWYgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3NfaAogI2RlZmluZSBOZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2Vzc19oCiAKLSNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQotCiAj
aW5jbHVkZSAiQmxvY2tpbmdSZXNwb25zZU1hcC5oIgogI2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIK
ICNpbmNsdWRlICJOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzc01lc3NhZ2VzLmgiCkBAIC0x
MDIsNiArMTAwLDQgQEAgcHJpdmF0ZToKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKLSNlbmRp
ZiAvLyBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQotCiAjZW5kaWYgLy8gTmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3NfaApJbmRleDogU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mu
bWVzc2FnZXMuaW4JKHJldmlzaW9uIDE5MjYwMSkKKysrIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCSh3b3JraW5n
IGNvcHkpCkBAIC0yMCw4ICsyMCw2IEBACiAjIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCiAjIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCiAKLSNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQotCiBtZXNzYWdlcyAtPiBOZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyBMZWdhY3lSZWNlaXZlciB7CiAKICAgICBTY2hlZHVs
ZVJlc291cmNlTG9hZChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzIHJlc291
cmNlTG9hZFBhcmFtZXRlcnMpCkBAIC00OCw1ICs0NiwzIEBAIG1lc3NhZ2VzIC0+IE5ldHdvcmtD
b25uZWN0aW9uVG9XZWJQcm9jZXMKICAgICBVbnJlZ2lzdGVyQmxvYlVSTChXZWJDb3JlOjpVUkwg
dXJsKQogICAgIEJsb2JTaXplKFdlYkNvcmU6OlVSTCB1cmwpIC0+ICh1aW50NjRfdCByZXN1bHRT
aXplKQogfQotCi0jZW5kaWYgLy8gRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZC5jcHAJKHJldmlzaW9uIDE5
MjYwMSkKKysrIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMjQsOCArMjQsNiBAQAogICovCiAKICNpbmNsdWRlICJjb25maWcu
aCIKLQotI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCiAjaW5jbHVkZSAiTmV0d29ya0xvYWQu
aCIKIAogI2luY2x1ZGUgIkF1dGhlbnRpY2F0aW9uTWFuYWdlci5oIgpAQCAtMzcxLDUgKzM2OSwz
IEBAIHZvaWQgTmV0d29ya0xvYWQ6OnJlY2VpdmVkQ2FuY2VsbGF0aW9uKFIKICNlbmRpZiAvLyAh
VVNFKE5FVFdPUktfU0VTU0lPTikKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KLSNlbmRpZiAv
LyBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQpJbmRleDogU291cmNlL1dlYktpdDIvTmV0d29ya1By
b2Nlc3MvTmV0d29ya0xvYWQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrTG9hZC5oCShyZXZpc2lvbiAxOTI2MDEpCisrKyBTb3VyY2UvV2ViS2l0
Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw4ICsy
Niw2IEBACiAjaWZuZGVmIE5ldHdvcmtMb2FkX2gKICNkZWZpbmUgTmV0d29ya0xvYWRfaAogCi0j
aWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKLQogI2luY2x1ZGUgIk5ldHdvcmtMb2FkQ2xpZW50
LmgiCiAjaW5jbHVkZSAiTmV0d29ya0xvYWRQYXJhbWV0ZXJzLmgiCiAjaW5jbHVkZSAiUmVtb3Rl
TmV0d29ya2luZ0NvbnRleHQuaCIKQEAgLTEyNiw2ICsxMjQsNCBAQCBwcml2YXRlOgogCiB9IC8v
IG5hbWVzcGFjZSBXZWJLaXQKIAotI2VuZGlmIC8vIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCi0K
ICNlbmRpZiAvLyBOZXR3b3JrTG9hZF9oCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrTG9hZENsaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL05l
dHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkQ2xpZW50LmgJKHJldmlzaW9uIDE5MjYwMSkKKysrIFNv
dXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkQ2xpZW50LmgJKHdvcmtpbmcg
Y29weSkKQEAgLTI2LDggKzI2LDYgQEAKICNpZm5kZWYgTmV0d29ya0xvYWRDbGllbnRfaAogI2Rl
ZmluZSBOZXR3b3JrTG9hZENsaWVudF9oCiAKLSNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQot
CiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZUVycm9yLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9S
ZXNvdXJjZVJlcXVlc3QuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlUmVzcG9uc2UuaD4K
QEAgLTY2LDcgKzY0LDUgQEAgcHVibGljOgogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAotI2Vu
ZGlmIC8vIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCi0KICNlbmRpZiAvLyBOZXR3b3JrTG9hZENs
aWVudF9oCiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2Fk
UGFyYW1ldGVycy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya0xvYWRQYXJhbWV0ZXJzLmNwcAkocmV2aXNpb24gMTkyNjAxKQorKysgU291cmNl
L1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRQYXJhbWV0ZXJzLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMjQsOCArMjQsNiBAQAogICovCiAKICNpbmNsdWRlICJjb25maWcuaCIKLQot
I2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCiAjaW5jbHVkZSAiTmV0d29ya0xvYWRQYXJhbWV0
ZXJzLmgiCiAKICNpbmNsdWRlICJOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycy5oIgpAQCAt
NDcsNSArNDUsMyBAQCBOZXR3b3JrTG9hZFBhcmFtZXRlcnM6Ok5ldHdvcmtMb2FkUGFyYW1lCiB9
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAotCi0jZW5kaWYgLy8gRU5BQkxFKE5FVFdPUktfUFJP
Q0VTUykKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkUGFy
YW1ldGVycy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05l
dHdvcmtMb2FkUGFyYW1ldGVycy5oCShyZXZpc2lvbiAxOTI2MDEpCisrKyBTb3VyY2UvV2ViS2l0
Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZFBhcmFtZXRlcnMuaAkod29ya2luZyBjb3B5KQpA
QCAtMjYsOCArMjYsNiBAQAogI2lmbmRlZiBOZXR3b3JrTG9hZFBhcmFtZXRlcnNfaAogI2RlZmlu
ZSBOZXR3b3JrTG9hZFBhcmFtZXRlcnNfaAogCi0jaWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykK
LQogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VMb2FkZXJPcHRpb25zLmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9SZXNvdXJjZVJlcXVlc3QuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Nlc3Npb25JRC5o
PgpAQCAtNTUsNiArNTMsNCBAQCBwdWJsaWM6CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCi0j
ZW5kaWYgLy8gRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKLQogI2VuZGlmIC8vIE5ldHdvcmtMb2Fk
UGFyYW1ldGVyc19oCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
UHJvY2Vzcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya1Byb2Nlc3MuY3BwCShyZXZpc2lvbiAxOTI2MDEpCisrKyBTb3VyY2UvV2ViS2l0Mi9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2LDgg
KzI2LDYgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJOZXR3b3JrUHJvY2Vzcy5o
IgogCi0jaWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKLQogI2luY2x1ZGUgIkFyZ3VtZW50Q29k
ZXJzLmgiCiAjaW5jbHVkZSAiQXR0YWNobWVudC5oIgogI2luY2x1ZGUgIkF1dGhlbnRpY2F0aW9u
TWFuYWdlci5oIgpAQCAtNTU0LDUgKzU1MiwzIEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnBsYXRm
b3JtTG93TWVtb3J5SGEKICNlbmRpZgogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQotI2VuZGlm
IC8vIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL05l
dHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgJKHJldmlzaW9uIDE5MjYwMSkKKysrIFNvdXJj
ZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgJKHdvcmtpbmcgY29weSkK
QEAgLTI2LDggKzI2LDYgQEAKICNpZm5kZWYgTmV0d29ya1Byb2Nlc3NfaAogI2RlZmluZSBOZXR3
b3JrUHJvY2Vzc19oCiAKLSNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQotCiAjaW5jbHVkZSAi
Q2FjaGVNb2RlbC5oIgogI2luY2x1ZGUgIkNoaWxkUHJvY2Vzcy5oIgogI2luY2x1ZGUgIkRvd25s
b2FkTWFuYWdlci5oIgpAQCAtMTk3LDYgKzE5NSw0IEBAIHByaXZhdGU6CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYktpdAogCi0jZW5kaWYgLy8gRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKLQogI2VuZGlm
IC8vIE5ldHdvcmtQcm9jZXNzX2gKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNz
L05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQy
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluCShyZXZpc2lvbiAxOTI2
MDEpCisrKyBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNz
YWdlcy5pbgkod29ya2luZyBjb3B5KQpAQCAtMjAsOCArMjAsNiBAQAogIyBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQogIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgogCi0jaWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKLQog
bWVzc2FnZXMgLT4gTmV0d29ya1Byb2Nlc3MgTGVnYWN5UmVjZWl2ZXIgewogICAgICMgSW5pdGlh
bGl6ZXMgdGhlIG5ldHdvcmsgcHJvY2Vzcy4KICAgICBJbml0aWFsaXplTmV0d29ya1Byb2Nlc3Mo
c3RydWN0IFdlYktpdDo6TmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMgcHJvY2Vzc0Ny
ZWF0aW9uUGFyYW1ldGVycykKQEAgLTYzLDUgKzYxLDMgQEAgbWVzc2FnZXMgLT4gTmV0d29ya1By
b2Nlc3MgTGVnYWN5UmVjZWl2ZQogICAgIENhbmNlbFByZXBhcmVUb1N1c3BlbmQoKQogICAgIFBy
b2Nlc3NEaWRSZXN1bWUoKQogfQotCi0jZW5kaWYgLy8gRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykK
SW5kZXg6IFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRl
ci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Jlc291cmNlTG9hZGVyLmNwcAkocmV2aXNpb24gMTkyNjAxKQorKysgU291cmNlL1dlYktpdDIv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMjYsOCArMjYsNiBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIk5ldHdvcmtS
ZXNvdXJjZUxvYWRlci5oIgogCi0jaWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKLQogI2luY2x1
ZGUgIkRhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiTmV0
d29ya0Jsb2JSZWdpc3RyeS5oIgpAQCAtNTgxLDUgKzU3OSwzIEBAIHZvaWQgTmV0d29ya1Jlc291
cmNlTG9hZGVyOjpjb250aW51ZUNhbkEKICNlbmRpZgogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
LQotI2VuZGlmIC8vIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCkluZGV4OiBTb3VyY2UvV2ViS2l0
Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuaAkocmV2
aXNpb24gMTkyNjAxKQorKysgU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jl
c291cmNlTG9hZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTI2LDggKzI2LDYgQEAKICNpZm5kZWYg
TmV0d29ya1Jlc291cmNlTG9hZGVyX2gKICNkZWZpbmUgTmV0d29ya1Jlc291cmNlTG9hZGVyX2gK
IAotI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCi0KICNpbmNsdWRlICJNZXNzYWdlU2VuZGVy
LmgiCiAjaW5jbHVkZSAiTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3NNZXNzYWdlcy5oIgog
I2luY2x1ZGUgIk5ldHdvcmtMb2FkQ2xpZW50LmgiCkBAIC0xNjksNiArMTY3LDQgQEAgcHJpdmF0
ZToKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKLSNlbmRpZiAvLyBFTkFCTEUoTkVUV09SS19Q
Uk9DRVNTKQotCiAjZW5kaWYgLy8gTmV0d29ya1Jlc291cmNlTG9hZGVyX2gKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5tZXNzYWdlcy5p
bgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVz
b3VyY2VMb2FkZXIubWVzc2FnZXMuaW4JKHJldmlzaW9uIDE5MjYwMSkKKysrIFNvdXJjZS9XZWJL
aXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5tZXNzYWdlcy5pbgkod29y
a2luZyBjb3B5KQpAQCAtMjAsOCArMjAsNiBAQAogIyBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQogIyBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgogCi0jaWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKLQogbWVzc2FnZXMgLT4g
TmV0d29ya1Jlc291cmNlTG9hZGVyIExlZ2FjeVJlY2VpdmVyIHsKIAogICAgIENvbnRpbnVlV2ls
bFNlbmRSZXF1ZXN0KFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCByZXF1ZXN0KQpAQCAtMzAsNSAr
MjgsMyBAQCBtZXNzYWdlcyAtPiBOZXR3b3JrUmVzb3VyY2VMb2FkZXIgTGVnYWN5CiAgICAgQ29u
dGludWVDYW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNwYWNlKGJvb2wgY2FuQXV0aGVu
dGljYXRlKQogI2VuZGlmCiB9Ci0KLSNlbmRpZiAvLyBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQpJ
bmRleDogU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvRW50cnlQb2ludC9tYWMvTGVnYWN5
UHJvY2Vzcy9OZXR3b3JrUHJvY2Vzc01haW4ubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dDIvTmV0d29ya1Byb2Nlc3MvRW50cnlQb2ludC9tYWMvTGVnYWN5UHJvY2Vzcy9OZXR3b3JrUHJv
Y2Vzc01haW4ubW0JKHJldmlzaW9uIDE5MjYwMSkKKysrIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQ
cm9jZXNzL0VudHJ5UG9pbnQvbWFjL0xlZ2FjeVByb2Nlc3MvTmV0d29ya1Byb2Nlc3NNYWluLm1t
CSh3b3JraW5nIGNvcHkpCkBAIC0yNSw4ICsyNSw2IEBACiAKICNpbXBvcnQgImNvbmZpZy5oIgog
Ci0jaWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKLQogI2ltcG9ydCAiQ2hpbGRQcm9jZXNzRW50
cnlQb2ludC5oIgogI2ltcG9ydCAiTmV0d29ya1Byb2Nlc3MuaCIKICNpbXBvcnQgIldLQmFzZS5o
IgpAQCAtMzksNSArMzcsMyBAQCBpbnQgTmV0d29ya1Byb2Nlc3NNYWluKGludCBhcmdjLCBjaGFy
KiogCiB7CiAgICAgcmV0dXJuIENoaWxkUHJvY2Vzc01haW48TmV0d29ya1Byb2Nlc3MsIENoaWxk
UHJvY2Vzc01haW5EZWxlZ2F0ZT4oYXJnYywgYXJndik7CiB9Ci0KLSNlbmRpZiAvLyBFTkFCTEUo
TkVUV09SS19QUk9DRVNTKQpJbmRleDogU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvRW50
cnlQb2ludC9tYWMvWFBDU2VydmljZS9OZXR3b3JrU2VydmljZUVudHJ5UG9pbnQubW0KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvRW50cnlQb2ludC9tYWMvWFBD
U2VydmljZS9OZXR3b3JrU2VydmljZUVudHJ5UG9pbnQubW0JKHJldmlzaW9uIDE5MjYwMSkKKysr
IFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL0VudHJ5UG9pbnQvbWFjL1hQQ1NlcnZpY2Uv
TmV0d29ya1NlcnZpY2VFbnRyeVBvaW50Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC01Miw3ICs1Miw2
IEBAIGV4dGVybiAiQyIgV0tfRVhQT1JUIHZvaWQgTmV0d29ya1NlcnZpY2UKIAogdm9pZCBOZXR3
b3JrU2VydmljZUluaXRpYWxpemVyKHhwY19jb25uZWN0aW9uX3QgY29ubmVjdGlvbiwgeHBjX29i
amVjdF90IGluaXRpYWxpemVyTWVzc2FnZSkKIHsKLSNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNT
KQogICAgIC8vIFJlbW92ZSB0aGUgU2VjSXRlbVNoaW0gZnJvbSB0aGUgRFlMRF9JTlNFUlRfTElC
UkFSSUVTIGVudmlyb25tZW50IHZhcmlhYmxlIHNvIGFueSBwcm9jZXNzZXMgc3Bhd25lZCBieQog
ICAgIC8vIHRoZSB0aGlzIHByb2Nlc3MgZG9uJ3QgdHJ5IHRvIGluc2VydCB0aGUgc2hpbSBhbmQg
Y3Jhc2guCiAgICAgRW52aXJvbm1lbnRVdGlsaXRpZXM6OnN0cmlwVmFsdWVzRW5kaW5nV2l0aFN0
cmluZygiRFlMRF9JTlNFUlRfTElCUkFSSUVTIiwgIi9TZWNJdGVtU2hpbS5keWxpYiIpOwpAQCAt
NjksNSArNjgsNCBAQCB2b2lkIE5ldHdvcmtTZXJ2aWNlSW5pdGlhbGl6ZXIoeHBjX2Nvbm5lCiAj
aWYgSEFWRShPU19BQ1RJVklUWSkKICAgICBvc19hY3Rpdml0eV9lbmQoYWN0aXZpdHkpOwogI2Vu
ZGlmCi0jZW5kaWYKIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL0ZpbGVB
UEkvTmV0d29ya0Jsb2JSZWdpc3RyeS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIv
TmV0d29ya1Byb2Nlc3MvRmlsZUFQSS9OZXR3b3JrQmxvYlJlZ2lzdHJ5LmNwcAkocmV2aXNpb24g
MTkyNjAxKQorKysgU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvRmlsZUFQSS9OZXR3b3Jr
QmxvYlJlZ2lzdHJ5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjYsOCArMjYsNiBAQAogI2luY2x1
ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIk5ldHdvcmtCbG9iUmVnaXN0cnkuaCIKIAotI2lmIEVO
QUJMRShORVRXT1JLX1BST0NFU1MpCi0KICNpbmNsdWRlICJCbG9iRGF0YUZpbGVSZWZlcmVuY2VX
aXRoU2FuZGJveEV4dGVuc2lvbi5oIgogI2luY2x1ZGUgIlNhbmRib3hFeHRlbnNpb24uaCIKICNp
bmNsdWRlIDxXZWJDb3JlL0Jsb2JQYXJ0Lmg+CkBAIC0xNTEsNSArMTQ5LDMgQEAgVmVjdG9yPFJl
ZlB0cjxCbG9iRGF0YUZpbGVSZWZlcmVuY2U+PiBOZQogfQogCiB9Ci0KLSNlbmRpZgpJbmRleDog
U291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvRmlsZUFQSS9OZXR3b3JrQmxvYlJlZ2lzdHJ5
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvRmlsZUFQSS9O
ZXR3b3JrQmxvYlJlZ2lzdHJ5LmgJKHJldmlzaW9uIDE5MjYwMSkKKysrIFNvdXJjZS9XZWJLaXQy
L05ldHdvcmtQcm9jZXNzL0ZpbGVBUEkvTmV0d29ya0Jsb2JSZWdpc3RyeS5oCSh3b3JraW5nIGNv
cHkpCkBAIC0yNiw4ICsyNiw2IEBACiAjaWZuZGVmIE5ldHdvcmtCbG9iUmVnaXN0cnlfaAogI2Rl
ZmluZSBOZXR3b3JrQmxvYlJlZ2lzdHJ5X2gKIAotI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1Mp
Ci0KICNpbmNsdWRlIDxXZWJDb3JlL1VSTEhhc2guaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5o
PgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CkBAIC02OCw2ICs2Niw0IEBAIHByaXZhdGU6CiAK
IH0KIAotI2VuZGlmIC8vIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCi0KICNlbmRpZiAvLyBOZXR3
b3JrQmxvYlJlZ2lzdHJ5X2gKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL2Nv
Y29hL05ldHdvcmtQcm9jZXNzQ29jb2EubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIv
TmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Byb2Nlc3NDb2NvYS5tbQkocmV2aXNpb24gMTky
NjAxKQorKysgU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Byb2Nl
c3NDb2NvYS5tbQkod29ya2luZyBjb3B5KQpAQCAtMjYsOCArMjYsNiBAQAogI2ltcG9ydCAiY29u
ZmlnLmgiCiAjaW1wb3J0ICJOZXR3b3JrUHJvY2Vzcy5oIgogCi0jaWYgRU5BQkxFKE5FVFdPUktf
UFJPQ0VTUykKLQogI2ltcG9ydCAiTmV0d29ya0NhY2hlLmgiCiAjaW1wb3J0ICJOZXR3b3JrUHJv
Y2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oIgogI2ltcG9ydCAiTmV0d29ya1Jlc291cmNlTG9hZGVy
LmgiCkBAIC0yNjcsNSArMjY1LDMgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6Y2xlYXJEaXNrQ2Fj
aGUoc3RkOgogfQogCiB9Ci0KLSNlbmRpZgpJbmRleDogU291cmNlL1dlYktpdDIvTmV0d29ya1By
b2Nlc3MvaW9zL05ldHdvcmtQcm9jZXNzSU9TLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQyL05ldHdvcmtQcm9jZXNzL2lvcy9OZXR3b3JrUHJvY2Vzc0lPUy5tbQkocmV2aXNpb24gMTky
NjAxKQorKysgU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvaW9zL05ldHdvcmtQcm9jZXNz
SU9TLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw3ICsyNiw3IEBACiAjaW1wb3J0ICJjb25maWcu
aCIKICNpbXBvcnQgIk5ldHdvcmtQcm9jZXNzLmgiCiAKLSNpZiBQTEFURk9STShJT1MpICYmIEVO
QUJMRShORVRXT1JLX1BST0NFU1MpCisjaWYgUExBVEZPUk0oSU9TKQogCiAjaW1wb3J0ICJOZXR3
b3JrQ2FjaGUuaCIKICNpbXBvcnQgIk5ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmgi
CkBAIC0xMDEsNCArMTAxLDQgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6cGxhdGZvcm1UZXJtaW5h
dGUoKQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAotI2VuZGlmIC8vIFBMQVRGT1JNKElPUykg
JiYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKKyNlbmRpZiAvLyBQTEFURk9STShJT1MpCkluZGV4
OiBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9tYWMvTmV0d29ya0xvYWRNYWMubW0KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvbWFjL05ldHdvcmtMb2Fk
TWFjLm1tCShyZXZpc2lvbiAxOTI2MDEpCisrKyBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vz
cy9tYWMvTmV0d29ya0xvYWRNYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTI0LDggKzI0LDYgQEAK
ICAqLwogCiAjaW1wb3J0ICJjb25maWcuaCIKLQotI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1Mp
CiAjaW1wb3J0ICJOZXR3b3JrTG9hZC5oIgogCiAjaW1wb3J0IDxXZWJDb3JlL0NGTmV0d29ya1NQ
SS5oPgpAQCAtNjAsNSArNTgsMyBAQCB2b2lkIE5ldHdvcmtMb2FkOjp3aWxsQ2FjaGVSZXNwb25z
ZUFzeW5jCiAjZW5kaWYgLy8gIVVTRShDRk5FVFdPUkspCiAKIH0gLy8gbmFtZXNwYWNlIFdlYktp
dAotCi0jZW5kaWYgLy8gRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKSW5kZXg6IFNvdXJjZS9XZWJL
aXQyL05ldHdvcmtQcm9jZXNzL21hYy9OZXR3b3JrUHJvY2Vzc01hYy5tbQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9tYWMvTmV0d29ya1Byb2Nlc3NNYWMubW0J
KHJldmlzaW9uIDE5MjYwMSkKKysrIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL21hYy9O
ZXR3b3JrUHJvY2Vzc01hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtMjYsNyArMjYsNyBAQAogI2lt
cG9ydCAiY29uZmlnLmgiCiAjaW1wb3J0ICJOZXR3b3JrUHJvY2Vzcy5oIgogCi0jaWYgUExBVEZP
Uk0oTUFDKSAmJiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQorI2lmIFBMQVRGT1JNKE1BQykKIAog
I2ltcG9ydCAiTmV0d29ya0NhY2hlLmgiCiAjaW1wb3J0ICJOZXR3b3JrUHJvY2Vzc0NyZWF0aW9u
UGFyYW1ldGVycy5oIgpAQCAtMTQ0LDQgKzE0NCw0IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnBs
YXRmb3JtVGVybWluYXRlKCkKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKLSNlbmRpZiAvLyBQ
TEFURk9STShNQUMpICYmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCisjZW5kaWYgLy8gUExBVEZP
Uk0oTUFDKQpJbmRleDogU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvbWFjL05ldHdvcmtS
ZXNvdXJjZUxvYWRlck1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9OZXR3b3Jr
UHJvY2Vzcy9tYWMvTmV0d29ya1Jlc291cmNlTG9hZGVyTWFjLm1tCShyZXZpc2lvbiAxOTI2MDEp
CisrKyBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9tYWMvTmV0d29ya1Jlc291cmNlTG9h
ZGVyTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw4ICsyNiw2IEBACiAjaW1wb3J0ICJjb25m
aWcuaCIKICNpbXBvcnQgIk5ldHdvcmtSZXNvdXJjZUxvYWRlci5oIgogCi0jaWYgRU5BQkxFKE5F
VFdPUktfUFJPQ0VTUykKLQogI2ltcG9ydCAiTmV0d29ya0Rpc2tDYWNoZU1vbml0b3IuaCIKICNp
bXBvcnQgIlNoYXJlYWJsZVJlc291cmNlLmgiCiAjaW1wb3J0IDxXZWJDb3JlL0NGTmV0d29ya1NQ
SS5oPgpAQCAtOTEsNSArODksMyBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6d2lsbENh
Y2hlUmVzCiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCi0jZW5kaWYgLy8gRU5BQkxFKE5FVFdP
UktfUFJPQ0VTUykKLQpJbmRleDogU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlByb2Nlc3NDcmVh
dGlvblBhcmFtZXRlcnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9X
ZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcAkocmV2aXNpb24gMTkyNjAxKQorKysgU291
cmNlL1dlYktpdDIvU2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC00Myw5ICs0Myw2IEBAIFdlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnM6
OldlYlByb2Nlc3MKICAgICAsIHNob3VsZEVuYWJsZUpJVChmYWxzZSkKICAgICAsIHNob3VsZEVu
YWJsZUZUTEpJVChmYWxzZSkKICNlbmRpZgotI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCi0g
ICAgLCB1c2VzTmV0d29ya1Byb2Nlc3MoZmFsc2UpCi0jZW5kaWYKICAgICAsIG1lbW9yeUNhY2hl
RGlzYWJsZWQoZmFsc2UpCiAjaWYgRU5BQkxFKFNFUlZJQ0VfQ09OVFJPTFMpCiAgICAgLCBoYXNJ
bWFnZVNlcnZpY2VzKGZhbHNlKQpAQCAtMTMzLDEwICsxMzAsNiBAQCB2b2lkIFdlYlByb2Nlc3ND
cmVhdGlvblBhcmFtZXRlcnM6OmVuY29kCiAgICAgZW5jb2RlciA8PCBub3RpZmljYXRpb25QZXJt
aXNzaW9uczsKICNlbmRpZgogCi0jaWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKLSAgICBlbmNv
ZGVyIDw8IHVzZXNOZXR3b3JrUHJvY2VzczsKLSNlbmRpZgotCiAgICAgZW5jb2RlciA8PCBwbHVn
SW5BdXRvU3RhcnRPcmlnaW5IYXNoZXM7CiAgICAgZW5jb2RlciA8PCBwbHVnSW5BdXRvU3RhcnRP
cmlnaW5zOwogICAgIGVuY29kZXIgPDwgbWVtb3J5Q2FjaGVEaXNhYmxlZDsKQEAgLTI5MSwxMSAr
Mjg0LDYgQEAgYm9vbCBXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOjpkZWNvZAogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAjZW5kaWYKIAotI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCi0g
ICAgaWYgKCFkZWNvZGVyLmRlY29kZShwYXJhbWV0ZXJzLnVzZXNOZXR3b3JrUHJvY2VzcykpCi0g
ICAgICAgIHJldHVybiBmYWxzZTsKLSNlbmRpZgotCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShw
YXJhbWV0ZXJzLnBsdWdJbkF1dG9TdGFydE9yaWdpbkhhc2hlcykpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFtZXRlcnMucGx1Z0luQXV0b1N0YXJ0
T3JpZ2lucykpCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9u
UGFyYW1ldGVycy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJQcm9j
ZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmgJKHJldmlzaW9uIDE5MjYwMSkKKysrIFNvdXJjZS9XZWJL
aXQyL1NoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmgJKHdvcmtpbmcgY29weSkK
QEAgLTE1NCwxMCArMTU0LDYgQEAgc3RydWN0IFdlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMg
ewogICAgIEhhc2hNYXA8U3RyaW5nLCBib29sPiBub3RpZmljYXRpb25QZXJtaXNzaW9uczsKICNl
bmRpZgogCi0jaWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKLSAgICBib29sIHVzZXNOZXR3b3Jr
UHJvY2VzczsKLSNlbmRpZgotCiAgICAgSGFzaE1hcDxXZWJDb3JlOjpTZXNzaW9uSUQsIEhhc2hN
YXA8dW5zaWduZWQsIGRvdWJsZT4+IHBsdWdJbkF1dG9TdGFydE9yaWdpbkhhc2hlczsKICAgICBW
ZWN0b3I8U3RyaW5nPiBwbHVnSW5BdXRvU3RhcnRPcmlnaW5zOwogCkluZGV4OiBTb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvQVBJL2MvV0tEZXByZWNhdGVkRnVuY3Rpb25zLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvV0tEZXByZWNhdGVkRnVuY3Rpb25zLmNwcAko
cmV2aXNpb24gMTkyNjAxKQorKysgU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9jL1dLRGVwcmVj
YXRlZEZ1bmN0aW9ucy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI3LDYgKzI3LDggQEAKIAogI2lu
Y2x1ZGUgIkFQSURpY3Rpb25hcnkuaCIKICNpbmNsdWRlICJXS0FycmF5LmgiCisjaW5jbHVkZSAi
V0tDb250ZXh0LmgiCisjaW5jbHVkZSAiV0tDb250ZXh0UHJpdmF0ZS5oIgogI2luY2x1ZGUgIldL
TXV0YWJsZURpY3Rpb25hcnkuaCIKICNpbmNsdWRlICJXS1ByZWZlcmVuY2VzUmVmUHJpdmF0ZS5o
IgogI2luY2x1ZGUgIldLU2hhcmVkQVBJQ2FzdC5oIgpAQCAtMTM0LDYgKzEzNiwxOSBAQCB2b2lk
IFdLSW5zcGVjdG9yVG9nZ2xlSmF2YVNjcmlwdFByb2ZpbGluCiB7CiB9CiAKK3ZvaWQgV0tDb250
ZXh0U2V0UHJvY2Vzc01vZGVsKFdLQ29udGV4dFJlZiwgV0tQcm9jZXNzTW9kZWwpCit7Cit9CisK
K1dLUHJvY2Vzc01vZGVsIFdLQ29udGV4dEdldFByb2Nlc3NNb2RlbChXS0NvbnRleHRSZWYpCit7
CisgICAgcmV0dXJuIGtXS1Byb2Nlc3NNb2RlbE11bHRpcGxlU2Vjb25kYXJ5UHJvY2Vzc2VzOwor
fQorCit2b2lkIFdLQ29udGV4dFNldFVzZXNOZXR3b3JrUHJvY2VzcyhXS0NvbnRleHRSZWYsIGJv
b2wpCit7Cit9CisKICNpZiBQTEFURk9STShNQUMpCiBDR0NvbnRleHRSZWYgV0tHcmFwaGljc0Nv
bnRleHRHZXRDR0NvbnRleHQoV0tHcmFwaGljc0NvbnRleHRSZWYgZ3JhcGhpY3NDb250ZXh0KQog
ewpJbmRleDogU291cmNlL1dlYktpdDIvU2hhcmVkL0F1dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0
aW9uTWFuYWdlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvU2hhcmVkL0F1dGhl
bnRpY2F0aW9uL0F1dGhlbnRpY2F0aW9uTWFuYWdlci5jcHAJKHJldmlzaW9uIDE5MjYwMSkKKysr
IFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9BdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdGlvbk1hbmFn
ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSAiQ2hpbGRQ
cm9jZXNzLmgiCiAjaW5jbHVkZSAiRG93bmxvYWQuaCIKICNpbmNsdWRlICJEb3dubG9hZFByb3h5
TWVzc2FnZXMuaCIKKyNpbmNsdWRlICJOZXR3b3JrUHJvY2Vzc1Byb3h5TWVzc2FnZXMuaCIKICNp
bmNsdWRlICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIKICNpbmNsdWRlICJXZWJGcmFtZS5oIgog
I2luY2x1ZGUgIldlYlBhZ2UuaCIKQEAgLTM3LDEwICszOCw2IEBACiAjaW5jbHVkZSA8V2ViQ29y
ZS9BdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvQXV0aGVudGlj
YXRpb25DbGllbnQuaD4KIAotI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCi0jaW5jbHVkZSAi
TmV0d29ya1Byb2Nlc3NQcm94eU1lc3NhZ2VzLmgiCi0jZW5kaWYKLQogdXNpbmcgbmFtZXNwYWNl
IFdlYkNvcmU7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtMTI4LDcgKzEyNSw2IEBAIHZvaWQg
QXV0aGVudGljYXRpb25NYW5hZ2VyOjpkaWRSZWNlaXZlQXUKICAgICBtX3Byb2Nlc3MtPnNlbmQo
TWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
KGZyYW1lLT5mcmFtZUlEKCksIGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLCBjaGFsbGVuZ2VJRCks
IGZyYW1lLT5wYWdlKCktPnBhZ2VJRCgpKTsKIH0KIAotI2lmIEVOQUJMRShORVRXT1JLX1BST0NF
U1MpCiAjaWYgVVNFKE5FVFdPUktfU0VTU0lPTikKIHZvaWQgQXV0aGVudGljYXRpb25NYW5hZ2Vy
OjpkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UodWludDY0X3QgcGFnZUlELCB1aW50
NjRfdCBmcmFtZUlELCBjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYgYXV0aGVudGljYXRp
b25DaGFsbGVuZ2UsIENoYWxsZW5nZUNvbXBsZXRpb25IYW5kbGVyIGNvbXBsZXRpb25IYW5kbGVy
KQogewpAQCAtMTU3LDcgKzE1Myw2IEBAIHZvaWQgQXV0aGVudGljYXRpb25NYW5hZ2VyOjpkaWRS
ZWNlaXZlQXUKICAgICAKICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9j
ZXNzUHJveHk6OkRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShwYWdlSUQsIGZyYW1l
SUQsIGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLCBjaGFsbGVuZ2VJRCkpOwogfQotI2VuZGlmCiAK
ICNpZiAhVVNFKE5FVFdPUktfU0VTU0lPTikKIHZvaWQgQXV0aGVudGljYXRpb25NYW5hZ2VyOjpk
aWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoRG93bmxvYWQqIGRvd25sb2FkLCBjb25z
dCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYgYXV0aGVudGljYXRpb25DaGFsbGVuZ2UpCkluZGV4
OiBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFy
YW1ldGVycy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvU2hhcmVkL05ldHdvcmsv
TmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuY3BwCShyZXZpc2lvbiAxOTI2MDEpCisr
KyBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFy
YW1ldGVycy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2LDggKzI2LDYgQEAKICNpbmNsdWRlICJj
b25maWcuaCIKICNpbmNsdWRlICJOZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oIgog
Ci0jaWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKLQogI2luY2x1ZGUgIkFyZ3VtZW50Q29kZXJz
LmgiCiAKICNpZiBQTEFURk9STShDT0NPQSkKQEAgLTE2OCw1ICsxNjYsMyBAQCBib29sIE5ldHdv
cmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOjpkCiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktp
dAotCi0jZW5kaWYgLy8gRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKSW5kZXg6IFNvdXJjZS9XZWJL
aXQyL1NoYXJlZC9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvU2hhcmVkL05ldHdvcmsvTmV0d29ya1Byb2Nlc3ND
cmVhdGlvblBhcmFtZXRlcnMuaAkocmV2aXNpb24gMTkyNjAxKQorKysgU291cmNlL1dlYktpdDIv
U2hhcmVkL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMjYsOCArMjYsNiBAQAogI2lmbmRlZiBOZXR3b3JrUHJvY2Vzc0NyZWF0aW9u
UGFyYW1ldGVyc19oCiAjZGVmaW5lIE5ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzX2gK
IAotI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCi0KICNpbmNsdWRlICJDYWNoZU1vZGVsLmgi
CiAjaW5jbHVkZSAiU2FuZGJveEV4dGVuc2lvbi5oIgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4K
QEAgLTEwMyw2ICsxMDEsNCBAQCBzdHJ1Y3QgTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRl
cnMgCiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCi0jZW5kaWYgLy8gRU5BQkxFKE5FVFdPUktf
UFJPQ0VTUykKLQogI2VuZGlmIC8vIE5ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzX2gK
SW5kZXg6IFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9OZXR3b3JrL05ldHdvcmtQcm9jZXNzU3VwcGxl
bWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9OZXR3b3JrL05ldHdv
cmtQcm9jZXNzU3VwcGxlbWVudC5oCShyZXZpc2lvbiAxOTI2MDEpCisrKyBTb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1N1cHBsZW1lbnQuaAkod29ya2luZyBjb3B5
KQpAQCAtMzMsMTIgKzMzLDEwIEBAIG5hbWVzcGFjZSBXZWJLaXQgewogc3RydWN0IE5ldHdvcmtQ
cm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOwogCiBjbGFzcyBOZXR3b3JrUHJvY2Vzc1N1cHBsZW1l
bnQgOiBwdWJsaWMgQ2hpbGRQcm9jZXNzU3VwcGxlbWVudCB7Ci0jaWYgRU5BQkxFKE5FVFdPUktf
UFJPQ0VTUykKIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgaW5pdGlhbGl6ZShjb25zdCBOZXR3
b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycyYpCiAgICAgewogICAgIH0KLSNlbmRpZgogfTsK
IAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvTmV0
d29yay9OZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycy5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdDIvU2hhcmVkL05ldHdvcmsvTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMu
Y3BwCShyZXZpc2lvbiAxOTI2MDEpCisrKyBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvTmV0d29yay9O
ZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMwLDgg
KzMwLDYgQEAKICNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiV2ViQ29yZUFy
Z3VtZW50Q29kZXJzLmgiCiAKLSNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQotCiB1c2luZyBu
YW1lc3BhY2UgV2ViQ29yZTsKIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC0xNjAsNSArMTU4LDMg
QEAgYm9vbCBOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVyczo6ZGVjbwogfQogICAgIAogfSAv
LyBuYW1lc3BhY2UgV2ViS2l0Ci0KLSNlbmRpZiAvLyBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQpJ
bmRleDogU291cmNlL1dlYktpdDIvU2hhcmVkL05ldHdvcmsvTmV0d29ya1Jlc291cmNlTG9hZFBh
cmFtZXRlcnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvTmV0d29yay9O
ZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycy5oCShyZXZpc2lvbiAxOTI2MDEpCisrKyBTb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvTmV0d29yay9OZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycy5o
CSh3b3JraW5nIGNvcHkpCkBAIC0zMiw4ICszMiw2IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNv
dXJjZVJlcXVlc3QuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Nlc3Npb25JRC5oPgogCi0jaWYgRU5B
QkxFKE5FVFdPUktfUFJPQ0VTUykKLQogbmFtZXNwYWNlIElQQyB7CiAgICAgY2xhc3MgQXJndW1l
bnREZWNvZGVyOwogICAgIGNsYXNzIEFyZ3VtZW50RW5jb2RlcjsKQEAgLTY4LDYgKzY2LDQgQEAg
cHVibGljOgogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAotI2VuZGlmIC8vIEVOQUJMRShORVRX
T1JLX1BST0NFU1MpCi0KICNlbmRpZiAvLyBOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVyc19o
CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvTmV0d29yay9DdXN0b21Qcm90b2NvbHMvQ3Vz
dG9tUHJvdG9jb2xNYW5hZ2VyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvU2hhcmVk
L05ldHdvcmsvQ3VzdG9tUHJvdG9jb2xzL0N1c3RvbVByb3RvY29sTWFuYWdlci5oCShyZXZpc2lv
biAxOTI2MDEpCisrKyBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvTmV0d29yay9DdXN0b21Qcm90b2Nv
bHMvQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyLmgJKHdvcmtpbmcgY29weSkKQEAgLTgzLDEwICs4Myw4
IEBAIHByaXZhdGU6CiAgICAgLy8gV2ViUHJvY2Vzc1N1cHBsZW1lbnQKICAgICB2b2lkIGluaXRp
YWxpemUoY29uc3QgV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycyYpIG92ZXJyaWRlOwogCi0j
aWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKICAgICAvLyBOZXR3b3JrUHJvY2Vzc1N1cHBsZW1l
bnQKICAgICB2b2lkIGluaXRpYWxpemUoY29uc3QgTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFt
ZXRlcnMmKSBvdmVycmlkZTsKLSNlbmRpZgogCiAgICAgLy8gSVBDOjpNZXNzYWdlUmVjZWl2ZXIK
ICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBD
OjpNZXNzYWdlRGVjb2RlciYpIG92ZXJyaWRlOwpJbmRleDogU291cmNlL1dlYktpdDIvU2hhcmVk
L05ldHdvcmsvQ3VzdG9tUHJvdG9jb2xzL0NvY29hL0N1c3RvbVByb3RvY29sTWFuYWdlckNvY29h
Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9OZXR3b3JrL0N1c3RvbVBy
b3RvY29scy9Db2NvYS9DdXN0b21Qcm90b2NvbE1hbmFnZXJDb2NvYS5tbQkocmV2aXNpb24gMTky
NjAxKQorKysgU291cmNlL1dlYktpdDIvU2hhcmVkL05ldHdvcmsvQ3VzdG9tUHJvdG9jb2xzL0Nv
Y29hL0N1c3RvbVByb3RvY29sTWFuYWdlckNvY29hLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw2
ICszMCw3IEBACiAjaW1wb3J0ICJDdXN0b21Qcm90b2NvbE1hbmFnZXJNZXNzYWdlcy5oIgogI2lt
cG9ydCAiQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHlNZXNzYWdlcy5oIgogI2ltcG9ydCAiRGF0
YVJlZmVyZW5jZS5oIgorI2ltcG9ydCAiTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMu
aCIKICNpbXBvcnQgIldlYkNvcmVBcmd1bWVudENvZGVycy5oIgogI2ltcG9ydCAiV2ViUHJvY2Vz
c0NyZWF0aW9uUGFyYW1ldGVycy5oIgogI2ltcG9ydCA8V2ViQ29yZS9VUkwuaD4KQEAgLTM3LDEw
ICszOCw2IEBACiAjaW1wb3J0IDxXZWJDb3JlL1Jlc291cmNlUmVxdWVzdC5oPgogI2ltcG9ydCA8
V2ViQ29yZS9SZXNvdXJjZVJlc3BvbnNlLmg+CiAKLSNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNT
KQotI2ltcG9ydCAiTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaCIKLSNlbmRpZgot
CiAjaWZkZWYgX19oYXNfaW5jbHVkZQogI2lmIF9faGFzX2luY2x1ZGUoPEZvdW5kYXRpb24vTlNV
UkxDb25uZWN0aW9uUHJpdmF0ZS5oPikKICNpbXBvcnQgPEZvdW5kYXRpb24vTlNVUkxDb25uZWN0
aW9uUHJpdmF0ZS5oPgpAQCAtMTM3LDIyICsxMzQsMTEgQEAgdm9pZCBDdXN0b21Qcm90b2NvbE1h
bmFnZXI6OmluaXRpYWxpemVDbwogCiB2b2lkIEN1c3RvbVByb3RvY29sTWFuYWdlcjo6aW5pdGlh
bGl6ZShjb25zdCBXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQogewot
I2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCi0gICAgQVNTRVJUKHBhcmFtZXRlcnMudXJsU2No
ZW1lc1JlZ2lzdGVyZWRGb3JDdXN0b21Qcm90b2NvbHMuaXNFbXB0eSgpIHx8ICFwYXJhbWV0ZXJz
LnVzZXNOZXR3b3JrUHJvY2Vzcyk7Ci0gICAgaWYgKHBhcmFtZXRlcnMudXNlc05ldHdvcmtQcm9j
ZXNzKSB7Ci0gICAgICAgIG1fY2hpbGRQcm9jZXNzLT5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigp
LT5yZW1vdmVXb3JrUXVldWVNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OkN1c3RvbVByb3RvY29s
TWFuYWdlcjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpKTsKLSAgICAgICAgbV9tZXNzYWdlUXVldWUg
PSBudWxscHRyOwotICAgICAgICByZXR1cm47Ci0gICAgfQotI2VuZGlmCi0KLSAgICBbTlNVUkxQ
cm90b2NvbCByZWdpc3RlckNsYXNzOltXS0N1c3RvbVByb3RvY29sIGNsYXNzXV07Ci0KLSAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IHBhcmFtZXRlcnMudXJsU2NoZW1lc1JlZ2lzdGVyZWRGb3JD
dXN0b21Qcm90b2NvbHMuc2l6ZSgpOyArK2kpCi0gICAgICAgIHJlZ2lzdGVyU2NoZW1lKHBhcmFt
ZXRlcnMudXJsU2NoZW1lc1JlZ2lzdGVyZWRGb3JDdXN0b21Qcm90b2NvbHNbaV0pOworICAgIEFT
U0VSVChwYXJhbWV0ZXJzLnVybFNjaGVtZXNSZWdpc3RlcmVkRm9yQ3VzdG9tUHJvdG9jb2xzLmlz
RW1wdHkoKSk7CisgICAgbV9jaGlsZFByb2Nlc3MtPnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCkt
PnJlbW92ZVdvcmtRdWV1ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6Q3VzdG9tUHJvdG9jb2xN
YW5hZ2VyOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCkpOworICAgIG1fbWVzc2FnZVF1ZXVlID0gbnVs
bHB0cjsKIH0KIAotI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCiB2b2lkIEN1c3RvbVByb3Rv
Y29sTWFuYWdlcjo6aW5pdGlhbGl6ZShjb25zdCBOZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1l
dGVycyYgcGFyYW1ldGVycykKIHsKICAgICBbTlNVUkxQcm90b2NvbCByZWdpc3RlckNsYXNzOltX
S0N1c3RvbVByb3RvY29sIGNsYXNzXV07CkBAIC0xNjAsNyArMTQ2LDYgQEAgdm9pZCBDdXN0b21Q
cm90b2NvbE1hbmFnZXI6OmluaXRpYWxpemUoYwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
cGFyYW1ldGVycy51cmxTY2hlbWVzUmVnaXN0ZXJlZEZvckN1c3RvbVByb3RvY29scy5zaXplKCk7
ICsraSkKICAgICAgICAgcmVnaXN0ZXJTY2hlbWUocGFyYW1ldGVycy51cmxTY2hlbWVzUmVnaXN0
ZXJlZEZvckN1c3RvbVByb3RvY29sc1tpXSk7CiB9Ci0jZW5kaWYKIAogdm9pZCBDdXN0b21Qcm90
b2NvbE1hbmFnZXI6OmFkZEN1c3RvbVByb3RvY29sKFdLQ3VzdG9tUHJvdG9jb2wgKmN1c3RvbVBy
b3RvY29sKQogewpJbmRleDogU291cmNlL1dlYktpdDIvU2hhcmVkL21hYy9Db29raWVTdG9yYWdl
U2hpbS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9tYWMvQ29va2llU3Rv
cmFnZVNoaW0uaAkocmV2aXNpb24gMTkyNjAxKQorKysgU291cmNlL1dlYktpdDIvU2hhcmVkL21h
Yy9Db29raWVTdG9yYWdlU2hpbS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw4ICsyNiw2IEBACiAj
aWZuZGVmIENvb2tpZVN0b3JhZ2VTaGltX2gKICNkZWZpbmUgQ29va2llU3RvcmFnZVNoaW1faAog
Ci0jaWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKLQogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJs
ZS5oPgogI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogCkBAIC00OSw2ICs0Nyw0IEBA
IHByaXZhdGU6CiAKIH0KIAotI2VuZGlmIC8vIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCi0KICNl
bmRpZiAvLyBDb29raWVTdG9yYWdlU2hpbV9oCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQv
bWFjL0Nvb2tpZVN0b3JhZ2VTaGltLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1No
YXJlZC9tYWMvQ29va2llU3RvcmFnZVNoaW0ubW0JKHJldmlzaW9uIDE5MjYwMSkKKysrIFNvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9tYWMvQ29va2llU3RvcmFnZVNoaW0ubW0JKHdvcmtpbmcgY29weSkK
QEAgLTI2LDggKzI2LDYgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJDb29raWVT
dG9yYWdlU2hpbS5oIgogCi0jaWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKLQogI2luY2x1ZGUg
IkNvb2tpZVN0b3JhZ2VTaGltTGlicmFyeS5oIgogI2luY2x1ZGUgIk5ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzLmgiCiAjaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmgiCkBA
IC0xMzUsNSArMTMzLDMgQEAgLSAodm9pZClfZ2V0Q29va2llSGVhZGVyc0ZvclRhc2s6KE5TVVJM
UwogfQogCiBAZW5kCi0KLSNlbmRpZiAvLyBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQpJbmRleDog
U291cmNlL1dlYktpdDIvU2hhcmVkL21hYy9Db29raWVTdG9yYWdlU2hpbUxpYnJhcnkuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9tYWMvQ29va2llU3RvcmFnZVNoaW1M
aWJyYXJ5LmNwcAkocmV2aXNpb24gMTkyNjAxKQorKysgU291cmNlL1dlYktpdDIvU2hhcmVkL21h
Yy9Db29raWVTdG9yYWdlU2hpbUxpYnJhcnkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw3ICsy
Niw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiQ29va2llU3RvcmFnZVNoaW1M
aWJyYXJ5LmgiCiAKLSNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKSAmJiAhUExBVEZPUk0oSU9T
KQorI2lmICFQTEFURk9STShJT1MpCiAKICNpbmNsdWRlIDxXZWJDb3JlL0R5bmFtaWNMaW5rZXJJ
bnRlcnBvc2luZy5oPgogCkBAIC05MCw0ICs5MCw0IEBAIHZvaWQgV2ViS2l0Q29va2llU3RvcmFn
ZVNoaW1Jbml0aWFsaXplKGMKICAgICAKIH0KIAotI2VuZGlmIC8vIEVOQUJMRShORVRXT1JLX1BS
T0NFU1MpICYmICFQTEFURk9STShJT1MpCisjZW5kaWYgLy8gIVBMQVRGT1JNKElPUykKSW5kZXg6
IFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9tYWMvQ29va2llU3RvcmFnZVNoaW1MaWJyYXJ5LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvU2hhcmVkL21hYy9Db29raWVTdG9yYWdlU2hpbUxp
YnJhcnkuaAkocmV2aXNpb24gMTkyNjAxKQorKysgU291cmNlL1dlYktpdDIvU2hhcmVkL21hYy9D
b29raWVTdG9yYWdlU2hpbUxpYnJhcnkuaAkod29ya2luZyBjb3B5KQpAQCAtMjYsOCArMjYsNiBA
QAogI2lmbmRlZiBDb29raWVTdG9yYWdlU2hpbUxpYnJhcnlfaAogI2RlZmluZSBDb29raWVTdG9y
YWdlU2hpbUxpYnJhcnlfaAogCi0jaWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKLQogdHlwZWRl
ZiBzdHJ1Y3QgT3BhcXVlQ0ZIVFRQQ29va2llU3RvcmFnZSogIENGSFRUUENvb2tpZVN0b3JhZ2VS
ZWY7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtNDAsNiArMzgsNCBAQCB0eXBlZGVmIHZvaWQg
KCpDb29raWVTdG9yYWdlU2hpbUluaXRpYWxpCiAKIH0KIAotI2VuZGlmIC8vIEVOQUJMRShORVRX
T1JLX1BST0NFU1MpCi0KICNlbmRpZiAvLyBDb29raWVTdG9yYWdlU2hpbUxpYnJhcnlfaApJbmRl
eDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1Byb2Nlc3NNb2RlbC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Qcm9jZXNzTW9kZWwuaAkocmV2aXNpb24gMTkyNjAx
KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1Byb2Nlc3NNb2RlbC5oCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDM4ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0g
KiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIFByb2Nlc3NNb2RlbF9o
Ci0jZGVmaW5lIFByb2Nlc3NNb2RlbF9oCi0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi1lbnVtIFBy
b2Nlc3NNb2RlbCB7Ci0gICAgUHJvY2Vzc01vZGVsU2hhcmVkU2Vjb25kYXJ5UHJvY2VzcywKLSAg
ICBQcm9jZXNzTW9kZWxNdWx0aXBsZVNlY29uZGFyeVByb2Nlc3NlcwotfTsKLQotfSAvLyBuYW1l
c3BhY2UgV2ViS2l0Ci0KLSNlbmRpZiAvLyBQcm9jZXNzTW9kZWxfaApJbmRleDogU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL1dlYkNvb2tpZU1hbmFnZXJQcm94eS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvb2tpZU1hbmFnZXJQcm94eS5jcHAJKHJldmlz
aW9uIDE5MjYwMSkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb29raWVNYW5hZ2Vy
UHJveHkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04NSw4ICs4NSw4IEBAIHZvaWQgV2ViQ29va2ll
TWFuYWdlclByb3h5Ojpwcm9jZXNzRGlkQ2wKIAogYm9vbCBXZWJDb29raWVNYW5hZ2VyUHJveHk6
OnNob3VsZFRlcm1pbmF0ZShXZWJQcm9jZXNzUHJveHkqKSBjb25zdAogewotICAgIHJldHVybiBw
cm9jZXNzUG9vbCgpLT5wcm9jZXNzTW9kZWwoKSAhPSBQcm9jZXNzTW9kZWxTaGFyZWRTZWNvbmRh
cnlQcm9jZXNzCi0gICAgICAgIHx8IChtX2FycmF5Q2FsbGJhY2tzLmlzRW1wdHkoKSAmJiBtX2h0
dHBDb29raWVBY2NlcHRQb2xpY3lDYWxsYmFja3MuaXNFbXB0eSgpKTsKKyAgICAvLyBGSVhNRTog
UmVtb3ZlIHRoaXMuCisgICAgcmV0dXJuIHRydWU7CiB9CiAKIHZvaWQgV2ViQ29va2llTWFuYWdl
clByb3h5OjpyZWZXZWJDb250ZXh0U3VwcGxlbWVudCgpCkBAIC0xNjMsMTAgKzE2Myw3IEBAIHZv
aWQgV2ViQ29va2llTWFuYWdlclByb3h5OjpzZXRIVFRQQ29va2kKICAgICAvLyAtIFdoZW4gdGVz
dGluZywgd2Ugb25seSBoYXZlIG9uZSBXZWJQcm9jZXNzIGFuZCBvbmUgTmV0d29ya1Byb2Nlc3Ms
IGFuZCBXZWJLaXRUZXN0UnVubmVyIG5ldmVyIHJlc3RhcnRzIHRoZW07CiAgICAgLy8gLSBXaGVu
IG5vdCB0ZXN0aW5nLCBDb2NvYSBoYXMgdGhlIHBvbGljeSBwZXJzaXN0ZWQsIGFuZCB0aHVzIG5l
dyBwcm9jZXNzZXMgdXNlIGl0IChldmVuIGZvciBlcGhlbWVyYWwgc2Vzc2lvbnMpLgogICAgIHBy
b2Nlc3NQb29sKCktPnNlbmRUb0FsbFByb2Nlc3NlcyhNZXNzYWdlczo6V2ViQ29va2llTWFuYWdl
cjo6U2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeShwb2xpY3kpKTsKLSNpZiBFTkFCTEUoTkVUV09S
S19QUk9DRVNTKQotICAgIGlmIChwcm9jZXNzUG9vbCgpLT51c2VzTmV0d29ya1Byb2Nlc3MoKSkK
LSAgICAgICAgcHJvY2Vzc1Bvb2woKS0+c2VuZFRvTmV0d29ya2luZ1Byb2Nlc3MoTWVzc2FnZXM6
OldlYkNvb2tpZU1hbmFnZXI6OlNldEhUVFBDb29raWVBY2NlcHRQb2xpY3kocG9saWN5KSk7Ci0j
ZW5kaWYKKyAgICBwcm9jZXNzUG9vbCgpLT5zZW5kVG9OZXR3b3JraW5nUHJvY2VzcyhNZXNzYWdl
czo6V2ViQ29va2llTWFuYWdlcjo6U2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeShwb2xpY3kpKTsK
IH0KIAogdm9pZCBXZWJDb29raWVNYW5hZ2VyUHJveHk6OmdldEhUVFBDb29raWVBY2NlcHRQb2xp
Y3koc3RkOjpmdW5jdGlvbjx2b2lkIChIVFRQQ29va2llQWNjZXB0UG9saWN5LCBDYWxsYmFja0Jh
c2U6OkVycm9yKT4gY2FsbGJhY2tGdW5jdGlvbikKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9XZWJJbnNwZWN0b3JQcm94eS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL1dlYkluc3BlY3RvclByb3h5LmNwcAkocmV2aXNpb24gMTkyNjAxKQorKysgU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkluc3BlY3RvclByb3h5LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMzEyLDcgKzMxMiw2IEBAIFdlYlByb2Nlc3NQb29sJiBXZWJJbnNwZWN0b3JQcm94eTo6
aW5zcGUKICAgICAvLyBndWFyYW50ZWVzIG5vIHByb2Nlc3Mgc2hhcmluZyBmb3Igb3VyIHVzZXIg
aW50ZXJmYWNlLgogICAgIGlmICghc19wcm9jZXNzUG9vbCkgewogICAgICAgICBhdXRvIGNvbmZp
Z3VyYXRpb24gPSBBUEk6OlByb2Nlc3NQb29sQ29uZmlndXJhdGlvbjo6Y3JlYXRlV2l0aExlZ2Fj
eU9wdGlvbnMoKTsKLSAgICAgICAgY29uZmlndXJhdGlvbi0+c2V0UHJvY2Vzc01vZGVsKFByb2Nl
c3NNb2RlbE11bHRpcGxlU2Vjb25kYXJ5UHJvY2Vzc2VzKTsKICAgICAgICAgc19wcm9jZXNzUG9v
bCA9ICZXZWJQcm9jZXNzUG9vbDo6Y3JlYXRlKGNvbmZpZ3VyYXRpb24uZ2V0KCkpLmxlYWtSZWYo
KTsKICAgICB9OwogCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5
LmNwcAkocmV2aXNpb24gMTkyNjAxKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYwLDYgKzYwLDcgQEAKICNpbmNsdWRlICJO
YXRpdmVXZWJNb3VzZUV2ZW50LmgiCiAjaW5jbHVkZSAiTmF0aXZlV2ViV2hlZWxFdmVudC5oIgog
I2luY2x1ZGUgIk5hdmlnYXRpb25BY3Rpb25EYXRhLmgiCisjaW5jbHVkZSAiTmV0d29ya1Byb2Nl
c3NNZXNzYWdlcy5oIgogI2luY2x1ZGUgIk5vdGlmaWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0Lmgi
CiAjaW5jbHVkZSAiTm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyLmgiCiAjaW5j
bHVkZSAiUGFnZUNsaWVudC5oIgpAQCAtMTM4LDEwICsxMzksNiBAQAogI2luY2x1ZGUgPHd0Zi9S
ZWZDb3VudGVkTGVha0NvdW50ZXIuaD4KICNlbmRpZgogCi0jaWYgRU5BQkxFKE5FVFdPUktfUFJP
Q0VTUykKLSNpbmNsdWRlICJOZXR3b3JrUHJvY2Vzc01lc3NhZ2VzLmgiCi0jZW5kaWYKLQogI2lm
IFBMQVRGT1JNKENPQ09BKQogI2luY2x1ZGUgIlJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJv
eHkuaCIKICNpbmNsdWRlICJSZW1vdGVMYXllclRyZWVTY3JvbGxpbmdQZXJmb3JtYW5jZURhdGEu
aCIKQEAgLTQ4NywxMCArNDg0LDggQEAgV2ViUGFnZVByb3h5OjpXZWJQYWdlUHJveHkoUGFnZUNs
aWVudCYgcAogCiAgICAgbV9wcm9jZXNzLT5hZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6Oldl
YlBhZ2VQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX3BhZ2VJRCwgKnRoaXMpOwogCi0j
aWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKICAgICBpZiAobV9zZXNzaW9uSUQuaXNFcGhlbWVy
YWwoKSkKICAgICAgICAgbV9wcm9jZXNzLT5wcm9jZXNzUG9vbCgpLnNlbmRUb05ldHdvcmtpbmdQ
cm9jZXNzKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6RW5zdXJlUHJpdmF0ZUJyb3dzaW5nU2Vz
c2lvbihtX3Nlc3Npb25JRCkpOwotI2VuZGlmCiAKICNpZiBQTEFURk9STShDT0NPQSkKICAgICBj
b25zdCBDRkluZGV4IHZpZXdTdGF0ZUNoYW5nZVJ1bkxvb3BPcmRlciA9IChDRkluZGV4KVJ1bkxv
b3BPYnNlcnZlcjo6V2VsbEtub3duUnVuTG9vcE9yZGVyczo6Q29yZUFuaW1hdGlvbkNvbW1pdCAt
IDE7CkBAIC02OTYsMTAgKzY5MSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpyZWF0dGFjaFRvV2Vi
UHJvY2VzcygKICAgICBtX3Byb2Nlc3MtPnJlbW92ZVdlYlBhZ2UobV9wYWdlSUQpOwogICAgIG1f
cHJvY2Vzcy0+cmVtb3ZlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6Om1l
c3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9wYWdlSUQpOwogCi0gICAgaWYgKG1fcHJvY2Vzcy0+cHJv
Y2Vzc1Bvb2woKS5wcm9jZXNzTW9kZWwoKSA9PSBQcm9jZXNzTW9kZWxTaGFyZWRTZWNvbmRhcnlQ
cm9jZXNzKQotICAgICAgICBtX3Byb2Nlc3MgPSBtX3Byb2Nlc3MtPnByb2Nlc3NQb29sKCkuZW5z
dXJlU2hhcmVkV2ViUHJvY2VzcygpOwotICAgIGVsc2UKLSAgICAgICAgbV9wcm9jZXNzID0gbV9w
cm9jZXNzLT5wcm9jZXNzUG9vbCgpLmNyZWF0ZU5ld1dlYlByb2Nlc3NSZXNwZWN0aW5nUHJvY2Vz
c0NvdW50TGltaXQoKTsKKyAgICBtX3Byb2Nlc3MgPSBtX3Byb2Nlc3MtPnByb2Nlc3NQb29sKCku
Y3JlYXRlTmV3V2ViUHJvY2Vzc1Jlc3BlY3RpbmdQcm9jZXNzQ291bnRMaW1pdCgpOwogCiAgICAg
QVNTRVJUKG1fcHJvY2Vzcy0+c3RhdGUoKSAhPSBDaGlsZFByb2Nlc3NQcm94eTo6U3RhdGU6OlRl
cm1pbmF0ZWQpOwogICAgIGlmIChtX3Byb2Nlc3MtPnN0YXRlKCkgPT0gQ2hpbGRQcm9jZXNzUHJv
eHk6OlN0YXRlOjpSdW5uaW5nKQpAQCAtNzc0LDEwICs3NjYsOCBAQCB2b2lkIFdlYlBhZ2VQcm94
eTo6c2V0U2Vzc2lvbklEKFNlc3Npb25JCiAgICAgbV9zZXNzaW9uSUQgPSBzZXNzaW9uSUQ7CiAg
ICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRTZXNzaW9uSUQoc2Vzc2lv
bklEKSwgbV9wYWdlSUQpOwogCi0jaWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKICAgICBpZiAo
c2Vzc2lvbklELmlzRXBoZW1lcmFsKCkpCiAgICAgICAgIG1fcHJvY2Vzcy0+cHJvY2Vzc1Bvb2wo
KS5zZW5kVG9OZXR3b3JraW5nUHJvY2VzcyhNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OkVuc3Vy
ZVByaXZhdGVCcm93c2luZ1Nlc3Npb24oc2Vzc2lvbklEKSk7Ci0jZW5kaWYKIH0KIAogdm9pZCBX
ZWJQYWdlUHJveHk6OmluaXRpYWxpemVXZWJQYWdlKCkKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcAkocmV2aXNpb24gMTkyNjAxKQorKysgU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MzUsNiArMzUsOSBAQAogI2luY2x1ZGUgIkRvd25sb2FkUHJveHkuaCIKICNpbmNsdWRlICJEb3du
bG9hZFByb3h5TWVzc2FnZXMuaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCisjaW5jbHVkZSAiTmV0
d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaCIKKyNpbmNsdWRlICJOZXR3b3JrUHJvY2Vz
c01lc3NhZ2VzLmgiCisjaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3NQcm94eS5oIgogI2luY2x1ZGUg
IlNhbmRib3hFeHRlbnNpb24uaCIKICNpbmNsdWRlICJTdGF0aXN0aWNzRGF0YS5oIgogI2luY2x1
ZGUgIlRleHRDaGVja2VyLmgiCkBAIC03OCwxMSArODEsNiBAQAogI2luY2x1ZGUgIkRhdGFiYXNl
UHJvY2Vzc01lc3NhZ2VzLmgiCiAjZW5kaWYKIAotI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1Mp
Ci0jaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaCIKLSNpbmNsdWRl
ICJOZXR3b3JrUHJvY2Vzc01lc3NhZ2VzLmgiCi0jaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3NQcm94
eS5oIgotI2VuZGlmCiAKICNpZiBFTkFCTEUoU0VSVklDRV9DT05UUk9MUykKICNpbmNsdWRlICJT
ZXJ2aWNlc0NvbnRyb2xsZXIuaCIKQEAgLTEwNSw4ICsxMDMsNiBAQCB1c2luZyBuYW1lc3BhY2Ug
V2ViS2l0OwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotc3RhdGljIGNvbnN0IGRvdWJsZSBzaGFy
ZWRTZWNvbmRhcnlQcm9jZXNzU2h1dGRvd25UaW1lb3V0ID0gNjA7Ci0KIERFRklORV9ERUJVR19P
TkxZX0dMT0JBTChXVEY6OlJlZkNvdW50ZWRMZWFrQ291bnRlciwgcHJvY2Vzc1Bvb2xDb3VudGVy
LCAoIldlYlByb2Nlc3NQb29sIikpOwogCiBSZWY8V2ViUHJvY2Vzc1Bvb2w+IFdlYlByb2Nlc3NQ
b29sOjpjcmVhdGUoQVBJOjpQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24mIGNvbmZpZ3VyYXRpb24p
CkBAIC0xNTksMTAgKzE1NSw4IEBAIFdlYlByb2Nlc3NQb29sOjpXZWJQcm9jZXNzUG9vbChBUEk6
OlByb2MKICNlbmRpZgogICAgICwgbV9zaG91bGRVc2VUZXN0aW5nTmV0d29ya1Nlc3Npb24oZmFs
c2UpCiAgICAgLCBtX3Byb2Nlc3NUZXJtaW5hdGlvbkVuYWJsZWQodHJ1ZSkKLSNpZiBFTkFCTEUo
TkVUV09SS19QUk9DRVNTKQogICAgICwgbV9jYW5IYW5kbGVIVFRQU1NlcnZlclRydXN0RXZhbHVh
dGlvbih0cnVlKQogICAgICwgbV9kaWROZXR3b3JrUHJvY2Vzc0NyYXNoKGZhbHNlKQotI2VuZGlm
CiAjaWYgVVNFKFNPVVApCiAgICAgLCBtX2lnbm9yZVRMU0Vycm9ycyh0cnVlKQogI2VuZGlmCkBA
IC0yNTQsMTAgKzI0OCw4IEBAIFdlYlByb2Nlc3NQb29sOjp+V2ViUHJvY2Vzc1Bvb2woKQogICAg
IHByb2Nlc3NQb29sQ291bnRlci5kZWNyZW1lbnQoKTsKICNlbmRpZgogCi0jaWYgRU5BQkxFKE5F
VFdPUktfUFJPQ0VTUykKICAgICBpZiAobV9uZXR3b3JrUHJvY2VzcykKICAgICAgICAgbV9uZXR3
b3JrUHJvY2Vzcy0+c2h1dERvd25Qcm9jZXNzKCk7Ci0jZW5kaWYKIH0KIAogdm9pZCBXZWJQcm9j
ZXNzUG9vbDo6aW5pdGlhbGl6ZUNsaWVudChjb25zdCBXS0NvbnRleHRDbGllbnRCYXNlKiBjbGll
bnQpCkBAIC0yOTEsMTcgKzI4Myw2IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnNldERvd25sb2Fk
Q2xpZW50KHMKICAgICAgICAgbV9kb3dubG9hZENsaWVudCA9IFdURjo6bW92ZShkb3dubG9hZENs
aWVudCk7CiB9CiAKLXZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnNldFByb2Nlc3NNb2RlbChQcm9jZXNz
TW9kZWwgcHJvY2Vzc01vZGVsKQotewotICAgIC8vIEd1YXJkIGFnYWluc3QgQVBJIG1pc3VzZS4K
LSAgICBpZiAoIW1fcHJvY2Vzc2VzLmlzRW1wdHkoKSkKLSAgICAgICAgQ1JBU0goKTsKLSAgICBp
ZiAocHJvY2Vzc01vZGVsICE9IFByb2Nlc3NNb2RlbFNoYXJlZFNlY29uZGFyeVByb2Nlc3MgJiYg
IW1fbWVzc2FnZXNUb0luamVjdGVkQnVuZGxlUG9zdGVkVG9FbXB0eUNvbnRleHQuaXNFbXB0eSgp
KQotICAgICAgICBDUkFTSCgpOwotCi0gICAgbV9jb25maWd1cmF0aW9uLT5zZXRQcm9jZXNzTW9k
ZWwocHJvY2Vzc01vZGVsKTsKLX0KLQogdm9pZCBXZWJQcm9jZXNzUG9vbDo6c2V0TWF4aW11bU51
bWJlck9mUHJvY2Vzc2VzKHVuc2lnbmVkIG1heGltdW1OdW1iZXJPZlByb2Nlc3NlcykKIHsKICAg
ICAvLyBHdWFyZCBhZ2FpbnN0IEFQSSBtaXN1c2UuCkBAIC0zMTMsMjMgKzI5NCw3IEBAIHZvaWQg
V2ViUHJvY2Vzc1Bvb2w6OnNldE1heGltdW1OdW1iZXJPZlAKIAogSVBDOjpDb25uZWN0aW9uKiBX
ZWJQcm9jZXNzUG9vbDo6bmV0d29ya2luZ1Byb2Nlc3NDb25uZWN0aW9uKCkKIHsKLSAgICBzd2l0
Y2ggKHByb2Nlc3NNb2RlbCgpKSB7Ci0gICAgY2FzZSBQcm9jZXNzTW9kZWxTaGFyZWRTZWNvbmRh
cnlQcm9jZXNzOgotI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCi0gICAgICAgIGlmICh1c2Vz
TmV0d29ya1Byb2Nlc3MoKSkKLSAgICAgICAgICAgIHJldHVybiBtX25ldHdvcmtQcm9jZXNzLT5j
b25uZWN0aW9uKCk7Ci0jZW5kaWYKLSAgICAgICAgcmV0dXJuIG1fcHJvY2Vzc2VzWzBdLT5jb25u
ZWN0aW9uKCk7Ci0gICAgY2FzZSBQcm9jZXNzTW9kZWxNdWx0aXBsZVNlY29uZGFyeVByb2Nlc3Nl
czoKLSNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQotICAgICAgICBBU1NFUlQodXNlc05ldHdv
cmtQcm9jZXNzKCkpOwotICAgICAgICByZXR1cm4gbV9uZXR3b3JrUHJvY2Vzcy0+Y29ubmVjdGlv
bigpOwotI2Vsc2UKLSAgICAgICAgYnJlYWs7Ci0jZW5kaWYKLSAgICB9Ci0gICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIDA7CisgICAgcmV0dXJuIG1fbmV0d29ya1Byb2Nlc3Mt
PmNvbm5lY3Rpb24oKTsKIH0KIAogdm9pZCBXZWJQcm9jZXNzUG9vbDo6bGFuZ3VhZ2VDaGFuZ2Vk
KHZvaWQqIGNvbnRleHQpCkBAIC0zNDAsOCArMzA1LDggQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6
bGFuZ3VhZ2VDaGFuZ2VkKHZvaQogdm9pZCBXZWJQcm9jZXNzUG9vbDo6bGFuZ3VhZ2VDaGFuZ2Vk
KCkKIHsKICAgICBzZW5kVG9BbGxQcm9jZXNzZXMoTWVzc2FnZXM6OldlYlByb2Nlc3M6OlVzZXJQ
cmVmZXJyZWRMYW5ndWFnZXNDaGFuZ2VkKHVzZXJQcmVmZXJyZWRMYW5ndWFnZXMoKSkpOwotI2lm
IFVTRShTT1VQKSAmJiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQotICAgIGlmICh1c2VzTmV0d29y
a1Byb2Nlc3MoKSAmJiBtX25ldHdvcmtQcm9jZXNzKQorI2lmIFVTRShTT1VQKQorICAgIGlmICht
X25ldHdvcmtQcm9jZXNzKQogICAgICAgICBtX25ldHdvcmtQcm9jZXNzLT5zZW5kKE1lc3NhZ2Vz
OjpOZXR3b3JrUHJvY2Vzczo6VXNlclByZWZlcnJlZExhbmd1YWdlc0NoYW5nZWQodXNlclByZWZl
cnJlZExhbmd1YWdlcygpKSwgMCk7CiAjZW5kaWYKIH0KQEAgLTM1NiwyNSArMzIxLDYgQEAgdm9p
ZCBXZWJQcm9jZXNzUG9vbDo6dGV4dENoZWNrZXJTdGF0ZUNoYQogICAgIHNlbmRUb0FsbFByb2Nl
c3NlcyhNZXNzYWdlczo6V2ViUHJvY2Vzczo6U2V0VGV4dENoZWNrZXJTdGF0ZShUZXh0Q2hlY2tl
cjo6c3RhdGUoKSkpOwogfQogCi12b2lkIFdlYlByb2Nlc3NQb29sOjpzZXRVc2VzTmV0d29ya1By
b2Nlc3MoYm9vbCB1c2VzTmV0d29ya1Byb2Nlc3MpCi17Ci0jaWYgRU5BQkxFKE5FVFdPUktfUFJP
Q0VTUykKLSAgICBtX2NvbmZpZ3VyYXRpb24tPnNldFVzZU5ldHdvcmtQcm9jZXNzKHVzZXNOZXR3
b3JrUHJvY2Vzcyk7Ci0jZWxzZQotICAgIFVOVVNFRF9QQVJBTSh1c2VzTmV0d29ya1Byb2Nlc3Mp
OwotI2VuZGlmCi19Ci0KLWJvb2wgV2ViUHJvY2Vzc1Bvb2w6OnVzZXNOZXR3b3JrUHJvY2Vzcygp
IGNvbnN0Ci17Ci0jaWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKLSAgICByZXR1cm4gbV9jb25m
aWd1cmF0aW9uLT51c2VOZXR3b3JrUHJvY2VzcygpOwotI2Vsc2UKLSAgICByZXR1cm4gZmFsc2U7
Ci0jZW5kaWYKLX0KLQotI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCiBOZXR3b3JrUHJvY2Vz
c1Byb3h5JiBXZWJQcm9jZXNzUG9vbDo6ZW5zdXJlTmV0d29ya1Byb2Nlc3MoKQogewogICAgIGlm
IChtX25ldHdvcmtQcm9jZXNzKQpAQCAtNDU5LDcgKzQwNSw2IEBAIHZvaWQgV2ViUHJvY2Vzc1Bv
b2w6OmdldE5ldHdvcmtQcm9jZXNzQ28KIAogICAgIG1fbmV0d29ya1Byb2Nlc3MtPmdldE5ldHdv
cmtQcm9jZXNzQ29ubmVjdGlvbihyZXBseSk7CiB9Ci0jZW5kaWYKIAogI2lmIEVOQUJMRShEQVRB
QkFTRV9QUk9DRVNTKQogdm9pZCBXZWJQcm9jZXNzUG9vbDo6ZW5zdXJlRGF0YWJhc2VQcm9jZXNz
KCkKQEAgLTUyNywxNCArNDcyLDEyIEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnNldEFueVBhZ2VH
cm91cE1pZ2gKIHsKICAgICBtX2ljb25EYXRhYmFzZS0+c2V0UHJpdmF0ZUJyb3dzaW5nRW5hYmxl
ZChwcml2YXRlQnJvd3NpbmdFbmFibGVkKTsKIAotI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1Mp
Ci0gICAgaWYgKHVzZXNOZXR3b3JrUHJvY2VzcygpICYmIG5ldHdvcmtQcm9jZXNzKCkpIHsKKyAg
ICBpZiAobmV0d29ya1Byb2Nlc3MoKSkgewogICAgICAgICBpZiAocHJpdmF0ZUJyb3dzaW5nRW5h
YmxlZCkKICAgICAgICAgICAgIG5ldHdvcmtQcm9jZXNzKCktPnNlbmQoTWVzc2FnZXM6Ok5ldHdv
cmtQcm9jZXNzOjpFbnN1cmVQcml2YXRlQnJvd3NpbmdTZXNzaW9uKFNlc3Npb25JRDo6bGVnYWN5
UHJpdmF0ZVNlc3Npb25JRCgpKSwgMCk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIG5ldHdv
cmtQcm9jZXNzKCktPnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpEZXN0cm95UHJpdmF0
ZUJyb3dzaW5nU2Vzc2lvbihTZXNzaW9uSUQ6OmxlZ2FjeVByaXZhdGVTZXNzaW9uSUQoKSksIDAp
OwogICAgIH0KLSNlbmRpZiAvLyBFTkFCTEVEKE5FVFdPUktfUFJPQ0VTUykKIAogICAgIGlmIChw
cml2YXRlQnJvd3NpbmdFbmFibGVkKQogICAgICAgICBzZW5kVG9BbGxQcm9jZXNzZXMoTWVzc2Fn
ZXM6OldlYlByb2Nlc3M6OkVuc3VyZVByaXZhdGVCcm93c2luZ1Nlc3Npb24oU2Vzc2lvbklEOjps
ZWdhY3lQcml2YXRlU2Vzc2lvbklEKCkpKTsKQEAgLTU2OSwyMCArNTEyLDkgQEAgdm9pZCBXZWJQ
cm9jZXNzUG9vbDo6cHJvY2Vzc0RpZENhY2hlUGFnZQogICAgIG1fcHJvY2Vzc1dpdGhQYWdlQ2Fj
aGUgPSBwcm9jZXNzOwogfQogCi1XZWJQcm9jZXNzUHJveHkmIFdlYlByb2Nlc3NQb29sOjplbnN1
cmVTaGFyZWRXZWJQcm9jZXNzKCkKLXsKLSAgICBBU1NFUlQocHJvY2Vzc01vZGVsKCkgPT0gUHJv
Y2Vzc01vZGVsU2hhcmVkU2Vjb25kYXJ5UHJvY2Vzcyk7Ci0gICAgaWYgKG1fcHJvY2Vzc2VzLmlz
RW1wdHkoKSkKLSAgICAgICAgY3JlYXRlTmV3V2ViUHJvY2VzcygpOwotICAgIHJldHVybiAqbV9w
cm9jZXNzZXNbMF07Ci19Ci0KIFdlYlByb2Nlc3NQcm94eSYgV2ViUHJvY2Vzc1Bvb2w6OmNyZWF0
ZU5ld1dlYlByb2Nlc3MoKQogewotI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCi0gICAgaWYg
KHVzZXNOZXR3b3JrUHJvY2VzcygpKQotICAgICAgICBlbnN1cmVOZXR3b3JrUHJvY2VzcygpOwot
I2VuZGlmCisgICAgZW5zdXJlTmV0d29ya1Byb2Nlc3MoKTsKIAogICAgIFJlZjxXZWJQcm9jZXNz
UHJveHk+IHByb2Nlc3MgPSBXZWJQcm9jZXNzUHJveHk6OmNyZWF0ZSgqdGhpcyk7CiAKQEAgLTY0
Niw3ICs1NzgsNyBAQCBXZWJQcm9jZXNzUHJveHkmIFdlYlByb2Nlc3NQb29sOjpjcmVhdGVOCiAg
ICAgLy8gaWNvbkRhdGFiYXNlUGF0aCBpcyBub24tZW1wdHkgYnkgZGVmYXVsdCwgYnV0IG1faWNv
bkRhdGFiYXNlIGlzbid0IGVuYWJsZWQgaW4gVUkgcHJvY2VzcyB1bmxlc3Mgc2V0RGF0YWJhc2VQ
YXRoIGlzIGNhbGxlZCBleHBsaWNpdGx5LgogICAgIHBhcmFtZXRlcnMuaWNvbkRhdGFiYXNlRW5h
YmxlZCA9ICFpY29uRGF0YWJhc2VQYXRoKCkuaXNFbXB0eSgpOwogCi0gICAgcGFyYW1ldGVycy50
ZXJtaW5hdGlvblRpbWVvdXQgPSAocHJvY2Vzc01vZGVsKCkgPT0gUHJvY2Vzc01vZGVsU2hhcmVk
U2Vjb25kYXJ5UHJvY2VzcykgPyBzaGFyZWRTZWNvbmRhcnlQcm9jZXNzU2h1dGRvd25UaW1lb3V0
IDogMDsKKyAgICBwYXJhbWV0ZXJzLnRlcm1pbmF0aW9uVGltZW91dCA9IDA7CiAKICAgICBwYXJh
bWV0ZXJzLnRleHRDaGVja2VyU3RhdGUgPSBUZXh0Q2hlY2tlcjo6c3RhdGUoKTsKIApAQCAtNjU5
LDEwICs1OTEsNiBAQCBXZWJQcm9jZXNzUHJveHkmIFdlYlByb2Nlc3NQb29sOjpjcmVhdGVOCiAg
ICAgc3VwcGxlbWVudDxXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHk+KCktPnBvcHVsYXRlQ29w
eU9mTm90aWZpY2F0aW9uUGVybWlzc2lvbnMocGFyYW1ldGVycy5ub3RpZmljYXRpb25QZXJtaXNz
aW9ucyk7CiAjZW5kaWYKIAotI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCi0gICAgcGFyYW1l
dGVycy51c2VzTmV0d29ya1Byb2Nlc3MgPSB1c2VzTmV0d29ya1Byb2Nlc3MoKTsKLSNlbmRpZgot
CiAgICAgcGFyYW1ldGVycy5wbHVnSW5BdXRvU3RhcnRPcmlnaW5IYXNoZXMgPSBtX3BsdWdJbkF1
dG9TdGFydFByb3ZpZGVyLmF1dG9TdGFydE9yaWdpbkhhc2hlc0NvcHkoKTsKICAgICBjb3B5VG9W
ZWN0b3IobV9wbHVnSW5BdXRvU3RhcnRQcm92aWRlci5hdXRvU3RhcnRPcmlnaW5zKCksIHBhcmFt
ZXRlcnMucGx1Z0luQXV0b1N0YXJ0T3JpZ2lucyk7CiAKQEAgLTcwNiwxNSArNjM0LDcgQEAgV2Vi
UHJvY2Vzc1Byb3h5JiBXZWJQcm9jZXNzUG9vbDo6Y3JlYXRlTgogCiAgICAgbV9wcm9jZXNzZXMu
YXBwZW5kKHByb2Nlc3MucHRyKCkpOwogCi0gICAgaWYgKHByb2Nlc3NNb2RlbCgpID09IFByb2Nl
c3NNb2RlbFNoYXJlZFNlY29uZGFyeVByb2Nlc3MpIHsKLSAgICAgICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgIT0gbV9tZXNzYWdlc1RvSW5qZWN0ZWRCdW5kbGVQb3N0ZWRUb0VtcHR5Q29udGV4dC5z
aXplKCk7ICsraSkgewotICAgICAgICAgICAgYXV0byYgbWVzc2FnZU5hbWVBbmRCb2R5ID0gbV9t
ZXNzYWdlc1RvSW5qZWN0ZWRCdW5kbGVQb3N0ZWRUb0VtcHR5Q29udGV4dFtpXTsKLQotICAgICAg
ICAgICAgcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUHJvY2Vzczo6SGFuZGxlSW5qZWN0ZWRC
dW5kbGVNZXNzYWdlKG1lc3NhZ2VOYW1lQW5kQm9keS5maXJzdCwgVXNlckRhdGEocHJvY2Vzcy0+
dHJhbnNmb3JtT2JqZWN0c1RvSGFuZGxlcyhtZXNzYWdlTmFtZUFuZEJvZHkuc2Vjb25kLmdldCgp
KS5nZXQoKSkpLCAwKTsKLSAgICAgICAgfQotICAgICAgICBtX21lc3NhZ2VzVG9JbmplY3RlZEJ1
bmRsZVBvc3RlZFRvRW1wdHlDb250ZXh0LmNsZWFyKCk7Ci0gICAgfSBlbHNlCi0gICAgICAgIEFT
U0VSVChtX21lc3NhZ2VzVG9JbmplY3RlZEJ1bmRsZVBvc3RlZFRvRW1wdHlDb250ZXh0LmlzRW1w
dHkoKSk7CisgICAgQVNTRVJUKG1fbWVzc2FnZXNUb0luamVjdGVkQnVuZGxlUG9zdGVkVG9FbXB0
eUNvbnRleHQuaXNFbXB0eSgpKTsKIAogI2lmIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQogICAg
IC8vIEluaXRpYWxpemUgcmVtb3RlIGluc3BlY3RvciBjb25uZWN0aW9uIG5vdyB0aGF0IHdlIGhh
dmUgYSBzdWItcHJvY2VzcyB0aGF0IGlzIGhvc3Rpbmcgb25lIG9mIG91ciB3ZWIgdmlld3MuCkBA
IC03OTgsMjggKzcxOCwxMiBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpkaXNjb25uZWN0UHJvY2Vz
cyhXCiAKICAgICAvLyBGSVhNRSAoTXVsdGktV2ViUHJvY2Vzcyk6IDxyZGFyOi8vcHJvYmxlbS8x
MjIzOTc2NT4gU29tZSBvZiB0aGUgaW52YWxpZGF0aW9uIGNhbGxzIGJlbG93IGFyZSBzdGlsbCBu
ZWNlc3NhcnkgaW4gbXVsdGktcHJvY2VzcyBtb2RlLCBidXQgdGhleSBzaG91bGQgb25seSBhZmZl
Y3QgZGF0YSBzdHJ1Y3R1cmVzIHBlcnRhaW5pbmcgdG8gdGhlIHByb2Nlc3MgYmVpbmcgZGlzY29u
bmVjdGVkLgogICAgIC8vIENsZWFyaW5nIGV2ZXJ5dGhpbmcgY2F1c2VzIGFzc2VydGlvbiBmYWls
dXJlcywgc28gaXQncyBsZXNzIHRyb3VibGUgdG8gc2tpcCB0aGF0IGZvciBub3cuCi0gICAgaWYg
KHByb2Nlc3NNb2RlbCgpICE9IFByb2Nlc3NNb2RlbFNoYXJlZFNlY29uZGFyeVByb2Nlc3MpIHsK
LSAgICAgICAgUmVmUHRyPFdlYlByb2Nlc3NQcm94eT4gcHJvdGVjdChwcm9jZXNzKTsKLSAgICAg
ICAgaWYgKG1fcHJvY2Vzc1dpdGhQYWdlQ2FjaGUgPT0gcHJvY2VzcykKLSAgICAgICAgICAgIG1f
cHJvY2Vzc1dpdGhQYWdlQ2FjaGUgPSAwOwotCi0gICAgICAgIHN0YXRpY19jYXN0PFdlYkNvbnRl
eHRTdXBwbGVtZW50Kj4oc3VwcGxlbWVudDxXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eT4oKSkt
PnByb2Nlc3NEaWRDbG9zZShwcm9jZXNzKTsKLQotICAgICAgICBtX3Byb2Nlc3Nlcy5yZW1vdmVG
aXJzdChwcm9jZXNzKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIFdlYkNvbnRleHRT
dXBwbGVtZW50TWFwOjpjb25zdF9pdGVyYXRvciBpdCA9IG1fc3VwcGxlbWVudHMuYmVnaW4oKTsK
LSAgICBXZWJDb250ZXh0U3VwcGxlbWVudE1hcDo6Y29uc3RfaXRlcmF0b3IgZW5kID0gbV9zdXBw
bGVtZW50cy5lbmQoKTsKLSAgICBmb3IgKDsgaXQgIT0gZW5kOyArK2l0KQotICAgICAgICBpdC0+
dmFsdWUtPnByb2Nlc3NEaWRDbG9zZShwcm9jZXNzKTsKLQotICAgIC8vIFRoZSB2ZWN0b3IgbWF5
IGhhdmUgdGhlIGxhc3QgcmVmZXJlbmNlIHRvIHByb2Nlc3MgcHJveHksIHdoaWNoIGluIHR1cm4g
bWF5IGhhdmUgdGhlIGxhc3QgcmVmZXJlbmNlIHRvIHRoZSBjb250ZXh0LgotICAgIC8vIFNpbmNl
IHZlY3RvciBlbGVtZW50cyBhcmUgZGVzdHJveWVkIGluIHBsYWNlLCB3ZSB3b3VsZCByZWN1cnNl
IGludG8gV2ViUHJvY2Vzc1Byb3h5IGRlc3RydWN0b3IKLSAgICAvLyBpZiBpdCB3ZXJlIGludm9r
ZWQgZnJvbSBWZWN0b3I6OnJlbW92ZSgpLiBSZWZQdHIgZGVsYXlzIGRlc3RydWN0aW9uIHVudGls
IGl0J3Mgc2FmZS4KICAgICBSZWZQdHI8V2ViUHJvY2Vzc1Byb3h5PiBwcm90ZWN0KHByb2Nlc3Mp
OwogICAgIGlmIChtX3Byb2Nlc3NXaXRoUGFnZUNhY2hlID09IHByb2Nlc3MpCi0gICAgICAgIG1f
cHJvY2Vzc1dpdGhQYWdlQ2FjaGUgPSBudWxscHRyOworICAgICAgICBtX3Byb2Nlc3NXaXRoUGFn
ZUNhY2hlID0gMDsKKworICAgIHN0YXRpY19jYXN0PFdlYkNvbnRleHRTdXBwbGVtZW50Kj4oc3Vw
cGxlbWVudDxXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eT4oKSktPnByb2Nlc3NEaWRDbG9zZShw
cm9jZXNzKTsKKwogICAgIG1fcHJvY2Vzc2VzLnJlbW92ZUZpcnN0KHByb2Nlc3MpOwogfQogCkBA
IC04NTEsMTggKzc1NSwxNCBAQCBSZWY8V2ViUGFnZVByb3h5PiBXZWJQcm9jZXNzUG9vbDo6Y3Jl
YXRlCiAgICAgfQogCiAgICAgUmVmUHRyPFdlYlByb2Nlc3NQcm94eT4gcHJvY2VzczsKLSAgICBp
ZiAocHJvY2Vzc01vZGVsKCkgPT0gUHJvY2Vzc01vZGVsU2hhcmVkU2Vjb25kYXJ5UHJvY2Vzcykg
ewotICAgICAgICBwcm9jZXNzID0gJmVuc3VyZVNoYXJlZFdlYlByb2Nlc3MoKTsKLSAgICB9IGVs
c2UgewotICAgICAgICBpZiAobV9oYXZlSW5pdGlhbEVtcHR5UHJvY2VzcykgewotICAgICAgICAg
ICAgcHJvY2VzcyA9IG1fcHJvY2Vzc2VzLmxhc3QoKTsKLSAgICAgICAgICAgIG1faGF2ZUluaXRp
YWxFbXB0eVByb2Nlc3MgPSBmYWxzZTsKLSAgICAgICAgfSBlbHNlIGlmIChwYWdlQ29uZmlndXJh
dGlvbi0+cmVsYXRlZFBhZ2UoKSkgewotICAgICAgICAgICAgLy8gU2hhcmluZyBwcm9jZXNzZXMs
IGUuZy4gd2hlbiBjcmVhdGluZyB0aGUgcGFnZSB2aWEgd2luZG93Lm9wZW4oKS4KLSAgICAgICAg
ICAgIHByb2Nlc3MgPSAmcGFnZUNvbmZpZ3VyYXRpb24tPnJlbGF0ZWRQYWdlKCktPnByb2Nlc3Mo
KTsKLSAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICBwcm9jZXNzID0gJmNyZWF0ZU5ld1dlYlBy
b2Nlc3NSZXNwZWN0aW5nUHJvY2Vzc0NvdW50TGltaXQoKTsKLSAgICB9CisgICAgaWYgKG1faGF2
ZUluaXRpYWxFbXB0eVByb2Nlc3MpIHsKKyAgICAgICAgcHJvY2VzcyA9IG1fcHJvY2Vzc2VzLmxh
c3QoKTsKKyAgICAgICAgbV9oYXZlSW5pdGlhbEVtcHR5UHJvY2VzcyA9IGZhbHNlOworICAgIH0g
ZWxzZSBpZiAocGFnZUNvbmZpZ3VyYXRpb24tPnJlbGF0ZWRQYWdlKCkpIHsKKyAgICAgICAgLy8g
U2hhcmluZyBwcm9jZXNzZXMsIGUuZy4gd2hlbiBjcmVhdGluZyB0aGUgcGFnZSB2aWEgd2luZG93
Lm9wZW4oKS4KKyAgICAgICAgcHJvY2VzcyA9ICZwYWdlQ29uZmlndXJhdGlvbi0+cmVsYXRlZFBh
Z2UoKS0+cHJvY2VzcygpOworICAgIH0gZWxzZQorICAgICAgICBwcm9jZXNzID0gJmNyZWF0ZU5l
d1dlYlByb2Nlc3NSZXNwZWN0aW5nUHJvY2Vzc0NvdW50TGltaXQoKTsKIAogICAgIHJldHVybiBw
cm9jZXNzLT5jcmVhdGVXZWJQYWdlKHBhZ2VDbGllbnQsIFdURjo6bW92ZShwYWdlQ29uZmlndXJh
dGlvbikpOwogfQpAQCAtODcwLDE4ICs3NzAsMTYgQEAgUmVmPFdlYlBhZ2VQcm94eT4gV2ViUHJv
Y2Vzc1Bvb2w6OmNyZWF0ZQogRG93bmxvYWRQcm94eSogV2ViUHJvY2Vzc1Bvb2w6OmRvd25sb2Fk
KFdlYlBhZ2VQcm94eSogaW5pdGlhdGluZ1BhZ2UsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVx
dWVzdCkKIHsKICAgICBEb3dubG9hZFByb3h5KiBkb3dubG9hZFByb3h5ID0gY3JlYXRlRG93bmxv
YWRQcm94eShyZXF1ZXN0KTsKLSAgICB1aW50NjRfdCBpbml0aWF0aW5nUGFnZUlEID0gaW5pdGlh
dGluZ1BhZ2UgPyBpbml0aWF0aW5nUGFnZS0+cGFnZUlEKCkgOiAwOwogICAgIFNlc3Npb25JRCBz
ZXNzaW9uSUQgPSBpbml0aWF0aW5nUGFnZSA/IGluaXRpYXRpbmdQYWdlLT5zZXNzaW9uSUQoKSA6
IFNlc3Npb25JRDo6ZGVmYXVsdFNlc3Npb25JRCgpOwogCi0jaWYgRU5BQkxFKE5FVFdPUktfUFJP
Q0VTUykKLSAgICBpZiAodXNlc05ldHdvcmtQcm9jZXNzKCkgJiYgbmV0d29ya1Byb2Nlc3MoKSkg
eworICAgIGlmIChuZXR3b3JrUHJvY2VzcygpKSB7CiAgICAgICAgIC8vIEZJWE1FIChOZXR3b3Jr
UHJvY2Vzcyk6IFJlcGxpY2F0ZSB3aGF0ZXZlciBGcmFtZUxvYWRlcjo6c2V0T3JpZ2luYWxVUkxG
b3JEb3dubG9hZFJlcXVlc3QgZG9lcyB3aXRoIHRoZSByZXF1ZXN0IGhlcmUuCiAgICAgICAgIG5l
dHdvcmtQcm9jZXNzKCktPnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpEb3dubG9hZFJl
cXVlc3Qoc2Vzc2lvbklELCBkb3dubG9hZFByb3h5LT5kb3dubG9hZElEKCksIHJlcXVlc3QpLCAw
KTsKICAgICAgICAgcmV0dXJuIGRvd25sb2FkUHJveHk7CiAgICAgfQotI2VuZGlmCiAKLSAgICBt
X3Byb2Nlc3Nlc1swXS0+c2VuZChNZXNzYWdlczo6V2ViUHJvY2Vzczo6RG93bmxvYWRSZXF1ZXN0
KHNlc3Npb25JRCwgZG93bmxvYWRQcm94eS0+ZG93bmxvYWRJRCgpLCBpbml0aWF0aW5nUGFnZUlE
LCByZXF1ZXN0KSwgMCk7CisgICAgLy8gRklYTUU6IG1ha2UgbmV0d29ya1Byb2Nlc3MoKSByZXR1
cm4gYSByZWZlcmVuY2Ugc28gdGhpcyBpcyBub3QgbmVjZXNzYXJ5LgorICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOwogICAgIHJldHVybiBkb3dubG9hZFByb3h5OwogfQogCkBAIC04OTMsMjUgKzc5
MSwxOCBAQCBEb3dubG9hZFByb3h5KiBXZWJQcm9jZXNzUG9vbDo6cmVzdW1lRG93CiAgICAgaWYg
KCFwYXRoLmlzRW1wdHkoKSkKICAgICAgICAgU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxl
KHBhdGgsIFNhbmRib3hFeHRlbnNpb246OlJlYWRXcml0ZSwgc2FuZGJveEV4dGVuc2lvbkhhbmRs
ZSk7CiAKLSNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQotICAgIGlmICh1c2VzTmV0d29ya1By
b2Nlc3MoKSAmJiBuZXR3b3JrUHJvY2VzcygpKSB7CisgICAgaWYgKG5ldHdvcmtQcm9jZXNzKCkp
IHsKICAgICAgICAgbmV0d29ya1Byb2Nlc3MoKS0+c2VuZChNZXNzYWdlczo6TmV0d29ya1Byb2Nl
c3M6OlJlc3VtZURvd25sb2FkKGRvd25sb2FkUHJveHktPmRvd25sb2FkSUQoKSwgcmVzdW1lRGF0
YS0+ZGF0YVJlZmVyZW5jZSgpLCBwYXRoLCBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlKSwgMCk7CiAg
ICAgICAgIHJldHVybiBkb3dubG9hZFByb3h5OwogICAgIH0KLSNlbmRpZgogCi0gICAgbV9wcm9j
ZXNzZXNbMF0tPnNlbmQoTWVzc2FnZXM6OldlYlByb2Nlc3M6OlJlc3VtZURvd25sb2FkKGRvd25s
b2FkUHJveHktPmRvd25sb2FkSUQoKSwgcmVzdW1lRGF0YS0+ZGF0YVJlZmVyZW5jZSgpLCBwYXRo
LCBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlKSwgMCk7CisgICAgLy8gRklYTUU6IG1ha2UgbmV0d29y
a1Byb2Nlc3MoKSByZXR1cm4gYSByZWZlcmVuY2Ugc28gdGhpcyBpcyBub3QgbmVjZXNzYXJ5Lgor
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIHJldHVybiBkb3dubG9hZFByb3h5OwogfQog
CiB2b2lkIFdlYlByb2Nlc3NQb29sOjpwb3N0TWVzc2FnZVRvSW5qZWN0ZWRCdW5kbGUoY29uc3Qg
U3RyaW5nJiBtZXNzYWdlTmFtZSwgQVBJOjpPYmplY3QqIG1lc3NhZ2VCb2R5KQogewotICAgIGlm
IChtX3Byb2Nlc3Nlcy5pc0VtcHR5KCkpIHsKLSAgICAgICAgaWYgKHByb2Nlc3NNb2RlbCgpID09
IFByb2Nlc3NNb2RlbFNoYXJlZFNlY29uZGFyeVByb2Nlc3MpCi0gICAgICAgICAgICBtX21lc3Nh
Z2VzVG9JbmplY3RlZEJ1bmRsZVBvc3RlZFRvRW1wdHlDb250ZXh0LmFwcGVuZChzdGQ6Om1ha2Vf
cGFpcihtZXNzYWdlTmFtZSwgbWVzc2FnZUJvZHkpKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0K
LQogICAgIGZvciAoYXV0byYgcHJvY2VzcyA6IG1fcHJvY2Vzc2VzKSB7CiAgICAgICAgIC8vIEZJ
WE1FOiBSZXR1cm4gZWFybHkgaWYgdGhlIG1lc3NhZ2UgYm9keSBjb250YWlucyBhbnkgcmVmZXJl
bmNlcyB0byBXS1BhZ2VSZWZzL1dLRnJhbWVSZWZzIGV0Yy4gc2luY2UgdGhleSdyZSBsb2NhbCB0
byBhIHByb2Nlc3MuCiAgICAgICAgIHByb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlByb2Nlc3M6
OkhhbmRsZUluamVjdGVkQnVuZGxlTWVzc2FnZShtZXNzYWdlTmFtZSwgVXNlckRhdGEocHJvY2Vz
cy0+dHJhbnNmb3JtT2JqZWN0c1RvSGFuZGxlcyhtZXNzYWdlQm9keSkuZ2V0KCkpKSwgMCk7CkBA
IC05NDAsNyArODMxLDYgQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6c2V0QWRkaXRpb25hbFBsdWdp
bgogfQogI2VuZGlmIC8vIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJKQogCi0jaWYgRU5BQkxF
KE5FVFdPUktfUFJPQ0VTUykKIFBsYXRmb3JtUHJvY2Vzc0lkZW50aWZpZXIgV2ViUHJvY2Vzc1Bv
b2w6Om5ldHdvcmtQcm9jZXNzSWRlbnRpZmllcigpCiB7CiAgICAgaWYgKCFtX25ldHdvcmtQcm9j
ZXNzKQpAQCAtOTQ4LDcgKzgzOCw2IEBAIFBsYXRmb3JtUHJvY2Vzc0lkZW50aWZpZXIgV2ViUHJv
Y2Vzc1Bvb2wKIAogICAgIHJldHVybiBtX25ldHdvcmtQcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmll
cigpOwogfQotI2VuZGlmCiAKIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnNldEFsd2F5c1VzZXNDb21w
bGV4VGV4dENvZGVQYXRoKGJvb2wgYWx3YXlzVXNlQ29tcGxleFRleHQpCiB7CkBAIC05ODgsMTUg
Kzg3Nyw5IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnNldERvbWFpblJlbGF4YXRpb24KIAogdm9p
ZCBXZWJQcm9jZXNzUG9vbDo6c2V0Q2FuSGFuZGxlSFRUUFNTZXJ2ZXJUcnVzdEV2YWx1YXRpb24o
Ym9vbCB2YWx1ZSkKIHsKLSNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQogICAgIG1fY2FuSGFu
ZGxlSFRUUFNTZXJ2ZXJUcnVzdEV2YWx1YXRpb24gPSB2YWx1ZTsKLSAgICBpZiAodXNlc05ldHdv
cmtQcm9jZXNzKCkgJiYgbV9uZXR3b3JrUHJvY2VzcykgeworICAgIGlmIChtX25ldHdvcmtQcm9j
ZXNzKQogICAgICAgICBtX25ldHdvcmtQcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJv
Y2Vzczo6U2V0Q2FuSGFuZGxlSFRUUFNTZXJ2ZXJUcnVzdEV2YWx1YXRpb24odmFsdWUpLCAwKTsK
LSAgICAgICAgcmV0dXJuOwotICAgIH0KLSNlbHNlCi0gICAgVU5VU0VEX1BBUkFNKHZhbHVlKTsK
LSNlbmRpZgogfQogCiB2b2lkIFdlYlByb2Nlc3NQb29sOjpyZWdpc3RlclVSTFNjaGVtZUFzTG9j
YWwoY29uc3QgU3RyaW5nJiB1cmxTY2hlbWUpCkBAIC0xMDY0LDEwICs5NDcsOCBAQCB2b2lkIFdl
YlByb2Nlc3NQb29sOjpzZXRDYWNoZU1vZGVsKENhY2hlCiAgICAgbV9jb25maWd1cmF0aW9uLT5z
ZXRDYWNoZU1vZGVsKGNhY2hlTW9kZWwpOwogICAgIHNlbmRUb0FsbFByb2Nlc3NlcyhNZXNzYWdl
czo6V2ViUHJvY2Vzczo6U2V0Q2FjaGVNb2RlbChjYWNoZU1vZGVsKSk7CiAKLSNpZiBFTkFCTEUo
TkVUV09SS19QUk9DRVNTKQotICAgIGlmICh1c2VzTmV0d29ya1Byb2Nlc3MoKSAmJiBtX25ldHdv
cmtQcm9jZXNzKQorICAgIGlmIChtX25ldHdvcmtQcm9jZXNzKQogICAgICAgICBtX25ldHdvcmtQ
cm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6U2V0Q2FjaGVNb2RlbChjYWNo
ZU1vZGVsKSwgMCk7Ci0jZW5kaWYKIH0KIAogdm9pZCBXZWJQcm9jZXNzUG9vbDo6c2V0RGVmYXVs
dFJlcXVlc3RUaW1lb3V0SW50ZXJ2YWwoZG91YmxlIHRpbWVvdXRJbnRlcnZhbCkKQEAgLTEwNzcs
MTUgKzk1OCw5IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnNldERlZmF1bHRSZXF1ZXN0VGkKIAog
RG93bmxvYWRQcm94eSogV2ViUHJvY2Vzc1Bvb2w6OmNyZWF0ZURvd25sb2FkUHJveHkoY29uc3Qg
UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQogewotI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1Mp
Ci0gICAgaWYgKHVzZXNOZXR3b3JrUHJvY2VzcygpKSB7Ci0gICAgICAgIGVuc3VyZU5ldHdvcmtQ
cm9jZXNzKCk7Ci0gICAgICAgIEFTU0VSVChtX25ldHdvcmtQcm9jZXNzKTsKLSAgICAgICAgcmV0
dXJuIG1fbmV0d29ya1Byb2Nlc3MtPmNyZWF0ZURvd25sb2FkUHJveHkocmVxdWVzdCk7Ci0gICAg
fQotI2VuZGlmCi0KLSAgICByZXR1cm4gZW5zdXJlU2hhcmVkV2ViUHJvY2VzcygpLmNyZWF0ZURv
d25sb2FkUHJveHkocmVxdWVzdCk7CisgICAgZW5zdXJlTmV0d29ya1Byb2Nlc3MoKTsKKyAgICBB
U1NFUlQobV9uZXR3b3JrUHJvY2Vzcyk7CisgICAgcmV0dXJuIG1fbmV0d29ya1Byb2Nlc3MtPmNy
ZWF0ZURvd25sb2FkUHJveHkocmVxdWVzdCk7CiB9CiAKIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OmFk
ZE1lc3NhZ2VSZWNlaXZlcihJUEM6OlN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlUmVjZWl2ZXJOYW1l
LCBJUEM6Ok1lc3NhZ2VSZWNlaXZlciYgbWVzc2FnZVJlY2VpdmVyKQpAQCAtMTE4MiwxMiArMTA1
NywxMCBAQCBTdHJpbmcgV2ViUHJvY2Vzc1Bvb2w6OmNvb2tpZVN0b3JhZ2VEaXJlCiB2b2lkIFdl
YlByb2Nlc3NQb29sOjp1c2VUZXN0aW5nTmV0d29ya1Nlc3Npb24oKQogewogICAgIEFTU0VSVCht
X3Byb2Nlc3Nlcy5pc0VtcHR5KCkpOwotI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCiAgICAg
QVNTRVJUKCFtX25ldHdvcmtQcm9jZXNzKTsKIAogICAgIGlmIChtX25ldHdvcmtQcm9jZXNzKQog
ICAgICAgICByZXR1cm47Ci0jZW5kaWYKIAogICAgIGlmICghbV9wcm9jZXNzZXMuaXNFbXB0eSgp
KQogICAgICAgICByZXR1cm47CkBAIC0xMTk3LDIyICsxMDcwLDE4IEBAIHZvaWQgV2ViUHJvY2Vz
c1Bvb2w6OnVzZVRlc3RpbmdOZXR3b3JrU2UKIAogdm9pZCBXZWJQcm9jZXNzUG9vbDo6YWxsb3dT
cGVjaWZpY0hUVFBTQ2VydGlmaWNhdGVGb3JIb3N0KGNvbnN0IFdlYkNlcnRpZmljYXRlSW5mbyog
Y2VydGlmaWNhdGUsIGNvbnN0IFN0cmluZyYgaG9zdCkKIHsKLSNpZiBFTkFCTEUoTkVUV09SS19Q
Uk9DRVNTKQotICAgIGlmICh1c2VzTmV0d29ya1Byb2Nlc3MoKSAmJiBtX25ldHdvcmtQcm9jZXNz
KSB7CisgICAgaWYgKG1fbmV0d29ya1Byb2Nlc3MpIHsKICAgICAgICAgbV9uZXR3b3JrUHJvY2Vz
cy0+c2VuZChNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OkFsbG93U3BlY2lmaWNIVFRQU0NlcnRp
ZmljYXRlRm9ySG9zdChjZXJ0aWZpY2F0ZS0+Y2VydGlmaWNhdGVJbmZvKCksIGhvc3QpLCAwKTsK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KLSNlbmRpZgogCiAjaWYgVVNFKFNPVVApCiAgICAgbV9w
cm9jZXNzZXNbMF0tPnNlbmQoTWVzc2FnZXM6OldlYlByb2Nlc3M6OkFsbG93U3BlY2lmaWNIVFRQ
U0NlcnRpZmljYXRlRm9ySG9zdChjZXJ0aWZpY2F0ZS0+Y2VydGlmaWNhdGVJbmZvKCksIGhvc3Qp
LCAwKTsKICAgICByZXR1cm47Ci0jZWxzZQotICAgIFVOVVNFRF9QQVJBTShjZXJ0aWZpY2F0ZSk7
Ci0gICAgVU5VU0VEX1BBUkFNKGhvc3QpOwogI2VuZGlmCiAKICNpZiAhUExBVEZPUk0oSU9TKQor
ICAgIC8vIEZJWE1FOiBXaHkgaXMgdGhpcyBvbmx5IG9uIGlPUz8gQ2FuIHdlIHJlbW92ZSBpdD8K
ICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICNlbmRpZgogfQpAQCAtMTI1Myw0MCArMTEyMiwx
OSBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpnZXRTdGF0aXN0aWNzKHVpbnQzCiAKIHZvaWQgV2Vi
UHJvY2Vzc1Bvb2w6OnJlcXVlc3RXZWJDb250ZW50U3RhdGlzdGljcyhTdGF0aXN0aWNzUmVxdWVz
dCogcmVxdWVzdCkKIHsKLSAgICBpZiAocHJvY2Vzc01vZGVsKCkgPT0gUHJvY2Vzc01vZGVsU2hh
cmVkU2Vjb25kYXJ5UHJvY2VzcykgewotICAgICAgICBpZiAobV9wcm9jZXNzZXMuaXNFbXB0eSgp
KQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAKLSAgICAgICAgdWludDY0X3QgcmVxdWVz
dElEID0gcmVxdWVzdC0+YWRkT3V0c3RhbmRpbmdSZXF1ZXN0KCk7Ci0gICAgICAgIG1fc3RhdGlz
dGljc1JlcXVlc3RzLnNldChyZXF1ZXN0SUQsIHJlcXVlc3QpOwotICAgICAgICBtX3Byb2Nlc3Nl
c1swXS0+c2VuZChNZXNzYWdlczo6V2ViUHJvY2Vzczo6R2V0V2ViQ29yZVN0YXRpc3RpY3MocmVx
dWVzdElEKSwgMCk7Ci0KLSAgICB9IGVsc2UgewotICAgICAgICAvLyBGSVhNRSAoTXVsdGktV2Vi
UHJvY2VzcykgPHJkYXI6Ly9wcm9ibGVtLzEzMjAwMDU5PjogTWFrZSBnZXR0aW5nIHN0YXRpc3Rp
Y3MgZnJvbSBtdWx0aXBsZSBXZWJQcm9jZXNzZXMgd29yay4KLSAgICB9CisgICAgLy8gRklYTUUg
KE11bHRpLVdlYlByb2Nlc3MpIDxyZGFyOi8vcHJvYmxlbS8xMzIwMDA1OT46IE1ha2UgZ2V0dGlu
ZyBzdGF0aXN0aWNzIGZyb20gbXVsdGlwbGUgV2ViUHJvY2Vzc2VzIHdvcmsuCiB9CiAKIHZvaWQg
V2ViUHJvY2Vzc1Bvb2w6OnJlcXVlc3ROZXR3b3JraW5nU3RhdGlzdGljcyhTdGF0aXN0aWNzUmVx
dWVzdCogcmVxdWVzdCkKIHsKLSAgICBib29sIG5ldHdvcmtQcm9jZXNzVW5hdmFpbGFibGU7Ci0j
aWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKLSAgICBuZXR3b3JrUHJvY2Vzc1VuYXZhaWxhYmxl
ID0gIXVzZXNOZXR3b3JrUHJvY2VzcygpIHx8ICFtX25ldHdvcmtQcm9jZXNzOwotI2Vsc2UKLSAg
ICBuZXR3b3JrUHJvY2Vzc1VuYXZhaWxhYmxlID0gdHJ1ZTsKLSNlbmRpZgotCi0gICAgaWYgKG5l
dHdvcmtQcm9jZXNzVW5hdmFpbGFibGUpIHsKKyAgICBpZiAoIW1fbmV0d29ya1Byb2Nlc3MpIHsK
ICAgICAgICAgTE9HX0VSUk9SKCJBdHRlbXB0IHRvIGdldCBOZXR3b3JrUHJvY2VzcyBzdGF0aXN0
aWNzIGJ1dCB0aGUgTmV0d29ya1Byb2Nlc3MgaXMgdW5hdmFpbGFibGUiKTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KIAotI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCiAgICAgdWludDY0X3Qg
cmVxdWVzdElEID0gcmVxdWVzdC0+YWRkT3V0c3RhbmRpbmdSZXF1ZXN0KCk7CiAgICAgbV9zdGF0
aXN0aWNzUmVxdWVzdHMuc2V0KHJlcXVlc3RJRCwgcmVxdWVzdCk7CiAgICAgbV9uZXR3b3JrUHJv
Y2Vzcy0+c2VuZChNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OkdldE5ldHdvcmtQcm9jZXNzU3Rh
dGlzdGljcyhyZXF1ZXN0SUQpLCAwKTsKLSNlbHNlCi0gICAgVU5VU0VEX1BBUkFNKHJlcXVlc3Qp
OwotI2VuZGlmCiB9CiAKIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OmhhbmRsZU1lc3NhZ2UoSVBDOjpD
b25uZWN0aW9uJiBjb25uZWN0aW9uLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2VOYW1lLCBjb25zdCBX
ZWJLaXQ6OlVzZXJEYXRhJiBtZXNzYWdlQm9keSkKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9XZWJQcm9jZXNzUG9vbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9XZWJQcm9jZXNzUG9vbC5oCShyZXZpc2lvbiAxOTI2MDEpCisrKyBTb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaAkod29ya2luZyBjb3B5KQpAQCAtMzQsOSArMzQs
OSBAQAogI2luY2x1ZGUgIkdlbmVyaWNDYWxsYmFjay5oIgogI2luY2x1ZGUgIk1lc3NhZ2VSZWNl
aXZlci5oIgogI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlck1hcC5oIgorI2luY2x1ZGUgIk5ldHdv
cmtQcm9jZXNzUHJveHkuaCIKICNpbmNsdWRlICJQbHVnSW5BdXRvU3RhcnRQcm92aWRlci5oIgog
I2luY2x1ZGUgIlBsdWdpbkluZm9TdG9yZS5oIgotI2luY2x1ZGUgIlByb2Nlc3NNb2RlbC5oIgog
I2luY2x1ZGUgIlByb2Nlc3NUaHJvdHRsZXIuaCIKICNpbmNsdWRlICJTdGF0aXN0aWNzUmVxdWVz
dC5oIgogI2luY2x1ZGUgIlZpc2l0ZWRMaW5rU3RvcmUuaCIKQEAgLTU5LDEwICs1OSw2IEBACiAj
aW5jbHVkZSAiRGF0YWJhc2VQcm9jZXNzUHJveHkuaCIKICNlbmRpZgogCi0jaWYgRU5BQkxFKE5F
VFdPUktfUFJPQ0VTUykKLSNpbmNsdWRlICJOZXR3b3JrUHJvY2Vzc1Byb3h5LmgiCi0jZW5kaWYK
LQogI2lmIEVOQUJMRShNRURJQV9TRVNTSU9OKQogI2luY2x1ZGUgIldlYk1lZGlhU2Vzc2lvbkZv
Y3VzTWFuYWdlci5oIgogI2VuZGlmCkBAIC04NiwxNCArODIsMTIgQEAgY2xhc3MgV2ViQ29udGV4
dFN1cHBsZW1lbnQ7CiBjbGFzcyBXZWJJY29uRGF0YWJhc2U7CiBjbGFzcyBXZWJQYWdlR3JvdXA7
CiBjbGFzcyBXZWJQYWdlUHJveHk7CitzdHJ1Y3QgTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFt
ZXRlcnM7CiBzdHJ1Y3QgU3RhdGlzdGljc0RhdGE7CiBzdHJ1Y3QgV2ViUHJvY2Vzc0NyZWF0aW9u
UGFyYW1ldGVyczsKICAgICAKIHR5cGVkZWYgR2VuZXJpY0NhbGxiYWNrPEFQSTo6RGljdGlvbmFy
eSo+IERpY3Rpb25hcnlDYWxsYmFjazsKIAotI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCi1z
dHJ1Y3QgTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnM7Ci0jZW5kaWYKIAogI2lmIFBM
QVRGT1JNKENPQ09BKQogaW50IG5ldHdvcmtQcm9jZXNzTGF0ZW5jeVFPUygpOwpAQCAtMTQyLDkg
KzEzNiw2IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldEhpc3RvcnlDbGllbnQoc3RkOjp1bmlxdWVf
cHRyPEFQSTo6TGVnYWN5Q29udGV4dEhpc3RvcnlDbGllbnQ+KTsKICAgICB2b2lkIHNldERvd25s
b2FkQ2xpZW50KHN0ZDo6dW5pcXVlX3B0cjxBUEk6OkRvd25sb2FkQ2xpZW50Pik7CiAKLSAgICB2
b2lkIHNldFByb2Nlc3NNb2RlbChQcm9jZXNzTW9kZWwpOyAvLyBDYW4gb25seSBiZSBjYWxsZWQg
d2hlbiB0aGVyZSBhcmUgbm8gcHJvY2Vzc2VzIHJ1bm5pbmcuCi0gICAgUHJvY2Vzc01vZGVsIHBy
b2Nlc3NNb2RlbCgpIGNvbnN0IHsgcmV0dXJuIG1fY29uZmlndXJhdGlvbi0+cHJvY2Vzc01vZGVs
KCk7IH0KLQogICAgIHZvaWQgc2V0TWF4aW11bU51bWJlck9mUHJvY2Vzc2VzKHVuc2lnbmVkKTsg
Ly8gQ2FuIG9ubHkgYmUgY2FsbGVkIHdoZW4gdGhlcmUgYXJlIG5vIHByb2Nlc3NlcyBydW5uaW5n
LgogICAgIHVuc2lnbmVkIG1heGltdW1OdW1iZXJPZlByb2Nlc3NlcygpIGNvbnN0IHsgcmV0dXJu
ICFtX2NvbmZpZ3VyYXRpb24tPm1heGltdW1Qcm9jZXNzQ291bnQoKSA/IFVJTlRfTUFYIDogbV9j
b25maWd1cmF0aW9uLT5tYXhpbXVtUHJvY2Vzc0NvdW50KCk7IH0KIApAQCAtMTkzLDkgKzE4NCw3
IEBAIHB1YmxpYzoKICAgICB2b2lkIGNsZWFyUGx1Z2luQ2xpZW50UG9saWNpZXMoKTsKICNlbmRp
ZgogCi0jaWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKICAgICBQbGF0Zm9ybVByb2Nlc3NJZGVu
dGlmaWVyIG5ldHdvcmtQcm9jZXNzSWRlbnRpZmllcigpOwotI2VuZGlmCiAKICAgICB2b2lkIHNl
dEFsd2F5c1VzZXNDb21wbGV4VGV4dENvZGVQYXRoKGJvb2wpOwogICAgIHZvaWQgc2V0U2hvdWxk
VXNlRm9udFNtb290aGluZyhib29sKTsKQEAgLTI4NiwxNiArMjc1LDExIEBAIHB1YmxpYzoKIAog
ICAgIC8vIE5ldHdvcmsgUHJvY2VzcyBNYW5hZ2VtZW50CiAKLSAgICB2b2lkIHNldFVzZXNOZXR3
b3JrUHJvY2Vzcyhib29sKTsKLSAgICBib29sIHVzZXNOZXR3b3JrUHJvY2VzcygpIGNvbnN0Owot
Ci0jaWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKICAgICBOZXR3b3JrUHJvY2Vzc1Byb3h5JiBl
bnN1cmVOZXR3b3JrUHJvY2VzcygpOwogICAgIE5ldHdvcmtQcm9jZXNzUHJveHkqIG5ldHdvcmtQ
cm9jZXNzKCkgeyByZXR1cm4gbV9uZXR3b3JrUHJvY2Vzcy5nZXQoKTsgfQogICAgIHZvaWQgbmV0
d29ya1Byb2Nlc3NDcmFzaGVkKE5ldHdvcmtQcm9jZXNzUHJveHkqKTsKIAogICAgIHZvaWQgZ2V0
TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKFBhc3NSZWZQdHI8TWVzc2FnZXM6OldlYlByb2Nlc3NQ
cm94eTo6R2V0TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uOjpEZWxheWVkUmVwbHk+KTsKLSNlbmRp
ZgogCiAjaWYgRU5BQkxFKERBVEFCQVNFX1BST0NFU1MpCiAgICAgdm9pZCBlbnN1cmVEYXRhYmFz
ZVByb2Nlc3MoKTsKQEAgLTM3OCw5ICszNjIsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgcmVxdWVz
dFdlYkNvbnRlbnRTdGF0aXN0aWNzKFN0YXRpc3RpY3NSZXF1ZXN0Kik7CiAgICAgdm9pZCByZXF1
ZXN0TmV0d29ya2luZ1N0YXRpc3RpY3MoU3RhdGlzdGljc1JlcXVlc3QqKTsKIAotI2lmIEVOQUJM
RShORVRXT1JLX1BST0NFU1MpCiAgICAgdm9pZCBwbGF0Zm9ybUluaXRpYWxpemVOZXR3b3JrUHJv
Y2VzcyhOZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycyYpOwotI2VuZGlmCiAKICAgICB2
b2lkIGhhbmRsZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgY29uc3QgU3RyaW5nJiBtZXNzYWdl
TmFtZSwgY29uc3QgVXNlckRhdGEmIG1lc3NhZ2VCb2R5KTsKICAgICB2b2lkIGhhbmRsZVN5bmNo
cm9ub3VzTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2VOYW1l
LCBjb25zdCBVc2VyRGF0YSYgbWVzc2FnZUJvZHksIFVzZXJEYXRhJiByZXR1cm5Vc2VyRGF0YSk7
CkBAIC01MDAsMTEgKzQ4Miw5IEBAIHByaXZhdGU6CiAKICAgICBib29sIG1fcHJvY2Vzc1Rlcm1p
bmF0aW9uRW5hYmxlZDsKIAotI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCiAgICAgYm9vbCBt
X2NhbkhhbmRsZUhUVFBTU2VydmVyVHJ1c3RFdmFsdWF0aW9uOwogICAgIGJvb2wgbV9kaWROZXR3
b3JrUHJvY2Vzc0NyYXNoOwogICAgIFJlZlB0cjxOZXR3b3JrUHJvY2Vzc1Byb3h5PiBtX25ldHdv
cmtQcm9jZXNzOwotI2VuZGlmCiAKICNpZiBFTkFCTEUoREFUQUJBU0VfUFJPQ0VTUykKICAgICBS
ZWZQdHI8RGF0YWJhc2VQcm9jZXNzUHJveHk+IG1fZGF0YWJhc2VQcm9jZXNzOwpAQCAtNTM5LDU1
ICs1MTksMTUgQEAgcHJpdmF0ZToKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CiB2b2lkIFdlYlByb2Nl
c3NQb29sOjpzZW5kVG9OZXR3b3JraW5nUHJvY2VzcyhUJiYgbWVzc2FnZSkKIHsKLSAgICBzd2l0
Y2ggKHByb2Nlc3NNb2RlbCgpKSB7Ci0gICAgY2FzZSBQcm9jZXNzTW9kZWxTaGFyZWRTZWNvbmRh
cnlQcm9jZXNzOgotI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCi0gICAgICAgIGlmICh1c2Vz
TmV0d29ya1Byb2Nlc3MoKSkgewotICAgICAgICAgICAgaWYgKG1fbmV0d29ya1Byb2Nlc3MgJiYg
bV9uZXR3b3JrUHJvY2Vzcy0+Y2FuU2VuZE1lc3NhZ2UoKSkKLSAgICAgICAgICAgICAgICBtX25l
dHdvcmtQcm9jZXNzLT5zZW5kKHN0ZDo6Zm9yd2FyZDxUPihtZXNzYWdlKSwgMCk7Ci0gICAgICAg
ICAgICByZXR1cm47Ci0gICAgICAgIH0KLSNlbmRpZgotICAgICAgICBpZiAoIW1fcHJvY2Vzc2Vz
LmlzRW1wdHkoKSAmJiBtX3Byb2Nlc3Nlc1swXS0+Y2FuU2VuZE1lc3NhZ2UoKSkKLSAgICAgICAg
ICAgIG1fcHJvY2Vzc2VzWzBdLT5zZW5kKHN0ZDo6Zm9yd2FyZDxUPihtZXNzYWdlKSwgMCk7Ci0g
ICAgICAgIHJldHVybjsKLSAgICBjYXNlIFByb2Nlc3NNb2RlbE11bHRpcGxlU2Vjb25kYXJ5UHJv
Y2Vzc2VzOgotI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCi0gICAgICAgIGlmIChtX25ldHdv
cmtQcm9jZXNzICYmIG1fbmV0d29ya1Byb2Nlc3MtPmNhblNlbmRNZXNzYWdlKCkpCi0gICAgICAg
ICAgICBtX25ldHdvcmtQcm9jZXNzLT5zZW5kKHN0ZDo6Zm9yd2FyZDxUPihtZXNzYWdlKSwgMCk7
Ci0gICAgICAgIHJldHVybjsKLSNlbHNlCi0gICAgICAgIGJyZWFrOwotI2VuZGlmCi0gICAgfQot
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIGlmIChtX25ldHdvcmtQcm9jZXNzICYmIG1f
bmV0d29ya1Byb2Nlc3MtPmNhblNlbmRNZXNzYWdlKCkpCisgICAgICAgIG1fbmV0d29ya1Byb2Nl
c3MtPnNlbmQoc3RkOjpmb3J3YXJkPFQ+KG1lc3NhZ2UpLCAwKTsKIH0KIAogdGVtcGxhdGU8dHlw
ZW5hbWUgVD4KIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnNlbmRUb05ldHdvcmtpbmdQcm9jZXNzUmVs
YXVuY2hpbmdJZk5lY2Vzc2FyeShUJiYgbWVzc2FnZSkKIHsKLSAgICBzd2l0Y2ggKHByb2Nlc3NN
b2RlbCgpKSB7Ci0gICAgY2FzZSBQcm9jZXNzTW9kZWxTaGFyZWRTZWNvbmRhcnlQcm9jZXNzOgot
I2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCi0gICAgICAgIGlmICh1c2VzTmV0d29ya1Byb2Nl
c3MoKSkgewotICAgICAgICAgICAgZW5zdXJlTmV0d29ya1Byb2Nlc3MoKTsKLSAgICAgICAgICAg
IG1fbmV0d29ya1Byb2Nlc3MtPnNlbmQoc3RkOjpmb3J3YXJkPFQ+KG1lc3NhZ2UpLCAwKTsKLSAg
ICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotI2VuZGlmCi0gICAgICAgIGVuc3VyZVNoYXJl
ZFdlYlByb2Nlc3MoKTsKLSAgICAgICAgbV9wcm9jZXNzZXNbMF0tPnNlbmQoc3RkOjpmb3J3YXJk
PFQ+KG1lc3NhZ2UpLCAwKTsKLSAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgUHJvY2Vzc01vZGVs
TXVsdGlwbGVTZWNvbmRhcnlQcm9jZXNzZXM6Ci0jaWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykK
LSAgICAgICAgZW5zdXJlTmV0d29ya1Byb2Nlc3MoKTsKLSAgICAgICAgbV9uZXR3b3JrUHJvY2Vz
cy0+c2VuZChzdGQ6OmZvcndhcmQ8VD4obWVzc2FnZSksIDApOwotICAgICAgICByZXR1cm47Ci0j
ZWxzZQotICAgICAgICBicmVhazsKLSNlbmRpZgotICAgIH0KLSAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKKyAgICBlbnN1cmVOZXR3b3JrUHJvY2VzcygpOworICAgIG1fbmV0d29ya1Byb2Nlc3Mt
PnNlbmQoc3RkOjpmb3J3YXJkPFQ+KG1lc3NhZ2UpLCAwKTsKIH0KIAogdGVtcGxhdGU8dHlwZW5h
bWUgVD4KQEAgLTYxNiwxNyArNTU2LDEyIEBAIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CiB2b2lkIFdl
YlByb2Nlc3NQb29sOjpzZW5kVG9BbGxQcm9jZXNzZXNSZWxhdW5jaGluZ1RoZW1JZk5lY2Vzc2Fy
eShjb25zdCBUJiBtZXNzYWdlKQogewogICAgIC8vIEZJWE1FIChNdWx0aS1XZWJQcm9jZXNzKTog
V2ViUHJvY2Vzc1Bvb2wgZG9lc24ndCB0cmFjayBwcm9jZXNzZXMgdGhhdCBoYXZlIGV4aXRlZCwg
c28gaXQgY2Fubm90IHJlbGF1bmNoIHRoZXNlLiBQZXJoYXBzIHRoaXMgZnVuY3Rpb25hbGl0eSB3
b24ndCBiZSBuZWVkZWQgaW4gdGhpcyBtb2RlLgotICAgIGlmIChwcm9jZXNzTW9kZWwoKSA9PSBQ
cm9jZXNzTW9kZWxTaGFyZWRTZWNvbmRhcnlQcm9jZXNzKQotICAgICAgICBlbnN1cmVTaGFyZWRX
ZWJQcm9jZXNzKCk7CiAgICAgc2VuZFRvQWxsUHJvY2Vzc2VzKG1lc3NhZ2UpOwogfQogCiB0ZW1w
bGF0ZTx0eXBlbmFtZSBUPgogdm9pZCBXZWJQcm9jZXNzUG9vbDo6c2VuZFRvT25lUHJvY2VzcyhU
JiYgbWVzc2FnZSkKIHsKLSAgICBpZiAocHJvY2Vzc01vZGVsKCkgPT0gUHJvY2Vzc01vZGVsU2hh
cmVkU2Vjb25kYXJ5UHJvY2VzcykKLSAgICAgICAgZW5zdXJlU2hhcmVkV2ViUHJvY2VzcygpOwot
CiAgICAgYm9vbCBtZXNzYWdlU2VudCA9IGZhbHNlOwogICAgIHNpemVfdCBwcm9jZXNzQ291bnQg
PSBtX3Byb2Nlc3Nlcy5zaXplKCk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBwcm9jZXNz
Q291bnQ7ICsraSkgewpAQCAtNjM4LDcgKzU3Myw3IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnNl
bmRUb09uZVByb2Nlc3MoVCYKICAgICAgICAgfQogICAgIH0KIAotICAgIGlmICghbWVzc2FnZVNl
bnQgJiYgcHJvY2Vzc01vZGVsKCkgPT0gUHJvY2Vzc01vZGVsTXVsdGlwbGVTZWNvbmRhcnlQcm9j
ZXNzZXMpIHsKKyAgICBpZiAoIW1lc3NhZ2VTZW50KSB7CiAgICAgICAgIHdhcm1Jbml0aWFsUHJv
Y2VzcygpOwogICAgICAgICBSZWZQdHI8V2ViUHJvY2Vzc1Byb3h5PiBwcm9jZXNzID0gbV9wcm9j
ZXNzZXMubGFzdCgpOwogICAgICAgICBpZiAocHJvY2Vzcy0+Y2FuU2VuZE1lc3NhZ2UoKSkKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCShyZXZp
c2lvbiAxOTI2MDEpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjU2LDcgKzI1Niw3IEBAIHZvaWQgV2ViUHJvY2Vzc1By
b3h5OjpyZW1vdmVXZWJQYWdlKHVpbnQKIAogICAgIC8vIElmIHRoaXMgd2FzIHRoZSBsYXN0IFdl
YlBhZ2Ugb3BlbiBpbiB0aGF0IHdlYiBwcm9jZXNzLCBhbmQgd2UgaGF2ZSBubyBvdGhlciByZWFz
b24gdG8ga2VlcCBpdCBhbGl2ZSwgbGV0IGl0IGdvLgogICAgIC8vIFdlIG9ubHkgYWxsb3cgdGhp
cyB3aGVuIHVzaW5nIGEgbmV0d29yayBwcm9jZXNzLCBhcyBvdGhlcndpc2UgdGhlIFdlYlByb2Nl
c3MgbmVlZHMgdG8gcHJlc2VydmUgaXRzIHNlc3Npb24gc3RhdGUuCi0gICAgaWYgKCFtX3Byb2Nl
c3NQb29sLT51c2VzTmV0d29ya1Byb2Nlc3MoKSB8fCBzdGF0ZSgpID09IFN0YXRlOjpUZXJtaW5h
dGVkIHx8ICFjYW5UZXJtaW5hdGVDaGlsZFByb2Nlc3MoKSkKKyAgICBpZiAoc3RhdGUoKSA9PSBT
dGF0ZTo6VGVybWluYXRlZCB8fCAhY2FuVGVybWluYXRlQ2hpbGRQcm9jZXNzKCkpCiAgICAgICAg
IHJldHVybjsKIAogICAgIHNodXREb3duKCk7CkBAIC00MjcsMTIgKzQyNywxMCBAQCB2b2lkIFdl
YlByb2Nlc3NQcm94eTo6Z2V0UGx1Z2luUHJvY2Vzc0NvCiB9CiAjZW5kaWYKIAotI2lmIEVOQUJM
RShORVRXT1JLX1BST0NFU1MpCiB2b2lkIFdlYlByb2Nlc3NQcm94eTo6Z2V0TmV0d29ya1Byb2Nl
c3NDb25uZWN0aW9uKFBhc3NSZWZQdHI8TWVzc2FnZXM6OldlYlByb2Nlc3NQcm94eTo6R2V0TmV0
d29ya1Byb2Nlc3NDb25uZWN0aW9uOjpEZWxheWVkUmVwbHk+IHJlcGx5KQogewogICAgIG1fcHJv
Y2Vzc1Bvb2wtPmdldE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbihyZXBseSk7CiB9Ci0jZW5kaWYg
Ly8gRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKIAogI2lmIEVOQUJMRShEQVRBQkFTRV9QUk9DRVNT
KQogdm9pZCBXZWJQcm9jZXNzUHJveHk6OmdldERhdGFiYXNlUHJvY2Vzc0Nvbm5lY3Rpb24oUGFz
c1JlZlB0cjxNZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpHZXREYXRhYmFzZVByb2Nlc3NDb25u
ZWN0aW9uOjpEZWxheWVkUmVwbHk+IHJlcGx5KQpAQCAtNzAyLDE4ICs3MDAsNiBAQCB2b2lkIFdl
YlByb2Nlc3NQcm94eTo6dXBkYXRlVGV4dENoZWNrZXJTCiAgICAgICAgIHNlbmQoTWVzc2FnZXM6
OldlYlByb2Nlc3M6OlNldFRleHRDaGVja2VyU3RhdGUoVGV4dENoZWNrZXI6OnN0YXRlKCkpLCAw
KTsKIH0KIAotRG93bmxvYWRQcm94eSogV2ViUHJvY2Vzc1Byb3h5OjpjcmVhdGVEb3dubG9hZFBy
b3h5KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKLXsKLSNpZiBFTkFCTEUoTkVUV09S
S19QUk9DRVNTKQotICAgIEFTU0VSVCghbV9wcm9jZXNzUG9vbC0+dXNlc05ldHdvcmtQcm9jZXNz
KCkpOwotI2VuZGlmCi0KLSAgICBpZiAoIW1fZG93bmxvYWRQcm94eU1hcCkKLSAgICAgICAgbV9k
b3dubG9hZFByb3h5TWFwID0gc3RkOjptYWtlX3VuaXF1ZTxEb3dubG9hZFByb3h5TWFwPih0aGlz
KTsKLQotICAgIHJldHVybiBtX2Rvd25sb2FkUHJveHlNYXAtPmNyZWF0ZURvd25sb2FkUHJveHko
bV9wcm9jZXNzUG9vbCwgcmVxdWVzdCk7Ci19Ci0KIHZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpkaWRT
YXZlVG9QYWdlQ2FjaGUoKQogewogICAgIG1fcHJvY2Vzc1Bvb2wtPnByb2Nlc3NEaWRDYWNoZVBh
Z2UodGhpcyk7CkBAIC05NDcsNyArOTMzLDYgQEAgdm9pZCBXZWJQcm9jZXNzUHJveHk6OmRpZENh
bmNlbFByb2Nlc3NTdQogICAgIG1fdGhyb3R0bGVyLmRpZENhbmNlbFByb2Nlc3NTdXNwZW5zaW9u
KCk7CiB9CiAKLSNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQogdm9pZCBXZWJQcm9jZXNzUHJv
eHk6OnJlaW5zdGF0ZU5ldHdvcmtQcm9jZXNzQXNzZXJ0aW9uU3RhdGUoTmV0d29ya1Byb2Nlc3NQ
cm94eSYgbmV3TmV0d29ya1Byb2Nlc3NQcm94eSkKIHsKICNpZiBQTEFURk9STShJT1MpCkBAIC05
NjIsMTEgKzk0NywxMCBAQCB2b2lkIFdlYlByb2Nlc3NQcm94eTo6cmVpbnN0YXRlTmV0d29ya1By
CiAgICAgVU5VU0VEX1BBUkFNKG5ld05ldHdvcmtQcm9jZXNzUHJveHkpOwogI2VuZGlmCiB9Ci0j
ZW5kaWYKIAogdm9pZCBXZWJQcm9jZXNzUHJveHk6OmRpZFNldEFzc2VydGlvblN0YXRlKEFzc2Vy
dGlvblN0YXRlIHN0YXRlKQogewotI2lmIFBMQVRGT1JNKElPUykgJiYgRU5BQkxFKE5FVFdPUktf
UFJPQ0VTUykKKyNpZiBQTEFURk9STShJT1MpCiAgICAgQVNTRVJUKCFtX2JhY2tncm91bmRUb2tl
bkZvck5ldHdvcmtQcm9jZXNzIHx8ICFtX2ZvcmVncm91bmRUb2tlbkZvck5ldHdvcmtQcm9jZXNz
KTsKIAogICAgIHN3aXRjaCAoc3RhdGUpIHsKQEAgLTk3OCwxNCArOTYyLDEyIEBAIHZvaWQgV2Vi
UHJvY2Vzc1Byb3h5OjpkaWRTZXRBc3NlcnRpb25TdGEKICAgICAgICAgYnJlYWs7CiAKICAgICBj
YXNlIEFzc2VydGlvblN0YXRlOjpCYWNrZ3JvdW5kOgotICAgICAgICBpZiAocHJvY2Vzc1Bvb2wo
KS51c2VzTmV0d29ya1Byb2Nlc3MoKSkKLSAgICAgICAgICAgIG1fYmFja2dyb3VuZFRva2VuRm9y
TmV0d29ya1Byb2Nlc3MgPSBwcm9jZXNzUG9vbCgpLmVuc3VyZU5ldHdvcmtQcm9jZXNzKCkudGhy
b3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKTsKKyAgICAgICAgbV9iYWNrZ3JvdW5k
VG9rZW5Gb3JOZXR3b3JrUHJvY2VzcyA9IHByb2Nlc3NQb29sKCkuZW5zdXJlTmV0d29ya1Byb2Nl
c3MoKS50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpOwogICAgICAgICBtX2Zv
cmVncm91bmRUb2tlbkZvck5ldHdvcmtQcm9jZXNzID0gbnVsbHB0cjsKICAgICAgICAgYnJlYWs7
CiAgICAgCiAgICAgY2FzZSBBc3NlcnRpb25TdGF0ZTo6Rm9yZWdyb3VuZDoKLSAgICAgICAgaWYg
KHByb2Nlc3NQb29sKCkudXNlc05ldHdvcmtQcm9jZXNzKCkpCi0gICAgICAgICAgICBtX2ZvcmVn
cm91bmRUb2tlbkZvck5ldHdvcmtQcm9jZXNzID0gcHJvY2Vzc1Bvb2woKS5lbnN1cmVOZXR3b3Jr
UHJvY2VzcygpLnRocm90dGxlcigpLmZvcmVncm91bmRBY3Rpdml0eVRva2VuKCk7CisgICAgICAg
IG1fZm9yZWdyb3VuZFRva2VuRm9yTmV0d29ya1Byb2Nlc3MgPSBwcm9jZXNzUG9vbCgpLmVuc3Vy
ZU5ldHdvcmtQcm9jZXNzKCkudGhyb3R0bGVyKCkuZm9yZWdyb3VuZEFjdGl2aXR5VG9rZW4oKTsK
ICAgICAgICAgbV9iYWNrZ3JvdW5kVG9rZW5Gb3JOZXR3b3JrUHJvY2VzcyA9IG51bGxwdHI7CiAg
ICAgICAgIGZvciAoYXV0byYgcGFnZSA6IG1fcGFnZU1hcC52YWx1ZXMoKSkKICAgICAgICAgICAg
IHBhZ2UtPnByb2Nlc3NXaWxsQmVjb21lRm9yZWdyb3VuZCgpOwpJbmRleDogU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaAkocmV2aXNpb24gMTkyNjAxKQorKysgU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oCSh3b3JraW5nIGNvcHkpCkBA
IC0xNTIsOSArMTUyLDcgQEAgcHVibGljOgogCiAgICAgUHJvY2Vzc1Rocm90dGxlciYgdGhyb3R0
bGVyKCkgeyByZXR1cm4gbV90aHJvdHRsZXI7IH0KIAotI2lmIEVOQUJMRShORVRXT1JLX1BST0NF
U1MpCiAgICAgdm9pZCByZWluc3RhdGVOZXR3b3JrUHJvY2Vzc0Fzc2VydGlvblN0YXRlKE5ldHdv
cmtQcm9jZXNzUHJveHkmKTsKLSNlbmRpZgogCiBwcml2YXRlOgogICAgIGV4cGxpY2l0IFdlYlBy
b2Nlc3NQcm94eShXZWJQcm9jZXNzUG9vbCYpOwpAQCAtMTg2LDkgKzE4NCw3IEBAIHByaXZhdGU6
CiAjaWYgRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpCiAgICAgdm9pZCBnZXRQbHVnaW5Qcm9j
ZXNzQ29ubmVjdGlvbih1aW50NjRfdCBwbHVnaW5Qcm9jZXNzVG9rZW4sIFBhc3NSZWZQdHI8TWVz
c2FnZXM6OldlYlByb2Nlc3NQcm94eTo6R2V0UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb246OkRlbGF5
ZWRSZXBseT4pOwogI2VuZGlmCi0jaWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKICAgICB2b2lk
IGdldE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbihQYXNzUmVmUHRyPE1lc3NhZ2VzOjpXZWJQcm9j
ZXNzUHJveHk6OkdldE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbjo6RGVsYXllZFJlcGx5Pik7Ci0j
ZW5kaWYKICNpZiBFTkFCTEUoREFUQUJBU0VfUFJPQ0VTUykKICAgICB2b2lkIGdldERhdGFiYXNl
UHJvY2Vzc0Nvbm5lY3Rpb24oUGFzc1JlZlB0cjxNZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpH
ZXREYXRhYmFzZVByb2Nlc3NDb25uZWN0aW9uOjpEZWxheWVkUmVwbHk+KTsKICNlbmRpZgpAQCAt
MjUzLDcgKzI0OSw3IEBAIHByaXZhdGU6CiAgICAgaW50IG1fbnVtYmVyT2ZUaW1lc1N1ZGRlblRl
cm1pbmF0aW9uV2FzRGlzYWJsZWQ7CiAgICAgUHJvY2Vzc1Rocm90dGxlciBtX3Rocm90dGxlcjsK
ICAgICBQcm9jZXNzVGhyb3R0bGVyOjpCYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbiBtX3Rva2VuRm9y
SG9sZGluZ0xvY2tlZEZpbGVzOwotI2lmIFBMQVRGT1JNKElPUykgJiYgRU5BQkxFKE5FVFdPUktf
UFJPQ0VTUykKKyNpZiBQTEFURk9STShJT1MpCiAgICAgUHJvY2Vzc1Rocm90dGxlcjo6Rm9yZWdy
b3VuZEFjdGl2aXR5VG9rZW4gbV9mb3JlZ3JvdW5kVG9rZW5Gb3JOZXR3b3JrUHJvY2VzczsKICAg
ICBQcm9jZXNzVGhyb3R0bGVyOjpCYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbiBtX2JhY2tncm91bmRU
b2tlbkZvck5ldHdvcmtQcm9jZXNzOwogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvV2ViUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkubWVzc2FnZXMuaW4JKHJldmlzaW9uIDE5
MjYwMSkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkubWVzc2Fn
ZXMuaW4JKHdvcmtpbmcgY29weSkKQEAgLTM4LDkgKzM4LDcgQEAgbWVzc2FnZXMgLT4gV2ViUHJv
Y2Vzc1Byb3h5IExlZ2FjeVJlY2VpdgogICAgIEdldFBsdWdpbnMoYm9vbCByZWZyZXNoKSAtPiAo
VmVjdG9yPFdlYkNvcmU6OlBsdWdpbkluZm8+IHBsdWdpbnMsIFZlY3RvcjxXZWJDb3JlOjpQbHVn
aW5JbmZvPiBhcHBsaWNhdGlvblBsdWdpbnMpCiAgICAgR2V0UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rp
b24odWludDY0X3QgcGx1Z2luUHJvY2Vzc1Rva2VuKSAtPiAoSVBDOjpBdHRhY2htZW50IGNvbm5l
Y3Rpb25IYW5kbGUsIGJvb2wgc3VwcG9ydHNBc3luY2hyb25vdXNJbml0aWFsaXphdGlvbikgRGVs
YXllZAogI2VuZGlmCi0jaWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKICAgICBHZXROZXR3b3Jr
UHJvY2Vzc0Nvbm5lY3Rpb24oKSAtPiAoSVBDOjpBdHRhY2htZW50IGNvbm5lY3Rpb25IYW5kbGUp
IERlbGF5ZWQKLSNlbmRpZgogI2lmIEVOQUJMRShEQVRBQkFTRV9QUk9DRVNTKQogICAgIEdldERh
dGFiYXNlUHJvY2Vzc0Nvbm5lY3Rpb24oKSAtPiAoSVBDOjpBdHRhY2htZW50IGNvbm5lY3Rpb25I
YW5kbGUpIERlbGF5ZWQKICNlbmRpZgpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9BUElQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQVBJUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmNwcAkocmV2
aXNpb24gMTkyNjAxKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9BUElQcm9jZXNz
UG9vbENvbmZpZ3VyYXRpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MSw3ICs0MSw2IEBAIFJl
ZjxQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24+IFByb2Nlc3NQb28KICAgICBhdXRvIGNvbmZpZ3Vy
YXRpb24gPSBQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb246OmNyZWF0ZSgpOwogCiAgICAgY29uZmln
dXJhdGlvbi0+bV9zaG91bGRIYXZlTGVnYWN5RGF0YVN0b3JlID0gdHJ1ZTsKLSAgICBjb25maWd1
cmF0aW9uLT5tX3Byb2Nlc3NNb2RlbCA9IFdlYktpdDo6UHJvY2Vzc01vZGVsU2hhcmVkU2Vjb25k
YXJ5UHJvY2VzczsKICAgICBjb25maWd1cmF0aW9uLT5tX3VzZU5ldHdvcmtQcm9jZXNzID0gZmFs
c2U7CiAgICAgY29uZmlndXJhdGlvbi0+bV9jYWNoZU1vZGVsID0gV2ViS2l0OjpDYWNoZU1vZGVs
RG9jdW1lbnRWaWV3ZXI7CiAKQEAgLTc0LDcgKzczLDYgQEAgUmVmPFByb2Nlc3NQb29sQ29uZmln
dXJhdGlvbj4gUHJvY2Vzc1BvbwogICAgIGF1dG8gY29weSA9IHRoaXMtPmNyZWF0ZSgpOwogCiAg
ICAgY29weS0+bV9zaG91bGRIYXZlTGVnYWN5RGF0YVN0b3JlID0gdGhpcy0+bV9zaG91bGRIYXZl
TGVnYWN5RGF0YVN0b3JlOwotICAgIGNvcHktPm1fcHJvY2Vzc01vZGVsID0gdGhpcy0+bV9wcm9j
ZXNzTW9kZWw7CiAgICAgY29weS0+bV91c2VOZXR3b3JrUHJvY2VzcyA9IHRoaXMtPm1fdXNlTmV0
d29ya1Byb2Nlc3M7CiAgICAgY29weS0+bV9tYXhpbXVtUHJvY2Vzc0NvdW50ID0gdGhpcy0+bV9t
YXhpbXVtUHJvY2Vzc0NvdW50OwogICAgIGNvcHktPm1fY2FjaGVNb2RlbCA9IHRoaXMtPm1fY2Fj
aGVNb2RlbDsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQVBJUHJvY2Vzc1Bv
b2xDb25maWd1cmF0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9BUElQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uaAkocmV2aXNpb24gMTkyNjAxKQorKysg
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9BUElQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24u
aAkod29ya2luZyBjb3B5KQpAQCAtMjgsNyArMjgsNiBAQAogCiAjaW5jbHVkZSAiQVBJT2JqZWN0
LmgiCiAjaW5jbHVkZSAiQ2FjaGVNb2RlbC5oIgotI2luY2x1ZGUgIlByb2Nlc3NNb2RlbC5oIgog
I2luY2x1ZGUgPHd0Zi9SZWYuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAjaW5jbHVkZSA8
d3RmL3RleHQvV1RGU3RyaW5nLmg+CkBAIC00OCw5ICs0Nyw2IEBAIHB1YmxpYzoKICAgICBib29s
IHNob3VsZEhhdmVMZWdhY3lEYXRhU3RvcmUoKSBjb25zdCB7IHJldHVybiBtX3Nob3VsZEhhdmVM
ZWdhY3lEYXRhU3RvcmU7IH0KICAgICB2b2lkIHNldFNob3VsZEhhdmVMZWdhY3lEYXRhU3RvcmUo
Ym9vbCBzaG91bGRIYXZlTGVnYWN5RGF0YVN0b3JlKSB7IG1fc2hvdWxkSGF2ZUxlZ2FjeURhdGFT
dG9yZSA9IHNob3VsZEhhdmVMZWdhY3lEYXRhU3RvcmU7IH0KIAotICAgIFdlYktpdDo6UHJvY2Vz
c01vZGVsIHByb2Nlc3NNb2RlbCgpIGNvbnN0IHsgcmV0dXJuIG1fcHJvY2Vzc01vZGVsOyB9Ci0g
ICAgdm9pZCBzZXRQcm9jZXNzTW9kZWwoV2ViS2l0OjpQcm9jZXNzTW9kZWwgcHJvY2Vzc01vZGVs
KSB7IG1fcHJvY2Vzc01vZGVsID0gcHJvY2Vzc01vZGVsOyB9IAotCiAgICAgYm9vbCB1c2VOZXR3
b3JrUHJvY2VzcygpIGNvbnN0IHsgcmV0dXJuIG1fdXNlTmV0d29ya1Byb2Nlc3M7IH0KICAgICB2
b2lkIHNldFVzZU5ldHdvcmtQcm9jZXNzKGJvb2wgdXNlTmV0d29ya1Byb2Nlc3MpIHsgbV91c2VO
ZXR3b3JrUHJvY2VzcyA9IHVzZU5ldHdvcmtQcm9jZXNzOyB9IAogCkBAIC05Niw3ICs5Miw2IEBA
IHB1YmxpYzoKIHByaXZhdGU6CiAgICAgYm9vbCBtX3Nob3VsZEhhdmVMZWdhY3lEYXRhU3RvcmUg
eyBmYWxzZSB9OwogCi0gICAgV2ViS2l0OjpQcm9jZXNzTW9kZWwgbV9wcm9jZXNzTW9kZWwgeyBX
ZWJLaXQ6OlByb2Nlc3NNb2RlbE11bHRpcGxlU2Vjb25kYXJ5UHJvY2Vzc2VzIH07CiAgICAgYm9v
bCBtX3VzZU5ldHdvcmtQcm9jZXNzIHsgdHJ1ZSB9OwogICAgIHVuc2lnbmVkIG1fbWF4aW11bVBy
b2Nlc3NDb3VudCB7IDAgfTsKICAgICBXZWJLaXQ6OkNhY2hlTW9kZWwgbV9jYWNoZU1vZGVsIHsg
V2ViS2l0OjpDYWNoZU1vZGVsUHJpbWFyeVdlYkJyb3dzZXIgfTsKSW5kZXg6IFNvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvQVBJU2Vzc2lvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9BUElTZXNzaW9uLmNwcAkocmV2aXNpb24gMTkyNjAxKQorKysg
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9BUElTZXNzaW9uLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMjgsMTAgKzI4LDggQEAKIAogI2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+CiAKLSNpZiBF
TkFCTEUoTkVUV09SS19QUk9DRVNTKQogI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzTWVzc2FnZXMu
aCIKICNpbmNsdWRlICJXZWJQcm9jZXNzUG9vbC5oIgotI2VuZGlmCiAKIG5hbWVzcGFjZSBBUEkg
ewogCkBAIC04MCwxMiArNzgsMTAgQEAgV2ViQ29yZTo6U2Vzc2lvbklEIFNlc3Npb246OmdldElE
KCkgY29ucwogCiBTZXNzaW9uOjp+U2Vzc2lvbigpCiB7Ci0jaWYgRU5BQkxFKE5FVFdPUktfUFJP
Q0VTUykKICAgICBpZiAobV9zZXNzaW9uSUQuaXNFcGhlbWVyYWwoKSkgewogICAgICAgICBmb3Ig
KGF1dG8mIHByb2Nlc3NQb29sIDogV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6YWxsUHJvY2Vzc1Bv
b2xzKCkpCiAgICAgICAgICAgICBwcm9jZXNzUG9vbC0+c2VuZFRvTmV0d29ya2luZ1Byb2Nlc3Mo
TWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpEZXN0cm95UHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbiht
X3Nlc3Npb25JRCkpOwogICAgIH0KLSNlbmRpZgogfQogCiB9IC8vIG5hbWVzcGFjZSBBUEkKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0FQSUNhc3QuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tBUElDYXN0LmgJKHJldmlzaW9u
IDE5MjYwMSkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0FQSUNhc3QuaAko
d29ya2luZyBjb3B5KQpAQCAtMzIsNyArMzIsNiBAQAogI2luY2x1ZGUgIkhUVFBDb29raWVBY2Nl
cHRQb2xpY3kuaCIKICNpbmNsdWRlICJJbmplY3RlZEJ1bmRsZUhpdFRlc3RSZXN1bHRNZWRpYVR5
cGUuaCIKICNpbmNsdWRlICJQbHVnaW5Nb2R1bGVJbmZvLmgiCi0jaW5jbHVkZSAiUHJvY2Vzc01v
ZGVsLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VDYWNoZXNUb0NsZWFyLmgiCiAjaW5jbHVkZSAiV0tC
dW5kbGVIaXRUZXN0UmVzdWx0LmgiCiAjaW5jbHVkZSAiV0tDb250ZXh0LmgiCkBAIC0yMzAsMzEg
KzIyOSw2IEBAIGlubGluZSBXS0NhY2hlTW9kZWwgdG9BUEkoQ2FjaGVNb2RlbCBjYWMKICAgICBy
ZXR1cm4ga1dLQ2FjaGVNb2RlbERvY3VtZW50Vmlld2VyOwogfQogCi1pbmxpbmUgUHJvY2Vzc01v
ZGVsIHRvUHJvY2Vzc01vZGVsKFdLUHJvY2Vzc01vZGVsIHdrUHJvY2Vzc01vZGVsKQotewotICAg
IHN3aXRjaCAod2tQcm9jZXNzTW9kZWwpIHsKLSAgICBjYXNlIGtXS1Byb2Nlc3NNb2RlbFNoYXJl
ZFNlY29uZGFyeVByb2Nlc3M6Ci0gICAgICAgIHJldHVybiBQcm9jZXNzTW9kZWxTaGFyZWRTZWNv
bmRhcnlQcm9jZXNzOwotICAgIGNhc2Uga1dLUHJvY2Vzc01vZGVsTXVsdGlwbGVTZWNvbmRhcnlQ
cm9jZXNzZXM6Ci0gICAgICAgIHJldHVybiBQcm9jZXNzTW9kZWxNdWx0aXBsZVNlY29uZGFyeVBy
b2Nlc3NlczsKLSAgICB9Ci0KLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4g
UHJvY2Vzc01vZGVsU2hhcmVkU2Vjb25kYXJ5UHJvY2VzczsKLX0KLQotaW5saW5lIFdLUHJvY2Vz
c01vZGVsIHRvQVBJKFByb2Nlc3NNb2RlbCBwcm9jZXNzTW9kZWwpCi17Ci0gICAgc3dpdGNoIChw
cm9jZXNzTW9kZWwpIHsKLSAgICBjYXNlIFByb2Nlc3NNb2RlbFNoYXJlZFNlY29uZGFyeVByb2Nl
c3M6Ci0gICAgICAgIHJldHVybiBrV0tQcm9jZXNzTW9kZWxTaGFyZWRTZWNvbmRhcnlQcm9jZXNz
OwotICAgIGNhc2UgUHJvY2Vzc01vZGVsTXVsdGlwbGVTZWNvbmRhcnlQcm9jZXNzZXM6Ci0gICAg
ICAgIHJldHVybiBrV0tQcm9jZXNzTW9kZWxNdWx0aXBsZVNlY29uZGFyeVByb2Nlc3NlczsKLSAg
ICB9Ci0gICAgCi0gICAgcmV0dXJuIGtXS1Byb2Nlc3NNb2RlbFNoYXJlZFNlY29uZGFyeVByb2Nl
c3M7Ci19Ci0KIGlubGluZSBGb250U21vb3RoaW5nTGV2ZWwgdG9Gb250U21vb3RoaW5nTGV2ZWwo
V0tGb250U21vb3RoaW5nTGV2ZWwgd2tMZXZlbCkKIHsKICAgICBzd2l0Y2ggKHdrTGV2ZWwpIHsK
SW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHQuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHQuY3BwCShy
ZXZpc2lvbiAxOTI2MDEpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tDb250
ZXh0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzI5LDE2ICszMjksNiBAQCBXS0NhY2hlTW9kZWwg
V0tDb250ZXh0R2V0Q2FjaGVNb2RlbChXS0NvCiAgICAgcmV0dXJuIHRvQVBJKHRvSW1wbChjb250
ZXh0UmVmKS0+Y2FjaGVNb2RlbCgpKTsKIH0KIAotdm9pZCBXS0NvbnRleHRTZXRQcm9jZXNzTW9k
ZWwoV0tDb250ZXh0UmVmIGNvbnRleHRSZWYsIFdLUHJvY2Vzc01vZGVsIHByb2Nlc3NNb2RlbCkK
LXsKLSAgICB0b0ltcGwoY29udGV4dFJlZiktPnNldFByb2Nlc3NNb2RlbCh0b1Byb2Nlc3NNb2Rl
bChwcm9jZXNzTW9kZWwpKTsKLX0KLQotV0tQcm9jZXNzTW9kZWwgV0tDb250ZXh0R2V0UHJvY2Vz
c01vZGVsKFdLQ29udGV4dFJlZiBjb250ZXh0UmVmKQotewotICAgIHJldHVybiB0b0FQSSh0b0lt
cGwoY29udGV4dFJlZiktPnByb2Nlc3NNb2RlbCgpKTsKLX0KLQogdm9pZCBXS0NvbnRleHRTZXRN
YXhpbXVtTnVtYmVyT2ZQcm9jZXNzZXMoV0tDb250ZXh0UmVmIGNvbnRleHRSZWYsIHVuc2lnbmVk
IG51bWJlck9mUHJvY2Vzc2VzKQogewogICAgIHRvSW1wbChjb250ZXh0UmVmKS0+c2V0TWF4aW11
bU51bWJlck9mUHJvY2Vzc2VzKG51bWJlck9mUHJvY2Vzc2VzKTsKQEAgLTU1NCwxMSArNTQ0LDYg
QEAgdm9pZCBXS0NvbnRleHRTZXRKYXZhU2NyaXB0R2FyYmFnZUNvbGxlYwogICAgIHRvSW1wbChj
b250ZXh0UmVmKS0+c2V0SmF2YVNjcmlwdEdhcmJhZ2VDb2xsZWN0b3JUaW1lckVuYWJsZWQoZW5h
YmxlKTsKIH0KIAotdm9pZCBXS0NvbnRleHRTZXRVc2VzTmV0d29ya1Byb2Nlc3MoV0tDb250ZXh0
UmVmIGNvbnRleHRSZWYsIGJvb2wgdXNlc05ldHdvcmtQcm9jZXNzKQotewotICAgIHRvSW1wbChj
b250ZXh0UmVmKS0+c2V0VXNlc05ldHdvcmtQcm9jZXNzKHVzZXNOZXR3b3JrUHJvY2Vzcyk7Ci19
Ci0KIHZvaWQgV0tDb250ZXh0VXNlVGVzdGluZ05ldHdvcmtTZXNzaW9uKFdLQ29udGV4dFJlZiBj
b250ZXh0KQogewogICAgIHRvSW1wbChjb250ZXh0KS0+dXNlVGVzdGluZ05ldHdvcmtTZXNzaW9u
KCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dC5oCShy
ZXZpc2lvbiAxOTI2MDEpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tDb250
ZXh0LmgJKHdvcmtpbmcgY29weSkKQEAgLTc1LDYgKzc1LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgV0tD
b250ZXh0Q2xpZW50VjEgewogICAgIFdLQ29udGV4dENvcHlXZWJDcnlwdG9NYXN0ZXJLZXlDYWxs
YmFjayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29weVdlYkNyeXB0b01hc3RlcktleTsK
IH0gV0tDb250ZXh0Q2xpZW50VjE7CiAKKy8vIEZJWE1FOiBUaGVzZSBjYW4gYmUgcmVtb3ZlZCBv
bmNlIHdlIGFyZSBubyBsb25nZXIgc3VwcG9ydGluZyBNYXZlcmlja3MuCiBlbnVtIHsKICAgICBr
V0tQcm9jZXNzTW9kZWxTaGFyZWRTZWNvbmRhcnlQcm9jZXNzID0gMCwKICAgICBrV0tQcm9jZXNz
TW9kZWxNdWx0aXBsZVNlY29uZGFyeVByb2Nlc3NlcyA9IDEKSW5kZXg6IFNvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvQy9tYWMvV0tDb250ZXh0UHJpdmF0ZU1hYy5tbQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvbWFjL1dLQ29udGV4dFByaXZhdGVNYWMu
bW0JKHJldmlzaW9uIDE5MjYwMSkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9t
YWMvV0tDb250ZXh0UHJpdmF0ZU1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtMTY2LDEwICsxNjYs
NSBAQCBib29sIFdLQ29udGV4dFNob3VsZFN1Z2dlc3RCbG9ja1dlYkdMKCkKIAogcGlkX3QgV0tD
b250ZXh0R2V0TmV0d29ya1Byb2Nlc3NJZGVudGlmaWVyKFdLQ29udGV4dFJlZiBjb250ZXh0UmVm
KQogewotI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCiAgICAgcmV0dXJuIHRvSW1wbChjb250
ZXh0UmVmKS0+bmV0d29ya1Byb2Nlc3NJZGVudGlmaWVyKCk7Ci0jZWxzZQotICAgIFVOVVNFRF9Q
QVJBTShjb250ZXh0UmVmKTsKLSAgICByZXR1cm4gMDsKLSNlbmRpZgogfQpJbmRleDogU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NHcm91cC5tbQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc0dyb3VwLm1t
CShyZXZpc2lvbiAxOTI2MDEpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29h
L1dLUHJvY2Vzc0dyb3VwLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xOTIsMTAgKzE5Miw2IEBAIC0g
KGlkKWluaXRXaXRoSW5qZWN0ZWRCdW5kbGVVUkw6KE5TVVJMICoKIAogICAgIGF1dG8gY29uZmln
dXJhdGlvbiA9IEFQSTo6UHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uOjpjcmVhdGVXaXRoTGVnYWN5
T3B0aW9ucygpOwogICAgIGNvbmZpZ3VyYXRpb24tPnNldEluamVjdGVkQnVuZGxlUGF0aChidW5k
bGVVUkwgPyBTdHJpbmcoYnVuZGxlVVJMLnBhdGgpIDogU3RyaW5nKCkpOwotI2lmIFBMQVRGT1JN
KElPUykKLSAgICBjb25maWd1cmF0aW9uLT5zZXRVc2VOZXR3b3JrUHJvY2Vzcyh0cnVlKTsKLSAg
ICBjb25maWd1cmF0aW9uLT5zZXRQcm9jZXNzTW9kZWwoUHJvY2Vzc01vZGVsTXVsdGlwbGVTZWNv
bmRhcnlQcm9jZXNzZXMpOwotI2VuZGlmCiAKICAgICBfcHJvY2Vzc1Bvb2wgPSBXZWJQcm9jZXNz
UG9vbDo6Y3JlYXRlKGNvbmZpZ3VyYXRpb24pOwogCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc1Bvb2wubW0KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29sLm1tCShyZXZpc2lvbiAxOTI2
MDEpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc1Bvb2wu
bW0JKHdvcmtpbmcgY29weSkKQEAgLTMwLDcgKzMwLDYgQEAKIAogI2ltcG9ydCAiQ2FjaGVNb2Rl
bC5oIgogI2ltcG9ydCAiRG93bmxvYWRDbGllbnQuaCIKLSNpbXBvcnQgIlByb2Nlc3NNb2RlbC5o
IgogI2ltcG9ydCAiU2FuZGJveFV0aWxpdGllcy5oIgogI2ltcG9ydCAiV0tPYmplY3QuaCIKICNp
bXBvcnQgIldlYWtPYmpDUHRyLmgiCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29j
b2EvV2ViUHJvY2Vzc1Bvb2xDb2NvYS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Bvb2xDb2NvYS5tbQkocmV2aXNpb24gMTkyNjAxKQor
KysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQb29sQ29jb2EubW0J
KHdvcmtpbmcgY29weSkKQEAgLTI2LDYgKzI2LDggQEAKICNpbXBvcnQgImNvbmZpZy5oIgogI2lt
cG9ydCAiV2ViUHJvY2Vzc1Bvb2wuaCIKIAorI2ltcG9ydCAiTmV0d29ya1Byb2Nlc3NDcmVhdGlv
blBhcmFtZXRlcnMuaCIKKyNpbXBvcnQgIk5ldHdvcmtQcm9jZXNzUHJveHkuaCIKICNpbXBvcnQg
IlBsdWdpblByb2Nlc3NNYW5hZ2VyLmgiCiAjaW1wb3J0ICJTYW5kYm94VXRpbGl0aWVzLmgiCiAj
aW1wb3J0ICJUZXh0Q2hlY2tlci5oIgpAQCAtNDcsMTEgKzQ5LDYgQEAKICNpbXBvcnQgPFdlYkNv
cmUvUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzLmg+CiAjaW1wb3J0IDxzeXMvcGFyYW0uaD4KIAot
I2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCi0jaW1wb3J0ICJOZXR3b3JrUHJvY2Vzc0NyZWF0
aW9uUGFyYW1ldGVycy5oIgotI2ltcG9ydCAiTmV0d29ya1Byb2Nlc3NQcm94eS5oIgotI2VuZGlm
Ci0KICNpZiBQTEFURk9STShJT1MpCiAjaW1wb3J0ICJBcmd1bWVudENvZGVyc0NGLmgiCiAjaW1w
b3J0ICJXZWJNZW1vcnlQcmVzc3VyZUhhbmRsZXJJT1MuaCIKQEAgLTc2LDEwICs3Myw4IEBAIHN0
YXRpYyBOU1N0cmluZyAqV2ViS2l0QXBwbGljYXRpb25EaWRDaGEKIC8vIEZJWE1FOiA8cmRhcjov
L3Byb2JsZW0vOTEzODgxNz4gLSBBZnRlciB0aGlzICJiYWNrd2FyZHMgY29tcGF0aWJpbGl0eSIg
cmFkYXIgaXMgcmVtb3ZlZCwgdGhpcyBjb2RlIHNob3VsZCBiZSByZW1vdmVkIHRvIG9ubHkgcmV0
dXJuIGFuIGVtcHR5IFN0cmluZy4KIE5TU3RyaW5nICpXZWJJY29uRGF0YWJhc2VEaXJlY3RvcnlE
ZWZhdWx0c0tleSA9IEAiV2ViSWNvbkRhdGFiYXNlRGlyZWN0b3J5RGVmYXVsdHNLZXkiOwogCi0j
aWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKIHN0YXRpYyBOU1N0cmluZyAqIGNvbnN0IFdlYktp
dDJIVFRQUHJveHlEZWZhdWx0c0tleSA9IEAiV2ViS2l0MkhUVFBQcm94eSI7CiBzdGF0aWMgTlNT
dHJpbmcgKiBjb25zdCBXZWJLaXQySFRUUFNQcm94eURlZmF1bHRzS2V5ID0gQCJXZWJLaXQySFRU
UFNQcm94eSI7Ci0jZW5kaWYKIAogI2lmIEVOQUJMRShORVRXT1JLX0NBQ0hFKQogc3RhdGljIE5T
U3RyaW5nICogY29uc3QgV2ViS2l0TmV0d29ya0NhY2hlRW5hYmxlZERlZmF1bHRzS2V5ID0gQCJX
ZWJLaXROZXR3b3JrQ2FjaGVFbmFibGVkIjsKQEAgLTExOSwxMCArMTE0LDggQEAgc3RhdGljIHZv
aWQgcmVnaXN0ZXJVc2VyRGVmYXVsdHNJZk5lZWRlZAogCiB2b2lkIFdlYlByb2Nlc3NQb29sOjp1
cGRhdGVQcm9jZXNzU3VwcHJlc3Npb25TdGF0ZSgpCiB7Ci0jaWYgRU5BQkxFKE5FVFdPUktfUFJP
Q0VTUykKLSAgICBpZiAodXNlc05ldHdvcmtQcm9jZXNzKCkgJiYgbV9uZXR3b3JrUHJvY2VzcykK
KyAgICBpZiAobV9uZXR3b3JrUHJvY2VzcykKICAgICAgICAgbV9uZXR3b3JrUHJvY2Vzcy0+c2V0
UHJvY2Vzc1N1cHByZXNzaW9uRW5hYmxlZChwcm9jZXNzU3VwcHJlc3Npb25FbmFibGVkKCkpOwot
I2VuZGlmCiAKICNpZiBFTkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQSSkKICAgICBpZiAoIW1fcHJv
Y2Vzc1N1cHByZXNzaW9uRGlzYWJsZWRGb3JQYWdlQ291bnRlci52YWx1ZSgpKQpAQCAtMTk3LDE1
ICsxOTAsNiBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpwbGF0Zm9ybUluaXRpYWxpemVXCiAKICAg
ICBwYXJhbWV0ZXJzLnVpUHJvY2Vzc0J1bmRsZUlkZW50aWZpZXIgPSBTdHJpbmcoW1tOU0J1bmRs
ZSBtYWluQnVuZGxlXSBidW5kbGVJZGVudGlmaWVyXSk7CiAKLSNpZiBFTkFCTEUoTkVUV09SS19Q
Uk9DRVNTKQotICAgIGlmICghdXNlc05ldHdvcmtQcm9jZXNzKCkpIHsKLSNlbmRpZgotICAgICAg
ICBmb3IgKGNvbnN0IGF1dG8mIHNjaGVtZSA6IGdsb2JhbFVSTFNjaGVtZXNXaXRoQ3VzdG9tUHJv
dG9jb2xIYW5kbGVycygpKQotICAgICAgICAgICAgcGFyYW1ldGVycy51cmxTY2hlbWVzUmVnaXN0
ZXJlZEZvckN1c3RvbVByb3RvY29scy5hcHBlbmQoc2NoZW1lKTsKLSNpZiBFTkFCTEUoTkVUV09S
S19QUk9DRVNTKQotICAgIH0KLSNlbmRpZgotCiAgICAgcGFyYW1ldGVycy5mb250V2hpdGVsaXN0
ID0gbV9mb250V2hpdGVsaXN0OwogCiAgICAgaWYgKG1fYnVuZGxlUGFyYW1ldGVycykgewpAQCAt
MjM2LDcgKzIyMCw2IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnBsYXRmb3JtSW5pdGlhbGl6ZVcK
ICNlbmRpZgogfQogCi0jaWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKIHZvaWQgV2ViUHJvY2Vz
c1Bvb2w6OnBsYXRmb3JtSW5pdGlhbGl6ZU5ldHdvcmtQcm9jZXNzKE5ldHdvcmtQcm9jZXNzQ3Jl
YXRpb25QYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQogewogICAgIE5TVVJMQ2FjaGUgKnVybENhY2hl
ID0gW05TVVJMQ2FjaGUgc2hhcmVkVVJMQ2FjaGVdOwpAQCAtMjcxLDcgKzI1NCw2IEBAIHZvaWQg
V2ViUHJvY2Vzc1Bvb2w6OnBsYXRmb3JtSW5pdGlhbGl6ZU4KICAgICBwYXJhbWV0ZXJzLnVpUHJv
Y2Vzc0Nvb2tpZVN0b3JhZ2VJZGVudGlmaWVyLmFwcGVuZChDRkRhdGFHZXRCeXRlUHRyKGNvb2tp
ZVN0b3JhZ2VEYXRhLmdldCgpKSwgQ0ZEYXRhR2V0TGVuZ3RoKGNvb2tpZVN0b3JhZ2VEYXRhLmdl
dCgpKSk7CiAjZW5kaWYKIH0KLSNlbmRpZgogCiB2b2lkIFdlYlByb2Nlc3NQb29sOjpwbGF0Zm9y
bUludmFsaWRhdGVDb250ZXh0KCkKIHsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9E
b3dubG9hZHMvRG93bmxvYWRQcm94eS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZFByb3h5LmNwcAkocmV2aXNpb24gMTkyNjAxKQor
KysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZFByb3h5LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMzEsMTYgKzMxLDEzIEBACiAjaW5jbHVkZSAiQXV0aGVudGljYXRp
b25DaGFsbGVuZ2VQcm94eS5oIgogI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRl
ICJEb3dubG9hZFByb3h5TWFwLmgiCisjaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3NNZXNzYWdlcy5o
IgorI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzUHJveHkuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNz
TWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzUG9vbC5oIgogI2luY2x1ZGUgPHd0Zi90
ZXh0L0NTdHJpbmcuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAotI2lmIEVO
QUJMRShORVRXT1JLX1BST0NFU1MpCi0jaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3NNZXNzYWdlcy5o
IgotI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzUHJveHkuaCIKLSNlbmRpZgotCiB1c2luZyBuYW1l
c3BhY2UgV2ViQ29yZTsKIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC03NCwxNSArNzEsOCBAQCB2
b2lkIERvd25sb2FkUHJveHk6OmNhbmNlbCgpCiAgICAgaWYgKCFtX3Byb2Nlc3NQb29sKQogICAg
ICAgICByZXR1cm47CiAKLSNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQotICAgIGlmIChtX3By
b2Nlc3NQb29sLT51c2VzTmV0d29ya1Byb2Nlc3MoKSkgewotICAgICAgICBpZiAoTmV0d29ya1By
b2Nlc3NQcm94eSogbmV0d29ya1Byb2Nlc3MgPSBtX3Byb2Nlc3NQb29sLT5uZXR3b3JrUHJvY2Vz
cygpKQotICAgICAgICAgICAgbmV0d29ya1Byb2Nlc3MtPmNvbm5lY3Rpb24oKS0+c2VuZChNZXNz
YWdlczo6TmV0d29ya1Byb2Nlc3M6OkNhbmNlbERvd25sb2FkKG1fZG93bmxvYWRJRCksIDApOwot
ICAgICAgICByZXR1cm47Ci0gICAgfQotI2VuZGlmCi0KLSAgICBtX3Byb2Nlc3NQb29sLT5zZW5k
VG9BbGxQcm9jZXNzZXMoTWVzc2FnZXM6OldlYlByb2Nlc3M6OkNhbmNlbERvd25sb2FkKG1fZG93
bmxvYWRJRCkpOworICAgIGlmIChOZXR3b3JrUHJvY2Vzc1Byb3h5KiBuZXR3b3JrUHJvY2VzcyA9
IG1fcHJvY2Vzc1Bvb2wtPm5ldHdvcmtQcm9jZXNzKCkpCisgICAgICAgIG5ldHdvcmtQcm9jZXNz
LT5jb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpDYW5jZWxEb3du
bG9hZChtX2Rvd25sb2FkSUQpLCAwKTsKIH0KIAogdm9pZCBEb3dubG9hZFByb3h5OjppbnZhbGlk
YXRlKCkKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9MYXVuY2hlci9Qcm9jZXNzTGF1
bmNoZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9MYXVuY2hl
ci9Qcm9jZXNzTGF1bmNoZXIuY3BwCShyZXZpc2lvbiAxOTI2MDEpCisrKyBTb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvTGF1bmNoZXIvUHJvY2Vzc0xhdW5jaGVyLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtODQsMTAgKzg0LDggQEAgY29uc3QgY2hhciogUHJvY2Vzc0xhdW5jaGVyOjpwcm9jZXNzVHlw
ZQogICAgIGNhc2UgUGx1Z2luUHJvY2VzczoKICAgICAgICAgcmV0dXJuICJwbHVnaW5wcm9jZXNz
IjsKICNlbmRpZgotI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCiAgICAgY2FzZSBOZXR3b3Jr
UHJvY2VzczoKICAgICAgICAgcmV0dXJuICJuZXR3b3JrcHJvY2VzcyI7Ci0jZW5kaWYKICNpZiBF
TkFCTEUoREFUQUJBU0VfUFJPQ0VTUykKICAgICBjYXNlIERhdGFiYXNlUHJvY2VzczoKICAgICAg
ICAgcmV0dXJuICJkYXRhYmFzZXByb2Nlc3MiOwpAQCAtMTEyLDEyICsxMTAsMTAgQEAgYm9vbCBQ
cm9jZXNzTGF1bmNoZXI6OmdldFByb2Nlc3NUeXBlRnJvbQogICAgIH0KICNlbmRpZgogCi0jaWYg
RU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKICAgICBpZiAoIXN0cmNtcChzdHJpbmcsICJuZXR3b3Jr
cHJvY2VzcyIpKSB7CiAgICAgICAgIHByb2Nlc3NUeXBlID0gTmV0d29ya1Byb2Nlc3M7CiAgICAg
ICAgIHJldHVybiB0cnVlOwogICAgIH0KLSNlbmRpZgogCiAjaWYgRU5BQkxFKERBVEFCQVNFX1BS
T0NFU1MpCiAgICAgaWYgKCFzdHJjbXAoc3RyaW5nLCAiZGF0YWJhc2Vwcm9jZXNzIikpIHsKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9MYXVuY2hlci9Qcm9jZXNzTGF1bmNoZXIuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTGF1bmNoZXIvUHJvY2Vzc0xh
dW5jaGVyLmgJKHJldmlzaW9uIDE5MjYwMSkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9M
YXVuY2hlci9Qcm9jZXNzTGF1bmNoZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNTAsOSArNTAsNyBA
QCBwdWJsaWM6CiAjaWYgRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpCiAgICAgICAgIFBsdWdp
blByb2Nlc3MsCiAjZW5kaWYKLSNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQogICAgICAgICBO
ZXR3b3JrUHJvY2VzcywKLSNlbmRpZgogI2lmIEVOQUJMRShEQVRBQkFTRV9QUk9DRVNTKQogICAg
ICAgICBEYXRhYmFzZVByb2Nlc3MsCiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9MYXVuY2hlci9tYWMvUHJvY2Vzc0xhdW5jaGVyTWFjLm1tCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9MYXVuY2hlci9tYWMvUHJvY2Vzc0xhdW5jaGVyTWFjLm1t
CShyZXZpc2lvbiAxOTI2MDEpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTGF1bmNoZXIv
bWFjL1Byb2Nlc3NMYXVuY2hlck1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtMTA1LDE0ICsxMDUs
MTIgQEAgc3RhdGljIFJldGFpblB0cjxOU1N0cmluZz4gY29tcHV0ZVByb2NlcwogICAgIH0KICNl
bmRpZgogCi0jaWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKICAgICBpZiAobGF1bmNoT3B0aW9u
cy5wcm9jZXNzVHlwZSA9PSBQcm9jZXNzTGF1bmNoZXI6Ok5ldHdvcmtQcm9jZXNzKSB7CiAgICAg
ICAgIE5TU3RyaW5nICpwcm9jZXNzUGF0aCA9IFt3ZWJLaXRCdW5kbGUgcGF0aEZvckF1eGlsaWFy
eUV4ZWN1dGFibGU6QCJOZXR3b3JrUHJvY2Vzcy5hcHAiXTsKICAgICAgICAgTlNTdHJpbmcgKnBy
b2Nlc3NBcHBFeGVjdXRhYmxlUGF0aCA9IFtbTlNCdW5kbGUgYnVuZGxlV2l0aFBhdGg6cHJvY2Vz
c1BhdGhdIGV4ZWN1dGFibGVQYXRoXTsKIAogICAgICAgICByZXR1cm4gW1twcm9jZXNzQXBwRXhl
Y3V0YWJsZVBhdGggc3RyaW5nQnlEZWxldGluZ0xhc3RQYXRoQ29tcG9uZW50XSBzdHJpbmdCeUFw
cGVuZGluZ1BhdGhDb21wb25lbnQ6QCJTZWNJdGVtU2hpbS5keWxpYiJdOwogICAgIH0KLSNlbmRp
ZgogCiAgICAgaWYgKGxhdW5jaE9wdGlvbnMucHJvY2Vzc1R5cGUgPT0gUHJvY2Vzc0xhdW5jaGVy
OjpXZWJQcm9jZXNzKSB7CiAgICAgICAgIE5TU3RyaW5nICpwcm9jZXNzUGF0aCA9IFt3ZWJLaXRC
dW5kbGUgcGF0aEZvckF1eGlsaWFyeUV4ZWN1dGFibGU6QCJXZWJQcm9jZXNzLmFwcCJdOwpAQCAt
MTY3LDEyICsxNjUsMTAgQEAgc3RhdGljIGNvbnN0IGNoYXIqIHNlcnZpY2VOYW1lKGNvbnN0IFBy
bwogICAgICAgICBpZiAoZm9yRGV2ZWxvcG1lbnQpCiAgICAgICAgICAgICByZXR1cm4gImNvbS5h
cHBsZS5XZWJLaXQuV2ViQ29udGVudC5EZXZlbG9wbWVudCI7CiAgICAgICAgIHJldHVybiAiY29t
LmFwcGxlLldlYktpdC5XZWJDb250ZW50IjsKLSNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQog
ICAgIGNhc2UgUHJvY2Vzc0xhdW5jaGVyOjpOZXR3b3JrUHJvY2VzczoKICAgICAgICAgaWYgKGZv
ckRldmVsb3BtZW50KQogICAgICAgICAgICAgcmV0dXJuICJjb20uYXBwbGUuV2ViS2l0Lk5ldHdv
cmtpbmcuRGV2ZWxvcG1lbnQiOwogICAgICAgICByZXR1cm4gImNvbS5hcHBsZS5XZWJLaXQuTmV0
d29ya2luZyI7Ci0jZW5kaWYKICNpZiBFTkFCTEUoREFUQUJBU0VfUFJPQ0VTUykKICAgICBjYXNl
IFByb2Nlc3NMYXVuY2hlcjo6RGF0YWJhc2VQcm9jZXNzOgogICAgICAgICBpZiAoZm9yRGV2ZWxv
cG1lbnQpCkBAIC0yMDYsMTIgKzIwMiw5IEBAIHN0YXRpYyBib29sIHNob3VsZExlYWtCb29zdChj
b25zdCBQcm9jZXMKICAgICAvLyBPbiBpT1MsIGxlYWsgYSBib29zdCBvbnRvIGFsbCBjaGlsZCBw
cm9jZXNzZXMKICAgICBVTlVTRURfUEFSQU0obGF1bmNoT3B0aW9ucyk7CiAgICAgcmV0dXJuIHRy
dWU7Ci0jZWxpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQorI2Vsc2UKICAgICAvLyBPbiBNYWMs
IGxlYWsgYSBib29zdCBvbnRvIHRoZSBOZXR3b3JrUHJvY2Vzcy4KICAgICByZXR1cm4gbGF1bmNo
T3B0aW9ucy5wcm9jZXNzVHlwZSA9PSBQcm9jZXNzTGF1bmNoZXI6Ok5ldHdvcmtQcm9jZXNzOwot
I2Vsc2UKLSAgICBVTlVTRURfUEFSQU0obGF1bmNoT3B0aW9ucyk7Ci0gICAgcmV0dXJuIGZhbHNl
OwogI2VuZGlmCiB9CiAgICAgCkBAIC00ODMsMTEgKzQ3Niw5IEBAIHN0YXRpYyB2b2lkIGNyZWF0
ZVByb2Nlc3MoY29uc3QgUHJvY2Vzc0wKICAgICAgICAgcHJvY2Vzc1BhdGggPSBbd2ViS2l0QnVu
ZGxlIHBhdGhGb3JBdXhpbGlhcnlFeGVjdXRhYmxlOkAiUGx1Z2luUHJvY2Vzcy5hcHAiXTsKICAg
ICAgICAgYnJlYWs7CiAjZW5kaWYKLSNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQogICAgIGNh
c2UgUHJvY2Vzc0xhdW5jaGVyOjpOZXR3b3JrUHJvY2VzczoKICAgICAgICAgcHJvY2Vzc1BhdGgg
PSBbd2ViS2l0QnVuZGxlIHBhdGhGb3JBdXhpbGlhcnlFeGVjdXRhYmxlOkAiTmV0d29ya1Byb2Nl
c3MuYXBwIl07CiAgICAgICAgIGJyZWFrOwotI2VuZGlmCiAjaWYgRU5BQkxFKERBVEFCQVNFX1BS
T0NFU1MpCiAgICAgY2FzZSBQcm9jZXNzTGF1bmNoZXI6OkRhdGFiYXNlUHJvY2VzczoKICAgICAg
ICAgcHJvY2Vzc1BhdGggPSBbd2ViS2l0QnVuZGxlIHBhdGhGb3JBdXhpbGlhcnlFeGVjdXRhYmxl
OkAiRGF0YWJhc2VQcm9jZXNzLmFwcCJdOwpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAJKHJldmlzaW9u
IDE5MjYwMSkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9j
ZXNzUHJveHkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw4ICsyNiw2IEBACiAjaW5jbHVkZSAi
Y29uZmlnLmgiCiAjaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3NQcm94eS5oIgogCi0jaWYgRU5BQkxF
KE5FVFdPUktfUFJPQ0VTUykKLQogI2luY2x1ZGUgIkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJv
eHkuaCIKICNpbmNsdWRlICJDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eU1lc3NhZ2VzLmgiCiAj
aW5jbHVkZSAiRG93bmxvYWRQcm94eU1lc3NhZ2VzLmgiCkBAIC0zNzcsNSArMzc1LDMgQEAgdm9p
ZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpzZXRJc0hvbGRpbmdMbwogfQogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJLaXQKLQotI2VuZGlmIC8vIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCkluZGV4OiBTb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQ
cm94eS5oCShyZXZpc2lvbiAxOTI2MDEpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTmV0
d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgJKHdvcmtpbmcgY29weSkKQEAgLTI2LDggKzI2LDYg
QEAKICNpZm5kZWYgTmV0d29ya1Byb2Nlc3NQcm94eV9oCiAjZGVmaW5lIE5ldHdvcmtQcm9jZXNz
UHJveHlfaAogCi0jaWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKLQogI2luY2x1ZGUgIkNoaWxk
UHJvY2Vzc1Byb3h5LmgiCiAjaW5jbHVkZSAiQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHkuaCIK
ICNpbmNsdWRlICJQcm9jZXNzTGF1bmNoZXIuaCIKQEAgLTEzMiw2ICsxMzAsNCBAQCBwcml2YXRl
OgogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAotI2VuZGlmIC8vIEVOQUJMRShORVRXT1JLX1BS
T0NFU1MpCi0KICNlbmRpZiAvLyBOZXR3b3JrUHJvY2Vzc1Byb3h5X2gKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkubWVzc2FnZXMuaW4K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1By
b2Nlc3NQcm94eS5tZXNzYWdlcy5pbgkocmV2aXNpb24gMTkyNjAxKQorKysgU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5tZXNzYWdlcy5pbgkod29y
a2luZyBjb3B5KQpAQCAtMjAsOCArMjAsNiBAQAogIyBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQogIyBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgogCi0jaWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKLQogbWVzc2FnZXMgLT4g
TmV0d29ya1Byb2Nlc3NQcm94eSBMZWdhY3lSZWNlaXZlciB7CiAgICAgRGlkQ3JlYXRlTmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoSVBDOjpBdHRhY2htZW50IGNvbm5lY3Rpb25JZGVudGlm
aWVyKQogCkBAIC0zOSw1ICszNywzIEBAIG1lc3NhZ2VzIC0+IE5ldHdvcmtQcm9jZXNzUHJveHkg
TGVnYWN5UmUKICAgICBMb2dTYW1wbGVkRGlhZ25vc3RpY01lc3NhZ2VXaXRoUmVzdWx0KHVpbnQ2
NF90IHBhZ2VJRCwgU3RyaW5nIG1lc3NhZ2UsIFN0cmluZyBkZXNjcmlwdGlvbiwgdWludDMyX3Qg
cmVzdWx0KQogICAgIExvZ1NhbXBsZWREaWFnbm9zdGljTWVzc2FnZVdpdGhWYWx1ZSh1aW50NjRf
dCBwYWdlSUQsIFN0cmluZyBtZXNzYWdlLCBTdHJpbmcgZGVzY3JpcHRpb24sIFN0cmluZyB2YWx1
ZSkKIH0KLQotI2VuZGlmIC8vIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCkluZGV4OiBTb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvTmV0d29yay9tYWMvTmV0d29ya1Byb2Nlc3NQcm94eU1hYy5tbQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTmV0d29yay9tYWMvTmV0d29y
a1Byb2Nlc3NQcm94eU1hYy5tbQkocmV2aXNpb24gMTkyNjAxKQorKysgU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL05ldHdvcmsvbWFjL05ldHdvcmtQcm9jZXNzUHJveHlNYWMubW0JKHdvcmtpbmcg
Y29weSkKQEAgLTI4LDggKzI4LDYgQEAKIAogI2ltcG9ydCAiTmV0d29ya1Byb2Nlc3NNZXNzYWdl
cy5oIgogCi0jaWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKLQogdXNpbmcgbmFtZXNwYWNlIFdl
YkNvcmU7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtNTksNSArNTcsMyBAQCB2b2lkIE5ldHdv
cmtQcm9jZXNzUHJveHk6OnBsYXRmb3JtR2V0TGF1CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktp
dAotCi0jZW5kaWYgLy8gRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKSW5kZXg6IFNvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9y
ZS5jcHAJKHJldmlzaW9uIDE5MjYwMSkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJz
aXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTQsMTIgKzk0
LDEwIEBAIFdlYnNpdGVEYXRhU3RvcmU6On5XZWJzaXRlRGF0YVN0b3JlKCkKIHsKICAgICBwbGF0
Zm9ybURlc3Ryb3koKTsKIAotI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCiAgICAgaWYgKG1f
c2Vzc2lvbklELmlzRXBoZW1lcmFsKCkpIHsKICAgICAgICAgZm9yIChhdXRvJiBwcm9jZXNzUG9v
bCA6IFdlYlByb2Nlc3NQb29sOjphbGxQcm9jZXNzUG9vbHMoKSkKICAgICAgICAgICAgIHByb2Nl
c3NQb29sLT5zZW5kVG9OZXR3b3JraW5nUHJvY2VzcyhNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6
OkRlc3Ryb3lQcml2YXRlQnJvd3NpbmdTZXNzaW9uKG1fc2Vzc2lvbklEKSk7CiAgICAgfQotI2Vu
ZGlmCiB9CiAKIHZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6Y2xvbmVTZXNzaW9uRGF0YShXZWJQYWdl
UHJveHkmIHNvdXJjZVBhZ2UsIFdlYlBhZ2VQcm94eSYgbmV3UGFnZSkKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9u
IDE5MjYwMSkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagkod29ya2luZyBjb3B5KQpAQCAtMTQ2MCw3ICsxNDYwLDYgQEAKIAkJQkM1NzUwOTgxMjY4
RjNDNjAwNkYwRjEyIC8qIFdlYlBvcHVwTWVudVByb3h5TWFjLm1tIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkM1NzUwOTYxMjY4RjNDNjAwNkYwRjEyIC8q
IFdlYlBvcHVwTWVudVByb3h5TWFjLm1tICovOyB9OwogCQlCQzU3NTYxMzEyNkUwMTM4MDA2RjBG
MTIgLyogQVBJRXJyb3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQkM1NzU2MTIxMjZFMDEzODAwNkYwRjEyIC8qIEFQSUVycm9yLmNwcCAqLzsgfTsK
IAkJQkM1OTU0ODkxNUM3ODY4NTAwRkQxRTNFIC8qIFdlYktpdDIuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDNTk1NDg4MTVDNzg2ODUwMEZEMUUzRSAv
KiBXZWJLaXQyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKLQkJQkM1OTcwNzUxMTY1OTFEMDAwNTUxRkNBIC8qIFByb2Nlc3NNb2RlbC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkM1OTcwNzQxMTY1OTFEMDAw
NTUxRkNBIC8qIFByb2Nlc3NNb2RlbC5oICovOyB9OwogCQlCQzVDNzVDODE0OTU0REE2MDBCQzQ3
NzUgLyogV0tDb25uZWN0aW9uSW50ZXJuYWwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEJDNUM3NUM2MTQ5NTREQTYwMEJDNDc3NSAvKiBXS0Nvbm5lY3Rp
b25JbnRlcm5hbC5oICovOyB9OwogCQlCQzVEMjRBMTE2Q0MzQjlFMDA3RDU0NjEgLyogQ2hpbGRQ
cm9jZXNzTWFpbi5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEJDNUQyNDlGMTZDQzNCOUUwMDdENTQ2MSAvKiBDaGlsZFByb2Nlc3NNYWluLm1tICovOyB9
OwogCQlCQzVEMjRBMjE2Q0MzQjlFMDA3RDU0NjEgLyogQ2hpbGRQcm9jZXNzTWFpbi5tbSBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDNUQyNDlGMTZDQzNC
OUUwMDdENTQ2MSAvKiBDaGlsZFByb2Nlc3NNYWluLm1tICovOyB9OwpAQCAtMzczMiw3ICszNzMx
LDYgQEAKIAkJQkM1NzUwOTYxMjY4RjNDNjAwNkYwRjEyIC8qIFdlYlBvcHVwTWVudVByb3h5TWFj
Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV2ViUG9wdXBNZW51
UHJveHlNYWMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDNTc1NjEyMTI2RTAx
MzgwMDZGMEYxMiAvKiBBUElFcnJvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBBUElFcnJvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDNTk1
NDg4MTVDNzg2ODUwMEZEMUUzRSAvKiBXZWJLaXQyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFdlYktpdDIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQkM1OTcw
NzQxMTY1OTFEMDAwNTUxRkNBIC8qIFByb2Nlc3NNb2RlbC5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBQcm9jZXNzTW9kZWwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJQkM1Qzc1QzYxNDk1NERBNjAwQkM0Nzc1IC8qIFdLQ29ubmVjdGlvbkludGVybmFsLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLQ29ubmVjdGlvbkludGVybmFsLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDNUQyNDlGMTZDQzNCOUUwMDdENTQ2MSAvKiBD
aGlsZFByb2Nlc3NNYWluLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRo
ID0gQ2hpbGRQcm9jZXNzTWFpbi5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkM1
RDI0QjgxNkNDNDBCQjAwN0Q1NDYxIC8qIEJhc2VMZWdhY3lQcm9jZXNzLnhjY29uZmlnICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC54Y2NvbmZp
ZzsgcGF0aCA9IEJhc2VMZWdhY3lQcm9jZXNzLnhjY29uZmlnOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwpAQCAtNjIzOCw3ICs2MjM2LDYgQEAKIAkJCQkxQUM3NTM3QTE4M0E5RkRCMDA3MkNC
MTUgLyogUGFnZUxvYWRTdGF0ZS5oICovLAogCQkJCTM3NzE2QTU5MTk1QjkxMDUwMEVFOEIxQiAv
KiBQcm9jZXNzQXNzZXJ0aW9uLmNwcCAqLywKIAkJCQk4NkY5NTM2MDE4RkY0RkQ0MDAxREIyRUYg
LyogUHJvY2Vzc0Fzc2VydGlvbi5oICovLAotCQkJCUJDNTk3MDc0MTE2NTkxRDAwMDU1MUZDQSAv
KiBQcm9jZXNzTW9kZWwuaCAqLywKIAkJCQk4NkU2N0EyMjE5MEY0MTE4MDAwMDRBQjcgLyogUHJv
Y2Vzc1Rocm90dGxlci5jcHAgKi8sCiAJCQkJODZFNjdBMjExOTBGNDExODAwMDA0QUI3IC8qIFBy
b2Nlc3NUaHJvdHRsZXIuaCAqLywKIAkJCQk4MzA0OEFFNTFBQ0E0NURDMDA4MkM4MzIgLyogUHJv
Y2Vzc1Rocm90dGxlckNsaWVudC5oICovLApAQCAtNzk4OSw3ICs3OTg2LDYgQEAKIAkJCQlFMUND
MUI5MDEyRDdFQURGMDA2MjU4MzggLyogUHJpbnRJbmZvLmggaW4gSGVhZGVycyAqLywKIAkJCQk4
NkY5NTM2NTE4RkY1OEY1MDAxREIyRUYgLyogUHJvY2Vzc0Fzc2VydGlvbi5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQkMxQTdDNTgxMTM2RTE5QzAwRkI3MTY3IC8qIFByb2Nlc3NMYXVuY2hlci5oIGlu
IEhlYWRlcnMgKi8sCi0JCQkJQkM1OTcwNzUxMTY1OTFEMDAwNTUxRkNBIC8qIFByb2Nlc3NNb2Rl
bC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODZFNjdBMjUxOTEwQjlEMTAwMDA0QUI3IC8qIFByb2Nl
c3NUaHJvdHRsZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTgzMDQ4QUU2MUFDQTQ1REMwMDgyQzgz
MiAvKiBQcm9jZXNzVGhyb3R0bGVyQ2xpZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQkyRDdGMTMx
MDFBNzAyRkJBMDA5QTZGQkQgLyogUHJvY2Vzc1R5cGUuaCBpbiBIZWFkZXJzICovLApJbmRleDog
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCShyZXZpc2lvbiAxOTI2MDEp
CisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0zNyw2ICszNyw3IEBACiAjaW5jbHVkZSAiSW5qZWN0ZWRCdW5kbGUuaCIKICNpbmNs
dWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3NN
ZXNzYWdlcy5oIgorI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5oIgogI2luY2x1
ZGUgIlBsdWdpblByb2Nlc3NDb25uZWN0aW9uTWFuYWdlci5oIgogI2luY2x1ZGUgIlNlc3Npb25U
cmFja2VyLmgiCiAjaW5jbHVkZSAiU3RhdGlzdGljc0RhdGEuaCIKQEAgLTYwLDYgKzYxLDcgQEAK
ICNpbmNsdWRlICJXZWJQcm9jZXNzTWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzUG9v
bE1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc1Byb3h5TWVzc2FnZXMuaCIKKyNpbmNs
dWRlICJXZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXIuaCIKICNpbmNsdWRlICJXZWJzaXRlRGF0YS5o
IgogI2luY2x1ZGUgIldlYnNpdGVEYXRhVHlwZXMuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29y
ZS9KU0xvY2suaD4KQEAgLTEwMSwxMiArMTAzLDkgQEAKICNpbmNsdWRlICJPYmpDT2JqZWN0R3Jh
cGguaCIKICNlbmRpZgogCi0jaWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKICNpZiBQTEFURk9S
TShDT0NPQSkKICNpbmNsdWRlICJDb29raWVTdG9yYWdlU2hpbS5oIgogI2VuZGlmCi0jaW5jbHVk
ZSAiTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmgiCi0jZW5kaWYKIAogI2lmIEVOQUJMRShTRUNf
SVRFTV9TSElNKQogI2luY2x1ZGUgIlNlY0l0ZW1TaGltLmgiCkBAIC0xMjQsMTAgKzEyMyw2IEBA
CiAjaW5jbHVkZSAiV2ViQmF0dGVyeU1hbmFnZXIuaCIKICNlbmRpZgogCi0jaWYgRU5BQkxFKE5F
VFdPUktfUFJPQ0VTUykKLSNpbmNsdWRlICJXZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXIuaCIKLSNl
bmRpZgotCiAjaWYgRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCiAjaW5jbHVkZSA8SmF2YVNjcmlw
dENvcmUvUmVtb3RlSW5zcGVjdG9yLmg+CiAjZW5kaWYKQEAgLTE2MSwxMSArMTU2LDggQEAgV2Vi
UHJvY2Vzczo6V2ViUHJvY2VzcygpCiAgICAgLCBtX2Z1bGxLZXlib2FyZEFjY2Vzc0VuYWJsZWQo
ZmFsc2UpCiAgICAgLCBtX3RleHRDaGVja2VyU3RhdGUoKQogICAgICwgbV9pY29uRGF0YWJhc2VQ
cm94eShuZXcgV2ViSWNvbkRhdGFiYXNlUHJveHkodGhpcykpCi0jaWYgRU5BQkxFKE5FVFdPUktf
UFJPQ0VTUykKLSAgICAsIG1fdXNlc05ldHdvcmtQcm9jZXNzKGZhbHNlKQogICAgICwgbV93ZWJS
ZXNvdXJjZUxvYWRTY2hlZHVsZXIobmV3IFdlYlJlc291cmNlTG9hZFNjaGVkdWxlcikKICAgICAs
IG1fZG5zUHJlZmV0Y2hIeXN0ZXJlcmlzKFt0aGlzXShIeXN0ZXJlc2lzU3RhdGUgc3RhdGUpIHsg
aWYgKHN0YXRlID09IEh5c3RlcmVzaXNTdGF0ZTo6U3RvcHBlZCkgbV9kbnNQcmVmZXRjaGVkSG9z
dHMuY2xlYXIoKTsgfSkKLSNlbmRpZgogI2lmIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJKQog
ICAgICwgbV9wbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbk1hbmFnZXIoUGx1Z2luUHJvY2Vzc0Nvbm5l
Y3Rpb25NYW5hZ2VyOjpjcmVhdGUoKSkKICNlbmRpZgpAQCAtMjUyLDM0ICsyNDQsMTAgQEAgdm9p
ZCBXZWJQcm9jZXNzOjppbml0aWFsaXplQ29ubmVjdGlvbihJUAogICAgIGNvbm5lY3Rpb24tPnNl
dE9ubHlTZW5kTWVzc2FnZXNBc0Rpc3BhdGNoV2hlbldhaXRpbmdGb3JTeW5jUmVwbHlXaGVuUHJv
Y2Vzc2luZ1N1Y2hBTWVzc2FnZSh0cnVlKTsKIH0KIAotdm9pZCBXZWJQcm9jZXNzOjpkaWRDcmVh
dGVEb3dubG9hZCgpCi17Ci0gICAgZGlzYWJsZVRlcm1pbmF0aW9uKCk7Ci19Ci0KLXZvaWQgV2Vi
UHJvY2Vzczo6ZGlkRGVzdHJveURvd25sb2FkKCkKLXsKLSAgICBlbmFibGVUZXJtaW5hdGlvbigp
OwotfQotCi1JUEM6OkNvbm5lY3Rpb24qIFdlYlByb2Nlc3M6OmRvd25sb2FkUHJveHlDb25uZWN0
aW9uKCkKLXsKLSAgICByZXR1cm4gcGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKTsKLX0KLQotQXV0
aGVudGljYXRpb25NYW5hZ2VyJiBXZWJQcm9jZXNzOjpkb3dubG9hZHNBdXRoZW50aWNhdGlvbk1h
bmFnZXIoKQotewotICAgIHJldHVybiAqc3VwcGxlbWVudDxBdXRoZW50aWNhdGlvbk1hbmFnZXI+
KCk7Ci19Ci0KIHZvaWQgV2ViUHJvY2Vzczo6aW5pdGlhbGl6ZVdlYlByb2Nlc3MoV2ViUHJvY2Vz
c0NyZWF0aW9uUGFyYW1ldGVycyYmIHBhcmFtZXRlcnMpCiB7CiAgICAgQVNTRVJUKG1fcGFnZU1h
cC5pc0VtcHR5KCkpOwogCi0jaWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKLSAgICBtX3VzZXNO
ZXR3b3JrUHJvY2VzcyA9IHBhcmFtZXRlcnMudXNlc05ldHdvcmtQcm9jZXNzOwotI2VuZGlmCi0K
ICNpZiBPUyhMSU5VWCkKICAgICBXZWJDb3JlOjpNZW1vcnlQcmVzc3VyZUhhbmRsZXI6OlJlbGll
ZkxvZ2dlcjo6c2V0TG9nZ2luZ0VuYWJsZWQocGFyYW1ldGVycy5zaG91bGRFbmFibGVNZW1vcnlQ
cmVzc3VyZVJlbGllZkxvZ2dpbmcpOwogI2VuZGlmCkBAIC0zNTgsMTMgKzMyNiwxMCBAQCB2b2lk
IFdlYlByb2Nlc3M6OmluaXRpYWxpemVXZWJQcm9jZXNzKFdlCiAgICAgaWYgKHBhcmFtZXRlcnMu
c2hvdWxkVXNlVGVzdGluZ05ldHdvcmtTZXNzaW9uKQogICAgICAgICBOZXR3b3JrU3RvcmFnZVNl
c3Npb246OnN3aXRjaFRvTmV3VGVzdGluZ1Nlc3Npb24oKTsKIAotI2lmIEVOQUJMRShORVRXT1JL
X1BST0NFU1MpCiAgICAgZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCk7CiAKICNpZiBQ
TEFURk9STShDT0NPQSkKLSAgICBpZiAodXNlc05ldHdvcmtQcm9jZXNzKCkpCi0gICAgICAgIENv
b2tpZVN0b3JhZ2VTaGltOjpzaW5nbGV0b24oKS5pbml0aWFsaXplKCk7Ci0jZW5kaWYKKyAgICBD
b29raWVTdG9yYWdlU2hpbTo6c2luZ2xldG9uKCkuaW5pdGlhbGl6ZSgpOwogI2VuZGlmCiAgICAg
c2V0VGVybWluYXRpb25UaW1lb3V0KHBhcmFtZXRlcnMudGVybWluYXRpb25UaW1lb3V0KTsKIApA
QCAtMzk2LDEyICszNjEsOCBAQCB2b2lkIFdlYlByb2Nlc3M6OmluaXRpYWxpemVXZWJQcm9jZXNz
KFdlCiAjZW5kaWYKIH0KIAotI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCiB2b2lkIFdlYlBy
b2Nlc3M6OmVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpCiB7Ci0gICAgaWYgKCFtX3Vz
ZXNOZXR3b3JrUHJvY2VzcykKLSAgICAgICAgcmV0dXJuOwotCiAgICAgaWYgKG1fbmV0d29ya1By
b2Nlc3NDb25uZWN0aW9uKQogICAgICAgICByZXR1cm47CiAKQEAgLTQyMiw3ICszODMsNiBAQCB2
b2lkIFdlYlByb2Nlc3M6OmVuc3VyZU5ldHdvcmtQcm9jZXNzQ29uCiAgICAgICAgIHJldHVybjsK
ICAgICBtX25ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbiA9IE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlv
bjo6Y3JlYXRlKGNvbm5lY3Rpb25JZGVudGlmaWVyKTsKIH0KLSNlbmRpZiAvLyBFTkFCTEUoTkVU
V09SS19QUk9DRVNTKQogCiB2b2lkIFdlYlByb2Nlc3M6OnJlZ2lzdGVyVVJMU2NoZW1lQXNFbXB0
eURvY3VtZW50KGNvbnN0IFN0cmluZyYgdXJsU2NoZW1lKQogewpAQCAtNTExLDE0ICs0NzEsNiBA
QCB2b2lkIFdlYlByb2Nlc3M6OmRlc3Ryb3lQcml2YXRlQnJvd3NpbmdTCiAjZW5kaWYKIH0KIAot
RG93bmxvYWRNYW5hZ2VyJiBXZWJQcm9jZXNzOjpkb3dubG9hZE1hbmFnZXIoKQotewotICAgIEFT
U0VSVCghdXNlc05ldHdvcmtQcm9jZXNzKCkpOwotCi0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVk
PERvd25sb2FkTWFuYWdlcj4gZG93bmxvYWRNYW5hZ2VyKHRoaXMpOwotICAgIHJldHVybiBkb3du
bG9hZE1hbmFnZXI7Ci19Ci0KICNpZiBFTkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQSSkKIFBsdWdp
blByb2Nlc3NDb25uZWN0aW9uTWFuYWdlciYgV2ViUHJvY2Vzczo6cGx1Z2luUHJvY2Vzc0Nvbm5l
Y3Rpb25NYW5hZ2VyKCkKIHsKQEAgLTU4MSw3ICs1MzMsNiBAQCB2b2lkIFdlYlByb2Nlc3M6OnJl
bW92ZVdlYlBhZ2UodWludDY0X3QgCiBib29sIFdlYlByb2Nlc3M6OnNob3VsZFRlcm1pbmF0ZSgp
CiB7CiAgICAgQVNTRVJUKG1fcGFnZU1hcC5pc0VtcHR5KCkpOwotICAgIEFTU0VSVCh1c2VzTmV0
d29ya1Byb2Nlc3MoKSB8fCAhZG93bmxvYWRNYW5hZ2VyKCkuaXNEb3dubG9hZGluZygpKTsKIAog
ICAgIC8vIEZJWE1FOiB0aGUgU2hvdWxkVGVybWluYXRlIG1lc3NhZ2Ugc2hvdWxkIGFsc28gc2Vu
ZCB0ZXJtaW5hdGlvbiBwYXJhbWV0ZXJzLCBzdWNoIGFzIGFueSBzZXNzaW9uIGNvb2tpZXMgdGhh
dCBuZWVkIHRvIGJlIHByZXNlcnZlZC4KICAgICBib29sIHNob3VsZFRlcm1pbmF0ZSA9IGZhbHNl
OwpAQCAtMTAyNSwyMCArOTc2LDggQEAgdm9pZCBXZWJQcm9jZXNzOjpzZXRJbmplY3RlZEJ1bmRs
ZVBhcmFtZQogICAgIGluamVjdGVkQnVuZGxlLT5zZXRCdW5kbGVQYXJhbWV0ZXJzKHZhbHVlKTsK
IH0KIAotYm9vbCBXZWJQcm9jZXNzOjp1c2VzTmV0d29ya1Byb2Nlc3MoKSBjb25zdAotewotI2lm
IEVOQUJMRShORVRXT1JLX1BST0NFU1MpCi0gICAgcmV0dXJuIG1fdXNlc05ldHdvcmtQcm9jZXNz
OwotI2Vsc2UKLSAgICByZXR1cm4gZmFsc2U7Ci0jZW5kaWYKLX0KLQotI2lmIEVOQUJMRShORVRX
T1JLX1BST0NFU1MpCiBOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24qIFdlYlByb2Nlc3M6Om5ldHdv
cmtDb25uZWN0aW9uKCkKIHsKLSAgICBBU1NFUlQobV91c2VzTmV0d29ya1Byb2Nlc3MpOwotCiAg
ICAgLy8gSWYgd2UndmUgbG9zdCBvdXIgY29ubmVjdGlvbiB0byB0aGUgbmV0d29yayBwcm9jZXNz
IChlLmcuIGl0IGNyYXNoZWQpIHRyeSB0byByZS1lc3RhYmxpc2ggaXQuCiAgICAgaWYgKCFtX25l
dHdvcmtQcm9jZXNzQ29ubmVjdGlvbikKICAgICAgICAgZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25u
ZWN0aW9uKCk7CkBAIC0xMDY0LDcgKzEwMDMsNiBAQCBXZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXIm
IFdlYlByb2Nlc3M6OndlCiB7CiAgICAgcmV0dXJuICptX3dlYlJlc291cmNlTG9hZFNjaGVkdWxl
cjsKIH0KLSNlbmRpZiAvLyBFTkFCTEVEKE5FVFdPUktfUFJPQ0VTUykKIAogI2lmIEVOQUJMRShE
QVRBQkFTRV9QUk9DRVNTKQogdm9pZCBXZWJQcm9jZXNzOjp3ZWJUb0RhdGFiYXNlUHJvY2Vzc0Nv
bm5lY3Rpb25DbG9zZWQoV2ViVG9EYXRhYmFzZVByb2Nlc3NDb25uZWN0aW9uKiBjb25uZWN0aW9u
KQpAQCAtMTEwOCwyNyArMTA0Niw2IEBAIHZvaWQgV2ViUHJvY2Vzczo6ZW5zdXJlV2ViVG9EYXRh
YmFzZVByb2MKIAogI2VuZGlmIC8vIEVOQUJMRUQoREFUQUJBU0VfUFJPQ0VTUykKIAotdm9pZCBX
ZWJQcm9jZXNzOjpkb3dubG9hZFJlcXVlc3QoU2Vzc2lvbklEIHNlc3Npb25JRCwgdWludDY0X3Qg
ZG93bmxvYWRJRCwgdWludDY0X3QgaW5pdGlhdGluZ1BhZ2VJRCwgY29uc3QgUmVzb3VyY2VSZXF1
ZXN0JiByZXF1ZXN0KQotewotICAgIFdlYlBhZ2UqIGluaXRpYXRpbmdQYWdlID0gaW5pdGlhdGlu
Z1BhZ2VJRCA/IHdlYlBhZ2UoaW5pdGlhdGluZ1BhZ2VJRCkgOiAwOwotCi0gICAgUmVzb3VyY2VS
ZXF1ZXN0IHJlcXVlc3RXaXRoT3JpZ2luYWxVUkwgPSByZXF1ZXN0OwotICAgIGlmIChpbml0aWF0
aW5nUGFnZSkKLSAgICAgICAgaW5pdGlhdGluZ1BhZ2UtPm1haW5GcmFtZSgpLT5sb2FkZXIoKS5z
ZXRPcmlnaW5hbFVSTEZvckRvd25sb2FkUmVxdWVzdChyZXF1ZXN0V2l0aE9yaWdpbmFsVVJMKTsK
LQotICAgIGRvd25sb2FkTWFuYWdlcigpLnN0YXJ0RG93bmxvYWQoc2Vzc2lvbklELCBkb3dubG9h
ZElELCByZXF1ZXN0V2l0aE9yaWdpbmFsVVJMKTsKLX0KLQotdm9pZCBXZWJQcm9jZXNzOjpyZXN1
bWVEb3dubG9hZCh1aW50NjRfdCBkb3dubG9hZElELCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2Um
IHJlc3VtZURhdGEsIGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgV2ViS2l0OjpTYW5kYm94RXh0
ZW5zaW9uOjpIYW5kbGUmIHNhbmRib3hFeHRlbnNpb25IYW5kbGUpCi17Ci0gICAgZG93bmxvYWRN
YW5hZ2VyKCkucmVzdW1lRG93bmxvYWQoZG93bmxvYWRJRCwgcmVzdW1lRGF0YSwgcGF0aCwgc2Fu
ZGJveEV4dGVuc2lvbkhhbmRsZSk7Ci19Ci0KLXZvaWQgV2ViUHJvY2Vzczo6Y2FuY2VsRG93bmxv
YWQodWludDY0X3QgZG93bmxvYWRJRCkKLXsKLSAgICBkb3dubG9hZE1hbmFnZXIoKS5jYW5jZWxE
b3dubG9hZChkb3dubG9hZElEKTsKLX0KLQogdm9pZCBXZWJQcm9jZXNzOjpzZXRFbmhhbmNlZEFj
Y2Vzc2liaWxpdHkoYm9vbCBmbGFnKQogewogICAgIFdlYkNvcmU6OkFYT2JqZWN0Q2FjaGU6OnNl
dEVuaGFuY2VkVXNlckludGVyZmFjZUFjY2Vzc2liaWxpdHkoZmxhZyk7CkBAIC0xNDcwLDE4ICsx
Mzg3LDEyIEBAIHZvaWQgV2ViUHJvY2Vzczo6cHJlZmV0Y2hETlMoY29uc3QgU3RyaW4KICAgICBp
ZiAoaG9zdG5hbWUuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CiAKLSNpZiBFTkFCTEUoTkVU
V09SS19QUk9DRVNTKQotICAgIGlmICh1c2VzTmV0d29ya1Byb2Nlc3MoKSkgewotICAgICAgICBp
ZiAobV9kbnNQcmVmZXRjaGVkSG9zdHMuYWRkKGhvc3RuYW1lKS5pc05ld0VudHJ5KQotICAgICAg
ICAgICAgbmV0d29ya0Nvbm5lY3Rpb24oKS0+Y29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpO
ZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6UHJlZmV0Y2hETlMoaG9zdG5hbWUpLCAwKTsK
LSAgICAgICAgLy8gVGhlIEROUyBwcmVmZXRjaGVkIGhvc3RzIGNhY2hlIGlzIG9ubHkgdG8gYXZv
aWQgYXNraW5nIGZvciB0aGUgc2FtZSBob3N0cyB0b28gbWFueSB0aW1lcwotICAgICAgICAvLyBp
biBhIHZlcnkgc2hvcnQgcGVyaW9kIG9mIHRpbWUsIHByb2R1Y2luZyBhIGxvdCBvZiBJUEMgdHJh
ZmZpYy4gU28gd2UgY2xlYXIgdGhpcyBjYWNoZSBhZnRlcgotICAgICAgICAvLyBzb21lIHRpbWUg
b2Ygbm8gRE5TIHJlcXVlc3RzLgotICAgICAgICBtX2Ruc1ByZWZldGNoSHlzdGVyZXJpcy5pbXB1
bHNlKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0jZW5kaWYKLSAgICBXZWJDb3JlOjpwcmVm
ZXRjaEROUyhob3N0bmFtZSk7CisgICAgaWYgKG1fZG5zUHJlZmV0Y2hlZEhvc3RzLmFkZChob3N0
bmFtZSkuaXNOZXdFbnRyeSkKKyAgICAgICAgbmV0d29ya0Nvbm5lY3Rpb24oKS0+Y29ubmVjdGlv
bigpLT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6UHJlZmV0
Y2hETlMoaG9zdG5hbWUpLCAwKTsKKyAgICAvLyBUaGUgRE5TIHByZWZldGNoZWQgaG9zdHMgY2Fj
aGUgaXMgb25seSB0byBhdm9pZCBhc2tpbmcgZm9yIHRoZSBzYW1lIGhvc3RzIHRvbyBtYW55IHRp
bWVzCisgICAgLy8gaW4gYSB2ZXJ5IHNob3J0IHBlcmlvZCBvZiB0aW1lLCBwcm9kdWNpbmcgYSBs
b3Qgb2YgSVBDIHRyYWZmaWMuIFNvIHdlIGNsZWFyIHRoaXMgY2FjaGUgYWZ0ZXIKKyAgICAvLyBz
b21lIHRpbWUgb2Ygbm8gRE5TIHJlcXVlc3RzLgorICAgIG1fZG5zUHJlZmV0Y2hIeXN0ZXJlcmlz
LmltcHVsc2UoKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CkluZGV4OiBTb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaAkocmV2aXNpb24gMTkyNjAxKQorKysgU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgJKHdvcmtpbmcgY29weSkKQEAgLTI4LDcgKzI4
LDYgQEAKIAogI2luY2x1ZGUgIkNhY2hlTW9kZWwuaCIKICNpbmNsdWRlICJDaGlsZFByb2Nlc3Mu
aCIKLSNpbmNsdWRlICJEb3dubG9hZE1hbmFnZXIuaCIKICNpbmNsdWRlICJEcmF3aW5nQXJlYS5o
IgogI2luY2x1ZGUgIlBsdWdpblByb2Nlc3NDb25uZWN0aW9uTWFuYWdlci5oIgogI2luY2x1ZGUg
IlJlc291cmNlQ2FjaGVzVG9DbGVhci5oIgpAQCAtNzEsOSArNzAsOSBAQCBzdHJ1Y3QgU2VjdXJp
dHlPcmlnaW5EYXRhOwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotY2xhc3MgRG93bmxvYWRNYW5h
Z2VyOwogY2xhc3MgRXZlbnREaXNwYXRjaGVyOwogY2xhc3MgSW5qZWN0ZWRCdW5kbGU7CitjbGFz
cyBOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb247CiBjbGFzcyBPYmpDT2JqZWN0R3JhcGg7CiBjbGFz
cyBVc2VyRGF0YTsKIGNsYXNzIFdlYkNvbm5lY3Rpb25Ub1VJUHJvY2VzczsKQEAgLTgyLDIyICs4
MSwxNyBAQCBjbGFzcyBXZWJJY29uRGF0YWJhc2VQcm94eTsKIGNsYXNzIFdlYlBhZ2U7CiBjbGFz
cyBXZWJQYWdlR3JvdXBQcm94eTsKIGNsYXNzIFdlYlByb2Nlc3NTdXBwbGVtZW50OworY2xhc3Mg
V2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVyOwogc3RydWN0IFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRl
cnM7CiBzdHJ1Y3QgV2ViUGFnZUdyb3VwRGF0YTsKIHN0cnVjdCBXZWJQcmVmZXJlbmNlc1N0b3Jl
Owogc3RydWN0IFdlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnM7CiAKLSNpZiBFTkFCTEUoTkVU
V09SS19QUk9DRVNTKQotY2xhc3MgTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uOwotY2xhc3MgV2Vi
UmVzb3VyY2VMb2FkU2NoZWR1bGVyOwotI2VuZGlmCi0KICNpZiBFTkFCTEUoREFUQUJBU0VfUFJP
Q0VTUykKIGNsYXNzIFdlYlRvRGF0YWJhc2VQcm9jZXNzQ29ubmVjdGlvbjsKICNlbmRpZgogCi1j
bGFzcyBXZWJQcm9jZXNzIDogcHVibGljIENoaWxkUHJvY2VzcywgcHJpdmF0ZSBEb3dubG9hZE1h
bmFnZXI6OkNsaWVudCB7Ci0gICAgZnJpZW5kIGNsYXNzIE5ldmVyRGVzdHJveWVkPERvd25sb2Fk
TWFuYWdlcj47CitjbGFzcyBXZWJQcm9jZXNzIDogcHVibGljIENoaWxkUHJvY2VzcyB7CiBwdWJs
aWM6CiAgICAgc3RhdGljIFdlYlByb2Nlc3MmIHNpbmdsZXRvbigpOwogCkBAIC0xNDcsNyArMTQx
LDYgQEAgcHVibGljOgogI2VuZGlmCiAgICAgCiAgICAgY29uc3QgVGV4dENoZWNrZXJTdGF0ZSYg
dGV4dENoZWNrZXJTdGF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdGV4dENoZWNrZXJTdGF0ZTsgfQot
ICAgIERvd25sb2FkTWFuYWdlciYgZG93bmxvYWRNYW5hZ2VyKCk7CiAKICAgICB2b2lkIGNsZWFy
UmVzb3VyY2VDYWNoZXMoUmVzb3VyY2VDYWNoZXNUb0NsZWFyID0gQWxsUmVzb3VyY2VDYWNoZXMp
OwogICAgIApAQCAtMTU3LDEzICsxNTAsOSBAQCBwdWJsaWM6CiAKICAgICBFdmVudERpc3BhdGNo
ZXImIGV2ZW50RGlzcGF0Y2hlcigpIHsgcmV0dXJuICptX2V2ZW50RGlzcGF0Y2hlcjsgfQogCi0g
ICAgYm9vbCB1c2VzTmV0d29ya1Byb2Nlc3MoKSBjb25zdDsKLQotI2lmIEVOQUJMRShORVRXT1JL
X1BST0NFU1MpCiAgICAgTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKiBuZXR3b3JrQ29ubmVjdGlv
bigpOwogICAgIHZvaWQgbmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uQ2xvc2VkKE5ldHdvcmtQcm9j
ZXNzQ29ubmVjdGlvbiopOwogICAgIFdlYlJlc291cmNlTG9hZFNjaGVkdWxlciYgd2ViUmVzb3Vy
Y2VMb2FkU2NoZWR1bGVyKCk7Ci0jZW5kaWYKIAogI2lmIEVOQUJMRShEQVRBQkFTRV9QUk9DRVNT
KQogICAgIHZvaWQgd2ViVG9EYXRhYmFzZVByb2Nlc3NDb25uZWN0aW9uQ2xvc2VkKFdlYlRvRGF0
YWJhc2VQcm9jZXNzQ29ubmVjdGlvbiopOwpAQCAtMjIyLDEyICsyMTEsNiBAQCBwcml2YXRlOgog
ICAgIFdlYlByb2Nlc3MoKTsKICAgICB+V2ViUHJvY2VzcygpOwogCi0gICAgLy8gRG93bmxvYWRN
YW5hZ2VyOjpDbGllbnQuCi0gICAgdmlydHVhbCB2b2lkIGRpZENyZWF0ZURvd25sb2FkKCkgb3Zl
cnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGRpZERlc3Ryb3lEb3dubG9hZCgpIG92ZXJyaWRlOwot
ICAgIHZpcnR1YWwgSVBDOjpDb25uZWN0aW9uKiBkb3dubG9hZFByb3h5Q29ubmVjdGlvbigpIG92
ZXJyaWRlOwotICAgIHZpcnR1YWwgQXV0aGVudGljYXRpb25NYW5hZ2VyJiBkb3dubG9hZHNBdXRo
ZW50aWNhdGlvbk1hbmFnZXIoKSBvdmVycmlkZTsKLQogICAgIHZvaWQgaW5pdGlhbGl6ZVdlYlBy
b2Nlc3MoV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycyYmKTsKICAgICB2b2lkIHBsYXRmb3Jt
SW5pdGlhbGl6ZVdlYlByb2Nlc3MoV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycyYmKTsKIApA
QCAtMzU5LDE0ICszNDIsMTEgQEAgcHJpdmF0ZToKIAogICAgIFdlYkljb25EYXRhYmFzZVByb3h5
KiBtX2ljb25EYXRhYmFzZVByb3h5OwogCi0jaWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKICAg
ICB2b2lkIGVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpOwogICAgIFJlZlB0cjxOZXR3
b3JrUHJvY2Vzc0Nvbm5lY3Rpb24+IG1fbmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uOwotICAgIGJv
b2wgbV91c2VzTmV0d29ya1Byb2Nlc3M7CiAgICAgV2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVyKiBt
X3dlYlJlc291cmNlTG9hZFNjaGVkdWxlcjsKICAgICBIYXNoU2V0PFN0cmluZz4gbV9kbnNQcmVm
ZXRjaGVkSG9zdHM7CiAgICAgV2ViQ29yZTo6SHlzdGVyZXNpc0FjdGl2aXR5IG1fZG5zUHJlZmV0
Y2hIeXN0ZXJlcmlzOwotI2VuZGlmCiAKICNpZiBFTkFCTEUoREFUQUJBU0VfUFJPQ0VTUykKICAg
ICB2b2lkIGVuc3VyZVdlYlRvRGF0YWJhc2VQcm9jZXNzQ29ubmVjdGlvbigpOwpJbmRleDogU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgkocmV2
aXNpb24gMTkyNjAxKQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1l
c3NhZ2VzLmluCSh3b3JraW5nIGNvcHkpCkBAIC02MiwxMiArNjIsNiBAQCBtZXNzYWdlcyAtPiBX
ZWJQcm9jZXNzIExlZ2FjeVJlY2VpdmVyIHsKICAgICB2b2lkIFN0YXJ0TWVtb3J5U2FtcGxlcihX
ZWJLaXQ6OlNhbmRib3hFeHRlbnNpb246OkhhbmRsZSBzYW1wbGVMb2dGaWxlSGFuZGxlLCBTdHJp
bmcgc2FtcGxlTG9nRmlsZVBhdGgsIGRvdWJsZSBpbnRlcnZhbCk7CiAgICAgdm9pZCBTdG9wTWVt
b3J5U2FtcGxlcigpOwogCi0gICAgIyBEb3dubG9hZHMuIFRoaXMgc2hvdWxkIHJlYWxseSBiZSBp
biBhIERvd25sb2FkLm1lc3NhZ2VzLmluLCBidXQgaXQgc2VlbWVkIHVubmVjZXNzYXJ5IHRvIGNy
ZWF0ZSBhIG5ldyBmaWxlIGp1c3QgZm9yCi0gICAgIyB0aHJlZSBtZXNzYWdlcy4KLSAgICBEb3du
bG9hZFJlcXVlc3QoV2ViQ29yZTo6U2Vzc2lvbklEIHNlc3Npb25JRCwgdWludDY0X3QgZG93bmxv
YWRJRCwgdWludDY0X3QgaW5pdGlhdGluZ1BhZ2VJRCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0
IHJlcXVlc3QpCi0gICAgUmVzdW1lRG93bmxvYWQodWludDY0X3QgZG93bmxvYWRJRCwgSVBDOjpE
YXRhUmVmZXJlbmNlIHJlc3VtZURhdGEsIFN0cmluZyBwYXRoLCBXZWJLaXQ6OlNhbmRib3hFeHRl
bnNpb246OkhhbmRsZSBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlKQotICAgIENhbmNlbERvd25sb2Fk
KHVpbnQ2NF90IGRvd25sb2FkSUQpCi0KICAgICBTZXRUZXh0Q2hlY2tlclN0YXRlKHN0cnVjdCBX
ZWJLaXQ6OlRleHRDaGVja2VyU3RhdGUgdGV4dENoZWNrZXJTdGF0ZSkKIAogICAgIFNldEVuaGFu
Y2VkQWNjZXNzaWJpbGl0eShib29sIGZsYWcpCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL0ZpbGVBUEkvQmxvYlJlZ2lzdHJ5UHJveHkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvRmlsZUFQSS9CbG9iUmVnaXN0cnlQcm94eS5jcHAJKHJldmlzaW9u
IDE5MjYwMSkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvRmlsZUFQSS9CbG9iUmVnaXN0
cnlQcm94eS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2LDggKzI2LDYgQEAKICNpbmNsdWRlICJj
b25maWcuaCIKICNpbmNsdWRlICJCbG9iUmVnaXN0cnlQcm94eS5oIgogCi0jaWYgRU5BQkxFKE5F
VFdPUktfUFJPQ0VTUykKLQogI2luY2x1ZGUgIk5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
TWVzc2FnZXMuaCIKICNpbmNsdWRlICJOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uaCIKICNpbmNs
dWRlICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIKQEAgLTQwLDggKzM4LDYgQEAgbmFtZXNwYWNl
IFdlYktpdCB7CiAKIHZvaWQgQmxvYlJlZ2lzdHJ5UHJveHk6OnJlZ2lzdGVyRmlsZUJsb2JVUkwo
Y29uc3QgV2ViQ29yZTo6VVJMJiB1cmwsIFBhc3NSZWZQdHI8QmxvYkRhdGFGaWxlUmVmZXJlbmNl
PiBmaWxlLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKQogewotICAgIEFTU0VSVChXZWJQcm9j
ZXNzOjpzaW5nbGV0b24oKS51c2VzTmV0d29ya1Byb2Nlc3MoKSk7Ci0KICAgICBTYW5kYm94RXh0
ZW5zaW9uOjpIYW5kbGUgZXh0ZW5zaW9uSGFuZGxlOwogCiAgICAgLy8gRmlsZSBwYXRoIGNhbiBi
ZSBlbXB0eSB3aGVuIHN1Ym1pdHRpbmcgYSBmb3JtIGZpbGUgaW5wdXQgd2l0aG91dCBhIGZpbGUs
IHNlZSBidWcgMTExNzc4LgpAQCAtNTMsMzYgKzQ5LDI2IEBAIHZvaWQgQmxvYlJlZ2lzdHJ5UHJv
eHk6OnJlZ2lzdGVyRmlsZUJsb2IKIAogdm9pZCBCbG9iUmVnaXN0cnlQcm94eTo6cmVnaXN0ZXJC
bG9iVVJMKGNvbnN0IFVSTCYgdXJsLCBWZWN0b3I8QmxvYlBhcnQ+IGJsb2JQYXJ0cywgY29uc3Qg
U3RyaW5nJiBjb250ZW50VHlwZSkKIHsKLSAgICBBU1NFUlQoV2ViUHJvY2Vzczo6c2luZ2xldG9u
KCkudXNlc05ldHdvcmtQcm9jZXNzKCkpOwotCiAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCku
bmV0d29ya0Nvbm5lY3Rpb24oKS0+Y29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2Vzczo6UmVnaXN0ZXJCbG9iVVJMKHVybCwgYmxvYlBhcnRzLCBj
b250ZW50VHlwZSksIDApOwogfQogCiB2b2lkIEJsb2JSZWdpc3RyeVByb3h5OjpyZWdpc3RlckJs
b2JVUkwoY29uc3QgVVJMJiB1cmwsIGNvbnN0IFVSTCYgc3JjVVJMKQogewotICAgIEFTU0VSVChX
ZWJQcm9jZXNzOjpzaW5nbGV0b24oKS51c2VzTmV0d29ya1Byb2Nlc3MoKSk7Ci0KICAgICBXZWJQ
cm9jZXNzOjpzaW5nbGV0b24oKS5uZXR3b3JrQ29ubmVjdGlvbigpLT5jb25uZWN0aW9uKCktPnNl
bmQoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpSZWdpc3RlckJsb2JV
UkxGcm9tVVJMKHVybCwgc3JjVVJMKSwgMCk7CiB9CiAKIHZvaWQgQmxvYlJlZ2lzdHJ5UHJveHk6
OnVucmVnaXN0ZXJCbG9iVVJMKGNvbnN0IFVSTCYgdXJsKQogewotICAgIEFTU0VSVChXZWJQcm9j
ZXNzOjpzaW5nbGV0b24oKS51c2VzTmV0d29ya1Byb2Nlc3MoKSk7Ci0KICAgICBXZWJQcm9jZXNz
OjpzaW5nbGV0b24oKS5uZXR3b3JrQ29ubmVjdGlvbigpLT5jb25uZWN0aW9uKCktPnNlbmQoTWVz
c2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpVbnJlZ2lzdGVyQmxvYlVSTCh1
cmwpLCAwKTsKIH0KIAogdm9pZCBCbG9iUmVnaXN0cnlQcm94eTo6cmVnaXN0ZXJCbG9iVVJMRm9y
U2xpY2UoY29uc3QgVVJMJiB1cmwsIGNvbnN0IFVSTCYgc3JjVVJMLCBsb25nIGxvbmcgc3RhcnQs
IGxvbmcgbG9uZyBlbmQpCiB7Ci0gICAgQVNTRVJUKFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnVz
ZXNOZXR3b3JrUHJvY2VzcygpKTsKLQogICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLm5ldHdv
cmtDb25uZWN0aW9uKCktPmNvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6TmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3M6OlJlZ2lzdGVyQmxvYlVSTEZvclNsaWNlKHVybCwgc3JjVVJMLCBz
dGFydCwgZW5kKSwgMCk7CiB9CiAKIHVuc2lnbmVkIGxvbmcgbG9uZyBCbG9iUmVnaXN0cnlQcm94
eTo6YmxvYlNpemUoY29uc3QgVVJMJiB1cmwpCiB7Ci0gICAgQVNTRVJUKFdlYlByb2Nlc3M6OnNp
bmdsZXRvbigpLnVzZXNOZXR3b3JrUHJvY2VzcygpKTsKLQogICAgIHVpbnQ2NF90IHJlc3VsdFNp
emU7CiAgICAgaWYgKCFXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5uZXR3b3JrQ29ubmVjdGlvbigp
LT5jb25uZWN0aW9uKCktPnNlbmRTeW5jKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzczo6QmxvYlNpemUodXJsKSwgTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzOjpCbG9iU2l6ZTo6UmVwbHkocmVzdWx0U2l6ZSksIDApKQogICAgICAgICByZXR1cm4g
MDsKQEAgLTkwLDUgKzc2LDMgQEAgdW5zaWduZWQgbG9uZyBsb25nIEJsb2JSZWdpc3RyeVByb3h5
OjpibAogfQogCiB9Ci0KLSNlbmRpZiAvLyBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQpJbmRleDog
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9GaWxlQVBJL0Jsb2JSZWdpc3RyeVByb3h5LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9GaWxlQVBJL0Jsb2JSZWdpc3Ry
eVByb3h5LmgJKHJldmlzaW9uIDE5MjYwMSkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
RmlsZUFQSS9CbG9iUmVnaXN0cnlQcm94eS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw4ICsyNiw2
IEBACiAjaWZuZGVmIEJsb2JSZWdpc3RyeVByb3h5X2gKICNkZWZpbmUgQmxvYlJlZ2lzdHJ5UHJv
eHlfaAogCi0jaWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKLQogI2luY2x1ZGUgPFdlYkNvcmUv
QmxvYlJlZ2lzdHJ5Lmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtNDQsNiArNDIsNCBAQCBw
dWJsaWM6CiAKIH0KIAotI2VuZGlmIC8vIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCi0KICNlbmRp
ZiAvLyBCbG9iUmVnaXN0cnlQcm94eV9oCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmNw
cAkocmV2aXNpb24gMTkyNjAxKQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9OZXR3b3Jr
L05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM3LDggKzM3
LDYgQEAKICNpbmNsdWRlIDxXZWJDb3JlL1Nlc3Npb25JRC5oPgogI2luY2x1ZGUgPFdlYkNvcmUv
U2hhcmVkQnVmZmVyLmg+CiAKLSNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQotCiB1c2luZyBu
YW1lc3BhY2UgV2ViQ29yZTsKIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC05OCw1ICs5NiwzIEBA
IHZvaWQgTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uOjpkaWRDYWNoZVIKICNlbmRpZgogCiB9IC8v
IG5hbWVzcGFjZSBXZWJLaXQKLQotI2VuZGlmIC8vIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCklu
ZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25u
ZWN0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9OZXR3b3Jr
L05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5oCShyZXZpc2lvbiAxOTI2MDEpCisrKyBTb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmgJKHdv
cmtpbmcgY29weSkKQEAgLTMxLDggKzMxLDYgQEAKICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5o
PgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCi0jaWYgRU5BQkxFKE5FVFdPUktf
UFJPQ0VTUykKLQogbmFtZXNwYWNlIElQQyB7CiBjbGFzcyBEYXRhUmVmZXJlbmNlOwogfQpAQCAt
ODIsNyArODAsNCBAQCBwcml2YXRlOgogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAotI2VuZGlm
IC8vIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCi0KLQogI2VuZGlmIC8vIE5ldHdvcmtQcm9jZXNz
Q29ubmVjdGlvbl9oCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL05ldHdvcmsvTmV0
d29ya1Byb2Nlc3NDb25uZWN0aW9uLm1lc3NhZ2VzLmluCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24ubWVzc2Fn
ZXMuaW4JKHJldmlzaW9uIDE5MjYwMSkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvTmV0
d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24ubWVzc2FnZXMuaW4JKHdvcmtpbmcgY29weSkK
QEAgLTIwLDggKzIwLDYgQEAKICMgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKICMgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
IAotI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCi0KIG1lc3NhZ2VzIC0+IE5ldHdvcmtQcm9j
ZXNzQ29ubmVjdGlvbiBMZWdhY3lSZWNlaXZlciB7CiAKICNpZiBFTkFCTEUoU0hBUkVBQkxFX1JF
U09VUkNFKQpAQCAtMjksNSArMjcsMyBAQCBtZXNzYWdlcyAtPiBOZXR3b3JrUHJvY2Vzc0Nvbm5l
Y3Rpb24gTGVnCiAjZW5kaWYKIAogfQotCi0jZW5kaWYgLy8gRU5BQkxFKE5FVFdPUktfUFJPQ0VT
UykKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxv
YWRTY2hlZHVsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
TmV0d29yay9XZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXIuY3BwCShyZXZpc2lvbiAxOTI2MDEpCisr
KyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkU2NoZWR1
bGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTIsOCArNTIsNiBAQAogI2luY2x1ZGUgPFdlYkNv
cmUvU3VicmVzb3VyY2VMb2FkZXIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAK
LSNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQotCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsK
IAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC0yODYsNSArMjg0LDMgQEAgdm9pZCBXZWJSZXNvdXJj
ZUxvYWRTY2hlZHVsZXI6Om5ldHdvcmtQcgogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQot
I2VuZGlmIC8vIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVyLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZFNjaGVk
dWxlci5oCShyZXZpc2lvbiAxOTI2MDEpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL05l
dHdvcmsvV2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTMyLDgg
KzMyLDYgQEAKICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlTG9hZGVyLmg+CiAjaW5jbHVkZSA8
d3RmL1J1bkxvb3AuaD4KIAotI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCi0KIG5hbWVzcGFj
ZSBXZWJLaXQgewogCiBjbGFzcyBOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb247CkBAIC03Nyw2ICs3
NSw0IEBAIHByaXZhdGU6CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCi0jZW5kaWYgLy8gRU5B
QkxFKE5FVFdPUktfUFJPQ0VTUykKLQogI2VuZGlmIC8vIFdlYlJlc291cmNlTG9hZFNjaGVkdWxl
cl9oCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VM
b2FkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvTmV0d29y
ay9XZWJSZXNvdXJjZUxvYWRlci5jcHAJKHJldmlzaW9uIDE5MjYwMSkKKysrIFNvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTI2LDggKzI2LDYgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJXZWJS
ZXNvdXJjZUxvYWRlci5oIgogCi0jaWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKLQogI2luY2x1
ZGUgIkRhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiTmV0
d29ya1Byb2Nlc3NDb25uZWN0aW9uLmgiCkBAIC0yMjEsNSArMjE5LDMgQEAgdm9pZCBXZWJSZXNv
dXJjZUxvYWRlcjo6Y2FuQXV0aGVudGljYXRlQQogI2VuZGlmCiAKIH0gLy8gbmFtZXNwYWNlIFdl
YktpdAotCi0jZW5kaWYgLy8gRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5o
CShyZXZpc2lvbiAxOTI2MDEpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL05ldHdvcmsv
V2ViUmVzb3VyY2VMb2FkZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMjYsOCArMjYsNiBAQAogI2lm
bmRlZiBXZWJSZXNvdXJjZUxvYWRlcl9oCiAjZGVmaW5lIFdlYlJlc291cmNlTG9hZGVyX2gKIAot
I2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCi0KICNpbmNsdWRlICJDb25uZWN0aW9uLmgiCiAj
aW5jbHVkZSAiTWVzc2FnZVNlbmRlci5oIgogI2luY2x1ZGUgIlNoYXJlYWJsZVJlc291cmNlLmgi
CkBAIC05NCw2ICs5Miw0IEBAIHByaXZhdGU6CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCi0j
ZW5kaWYgLy8gRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKLQogI2VuZGlmIC8vIFdlYlJlc291cmNl
TG9hZGVyX2gKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNv
dXJjZUxvYWRlci5tZXNzYWdlcy5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIubWVzc2FnZXMuaW4JKHJldmlzaW9uIDE5
MjYwMSkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxv
YWRlci5tZXNzYWdlcy5pbgkod29ya2luZyBjb3B5KQpAQCAtMjAsOCArMjAsNiBAQAogIyBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQogIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogCi0jaWYgRU5BQkxFKE5FVFdPUktfUFJP
Q0VTUykKLQogbWVzc2FnZXMgLT4gV2ViUmVzb3VyY2VMb2FkZXIgTGVnYWN5UmVjZWl2ZXIgewog
ICAgIFdpbGxTZW5kUmVxdWVzdChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdCwgV2Vi
Q29yZTo6UmVzb3VyY2VSZXNwb25zZSByZWRpcmVjdFJlc3BvbnNlKQogICAgIERpZFNlbmREYXRh
KHVpbnQ2NF90IGJ5dGVzU2VudCwgdWludDY0X3QgdG90YWxCeXRlc1RvQmVTZW50KQpAQCAtMzks
NSArMzcsMyBAQCBtZXNzYWdlcyAtPiBXZWJSZXNvdXJjZUxvYWRlciBMZWdhY3lSZWNlCiAgICAg
RGlkUmVjZWl2ZVJlc291cmNlKFdlYktpdDo6U2hhcmVhYmxlUmVzb3VyY2U6OkhhbmRsZSByZXNv
dXJjZSwgZG91YmxlIGZpbmlzaFRpbWUpCiAjZW5kaWYKIH0KLQotI2VuZGlmIC8vIEVOQUJMRShO
RVRXT1JLX1BST0NFU1MpCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMv
TmV0c2NhcGUvTmV0c2NhcGVCcm93c2VyRnVuY3MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZUJyb3dzZXJGdW5jcy5j
cHAJKHJldmlzaW9uIDE5MjYwMSkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lu
cy9OZXRzY2FwZS9OZXRzY2FwZUJyb3dzZXJGdW5jcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEw
NTMsMTEgKzEwNTMsNyBAQCBzdGF0aWMgdm9pZCBpbml0aWFsaXplQnJvd3NlckZ1bmNzKE5QTmV0
CiAgICAgbmV0c2NhcGVGdW5jcy5wb3B1cGNvbnRleHRtZW51ID0gMDsKICAgICBuZXRzY2FwZUZ1
bmNzLmNvbnZlcnRwb2ludCA9IDA7CiAjZW5kaWYKLSNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNT
KQogICAgIG5ldHNjYXBlRnVuY3MudXJscmVkaXJlY3RyZXNwb25zZSA9IE5QTl9VUkxSZWRpcmVj
dFJlc3BvbnNlOwotI2Vsc2UKLSAgICBuZXRzY2FwZUZ1bmNzLnVybHJlZGlyZWN0cmVzcG9uc2Ug
PSAwOwotI2VuZGlmCiB9CiAgICAgCiBOUE5ldHNjYXBlRnVuY3MqIG5ldHNjYXBlQnJvd3NlckZ1
bmNzKCkKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9O
ZXRzY2FwZVBsdWdpbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmNwcAkocmV2aXNpb24gMTkyNjAxKQor
KysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1
Z2luLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDAwLDE2ICs0MDAsMTIgQEAgYm9vbCBOZXRzY2Fw
ZVBsdWdpbjo6Z2V0QXV0aGVudGljYXRpb25JbgogCiB2b2lkIE5ldHNjYXBlUGx1Z2luOjpyZWdp
c3RlclJlZGlyZWN0KE5ldHNjYXBlUGx1Z2luU3RyZWFtKiBzdHJlYW0sIGNvbnN0IFVSTCYgcmVx
dWVzdFVSTCwgaW50IHJlZGlyZWN0UmVzcG9uc2VTdGF0dXMsIHZvaWQqIG5vdGlmaWNhdGlvbkRh
dGEpCiB7Ci0jaWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKICAgICAvLyBOUFBfVVJMUmVkaXJl
Y3ROb3RpZnkgbWF5IHN5bmNocm9ub3VzbHkgcmVxdWVzdCB0aGlzIHN0cmVhbSBiYWNrIG91dCwg
c28gc2V0IGl0IGZpcnN0CiAgICAgbV9yZWRpcmVjdHMuc2V0KG5vdGlmaWNhdGlvbkRhdGEsIHN0
ZDo6bWFrZV9wYWlyKHN0cmVhbSwgcmVxdWVzdFVSTC5zdHJpbmcoKSkpOwogICAgIGlmICghTlBQ
X1VSTFJlZGlyZWN0Tm90aWZ5KHJlcXVlc3RVUkwuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSwgcmVk
aXJlY3RSZXNwb25zZVN0YXR1cywgbm90aWZpY2F0aW9uRGF0YSkpIHsKICAgICAgICAgbV9yZWRp
cmVjdHMudGFrZShub3RpZmljYXRpb25EYXRhKTsKICAgICAgICAgY29udHJvbGxlcigpLT5jb250
aW51ZVN0cmVhbUxvYWQoc3RyZWFtLT5zdHJlYW1JRCgpKTsKICAgICB9Ci0jZWxzZQotICAgIGNv
bnRyb2xsZXIoKS0+Y29udGludWVTdHJlYW1Mb2FkKHN0cmVhbS0+c3RyZWFtSUQoKSk7Ci0jZW5k
aWYKIH0KIAogdm9pZCBOZXRzY2FwZVBsdWdpbjo6dXJsUmVkaXJlY3RSZXNwb25zZSh2b2lkKiBu
b3RpZnlEYXRhLCBib29sIGFsbG93KQpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVn
aWVzLmNwcAkocmV2aXNpb24gMTkyNjAxKQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0yNiw5ICsyNiwxMiBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIldlYlBsYXRm
b3JtU3RyYXRlZ2llcy5oIgogCisjaW5jbHVkZSAiQmxvYlJlZ2lzdHJ5UHJveHkuaCIKICNpbmNs
dWRlICJCbG9ja2luZ1Jlc3BvbnNlTWFwLmgiCiAjaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgog
I2luY2x1ZGUgIkhhbmdEZXRlY3Rpb25EaXNhYmxlci5oIgorI2luY2x1ZGUgIk5ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzTWVzc2FnZXMuaCIKKyNpbmNsdWRlICJOZXR3b3JrUHJvY2Vzc0Nv
bm5lY3Rpb24uaCIKICNpbmNsdWRlICJOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycy5oIgog
I2luY2x1ZGUgIlBsdWdpbkluZm9TdG9yZS5oIgogI2luY2x1ZGUgIlNlc3Npb25UcmFja2VyLmgi
CkBAIC00NCw2ICs0Nyw3IEBACiAjaW5jbHVkZSAiV2ViUGFzdGVib2FyZFByb3h5TWVzc2FnZXMu
aCIKICNpbmNsdWRlICJXZWJQcm9jZXNzLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc1Byb3h5TWVz
c2FnZXMuaCIKKyNpbmNsdWRlICJXZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXIuaCIKICNpbmNsdWRl
IDxXZWJDb3JlL0NvbG9yLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Eb2N1bWVudExvYWRlci5oPgog
I2luY2x1ZGUgPFdlYkNvcmUvSURCRmFjdG9yeUJhY2tlbmRJbnRlcmZhY2UuaD4KQEAgLTYzLDEz
ICs2Nyw2IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9VUkwuaD4KICNpbmNsdWRlIDx3dGYvQXRvbWlj
cy5oPgogCi0jaWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKLSNpbmNsdWRlICJCbG9iUmVnaXN0
cnlQcm94eS5oIgotI2luY2x1ZGUgIk5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzTWVzc2Fn
ZXMuaCIKLSNpbmNsdWRlICJOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uaCIKLSNpbmNsdWRlICJX
ZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXIuaCIKLSNlbmRpZgotCiB1c2luZyBuYW1lc3BhY2UgV2Vi
Q29yZTsKIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC0xMTIsMTE0ICsxMDksNTYgQEAgUGx1Z2lu
U3RyYXRlZ3kqIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6YwogCiBTdHJpbmcgV2ViUGxhdGZvcm1T
dHJhdGVnaWVzOjpjb29raWVzRm9yRE9NKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vz
c2lvbiwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBVUkwmIHVybCkKIHsKLSNpZiBFTkFC
TEUoTkVUV09SS19QUk9DRVNTKQogICAgIGF1dG8mIHdlYlByb2Nlc3MgPSBXZWJQcm9jZXNzOjpz
aW5nbGV0b24oKTsKLSAgICBpZiAod2ViUHJvY2Vzcy51c2VzTmV0d29ya1Byb2Nlc3MoKSkgewot
ICAgICAgICBTdHJpbmcgcmVzdWx0OwotICAgICAgICBpZiAoIXdlYlByb2Nlc3MubmV0d29ya0Nv
bm5lY3Rpb24oKS0+Y29ubmVjdGlvbigpLT5zZW5kU3luYyhNZXNzYWdlczo6TmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3M6OkNvb2tpZXNGb3JET00oU2Vzc2lvblRyYWNrZXI6OnNlc3Npb25J
RChzZXNzaW9uKSwgZmlyc3RQYXJ0eSwgdXJsKSwgTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzOjpDb29raWVzRm9yRE9NOjpSZXBseShyZXN1bHQpLCAwKSkKLSAgICAgICAg
ICAgIHJldHVybiBTdHJpbmcoKTsKLSAgICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgICB9Ci0jZW5k
aWYKLQotICAgIHJldHVybiBXZWJDb3JlOjpjb29raWVzRm9yRE9NKHNlc3Npb24sIGZpcnN0UGFy
dHksIHVybCk7CisgICAgU3RyaW5nIHJlc3VsdDsKKyAgICBpZiAoIXdlYlByb2Nlc3MubmV0d29y
a0Nvbm5lY3Rpb24oKS0+Y29ubmVjdGlvbigpLT5zZW5kU3luYyhNZXNzYWdlczo6TmV0d29ya0Nv
bm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkNvb2tpZXNGb3JET00oU2Vzc2lvblRyYWNrZXI6OnNlc3Np
b25JRChzZXNzaW9uKSwgZmlyc3RQYXJ0eSwgdXJsKSwgTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzOjpDb29raWVzRm9yRE9NOjpSZXBseShyZXN1bHQpLCAwKSkKKyAgICAg
ICAgcmV0dXJuIFN0cmluZygpOworICAgIHJldHVybiByZXN1bHQ7CiB9CiAKIHZvaWQgV2ViUGxh
dGZvcm1TdHJhdGVnaWVzOjpzZXRDb29raWVzRnJvbURPTShjb25zdCBOZXR3b3JrU3RvcmFnZVNl
c3Npb24mIHNlc3Npb24sIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgVVJMJiB1cmwsIGNv
bnN0IFN0cmluZyYgY29va2llU3RyaW5nKQogewotI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1Mp
CiAgICAgYXV0byYgd2ViUHJvY2VzcyA9IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpOwotICAgIGlm
ICh3ZWJQcm9jZXNzLnVzZXNOZXR3b3JrUHJvY2VzcygpKSB7Ci0gICAgICAgIHdlYlByb2Nlc3Mu
bmV0d29ya0Nvbm5lY3Rpb24oKS0+Y29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2Vzczo6U2V0Q29va2llc0Zyb21ET00oU2Vzc2lvblRyYWNrZXI6
OnNlc3Npb25JRChzZXNzaW9uKSwgZmlyc3RQYXJ0eSwgdXJsLCBjb29raWVTdHJpbmcpLCAwKTsK
LSAgICAgICAgcmV0dXJuOwotICAgIH0KLSNlbmRpZgotCi0gICAgV2ViQ29yZTo6c2V0Q29va2ll
c0Zyb21ET00oc2Vzc2lvbiwgZmlyc3RQYXJ0eSwgdXJsLCBjb29raWVTdHJpbmcpOworICAgIHdl
YlByb2Nlc3MubmV0d29ya0Nvbm5lY3Rpb24oKS0+Y29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2Vz
OjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6U2V0Q29va2llc0Zyb21ET00oU2Vzc2lv
blRyYWNrZXI6OnNlc3Npb25JRChzZXNzaW9uKSwgZmlyc3RQYXJ0eSwgdXJsLCBjb29raWVTdHJp
bmcpLCAwKTsKIH0KIAogYm9vbCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNvb2tpZXNFbmFibGVk
KGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgVVJMJiBmaXJzdFBh
cnR5LCBjb25zdCBVUkwmIHVybCkKIHsKLSNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQotICAg
IGF1dG8mIHdlYlByb2Nlc3MgPSBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKTsKLSAgICBpZiAod2Vi
UHJvY2Vzcy51c2VzTmV0d29ya1Byb2Nlc3MoKSkgewotICAgICAgICBib29sIHJlc3VsdDsKLSAg
ICAgICAgaWYgKCF3ZWJQcm9jZXNzLm5ldHdvcmtDb25uZWN0aW9uKCktPmNvbm5lY3Rpb24oKS0+
c2VuZFN5bmMoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpDb29raWVz
RW5hYmxlZChTZXNzaW9uVHJhY2tlcjo6c2Vzc2lvbklEKHNlc3Npb24pLCBmaXJzdFBhcnR5LCB1
cmwpLCBNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkNvb2tpZXNFbmFi
bGVkOjpSZXBseShyZXN1bHQpLCAwKSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAg
ICAgcmV0dXJuIHJlc3VsdDsKLSAgICB9Ci0jZW5kaWYKLQotICAgIHJldHVybiBXZWJDb3JlOjpj
b29raWVzRW5hYmxlZChzZXNzaW9uLCBmaXJzdFBhcnR5LCB1cmwpOworICAgIGJvb2wgcmVzdWx0
OworICAgIGlmICghV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkubmV0d29ya0Nvbm5lY3Rpb24oKS0+
Y29ubmVjdGlvbigpLT5zZW5kU3luYyhNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3M6OkNvb2tpZXNFbmFibGVkKFNlc3Npb25UcmFja2VyOjpzZXNzaW9uSUQoc2Vzc2lvbiks
IGZpcnN0UGFydHksIHVybCksIE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vz
czo6Q29va2llc0VuYWJsZWQ6OlJlcGx5KHJlc3VsdCksIDApKQorICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAogU3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2ll
czo6Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNz
aW9uJiBzZXNzaW9uLCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFVSTCYgdXJsKQogewot
I2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCi0gICAgYXV0byYgd2ViUHJvY2VzcyA9IFdlYlBy
b2Nlc3M6OnNpbmdsZXRvbigpOwotICAgIGlmICh3ZWJQcm9jZXNzLnVzZXNOZXR3b3JrUHJvY2Vz
cygpKSB7Ci0gICAgICAgIFN0cmluZyByZXN1bHQ7Ci0gICAgICAgIGlmICghd2ViUHJvY2Vzcy5u
ZXR3b3JrQ29ubmVjdGlvbigpLT5jb25uZWN0aW9uKCktPnNlbmRTeW5jKE1lc3NhZ2VzOjpOZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Q29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUo
U2Vzc2lvblRyYWNrZXI6OnNlc3Npb25JRChzZXNzaW9uKSwgZmlyc3RQYXJ0eSwgdXJsKSwgTWVz
c2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpDb29raWVSZXF1ZXN0SGVhZGVy
RmllbGRWYWx1ZTo6UmVwbHkocmVzdWx0KSwgMCkpCi0gICAgICAgICAgICByZXR1cm4gU3RyaW5n
KCk7Ci0gICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAgfQotI2VuZGlmCi0KLSAgICByZXR1cm4g
V2ViQ29yZTo6Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoc2Vzc2lvbiwgZmlyc3RQYXJ0
eSwgdXJsKTsKKyAgICBTdHJpbmcgcmVzdWx0OworICAgIGlmICghV2ViUHJvY2Vzczo6c2luZ2xl
dG9uKCkubmV0d29ya0Nvbm5lY3Rpb24oKS0+Y29ubmVjdGlvbigpLT5zZW5kU3luYyhNZXNzYWdl
czo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkNvb2tpZVJlcXVlc3RIZWFkZXJGaWVs
ZFZhbHVlKFNlc3Npb25UcmFja2VyOjpzZXNzaW9uSUQoc2Vzc2lvbiksIGZpcnN0UGFydHksIHVy
bCksIE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Q29va2llUmVxdWVz
dEhlYWRlckZpZWxkVmFsdWU6OlJlcGx5KHJlc3VsdCksIDApKQorICAgICAgICByZXR1cm4gU3Ry
aW5nKCk7CisgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAogYm9vbCBXZWJQbGF0Zm9ybVN0cmF0ZWdp
ZXM6OmdldFJhd0Nvb2tpZXMoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBj
b25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFVSTCYgdXJsLCBWZWN0b3I8Q29va2llPiYgcmF3
Q29va2llcykKIHsKLSNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQotICAgIGF1dG8mIHdlYlBy
b2Nlc3MgPSBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKTsKLSAgICBpZiAod2ViUHJvY2Vzcy51c2Vz
TmV0d29ya1Byb2Nlc3MoKSkgewotICAgICAgICBpZiAoIXdlYlByb2Nlc3MubmV0d29ya0Nvbm5l
Y3Rpb24oKS0+Y29ubmVjdGlvbigpLT5zZW5kU3luYyhNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3M6OkdldFJhd0Nvb2tpZXMoU2Vzc2lvblRyYWNrZXI6OnNlc3Npb25JRChz
ZXNzaW9uKSwgZmlyc3RQYXJ0eSwgdXJsKSwgTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzOjpHZXRSYXdDb29raWVzOjpSZXBseShyYXdDb29raWVzKSwgMCkpCi0gICAgICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLSNlbmRpZgot
Ci0gICAgcmV0dXJuIFdlYkNvcmU6OmdldFJhd0Nvb2tpZXMoc2Vzc2lvbiwgZmlyc3RQYXJ0eSwg
dXJsLCByYXdDb29raWVzKTsKKyAgICBpZiAoIVdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLm5ldHdv
cmtDb25uZWN0aW9uKCktPmNvbm5lY3Rpb24oKS0+c2VuZFN5bmMoTWVzc2FnZXM6Ok5ldHdvcmtD
b25uZWN0aW9uVG9XZWJQcm9jZXNzOjpHZXRSYXdDb29raWVzKFNlc3Npb25UcmFja2VyOjpzZXNz
aW9uSUQoc2Vzc2lvbiksIGZpcnN0UGFydHksIHVybCksIE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2Vzczo6R2V0UmF3Q29va2llczo6UmVwbHkocmF3Q29va2llcyksIDApKQor
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuIHRydWU7CiB9CiAKIHZvaWQgV2ViUGxh
dGZvcm1TdHJhdGVnaWVzOjpkZWxldGVDb29raWUoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9u
JiBzZXNzaW9uLCBjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBjb29raWVOYW1lKQogewot
I2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCi0gICAgYXV0byYgd2ViUHJvY2VzcyA9IFdlYlBy
b2Nlc3M6OnNpbmdsZXRvbigpOwotICAgIGlmICh3ZWJQcm9jZXNzLnVzZXNOZXR3b3JrUHJvY2Vz
cygpKSB7Ci0gICAgICAgIHdlYlByb2Nlc3MubmV0d29ya0Nvbm5lY3Rpb24oKS0+Y29ubmVjdGlv
bigpLT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6RGVsZXRl
Q29va2llKFNlc3Npb25UcmFja2VyOjpzZXNzaW9uSUQoc2Vzc2lvbiksIHVybCwgY29va2llTmFt
ZSksIDApOwotICAgICAgICByZXR1cm47Ci0gICAgfQotI2VuZGlmCi0KLSAgICBXZWJDb3JlOjpk
ZWxldGVDb29raWUoc2Vzc2lvbiwgdXJsLCBjb29raWVOYW1lKTsKKyAgICBXZWJQcm9jZXNzOjpz
aW5nbGV0b24oKS5uZXR3b3JrQ29ubmVjdGlvbigpLT5jb25uZWN0aW9uKCktPnNlbmQoTWVzc2Fn
ZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpEZWxldGVDb29raWUoU2Vzc2lvblRy
YWNrZXI6OnNlc3Npb25JRChzZXNzaW9uKSwgdXJsLCBjb29raWVOYW1lKSwgMCk7CiB9CiAKIC8v
IExvYWRlclN0cmF0ZWd5CiAKLSNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQogUmVzb3VyY2VM
b2FkU2NoZWR1bGVyKiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnJlc291cmNlTG9hZFNjaGVkdWxl
cigpCiB7Ci0gICAgc3RhdGljIFJlc291cmNlTG9hZFNjaGVkdWxlciogc2NoZWR1bGVyOwotICAg
IGlmICghc2NoZWR1bGVyKSB7Ci0gICAgICAgIGF1dG8mIHdlYlByb2Nlc3MgPSBXZWJQcm9jZXNz
OjpzaW5nbGV0b24oKTsKLSAgICAgICAgaWYgKHdlYlByb2Nlc3MudXNlc05ldHdvcmtQcm9jZXNz
KCkpCi0gICAgICAgICAgICBzY2hlZHVsZXIgPSAmd2ViUHJvY2Vzcy53ZWJSZXNvdXJjZUxvYWRT
Y2hlZHVsZXIoKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgc2NoZWR1bGVyID0gV2ViQ29y
ZTo6cmVzb3VyY2VMb2FkU2NoZWR1bGVyKCk7Ci0gICAgfQotICAgIAotICAgIHJldHVybiBzY2hl
ZHVsZXI7CisgICAgcmV0dXJuICZXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS53ZWJSZXNvdXJjZUxv
YWRTY2hlZHVsZXIoKTsKIH0KIAogdm9pZCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmxvYWRSZXNv
dXJjZVN5bmNocm9ub3VzbHkoTmV0d29ya2luZ0NvbnRleHQqIGNvbnRleHQsIHVuc2lnbmVkIGxv
bmcgcmVzb3VyY2VMb2FkSWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0
LCBTdG9yZWRDcmVkZW50aWFscyBzdG9yZWRDcmVkZW50aWFscywgQ2xpZW50Q3JlZGVudGlhbFBv
bGljeSBjbGllbnRDcmVkZW50aWFsUG9saWN5LCBSZXNvdXJjZUVycm9yJiBlcnJvciwgUmVzb3Vy
Y2VSZXNwb25zZSYgcmVzcG9uc2UsIFZlY3RvcjxjaGFyPiYgZGF0YSkKIHsKLSAgICBhdXRvJiB3
ZWJQcm9jZXNzID0gV2ViUHJvY2Vzczo6c2luZ2xldG9uKCk7Ci0gICAgaWYgKCF3ZWJQcm9jZXNz
LnVzZXNOZXR3b3JrUHJvY2VzcygpKSB7Ci0gICAgICAgIExvYWRlclN0cmF0ZWd5Ojpsb2FkUmVz
b3VyY2VTeW5jaHJvbm91c2x5KGNvbnRleHQsIHJlc291cmNlTG9hZElkZW50aWZpZXIsIHJlcXVl
c3QsIHN0b3JlZENyZWRlbnRpYWxzLCBjbGllbnRDcmVkZW50aWFsUG9saWN5LCBlcnJvciwgcmVz
cG9uc2UsIGRhdGEpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCiAgICAgV2ViRnJhbWVOZXR3
b3JraW5nQ29udGV4dCogd2ViQ29udGV4dCA9IHN0YXRpY19jYXN0PFdlYkZyYW1lTmV0d29ya2lu
Z0NvbnRleHQqPihjb250ZXh0KTsKICAgICAvLyBGSVhNRTogU29tZSBlbnRpdGllcyBpbiBXZWJD
b3JlIHVzZSBXZWJDb3JlJ3MgIkVtcHR5RnJhbWVMb2FkZXJDbGllbnQiIGluc3RlYWQgb2YgaGF2
aW5nIGEgcHJvcGVyIFdlYkZyYW1lTG9hZGVyQ2xpZW50LgogICAgIC8vIEVtcHR5RnJhbWVMb2Fk
ZXJDbGllbnQgc2hvdWxkbid0IGV4aXN0IGFuZCBldmVyeXRoaW5nIHNob3VsZCBiZSB1c2luZyBh
IFdlYkZyYW1lTG9hZGVyQ2xpZW50LApAQCAtMjQzLDcgKzE4Miw3IEBAIHZvaWQgV2ViUGxhdGZv
cm1TdHJhdGVnaWVzOjpsb2FkUmVzb3VyY2UKIAogICAgIEhhbmdEZXRlY3Rpb25EaXNhYmxlciBo
YW5nRGV0ZWN0aW9uRGlzYWJsZXI7CiAKLSAgICBpZiAoIXdlYlByb2Nlc3MubmV0d29ya0Nvbm5l
Y3Rpb24oKS0+Y29ubmVjdGlvbigpLT5zZW5kU3luYyhNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3M6OlBlcmZvcm1TeW5jaHJvbm91c0xvYWQobG9hZFBhcmFtZXRlcnMpLCBN
ZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OlBlcmZvcm1TeW5jaHJvbm91
c0xvYWQ6OlJlcGx5KGVycm9yLCByZXNwb25zZSwgZGF0YSksIDApKSB7CisgICAgaWYgKCFXZWJQ
cm9jZXNzOjpzaW5nbGV0b24oKS5uZXR3b3JrQ29ubmVjdGlvbigpLT5jb25uZWN0aW9uKCktPnNl
bmRTeW5jKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6UGVyZm9ybVN5
bmNocm9ub3VzTG9hZChsb2FkUGFyYW1ldGVycyksIE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2Vzczo6UGVyZm9ybVN5bmNocm9ub3VzTG9hZDo6UmVwbHkoZXJyb3IsIHJlc3Bv
bnNlLCBkYXRhKSwgMCkpIHsKICAgICAgICAgcmVzcG9uc2UgPSBSZXNvdXJjZVJlc3BvbnNlKCk7
CiAgICAgICAgIGVycm9yID0gaW50ZXJuYWxFcnJvcihyZXF1ZXN0LnVybCgpKTsKICAgICB9CkBA
IC0yNTYsMTIgKzE5NSw2IEBAIHZvaWQgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjcmVhdGVQaW5n
SGEKICAgICBpZiAoIW5ldHdvcmtpbmdDb250ZXh0KQogICAgICAgICByZXR1cm47CiAKLSAgICBh
dXRvJiB3ZWJQcm9jZXNzID0gV2ViUHJvY2Vzczo6c2luZ2xldG9uKCk7Ci0gICAgaWYgKCF3ZWJQ
cm9jZXNzLnVzZXNOZXR3b3JrUHJvY2VzcygpKSB7Ci0gICAgICAgIExvYWRlclN0cmF0ZWd5Ojpj
cmVhdGVQaW5nSGFuZGxlKG5ldHdvcmtpbmdDb250ZXh0LCByZXF1ZXN0LCBzaG91bGRVc2VDcmVk
ZW50aWFsU3RvcmFnZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KICAgICBXZWJGcmFtZU5l
dHdvcmtpbmdDb250ZXh0KiB3ZWJDb250ZXh0ID0gc3RhdGljX2Nhc3Q8V2ViRnJhbWVOZXR3b3Jr
aW5nQ29udGV4dCo+KG5ldHdvcmtpbmdDb250ZXh0KTsKICAgICBXZWJGcmFtZUxvYWRlckNsaWVu
dCogd2ViRnJhbWVMb2FkZXJDbGllbnQgPSB3ZWJDb250ZXh0LT53ZWJGcmFtZUxvYWRlckNsaWVu
dCgpOwogICAgIFdlYkZyYW1lKiB3ZWJGcmFtZSA9IHdlYkZyYW1lTG9hZGVyQ2xpZW50ID8gd2Vi
RnJhbWVMb2FkZXJDbGllbnQtPndlYkZyYW1lKCkgOiBudWxscHRyOwpAQCAtMjczLDE2ICsyMDYs
MTMgQEAgdm9pZCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNyZWF0ZVBpbmdIYQogICAgIGxvYWRQ
YXJhbWV0ZXJzLmFsbG93U3RvcmVkQ3JlZGVudGlhbHMgPSBzaG91bGRVc2VDcmVkZW50aWFsU3Rv
cmFnZSA/IEFsbG93U3RvcmVkQ3JlZGVudGlhbHMgOiBEb05vdEFsbG93U3RvcmVkQ3JlZGVudGlh
bHM7CiAgICAgbG9hZFBhcmFtZXRlcnMuc2hvdWxkQ2xlYXJSZWZlcnJlck9uSFRUUFNUb0hUVFBS
ZWRpcmVjdCA9IG5ldHdvcmtpbmdDb250ZXh0LT5zaG91bGRDbGVhclJlZmVycmVyT25IVFRQU1Rv
SFRUUFJlZGlyZWN0KCk7CiAKLSAgICB3ZWJQcm9jZXNzLm5ldHdvcmtDb25uZWN0aW9uKCktPmNv
bm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6
OkxvYWRQaW5nKGxvYWRQYXJhbWV0ZXJzKSwgMCk7CisgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9u
KCkubmV0d29ya0Nvbm5lY3Rpb24oKS0+Y29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpOZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6TG9hZFBpbmcobG9hZFBhcmFtZXRlcnMpLCAwKTsK
IH0KIAogQmxvYlJlZ2lzdHJ5KiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNyZWF0ZUJsb2JSZWdp
c3RyeSgpCiB7Ci0gICAgaWYgKCFXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS51c2VzTmV0d29ya1By
b2Nlc3MoKSkKLSAgICAgICAgcmV0dXJuIExvYWRlclN0cmF0ZWd5OjpjcmVhdGVCbG9iUmVnaXN0
cnkoKTsKICAgICByZXR1cm4gbmV3IEJsb2JSZWdpc3RyeVByb3h5OyAgICAKIH0KLSNlbmRpZgog
CiAvLyBQbHVnaW5TdHJhdGVneQogCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVz
LmgJKHJldmlzaW9uIDE5MjYwMSkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTU5LDEy
ICs1OSwxMCBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBkZWxldGVDb29raWUoY29uc3Qg
V2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgV2ViQ29yZTo6VVJMJiwgY29u
c3QgU3RyaW5nJikgb3ZlcnJpZGU7CiAKICAgICAvLyBXZWJDb3JlOjpMb2FkZXJTdHJhdGVneQot
I2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCiAgICAgdmlydHVhbCBXZWJDb3JlOjpSZXNvdXJj
ZUxvYWRTY2hlZHVsZXIqIHJlc291cmNlTG9hZFNjaGVkdWxlcigpIG92ZXJyaWRlOwogICAgIHZp
cnR1YWwgdm9pZCBsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KFdlYkNvcmU6Ok5ldHdvcmtpbmdD
b250ZXh0KiwgdW5zaWduZWQgbG9uZyByZXNvdXJjZUxvYWRJZGVudGlmaWVyLCBjb25zdCBXZWJD
b3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBXZWJDb3JlOjpTdG9yZWRDcmVkZW50aWFscywgV2ViQ29y
ZTo6Q2xpZW50Q3JlZGVudGlhbFBvbGljeSwgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYsIFdlYkNv
cmU6OlJlc291cmNlUmVzcG9uc2UmLCBWZWN0b3I8Y2hhcj4mIGRhdGEpIG92ZXJyaWRlOwogICAg
IHZpcnR1YWwgV2ViQ29yZTo6QmxvYlJlZ2lzdHJ5KiBjcmVhdGVCbG9iUmVnaXN0cnkoKSBvdmVy
cmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgY3JlYXRlUGluZ0hhbmRsZShXZWJDb3JlOjpOZXR3b3Jr
aW5nQ29udGV4dCosIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGJvb2wgc2hvdWxkVXNlQ3Jl
ZGVudGlhbFN0b3JhZ2UpIG92ZXJyaWRlOwotI2VuZGlmCiAKICAgICAvLyBXZWJDb3JlOjpQbHVn
aW5TdHJhdGVneQogICAgIHZpcnR1YWwgdm9pZCByZWZyZXNoUGx1Z2lucygpIG92ZXJyaWRlOwpJ
bmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3Bw
CShyZXZpc2lvbiAxOTI2MDEpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViRnJhbWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMywxMCArMzMsMTMgQEAKICNpbmNsdWRl
ICJJbmplY3RlZEJ1bmRsZU5vZGVIYW5kbGUuaCIKICNpbmNsdWRlICJJbmplY3RlZEJ1bmRsZVJh
bmdlSGFuZGxlLmgiCiAjaW5jbHVkZSAiSW5qZWN0ZWRCdW5kbGVTY3JpcHRXb3JsZC5oIgorI2lu
Y2x1ZGUgIk5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzTWVzc2FnZXMuaCIKKyNpbmNsdWRl
ICJOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uaCIKICNpbmNsdWRlICJQbHVnaW5WaWV3LmgiCiAj
aW5jbHVkZSAiV0tBUElDYXN0LmgiCiAjaW5jbHVkZSAiV0tCdW5kbGVBUElDYXN0LmgiCiAjaW5j
bHVkZSAiV2ViQ2hyb21lQ2xpZW50LmgiCisjaW5jbHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJz
LmgiCiAjaW5jbHVkZSAiV2ViRG9jdW1lbnRMb2FkZXIuaCIKICNpbmNsdWRlICJXZWJQYWdlLmgi
CiAjaW5jbHVkZSAiV2ViUGFnZVByb3h5TWVzc2FnZXMuaCIKQEAgLTgxLDEyICs4NCw2IEBACiAj
aW5jbHVkZSA8V2ViQ29yZS9MZWdhY3lXZWJBcmNoaXZlLmg+CiAjZW5kaWYKIAotI2lmIEVOQUJM
RShORVRXT1JLX1BST0NFU1MpCi0jaW5jbHVkZSAiTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3NNZXNzYWdlcy5oIgotI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5oIgotI2lu
Y2x1ZGUgIldlYkNvcmVBcmd1bWVudENvZGVycy5oIgotI2VuZGlmCi0KICNpZm5kZWYgTkRFQlVH
CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWRMZWFrQ291bnRlci5oPgogI2VuZGlmCkBAIC0yNTcs
MjMgKzI1NCw5IEBAIHZvaWQgV2ViRnJhbWU6OnN0YXJ0RG93bmxvYWQoY29uc3QgV2ViQ28KICAg
ICBtX3BvbGljeURvd25sb2FkSUQgPSAwOwogCiAgICAgYXV0byYgd2ViUHJvY2VzcyA9IFdlYlBy
b2Nlc3M6OnNpbmdsZXRvbigpOwotI2lmIFVTRShORVRXT1JLX1NFU1NJT04pCi0gICAgQVNTRVJU
KHdlYlByb2Nlc3MudXNlc05ldHdvcmtQcm9jZXNzKCkpOwotI2VuZGlmCiAgICAgU2Vzc2lvbklE
IHNlc3Npb25JRCA9IHBhZ2UoKSA/IHBhZ2UoKS0+c2Vzc2lvbklEKCkgOiBTZXNzaW9uSUQ6OmRl
ZmF1bHRTZXNzaW9uSUQoKTsKLSNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQotICAgIGlmICh3
ZWJQcm9jZXNzLnVzZXNOZXR3b3JrUHJvY2VzcygpKSB7Ci0gICAgICAgIHdlYlByb2Nlc3MubmV0
d29ya0Nvbm5lY3Rpb24oKS0+Y29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2Vzczo6U3RhcnREb3dubG9hZChzZXNzaW9uSUQsIHBvbGljeURvd25s
b2FkSUQsIHJlcXVlc3QpLCAwKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSNlbmRpZgotCi0j
aWYgVVNFKE5FVFdPUktfU0VTU0lPTikKLSAgICAvLyBVc2luZyBORVRXT1JLX1NFU1NJT04gcmVx
dWlyZXMgdGhlIHVzZSBvZiBhIG5ldHdvcmsgcHJvY2Vzcy4KLSAgICBSRUxFQVNFX0FTU0VSVF9O
T1RfUkVBQ0hFRCgpOwotI2Vsc2UKLSAgICB3ZWJQcm9jZXNzLmRvd25sb2FkTWFuYWdlcigpLnN0
YXJ0RG93bmxvYWQoc2Vzc2lvbklELCBwb2xpY3lEb3dubG9hZElELCByZXF1ZXN0KTsKLSNlbmRp
ZgorICAgIHdlYlByb2Nlc3MubmV0d29ya0Nvbm5lY3Rpb24oKS0+Y29ubmVjdGlvbigpLT5zZW5k
KE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6U3RhcnREb3dubG9hZChz
ZXNzaW9uSUQsIHBvbGljeURvd25sb2FkSUQsIHJlcXVlc3QpLCAwKTsKKyAgICByZXR1cm47CiB9
CiAKIHZvaWQgV2ViRnJhbWU6OmNvbnZlcnRNYWluUmVzb3VyY2VMb2FkVG9Eb3dubG9hZChEb2N1
bWVudExvYWRlciogZG9jdW1lbnRMb2FkZXIsIFNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFJl
c291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2Up
CkBAIC0yODYsMzkgKzI2OSwxMiBAQCB2b2lkIFdlYkZyYW1lOjpjb252ZXJ0TWFpblJlc291cmNl
TG9hZFRvCiAgICAgU3VicmVzb3VyY2VMb2FkZXIqIG1haW5SZXNvdXJjZUxvYWRlciA9IGRvY3Vt
ZW50TG9hZGVyLT5tYWluUmVzb3VyY2VMb2FkZXIoKTsKIAogICAgIGF1dG8mIHdlYlByb2Nlc3Mg
PSBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKTsKLSNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQot
I2lmIFVTRShORVRXT1JLX1NFU1NJT04pCi0gICAgQVNTRVJUKHdlYlByb2Nlc3MudXNlc05ldHdv
cmtQcm9jZXNzKCkpOwotI2VuZGlmCi0gICAgaWYgKHdlYlByb2Nlc3MudXNlc05ldHdvcmtQcm9j
ZXNzKCkpIHsKLSAgICAgICAgLy8gVXNlIDAgdG8gaW5kaWNhdGUgdGhhdCB0aGUgcmVzb3VyY2Ug
bG9hZCBjYW4ndCBiZSBjb252ZXJ0ZWQgYW5kIGEgbmV3IGRvd25sb2FkIG11c3QgYmUgc3RhcnRl
ZC4KLSAgICAgICAgLy8gVGhpcyBjYW4gaGFwcGVuIGlmIHRoZXJlIGlzIG5vIGxvYWRlciBiZWNh
dXNlIHRoZSBtYWluIHJlc291cmNlIGlzIGluIHRoZSBXZWJDb3JlIG1lbW9yeSBjYWNoZSwKLSAg
ICAgICAgLy8gb3IgYmVjYXVzZSB0aGUgY29udmVyc2lvbiB3YXMgYXR0ZW1wdGVkIHdoZW4gbm90
IGNhbGxpbmcgU3VicmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVSZXNwb25zZSgpLgotICAgICAg
ICB1aW50NjRfdCBtYWluUmVzb3VyY2VMb2FkSWRlbnRpZmllcjsKLSAgICAgICAgaWYgKG1haW5S
ZXNvdXJjZUxvYWRlcikKLSAgICAgICAgICAgIG1haW5SZXNvdXJjZUxvYWRJZGVudGlmaWVyID0g
bWFpblJlc291cmNlTG9hZGVyLT5pZGVudGlmaWVyKCk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAg
ICAgIG1haW5SZXNvdXJjZUxvYWRJZGVudGlmaWVyID0gMDsKLQotICAgICAgICB3ZWJQcm9jZXNz
Lm5ldHdvcmtDb25uZWN0aW9uKCktPmNvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6TmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkNvbnZlcnRNYWluUmVzb3VyY2VMb2FkVG9Eb3dubG9h
ZChzZXNzaW9uSUQsIG1haW5SZXNvdXJjZUxvYWRJZGVudGlmaWVyLCBwb2xpY3lEb3dubG9hZElE
LCByZXF1ZXN0LCByZXNwb25zZSksIDApOwotICAgICAgICByZXR1cm47Ci0gICAgfQotI2VuZGlm
Ci0KLSAgICBpZiAoIW1haW5SZXNvdXJjZUxvYWRlcikgewotICAgICAgICAvLyBUaGUgbWFpbiBy
ZXNvdXJjZSBoYXMgYWxyZWFkeSBiZWVuIGxvYWRlZC4gU3RhcnQgYSBuZXcgZG93bmxvYWQgaW5z
dGVhZC4KLSNpZiAhVVNFKE5FVFdPUktfU0VTU0lPTikKLSAgICAgICAgd2ViUHJvY2Vzcy5kb3du
bG9hZE1hbmFnZXIoKS5zdGFydERvd25sb2FkKHNlc3Npb25JRCwgcG9saWN5RG93bmxvYWRJRCwg
cmVxdWVzdCk7Ci0jZW5kaWYKLSAgICAgICAgcmV0dXJuOwotICAgIH0KKyAgICAvLyBVc2UgMCB0
byBpbmRpY2F0ZSB0aGF0IHRoZSByZXNvdXJjZSBsb2FkIGNhbid0IGJlIGNvbnZlcnRlZCBhbmQg
YSBuZXcgZG93bmxvYWQgbXVzdCBiZSBzdGFydGVkLgorICAgIC8vIFRoaXMgY2FuIGhhcHBlbiBp
ZiB0aGVyZSBpcyBubyBsb2FkZXIgYmVjYXVzZSB0aGUgbWFpbiByZXNvdXJjZSBpcyBpbiB0aGUg
V2ViQ29yZSBtZW1vcnkgY2FjaGUsCisgICAgLy8gb3IgYmVjYXVzZSB0aGUgY29udmVyc2lvbiB3
YXMgYXR0ZW1wdGVkIHdoZW4gbm90IGNhbGxpbmcgU3VicmVzb3VyY2VMb2FkZXI6OmRpZFJlY2Vp
dmVSZXNwb25zZSgpLgorICAgIHVpbnQ2NF90IG1haW5SZXNvdXJjZUxvYWRJZGVudGlmaWVyID0g
bWFpblJlc291cmNlTG9hZGVyID8gbWFpblJlc291cmNlTG9hZGVyLT5pZGVudGlmaWVyKCkgOiAw
OwogCi0jaWYgVVNFKE5FVFdPUktfU0VTU0lPTikKLSAgICAvLyBVc2luZyBORVRXT1JLX1NFU1NJ
T04gcmVxdWlyZXMgdGhlIHVzZSBvZiBhIG5ldHdvcmsgcHJvY2Vzcy4KLSAgICBSRUxFQVNFX0FT
U0VSVF9OT1RfUkVBQ0hFRCgpOwotI2Vsc2UKLSAgICB3ZWJQcm9jZXNzLmRvd25sb2FkTWFuYWdl
cigpLmNvbnZlcnRIYW5kbGVUb0Rvd25sb2FkKHBvbGljeURvd25sb2FkSUQsIGRvY3VtZW50TG9h
ZGVyLT5tYWluUmVzb3VyY2VMb2FkZXIoKS0+aGFuZGxlKCksIHJlcXVlc3QsIHJlc3BvbnNlKTsK
LSNlbmRpZgorICAgIHdlYlByb2Nlc3MubmV0d29ya0Nvbm5lY3Rpb24oKS0+Y29ubmVjdGlvbigp
LT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Q29udmVydE1h
aW5SZXNvdXJjZUxvYWRUb0Rvd25sb2FkKHNlc3Npb25JRCwgbWFpblJlc291cmNlTG9hZElkZW50
aWZpZXIsIHBvbGljeURvd25sb2FkSUQsIHJlcXVlc3QsIHJlc3BvbnNlKSwgMCk7CiB9CiAKIFN0
cmluZyBXZWJGcmFtZTo6c291cmNlKCkgY29uc3QKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3Mvc291cC9XZWJQcm9jZXNzU291cC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9zb3VwL1dlYlByb2Nlc3NTb3VwLmNwcAkocmV2aXNpb24gMTkyNjAxKQor
KysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9zb3VwL1dlYlByb2Nlc3NTb3VwLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNzUsMTEgKzc1LDYgQEAgdm9pZCBXZWJQcm9jZXNzOjpwbGF0Zm9ybVNl
dENhY2hlTW9kZWwoQwogICAgIHVpbnQ2NF90IGRpc2tGcmVlU2l6ZSA9IDA7CiAgICAgU291cENh
Y2hlKiBjYWNoZSA9IG51bGxwdHI7CiAKLSAgICBpZiAoIXVzZXNOZXR3b3JrUHJvY2VzcygpKSB7
Ci0gICAgICAgIGNhY2hlID0gV2ViQ29yZTo6U291cE5ldHdvcmtTZXNzaW9uOjpkZWZhdWx0U2Vz
c2lvbigpLmNhY2hlKCk7Ci0gICAgICAgIGRpc2tGcmVlU2l6ZSA9IGdldENhY2hlRGlza0ZyZWVT
aXplKGNhY2hlKSAvIFdURjo6TUI7Ci0gICAgfQotCiAgICAgdWludDY0X3QgbWVtU2l6ZSA9IFdU
Rjo6cmFtU2l6ZSgpIC8gV1RGOjpNQjsKICAgICBjYWxjdWxhdGVDYWNoZVNpemVzKGNhY2hlTW9k
ZWwsIG1lbVNpemUsIGRpc2tGcmVlU2l6ZSwKICAgICAgICAgICAgICAgICAgICAgICAgIGNhY2hl
VG90YWxDYXBhY2l0eSwgY2FjaGVNaW5EZWFkQ2FwYWNpdHksIGNhY2hlTWF4RGVhZENhcGFjaXR5
LCBkZWFkRGVjb2RlZERhdGFEZWxldGlvbkludGVydmFsLApAQCAtOTQsMjMgKzg5LDEwIEBAIHZv
aWQgV2ViUHJvY2Vzczo6cGxhdGZvcm1TZXRDYWNoZU1vZGVsKEMKICNpZiBQTEFURk9STShHVEsp
CiAgICAgV2ViQ29yZTo6UGFnZUNhY2hlOjpzaW5nbGV0b24oKS5zZXRTaG91bGRDbGVhckJhY2tp
bmdTdG9yZXModHJ1ZSk7CiAjZW5kaWYKLQotICAgIGlmICghdXNlc05ldHdvcmtQcm9jZXNzKCkp
IHsKLSAgICAgICAgaWYgKHVybENhY2hlRGlza0NhcGFjaXR5ID4gc291cF9jYWNoZV9nZXRfbWF4
X3NpemUoY2FjaGUpKQotICAgICAgICAgICAgc291cF9jYWNoZV9zZXRfbWF4X3NpemUoY2FjaGUs
IHVybENhY2hlRGlza0NhcGFjaXR5KTsKLSAgICB9CiB9CiAKIHZvaWQgV2ViUHJvY2Vzczo6cGxh
dGZvcm1DbGVhclJlc291cmNlQ2FjaGVzKFJlc291cmNlQ2FjaGVzVG9DbGVhciBjYWNoZXNUb0Ns
ZWFyKQogewotICAgIGlmIChjYWNoZXNUb0NsZWFyID09IEluTWVtb3J5UmVzb3VyY2VDYWNoZXNP
bmx5KQotICAgICAgICByZXR1cm47Ci0KLSAgICAvLyBJZiB3ZSdyZSB1c2luZyB0aGUgbmV0d29y
ayBwcm9jZXNzIHRoZW4gaXQgaXMgdGhlIG9ubHkgb25lIHRoYXQgbmVlZHMgdG8gY2xlYXIgdGhl
IGRpc2sgY2FjaGUuCi0gICAgaWYgKHVzZXNOZXR3b3JrUHJvY2VzcygpKQotICAgICAgICByZXR1
cm47Ci0KLSAgICBzb3VwX2NhY2hlX2NsZWFyKFdlYkNvcmU6OlNvdXBOZXR3b3JrU2Vzc2lvbjo6
ZGVmYXVsdFNlc3Npb24oKS5jYWNoZSgpKTsKIH0KIAogc3RhdGljIHZvaWQgc2V0U291cFNlc3Np
b25BY2NlcHRMYW5ndWFnZShjb25zdCBWZWN0b3I8U3RyaW5nPiYgbGFuZ3VhZ2VzKQpAQCAtMTM1
LDYyICsxMTcsMTggQEAgdm9pZCBXZWJQcm9jZXNzOjpwbGF0Zm9ybUluaXRpYWxpemVXZWJQcgog
ICAgICAgICBzZWNjb21wRmlsdGVycy5pbml0aWFsaXplKCk7CiAgICAgfQogI2VuZGlmCi0KLSAg
ICBpZiAodXNlc05ldHdvcmtQcm9jZXNzKCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIEFTU0VS
VCghcGFyYW1ldGVycy5kaXNrQ2FjaGVEaXJlY3RvcnkuaXNFbXB0eSgpKTsKLQotICAgIC8vIFdl
IHVzZWQgdG8gdXNlIHRoZSBnaXZlbiBjYWNoZSBkaXJlY3RvcnkgZm9yIHRoZSBzb3VwIGNhY2hl
LCBidXQgbm93IHdlIHVzZSBhIHN1YmRpcmVjdG9yeSB0byBhdm9pZAotICAgIC8vIGNvbmZsaWN0
cyB3aXRoIG90aGVyIGNhY2hlIGZpbGVzIGluIHRoZSBzYW1lIGRpcmVjdG9yeS4gUmVtb3ZlIHRo
ZSBvbGQgY2FjaGUgZmlsZXMgaWYgdGhleSBzdGlsbCBleGlzdC4KLSAgICBXZWJDb3JlOjpTb3Vw
TmV0d29ya1Nlc3Npb246OmRlZmF1bHRTZXNzaW9uKCkuY2xlYXJDYWNoZShXZWJDb3JlOjpkaXJl
Y3RvcnlOYW1lKHBhcmFtZXRlcnMuZGlza0NhY2hlRGlyZWN0b3J5KSk7Ci0KLSNpZiBFTkFCTEUo
TkVUV09SS19DQUNIRSkKLSAgICAvLyBXaGVuIG5ldHdvcmsgY2FjaGUgaXMgZW5hYmxlZCwgdGhl
IGRpc2sgY2FjaGUgZGlyZWN0b3J5IGlzIHRoZSBuZXR3b3JrIHByb2Nlc3Mgb25lLgotICAgIENT
dHJpbmcgZGlza0NhY2hlUGF0aCA9IFdlYkNvcmU6OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChX
ZWJDb3JlOjpkaXJlY3RvcnlOYW1lKHBhcmFtZXRlcnMuZGlza0NhY2hlRGlyZWN0b3J5KSwgIndl
YmtpdCIpLnV0ZjgoKTsKLSNlbHNlCi0gICAgQ1N0cmluZyBkaXNrQ2FjaGVQYXRoID0gcGFyYW1l
dGVycy5kaXNrQ2FjaGVEaXJlY3RvcnkudXRmOCgpOwotI2VuZGlmCi0KLSAgICBHUmVmUHRyPFNv
dXBDYWNoZT4gc291cENhY2hlID0gYWRvcHRHUmVmKHNvdXBfY2FjaGVfbmV3KGRpc2tDYWNoZVBh
dGguZGF0YSgpLCBTT1VQX0NBQ0hFX1NJTkdMRV9VU0VSKSk7Ci0gICAgV2ViQ29yZTo6U291cE5l
dHdvcmtTZXNzaW9uOjpkZWZhdWx0U2Vzc2lvbigpLnNldENhY2hlKHNvdXBDYWNoZS5nZXQoKSk7
Ci0gICAgLy8gU2V0IGFuIGluaXRpYWwgaHVnZSBtYXhfc2l6ZSBmb3IgdGhlIFNvdXBDYWNoZSBz
byB0aGUgY2FsbCB0byBzb3VwX2NhY2hlX2xvYWQoKSB3b24ndCBldmljdCBhbnkgY2FjaGVkCi0g
ICAgLy8gcmVzb3VyY2UuIFRoZSBmaW5hbCBzaXplIG9mIHRoZSBjYWNoZSB3aWxsIGJlIHNldCBi
eSBOZXR3b3JrUHJvY2Vzczo6cGxhdGZvcm1TZXRDYWNoZU1vZGVsKCkuCi0gICAgdW5zaWduZWQg
aW5pdGlhbE1heFNpemUgPSBzb3VwX2NhY2hlX2dldF9tYXhfc2l6ZShzb3VwQ2FjaGUuZ2V0KCkp
OwotICAgIHNvdXBfY2FjaGVfc2V0X21heF9zaXplKHNvdXBDYWNoZS5nZXQoKSwgR19NQVhVSU5U
KTsKLSAgICBzb3VwX2NhY2hlX2xvYWQoc291cENhY2hlLmdldCgpKTsKLSAgICBzb3VwX2NhY2hl
X3NldF9tYXhfc2l6ZShzb3VwQ2FjaGUuZ2V0KCksIGluaXRpYWxNYXhTaXplKTsKLQotICAgIGlm
ICghcGFyYW1ldGVycy5jb29raWVQZXJzaXN0ZW50U3RvcmFnZVBhdGguaXNFbXB0eSgpKSB7Ci0g
ICAgICAgIHN1cHBsZW1lbnQ8V2ViQ29va2llTWFuYWdlcj4oKS0+c2V0Q29va2llUGVyc2lzdGVu
dFN0b3JhZ2UocGFyYW1ldGVycy5jb29raWVQZXJzaXN0ZW50U3RvcmFnZVBhdGgsCi0gICAgICAg
ICAgICBwYXJhbWV0ZXJzLmNvb2tpZVBlcnNpc3RlbnRTdG9yYWdlVHlwZSk7Ci0gICAgfQotICAg
IHN1cHBsZW1lbnQ8V2ViQ29va2llTWFuYWdlcj4oKS0+c2V0SFRUUENvb2tpZUFjY2VwdFBvbGlj
eShwYXJhbWV0ZXJzLmNvb2tpZUFjY2VwdFBvbGljeSk7Ci0KLSAgICBpZiAoIXBhcmFtZXRlcnMu
bGFuZ3VhZ2VzLmlzRW1wdHkoKSkKLSAgICAgICAgc2V0U291cFNlc3Npb25BY2NlcHRMYW5ndWFn
ZShwYXJhbWV0ZXJzLmxhbmd1YWdlcyk7Ci0KLSAgICBzZXRJZ25vcmVUTFNFcnJvcnMocGFyYW1l
dGVycy5pZ25vcmVUTFNFcnJvcnMpOwotCi0gICAgV2ViQ29yZTo6YWRkTGFuZ3VhZ2VDaGFuZ2VP
YnNlcnZlcih0aGlzLCBsYW5ndWFnZUNoYW5nZWQpOwogfQogCiB2b2lkIFdlYlByb2Nlc3M6OnBs
YXRmb3JtVGVybWluYXRlKCkKIHsKLSAgICBpZiAoIXVzZXNOZXR3b3JrUHJvY2VzcygpKQotICAg
ICAgICBXZWJDb3JlOjpyZW1vdmVMYW5ndWFnZUNoYW5nZU9ic2VydmVyKHRoaXMpOwogfQogCiB2
b2lkIFdlYlByb2Nlc3M6OnNldElnbm9yZVRMU0Vycm9ycyhib29sIGlnbm9yZVRMU0Vycm9ycykK
IHsKLSAgICBBU1NFUlQoIXVzZXNOZXR3b3JrUHJvY2VzcygpKTsKLSAgICBXZWJDb3JlOjpSZXNv
dXJjZUhhbmRsZTo6c2V0SWdub3JlU1NMRXJyb3JzKGlnbm9yZVRMU0Vycm9ycyk7CiB9CiAKIHZv
aWQgV2ViUHJvY2Vzczo6YWxsb3dTcGVjaWZpY0hUVFBTQ2VydGlmaWNhdGVGb3JIb3N0KGNvbnN0
IFdlYkNvcmU6OkNlcnRpZmljYXRlSW5mbyYgY2VydGlmaWNhdGVJbmZvLCBjb25zdCBTdHJpbmcm
IGhvc3QpCiB7Ci0gICAgQVNTRVJUKCF1c2VzTmV0d29ya1Byb2Nlc3MoKSk7Ci0gICAgV2ViQ29y
ZTo6UmVzb3VyY2VIYW5kbGU6OnNldENsaWVudENlcnRpZmljYXRlKGhvc3QsIGNlcnRpZmljYXRl
SW5mby5jZXJ0aWZpY2F0ZSgpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>265909</attachid>
            <date>2015-11-19 15:20:59 -0800</date>
            <delta_ts>2015-11-19 15:31:03 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-151418-20151119152047.patch</filename>
            <type>text/plain</type>
            <size>168905</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IENoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBDaGFuZ2VMb2cJKHJldmlzaW9uIDE5MjYw
MSkKKysrIENoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE1IEBACisyMDE1LTEx
LTE5ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAg
ICAgUmVtb3ZlIHRoZSBub24tTmV0d29ya1Byb2Nlc3MgY29uZmlndXJhdGlvbnMKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MTQxOAorCisgICAgICAg
IFJldmlld2VkIGJ5IEdlb2ZmIEdhcmVuLgorCisgICAgICAgICogU291cmNlL2NtYWtlL09wdGlv
bnNFZmwuY21ha2U6CisgICAgICAgICogU291cmNlL2NtYWtlL09wdGlvbnNHVEsuY21ha2U6Cisg
ICAgICAgICogU291cmNlL2NtYWtlL09wdGlvbnNNYWMuY21ha2U6CisgICAgICAgICogU291cmNl
L2NtYWtlL1dlYktpdEZlYXR1cmVzLmNtYWtlOgorCiAyMDE1LTExLTE3ICBDYXJsb3MgR2FyY2lh
IENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KIAogICAgICAgICBSRUdSRVNTSU9OKHIxOTI0
NTkpOiBbR1RLXSBVc2VyIGFnZW50IHN0cmluZyBpcyBicm9rZW4gYWZ0ZXIgcjE5MjQ1OQpJbmRl
eDogU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQy
L0NoYW5nZUxvZwkocmV2aXNpb24gMTkyNjYwKQorKysgU291cmNlL1dlYktpdDIvQ2hhbmdlTG9n
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzEwIEBACisyMDE1LTExLTE5ICBBbGV4IENocmlz
dGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmVtb3ZlIHRoZSBu
b24tTmV0d29ya1Byb2Nlc3MgY29uZmlndXJhdGlvbnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MTQxOAorCisgICAgICAgIFJldmlld2VkIGJ5IEdl
b2ZmIEdhcmVuLgorCisgICAgICAgIFRoaXMgcGF0Y2ggYXNzdW1lcyBFTkFCTEUoTkVUV09SS19Q
Uk9DRVNTKSBpcyBhbHdheXMgMSwgdXNlc05ldHdvcmtQcm9jZXNzIGlzIGFsd2F5cyB0cnVlLCAK
KyAgICAgICAgYW5kIFByb2Nlc3NNb2RlbCBpcyBhbHdheXMgUHJvY2Vzc01vZGVsTXVsdGlwbGVT
ZWNvbmRhcnlQcm9jZXNzZXMuICBJdCBkb2VzIHRoaXMgYnkgcmVtb3ZpbmcKKyAgICAgICAgdGhl
IGNoZWNrcyBhbmQgdGhlIGNvZGUgdGhhdCB3b3VsZCBiZSBleGVjdXRlZCB3aXRoIG90aGVyIGNv
bmZpZ3VyYXRpb25zLgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogTmV0
d29ya1Byb2Nlc3MvRW50cnlQb2ludC9tYWMvTGVnYWN5UHJvY2Vzcy9OZXR3b3JrUHJvY2Vzc01h
aW4ubW06CisgICAgICAgIChOZXR3b3JrUHJvY2Vzc01haW4pOgorICAgICAgICAqIE5ldHdvcmtQ
cm9jZXNzL0VudHJ5UG9pbnQvbWFjL1hQQ1NlcnZpY2UvTmV0d29ya1NlcnZpY2VFbnRyeVBvaW50
Lm1tOgorICAgICAgICAoTmV0d29ya1NlcnZpY2VJbml0aWFsaXplcik6CisgICAgICAgICogTmV0
d29ya1Byb2Nlc3MvRmlsZUFQSS9OZXR3b3JrQmxvYlJlZ2lzdHJ5LmNwcDoKKyAgICAgICAgKFdl
YktpdDo6TmV0d29ya0Jsb2JSZWdpc3RyeTo6ZmlsZXNJbkJsb2IpOgorICAgICAgICAqIE5ldHdv
cmtQcm9jZXNzL0ZpbGVBUEkvTmV0d29ya0Jsb2JSZWdpc3RyeS5oOgorICAgICAgICAqIE5ldHdv
cmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmJsb2JTaXplKToKKyAgICAgICAg
KiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oOgorICAgICAg
ICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2Vz
LmluOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkLmNwcDoKKyAgICAgICAg
KiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZC5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNz
L05ldHdvcmtMb2FkQ2xpZW50Lmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xv
YWRQYXJhbWV0ZXJzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0xvYWRQYXJhbWV0ZXJz
OjpOZXR3b3JrTG9hZFBhcmFtZXRlcnMpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdv
cmtMb2FkUGFyYW1ldGVycy5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9j
ZXNzLmNwcDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oOgorICAg
ICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluOgorICAgICAg
ICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgICog
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmg6CisgICAgICAgICogTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLm1lc3NhZ2VzLmluOgorICAgICAgICAqIE5l
dHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtQcm9jZXNzQ29jb2EubW06CisgICAgICAgIChXZWJL
aXQ6Ok5ldHdvcmtQcm9jZXNzOjpjbGVhckRpc2tDYWNoZSk6CisgICAgICAgICogTmV0d29ya1By
b2Nlc3MvZWZsL05ldHdvcmtQcm9jZXNzTWFpbkVmbC5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5l
dHdvcmtQcm9jZXNzTWFpblVuaXgpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2d0ay9OZXR3
b3JrUHJvY2Vzc01haW5HdGsuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc01h
aW5Vbml4KToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9pb3MvTmV0d29ya1Byb2Nlc3NJT1Mu
bW06CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvbWFjL05ldHdvcmtMb2FkTWFjLm1tOgorICAg
ICAgICAqIE5ldHdvcmtQcm9jZXNzL21hYy9OZXR3b3JrUHJvY2Vzc01hYy5tbToKKyAgICAgICAg
KiBOZXR3b3JrUHJvY2Vzcy9tYWMvTmV0d29ya1Jlc291cmNlTG9hZGVyTWFjLm1tOgorICAgICAg
ICAqIE5ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya1Byb2Nlc3NTb3VwLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OnBsYXRmb3JtVGVybWluYXRlKToKKyAgICAgICAgKiBO
ZXR3b3JrUHJvY2Vzcy9zb3VwL1JlbW90ZU5ldHdvcmtpbmdDb250ZXh0U291cC5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OlJlbW90ZU5ldHdvcmtpbmdDb250ZXh0OjpzdG9yYWdlU2Vzc2lvbik6Cisg
ICAgICAgICogU2hhcmVkL0FQSS9jL1dLRGVwcmVjYXRlZEZ1bmN0aW9ucy5jcHA6CisgICAgICAg
IChXS0luc3BlY3RvclRvZ2dsZUphdmFTY3JpcHRQcm9maWxpbmcpOgorICAgICAgICAoV0tDb250
ZXh0U2V0UHJvY2Vzc01vZGVsKToKKyAgICAgICAgKFdLQ29udGV4dEdldFByb2Nlc3NNb2RlbCk6
CisgICAgICAgIChXS0NvbnRleHRTZXRVc2VzTmV0d29ya1Byb2Nlc3MpOgorICAgICAgICAoV0tH
cmFwaGljc0NvbnRleHRHZXRDR0NvbnRleHQpOgorICAgICAgICAqIFNoYXJlZC9BdXRoZW50aWNh
dGlvbi9BdXRoZW50aWNhdGlvbk1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpBdXRoZW50
aWNhdGlvbk1hbmFnZXI6OmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSk6CisgICAg
ICAgICogU2hhcmVkL05ldHdvcmsvQ3VzdG9tUHJvdG9jb2xzL0NvY29hL0N1c3RvbVByb3RvY29s
TWFuYWdlckNvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpDdXN0b21Qcm90b2NvbE1hbmFnZXI6
OmluaXRpYWxpemUpOgorICAgICAgICAoV2ViS2l0OjpDdXN0b21Qcm90b2NvbE1hbmFnZXI6OmFk
ZEN1c3RvbVByb3RvY29sKToKKyAgICAgICAgKiBTaGFyZWQvTmV0d29yay9DdXN0b21Qcm90b2Nv
bHMvQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyLmg6CisgICAgICAgICogU2hhcmVkL05ldHdvcmsvQ3Vz
dG9tUHJvdG9jb2xzL3NvdXAvQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyU291cC5jcHA6CisgICAgICAg
IChXZWJLaXQ6OkN1c3RvbVByb3RvY29sTWFuYWdlcjo6c3VwcGxlbWVudE5hbWUpOgorICAgICAg
ICAoV2ViS2l0OjpDdXN0b21Qcm90b2NvbE1hbmFnZXI6OmluaXRpYWxpemUpOgorICAgICAgICAo
V2ViS2l0OjpDdXN0b21Qcm90b2NvbE1hbmFnZXI6OnJlZ2lzdGVyU2NoZW1lKToKKyAgICAgICAg
KiBTaGFyZWQvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOjpkZWNvZGUp
OgorICAgICAgICAqIFNoYXJlZC9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0
ZXJzLmg6CisgICAgICAgICogU2hhcmVkL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NTdXBwbGVtZW50
Lmg6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzU3VwcGxlbWVudDo6aW5pdGlhbGl6
ZSk6CisgICAgICAgICogU2hhcmVkL05ldHdvcmsvTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRl
cnMuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVyczo6
ZGVjb2RlKToKKyAgICAgICAgKiBTaGFyZWQvTmV0d29yay9OZXR3b3JrUmVzb3VyY2VMb2FkUGFy
YW1ldGVycy5oOgorICAgICAgICAqIFNoYXJlZC9Qcm9jZXNzRXhlY3V0YWJsZVBhdGguaDoKKyAg
ICAgICAgKiBTaGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnM6OldlYlByb2Nlc3NDcmVhdGlv
blBhcmFtZXRlcnMpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0
ZXJzOjplbmNvZGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0
ZXJzOjpkZWNvZGUpOgorICAgICAgICAqIFNoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0
ZXJzLmg6CisgICAgICAgICogU2hhcmVkL2VmbC9Qcm9jZXNzRXhlY3V0YWJsZVBhdGhFZmwuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpleGVjdXRhYmxlUGF0aE9mUGx1Z2luUHJvY2Vzcyk6CisgICAg
ICAgIChXZWJLaXQ6OmV4ZWN1dGFibGVQYXRoT2ZOZXR3b3JrUHJvY2Vzcyk6CisgICAgICAgIChX
ZWJLaXQ6OmV4ZWN1dGFibGVQYXRoT2ZEYXRhYmFzZVByb2Nlc3MpOgorICAgICAgICAqIFNoYXJl
ZC9ndGsvUHJvY2Vzc0V4ZWN1dGFibGVQYXRoR3RrLmNwcDoKKyAgICAgICAgKFdlYktpdDo6ZXhl
Y3V0YWJsZVBhdGhPZlBsdWdpblByb2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpleGVjdXRhYmxl
UGF0aE9mTmV0d29ya1Byb2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpleGVjdXRhYmxlUGF0aE9m
RGF0YWJhc2VQcm9jZXNzKToKKyAgICAgICAgKiBTaGFyZWQvbWFjL0Nvb2tpZVN0b3JhZ2VTaGlt
Lmg6CisgICAgICAgICogU2hhcmVkL21hYy9Db29raWVTdG9yYWdlU2hpbS5tbToKKyAgICAgICAg
KC1bV0tOU1VSTFNlc3Npb25Mb2NhbCBfZ2V0Q29va2llSGVhZGVyc0ZvclRhc2s6Y29tcGxldGlv
bkhhbmRsZXI6XSk6CisgICAgICAgICogU2hhcmVkL21hYy9Db29raWVTdG9yYWdlU2hpbUxpYnJh
cnkuY3BwOgorICAgICAgICAqIFNoYXJlZC9tYWMvQ29va2llU3RvcmFnZVNoaW1MaWJyYXJ5Lmg6
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uY3Bw
OgorICAgICAgICAoQVBJOjpQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb246OmNyZWF0ZVdpdGhMZWdh
Y3lPcHRpb25zKToKKyAgICAgICAgKEFQSTo6UHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uOjpjb3B5
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSVByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5o
OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJU2Vzc2lvbi5jcHA6CisgICAgICAgIChBUEk6
OlNlc3Npb246On5TZXNzaW9uKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tBUElDYXN0
Lmg6CisgICAgICAgIChXZWJLaXQ6OnRvQVBJKToKKyAgICAgICAgKFdlYktpdDo6dG9Gb250U21v
b3RoaW5nTGV2ZWwpOgorICAgICAgICAoV2ViS2l0Ojp0b1Byb2Nlc3NNb2RlbCk6IERlbGV0ZWQu
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dC5jcHA6CisgICAgICAgIChXS0Nv
bnRleHRHZXRDYWNoZU1vZGVsKToKKyAgICAgICAgKFdLQ29udGV4dFNldE1heGltdW1OdW1iZXJP
ZlByb2Nlc3Nlcyk6CisgICAgICAgIChXS0NvbnRleHRTZXRKYXZhU2NyaXB0R2FyYmFnZUNvbGxl
Y3RvclRpbWVyRW5hYmxlZCk6CisgICAgICAgIChXS0NvbnRleHRVc2VUZXN0aW5nTmV0d29ya1Nl
c3Npb24pOgorICAgICAgICAoV0tDb250ZXh0U2V0UHJvY2Vzc01vZGVsKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdLQ29udGV4dEdldFByb2Nlc3NNb2RlbCk6IERlbGV0ZWQuCisgICAgICAgIChXS0Nv
bnRleHRTZXRVc2VzTmV0d29ya1Byb2Nlc3MpOiBEZWxldGVkLgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvQy9XS0NvbnRleHQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvbWFjL1dLQ29u
dGV4dFByaXZhdGVNYWMubW06CisgICAgICAgIChXS0NvbnRleHRHZXROZXR3b3JrUHJvY2Vzc0lk
ZW50aWZpZXIpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzR3JvdXAu
bW06CisgICAgICAgICgtW1dLUHJvY2Vzc0dyb3VwIGluaXRXaXRoSW5qZWN0ZWRCdW5kbGVVUkw6
XSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29sLm1tOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a19jb250ZXh0LmNwcDoKKyAgICAgICAgKGV3a19j
b250ZXh0X3Byb2Nlc3NfbW9kZWxfc2V0KToKKyAgICAgICAgKGV3a19jb250ZXh0X3Byb2Nlc3Nf
bW9kZWxfZ2V0KToKKyAgICAgICAgKGV3a19jb250ZXh0X3Rsc19lcnJvcl9wb2xpY3lfZ2V0KToK
KyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Bvb2xDb2NvYS5tbToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnVwZGF0ZVByb2Nlc3NTdXBwcmVzc2lvblN0YXRl
KToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnBsYXRmb3JtSW5pdGlhbGl6ZVdl
YlByb2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6cGxhdGZvcm1Jbml0
aWFsaXplTmV0d29ya1Byb2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6
cGxhdGZvcm1JbnZhbGlkYXRlQ29udGV4dCk6CisgICAgICAgICogVUlQcm9jZXNzL0Rvd25sb2Fk
cy9Eb3dubG9hZFByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6RG93bmxvYWRQcm94eTo6Y2Fu
Y2VsKToKKyAgICAgICAgKFdlYktpdDo6RG93bmxvYWRQcm94eTo6aW52YWxpZGF0ZSk6CisgICAg
ICAgICogVUlQcm9jZXNzL0xhdW5jaGVyL1Byb2Nlc3NMYXVuY2hlci5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OlByb2Nlc3NMYXVuY2hlcjo6cHJvY2Vzc1R5cGVBc1N0cmluZyk6CisgICAgICAgIChX
ZWJLaXQ6OlByb2Nlc3NMYXVuY2hlcjo6Z2V0UHJvY2Vzc1R5cGVGcm9tU3RyaW5nKToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvTGF1bmNoZXIvUHJvY2Vzc0xhdW5jaGVyLmg6CisgICAgICAgICogVUlQ
cm9jZXNzL0xhdW5jaGVyL2VmbC9Qcm9jZXNzTGF1bmNoZXJFZmwuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpQcm9jZXNzTGF1bmNoZXI6OmxhdW5jaFByb2Nlc3MpOgorICAgICAgICAqIFVJUHJvY2Vz
cy9MYXVuY2hlci9ndGsvUHJvY2Vzc0xhdW5jaGVyR3RrLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
UHJvY2Vzc0xhdW5jaGVyOjpsYXVuY2hQcm9jZXNzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvTGF1
bmNoZXIvbWFjL1Byb2Nlc3NMYXVuY2hlck1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6Y29tcHV0
ZVByb2Nlc3NTaGltUGF0aCk6CisgICAgICAgIChXZWJLaXQ6OnNlcnZpY2VOYW1lKToKKyAgICAg
ICAgKFdlYktpdDo6c2hvdWxkTGVha0Jvb3N0KToKKyAgICAgICAgKFdlYktpdDo6Y3JlYXRlUHJv
Y2Vzcyk6CisgICAgICAgICogVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5j
cHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OnNldElzSG9sZGluZ0xv
Y2tlZEZpbGVzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1By
b3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5t
ZXNzYWdlcy5pbjoKKyAgICAgICAgKiBVSVByb2Nlc3MvTmV0d29yay9tYWMvTmV0d29ya1Byb2Nl
c3NQcm94eU1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NQcm94eTo6cGxh
dGZvcm1HZXRMYXVuY2hPcHRpb25zKToKKyAgICAgICAgKiBVSVByb2Nlc3MvTmV0d29yay9zb3Vw
L05ldHdvcmtQcm9jZXNzUHJveHlTb3VwLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1By
b2Nlc3NQcm94eTo6cGxhdGZvcm1HZXRMYXVuY2hPcHRpb25zKToKKyAgICAgICAgKiBVSVByb2Nl
c3MvUHJvY2Vzc01vZGVsLmg6IFJlbW92ZWQuCisgICAgICAgICogVUlQcm9jZXNzL1dlYkNvb2tp
ZU1hbmFnZXJQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkNvb2tpZU1hbmFnZXJQcm94
eTo6c2hvdWxkVGVybWluYXRlKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29va2llTWFuYWdlclBy
b3h5OjpyZWZXZWJDb250ZXh0U3VwcGxlbWVudCk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvb2tp
ZU1hbmFnZXJQcm94eTo6c2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeSk6CisgICAgICAgIChXZWJL
aXQ6OldlYkNvb2tpZU1hbmFnZXJQcm94eTo6Z2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeSk6Cisg
ICAgICAgICogVUlQcm9jZXNzL1dlYkluc3BlY3RvclByb3h5LmNwcDoKKyAgICAgICAgKFdlYktp
dDo6V2ViSW5zcGVjdG9yUHJveHk6Omluc3BlY3RvclByb2Nlc3NQb29sKToKKyAgICAgICAgKiBV
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5
OjpXZWJQYWdlUHJveHkpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnJlYXR0YWNo
VG9XZWJQcm9jZXNzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpzZXRTZXNzaW9u
SUQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmluaXRpYWxpemVXZWJQYWdlKToK
KyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwOgorICAgICAgICAoV2ViS2l0
OjpXZWJQcm9jZXNzUG9vbDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bv
b2w6OldlYlByb2Nlc3NQb29sKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6On5X
ZWJQcm9jZXNzUG9vbCk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjppbml0aWFs
aXplQ2xpZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnNldERvd25sb2Fk
Q2xpZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnNldE1heGltdW1OdW1i
ZXJPZlByb2Nlc3Nlcyk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpuZXR3b3Jr
aW5nUHJvY2Vzc0Nvbm5lY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6
bGFuZ3VhZ2VDaGFuZ2VkKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnRleHRD
aGVja2VyU3RhdGVDaGFuZ2VkKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OmVu
c3VyZU5ldHdvcmtQcm9jZXNzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6Omdl
dE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQ
b29sOjplbnN1cmVEYXRhYmFzZVByb2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNz
UG9vbDo6c2V0QW55UGFnZUdyb3VwTWlnaHRIYXZlUHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpwcm9jZXNzRGlkQ2FjaGVQYWdlKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OmNyZWF0ZU5ld1dlYlByb2Nlc3MpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6ZGlzY29ubmVjdFByb2Nlc3MpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6Y3JlYXRlV2ViUGFnZSk6CisgICAgICAgIChXZWJL
aXQ6OldlYlByb2Nlc3NQb29sOjpkb3dubG9hZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nl
c3NQb29sOjpyZXN1bWVEb3dubG9hZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29s
Ojpwb3N0TWVzc2FnZVRvSW5qZWN0ZWRCdW5kbGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9j
ZXNzUG9vbDo6c2V0QWRkaXRpb25hbFBsdWdpbnNEaXJlY3RvcnkpOgorICAgICAgICAoV2ViS2l0
OjpXZWJQcm9jZXNzUG9vbDo6bmV0d29ya1Byb2Nlc3NJZGVudGlmaWVyKToKKyAgICAgICAgKFdl
YktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnNldEFsd2F5c1VzZXNDb21wbGV4VGV4dENvZGVQYXRoKToK
KyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnNldENhbkhhbmRsZUhUVFBTU2VydmVy
VHJ1c3RFdmFsdWF0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnJlZ2lz
dGVyVVJMU2NoZW1lQXNMb2NhbCk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpz
ZXRDYWNoZU1vZGVsKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnNldERlZmF1
bHRSZXF1ZXN0VGltZW91dEludGVydmFsKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bv
b2w6OmNyZWF0ZURvd25sb2FkUHJveHkpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9v
bDo6YWRkTWVzc2FnZVJlY2VpdmVyKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6
OnVzZVRlc3RpbmdOZXR3b3JrU2Vzc2lvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQ
b29sOjphbGxvd1NwZWNpZmljSFRUUFNDZXJ0aWZpY2F0ZUZvckhvc3QpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQcm9jZXNzUG9vbDo6cmVxdWVzdFdlYkNvbnRlbnRTdGF0aXN0aWNzKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnJlcXVlc3ROZXR3b3JraW5nU3RhdGlzdGljcyk6
CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpoYW5kbGVNZXNzYWdlKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnNldFByb2Nlc3NNb2RlbCk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpzZXRVc2VzTmV0d29ya1Byb2Nlc3MpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6dXNlc05ldHdvcmtQcm9j
ZXNzKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OmVuc3VyZVNo
YXJlZFdlYlByb2Nlc3MpOiBEZWxldGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNz
UG9vbC5oOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6c2VuZFRvTmV0d29ya2lu
Z1Byb2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6c2VuZFRvTmV0d29y
a2luZ1Byb2Nlc3NSZWxhdW5jaGluZ0lmTmVjZXNzYXJ5KToKKyAgICAgICAgKFdlYktpdDo6V2Vi
UHJvY2Vzc1Bvb2w6OnNlbmRUb0FsbFByb2Nlc3Nlc1JlbGF1bmNoaW5nVGhlbUlmTmVjZXNzYXJ5
KToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnNlbmRUb09uZVByb2Nlc3MpOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0
OjpXZWJQcm9jZXNzUHJveHk6OnJlbW92ZVdlYlBhZ2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
cm9jZXNzUHJveHk6OmdldFBsdWdpblByb2Nlc3NDb25uZWN0aW9uKToKKyAgICAgICAgKFdlYktp
dDo6V2ViUHJvY2Vzc1Byb3h5OjpnZXROZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24pOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OmdldERhdGFiYXNlUHJvY2Vzc0Nvbm5lY3Rpb24p
OgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OnVwZGF0ZVRleHRDaGVja2VyU3Rh
dGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OmRpZFNhdmVUb1BhZ2VDYWNo
ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6ZGlkQ2FuY2VsUHJvY2Vzc1N1
c3BlbnNpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OnJlaW5zdGF0ZU5l
dHdvcmtQcm9jZXNzQXNzZXJ0aW9uU3RhdGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNz
UHJveHk6OmRpZFNldEFzc2VydGlvblN0YXRlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vz
c1Byb3h5OjpjcmVhdGVEb3dubG9hZFByb3h5KTogRGVsZXRlZC4KKyAgICAgICAgKiBVSVByb2Nl
c3MvV2ViUHJvY2Vzc1Byb3h5Lmg6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6
dGhyb3R0bGVyKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5Lm1lc3NhZ2Vz
LmluOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6fldlYnNpdGVEYXRhU3RvcmUp
OgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpjbG9uZVNlc3Npb25EYXRhKToK
KyAgICAgICAgKiBVSVByb2Nlc3MvZ3RrL1dlYlByb2Nlc3NQb29sR3RrLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6aW5pdEluc3BlY3RvclNlcnZlcik6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nl
c3NQb29sOjpwbGF0Zm9ybUluaXRpYWxpemVXZWJQcm9jZXNzKToKKyAgICAgICAgKFdlYktpdDo6
V2ViUHJvY2Vzc1Bvb2w6OnNldElnbm9yZVRMU0Vycm9ycyk6CisgICAgICAgICogVUlQcm9jZXNz
L3NvdXAvV2ViUHJvY2Vzc1Bvb2xTb3VwLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vz
c1Bvb2w6OnBsYXRmb3JtSW5pdGlhbGl6ZU5ldHdvcmtQcm9jZXNzKToKKyAgICAgICAgKiBXZWJL
aXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogV2ViS2l0MlByZWZpeC5o
OgorICAgICAgICAqIFdlYlByb2Nlc3MvRmlsZUFQSS9CbG9iUmVnaXN0cnlQcm94eS5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OkJsb2JSZWdpc3RyeVByb3h5OjpyZWdpc3RlckZpbGVCbG9iVVJMKToK
KyAgICAgICAgKFdlYktpdDo6QmxvYlJlZ2lzdHJ5UHJveHk6OnJlZ2lzdGVyQmxvYlVSTCk6Cisg
ICAgICAgIChXZWJLaXQ6OkJsb2JSZWdpc3RyeVByb3h5Ojp1bnJlZ2lzdGVyQmxvYlVSTCk6Cisg
ICAgICAgIChXZWJLaXQ6OkJsb2JSZWdpc3RyeVByb3h5OjpyZWdpc3RlckJsb2JVUkxGb3JTbGlj
ZSk6CisgICAgICAgIChXZWJLaXQ6OkJsb2JSZWdpc3RyeVByb3h5OjpibG9iU2l6ZSk6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9GaWxlQVBJL0Jsb2JSZWdpc3RyeVByb3h5Lmg6CisgICAgICAgICog
V2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5jcHA6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5oOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24ubWVzc2FnZXMu
aW46CisgICAgICAgICogV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZFNjaGVkdWxl
ci5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZFNjaGVkdWxlcjo6bmV0d29y
a1Byb2Nlc3NDcmFzaGVkKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3Vy
Y2VMb2FkU2NoZWR1bGVyLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291
cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VM
b2FkZXIuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIu
bWVzc2FnZXMuaW46CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNj
YXBlQnJvd3NlckZ1bmNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6aW5pdGlhbGl6ZUJyb3dzZXJG
dW5jcyk6CisgICAgICAgIChXZWJLaXQ6Om5ldHNjYXBlQnJvd3NlckZ1bmNzKToKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4uY3BwOgorICAgICAg
ICAoV2ViS2l0OjpOZXRzY2FwZVBsdWdpbjo6cmVnaXN0ZXJSZWRpcmVjdCk6CisgICAgICAgIChX
ZWJLaXQ6Ok5ldHNjYXBlUGx1Z2luOjp1cmxSZWRpcmVjdFJlc3BvbnNlKToKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y29va2llc0ZvckRPTSk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBsYXRmb3JtU3RyYXRlZ2llczo6c2V0Q29va2llc0Zyb21ET00pOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNvb2tpZXNFbmFibGVkKToK
KyAgICAgICAgKFdlYktpdDo6V2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjb29raWVSZXF1ZXN0SGVh
ZGVyRmllbGRWYWx1ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBsYXRmb3JtU3RyYXRlZ2llczo6
Z2V0UmF3Q29va2llcyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBsYXRmb3JtU3RyYXRlZ2llczo6
ZGVsZXRlQ29va2llKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpy
ZXNvdXJjZUxvYWRTY2hlZHVsZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF0Zm9ybVN0cmF0
ZWdpZXM6OmxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkpOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
bGF0Zm9ybVN0cmF0ZWdpZXM6OmNyZWF0ZVBpbmdIYW5kbGUpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNyZWF0ZUJsb2JSZWdpc3RyeSk6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaDoKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJG
cmFtZTo6c3RhcnREb3dubG9hZCk6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lOjpjb252ZXJ0
TWFpblJlc291cmNlTG9hZFRvRG93bmxvYWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZTo6
c291cmNlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwOgorICAgICAgICAo
V2ViS2l0OjpXZWJQcm9jZXNzOjpXZWJQcm9jZXNzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJv
Y2Vzczo6aW5pdGlhbGl6ZUNvbm5lY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNz
Ojppbml0aWFsaXplV2ViUHJvY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OmVu
c3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nl
c3M6OnJlZ2lzdGVyVVJMU2NoZW1lQXNFbXB0eURvY3VtZW50KToKKyAgICAgICAgKFdlYktpdDo6
V2ViUHJvY2Vzczo6ZGVzdHJveVByaXZhdGVCcm93c2luZ1Nlc3Npb24pOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQcm9jZXNzOjpwbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbk1hbmFnZXIpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpzaG91bGRUZXJtaW5hdGUpOgorICAgICAgICAoV2ViS2l0
OjpXZWJQcm9jZXNzOjpzZXRJbmplY3RlZEJ1bmRsZVBhcmFtZXRlcnMpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQcm9jZXNzOjpuZXR3b3JrQ29ubmVjdGlvbik6CisgICAgICAgIChXZWJLaXQ6Oldl
YlByb2Nlc3M6OndlYlJlc291cmNlTG9hZFNjaGVkdWxlcik6CisgICAgICAgIChXZWJLaXQ6Oldl
YlByb2Nlc3M6OndlYlRvRGF0YWJhc2VQcm9jZXNzQ29ubmVjdGlvbkNsb3NlZCk6CisgICAgICAg
IChXZWJLaXQ6OldlYlByb2Nlc3M6OnNldEVuaGFuY2VkQWNjZXNzaWJpbGl0eSk6CisgICAgICAg
IChXZWJLaXQ6OldlYlByb2Nlc3M6OnByZWZldGNoRE5TKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
UHJvY2Vzczo6ZGlkQ3JlYXRlRG93bmxvYWQpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpX
ZWJQcm9jZXNzOjpkaWREZXN0cm95RG93bmxvYWQpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0
OjpXZWJQcm9jZXNzOjpkb3dubG9hZFByb3h5Q29ubmVjdGlvbik6IERlbGV0ZWQuCisgICAgICAg
IChXZWJLaXQ6OldlYlByb2Nlc3M6OmRvd25sb2Fkc0F1dGhlbnRpY2F0aW9uTWFuYWdlcik6IERl
bGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OmRvd25sb2FkTWFuYWdlcik6IERl
bGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OnVzZXNOZXR3b3JrUHJvY2Vzcyk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OmRvd25sb2FkUmVxdWVzdCk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OnJlc3VtZURvd25sb2FkKTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6Y2FuY2VsRG93bmxvYWQpOiBE
ZWxldGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQcm9jZXNzOjp0ZXh0Q2hlY2tlclN0YXRlKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
UHJvY2Vzczo6ZXZlbnREaXNwYXRjaGVyKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nl
c3MubWVzc2FnZXMuaW46CisgICAgICAgICogV2ViUHJvY2Vzcy9zb3VwL1dlYlByb2Nlc3NTb3Vw
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6cGxhdGZvcm1TZXRDYWNoZU1vZGVs
KToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6cGxhdGZvcm1DbGVhclJlc291cmNlQ2Fj
aGVzKToKKyAgICAgICAgKFdlYktpdDo6c2V0U291cFNlc3Npb25BY2NlcHRMYW5ndWFnZSk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OnBsYXRmb3JtSW5pdGlhbGl6ZVdlYlByb2Nlc3Mp
OgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpwbGF0Zm9ybVRlcm1pbmF0ZSk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OnNldElnbm9yZVRMU0Vycm9ycyk6CisgICAgICAgIChX
ZWJLaXQ6OldlYlByb2Nlc3M6OmFsbG93U3BlY2lmaWNIVFRQU0NlcnRpZmljYXRlRm9ySG9zdCk6
CisgICAgICAgICogY29uZmlnLmg6CisKIDIwMTUtMTEtMTkgIENzYWJhIE9zenRyb2dvbsOhYyAg
PG9zc3lAd2Via2l0Lm9yZz4KIAogICAgICAgICBbRUZMXSBGaXggV3JldHVybi10eXBlIGNsYW5n
IHdhcm5pbmcgaW4gRVdLMlVuaXRUZXN0QmFzZS5jcHAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NN
YWtlTGlzdHMudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL0NNYWtlTGlzdHMudHh0
CShyZXZpc2lvbiAxOTI2MDEpCisrKyBTb3VyY2UvV2ViS2l0Mi9DTWFrZUxpc3RzLnR4dAkod29y
a2luZyBjb3B5KQpAQCAtODAzLDE2ICs4MDMsMTMgQEAgaWYgKFdlYktpdDJfV2ViUHJvY2Vzc19P
VVRQVVRfTkFNRSkKICAgICBzZXRfdGFyZ2V0X3Byb3BlcnRpZXMoV2ViUHJvY2VzcyBQUk9QRVJU
SUVTIE9VVFBVVF9OQU1FICR7V2ViS2l0Ml9XZWJQcm9jZXNzX09VVFBVVF9OQU1FfSkKIGVuZGlm
ICgpCiAKLWlmIChFTkFCTEVfTkVUV09SS19QUk9DRVNTKQotICAgIGFkZF9leGVjdXRhYmxlKE5l
dHdvcmtQcm9jZXNzICR7TmV0d29ya1Byb2Nlc3NfU09VUkNFU30pCi0gICAgYWRkX3dlYmtpdDJf
cHJlZml4X2hlYWRlcihOZXR3b3JrUHJvY2VzcykKLSAgICB0YXJnZXRfbGlua19saWJyYXJpZXMo
TmV0d29ya1Byb2Nlc3MgJHtOZXR3b3JrUHJvY2Vzc19MSUJSQVJJRVN9KQotICAgIHNldF90YXJn
ZXRfcHJvcGVydGllcyhOZXR3b3JrUHJvY2VzcyBQUk9QRVJUSUVTIEZPTERFUiAiV2ViS2l0IikK
LSAgICBpbnN0YWxsKFRBUkdFVFMgTmV0d29ya1Byb2Nlc3MgREVTVElOQVRJT04gIiR7TElCRVhF
Q19JTlNUQUxMX0RJUn0iKQorYWRkX2V4ZWN1dGFibGUoTmV0d29ya1Byb2Nlc3MgJHtOZXR3b3Jr
UHJvY2Vzc19TT1VSQ0VTfSkKK2FkZF93ZWJraXQyX3ByZWZpeF9oZWFkZXIoTmV0d29ya1Byb2Nl
c3MpCit0YXJnZXRfbGlua19saWJyYXJpZXMoTmV0d29ya1Byb2Nlc3MgJHtOZXR3b3JrUHJvY2Vz
c19MSUJSQVJJRVN9KQorc2V0X3RhcmdldF9wcm9wZXJ0aWVzKE5ldHdvcmtQcm9jZXNzIFBST1BF
UlRJRVMgRk9MREVSICJXZWJLaXQiKQogCi0gICAgaWYgKFdlYktpdDJfTmV0d29ya1Byb2Nlc3Nf
T1VUUFVUX05BTUUpCi0gICAgICAgIHNldF90YXJnZXRfcHJvcGVydGllcyhOZXR3b3JrUHJvY2Vz
cyBQUk9QRVJUSUVTIE9VVFBVVF9OQU1FICR7V2ViS2l0Ml9OZXR3b3JrUHJvY2Vzc19PVVRQVVRf
TkFNRX0pCi0gICAgZW5kaWYgKCkKK2lmIChXZWJLaXQyX05ldHdvcmtQcm9jZXNzX09VVFBVVF9O
QU1FKQorICAgIHNldF90YXJnZXRfcHJvcGVydGllcyhOZXR3b3JrUHJvY2VzcyBQUk9QRVJUSUVT
IE9VVFBVVF9OQU1FICR7V2ViS2l0Ml9OZXR3b3JrUHJvY2Vzc19PVVRQVVRfTkFNRX0pCiBlbmRp
ZiAoKQogCiBpZiAoRU5BQkxFX1BMVUdJTl9QUk9DRVNTKQpAQCAtODQ3LDcgKzg0NCw3IEBAIHNl
dF90YXJnZXRfcHJvcGVydGllcyhXZWJLaXQyIFBST1BFUlRJRVMKIGlmIChBUFBMRSkKICAgICBX
RUJLSVRfRlJBTUVXT1JLKFdlYktpdDIpCiBlbHNlICgpCi0gICAgaW5zdGFsbChUQVJHRVRTIFdl
YktpdDIgV2ViUHJvY2VzcworICAgIGluc3RhbGwoVEFSR0VUUyBXZWJLaXQyIFdlYlByb2Nlc3Mg
TmV0d29ya1Byb2Nlc3MKICAgICAgICAgTElCUkFSWSBERVNUSU5BVElPTiAiJHtMSUJfSU5TVEFM
TF9ESVJ9IgogICAgICAgICBSVU5USU1FIERFU1RJTkFUSU9OICIke0xJQkVYRUNfSU5TVEFMTF9E
SVJ9IgogICAgICkKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYktpdDJQcmVmaXguaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJLaXQyUHJlZml4LmgJKHJldmlzaW9uIDE5MjYwMSkK
KysrIFNvdXJjZS9XZWJLaXQyL1dlYktpdDJQcmVmaXguaAkod29ya2luZyBjb3B5KQpAQCAtMzYs
OCArMzYsNiBAQAogCiAjZGVmaW5lIEVOQUJMRV9XRUJfUFJPQ0VTU19TQU5EQk9YIDEKIAotI2Rl
ZmluZSBFTkFCTEVfTkVUV09SS19QUk9DRVNTIDEKLQogI2RlZmluZSBFTkFCTEVfREFUQUJBU0Vf
UFJPQ0VTUyAxCiAKICNkZWZpbmUgRU5BQkxFX01FTU9SWV9TQU1QTEVSIDEKQEAgLTU5LDcgKzU3
LDYgQEAKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oR1RLKQotI2RlZmluZSBFTkFCTEVfTkVUV09S
S19QUk9DRVNTIDEKICNkZWZpbmUgRU5BQkxFX1NIQVJFQUJMRV9SRVNPVVJDRSAxCiAjZW5kaWYK
IApJbmRleDogU291cmNlL1dlYktpdDIvY29uZmlnLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdDIvY29uZmlnLmgJKHJldmlzaW9uIDE5MjYwMSkKKysrIFNvdXJjZS9XZWJLaXQyL2NvbmZp
Zy5oCSh3b3JraW5nIGNvcHkpCkBAIC05MSw3ICs5MSw3IEBACiAjZW5kaWYKIAogI2lmbmRlZiBF
TkFCTEVfTkVUV09SS19DQUNIRQotI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpICYmIChQTEFU
Rk9STShDT0NPQSkgfHwgUExBVEZPUk0oR1RLKSkKKyNpZiBQTEFURk9STShDT0NPQSkgfHwgUExB
VEZPUk0oR1RLKQogI2RlZmluZSBFTkFCTEVfTkVUV09SS19DQUNIRSAxCiAjZWxzZQogI2RlZmlu
ZSBFTkFCTEVfTkVUV09SS19DQUNIRSAwCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mu
Y3BwCShyZXZpc2lvbiAxOTI2MDEpCisrKyBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2LDgg
KzI2LDYgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJOZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2Vzcy5oIgogCi0jaWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKLQogI2luY2x1
ZGUgIk5ldHdvcmtCbG9iUmVnaXN0cnkuaCIKICNpbmNsdWRlICJOZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2Vzc01lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiTmV0d29ya0xvYWQuaCIKQEAgLTI3NCw1
ICsyNzIsMyBAQCB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpibG9iCiB9CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYktpdAotCi0jZW5kaWYgLy8gRU5BQkxFKE5FVFdPUktfUFJPQ0VT
UykKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaAkocmV2aXNpb24gMTkyNjAxKQorKysg
U291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MuaAkod29ya2luZyBjb3B5KQpAQCAtMjYsOCArMjYsNiBAQAogI2lmbmRlZiBOZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2Vzc19oCiAjZGVmaW5lIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzX2gKIAotI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCi0KICNpbmNsdWRlICJCbG9ja2lu
Z1Jlc3BvbnNlTWFwLmgiCiAjaW5jbHVkZSAiQ29ubmVjdGlvbi5oIgogI2luY2x1ZGUgIk5ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzTWVzc2FnZXMuaCIKQEAgLTEwMiw2ICsxMDAsNCBAQCBw
cml2YXRlOgogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAotI2VuZGlmIC8vIEVOQUJMRShORVRX
T1JLX1BST0NFU1MpCi0KICNlbmRpZiAvLyBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzc19o
CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgkocmV2
aXNpb24gMTkyNjAxKQorKysgU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4JKHdvcmtpbmcgY29weSkKQEAgLTIwLDgg
KzIwLDYgQEAKICMgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKICMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KIAotI2lmIEVO
QUJMRShORVRXT1JLX1BST0NFU1MpCi0KIG1lc3NhZ2VzIC0+IE5ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzIExlZ2FjeVJlY2VpdmVyIHsKIAogICAgIFNjaGVkdWxlUmVzb3VyY2VMb2FkKFdl
YktpdDo6TmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMgcmVzb3VyY2VMb2FkUGFyYW1ldGVy
cykKQEAgLTQ4LDUgKzQ2LDMgQEAgbWVzc2FnZXMgLT4gTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2NlcwogICAgIFVucmVnaXN0ZXJCbG9iVVJMKFdlYkNvcmU6OlVSTCB1cmwpCiAgICAgQmxvYlNp
emUoV2ViQ29yZTo6VVJMIHVybCkgLT4gKHVpbnQ2NF90IHJlc3VsdFNpemUpCiB9Ci0KLSNlbmRp
ZiAvLyBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQpJbmRleDogU291cmNlL1dlYktpdDIvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya0xvYWQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL05l
dHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkLmNwcAkocmV2aXNpb24gMTkyNjAxKQorKysgU291cmNl
L1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0yNCw4ICsyNCw2IEBACiAgKi8KIAogI2luY2x1ZGUgImNvbmZpZy5oIgotCi0jaWYgRU5BQkxF
KE5FVFdPUktfUFJPQ0VTUykKICNpbmNsdWRlICJOZXR3b3JrTG9hZC5oIgogCiAjaW5jbHVkZSAi
QXV0aGVudGljYXRpb25NYW5hZ2VyLmgiCkBAIC0zNzEsNSArMzY5LDMgQEAgdm9pZCBOZXR3b3Jr
TG9hZDo6cmVjZWl2ZWRDYW5jZWxsYXRpb24oUgogI2VuZGlmIC8vICFVU0UoTkVUV09SS19TRVNT
SU9OKQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQotI2VuZGlmIC8vIEVOQUJMRShORVRXT1JL
X1BST0NFU1MpCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9h
ZC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtM
b2FkLmgJKHJldmlzaW9uIDE5MjYwMSkKKysrIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNz
L05ldHdvcmtMb2FkLmgJKHdvcmtpbmcgY29weSkKQEAgLTI2LDggKzI2LDYgQEAKICNpZm5kZWYg
TmV0d29ya0xvYWRfaAogI2RlZmluZSBOZXR3b3JrTG9hZF9oCiAKLSNpZiBFTkFCTEUoTkVUV09S
S19QUk9DRVNTKQotCiAjaW5jbHVkZSAiTmV0d29ya0xvYWRDbGllbnQuaCIKICNpbmNsdWRlICJO
ZXR3b3JrTG9hZFBhcmFtZXRlcnMuaCIKICNpbmNsdWRlICJSZW1vdGVOZXR3b3JraW5nQ29udGV4
dC5oIgpAQCAtMTI2LDYgKzEyNCw0IEBAIHByaXZhdGU6CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktp
dAogCi0jZW5kaWYgLy8gRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKLQogI2VuZGlmIC8vIE5ldHdv
cmtMb2FkX2gKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2Fk
Q2xpZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya0xvYWRDbGllbnQuaAkocmV2aXNpb24gMTkyNjAxKQorKysgU291cmNlL1dlYktpdDIvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMjYsOCAr
MjYsNiBAQAogI2lmbmRlZiBOZXR3b3JrTG9hZENsaWVudF9oCiAjZGVmaW5lIE5ldHdvcmtMb2Fk
Q2xpZW50X2gKIAotI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCi0KICNpbmNsdWRlIDxXZWJD
b3JlL1Jlc291cmNlRXJyb3IuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlUmVxdWVzdC5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VSZXNwb25zZS5oPgpAQCAtNjYsNyArNjQsNSBA
QCBwdWJsaWM6CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCi0jZW5kaWYgLy8gRU5BQkxFKE5F
VFdPUktfUFJPQ0VTUykKLQogI2VuZGlmIC8vIE5ldHdvcmtMb2FkQ2xpZW50X2gKIApJbmRleDog
U291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRQYXJhbWV0ZXJzLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZFBh
cmFtZXRlcnMuY3BwCShyZXZpc2lvbiAxOTI2MDEpCisrKyBTb3VyY2UvV2ViS2l0Mi9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrTG9hZFBhcmFtZXRlcnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNCw4
ICsyNCw2IEBACiAgKi8KIAogI2luY2x1ZGUgImNvbmZpZy5oIgotCi0jaWYgRU5BQkxFKE5FVFdP
UktfUFJPQ0VTUykKICNpbmNsdWRlICJOZXR3b3JrTG9hZFBhcmFtZXRlcnMuaCIKIAogI2luY2x1
ZGUgIk5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmgiCkBAIC00Nyw1ICs0NSwzIEBAIE5l
dHdvcmtMb2FkUGFyYW1ldGVyczo6TmV0d29ya0xvYWRQYXJhbWUKIH0KIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViS2l0Ci0KLSNlbmRpZiAvLyBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQpJbmRleDogU291
cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRQYXJhbWV0ZXJzLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRQYXJhbWV0
ZXJzLmgJKHJldmlzaW9uIDE5MjYwMSkKKysrIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNz
L05ldHdvcmtMb2FkUGFyYW1ldGVycy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw4ICsyNiw2IEBA
CiAjaWZuZGVmIE5ldHdvcmtMb2FkUGFyYW1ldGVyc19oCiAjZGVmaW5lIE5ldHdvcmtMb2FkUGFy
YW1ldGVyc19oCiAKLSNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQotCiAjaW5jbHVkZSA8V2Vi
Q29yZS9SZXNvdXJjZUxvYWRlck9wdGlvbnMuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNl
UmVxdWVzdC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2Vzc2lvbklELmg+CkBAIC01NSw2ICs1Myw0
IEBAIHB1YmxpYzoKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKLSNlbmRpZiAvLyBFTkFCTEUo
TkVUV09SS19QUk9DRVNTKQotCiAjZW5kaWYgLy8gTmV0d29ya0xvYWRQYXJhbWV0ZXJzX2gKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5j
cHAJKHJldmlzaW9uIDE5MjYwMSkKKysrIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05l
dHdvcmtQcm9jZXNzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjYsOCArMjYsNiBAQAogI2luY2x1
ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzLmgiCiAKLSNpZiBFTkFCTEUo
TkVUV09SS19QUk9DRVNTKQotCiAjaW5jbHVkZSAiQXJndW1lbnRDb2RlcnMuaCIKICNpbmNsdWRl
ICJBdHRhY2htZW50LmgiCiAjaW5jbHVkZSAiQXV0aGVudGljYXRpb25NYW5hZ2VyLmgiCkBAIC01
NTQsNSArNTUyLDMgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6cGxhdGZvcm1Mb3dNZW1vcnlIYQog
I2VuZGlmCiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAotCi0jZW5kaWYgLy8gRU5BQkxFKE5FVFdP
UktfUFJPQ0VTUykKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtQ
cm9jZXNzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1Byb2Nlc3MuaAkocmV2aXNpb24gMTkyNjAxKQorKysgU291cmNlL1dlYktpdDIvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaAkod29ya2luZyBjb3B5KQpAQCAtMjYsOCArMjYsNiBA
QAogI2lmbmRlZiBOZXR3b3JrUHJvY2Vzc19oCiAjZGVmaW5lIE5ldHdvcmtQcm9jZXNzX2gKIAot
I2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCi0KICNpbmNsdWRlICJDYWNoZU1vZGVsLmgiCiAj
aW5jbHVkZSAiQ2hpbGRQcm9jZXNzLmgiCiAjaW5jbHVkZSAiRG93bmxvYWRNYW5hZ2VyLmgiCkBA
IC0xOTcsNiArMTk1LDQgQEAgcHJpdmF0ZToKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKLSNl
bmRpZiAvLyBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQotCiAjZW5kaWYgLy8gTmV0d29ya1Byb2Nl
c3NfaApJbmRleDogU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3Mu
bWVzc2FnZXMuaW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4JKHJldmlzaW9uIDE5MjYwMSkKKysrIFNvdXJjZS9X
ZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluCSh3b3JraW5n
IGNvcHkpCkBAIC0yMCw4ICsyMCw2IEBACiAjIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCiAjIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCiAKLSNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQotCiBtZXNzYWdlcyAtPiBOZXR3
b3JrUHJvY2VzcyBMZWdhY3lSZWNlaXZlciB7CiAgICAgIyBJbml0aWFsaXplcyB0aGUgbmV0d29y
ayBwcm9jZXNzLgogICAgIEluaXRpYWxpemVOZXR3b3JrUHJvY2VzcyhzdHJ1Y3QgV2ViS2l0OjpO
ZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycyBwcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJz
KQpAQCAtNjMsNSArNjEsMyBAQCBtZXNzYWdlcyAtPiBOZXR3b3JrUHJvY2VzcyBMZWdhY3lSZWNl
aXZlCiAgICAgQ2FuY2VsUHJlcGFyZVRvU3VzcGVuZCgpCiAgICAgUHJvY2Vzc0RpZFJlc3VtZSgp
CiB9Ci0KLSNlbmRpZiAvLyBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQpJbmRleDogU291cmNlL1dl
YktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIu
Y3BwCShyZXZpc2lvbiAxOTI2MDEpCisrKyBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw4ICsyNiw2IEBA
CiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiTmV0d29ya1Jlc291cmNlTG9hZGVyLmgi
CiAKLSNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQotCiAjaW5jbHVkZSAiRGF0YVJlZmVyZW5j
ZS5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJOZXR3b3JrQmxvYlJlZ2lzdHJ5
LmgiCkBAIC01ODEsNSArNTc5LDMgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmNvbnRp
bnVlQ2FuQQogI2VuZGlmCiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAotCi0jZW5kaWYgLy8gRU5B
QkxFKE5FVFdPUktfUFJPQ0VTUykKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNz
L05ldHdvcmtSZXNvdXJjZUxvYWRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL05l
dHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5oCShyZXZpc2lvbiAxOTI2MDEpCisr
KyBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuaAko
d29ya2luZyBjb3B5KQpAQCAtMjYsOCArMjYsNiBAQAogI2lmbmRlZiBOZXR3b3JrUmVzb3VyY2VM
b2FkZXJfaAogI2RlZmluZSBOZXR3b3JrUmVzb3VyY2VMb2FkZXJfaAogCi0jaWYgRU5BQkxFKE5F
VFdPUktfUFJPQ0VTUykKLQogI2luY2x1ZGUgIk1lc3NhZ2VTZW5kZXIuaCIKICNpbmNsdWRlICJO
ZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzc01lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiTmV0d29y
a0xvYWRDbGllbnQuaCIKQEAgLTE2OSw2ICsxNjcsNCBAQCBwcml2YXRlOgogCiB9IC8vIG5hbWVz
cGFjZSBXZWJLaXQKIAotI2VuZGlmIC8vIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCi0KICNlbmRp
ZiAvLyBOZXR3b3JrUmVzb3VyY2VMb2FkZXJfaApJbmRleDogU291cmNlL1dlYktpdDIvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLm1lc3NhZ2VzLmluCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5tZXNz
YWdlcy5pbgkocmV2aXNpb24gMTkyNjAxKQorKysgU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLm1lc3NhZ2VzLmluCSh3b3JraW5nIGNvcHkpCkBAIC0y
MCw4ICsyMCw2IEBACiAjIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCiAjIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAKLSNp
ZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQotCiBtZXNzYWdlcyAtPiBOZXR3b3JrUmVzb3VyY2VM
b2FkZXIgTGVnYWN5UmVjZWl2ZXIgewogCiAgICAgQ29udGludWVXaWxsU2VuZFJlcXVlc3QoV2Vi
Q29yZTo6UmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QpCkBAIC0zMCw1ICsyOCwzIEBAIG1lc3NhZ2Vz
IC0+IE5ldHdvcmtSZXNvdXJjZUxvYWRlciBMZWdhY3kKICAgICBDb250aW51ZUNhbkF1dGhlbnRp
Y2F0ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2UoYm9vbCBjYW5BdXRoZW50aWNhdGUpCiAjZW5kaWYK
IH0KLQotI2VuZGlmIC8vIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCkluZGV4OiBTb3VyY2UvV2Vi
S2l0Mi9OZXR3b3JrUHJvY2Vzcy9FbnRyeVBvaW50L21hYy9MZWdhY3lQcm9jZXNzL05ldHdvcmtQ
cm9jZXNzTWFpbi5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vz
cy9FbnRyeVBvaW50L21hYy9MZWdhY3lQcm9jZXNzL05ldHdvcmtQcm9jZXNzTWFpbi5tbQkocmV2
aXNpb24gMTkyNjAxKQorKysgU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvRW50cnlQb2lu
dC9tYWMvTGVnYWN5UHJvY2Vzcy9OZXR3b3JrUHJvY2Vzc01haW4ubW0JKHdvcmtpbmcgY29weSkK
QEAgLTI1LDggKzI1LDYgQEAKIAogI2ltcG9ydCAiY29uZmlnLmgiCiAKLSNpZiBFTkFCTEUoTkVU
V09SS19QUk9DRVNTKQotCiAjaW1wb3J0ICJDaGlsZFByb2Nlc3NFbnRyeVBvaW50LmgiCiAjaW1w
b3J0ICJOZXR3b3JrUHJvY2Vzcy5oIgogI2ltcG9ydCAiV0tCYXNlLmgiCkBAIC0zOSw1ICszNywz
IEBAIGludCBOZXR3b3JrUHJvY2Vzc01haW4oaW50IGFyZ2MsIGNoYXIqKiAKIHsKICAgICByZXR1
cm4gQ2hpbGRQcm9jZXNzTWFpbjxOZXR3b3JrUHJvY2VzcywgQ2hpbGRQcm9jZXNzTWFpbkRlbGVn
YXRlPihhcmdjLCBhcmd2KTsKIH0KLQotI2VuZGlmIC8vIEVOQUJMRShORVRXT1JLX1BST0NFU1Mp
CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9FbnRyeVBvaW50L21hYy9YUENT
ZXJ2aWNlL05ldHdvcmtTZXJ2aWNlRW50cnlQb2ludC5tbQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9FbnRyeVBvaW50L21hYy9YUENTZXJ2aWNlL05ldHdvcmtT
ZXJ2aWNlRW50cnlQb2ludC5tbQkocmV2aXNpb24gMTkyNjAxKQorKysgU291cmNlL1dlYktpdDIv
TmV0d29ya1Byb2Nlc3MvRW50cnlQb2ludC9tYWMvWFBDU2VydmljZS9OZXR3b3JrU2VydmljZUVu
dHJ5UG9pbnQubW0JKHdvcmtpbmcgY29weSkKQEAgLTUyLDcgKzUyLDYgQEAgZXh0ZXJuICJDIiBX
S19FWFBPUlQgdm9pZCBOZXR3b3JrU2VydmljZQogCiB2b2lkIE5ldHdvcmtTZXJ2aWNlSW5pdGlh
bGl6ZXIoeHBjX2Nvbm5lY3Rpb25fdCBjb25uZWN0aW9uLCB4cGNfb2JqZWN0X3QgaW5pdGlhbGl6
ZXJNZXNzYWdlKQogewotI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCiAgICAgLy8gUmVtb3Zl
IHRoZSBTZWNJdGVtU2hpbSBmcm9tIHRoZSBEWUxEX0lOU0VSVF9MSUJSQVJJRVMgZW52aXJvbm1l
bnQgdmFyaWFibGUgc28gYW55IHByb2Nlc3NlcyBzcGF3bmVkIGJ5CiAgICAgLy8gdGhlIHRoaXMg
cHJvY2VzcyBkb24ndCB0cnkgdG8gaW5zZXJ0IHRoZSBzaGltIGFuZCBjcmFzaC4KICAgICBFbnZp
cm9ubWVudFV0aWxpdGllczo6c3RyaXBWYWx1ZXNFbmRpbmdXaXRoU3RyaW5nKCJEWUxEX0lOU0VS
VF9MSUJSQVJJRVMiLCAiL1NlY0l0ZW1TaGltLmR5bGliIik7CkBAIC02OSw1ICs2OCw0IEBAIHZv
aWQgTmV0d29ya1NlcnZpY2VJbml0aWFsaXplcih4cGNfY29ubmUKICNpZiBIQVZFKE9TX0FDVElW
SVRZKQogICAgIG9zX2FjdGl2aXR5X2VuZChhY3Rpdml0eSk7CiAjZW5kaWYKLSNlbmRpZgogfQpJ
bmRleDogU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvRmlsZUFQSS9OZXR3b3JrQmxvYlJl
Z2lzdHJ5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9G
aWxlQVBJL05ldHdvcmtCbG9iUmVnaXN0cnkuY3BwCShyZXZpc2lvbiAxOTI2MDEpCisrKyBTb3Vy
Y2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9GaWxlQVBJL05ldHdvcmtCbG9iUmVnaXN0cnkuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0yNiw4ICsyNiw2IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAj
aW5jbHVkZSAiTmV0d29ya0Jsb2JSZWdpc3RyeS5oIgogCi0jaWYgRU5BQkxFKE5FVFdPUktfUFJP
Q0VTUykKLQogI2luY2x1ZGUgIkJsb2JEYXRhRmlsZVJlZmVyZW5jZVdpdGhTYW5kYm94RXh0ZW5z
aW9uLmgiCiAjaW5jbHVkZSAiU2FuZGJveEV4dGVuc2lvbi5oIgogI2luY2x1ZGUgPFdlYkNvcmUv
QmxvYlBhcnQuaD4KQEAgLTE1MSw1ICsxNDksMyBAQCBWZWN0b3I8UmVmUHRyPEJsb2JEYXRhRmls
ZVJlZmVyZW5jZT4+IE5lCiB9CiAKIH0KLQotI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9O
ZXR3b3JrUHJvY2Vzcy9GaWxlQVBJL05ldHdvcmtCbG9iUmVnaXN0cnkuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9GaWxlQVBJL05ldHdvcmtCbG9iUmVnaXN0
cnkuaAkocmV2aXNpb24gMTkyNjAxKQorKysgU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3Mv
RmlsZUFQSS9OZXR3b3JrQmxvYlJlZ2lzdHJ5LmgJKHdvcmtpbmcgY29weSkKQEAgLTI2LDggKzI2
LDYgQEAKICNpZm5kZWYgTmV0d29ya0Jsb2JSZWdpc3RyeV9oCiAjZGVmaW5lIE5ldHdvcmtCbG9i
UmVnaXN0cnlfaAogCi0jaWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKLQogI2luY2x1ZGUgPFdl
YkNvcmUvVVJMSGFzaC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3Rm
L0hhc2hTZXQuaD4KQEAgLTY4LDYgKzY2LDQgQEAgcHJpdmF0ZToKIAogfQogCi0jZW5kaWYgLy8g
RU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKLQogI2VuZGlmIC8vIE5ldHdvcmtCbG9iUmVnaXN0cnlf
aApJbmRleDogU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Byb2Nl
c3NDb2NvYS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9j
b2NvYS9OZXR3b3JrUHJvY2Vzc0NvY29hLm1tCShyZXZpc2lvbiAxOTI2MDEpCisrKyBTb3VyY2Uv
V2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrUHJvY2Vzc0NvY29hLm1tCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yNiw4ICsyNiw2IEBACiAjaW1wb3J0ICJjb25maWcuaCIKICNpbXBvcnQg
Ik5ldHdvcmtQcm9jZXNzLmgiCiAKLSNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQotCiAjaW1w
b3J0ICJOZXR3b3JrQ2FjaGUuaCIKICNpbXBvcnQgIk5ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJh
bWV0ZXJzLmgiCiAjaW1wb3J0ICJOZXR3b3JrUmVzb3VyY2VMb2FkZXIuaCIKQEAgLTI2Nyw1ICsy
NjUsMyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpjbGVhckRpc2tDYWNoZShzdGQ6CiB9CiAKIH0K
LQotI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9lZmwvTmV0d29y
a1Byb2Nlc3NNYWluRWZsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9OZXR3b3Jr
UHJvY2Vzcy9lZmwvTmV0d29ya1Byb2Nlc3NNYWluRWZsLmNwcAkocmV2aXNpb24gMTkyNjAxKQor
KysgU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvZWZsL05ldHdvcmtQcm9jZXNzTWFpbkVm
bC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI3LDggKzI3LDYgQEAKICNpbmNsdWRlICJjb25maWcu
aCIKICNpbmNsdWRlICJOZXR3b3JrUHJvY2Vzc01haW5Vbml4LmgiCiAKLSNpZiBFTkFCTEUoTkVU
V09SS19QUk9DRVNTKQotCiAjaW5jbHVkZSAiQ2hpbGRQcm9jZXNzTWFpbi5oIgogI2luY2x1ZGUg
Ik5ldHdvcmtQcm9jZXNzLmgiCiAjaW5jbHVkZSA8RWNvcmUuaD4KQEAgLTcwLDUgKzY4LDMgQEAg
aW50IE5ldHdvcmtQcm9jZXNzTWFpblVuaXgoaW50IGFyZ2MsIGNoYQogfQogCiB9IC8vIG5hbWVz
cGFjZSBXZWJLaXQKLQotI2VuZGlmIC8vIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCkluZGV4OiBT
b3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9ndGsvTmV0d29ya1Byb2Nlc3NNYWluR3RrLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9ndGsvTmV0d29y
a1Byb2Nlc3NNYWluR3RrLmNwcAkocmV2aXNpb24gMTkyNjAxKQorKysgU291cmNlL1dlYktpdDIv
TmV0d29ya1Byb2Nlc3MvZ3RrL05ldHdvcmtQcm9jZXNzTWFpbkd0ay5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTI3LDggKzI3LDYgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJOZXR3
b3JrUHJvY2Vzc01haW5Vbml4LmgiCiAKLSNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQotCiAj
aW5jbHVkZSAiQ2hpbGRQcm9jZXNzTWFpbi5oIgogI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzLmgi
CiAjaW5jbHVkZSA8V2ViQ29yZS9Tb3VwTmV0d29ya1Nlc3Npb24uaD4KQEAgLTYzLDUgKzYxLDMg
QEAgaW50IE5ldHdvcmtQcm9jZXNzTWFpblVuaXgoaW50IGFyZ2MsIGNoYQogfQogCiB9IC8vIG5h
bWVzcGFjZSBXZWJLaXQKLQotI2VuZGlmIC8vIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCkluZGV4
OiBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9pb3MvTmV0d29ya1Byb2Nlc3NJT1MubW0K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvaW9zL05ldHdvcmtQ
cm9jZXNzSU9TLm1tCShyZXZpc2lvbiAxOTI2MDEpCisrKyBTb3VyY2UvV2ViS2l0Mi9OZXR3b3Jr
UHJvY2Vzcy9pb3MvTmV0d29ya1Byb2Nlc3NJT1MubW0JKHdvcmtpbmcgY29weSkKQEAgLTI2LDcg
KzI2LDcgQEAKICNpbXBvcnQgImNvbmZpZy5oIgogI2ltcG9ydCAiTmV0d29ya1Byb2Nlc3MuaCIK
IAotI2lmIFBMQVRGT1JNKElPUykgJiYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKKyNpZiBQTEFU
Rk9STShJT1MpCiAKICNpbXBvcnQgIk5ldHdvcmtDYWNoZS5oIgogI2ltcG9ydCAiTmV0d29ya1By
b2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaCIKQEAgLTEwMSw0ICsxMDEsNCBAQCB2b2lkIE5ldHdv
cmtQcm9jZXNzOjpwbGF0Zm9ybVRlcm1pbmF0ZSgpCiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAog
Ci0jZW5kaWYgLy8gUExBVEZPUk0oSU9TKSAmJiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQorI2Vu
ZGlmIC8vIFBMQVRGT1JNKElPUykKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNz
L21hYy9OZXR3b3JrTG9hZE1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9OZXR3
b3JrUHJvY2Vzcy9tYWMvTmV0d29ya0xvYWRNYWMubW0JKHJldmlzaW9uIDE5MjYwMSkKKysrIFNv
dXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL21hYy9OZXR3b3JrTG9hZE1hYy5tbQkod29ya2lu
ZyBjb3B5KQpAQCAtMjQsOCArMjQsNiBAQAogICovCiAKICNpbXBvcnQgImNvbmZpZy5oIgotCi0j
aWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKICNpbXBvcnQgIk5ldHdvcmtMb2FkLmgiCiAKICNp
bXBvcnQgPFdlYkNvcmUvQ0ZOZXR3b3JrU1BJLmg+CkBAIC02MCw1ICs1OCwzIEBAIHZvaWQgTmV0
d29ya0xvYWQ6OndpbGxDYWNoZVJlc3BvbnNlQXN5bmMKICNlbmRpZiAvLyAhVVNFKENGTkVUV09S
SykKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KLSNlbmRpZiAvLyBFTkFCTEUoTkVUV09SS19Q
Uk9DRVNTKQpJbmRleDogU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvbWFjL05ldHdvcmtQ
cm9jZXNzTWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNz
L21hYy9OZXR3b3JrUHJvY2Vzc01hYy5tbQkocmV2aXNpb24gMTkyNjAxKQorKysgU291cmNlL1dl
YktpdDIvTmV0d29ya1Byb2Nlc3MvbWFjL05ldHdvcmtQcm9jZXNzTWFjLm1tCSh3b3JraW5nIGNv
cHkpCkBAIC0yNiw3ICsyNiw3IEBACiAjaW1wb3J0ICJjb25maWcuaCIKICNpbXBvcnQgIk5ldHdv
cmtQcm9jZXNzLmgiCiAKLSNpZiBQTEFURk9STShNQUMpICYmIEVOQUJMRShORVRXT1JLX1BST0NF
U1MpCisjaWYgUExBVEZPUk0oTUFDKQogCiAjaW1wb3J0ICJOZXR3b3JrQ2FjaGUuaCIKICNpbXBv
cnQgIk5ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmgiCkBAIC0xNDQsNCArMTQ0LDQg
QEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6cGxhdGZvcm1UZXJtaW5hdGUoKQogCiB9IC8vIG5hbWVz
cGFjZSBXZWJLaXQKIAotI2VuZGlmIC8vIFBMQVRGT1JNKE1BQykgJiYgRU5BQkxFKE5FVFdPUktf
UFJPQ0VTUykKKyNlbmRpZiAvLyBQTEFURk9STShNQUMpCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9O
ZXR3b3JrUHJvY2Vzcy9tYWMvTmV0d29ya1Jlc291cmNlTG9hZGVyTWFjLm1tCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL21hYy9OZXR3b3JrUmVzb3VyY2VMb2Fk
ZXJNYWMubW0JKHJldmlzaW9uIDE5MjYwMSkKKysrIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9j
ZXNzL21hYy9OZXR3b3JrUmVzb3VyY2VMb2FkZXJNYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTI2
LDggKzI2LDYgQEAKICNpbXBvcnQgImNvbmZpZy5oIgogI2ltcG9ydCAiTmV0d29ya1Jlc291cmNl
TG9hZGVyLmgiCiAKLSNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQotCiAjaW1wb3J0ICJOZXR3
b3JrRGlza0NhY2hlTW9uaXRvci5oIgogI2ltcG9ydCAiU2hhcmVhYmxlUmVzb3VyY2UuaCIKICNp
bXBvcnQgPFdlYkNvcmUvQ0ZOZXR3b3JrU1BJLmg+CkBAIC05MSw1ICs4OSwzIEBAIHZvaWQgTmV0
d29ya1Jlc291cmNlTG9hZGVyOjp3aWxsQ2FjaGVSZXMKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0
CiAKLSNlbmRpZiAvLyBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQotCkluZGV4OiBTb3VyY2UvV2Vi
S2l0Mi9OZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtQcm9jZXNzU291cC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrUHJvY2Vzc1Nv
dXAuY3BwCShyZXZpc2lvbiAxOTI2MDEpCisrKyBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vz
cy9zb3VwL05ldHdvcmtQcm9jZXNzU291cC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI1LDcgKzI1
LDYgQEAKICAqLwogCiAjaW5jbHVkZSAiY29uZmlnLmgiCi0jaWYgRU5BQkxFKE5FVFdPUktfUFJP
Q0VTUykKICNpbmNsdWRlICJOZXR3b3JrUHJvY2Vzcy5oIgogCiAjaW5jbHVkZSAiTmV0d29ya0Nh
Y2hlLmgiCkBAIC0xNzAsNSArMTY5LDMgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6cGxhdGZvcm1U
ZXJtaW5hdGUoKQogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQotI2VuZGlmCkluZGV4OiBT
b3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9zb3VwL1JlbW90ZU5ldHdvcmtpbmdDb250ZXh0
U291cC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3Mvc291
cC9SZW1vdGVOZXR3b3JraW5nQ29udGV4dFNvdXAuY3BwCShyZXZpc2lvbiAxOTI2MDEpCisrKyBT
b3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9zb3VwL1JlbW90ZU5ldHdvcmtpbmdDb250ZXh0
U291cC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2LDcgKzI2LDYgQEAKICAqLwogCiAjaW5jbHVk
ZSAiY29uZmlnLmgiCi0jaWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKICNpbmNsdWRlICJSZW1v
dGVOZXR3b3JraW5nQ29udGV4dC5oIgogCiAjaW5jbHVkZSA8V2ViQ29yZS9OZXR3b3JrU3RvcmFn
ZVNlc3Npb24uaD4KQEAgLTU3LDUgKzU2LDMgQEAgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBSZW1v
dGVOZXR3b3JraW5nQwogfQogCiB9Ci0KLSNlbmRpZiAvLyBFTkFCTEUoTkVUV09SS19QUk9DRVNT
KQpJbmRleDogU291cmNlL1dlYktpdDIvU2hhcmVkL1Byb2Nlc3NFeGVjdXRhYmxlUGF0aC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9Qcm9jZXNzRXhlY3V0YWJsZVBhdGgu
aAkocmV2aXNpb24gMTkyNjAxKQorKysgU291cmNlL1dlYktpdDIvU2hhcmVkL1Byb2Nlc3NFeGVj
dXRhYmxlUGF0aC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw5ICszMiw3IEBAIG5hbWVzcGFjZSBX
ZWJLaXQgewogCiBTdHJpbmcgZXhlY3V0YWJsZVBhdGhPZldlYlByb2Nlc3MoKTsKIFN0cmluZyBl
eGVjdXRhYmxlUGF0aE9mUGx1Z2luUHJvY2VzcygpOwotI2lmIEVOQUJMRShORVRXT1JLX1BST0NF
U1MpCiBTdHJpbmcgZXhlY3V0YWJsZVBhdGhPZk5ldHdvcmtQcm9jZXNzKCk7Ci0jZW5kaWYKICNp
ZiBFTkFCTEUoREFUQUJBU0VfUFJPQ0VTUykKIFN0cmluZyBleGVjdXRhYmxlUGF0aE9mRGF0YWJh
c2VQcm9jZXNzKCk7CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJQcm9j
ZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5jcHAJKHJldmlzaW9uIDE5MjYwMSkK
KysrIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNDMsOSArNDMsNiBAQCBXZWJQcm9jZXNzQ3JlYXRpb25QYXJh
bWV0ZXJzOjpXZWJQcm9jZXNzCiAgICAgLCBzaG91bGRFbmFibGVKSVQoZmFsc2UpCiAgICAgLCBz
aG91bGRFbmFibGVGVExKSVQoZmFsc2UpCiAjZW5kaWYKLSNpZiBFTkFCTEUoTkVUV09SS19QUk9D
RVNTKQotICAgICwgdXNlc05ldHdvcmtQcm9jZXNzKGZhbHNlKQotI2VuZGlmCiAgICAgLCBtZW1v
cnlDYWNoZURpc2FibGVkKGZhbHNlKQogI2lmIEVOQUJMRShTRVJWSUNFX0NPTlRST0xTKQogICAg
ICwgaGFzSW1hZ2VTZXJ2aWNlcyhmYWxzZSkKQEAgLTEzMywxMCArMTMwLDYgQEAgdm9pZCBXZWJQ
cm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOjplbmNvZAogICAgIGVuY29kZXIgPDwgbm90aWZpY2F0
aW9uUGVybWlzc2lvbnM7CiAjZW5kaWYKIAotI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCi0g
ICAgZW5jb2RlciA8PCB1c2VzTmV0d29ya1Byb2Nlc3M7Ci0jZW5kaWYKLQogICAgIGVuY29kZXIg
PDwgcGx1Z0luQXV0b1N0YXJ0T3JpZ2luSGFzaGVzOwogICAgIGVuY29kZXIgPDwgcGx1Z0luQXV0
b1N0YXJ0T3JpZ2luczsKICAgICBlbmNvZGVyIDw8IG1lbW9yeUNhY2hlRGlzYWJsZWQ7CkBAIC0y
OTEsMTEgKzI4NCw2IEBAIGJvb2wgV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyczo6ZGVjb2QK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogI2VuZGlmCiAKLSNpZiBFTkFCTEUoTkVUV09SS19QUk9D
RVNTKQotICAgIGlmICghZGVjb2Rlci5kZWNvZGUocGFyYW1ldGVycy51c2VzTmV0d29ya1Byb2Nl
c3MpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0jZW5kaWYKLQogICAgIGlmICghZGVjb2Rlci5k
ZWNvZGUocGFyYW1ldGVycy5wbHVnSW5BdXRvU3RhcnRPcmlnaW5IYXNoZXMpKQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShwYXJhbWV0ZXJzLnBsdWdJbkF1
dG9TdGFydE9yaWdpbnMpKQpJbmRleDogU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlByb2Nlc3ND
cmVhdGlvblBhcmFtZXRlcnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQv
V2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oCShyZXZpc2lvbiAxOTI2MDEpCisrKyBTb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oCSh3b3JraW5n
IGNvcHkpCkBAIC0xNTQsMTAgKzE1NCw2IEBAIHN0cnVjdCBXZWJQcm9jZXNzQ3JlYXRpb25QYXJh
bWV0ZXJzIHsKICAgICBIYXNoTWFwPFN0cmluZywgYm9vbD4gbm90aWZpY2F0aW9uUGVybWlzc2lv
bnM7CiAjZW5kaWYKIAotI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCi0gICAgYm9vbCB1c2Vz
TmV0d29ya1Byb2Nlc3M7Ci0jZW5kaWYKLQogICAgIEhhc2hNYXA8V2ViQ29yZTo6U2Vzc2lvbklE
LCBIYXNoTWFwPHVuc2lnbmVkLCBkb3VibGU+PiBwbHVnSW5BdXRvU3RhcnRPcmlnaW5IYXNoZXM7
CiAgICAgVmVjdG9yPFN0cmluZz4gcGx1Z0luQXV0b1N0YXJ0T3JpZ2luczsKIApJbmRleDogU291
cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9jL1dLRGVwcmVjYXRlZEZ1bmN0aW9ucy5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9jL1dLRGVwcmVjYXRlZEZ1bmN0aW9u
cy5jcHAJKHJldmlzaW9uIDE5MjYwMSkKKysrIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9X
S0RlcHJlY2F0ZWRGdW5jdGlvbnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw2ICsyNyw4IEBA
CiAKICNpbmNsdWRlICJBUElEaWN0aW9uYXJ5LmgiCiAjaW5jbHVkZSAiV0tBcnJheS5oIgorI2lu
Y2x1ZGUgIldLQ29udGV4dC5oIgorI2luY2x1ZGUgIldLQ29udGV4dFByaXZhdGUuaCIKICNpbmNs
dWRlICJXS011dGFibGVEaWN0aW9uYXJ5LmgiCiAjaW5jbHVkZSAiV0tQcmVmZXJlbmNlc1JlZlBy
aXZhdGUuaCIKICNpbmNsdWRlICJXS1NoYXJlZEFQSUNhc3QuaCIKQEAgLTEzNCw2ICsxMzYsMTkg
QEAgdm9pZCBXS0luc3BlY3RvclRvZ2dsZUphdmFTY3JpcHRQcm9maWxpbgogewogfQogCit2b2lk
IFdLQ29udGV4dFNldFByb2Nlc3NNb2RlbChXS0NvbnRleHRSZWYsIFdLUHJvY2Vzc01vZGVsKQor
eworfQorCitXS1Byb2Nlc3NNb2RlbCBXS0NvbnRleHRHZXRQcm9jZXNzTW9kZWwoV0tDb250ZXh0
UmVmKQoreworICAgIHJldHVybiBrV0tQcm9jZXNzTW9kZWxNdWx0aXBsZVNlY29uZGFyeVByb2Nl
c3NlczsKK30KKwordm9pZCBXS0NvbnRleHRTZXRVc2VzTmV0d29ya1Byb2Nlc3MoV0tDb250ZXh0
UmVmLCBib29sKQoreworfQorCiAjaWYgUExBVEZPUk0oTUFDKQogQ0dDb250ZXh0UmVmIFdLR3Jh
cGhpY3NDb250ZXh0R2V0Q0dDb250ZXh0KFdLR3JhcGhpY3NDb250ZXh0UmVmIGdyYXBoaWNzQ29u
dGV4dCkKIHsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9BdXRoZW50aWNhdGlvbi9BdXRo
ZW50aWNhdGlvbk1hbmFnZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1NoYXJl
ZC9BdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdGlvbk1hbmFnZXIuY3BwCShyZXZpc2lvbiAxOTI2
MDEpCisrKyBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQXV0aGVudGljYXRpb24vQXV0aGVudGljYXRp
b25NYW5hZ2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUg
IkNoaWxkUHJvY2Vzcy5oIgogI2luY2x1ZGUgIkRvd25sb2FkLmgiCiAjaW5jbHVkZSAiRG93bmxv
YWRQcm94eU1lc3NhZ2VzLmgiCisjaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3NQcm94eU1lc3NhZ2Vz
LmgiCiAjaW5jbHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCiAjaW5jbHVkZSAiV2ViRnJh
bWUuaCIKICNpbmNsdWRlICJXZWJQYWdlLmgiCkBAIC0zNywxMCArMzgsNiBAQAogI2luY2x1ZGUg
PFdlYkNvcmUvQXV0aGVudGljYXRpb25DaGFsbGVuZ2UuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0F1
dGhlbnRpY2F0aW9uQ2xpZW50Lmg+CiAKLSNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQotI2lu
Y2x1ZGUgIk5ldHdvcmtQcm9jZXNzUHJveHlNZXNzYWdlcy5oIgotI2VuZGlmCi0KIHVzaW5nIG5h
bWVzcGFjZSBXZWJDb3JlOwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTEyOCw3ICsxMjUsNiBA
QCB2b2lkIEF1dGhlbnRpY2F0aW9uTWFuYWdlcjo6ZGlkUmVjZWl2ZUF1CiAgICAgbV9wcm9jZXNz
LT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZShmcmFtZS0+ZnJhbWVJRCgpLCBhdXRoZW50aWNhdGlvbkNoYWxsZW5nZSwgY2hhbGxl
bmdlSUQpLCBmcmFtZS0+cGFnZSgpLT5wYWdlSUQoKSk7CiB9CiAKLSNpZiBFTkFCTEUoTkVUV09S
S19QUk9DRVNTKQogI2lmIFVTRShORVRXT1JLX1NFU1NJT04pCiB2b2lkIEF1dGhlbnRpY2F0aW9u
TWFuYWdlcjo6ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKHVpbnQ2NF90IHBhZ2VJ
RCwgdWludDY0X3QgZnJhbWVJRCwgY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmIGF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlLCBDaGFsbGVuZ2VDb21wbGV0aW9uSGFuZGxlciBjb21wbGV0aW9u
SGFuZGxlcikKIHsKQEAgLTE1Nyw3ICsxNTMsNiBAQCB2b2lkIEF1dGhlbnRpY2F0aW9uTWFuYWdl
cjo6ZGlkUmVjZWl2ZUF1CiAgICAgCiAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpOZXR3
b3JrUHJvY2Vzc1Byb3h5OjpEaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UocGFnZUlE
LCBmcmFtZUlELCBhdXRoZW50aWNhdGlvbkNoYWxsZW5nZSwgY2hhbGxlbmdlSUQpKTsKIH0KLSNl
bmRpZgogCiAjaWYgIVVTRShORVRXT1JLX1NFU1NJT04pCiB2b2lkIEF1dGhlbnRpY2F0aW9uTWFu
YWdlcjo6ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKERvd25sb2FkKiBkb3dubG9h
ZCwgY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmIGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
KQpJbmRleDogU291cmNlL1dlYktpdDIvU2hhcmVkL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDcmVh
dGlvblBhcmFtZXRlcnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9O
ZXR3b3JrL05ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcAkocmV2aXNpb24gMTky
NjAxKQorKysgU291cmNlL1dlYktpdDIvU2hhcmVkL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDcmVh
dGlvblBhcmFtZXRlcnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw4ICsyNiw2IEBACiAjaW5j
bHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRl
cnMuaCIKIAotI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCi0KICNpbmNsdWRlICJBcmd1bWVu
dENvZGVycy5oIgogCiAjaWYgUExBVEZPUk0oQ09DT0EpCkBAIC0xNjgsNSArMTY2LDMgQEAgYm9v
bCBOZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyczo6ZAogfQogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJLaXQKLQotI2VuZGlmIC8vIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCkluZGV4OiBTb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVy
cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9OZXR3b3JrL05ldHdvcmtQ
cm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmgJKHJldmlzaW9uIDE5MjYwMSkKKysrIFNvdXJjZS9X
ZWJLaXQyL1NoYXJlZC9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTI2LDggKzI2LDYgQEAKICNpZm5kZWYgTmV0d29ya1Byb2Nlc3ND
cmVhdGlvblBhcmFtZXRlcnNfaAogI2RlZmluZSBOZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1l
dGVyc19oCiAKLSNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQotCiAjaW5jbHVkZSAiQ2FjaGVN
b2RlbC5oIgogI2luY2x1ZGUgIlNhbmRib3hFeHRlbnNpb24uaCIKICNpbmNsdWRlIDx3dGYvVmVj
dG9yLmg+CkBAIC0xMDMsNiArMTAxLDQgQEAgc3RydWN0IE5ldHdvcmtQcm9jZXNzQ3JlYXRpb25Q
YXJhbWV0ZXJzIAogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAotI2VuZGlmIC8vIEVOQUJMRShO
RVRXT1JLX1BST0NFU1MpCi0KICNlbmRpZiAvLyBOZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1l
dGVyc19oCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvTmV0d29yay9OZXR3b3JrUHJvY2Vz
c1N1cHBsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvTmV0d29y
ay9OZXR3b3JrUHJvY2Vzc1N1cHBsZW1lbnQuaAkocmV2aXNpb24gMTkyNjAxKQorKysgU291cmNl
L1dlYktpdDIvU2hhcmVkL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NTdXBwbGVtZW50LmgJKHdvcmtp
bmcgY29weSkKQEAgLTMzLDEyICszMywxMCBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIHN0cnVjdCBO
ZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyczsKIAogY2xhc3MgTmV0d29ya1Byb2Nlc3NT
dXBwbGVtZW50IDogcHVibGljIENoaWxkUHJvY2Vzc1N1cHBsZW1lbnQgewotI2lmIEVOQUJMRShO
RVRXT1JLX1BST0NFU1MpCiBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGluaXRpYWxpemUoY29u
c3QgTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMmKQogICAgIHsKICAgICB9Ci0jZW5k
aWYKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApJbmRleDogU291cmNlL1dlYktpdDIvU2hh
cmVkL05ldHdvcmsvTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9OZXR3b3JrL05ldHdvcmtSZXNvdXJjZUxvYWRQYXJh
bWV0ZXJzLmNwcAkocmV2aXNpb24gMTkyNjAxKQorKysgU291cmNlL1dlYktpdDIvU2hhcmVkL05l
dHdvcmsvTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0zMCw4ICszMCw2IEBACiAjaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgIldl
YkNvcmVBcmd1bWVudENvZGVycy5oIgogCi0jaWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKLQog
dXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtMTYwLDUg
KzE1OCwzIEBAIGJvb2wgTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnM6OmRlY28KIH0KICAg
ICAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAotCi0jZW5kaWYgLy8gRU5BQkxFKE5FVFdPUktfUFJP
Q0VTUykKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9OZXR3b3JrL05ldHdvcmtSZXNvdXJj
ZUxvYWRQYXJhbWV0ZXJzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvU2hhcmVkL05l
dHdvcmsvTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMuaAkocmV2aXNpb24gMTkyNjAxKQor
KysgU291cmNlL1dlYktpdDIvU2hhcmVkL05ldHdvcmsvTmV0d29ya1Jlc291cmNlTG9hZFBhcmFt
ZXRlcnMuaAkod29ya2luZyBjb3B5KQpAQCAtMzIsOCArMzIsNiBAQAogI2luY2x1ZGUgPFdlYkNv
cmUvUmVzb3VyY2VSZXF1ZXN0Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZXNzaW9uSUQuaD4KIAot
I2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCi0KIG5hbWVzcGFjZSBJUEMgewogICAgIGNsYXNz
IEFyZ3VtZW50RGVjb2RlcjsKICAgICBjbGFzcyBBcmd1bWVudEVuY29kZXI7CkBAIC02OCw2ICs2
Niw0IEBAIHB1YmxpYzoKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKLSNlbmRpZiAvLyBFTkFC
TEUoTkVUV09SS19QUk9DRVNTKQotCiAjZW5kaWYgLy8gTmV0d29ya1Jlc291cmNlTG9hZFBhcmFt
ZXRlcnNfaApJbmRleDogU291cmNlL1dlYktpdDIvU2hhcmVkL05ldHdvcmsvQ3VzdG9tUHJvdG9j
b2xzL0N1c3RvbVByb3RvY29sTWFuYWdlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQy
L1NoYXJlZC9OZXR3b3JrL0N1c3RvbVByb3RvY29scy9DdXN0b21Qcm90b2NvbE1hbmFnZXIuaAko
cmV2aXNpb24gMTkyNjAxKQorKysgU291cmNlL1dlYktpdDIvU2hhcmVkL05ldHdvcmsvQ3VzdG9t
UHJvdG9jb2xzL0N1c3RvbVByb3RvY29sTWFuYWdlci5oCSh3b3JraW5nIGNvcHkpCkBAIC04Mywx
MCArODMsOCBAQCBwcml2YXRlOgogICAgIC8vIFdlYlByb2Nlc3NTdXBwbGVtZW50CiAgICAgdm9p
ZCBpbml0aWFsaXplKGNvbnN0IFdlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMmKSBvdmVycmlk
ZTsKIAotI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCiAgICAgLy8gTmV0d29ya1Byb2Nlc3NT
dXBwbGVtZW50CiAgICAgdm9pZCBpbml0aWFsaXplKGNvbnN0IE5ldHdvcmtQcm9jZXNzQ3JlYXRp
b25QYXJhbWV0ZXJzJikgb3ZlcnJpZGU7Ci0jZW5kaWYKIAogICAgIC8vIElQQzo6TWVzc2FnZVJl
Y2VpdmVyCiAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlv
biYsIElQQzo6TWVzc2FnZURlY29kZXImKSBvdmVycmlkZTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQy
L1NoYXJlZC9OZXR3b3JrL0N1c3RvbVByb3RvY29scy9Db2NvYS9DdXN0b21Qcm90b2NvbE1hbmFn
ZXJDb2NvYS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvTmV0d29yay9D
dXN0b21Qcm90b2NvbHMvQ29jb2EvQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ29jb2EubW0JKHJldmlz
aW9uIDE5MjYwMSkKKysrIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9OZXR3b3JrL0N1c3RvbVByb3Rv
Y29scy9Db2NvYS9DdXN0b21Qcm90b2NvbE1hbmFnZXJDb2NvYS5tbQkod29ya2luZyBjb3B5KQpA
QCAtMzAsNiArMzAsNyBAQAogI2ltcG9ydCAiQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyTWVzc2FnZXMu
aCIKICNpbXBvcnQgIkN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5TWVzc2FnZXMuaCIKICNpbXBv
cnQgIkRhdGFSZWZlcmVuY2UuaCIKKyNpbXBvcnQgIk5ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJh
bWV0ZXJzLmgiCiAjaW1wb3J0ICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIKICNpbXBvcnQgIldl
YlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaCIKICNpbXBvcnQgPFdlYkNvcmUvVVJMLmg+CkBA
IC0zNywxMCArMzgsNiBAQAogI2ltcG9ydCA8V2ViQ29yZS9SZXNvdXJjZVJlcXVlc3QuaD4KICNp
bXBvcnQgPFdlYkNvcmUvUmVzb3VyY2VSZXNwb25zZS5oPgogCi0jaWYgRU5BQkxFKE5FVFdPUktf
UFJPQ0VTUykKLSNpbXBvcnQgIk5ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmgiCi0j
ZW5kaWYKLQogI2lmZGVmIF9faGFzX2luY2x1ZGUKICNpZiBfX2hhc19pbmNsdWRlKDxGb3VuZGF0
aW9uL05TVVJMQ29ubmVjdGlvblByaXZhdGUuaD4pCiAjaW1wb3J0IDxGb3VuZGF0aW9uL05TVVJM
Q29ubmVjdGlvblByaXZhdGUuaD4KQEAgLTEzNywyMiArMTM0LDExIEBAIHZvaWQgQ3VzdG9tUHJv
dG9jb2xNYW5hZ2VyOjppbml0aWFsaXplQ28KIAogdm9pZCBDdXN0b21Qcm90b2NvbE1hbmFnZXI6
OmluaXRpYWxpemUoY29uc3QgV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycyYgcGFyYW1ldGVy
cykKIHsKLSNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQotICAgIEFTU0VSVChwYXJhbWV0ZXJz
LnVybFNjaGVtZXNSZWdpc3RlcmVkRm9yQ3VzdG9tUHJvdG9jb2xzLmlzRW1wdHkoKSB8fCAhcGFy
YW1ldGVycy51c2VzTmV0d29ya1Byb2Nlc3MpOwotICAgIGlmIChwYXJhbWV0ZXJzLnVzZXNOZXR3
b3JrUHJvY2VzcykgewotICAgICAgICBtX2NoaWxkUHJvY2Vzcy0+cGFyZW50UHJvY2Vzc0Nvbm5l
Y3Rpb24oKS0+cmVtb3ZlV29ya1F1ZXVlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpDdXN0b21Q
cm90b2NvbE1hbmFnZXI6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSk7Ci0gICAgICAgIG1fbWVzc2Fn
ZVF1ZXVlID0gbnVsbHB0cjsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSNlbmRpZgotCi0gICAg
W05TVVJMUHJvdG9jb2wgcmVnaXN0ZXJDbGFzczpbV0tDdXN0b21Qcm90b2NvbCBjbGFzc11dOwot
Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBwYXJhbWV0ZXJzLnVybFNjaGVtZXNSZWdpc3Rl
cmVkRm9yQ3VzdG9tUHJvdG9jb2xzLnNpemUoKTsgKytpKQotICAgICAgICByZWdpc3RlclNjaGVt
ZShwYXJhbWV0ZXJzLnVybFNjaGVtZXNSZWdpc3RlcmVkRm9yQ3VzdG9tUHJvdG9jb2xzW2ldKTsK
KyAgICBBU1NFUlQocGFyYW1ldGVycy51cmxTY2hlbWVzUmVnaXN0ZXJlZEZvckN1c3RvbVByb3Rv
Y29scy5pc0VtcHR5KCkpOworICAgIG1fY2hpbGRQcm9jZXNzLT5wYXJlbnRQcm9jZXNzQ29ubmVj
dGlvbigpLT5yZW1vdmVXb3JrUXVldWVNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OkN1c3RvbVBy
b3RvY29sTWFuYWdlcjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpKTsKKyAgICBtX21lc3NhZ2VRdWV1
ZSA9IG51bGxwdHI7CiB9CiAKLSNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQogdm9pZCBDdXN0
b21Qcm90b2NvbE1hbmFnZXI6OmluaXRpYWxpemUoY29uc3QgTmV0d29ya1Byb2Nlc3NDcmVhdGlv
blBhcmFtZXRlcnMmIHBhcmFtZXRlcnMpCiB7CiAgICAgW05TVVJMUHJvdG9jb2wgcmVnaXN0ZXJD
bGFzczpbV0tDdXN0b21Qcm90b2NvbCBjbGFzc11dOwpAQCAtMTYwLDcgKzE0Niw2IEBAIHZvaWQg
Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyOjppbml0aWFsaXplKGMKICAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IHBhcmFtZXRlcnMudXJsU2NoZW1lc1JlZ2lzdGVyZWRGb3JDdXN0b21Qcm90b2NvbHMu
c2l6ZSgpOyArK2kpCiAgICAgICAgIHJlZ2lzdGVyU2NoZW1lKHBhcmFtZXRlcnMudXJsU2NoZW1l
c1JlZ2lzdGVyZWRGb3JDdXN0b21Qcm90b2NvbHNbaV0pOwogfQotI2VuZGlmCiAKIHZvaWQgQ3Vz
dG9tUHJvdG9jb2xNYW5hZ2VyOjphZGRDdXN0b21Qcm90b2NvbChXS0N1c3RvbVByb3RvY29sICpj
dXN0b21Qcm90b2NvbCkKIHsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9OZXR3b3JrL0N1
c3RvbVByb3RvY29scy9zb3VwL0N1c3RvbVByb3RvY29sTWFuYWdlclNvdXAuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9OZXR3b3JrL0N1c3RvbVByb3RvY29scy9zb3Vw
L0N1c3RvbVByb3RvY29sTWFuYWdlclNvdXAuY3BwCShyZXZpc2lvbiAxOTI2MDEpCisrKyBTb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvTmV0d29yay9DdXN0b21Qcm90b2NvbHMvc291cC9DdXN0b21Qcm90
b2NvbE1hbmFnZXJTb3VwLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjMsMTMgKzIzLDEwIEBACiAj
aW5jbHVkZSAiQ2hpbGRQcm9jZXNzLmgiCiAjaW5jbHVkZSAiQ3VzdG9tUHJvdG9jb2xNYW5hZ2Vy
SW1wbC5oIgogI2luY2x1ZGUgIkN1c3RvbVByb3RvY29sTWFuYWdlck1lc3NhZ2VzLmgiCisjaW5j
bHVkZSAiTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaCIKICNpbmNsdWRlICJXZWJQ
cm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9Ob3RJbXBsZW1l
bnRlZC5oPgogCi0jaWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKLSNpbmNsdWRlICJOZXR3b3Jr
UHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oIgotI2VuZGlmCi0KIG5hbWVzcGFjZSBXZWJLaXQg
ewogCiBjb25zdCBjaGFyKiBDdXN0b21Qcm90b2NvbE1hbmFnZXI6OnN1cHBsZW1lbnROYW1lKCkK
QEAgLTUxLDI1ICs0OCwxNiBAQCB2b2lkIEN1c3RvbVByb3RvY29sTWFuYWdlcjo6aW5pdGlhbGl6
ZUNvCiAKIHZvaWQgQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyOjppbml0aWFsaXplKGNvbnN0IFdlYlBy
b2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMmIHBhcmFtZXRlcnMpCiB7Ci0jaWYgRU5BQkxFKE5FVFdP
UktfUFJPQ0VTUykKLSAgICBBU1NFUlQocGFyYW1ldGVycy51cmxTY2hlbWVzUmVnaXN0ZXJlZEZv
ckN1c3RvbVByb3RvY29scy5pc0VtcHR5KCkgfHwgIXBhcmFtZXRlcnMudXNlc05ldHdvcmtQcm9j
ZXNzKTsKLSAgICBpZiAocGFyYW1ldGVycy51c2VzTmV0d29ya1Byb2Nlc3MpIHsKLSAgICAgICAg
bV9jaGlsZFByb2Nlc3MtPnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnJlbW92ZVdvcmtRdWV1
ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyOjptZXNzYWdl
UmVjZWl2ZXJOYW1lKCkpOwotICAgICAgICBtX21lc3NhZ2VRdWV1ZSA9IG51bGxwdHI7Ci0gICAg
ICAgIHJldHVybjsKLSAgICB9Ci0jZW5kaWYKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHBh
cmFtZXRlcnMudXJsU2NoZW1lc1JlZ2lzdGVyZWRGb3JDdXN0b21Qcm90b2NvbHMuc2l6ZSgpOyAr
K2kpCi0gICAgICAgIHJlZ2lzdGVyU2NoZW1lKHBhcmFtZXRlcnMudXJsU2NoZW1lc1JlZ2lzdGVy
ZWRGb3JDdXN0b21Qcm90b2NvbHNbaV0pOworICAgIEFTU0VSVChwYXJhbWV0ZXJzLnVybFNjaGVt
ZXNSZWdpc3RlcmVkRm9yQ3VzdG9tUHJvdG9jb2xzLmlzRW1wdHkoKSk7CisgICAgbV9jaGlsZFBy
b2Nlc3MtPnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnJlbW92ZVdvcmtRdWV1ZU1lc3NhZ2VS
ZWNlaXZlcihNZXNzYWdlczo6Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyOjptZXNzYWdlUmVjZWl2ZXJO
YW1lKCkpOworICAgIG1fbWVzc2FnZVF1ZXVlID0gbnVsbHB0cjsKIH0KIAotI2lmIEVOQUJMRShO
RVRXT1JLX1BST0NFU1MpCiB2b2lkIEN1c3RvbVByb3RvY29sTWFuYWdlcjo6aW5pdGlhbGl6ZShj
b25zdCBOZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycyYgcGFyYW1ldGVycykKIHsKICAg
ICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHBhcmFtZXRlcnMudXJsU2NoZW1lc1JlZ2lzdGVyZWRG
b3JDdXN0b21Qcm90b2NvbHMuc2l6ZSgpOyArK2kpCiAgICAgICAgIHJlZ2lzdGVyU2NoZW1lKHBh
cmFtZXRlcnMudXJsU2NoZW1lc1JlZ2lzdGVyZWRGb3JDdXN0b21Qcm90b2NvbHNbaV0pOwogfQot
I2VuZGlmCiAKIHZvaWQgQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyOjpyZWdpc3RlclNjaGVtZShjb25z
dCBTdHJpbmcmIHNjaGVtZSkKIHsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9lZmwvUHJv
Y2Vzc0V4ZWN1dGFibGVQYXRoRWZsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvZWZsL1Byb2Nlc3NFeGVjdXRhYmxlUGF0aEVmbC5jcHAJKHJldmlzaW9uIDE5MjYwMSkK
KysrIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9lZmwvUHJvY2Vzc0V4ZWN1dGFibGVQYXRoRWZsLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtODEsMTQgKzgxLDEyIEBAIFN0cmluZyBleGVjdXRhYmxlUGF0
aE9mUGx1Z2luUHJvY2VzcygpCiAgICAgcmV0dXJuIHdlYktpdFBsdWdpblByb2Nlc3NOYW1lOwog
fQogCi0jaWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKIFN0cmluZyBleGVjdXRhYmxlUGF0aE9m
TmV0d29ya1Byb2Nlc3MoKQogewogICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxjb25zdCBTdHJp
bmc+IHdlYktpdE5ldHdvcmtQcm9jZXNzTmFtZShmaW5kUHJvY2Vzc1BhdGgoTkVUV09SS1BST0NF
U1NOQU1FKSk7CiAKICAgICByZXR1cm4gd2ViS2l0TmV0d29ya1Byb2Nlc3NOYW1lOwogfQotI2Vu
ZGlmCiAKICNpZiBFTkFCTEUoREFUQUJBU0VfUFJPQ0VTUykKIFN0cmluZyBleGVjdXRhYmxlUGF0
aE9mRGF0YWJhc2VQcm9jZXNzKCkKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9ndGsvUHJv
Y2Vzc0V4ZWN1dGFibGVQYXRoR3RrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvZ3RrL1Byb2Nlc3NFeGVjdXRhYmxlUGF0aEd0ay5jcHAJKHJldmlzaW9uIDE5MjYwMSkK
KysrIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9ndGsvUHJvY2Vzc0V4ZWN1dGFibGVQYXRoR3RrLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNzksMTIgKzc5LDEwIEBAIFN0cmluZyBleGVjdXRhYmxlUGF0
aE9mUGx1Z2luUHJvY2VzcygpCiAgICAgcmV0dXJuIGZpbmRXZWJLaXRQcm9jZXNzKCJXZWJLaXRQ
bHVnaW5Qcm9jZXNzIik7CiB9CiAKLSNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQogU3RyaW5n
IGV4ZWN1dGFibGVQYXRoT2ZOZXR3b3JrUHJvY2VzcygpCiB7CiAgICAgcmV0dXJuIGZpbmRXZWJL
aXRQcm9jZXNzKCJXZWJLaXROZXR3b3JrUHJvY2VzcyIpOwogfQotI2VuZGlmCiAKICNpZiBFTkFC
TEUoREFUQUJBU0VfUFJPQ0VTUykKIFN0cmluZyBleGVjdXRhYmxlUGF0aE9mRGF0YWJhc2VQcm9j
ZXNzKCkKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9tYWMvQ29va2llU3RvcmFnZVNoaW0u
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvbWFjL0Nvb2tpZVN0b3JhZ2VT
aGltLmgJKHJldmlzaW9uIDE5MjYwMSkKKysrIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9tYWMvQ29v
a2llU3RvcmFnZVNoaW0uaAkod29ya2luZyBjb3B5KQpAQCAtMjYsOCArMjYsNiBAQAogI2lmbmRl
ZiBDb29raWVTdG9yYWdlU2hpbV9oCiAjZGVmaW5lIENvb2tpZVN0b3JhZ2VTaGltX2gKIAotI2lm
IEVOQUJMRShORVRXT1JLX1BST0NFU1MpCi0KICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4K
ICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KIApAQCAtNDksNiArNDcsNCBAQCBwcml2
YXRlOgogCiB9CiAKLSNlbmRpZiAvLyBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQotCiAjZW5kaWYg
Ly8gQ29va2llU3RvcmFnZVNoaW1faApJbmRleDogU291cmNlL1dlYktpdDIvU2hhcmVkL21hYy9D
b29raWVTdG9yYWdlU2hpbS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQv
bWFjL0Nvb2tpZVN0b3JhZ2VTaGltLm1tCShyZXZpc2lvbiAxOTI2MDEpCisrKyBTb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvbWFjL0Nvb2tpZVN0b3JhZ2VTaGltLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0y
Niw4ICsyNiw2IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiQ29va2llU3RvcmFn
ZVNoaW0uaCIKIAotI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCi0KICNpbmNsdWRlICJDb29r
aWVTdG9yYWdlU2hpbUxpYnJhcnkuaCIKICNpbmNsdWRlICJOZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzcy5oIgogI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5oIgpAQCAtMTM1
LDUgKzEzMywzIEBAIC0gKHZvaWQpX2dldENvb2tpZUhlYWRlcnNGb3JUYXNrOihOU1VSTFMKIH0K
IAogQGVuZAotCi0jZW5kaWYgLy8gRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9tYWMvQ29va2llU3RvcmFnZVNoaW1MaWJyYXJ5LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvbWFjL0Nvb2tpZVN0b3JhZ2VTaGltTGlicmFy
eS5jcHAJKHJldmlzaW9uIDE5MjYwMSkKKysrIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9tYWMvQ29v
a2llU3RvcmFnZVNoaW1MaWJyYXJ5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjYsNyArMjYsNyBA
QAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkNvb2tpZVN0b3JhZ2VTaGltTGlicmFy
eS5oIgogCi0jaWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykgJiYgIVBMQVRGT1JNKElPUykKKyNp
ZiAhUExBVEZPUk0oSU9TKQogCiAjaW5jbHVkZSA8V2ViQ29yZS9EeW5hbWljTGlua2VySW50ZXJw
b3NpbmcuaD4KIApAQCAtOTAsNCArOTAsNCBAQCB2b2lkIFdlYktpdENvb2tpZVN0b3JhZ2VTaGlt
SW5pdGlhbGl6ZShjCiAgICAgCiB9CiAKLSNlbmRpZiAvLyBFTkFCTEUoTkVUV09SS19QUk9DRVNT
KSAmJiAhUExBVEZPUk0oSU9TKQorI2VuZGlmIC8vICFQTEFURk9STShJT1MpCkluZGV4OiBTb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvbWFjL0Nvb2tpZVN0b3JhZ2VTaGltTGlicmFyeS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9tYWMvQ29va2llU3RvcmFnZVNoaW1MaWJyYXJ5
LmgJKHJldmlzaW9uIDE5MjYwMSkKKysrIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9tYWMvQ29va2ll
U3RvcmFnZVNoaW1MaWJyYXJ5LmgJKHdvcmtpbmcgY29weSkKQEAgLTI2LDggKzI2LDYgQEAKICNp
Zm5kZWYgQ29va2llU3RvcmFnZVNoaW1MaWJyYXJ5X2gKICNkZWZpbmUgQ29va2llU3RvcmFnZVNo
aW1MaWJyYXJ5X2gKIAotI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCi0KIHR5cGVkZWYgc3Ry
dWN0IE9wYXF1ZUNGSFRUUENvb2tpZVN0b3JhZ2UqICBDRkhUVFBDb29raWVTdG9yYWdlUmVmOwog
CiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTQwLDYgKzM4LDQgQEAgdHlwZWRlZiB2b2lkICgqQ29v
a2llU3RvcmFnZVNoaW1Jbml0aWFsaQogCiB9CiAKLSNlbmRpZiAvLyBFTkFCTEUoTkVUV09SS19Q
Uk9DRVNTKQotCiAjZW5kaWYgLy8gQ29va2llU3RvcmFnZVNoaW1MaWJyYXJ5X2gKSW5kZXg6IFNv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Qcm9jZXNzTW9kZWwuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvUHJvY2Vzc01vZGVsLmgJKHJldmlzaW9uIDE5MjYwMSkKKysr
IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Qcm9jZXNzTW9kZWwuaAkod29ya2luZyBjb3B5KQpA
QCAtMSwzOCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJl
IG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBQcm9jZXNzTW9kZWxfaAotI2Rl
ZmluZSBQcm9jZXNzTW9kZWxfaAotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQotZW51bSBQcm9jZXNz
TW9kZWwgewotICAgIFByb2Nlc3NNb2RlbFNoYXJlZFNlY29uZGFyeVByb2Nlc3MsCi0gICAgUHJv
Y2Vzc01vZGVsTXVsdGlwbGVTZWNvbmRhcnlQcm9jZXNzZXMKLX07Ci0KLX0gLy8gbmFtZXNwYWNl
IFdlYktpdAotCi0jZW5kaWYgLy8gUHJvY2Vzc01vZGVsX2gKSW5kZXg6IFNvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9XZWJDb29raWVNYW5hZ2VyUHJveHkuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb29raWVNYW5hZ2VyUHJveHkuY3BwCShyZXZpc2lvbiAx
OTI2MDEpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29va2llTWFuYWdlclByb3h5
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtODUsOCArODUsOCBAQCB2b2lkIFdlYkNvb2tpZU1hbmFn
ZXJQcm94eTo6cHJvY2Vzc0RpZENsCiAKIGJvb2wgV2ViQ29va2llTWFuYWdlclByb3h5OjpzaG91
bGRUZXJtaW5hdGUoV2ViUHJvY2Vzc1Byb3h5KikgY29uc3QKIHsKLSAgICByZXR1cm4gcHJvY2Vz
c1Bvb2woKS0+cHJvY2Vzc01vZGVsKCkgIT0gUHJvY2Vzc01vZGVsU2hhcmVkU2Vjb25kYXJ5UHJv
Y2VzcwotICAgICAgICB8fCAobV9hcnJheUNhbGxiYWNrcy5pc0VtcHR5KCkgJiYgbV9odHRwQ29v
a2llQWNjZXB0UG9saWN5Q2FsbGJhY2tzLmlzRW1wdHkoKSk7CisgICAgLy8gRklYTUU6IFJlbW92
ZSB0aGlzLgorICAgIHJldHVybiB0cnVlOwogfQogCiB2b2lkIFdlYkNvb2tpZU1hbmFnZXJQcm94
eTo6cmVmV2ViQ29udGV4dFN1cHBsZW1lbnQoKQpAQCAtMTYzLDEwICsxNjMsNyBAQCB2b2lkIFdl
YkNvb2tpZU1hbmFnZXJQcm94eTo6c2V0SFRUUENvb2tpCiAgICAgLy8gLSBXaGVuIHRlc3Rpbmcs
IHdlIG9ubHkgaGF2ZSBvbmUgV2ViUHJvY2VzcyBhbmQgb25lIE5ldHdvcmtQcm9jZXNzLCBhbmQg
V2ViS2l0VGVzdFJ1bm5lciBuZXZlciByZXN0YXJ0cyB0aGVtOwogICAgIC8vIC0gV2hlbiBub3Qg
dGVzdGluZywgQ29jb2EgaGFzIHRoZSBwb2xpY3kgcGVyc2lzdGVkLCBhbmQgdGh1cyBuZXcgcHJv
Y2Vzc2VzIHVzZSBpdCAoZXZlbiBmb3IgZXBoZW1lcmFsIHNlc3Npb25zKS4KICAgICBwcm9jZXNz
UG9vbCgpLT5zZW5kVG9BbGxQcm9jZXNzZXMoTWVzc2FnZXM6OldlYkNvb2tpZU1hbmFnZXI6OlNl
dEhUVFBDb29raWVBY2NlcHRQb2xpY3kocG9saWN5KSk7Ci0jaWYgRU5BQkxFKE5FVFdPUktfUFJP
Q0VTUykKLSAgICBpZiAocHJvY2Vzc1Bvb2woKS0+dXNlc05ldHdvcmtQcm9jZXNzKCkpCi0gICAg
ICAgIHByb2Nlc3NQb29sKCktPnNlbmRUb05ldHdvcmtpbmdQcm9jZXNzKE1lc3NhZ2VzOjpXZWJD
b29raWVNYW5hZ2VyOjpTZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KHBvbGljeSkpOwotI2VuZGlm
CisgICAgcHJvY2Vzc1Bvb2woKS0+c2VuZFRvTmV0d29ya2luZ1Byb2Nlc3MoTWVzc2FnZXM6Oldl
YkNvb2tpZU1hbmFnZXI6OlNldEhUVFBDb29raWVBY2NlcHRQb2xpY3kocG9saWN5KSk7CiB9CiAK
IHZvaWQgV2ViQ29va2llTWFuYWdlclByb3h5OjpnZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KHN0
ZDo6ZnVuY3Rpb248dm9pZCAoSFRUUENvb2tpZUFjY2VwdFBvbGljeSwgQ2FsbGJhY2tCYXNlOjpF
cnJvcik+IGNhbGxiYWNrRnVuY3Rpb24pCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
V2ViSW5zcGVjdG9yUHJveHkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9XZWJJbnNwZWN0b3JQcm94eS5jcHAJKHJldmlzaW9uIDE5MjYwMSkKKysrIFNvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9XZWJJbnNwZWN0b3JQcm94eS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTMxMiw3ICszMTIsNiBAQCBXZWJQcm9jZXNzUG9vbCYgV2ViSW5zcGVjdG9yUHJveHk6Omluc3Bl
CiAgICAgLy8gZ3VhcmFudGVlcyBubyBwcm9jZXNzIHNoYXJpbmcgZm9yIG91ciB1c2VyIGludGVy
ZmFjZS4KICAgICBpZiAoIXNfcHJvY2Vzc1Bvb2wpIHsKICAgICAgICAgYXV0byBjb25maWd1cmF0
aW9uID0gQVBJOjpQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb246OmNyZWF0ZVdpdGhMZWdhY3lPcHRp
b25zKCk7Ci0gICAgICAgIGNvbmZpZ3VyYXRpb24tPnNldFByb2Nlc3NNb2RlbChQcm9jZXNzTW9k
ZWxNdWx0aXBsZVNlY29uZGFyeVByb2Nlc3Nlcyk7CiAgICAgICAgIHNfcHJvY2Vzc1Bvb2wgPSAm
V2ViUHJvY2Vzc1Bvb2w6OmNyZWF0ZShjb25maWd1cmF0aW9uLmdldCgpKS5sZWFrUmVmKCk7CiAg
ICAgfTsKIApJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAJ
KHJldmlzaW9uIDE5MjYwMSkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02MCw2ICs2MCw3IEBACiAjaW5jbHVkZSAiTmF0aXZl
V2ViTW91c2VFdmVudC5oIgogI2luY2x1ZGUgIk5hdGl2ZVdlYldoZWVsRXZlbnQuaCIKICNpbmNs
dWRlICJOYXZpZ2F0aW9uQWN0aW9uRGF0YS5oIgorI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzTWVz
c2FnZXMuaCIKICNpbmNsdWRlICJOb3RpZmljYXRpb25QZXJtaXNzaW9uUmVxdWVzdC5oIgogI2lu
Y2x1ZGUgIk5vdGlmaWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlci5oIgogI2luY2x1ZGUg
IlBhZ2VDbGllbnQuaCIKQEAgLTEzOCwxMCArMTM5LDYgQEAKICNpbmNsdWRlIDx3dGYvUmVmQ291
bnRlZExlYWtDb3VudGVyLmg+CiAjZW5kaWYKIAotI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1Mp
Ci0jaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3NNZXNzYWdlcy5oIgotI2VuZGlmCi0KICNpZiBQTEFU
Rk9STShDT0NPQSkKICNpbmNsdWRlICJSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5Lmgi
CiAjaW5jbHVkZSAiUmVtb3RlTGF5ZXJUcmVlU2Nyb2xsaW5nUGVyZm9ybWFuY2VEYXRhLmgiCkBA
IC00ODcsMTAgKzQ4NCw4IEBAIFdlYlBhZ2VQcm94eTo6V2ViUGFnZVByb3h5KFBhZ2VDbGllbnQm
IHAKIAogICAgIG1fcHJvY2Vzcy0+YWRkTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJQYWdl
UHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9wYWdlSUQsICp0aGlzKTsKIAotI2lmIEVO
QUJMRShORVRXT1JLX1BST0NFU1MpCiAgICAgaWYgKG1fc2Vzc2lvbklELmlzRXBoZW1lcmFsKCkp
CiAgICAgICAgIG1fcHJvY2Vzcy0+cHJvY2Vzc1Bvb2woKS5zZW5kVG9OZXR3b3JraW5nUHJvY2Vz
cyhNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OkVuc3VyZVByaXZhdGVCcm93c2luZ1Nlc3Npb24o
bV9zZXNzaW9uSUQpKTsKLSNlbmRpZgogCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgY29uc3Qg
Q0ZJbmRleCB2aWV3U3RhdGVDaGFuZ2VSdW5Mb29wT3JkZXIgPSAoQ0ZJbmRleClSdW5Mb29wT2Jz
ZXJ2ZXI6OldlbGxLbm93blJ1bkxvb3BPcmRlcnM6OkNvcmVBbmltYXRpb25Db21taXQgLSAxOwpA
QCAtNjk2LDEwICs2OTEsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cmVhdHRhY2hUb1dlYlByb2Nl
c3MoCiAgICAgbV9wcm9jZXNzLT5yZW1vdmVXZWJQYWdlKG1fcGFnZUlEKTsKICAgICBtX3Byb2Nl
c3MtPnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6V2ViUGFnZVByb3h5OjptZXNzYWdl
UmVjZWl2ZXJOYW1lKCksIG1fcGFnZUlEKTsKIAotICAgIGlmIChtX3Byb2Nlc3MtPnByb2Nlc3NQ
b29sKCkucHJvY2Vzc01vZGVsKCkgPT0gUHJvY2Vzc01vZGVsU2hhcmVkU2Vjb25kYXJ5UHJvY2Vz
cykKLSAgICAgICAgbV9wcm9jZXNzID0gbV9wcm9jZXNzLT5wcm9jZXNzUG9vbCgpLmVuc3VyZVNo
YXJlZFdlYlByb2Nlc3MoKTsKLSAgICBlbHNlCi0gICAgICAgIG1fcHJvY2VzcyA9IG1fcHJvY2Vz
cy0+cHJvY2Vzc1Bvb2woKS5jcmVhdGVOZXdXZWJQcm9jZXNzUmVzcGVjdGluZ1Byb2Nlc3NDb3Vu
dExpbWl0KCk7CisgICAgbV9wcm9jZXNzID0gbV9wcm9jZXNzLT5wcm9jZXNzUG9vbCgpLmNyZWF0
ZU5ld1dlYlByb2Nlc3NSZXNwZWN0aW5nUHJvY2Vzc0NvdW50TGltaXQoKTsKIAogICAgIEFTU0VS
VChtX3Byb2Nlc3MtPnN0YXRlKCkgIT0gQ2hpbGRQcm9jZXNzUHJveHk6OlN0YXRlOjpUZXJtaW5h
dGVkKTsKICAgICBpZiAobV9wcm9jZXNzLT5zdGF0ZSgpID09IENoaWxkUHJvY2Vzc1Byb3h5OjpT
dGF0ZTo6UnVubmluZykKQEAgLTc3NCwxMCArNzY2LDggQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNl
dFNlc3Npb25JRChTZXNzaW9uSQogICAgIG1fc2Vzc2lvbklEID0gc2Vzc2lvbklEOwogICAgIG1f
cHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0U2Vzc2lvbklEKHNlc3Npb25JRCks
IG1fcGFnZUlEKTsKIAotI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCiAgICAgaWYgKHNlc3Np
b25JRC5pc0VwaGVtZXJhbCgpKQogICAgICAgICBtX3Byb2Nlc3MtPnByb2Nlc3NQb29sKCkuc2Vu
ZFRvTmV0d29ya2luZ1Byb2Nlc3MoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpFbnN1cmVQcml2
YXRlQnJvd3NpbmdTZXNzaW9uKHNlc3Npb25JRCkpOwotI2VuZGlmCiB9CiAKIHZvaWQgV2ViUGFn
ZVByb3h5Ojppbml0aWFsaXplV2ViUGFnZSgpCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAJKHJldmlzaW9uIDE5MjYwMSkKKysrIFNvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM1LDYg
KzM1LDkgQEAKICNpbmNsdWRlICJEb3dubG9hZFByb3h5LmgiCiAjaW5jbHVkZSAiRG93bmxvYWRQ
cm94eU1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgorI2luY2x1ZGUgIk5ldHdvcmtQ
cm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmgiCisjaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3NNZXNz
YWdlcy5oIgorI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzUHJveHkuaCIKICNpbmNsdWRlICJTYW5k
Ym94RXh0ZW5zaW9uLmgiCiAjaW5jbHVkZSAiU3RhdGlzdGljc0RhdGEuaCIKICNpbmNsdWRlICJU
ZXh0Q2hlY2tlci5oIgpAQCAtNzgsMTEgKzgxLDYgQEAKICNpbmNsdWRlICJEYXRhYmFzZVByb2Nl
c3NNZXNzYWdlcy5oIgogI2VuZGlmCiAKLSNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQotI2lu
Y2x1ZGUgIk5ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmgiCi0jaW5jbHVkZSAiTmV0
d29ya1Byb2Nlc3NNZXNzYWdlcy5oIgotI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzUHJveHkuaCIK
LSNlbmRpZgogCiAjaWYgRU5BQkxFKFNFUlZJQ0VfQ09OVFJPTFMpCiAjaW5jbHVkZSAiU2Vydmlj
ZXNDb250cm9sbGVyLmgiCkBAIC0xMDUsOCArMTAzLDYgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYktp
dDsKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLXN0YXRpYyBjb25zdCBkb3VibGUgc2hhcmVkU2Vj
b25kYXJ5UHJvY2Vzc1NodXRkb3duVGltZW91dCA9IDYwOwotCiBERUZJTkVfREVCVUdfT05MWV9H
TE9CQUwoV1RGOjpSZWZDb3VudGVkTGVha0NvdW50ZXIsIHByb2Nlc3NQb29sQ291bnRlciwgKCJX
ZWJQcm9jZXNzUG9vbCIpKTsKIAogUmVmPFdlYlByb2Nlc3NQb29sPiBXZWJQcm9jZXNzUG9vbDo6
Y3JlYXRlKEFQSTo6UHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uJiBjb25maWd1cmF0aW9uKQpAQCAt
MTU5LDEwICsxNTUsOCBAQCBXZWJQcm9jZXNzUG9vbDo6V2ViUHJvY2Vzc1Bvb2woQVBJOjpQcm9j
CiAjZW5kaWYKICAgICAsIG1fc2hvdWxkVXNlVGVzdGluZ05ldHdvcmtTZXNzaW9uKGZhbHNlKQog
ICAgICwgbV9wcm9jZXNzVGVybWluYXRpb25FbmFibGVkKHRydWUpCi0jaWYgRU5BQkxFKE5FVFdP
UktfUFJPQ0VTUykKICAgICAsIG1fY2FuSGFuZGxlSFRUUFNTZXJ2ZXJUcnVzdEV2YWx1YXRpb24o
dHJ1ZSkKICAgICAsIG1fZGlkTmV0d29ya1Byb2Nlc3NDcmFzaChmYWxzZSkKLSNlbmRpZgogI2lm
IFVTRShTT1VQKQogICAgICwgbV9pZ25vcmVUTFNFcnJvcnModHJ1ZSkKICNlbmRpZgpAQCAtMjU0
LDEwICsyNDgsOCBAQCBXZWJQcm9jZXNzUG9vbDo6fldlYlByb2Nlc3NQb29sKCkKICAgICBwcm9j
ZXNzUG9vbENvdW50ZXIuZGVjcmVtZW50KCk7CiAjZW5kaWYKIAotI2lmIEVOQUJMRShORVRXT1JL
X1BST0NFU1MpCiAgICAgaWYgKG1fbmV0d29ya1Byb2Nlc3MpCiAgICAgICAgIG1fbmV0d29ya1By
b2Nlc3MtPnNodXREb3duUHJvY2VzcygpOwotI2VuZGlmCiB9CiAKIHZvaWQgV2ViUHJvY2Vzc1Bv
b2w6OmluaXRpYWxpemVDbGllbnQoY29uc3QgV0tDb250ZXh0Q2xpZW50QmFzZSogY2xpZW50KQpA
QCAtMjkxLDE3ICsyODMsNiBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpzZXREb3dubG9hZENsaWVu
dChzCiAgICAgICAgIG1fZG93bmxvYWRDbGllbnQgPSBXVEY6Om1vdmUoZG93bmxvYWRDbGllbnQp
OwogfQogCi12b2lkIFdlYlByb2Nlc3NQb29sOjpzZXRQcm9jZXNzTW9kZWwoUHJvY2Vzc01vZGVs
IHByb2Nlc3NNb2RlbCkKLXsKLSAgICAvLyBHdWFyZCBhZ2FpbnN0IEFQSSBtaXN1c2UuCi0gICAg
aWYgKCFtX3Byb2Nlc3Nlcy5pc0VtcHR5KCkpCi0gICAgICAgIENSQVNIKCk7Ci0gICAgaWYgKHBy
b2Nlc3NNb2RlbCAhPSBQcm9jZXNzTW9kZWxTaGFyZWRTZWNvbmRhcnlQcm9jZXNzICYmICFtX21l
c3NhZ2VzVG9JbmplY3RlZEJ1bmRsZVBvc3RlZFRvRW1wdHlDb250ZXh0LmlzRW1wdHkoKSkKLSAg
ICAgICAgQ1JBU0goKTsKLQotICAgIG1fY29uZmlndXJhdGlvbi0+c2V0UHJvY2Vzc01vZGVsKHBy
b2Nlc3NNb2RlbCk7Ci19Ci0KIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnNldE1heGltdW1OdW1iZXJP
ZlByb2Nlc3Nlcyh1bnNpZ25lZCBtYXhpbXVtTnVtYmVyT2ZQcm9jZXNzZXMpCiB7CiAgICAgLy8g
R3VhcmQgYWdhaW5zdCBBUEkgbWlzdXNlLgpAQCAtMzEzLDIzICsyOTQsNyBAQCB2b2lkIFdlYlBy
b2Nlc3NQb29sOjpzZXRNYXhpbXVtTnVtYmVyT2ZQCiAKIElQQzo6Q29ubmVjdGlvbiogV2ViUHJv
Y2Vzc1Bvb2w6Om5ldHdvcmtpbmdQcm9jZXNzQ29ubmVjdGlvbigpCiB7Ci0gICAgc3dpdGNoIChw
cm9jZXNzTW9kZWwoKSkgewotICAgIGNhc2UgUHJvY2Vzc01vZGVsU2hhcmVkU2Vjb25kYXJ5UHJv
Y2VzczoKLSNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQotICAgICAgICBpZiAodXNlc05ldHdv
cmtQcm9jZXNzKCkpCi0gICAgICAgICAgICByZXR1cm4gbV9uZXR3b3JrUHJvY2Vzcy0+Y29ubmVj
dGlvbigpOwotI2VuZGlmCi0gICAgICAgIHJldHVybiBtX3Byb2Nlc3Nlc1swXS0+Y29ubmVjdGlv
bigpOwotICAgIGNhc2UgUHJvY2Vzc01vZGVsTXVsdGlwbGVTZWNvbmRhcnlQcm9jZXNzZXM6Ci0j
aWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKLSAgICAgICAgQVNTRVJUKHVzZXNOZXR3b3JrUHJv
Y2VzcygpKTsKLSAgICAgICAgcmV0dXJuIG1fbmV0d29ya1Byb2Nlc3MtPmNvbm5lY3Rpb24oKTsK
LSNlbHNlCi0gICAgICAgIGJyZWFrOwotI2VuZGlmCi0gICAgfQotICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOwotICAgIHJldHVybiAwOworICAgIHJldHVybiBtX25ldHdvcmtQcm9jZXNzLT5jb25u
ZWN0aW9uKCk7CiB9CiAKIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6Omxhbmd1YWdlQ2hhbmdlZCh2b2lk
KiBjb250ZXh0KQpAQCAtMzQwLDggKzMwNSw4IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6Omxhbmd1
YWdlQ2hhbmdlZCh2b2kKIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6Omxhbmd1YWdlQ2hhbmdlZCgpCiB7
CiAgICAgc2VuZFRvQWxsUHJvY2Vzc2VzKE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpVc2VyUHJlZmVy
cmVkTGFuZ3VhZ2VzQ2hhbmdlZCh1c2VyUHJlZmVycmVkTGFuZ3VhZ2VzKCkpKTsKLSNpZiBVU0Uo
U09VUCkgJiYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKLSAgICBpZiAodXNlc05ldHdvcmtQcm9j
ZXNzKCkgJiYgbV9uZXR3b3JrUHJvY2VzcykKKyNpZiBVU0UoU09VUCkKKyAgICBpZiAobV9uZXR3
b3JrUHJvY2VzcykKICAgICAgICAgbV9uZXR3b3JrUHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6TmV0
d29ya1Byb2Nlc3M6OlVzZXJQcmVmZXJyZWRMYW5ndWFnZXNDaGFuZ2VkKHVzZXJQcmVmZXJyZWRM
YW5ndWFnZXMoKSksIDApOwogI2VuZGlmCiB9CkBAIC0zNTYsMjUgKzMyMSw2IEBAIHZvaWQgV2Vi
UHJvY2Vzc1Bvb2w6OnRleHRDaGVja2VyU3RhdGVDaGEKICAgICBzZW5kVG9BbGxQcm9jZXNzZXMo
TWVzc2FnZXM6OldlYlByb2Nlc3M6OlNldFRleHRDaGVja2VyU3RhdGUoVGV4dENoZWNrZXI6OnN0
YXRlKCkpKTsKIH0KIAotdm9pZCBXZWJQcm9jZXNzUG9vbDo6c2V0VXNlc05ldHdvcmtQcm9jZXNz
KGJvb2wgdXNlc05ldHdvcmtQcm9jZXNzKQotewotI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1Mp
Ci0gICAgbV9jb25maWd1cmF0aW9uLT5zZXRVc2VOZXR3b3JrUHJvY2Vzcyh1c2VzTmV0d29ya1By
b2Nlc3MpOwotI2Vsc2UKLSAgICBVTlVTRURfUEFSQU0odXNlc05ldHdvcmtQcm9jZXNzKTsKLSNl
bmRpZgotfQotCi1ib29sIFdlYlByb2Nlc3NQb29sOjp1c2VzTmV0d29ya1Byb2Nlc3MoKSBjb25z
dAotewotI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCi0gICAgcmV0dXJuIG1fY29uZmlndXJh
dGlvbi0+dXNlTmV0d29ya1Byb2Nlc3MoKTsKLSNlbHNlCi0gICAgcmV0dXJuIGZhbHNlOwotI2Vu
ZGlmCi19Ci0KLSNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQogTmV0d29ya1Byb2Nlc3NQcm94
eSYgV2ViUHJvY2Vzc1Bvb2w6OmVuc3VyZU5ldHdvcmtQcm9jZXNzKCkKIHsKICAgICBpZiAobV9u
ZXR3b3JrUHJvY2VzcykKQEAgLTQ1OSw3ICs0MDUsNiBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpn
ZXROZXR3b3JrUHJvY2Vzc0NvCiAKICAgICBtX25ldHdvcmtQcm9jZXNzLT5nZXROZXR3b3JrUHJv
Y2Vzc0Nvbm5lY3Rpb24ocmVwbHkpOwogfQotI2VuZGlmCiAKICNpZiBFTkFCTEUoREFUQUJBU0Vf
UFJPQ0VTUykKIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OmVuc3VyZURhdGFiYXNlUHJvY2VzcygpCkBA
IC01MjcsMTQgKzQ3MiwxMiBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpzZXRBbnlQYWdlR3JvdXBN
aWdoCiB7CiAgICAgbV9pY29uRGF0YWJhc2UtPnNldFByaXZhdGVCcm93c2luZ0VuYWJsZWQocHJp
dmF0ZUJyb3dzaW5nRW5hYmxlZCk7CiAKLSNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQotICAg
IGlmICh1c2VzTmV0d29ya1Byb2Nlc3MoKSAmJiBuZXR3b3JrUHJvY2VzcygpKSB7CisgICAgaWYg
KG5ldHdvcmtQcm9jZXNzKCkpIHsKICAgICAgICAgaWYgKHByaXZhdGVCcm93c2luZ0VuYWJsZWQp
CiAgICAgICAgICAgICBuZXR3b3JrUHJvY2VzcygpLT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJv
Y2Vzczo6RW5zdXJlUHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbihTZXNzaW9uSUQ6OmxlZ2FjeVByaXZh
dGVTZXNzaW9uSUQoKSksIDApOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBuZXR3b3JrUHJv
Y2VzcygpLT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6RGVzdHJveVByaXZhdGVCcm93
c2luZ1Nlc3Npb24oU2Vzc2lvbklEOjpsZWdhY3lQcml2YXRlU2Vzc2lvbklEKCkpLCAwKTsKICAg
ICB9Ci0jZW5kaWYgLy8gRU5BQkxFRChORVRXT1JLX1BST0NFU1MpCiAKICAgICBpZiAocHJpdmF0
ZUJyb3dzaW5nRW5hYmxlZCkKICAgICAgICAgc2VuZFRvQWxsUHJvY2Vzc2VzKE1lc3NhZ2VzOjpX
ZWJQcm9jZXNzOjpFbnN1cmVQcml2YXRlQnJvd3NpbmdTZXNzaW9uKFNlc3Npb25JRDo6bGVnYWN5
UHJpdmF0ZVNlc3Npb25JRCgpKSk7CkBAIC01NjksMjAgKzUxMiw5IEBAIHZvaWQgV2ViUHJvY2Vz
c1Bvb2w6OnByb2Nlc3NEaWRDYWNoZVBhZ2UKICAgICBtX3Byb2Nlc3NXaXRoUGFnZUNhY2hlID0g
cHJvY2VzczsKIH0KIAotV2ViUHJvY2Vzc1Byb3h5JiBXZWJQcm9jZXNzUG9vbDo6ZW5zdXJlU2hh
cmVkV2ViUHJvY2VzcygpCi17Ci0gICAgQVNTRVJUKHByb2Nlc3NNb2RlbCgpID09IFByb2Nlc3NN
b2RlbFNoYXJlZFNlY29uZGFyeVByb2Nlc3MpOwotICAgIGlmIChtX3Byb2Nlc3Nlcy5pc0VtcHR5
KCkpCi0gICAgICAgIGNyZWF0ZU5ld1dlYlByb2Nlc3MoKTsKLSAgICByZXR1cm4gKm1fcHJvY2Vz
c2VzWzBdOwotfQotCiBXZWJQcm9jZXNzUHJveHkmIFdlYlByb2Nlc3NQb29sOjpjcmVhdGVOZXdX
ZWJQcm9jZXNzKCkKIHsKLSNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQotICAgIGlmICh1c2Vz
TmV0d29ya1Byb2Nlc3MoKSkKLSAgICAgICAgZW5zdXJlTmV0d29ya1Byb2Nlc3MoKTsKLSNlbmRp
ZgorICAgIGVuc3VyZU5ldHdvcmtQcm9jZXNzKCk7CiAKICAgICBSZWY8V2ViUHJvY2Vzc1Byb3h5
PiBwcm9jZXNzID0gV2ViUHJvY2Vzc1Byb3h5OjpjcmVhdGUoKnRoaXMpOwogCkBAIC02NDYsNyAr
NTc4LDcgQEAgV2ViUHJvY2Vzc1Byb3h5JiBXZWJQcm9jZXNzUG9vbDo6Y3JlYXRlTgogICAgIC8v
IGljb25EYXRhYmFzZVBhdGggaXMgbm9uLWVtcHR5IGJ5IGRlZmF1bHQsIGJ1dCBtX2ljb25EYXRh
YmFzZSBpc24ndCBlbmFibGVkIGluIFVJIHByb2Nlc3MgdW5sZXNzIHNldERhdGFiYXNlUGF0aCBp
cyBjYWxsZWQgZXhwbGljaXRseS4KICAgICBwYXJhbWV0ZXJzLmljb25EYXRhYmFzZUVuYWJsZWQg
PSAhaWNvbkRhdGFiYXNlUGF0aCgpLmlzRW1wdHkoKTsKIAotICAgIHBhcmFtZXRlcnMudGVybWlu
YXRpb25UaW1lb3V0ID0gKHByb2Nlc3NNb2RlbCgpID09IFByb2Nlc3NNb2RlbFNoYXJlZFNlY29u
ZGFyeVByb2Nlc3MpID8gc2hhcmVkU2Vjb25kYXJ5UHJvY2Vzc1NodXRkb3duVGltZW91dCA6IDA7
CisgICAgcGFyYW1ldGVycy50ZXJtaW5hdGlvblRpbWVvdXQgPSAwOwogCiAgICAgcGFyYW1ldGVy
cy50ZXh0Q2hlY2tlclN0YXRlID0gVGV4dENoZWNrZXI6OnN0YXRlKCk7CiAKQEAgLTY1OSwxMCAr
NTkxLDYgQEAgV2ViUHJvY2Vzc1Byb3h5JiBXZWJQcm9jZXNzUG9vbDo6Y3JlYXRlTgogICAgIHN1
cHBsZW1lbnQ8V2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5PigpLT5wb3B1bGF0ZUNvcHlPZk5v
dGlmaWNhdGlvblBlcm1pc3Npb25zKHBhcmFtZXRlcnMubm90aWZpY2F0aW9uUGVybWlzc2lvbnMp
OwogI2VuZGlmCiAKLSNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQotICAgIHBhcmFtZXRlcnMu
dXNlc05ldHdvcmtQcm9jZXNzID0gdXNlc05ldHdvcmtQcm9jZXNzKCk7Ci0jZW5kaWYKLQogICAg
IHBhcmFtZXRlcnMucGx1Z0luQXV0b1N0YXJ0T3JpZ2luSGFzaGVzID0gbV9wbHVnSW5BdXRvU3Rh
cnRQcm92aWRlci5hdXRvU3RhcnRPcmlnaW5IYXNoZXNDb3B5KCk7CiAgICAgY29weVRvVmVjdG9y
KG1fcGx1Z0luQXV0b1N0YXJ0UHJvdmlkZXIuYXV0b1N0YXJ0T3JpZ2lucygpLCBwYXJhbWV0ZXJz
LnBsdWdJbkF1dG9TdGFydE9yaWdpbnMpOwogCkBAIC03MDYsMTUgKzYzNCw3IEBAIFdlYlByb2Nl
c3NQcm94eSYgV2ViUHJvY2Vzc1Bvb2w6OmNyZWF0ZU4KIAogICAgIG1fcHJvY2Vzc2VzLmFwcGVu
ZChwcm9jZXNzLnB0cigpKTsKIAotICAgIGlmIChwcm9jZXNzTW9kZWwoKSA9PSBQcm9jZXNzTW9k
ZWxTaGFyZWRTZWNvbmRhcnlQcm9jZXNzKSB7Ci0gICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
ICE9IG1fbWVzc2FnZXNUb0luamVjdGVkQnVuZGxlUG9zdGVkVG9FbXB0eUNvbnRleHQuc2l6ZSgp
OyArK2kpIHsKLSAgICAgICAgICAgIGF1dG8mIG1lc3NhZ2VOYW1lQW5kQm9keSA9IG1fbWVzc2Fn
ZXNUb0luamVjdGVkQnVuZGxlUG9zdGVkVG9FbXB0eUNvbnRleHRbaV07Ci0KLSAgICAgICAgICAg
IHByb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlByb2Nlc3M6OkhhbmRsZUluamVjdGVkQnVuZGxl
TWVzc2FnZShtZXNzYWdlTmFtZUFuZEJvZHkuZmlyc3QsIFVzZXJEYXRhKHByb2Nlc3MtPnRyYW5z
Zm9ybU9iamVjdHNUb0hhbmRsZXMobWVzc2FnZU5hbWVBbmRCb2R5LnNlY29uZC5nZXQoKSkuZ2V0
KCkpKSwgMCk7Ci0gICAgICAgIH0KLSAgICAgICAgbV9tZXNzYWdlc1RvSW5qZWN0ZWRCdW5kbGVQ
b3N0ZWRUb0VtcHR5Q29udGV4dC5jbGVhcigpOwotICAgIH0gZWxzZQotICAgICAgICBBU1NFUlQo
bV9tZXNzYWdlc1RvSW5qZWN0ZWRCdW5kbGVQb3N0ZWRUb0VtcHR5Q29udGV4dC5pc0VtcHR5KCkp
OworICAgIEFTU0VSVChtX21lc3NhZ2VzVG9JbmplY3RlZEJ1bmRsZVBvc3RlZFRvRW1wdHlDb250
ZXh0LmlzRW1wdHkoKSk7CiAKICNpZiBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKICAgICAvLyBJ
bml0aWFsaXplIHJlbW90ZSBpbnNwZWN0b3IgY29ubmVjdGlvbiBub3cgdGhhdCB3ZSBoYXZlIGEg
c3ViLXByb2Nlc3MgdGhhdCBpcyBob3N0aW5nIG9uZSBvZiBvdXIgd2ViIHZpZXdzLgpAQCAtNzk4
LDI4ICs3MTgsMTIgQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6ZGlzY29ubmVjdFByb2Nlc3MoVwog
CiAgICAgLy8gRklYTUUgKE11bHRpLVdlYlByb2Nlc3MpOiA8cmRhcjovL3Byb2JsZW0vMTIyMzk3
NjU+IFNvbWUgb2YgdGhlIGludmFsaWRhdGlvbiBjYWxscyBiZWxvdyBhcmUgc3RpbGwgbmVjZXNz
YXJ5IGluIG11bHRpLXByb2Nlc3MgbW9kZSwgYnV0IHRoZXkgc2hvdWxkIG9ubHkgYWZmZWN0IGRh
dGEgc3RydWN0dXJlcyBwZXJ0YWluaW5nIHRvIHRoZSBwcm9jZXNzIGJlaW5nIGRpc2Nvbm5lY3Rl
ZC4KICAgICAvLyBDbGVhcmluZyBldmVyeXRoaW5nIGNhdXNlcyBhc3NlcnRpb24gZmFpbHVyZXMs
IHNvIGl0J3MgbGVzcyB0cm91YmxlIHRvIHNraXAgdGhhdCBmb3Igbm93LgotICAgIGlmIChwcm9j
ZXNzTW9kZWwoKSAhPSBQcm9jZXNzTW9kZWxTaGFyZWRTZWNvbmRhcnlQcm9jZXNzKSB7Ci0gICAg
ICAgIFJlZlB0cjxXZWJQcm9jZXNzUHJveHk+IHByb3RlY3QocHJvY2Vzcyk7Ci0gICAgICAgIGlm
IChtX3Byb2Nlc3NXaXRoUGFnZUNhY2hlID09IHByb2Nlc3MpCi0gICAgICAgICAgICBtX3Byb2Nl
c3NXaXRoUGFnZUNhY2hlID0gMDsKLQotICAgICAgICBzdGF0aWNfY2FzdDxXZWJDb250ZXh0U3Vw
cGxlbWVudCo+KHN1cHBsZW1lbnQ8V2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk+KCkpLT5wcm9j
ZXNzRGlkQ2xvc2UocHJvY2Vzcyk7Ci0KLSAgICAgICAgbV9wcm9jZXNzZXMucmVtb3ZlRmlyc3Qo
cHJvY2Vzcyk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBXZWJDb250ZXh0U3VwcGxl
bWVudE1hcDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBtX3N1cHBsZW1lbnRzLmJlZ2luKCk7Ci0gICAg
V2ViQ29udGV4dFN1cHBsZW1lbnRNYXA6OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IG1fc3VwcGxlbWVu
dHMuZW5kKCk7Ci0gICAgZm9yICg7IGl0ICE9IGVuZDsgKytpdCkKLSAgICAgICAgaXQtPnZhbHVl
LT5wcm9jZXNzRGlkQ2xvc2UocHJvY2Vzcyk7Ci0KLSAgICAvLyBUaGUgdmVjdG9yIG1heSBoYXZl
IHRoZSBsYXN0IHJlZmVyZW5jZSB0byBwcm9jZXNzIHByb3h5LCB3aGljaCBpbiB0dXJuIG1heSBo
YXZlIHRoZSBsYXN0IHJlZmVyZW5jZSB0byB0aGUgY29udGV4dC4KLSAgICAvLyBTaW5jZSB2ZWN0
b3IgZWxlbWVudHMgYXJlIGRlc3Ryb3llZCBpbiBwbGFjZSwgd2Ugd291bGQgcmVjdXJzZSBpbnRv
IFdlYlByb2Nlc3NQcm94eSBkZXN0cnVjdG9yCi0gICAgLy8gaWYgaXQgd2VyZSBpbnZva2VkIGZy
b20gVmVjdG9yOjpyZW1vdmUoKS4gUmVmUHRyIGRlbGF5cyBkZXN0cnVjdGlvbiB1bnRpbCBpdCdz
IHNhZmUuCiAgICAgUmVmUHRyPFdlYlByb2Nlc3NQcm94eT4gcHJvdGVjdChwcm9jZXNzKTsKICAg
ICBpZiAobV9wcm9jZXNzV2l0aFBhZ2VDYWNoZSA9PSBwcm9jZXNzKQotICAgICAgICBtX3Byb2Nl
c3NXaXRoUGFnZUNhY2hlID0gbnVsbHB0cjsKKyAgICAgICAgbV9wcm9jZXNzV2l0aFBhZ2VDYWNo
ZSA9IDA7CisKKyAgICBzdGF0aWNfY2FzdDxXZWJDb250ZXh0U3VwcGxlbWVudCo+KHN1cHBsZW1l
bnQ8V2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk+KCkpLT5wcm9jZXNzRGlkQ2xvc2UocHJvY2Vz
cyk7CisKICAgICBtX3Byb2Nlc3Nlcy5yZW1vdmVGaXJzdChwcm9jZXNzKTsKIH0KIApAQCAtODUx
LDE4ICs3NTUsMTQgQEAgUmVmPFdlYlBhZ2VQcm94eT4gV2ViUHJvY2Vzc1Bvb2w6OmNyZWF0ZQog
ICAgIH0KIAogICAgIFJlZlB0cjxXZWJQcm9jZXNzUHJveHk+IHByb2Nlc3M7Ci0gICAgaWYgKHBy
b2Nlc3NNb2RlbCgpID09IFByb2Nlc3NNb2RlbFNoYXJlZFNlY29uZGFyeVByb2Nlc3MpIHsKLSAg
ICAgICAgcHJvY2VzcyA9ICZlbnN1cmVTaGFyZWRXZWJQcm9jZXNzKCk7Ci0gICAgfSBlbHNlIHsK
LSAgICAgICAgaWYgKG1faGF2ZUluaXRpYWxFbXB0eVByb2Nlc3MpIHsKLSAgICAgICAgICAgIHBy
b2Nlc3MgPSBtX3Byb2Nlc3Nlcy5sYXN0KCk7Ci0gICAgICAgICAgICBtX2hhdmVJbml0aWFsRW1w
dHlQcm9jZXNzID0gZmFsc2U7Ci0gICAgICAgIH0gZWxzZSBpZiAocGFnZUNvbmZpZ3VyYXRpb24t
PnJlbGF0ZWRQYWdlKCkpIHsKLSAgICAgICAgICAgIC8vIFNoYXJpbmcgcHJvY2Vzc2VzLCBlLmcu
IHdoZW4gY3JlYXRpbmcgdGhlIHBhZ2UgdmlhIHdpbmRvdy5vcGVuKCkuCi0gICAgICAgICAgICBw
cm9jZXNzID0gJnBhZ2VDb25maWd1cmF0aW9uLT5yZWxhdGVkUGFnZSgpLT5wcm9jZXNzKCk7Ci0g
ICAgICAgIH0gZWxzZQotICAgICAgICAgICAgcHJvY2VzcyA9ICZjcmVhdGVOZXdXZWJQcm9jZXNz
UmVzcGVjdGluZ1Byb2Nlc3NDb3VudExpbWl0KCk7Ci0gICAgfQorICAgIGlmIChtX2hhdmVJbml0
aWFsRW1wdHlQcm9jZXNzKSB7CisgICAgICAgIHByb2Nlc3MgPSBtX3Byb2Nlc3Nlcy5sYXN0KCk7
CisgICAgICAgIG1faGF2ZUluaXRpYWxFbXB0eVByb2Nlc3MgPSBmYWxzZTsKKyAgICB9IGVsc2Ug
aWYgKHBhZ2VDb25maWd1cmF0aW9uLT5yZWxhdGVkUGFnZSgpKSB7CisgICAgICAgIC8vIFNoYXJp
bmcgcHJvY2Vzc2VzLCBlLmcuIHdoZW4gY3JlYXRpbmcgdGhlIHBhZ2UgdmlhIHdpbmRvdy5vcGVu
KCkuCisgICAgICAgIHByb2Nlc3MgPSAmcGFnZUNvbmZpZ3VyYXRpb24tPnJlbGF0ZWRQYWdlKCkt
PnByb2Nlc3MoKTsKKyAgICB9IGVsc2UKKyAgICAgICAgcHJvY2VzcyA9ICZjcmVhdGVOZXdXZWJQ
cm9jZXNzUmVzcGVjdGluZ1Byb2Nlc3NDb3VudExpbWl0KCk7CiAKICAgICByZXR1cm4gcHJvY2Vz
cy0+Y3JlYXRlV2ViUGFnZShwYWdlQ2xpZW50LCBXVEY6Om1vdmUocGFnZUNvbmZpZ3VyYXRpb24p
KTsKIH0KQEAgLTg3MCwxOCArNzcwLDE2IEBAIFJlZjxXZWJQYWdlUHJveHk+IFdlYlByb2Nlc3NQ
b29sOjpjcmVhdGUKIERvd25sb2FkUHJveHkqIFdlYlByb2Nlc3NQb29sOjpkb3dubG9hZChXZWJQ
YWdlUHJveHkqIGluaXRpYXRpbmdQYWdlLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3Qp
CiB7CiAgICAgRG93bmxvYWRQcm94eSogZG93bmxvYWRQcm94eSA9IGNyZWF0ZURvd25sb2FkUHJv
eHkocmVxdWVzdCk7Ci0gICAgdWludDY0X3QgaW5pdGlhdGluZ1BhZ2VJRCA9IGluaXRpYXRpbmdQ
YWdlID8gaW5pdGlhdGluZ1BhZ2UtPnBhZ2VJRCgpIDogMDsKICAgICBTZXNzaW9uSUQgc2Vzc2lv
bklEID0gaW5pdGlhdGluZ1BhZ2UgPyBpbml0aWF0aW5nUGFnZS0+c2Vzc2lvbklEKCkgOiBTZXNz
aW9uSUQ6OmRlZmF1bHRTZXNzaW9uSUQoKTsKIAotI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1Mp
Ci0gICAgaWYgKHVzZXNOZXR3b3JrUHJvY2VzcygpICYmIG5ldHdvcmtQcm9jZXNzKCkpIHsKKyAg
ICBpZiAobmV0d29ya1Byb2Nlc3MoKSkgewogICAgICAgICAvLyBGSVhNRSAoTmV0d29ya1Byb2Nl
c3MpOiBSZXBsaWNhdGUgd2hhdGV2ZXIgRnJhbWVMb2FkZXI6OnNldE9yaWdpbmFsVVJMRm9yRG93
bmxvYWRSZXF1ZXN0IGRvZXMgd2l0aCB0aGUgcmVxdWVzdCBoZXJlLgogICAgICAgICBuZXR3b3Jr
UHJvY2VzcygpLT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6RG93bmxvYWRSZXF1ZXN0
KHNlc3Npb25JRCwgZG93bmxvYWRQcm94eS0+ZG93bmxvYWRJRCgpLCByZXF1ZXN0KSwgMCk7CiAg
ICAgICAgIHJldHVybiBkb3dubG9hZFByb3h5OwogICAgIH0KLSNlbmRpZgogCi0gICAgbV9wcm9j
ZXNzZXNbMF0tPnNlbmQoTWVzc2FnZXM6OldlYlByb2Nlc3M6OkRvd25sb2FkUmVxdWVzdChzZXNz
aW9uSUQsIGRvd25sb2FkUHJveHktPmRvd25sb2FkSUQoKSwgaW5pdGlhdGluZ1BhZ2VJRCwgcmVx
dWVzdCksIDApOworICAgIC8vIEZJWE1FOiBtYWtlIG5ldHdvcmtQcm9jZXNzKCkgcmV0dXJuIGEg
cmVmZXJlbmNlIHNvIHRoaXMgaXMgbm90IG5lY2Vzc2FyeS4KKyAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKICAgICByZXR1cm4gZG93bmxvYWRQcm94eTsKIH0KIApAQCAtODkzLDI1ICs3OTEsMTgg
QEAgRG93bmxvYWRQcm94eSogV2ViUHJvY2Vzc1Bvb2w6OnJlc3VtZURvdwogICAgIGlmICghcGF0
aC5pc0VtcHR5KCkpCiAgICAgICAgIFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZShwYXRo
LCBTYW5kYm94RXh0ZW5zaW9uOjpSZWFkV3JpdGUsIHNhbmRib3hFeHRlbnNpb25IYW5kbGUpOwog
Ci0jaWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKLSAgICBpZiAodXNlc05ldHdvcmtQcm9jZXNz
KCkgJiYgbmV0d29ya1Byb2Nlc3MoKSkgeworICAgIGlmIChuZXR3b3JrUHJvY2VzcygpKSB7CiAg
ICAgICAgIG5ldHdvcmtQcm9jZXNzKCktPnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpS
ZXN1bWVEb3dubG9hZChkb3dubG9hZFByb3h5LT5kb3dubG9hZElEKCksIHJlc3VtZURhdGEtPmRh
dGFSZWZlcmVuY2UoKSwgcGF0aCwgc2FuZGJveEV4dGVuc2lvbkhhbmRsZSksIDApOwogICAgICAg
ICByZXR1cm4gZG93bmxvYWRQcm94eTsKICAgICB9Ci0jZW5kaWYKIAotICAgIG1fcHJvY2Vzc2Vz
WzBdLT5zZW5kKE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpSZXN1bWVEb3dubG9hZChkb3dubG9hZFBy
b3h5LT5kb3dubG9hZElEKCksIHJlc3VtZURhdGEtPmRhdGFSZWZlcmVuY2UoKSwgcGF0aCwgc2Fu
ZGJveEV4dGVuc2lvbkhhbmRsZSksIDApOworICAgIC8vIEZJWE1FOiBtYWtlIG5ldHdvcmtQcm9j
ZXNzKCkgcmV0dXJuIGEgcmVmZXJlbmNlIHNvIHRoaXMgaXMgbm90IG5lY2Vzc2FyeS4KKyAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICByZXR1cm4gZG93bmxvYWRQcm94eTsKIH0KIAogdm9p
ZCBXZWJQcm9jZXNzUG9vbDo6cG9zdE1lc3NhZ2VUb0luamVjdGVkQnVuZGxlKGNvbnN0IFN0cmlu
ZyYgbWVzc2FnZU5hbWUsIEFQSTo6T2JqZWN0KiBtZXNzYWdlQm9keSkKIHsKLSAgICBpZiAobV9w
cm9jZXNzZXMuaXNFbXB0eSgpKSB7Ci0gICAgICAgIGlmIChwcm9jZXNzTW9kZWwoKSA9PSBQcm9j
ZXNzTW9kZWxTaGFyZWRTZWNvbmRhcnlQcm9jZXNzKQotICAgICAgICAgICAgbV9tZXNzYWdlc1Rv
SW5qZWN0ZWRCdW5kbGVQb3N0ZWRUb0VtcHR5Q29udGV4dC5hcHBlbmQoc3RkOjptYWtlX3BhaXIo
bWVzc2FnZU5hbWUsIG1lc3NhZ2VCb2R5KSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KICAg
ICBmb3IgKGF1dG8mIHByb2Nlc3MgOiBtX3Byb2Nlc3NlcykgewogICAgICAgICAvLyBGSVhNRTog
UmV0dXJuIGVhcmx5IGlmIHRoZSBtZXNzYWdlIGJvZHkgY29udGFpbnMgYW55IHJlZmVyZW5jZXMg
dG8gV0tQYWdlUmVmcy9XS0ZyYW1lUmVmcyBldGMuIHNpbmNlIHRoZXkncmUgbG9jYWwgdG8gYSBw
cm9jZXNzLgogICAgICAgICBwcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpIYW5k
bGVJbmplY3RlZEJ1bmRsZU1lc3NhZ2UobWVzc2FnZU5hbWUsIFVzZXJEYXRhKHByb2Nlc3MtPnRy
YW5zZm9ybU9iamVjdHNUb0hhbmRsZXMobWVzc2FnZUJvZHkpLmdldCgpKSksIDApOwpAQCAtOTQw
LDcgKzgzMSw2IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnNldEFkZGl0aW9uYWxQbHVnaW4KIH0K
ICNlbmRpZiAvLyBFTkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQSSkKIAotI2lmIEVOQUJMRShORVRX
T1JLX1BST0NFU1MpCiBQbGF0Zm9ybVByb2Nlc3NJZGVudGlmaWVyIFdlYlByb2Nlc3NQb29sOjpu
ZXR3b3JrUHJvY2Vzc0lkZW50aWZpZXIoKQogewogICAgIGlmICghbV9uZXR3b3JrUHJvY2VzcykK
QEAgLTk0OCw3ICs4MzgsNiBAQCBQbGF0Zm9ybVByb2Nlc3NJZGVudGlmaWVyIFdlYlByb2Nlc3NQ
b29sCiAKICAgICByZXR1cm4gbV9uZXR3b3JrUHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKTsK
IH0KLSNlbmRpZgogCiB2b2lkIFdlYlByb2Nlc3NQb29sOjpzZXRBbHdheXNVc2VzQ29tcGxleFRl
eHRDb2RlUGF0aChib29sIGFsd2F5c1VzZUNvbXBsZXhUZXh0KQogewpAQCAtOTg4LDE1ICs4Nzcs
OSBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpzZXREb21haW5SZWxheGF0aW9uCiAKIHZvaWQgV2Vi
UHJvY2Vzc1Bvb2w6OnNldENhbkhhbmRsZUhUVFBTU2VydmVyVHJ1c3RFdmFsdWF0aW9uKGJvb2wg
dmFsdWUpCiB7Ci0jaWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKICAgICBtX2NhbkhhbmRsZUhU
VFBTU2VydmVyVHJ1c3RFdmFsdWF0aW9uID0gdmFsdWU7Ci0gICAgaWYgKHVzZXNOZXR3b3JrUHJv
Y2VzcygpICYmIG1fbmV0d29ya1Byb2Nlc3MpIHsKKyAgICBpZiAobV9uZXR3b3JrUHJvY2VzcykK
ICAgICAgICAgbV9uZXR3b3JrUHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6
OlNldENhbkhhbmRsZUhUVFBTU2VydmVyVHJ1c3RFdmFsdWF0aW9uKHZhbHVlKSwgMCk7Ci0gICAg
ICAgIHJldHVybjsKLSAgICB9Ci0jZWxzZQotICAgIFVOVVNFRF9QQVJBTSh2YWx1ZSk7Ci0jZW5k
aWYKIH0KIAogdm9pZCBXZWJQcm9jZXNzUG9vbDo6cmVnaXN0ZXJVUkxTY2hlbWVBc0xvY2FsKGNv
bnN0IFN0cmluZyYgdXJsU2NoZW1lKQpAQCAtMTA2NCwxMCArOTQ3LDggQEAgdm9pZCBXZWJQcm9j
ZXNzUG9vbDo6c2V0Q2FjaGVNb2RlbChDYWNoZQogICAgIG1fY29uZmlndXJhdGlvbi0+c2V0Q2Fj
aGVNb2RlbChjYWNoZU1vZGVsKTsKICAgICBzZW5kVG9BbGxQcm9jZXNzZXMoTWVzc2FnZXM6Oldl
YlByb2Nlc3M6OlNldENhY2hlTW9kZWwoY2FjaGVNb2RlbCkpOwogCi0jaWYgRU5BQkxFKE5FVFdP
UktfUFJPQ0VTUykKLSAgICBpZiAodXNlc05ldHdvcmtQcm9jZXNzKCkgJiYgbV9uZXR3b3JrUHJv
Y2VzcykKKyAgICBpZiAobV9uZXR3b3JrUHJvY2VzcykKICAgICAgICAgbV9uZXR3b3JrUHJvY2Vz
cy0+c2VuZChNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OlNldENhY2hlTW9kZWwoY2FjaGVNb2Rl
bCksIDApOwotI2VuZGlmCiB9CiAKIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnNldERlZmF1bHRSZXF1
ZXN0VGltZW91dEludGVydmFsKGRvdWJsZSB0aW1lb3V0SW50ZXJ2YWwpCkBAIC0xMDc3LDE1ICs5
NTgsOSBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpzZXREZWZhdWx0UmVxdWVzdFRpCiAKIERvd25s
b2FkUHJveHkqIFdlYlByb2Nlc3NQb29sOjpjcmVhdGVEb3dubG9hZFByb3h5KGNvbnN0IFJlc291
cmNlUmVxdWVzdCYgcmVxdWVzdCkKIHsKLSNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQotICAg
IGlmICh1c2VzTmV0d29ya1Byb2Nlc3MoKSkgewotICAgICAgICBlbnN1cmVOZXR3b3JrUHJvY2Vz
cygpOwotICAgICAgICBBU1NFUlQobV9uZXR3b3JrUHJvY2Vzcyk7Ci0gICAgICAgIHJldHVybiBt
X25ldHdvcmtQcm9jZXNzLT5jcmVhdGVEb3dubG9hZFByb3h5KHJlcXVlc3QpOwotICAgIH0KLSNl
bmRpZgotCi0gICAgcmV0dXJuIGVuc3VyZVNoYXJlZFdlYlByb2Nlc3MoKS5jcmVhdGVEb3dubG9h
ZFByb3h5KHJlcXVlc3QpOworICAgIGVuc3VyZU5ldHdvcmtQcm9jZXNzKCk7CisgICAgQVNTRVJU
KG1fbmV0d29ya1Byb2Nlc3MpOworICAgIHJldHVybiBtX25ldHdvcmtQcm9jZXNzLT5jcmVhdGVE
b3dubG9hZFByb3h5KHJlcXVlc3QpOwogfQogCiB2b2lkIFdlYlByb2Nlc3NQb29sOjphZGRNZXNz
YWdlUmVjZWl2ZXIoSVBDOjpTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFtZSwgSVBD
OjpNZXNzYWdlUmVjZWl2ZXImIG1lc3NhZ2VSZWNlaXZlcikKQEAgLTExODIsMTIgKzEwNTcsMTAg
QEAgU3RyaW5nIFdlYlByb2Nlc3NQb29sOjpjb29raWVTdG9yYWdlRGlyZQogdm9pZCBXZWJQcm9j
ZXNzUG9vbDo6dXNlVGVzdGluZ05ldHdvcmtTZXNzaW9uKCkKIHsKICAgICBBU1NFUlQobV9wcm9j
ZXNzZXMuaXNFbXB0eSgpKTsKLSNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQogICAgIEFTU0VS
VCghbV9uZXR3b3JrUHJvY2Vzcyk7CiAKICAgICBpZiAobV9uZXR3b3JrUHJvY2VzcykKICAgICAg
ICAgcmV0dXJuOwotI2VuZGlmCiAKICAgICBpZiAoIW1fcHJvY2Vzc2VzLmlzRW1wdHkoKSkKICAg
ICAgICAgcmV0dXJuOwpAQCAtMTE5NywyMiArMTA3MCwxOCBAQCB2b2lkIFdlYlByb2Nlc3NQb29s
Ojp1c2VUZXN0aW5nTmV0d29ya1NlCiAKIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OmFsbG93U3BlY2lm
aWNIVFRQU0NlcnRpZmljYXRlRm9ySG9zdChjb25zdCBXZWJDZXJ0aWZpY2F0ZUluZm8qIGNlcnRp
ZmljYXRlLCBjb25zdCBTdHJpbmcmIGhvc3QpCiB7Ci0jaWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VT
UykKLSAgICBpZiAodXNlc05ldHdvcmtQcm9jZXNzKCkgJiYgbV9uZXR3b3JrUHJvY2Vzcykgewor
ICAgIGlmIChtX25ldHdvcmtQcm9jZXNzKSB7CiAgICAgICAgIG1fbmV0d29ya1Byb2Nlc3MtPnNl
bmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpBbGxvd1NwZWNpZmljSFRUUFNDZXJ0aWZpY2F0
ZUZvckhvc3QoY2VydGlmaWNhdGUtPmNlcnRpZmljYXRlSW5mbygpLCBob3N0KSwgMCk7CiAgICAg
ICAgIHJldHVybjsKICAgICB9Ci0jZW5kaWYKIAogI2lmIFVTRShTT1VQKQogICAgIG1fcHJvY2Vz
c2VzWzBdLT5zZW5kKE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpBbGxvd1NwZWNpZmljSFRUUFNDZXJ0
aWZpY2F0ZUZvckhvc3QoY2VydGlmaWNhdGUtPmNlcnRpZmljYXRlSW5mbygpLCBob3N0KSwgMCk7
CiAgICAgcmV0dXJuOwotI2Vsc2UKLSAgICBVTlVTRURfUEFSQU0oY2VydGlmaWNhdGUpOwotICAg
IFVOVVNFRF9QQVJBTShob3N0KTsKICNlbmRpZgogCiAjaWYgIVBMQVRGT1JNKElPUykKKyAgICAv
LyBGSVhNRTogV2h5IGlzIHRoaXMgb25seSBvbiBpT1M/IENhbiB3ZSByZW1vdmUgaXQ/CiAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7CiAjZW5kaWYKIH0KQEAgLTEyNTMsNDAgKzExMjIsMTkgQEAg
dm9pZCBXZWJQcm9jZXNzUG9vbDo6Z2V0U3RhdGlzdGljcyh1aW50MwogCiB2b2lkIFdlYlByb2Nl
c3NQb29sOjpyZXF1ZXN0V2ViQ29udGVudFN0YXRpc3RpY3MoU3RhdGlzdGljc1JlcXVlc3QqIHJl
cXVlc3QpCiB7Ci0gICAgaWYgKHByb2Nlc3NNb2RlbCgpID09IFByb2Nlc3NNb2RlbFNoYXJlZFNl
Y29uZGFyeVByb2Nlc3MpIHsKLSAgICAgICAgaWYgKG1fcHJvY2Vzc2VzLmlzRW1wdHkoKSkKLSAg
ICAgICAgICAgIHJldHVybjsKLSAgICAgICAgCi0gICAgICAgIHVpbnQ2NF90IHJlcXVlc3RJRCA9
IHJlcXVlc3QtPmFkZE91dHN0YW5kaW5nUmVxdWVzdCgpOwotICAgICAgICBtX3N0YXRpc3RpY3NS
ZXF1ZXN0cy5zZXQocmVxdWVzdElELCByZXF1ZXN0KTsKLSAgICAgICAgbV9wcm9jZXNzZXNbMF0t
PnNlbmQoTWVzc2FnZXM6OldlYlByb2Nlc3M6OkdldFdlYkNvcmVTdGF0aXN0aWNzKHJlcXVlc3RJ
RCksIDApOwotCi0gICAgfSBlbHNlIHsKLSAgICAgICAgLy8gRklYTUUgKE11bHRpLVdlYlByb2Nl
c3MpIDxyZGFyOi8vcHJvYmxlbS8xMzIwMDA1OT46IE1ha2UgZ2V0dGluZyBzdGF0aXN0aWNzIGZy
b20gbXVsdGlwbGUgV2ViUHJvY2Vzc2VzIHdvcmsuCi0gICAgfQorICAgIC8vIEZJWE1FIChNdWx0
aS1XZWJQcm9jZXNzKSA8cmRhcjovL3Byb2JsZW0vMTMyMDAwNTk+OiBNYWtlIGdldHRpbmcgc3Rh
dGlzdGljcyBmcm9tIG11bHRpcGxlIFdlYlByb2Nlc3NlcyB3b3JrLgogfQogCiB2b2lkIFdlYlBy
b2Nlc3NQb29sOjpyZXF1ZXN0TmV0d29ya2luZ1N0YXRpc3RpY3MoU3RhdGlzdGljc1JlcXVlc3Qq
IHJlcXVlc3QpCiB7Ci0gICAgYm9vbCBuZXR3b3JrUHJvY2Vzc1VuYXZhaWxhYmxlOwotI2lmIEVO
QUJMRShORVRXT1JLX1BST0NFU1MpCi0gICAgbmV0d29ya1Byb2Nlc3NVbmF2YWlsYWJsZSA9ICF1
c2VzTmV0d29ya1Byb2Nlc3MoKSB8fCAhbV9uZXR3b3JrUHJvY2VzczsKLSNlbHNlCi0gICAgbmV0
d29ya1Byb2Nlc3NVbmF2YWlsYWJsZSA9IHRydWU7Ci0jZW5kaWYKLQotICAgIGlmIChuZXR3b3Jr
UHJvY2Vzc1VuYXZhaWxhYmxlKSB7CisgICAgaWYgKCFtX25ldHdvcmtQcm9jZXNzKSB7CiAgICAg
ICAgIExPR19FUlJPUigiQXR0ZW1wdCB0byBnZXQgTmV0d29ya1Byb2Nlc3Mgc3RhdGlzdGljcyBi
dXQgdGhlIE5ldHdvcmtQcm9jZXNzIGlzIHVuYXZhaWxhYmxlIik7CiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAKLSNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQogICAgIHVpbnQ2NF90IHJlcXVl
c3RJRCA9IHJlcXVlc3QtPmFkZE91dHN0YW5kaW5nUmVxdWVzdCgpOwogICAgIG1fc3RhdGlzdGlj
c1JlcXVlc3RzLnNldChyZXF1ZXN0SUQsIHJlcXVlc3QpOwogICAgIG1fbmV0d29ya1Byb2Nlc3Mt
PnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpHZXROZXR3b3JrUHJvY2Vzc1N0YXRpc3Rp
Y3MocmVxdWVzdElEKSwgMCk7Ci0jZWxzZQotICAgIFVOVVNFRF9QQVJBTShyZXF1ZXN0KTsKLSNl
bmRpZgogfQogCiB2b2lkIFdlYlByb2Nlc3NQb29sOjpoYW5kbGVNZXNzYWdlKElQQzo6Q29ubmVj
dGlvbiYgY29ubmVjdGlvbiwgY29uc3QgU3RyaW5nJiBtZXNzYWdlTmFtZSwgY29uc3QgV2ViS2l0
OjpVc2VyRGF0YSYgbWVzc2FnZUJvZHkpCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
V2ViUHJvY2Vzc1Bvb2wuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
V2ViUHJvY2Vzc1Bvb2wuaAkocmV2aXNpb24gMTkyNjAxKQorKysgU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1dlYlByb2Nlc3NQb29sLmgJKHdvcmtpbmcgY29weSkKQEAgLTM0LDkgKzM0LDkgQEAK
ICNpbmNsdWRlICJHZW5lcmljQ2FsbGJhY2suaCIKICNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIu
aCIKICNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXJNYXAuaCIKKyNpbmNsdWRlICJOZXR3b3JrUHJv
Y2Vzc1Byb3h5LmgiCiAjaW5jbHVkZSAiUGx1Z0luQXV0b1N0YXJ0UHJvdmlkZXIuaCIKICNpbmNs
dWRlICJQbHVnaW5JbmZvU3RvcmUuaCIKLSNpbmNsdWRlICJQcm9jZXNzTW9kZWwuaCIKICNpbmNs
dWRlICJQcm9jZXNzVGhyb3R0bGVyLmgiCiAjaW5jbHVkZSAiU3RhdGlzdGljc1JlcXVlc3QuaCIK
ICNpbmNsdWRlICJWaXNpdGVkTGlua1N0b3JlLmgiCkBAIC01OSwxMCArNTksNiBAQAogI2luY2x1
ZGUgIkRhdGFiYXNlUHJvY2Vzc1Byb3h5LmgiCiAjZW5kaWYKIAotI2lmIEVOQUJMRShORVRXT1JL
X1BST0NFU1MpCi0jaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3NQcm94eS5oIgotI2VuZGlmCi0KICNp
ZiBFTkFCTEUoTUVESUFfU0VTU0lPTikKICNpbmNsdWRlICJXZWJNZWRpYVNlc3Npb25Gb2N1c01h
bmFnZXIuaCIKICNlbmRpZgpAQCAtODYsMTQgKzgyLDEyIEBAIGNsYXNzIFdlYkNvbnRleHRTdXBw
bGVtZW50OwogY2xhc3MgV2ViSWNvbkRhdGFiYXNlOwogY2xhc3MgV2ViUGFnZUdyb3VwOwogY2xh
c3MgV2ViUGFnZVByb3h5Oworc3RydWN0IE5ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJz
Owogc3RydWN0IFN0YXRpc3RpY3NEYXRhOwogc3RydWN0IFdlYlByb2Nlc3NDcmVhdGlvblBhcmFt
ZXRlcnM7CiAgICAgCiB0eXBlZGVmIEdlbmVyaWNDYWxsYmFjazxBUEk6OkRpY3Rpb25hcnkqPiBE
aWN0aW9uYXJ5Q2FsbGJhY2s7CiAKLSNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQotc3RydWN0
IE5ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOwotI2VuZGlmCiAKICNpZiBQTEFURk9S
TShDT0NPQSkKIGludCBuZXR3b3JrUHJvY2Vzc0xhdGVuY3lRT1MoKTsKQEAgLTE0Miw5ICsxMzYs
NiBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRIaXN0b3J5Q2xpZW50KHN0ZDo6dW5pcXVlX3B0cjxB
UEk6OkxlZ2FjeUNvbnRleHRIaXN0b3J5Q2xpZW50Pik7CiAgICAgdm9pZCBzZXREb3dubG9hZENs
aWVudChzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpEb3dubG9hZENsaWVudD4pOwogCi0gICAgdm9pZCBz
ZXRQcm9jZXNzTW9kZWwoUHJvY2Vzc01vZGVsKTsgLy8gQ2FuIG9ubHkgYmUgY2FsbGVkIHdoZW4g
dGhlcmUgYXJlIG5vIHByb2Nlc3NlcyBydW5uaW5nLgotICAgIFByb2Nlc3NNb2RlbCBwcm9jZXNz
TW9kZWwoKSBjb25zdCB7IHJldHVybiBtX2NvbmZpZ3VyYXRpb24tPnByb2Nlc3NNb2RlbCgpOyB9
Ci0KICAgICB2b2lkIHNldE1heGltdW1OdW1iZXJPZlByb2Nlc3Nlcyh1bnNpZ25lZCk7IC8vIENh
biBvbmx5IGJlIGNhbGxlZCB3aGVuIHRoZXJlIGFyZSBubyBwcm9jZXNzZXMgcnVubmluZy4KICAg
ICB1bnNpZ25lZCBtYXhpbXVtTnVtYmVyT2ZQcm9jZXNzZXMoKSBjb25zdCB7IHJldHVybiAhbV9j
b25maWd1cmF0aW9uLT5tYXhpbXVtUHJvY2Vzc0NvdW50KCkgPyBVSU5UX01BWCA6IG1fY29uZmln
dXJhdGlvbi0+bWF4aW11bVByb2Nlc3NDb3VudCgpOyB9CiAKQEAgLTE5Myw5ICsxODQsNyBAQCBw
dWJsaWM6CiAgICAgdm9pZCBjbGVhclBsdWdpbkNsaWVudFBvbGljaWVzKCk7CiAjZW5kaWYKIAot
I2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCiAgICAgUGxhdGZvcm1Qcm9jZXNzSWRlbnRpZmll
ciBuZXR3b3JrUHJvY2Vzc0lkZW50aWZpZXIoKTsKLSNlbmRpZgogCiAgICAgdm9pZCBzZXRBbHdh
eXNVc2VzQ29tcGxleFRleHRDb2RlUGF0aChib29sKTsKICAgICB2b2lkIHNldFNob3VsZFVzZUZv
bnRTbW9vdGhpbmcoYm9vbCk7CkBAIC0yODYsMTYgKzI3NSwxMSBAQCBwdWJsaWM6CiAKICAgICAv
LyBOZXR3b3JrIFByb2Nlc3MgTWFuYWdlbWVudAogCi0gICAgdm9pZCBzZXRVc2VzTmV0d29ya1By
b2Nlc3MoYm9vbCk7Ci0gICAgYm9vbCB1c2VzTmV0d29ya1Byb2Nlc3MoKSBjb25zdDsKLQotI2lm
IEVOQUJMRShORVRXT1JLX1BST0NFU1MpCiAgICAgTmV0d29ya1Byb2Nlc3NQcm94eSYgZW5zdXJl
TmV0d29ya1Byb2Nlc3MoKTsKICAgICBOZXR3b3JrUHJvY2Vzc1Byb3h5KiBuZXR3b3JrUHJvY2Vz
cygpIHsgcmV0dXJuIG1fbmV0d29ya1Byb2Nlc3MuZ2V0KCk7IH0KICAgICB2b2lkIG5ldHdvcmtQ
cm9jZXNzQ3Jhc2hlZChOZXR3b3JrUHJvY2Vzc1Byb3h5Kik7CiAKICAgICB2b2lkIGdldE5ldHdv
cmtQcm9jZXNzQ29ubmVjdGlvbihQYXNzUmVmUHRyPE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6
OkdldE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbjo6RGVsYXllZFJlcGx5Pik7Ci0jZW5kaWYKIAog
I2lmIEVOQUJMRShEQVRBQkFTRV9QUk9DRVNTKQogICAgIHZvaWQgZW5zdXJlRGF0YWJhc2VQcm9j
ZXNzKCk7CkBAIC0zNzgsOSArMzYyLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHJlcXVlc3RXZWJD
b250ZW50U3RhdGlzdGljcyhTdGF0aXN0aWNzUmVxdWVzdCopOwogICAgIHZvaWQgcmVxdWVzdE5l
dHdvcmtpbmdTdGF0aXN0aWNzKFN0YXRpc3RpY3NSZXF1ZXN0Kik7CiAKLSNpZiBFTkFCTEUoTkVU
V09SS19QUk9DRVNTKQogICAgIHZvaWQgcGxhdGZvcm1Jbml0aWFsaXplTmV0d29ya1Byb2Nlc3Mo
TmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMmKTsKLSNlbmRpZgogCiAgICAgdm9pZCBo
YW5kbGVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIGNvbnN0IFN0cmluZyYgbWVzc2FnZU5hbWUs
IGNvbnN0IFVzZXJEYXRhJiBtZXNzYWdlQm9keSk7CiAgICAgdm9pZCBoYW5kbGVTeW5jaHJvbm91
c01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgY29uc3QgU3RyaW5nJiBtZXNzYWdlTmFtZSwgY29u
c3QgVXNlckRhdGEmIG1lc3NhZ2VCb2R5LCBVc2VyRGF0YSYgcmV0dXJuVXNlckRhdGEpOwpAQCAt
NTAwLDExICs0ODIsOSBAQCBwcml2YXRlOgogCiAgICAgYm9vbCBtX3Byb2Nlc3NUZXJtaW5hdGlv
bkVuYWJsZWQ7CiAKLSNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQogICAgIGJvb2wgbV9jYW5I
YW5kbGVIVFRQU1NlcnZlclRydXN0RXZhbHVhdGlvbjsKICAgICBib29sIG1fZGlkTmV0d29ya1By
b2Nlc3NDcmFzaDsKICAgICBSZWZQdHI8TmV0d29ya1Byb2Nlc3NQcm94eT4gbV9uZXR3b3JrUHJv
Y2VzczsKLSNlbmRpZgogCiAjaWYgRU5BQkxFKERBVEFCQVNFX1BST0NFU1MpCiAgICAgUmVmUHRy
PERhdGFiYXNlUHJvY2Vzc1Byb3h5PiBtX2RhdGFiYXNlUHJvY2VzczsKQEAgLTUzOSw1NSArNTE5
LDE1IEBAIHByaXZhdGU6CiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgogdm9pZCBXZWJQcm9jZXNzUG9v
bDo6c2VuZFRvTmV0d29ya2luZ1Byb2Nlc3MoVCYmIG1lc3NhZ2UpCiB7Ci0gICAgc3dpdGNoIChw
cm9jZXNzTW9kZWwoKSkgewotICAgIGNhc2UgUHJvY2Vzc01vZGVsU2hhcmVkU2Vjb25kYXJ5UHJv
Y2VzczoKLSNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQotICAgICAgICBpZiAodXNlc05ldHdv
cmtQcm9jZXNzKCkpIHsKLSAgICAgICAgICAgIGlmIChtX25ldHdvcmtQcm9jZXNzICYmIG1fbmV0
d29ya1Byb2Nlc3MtPmNhblNlbmRNZXNzYWdlKCkpCi0gICAgICAgICAgICAgICAgbV9uZXR3b3Jr
UHJvY2Vzcy0+c2VuZChzdGQ6OmZvcndhcmQ8VD4obWVzc2FnZSksIDApOwotICAgICAgICAgICAg
cmV0dXJuOwotICAgICAgICB9Ci0jZW5kaWYKLSAgICAgICAgaWYgKCFtX3Byb2Nlc3Nlcy5pc0Vt
cHR5KCkgJiYgbV9wcm9jZXNzZXNbMF0tPmNhblNlbmRNZXNzYWdlKCkpCi0gICAgICAgICAgICBt
X3Byb2Nlc3Nlc1swXS0+c2VuZChzdGQ6OmZvcndhcmQ8VD4obWVzc2FnZSksIDApOwotICAgICAg
ICByZXR1cm47Ci0gICAgY2FzZSBQcm9jZXNzTW9kZWxNdWx0aXBsZVNlY29uZGFyeVByb2Nlc3Nl
czoKLSNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQotICAgICAgICBpZiAobV9uZXR3b3JrUHJv
Y2VzcyAmJiBtX25ldHdvcmtQcm9jZXNzLT5jYW5TZW5kTWVzc2FnZSgpKQotICAgICAgICAgICAg
bV9uZXR3b3JrUHJvY2Vzcy0+c2VuZChzdGQ6OmZvcndhcmQ8VD4obWVzc2FnZSksIDApOwotICAg
ICAgICByZXR1cm47Ci0jZWxzZQotICAgICAgICBicmVhazsKLSNlbmRpZgotICAgIH0KLSAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICBpZiAobV9uZXR3b3JrUHJvY2VzcyAmJiBtX25ldHdv
cmtQcm9jZXNzLT5jYW5TZW5kTWVzc2FnZSgpKQorICAgICAgICBtX25ldHdvcmtQcm9jZXNzLT5z
ZW5kKHN0ZDo6Zm9yd2FyZDxUPihtZXNzYWdlKSwgMCk7CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1l
IFQ+CiB2b2lkIFdlYlByb2Nlc3NQb29sOjpzZW5kVG9OZXR3b3JraW5nUHJvY2Vzc1JlbGF1bmNo
aW5nSWZOZWNlc3NhcnkoVCYmIG1lc3NhZ2UpCiB7Ci0gICAgc3dpdGNoIChwcm9jZXNzTW9kZWwo
KSkgewotICAgIGNhc2UgUHJvY2Vzc01vZGVsU2hhcmVkU2Vjb25kYXJ5UHJvY2VzczoKLSNpZiBF
TkFCTEUoTkVUV09SS19QUk9DRVNTKQotICAgICAgICBpZiAodXNlc05ldHdvcmtQcm9jZXNzKCkp
IHsKLSAgICAgICAgICAgIGVuc3VyZU5ldHdvcmtQcm9jZXNzKCk7Ci0gICAgICAgICAgICBtX25l
dHdvcmtQcm9jZXNzLT5zZW5kKHN0ZDo6Zm9yd2FyZDxUPihtZXNzYWdlKSwgMCk7Ci0gICAgICAg
ICAgICByZXR1cm47Ci0gICAgICAgIH0KLSNlbmRpZgotICAgICAgICBlbnN1cmVTaGFyZWRXZWJQ
cm9jZXNzKCk7Ci0gICAgICAgIG1fcHJvY2Vzc2VzWzBdLT5zZW5kKHN0ZDo6Zm9yd2FyZDxUPiht
ZXNzYWdlKSwgMCk7Ci0gICAgICAgIHJldHVybjsKLSAgICBjYXNlIFByb2Nlc3NNb2RlbE11bHRp
cGxlU2Vjb25kYXJ5UHJvY2Vzc2VzOgotI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCi0gICAg
ICAgIGVuc3VyZU5ldHdvcmtQcm9jZXNzKCk7Ci0gICAgICAgIG1fbmV0d29ya1Byb2Nlc3MtPnNl
bmQoc3RkOjpmb3J3YXJkPFQ+KG1lc3NhZ2UpLCAwKTsKLSAgICAgICAgcmV0dXJuOwotI2Vsc2UK
LSAgICAgICAgYnJlYWs7Ci0jZW5kaWYKLSAgICB9Ci0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
CisgICAgZW5zdXJlTmV0d29ya1Byb2Nlc3MoKTsKKyAgICBtX25ldHdvcmtQcm9jZXNzLT5zZW5k
KHN0ZDo6Zm9yd2FyZDxUPihtZXNzYWdlKSwgMCk7CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+
CkBAIC02MTYsMTcgKzU1NiwxMiBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgogdm9pZCBXZWJQcm9j
ZXNzUG9vbDo6c2VuZFRvQWxsUHJvY2Vzc2VzUmVsYXVuY2hpbmdUaGVtSWZOZWNlc3NhcnkoY29u
c3QgVCYgbWVzc2FnZSkKIHsKICAgICAvLyBGSVhNRSAoTXVsdGktV2ViUHJvY2Vzcyk6IFdlYlBy
b2Nlc3NQb29sIGRvZXNuJ3QgdHJhY2sgcHJvY2Vzc2VzIHRoYXQgaGF2ZSBleGl0ZWQsIHNvIGl0
IGNhbm5vdCByZWxhdW5jaCB0aGVzZS4gUGVyaGFwcyB0aGlzIGZ1bmN0aW9uYWxpdHkgd29uJ3Qg
YmUgbmVlZGVkIGluIHRoaXMgbW9kZS4KLSAgICBpZiAocHJvY2Vzc01vZGVsKCkgPT0gUHJvY2Vz
c01vZGVsU2hhcmVkU2Vjb25kYXJ5UHJvY2VzcykKLSAgICAgICAgZW5zdXJlU2hhcmVkV2ViUHJv
Y2VzcygpOwogICAgIHNlbmRUb0FsbFByb2Nlc3NlcyhtZXNzYWdlKTsKIH0KIAogdGVtcGxhdGU8
dHlwZW5hbWUgVD4KIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnNlbmRUb09uZVByb2Nlc3MoVCYmIG1l
c3NhZ2UpCiB7Ci0gICAgaWYgKHByb2Nlc3NNb2RlbCgpID09IFByb2Nlc3NNb2RlbFNoYXJlZFNl
Y29uZGFyeVByb2Nlc3MpCi0gICAgICAgIGVuc3VyZVNoYXJlZFdlYlByb2Nlc3MoKTsKLQogICAg
IGJvb2wgbWVzc2FnZVNlbnQgPSBmYWxzZTsKICAgICBzaXplX3QgcHJvY2Vzc0NvdW50ID0gbV9w
cm9jZXNzZXMuc2l6ZSgpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcHJvY2Vzc0NvdW50
OyArK2kpIHsKQEAgLTYzOCw3ICs1NzMsNyBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpzZW5kVG9P
bmVQcm9jZXNzKFQmCiAgICAgICAgIH0KICAgICB9CiAKLSAgICBpZiAoIW1lc3NhZ2VTZW50ICYm
IHByb2Nlc3NNb2RlbCgpID09IFByb2Nlc3NNb2RlbE11bHRpcGxlU2Vjb25kYXJ5UHJvY2Vzc2Vz
KSB7CisgICAgaWYgKCFtZXNzYWdlU2VudCkgewogICAgICAgICB3YXJtSW5pdGlhbFByb2Nlc3Mo
KTsKICAgICAgICAgUmVmUHRyPFdlYlByb2Nlc3NQcm94eT4gcHJvY2VzcyA9IG1fcHJvY2Vzc2Vz
Lmxhc3QoKTsKICAgICAgICAgaWYgKHByb2Nlc3MtPmNhblNlbmRNZXNzYWdlKCkpCkluZGV4OiBT
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcAkocmV2aXNpb24g
MTkyNjAxKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTI1Niw3ICsyNTYsNyBAQCB2b2lkIFdlYlByb2Nlc3NQcm94eTo6
cmVtb3ZlV2ViUGFnZSh1aW50CiAKICAgICAvLyBJZiB0aGlzIHdhcyB0aGUgbGFzdCBXZWJQYWdl
IG9wZW4gaW4gdGhhdCB3ZWIgcHJvY2VzcywgYW5kIHdlIGhhdmUgbm8gb3RoZXIgcmVhc29uIHRv
IGtlZXAgaXQgYWxpdmUsIGxldCBpdCBnby4KICAgICAvLyBXZSBvbmx5IGFsbG93IHRoaXMgd2hl
biB1c2luZyBhIG5ldHdvcmsgcHJvY2VzcywgYXMgb3RoZXJ3aXNlIHRoZSBXZWJQcm9jZXNzIG5l
ZWRzIHRvIHByZXNlcnZlIGl0cyBzZXNzaW9uIHN0YXRlLgotICAgIGlmICghbV9wcm9jZXNzUG9v
bC0+dXNlc05ldHdvcmtQcm9jZXNzKCkgfHwgc3RhdGUoKSA9PSBTdGF0ZTo6VGVybWluYXRlZCB8
fCAhY2FuVGVybWluYXRlQ2hpbGRQcm9jZXNzKCkpCisgICAgaWYgKHN0YXRlKCkgPT0gU3RhdGU6
OlRlcm1pbmF0ZWQgfHwgIWNhblRlcm1pbmF0ZUNoaWxkUHJvY2VzcygpKQogICAgICAgICByZXR1
cm47CiAKICAgICBzaHV0RG93bigpOwpAQCAtNDI3LDEyICs0MjcsMTAgQEAgdm9pZCBXZWJQcm9j
ZXNzUHJveHk6OmdldFBsdWdpblByb2Nlc3NDbwogfQogI2VuZGlmCiAKLSNpZiBFTkFCTEUoTkVU
V09SS19QUk9DRVNTKQogdm9pZCBXZWJQcm9jZXNzUHJveHk6OmdldE5ldHdvcmtQcm9jZXNzQ29u
bmVjdGlvbihQYXNzUmVmUHRyPE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6OkdldE5ldHdvcmtQ
cm9jZXNzQ29ubmVjdGlvbjo6RGVsYXllZFJlcGx5PiByZXBseSkKIHsKICAgICBtX3Byb2Nlc3NQ
b29sLT5nZXROZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24ocmVwbHkpOwogfQotI2VuZGlmIC8vIEVO
QUJMRShORVRXT1JLX1BST0NFU1MpCiAKICNpZiBFTkFCTEUoREFUQUJBU0VfUFJPQ0VTUykKIHZv
aWQgV2ViUHJvY2Vzc1Byb3h5OjpnZXREYXRhYmFzZVByb2Nlc3NDb25uZWN0aW9uKFBhc3NSZWZQ
dHI8TWVzc2FnZXM6OldlYlByb2Nlc3NQcm94eTo6R2V0RGF0YWJhc2VQcm9jZXNzQ29ubmVjdGlv
bjo6RGVsYXllZFJlcGx5PiByZXBseSkKQEAgLTcwMiwxOCArNzAwLDYgQEAgdm9pZCBXZWJQcm9j
ZXNzUHJveHk6OnVwZGF0ZVRleHRDaGVja2VyUwogICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQ
cm9jZXNzOjpTZXRUZXh0Q2hlY2tlclN0YXRlKFRleHRDaGVja2VyOjpzdGF0ZSgpKSwgMCk7CiB9
CiAKLURvd25sb2FkUHJveHkqIFdlYlByb2Nlc3NQcm94eTo6Y3JlYXRlRG93bmxvYWRQcm94eShj
b25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCi17Ci0jaWYgRU5BQkxFKE5FVFdPUktfUFJP
Q0VTUykKLSAgICBBU1NFUlQoIW1fcHJvY2Vzc1Bvb2wtPnVzZXNOZXR3b3JrUHJvY2VzcygpKTsK
LSNlbmRpZgotCi0gICAgaWYgKCFtX2Rvd25sb2FkUHJveHlNYXApCi0gICAgICAgIG1fZG93bmxv
YWRQcm94eU1hcCA9IHN0ZDo6bWFrZV91bmlxdWU8RG93bmxvYWRQcm94eU1hcD4odGhpcyk7Ci0K
LSAgICByZXR1cm4gbV9kb3dubG9hZFByb3h5TWFwLT5jcmVhdGVEb3dubG9hZFByb3h5KG1fcHJv
Y2Vzc1Bvb2wsIHJlcXVlc3QpOwotfQotCiB2b2lkIFdlYlByb2Nlc3NQcm94eTo6ZGlkU2F2ZVRv
UGFnZUNhY2hlKCkKIHsKICAgICBtX3Byb2Nlc3NQb29sLT5wcm9jZXNzRGlkQ2FjaGVQYWdlKHRo
aXMpOwpAQCAtOTQ3LDcgKzkzMyw2IEBAIHZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpkaWRDYW5jZWxQ
cm9jZXNzU3UKICAgICBtX3Rocm90dGxlci5kaWRDYW5jZWxQcm9jZXNzU3VzcGVuc2lvbigpOwog
fQogCi0jaWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKIHZvaWQgV2ViUHJvY2Vzc1Byb3h5Ojpy
ZWluc3RhdGVOZXR3b3JrUHJvY2Vzc0Fzc2VydGlvblN0YXRlKE5ldHdvcmtQcm9jZXNzUHJveHkm
IG5ld05ldHdvcmtQcm9jZXNzUHJveHkpCiB7CiAjaWYgUExBVEZPUk0oSU9TKQpAQCAtOTYyLDEx
ICs5NDcsMTAgQEAgdm9pZCBXZWJQcm9jZXNzUHJveHk6OnJlaW5zdGF0ZU5ldHdvcmtQcgogICAg
IFVOVVNFRF9QQVJBTShuZXdOZXR3b3JrUHJvY2Vzc1Byb3h5KTsKICNlbmRpZgogfQotI2VuZGlm
CiAKIHZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpkaWRTZXRBc3NlcnRpb25TdGF0ZShBc3NlcnRpb25T
dGF0ZSBzdGF0ZSkKIHsKLSNpZiBQTEFURk9STShJT1MpICYmIEVOQUJMRShORVRXT1JLX1BST0NF
U1MpCisjaWYgUExBVEZPUk0oSU9TKQogICAgIEFTU0VSVCghbV9iYWNrZ3JvdW5kVG9rZW5Gb3JO
ZXR3b3JrUHJvY2VzcyB8fCAhbV9mb3JlZ3JvdW5kVG9rZW5Gb3JOZXR3b3JrUHJvY2Vzcyk7CiAK
ICAgICBzd2l0Y2ggKHN0YXRlKSB7CkBAIC05NzgsMTQgKzk2MiwxMiBAQCB2b2lkIFdlYlByb2Nl
c3NQcm94eTo6ZGlkU2V0QXNzZXJ0aW9uU3RhCiAgICAgICAgIGJyZWFrOwogCiAgICAgY2FzZSBB
c3NlcnRpb25TdGF0ZTo6QmFja2dyb3VuZDoKLSAgICAgICAgaWYgKHByb2Nlc3NQb29sKCkudXNl
c05ldHdvcmtQcm9jZXNzKCkpCi0gICAgICAgICAgICBtX2JhY2tncm91bmRUb2tlbkZvck5ldHdv
cmtQcm9jZXNzID0gcHJvY2Vzc1Bvb2woKS5lbnN1cmVOZXR3b3JrUHJvY2VzcygpLnRocm90dGxl
cigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCk7CisgICAgICAgIG1fYmFja2dyb3VuZFRva2Vu
Rm9yTmV0d29ya1Byb2Nlc3MgPSBwcm9jZXNzUG9vbCgpLmVuc3VyZU5ldHdvcmtQcm9jZXNzKCku
dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKTsKICAgICAgICAgbV9mb3JlZ3Jv
dW5kVG9rZW5Gb3JOZXR3b3JrUHJvY2VzcyA9IG51bGxwdHI7CiAgICAgICAgIGJyZWFrOwogICAg
IAogICAgIGNhc2UgQXNzZXJ0aW9uU3RhdGU6OkZvcmVncm91bmQ6Ci0gICAgICAgIGlmIChwcm9j
ZXNzUG9vbCgpLnVzZXNOZXR3b3JrUHJvY2VzcygpKQotICAgICAgICAgICAgbV9mb3JlZ3JvdW5k
VG9rZW5Gb3JOZXR3b3JrUHJvY2VzcyA9IHByb2Nlc3NQb29sKCkuZW5zdXJlTmV0d29ya1Byb2Nl
c3MoKS50aHJvdHRsZXIoKS5mb3JlZ3JvdW5kQWN0aXZpdHlUb2tlbigpOworICAgICAgICBtX2Zv
cmVncm91bmRUb2tlbkZvck5ldHdvcmtQcm9jZXNzID0gcHJvY2Vzc1Bvb2woKS5lbnN1cmVOZXR3
b3JrUHJvY2VzcygpLnRocm90dGxlcigpLmZvcmVncm91bmRBY3Rpdml0eVRva2VuKCk7CiAgICAg
ICAgIG1fYmFja2dyb3VuZFRva2VuRm9yTmV0d29ya1Byb2Nlc3MgPSBudWxscHRyOwogICAgICAg
ICBmb3IgKGF1dG8mIHBhZ2UgOiBtX3BhZ2VNYXAudmFsdWVzKCkpCiAgICAgICAgICAgICBwYWdl
LT5wcm9jZXNzV2lsbEJlY29tZUZvcmVncm91bmQoKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmgJKHJldmlzaW9uIDE5MjYwMSkKKysrIFNvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaAkod29ya2luZyBjb3B5KQpAQCAtMTUy
LDkgKzE1Miw3IEBAIHB1YmxpYzoKIAogICAgIFByb2Nlc3NUaHJvdHRsZXImIHRocm90dGxlcigp
IHsgcmV0dXJuIG1fdGhyb3R0bGVyOyB9CiAKLSNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQog
ICAgIHZvaWQgcmVpbnN0YXRlTmV0d29ya1Byb2Nlc3NBc3NlcnRpb25TdGF0ZShOZXR3b3JrUHJv
Y2Vzc1Byb3h5Jik7Ci0jZW5kaWYKIAogcHJpdmF0ZToKICAgICBleHBsaWNpdCBXZWJQcm9jZXNz
UHJveHkoV2ViUHJvY2Vzc1Bvb2wmKTsKQEAgLTE4Niw5ICsxODQsNyBAQCBwcml2YXRlOgogI2lm
IEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJKQogICAgIHZvaWQgZ2V0UGx1Z2luUHJvY2Vzc0Nv
bm5lY3Rpb24odWludDY0X3QgcGx1Z2luUHJvY2Vzc1Rva2VuLCBQYXNzUmVmUHRyPE1lc3NhZ2Vz
OjpXZWJQcm9jZXNzUHJveHk6OkdldFBsdWdpblByb2Nlc3NDb25uZWN0aW9uOjpEZWxheWVkUmVw
bHk+KTsKICNlbmRpZgotI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCiAgICAgdm9pZCBnZXRO
ZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oUGFzc1JlZlB0cjxNZXNzYWdlczo6V2ViUHJvY2Vzc1By
b3h5OjpHZXROZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb246OkRlbGF5ZWRSZXBseT4pOwotI2VuZGlm
CiAjaWYgRU5BQkxFKERBVEFCQVNFX1BST0NFU1MpCiAgICAgdm9pZCBnZXREYXRhYmFzZVByb2Nl
c3NDb25uZWN0aW9uKFBhc3NSZWZQdHI8TWVzc2FnZXM6OldlYlByb2Nlc3NQcm94eTo6R2V0RGF0
YWJhc2VQcm9jZXNzQ29ubmVjdGlvbjo6RGVsYXllZFJlcGx5Pik7CiAjZW5kaWYKQEAgLTI1Myw3
ICsyNDksNyBAQCBwcml2YXRlOgogICAgIGludCBtX251bWJlck9mVGltZXNTdWRkZW5UZXJtaW5h
dGlvbldhc0Rpc2FibGVkOwogICAgIFByb2Nlc3NUaHJvdHRsZXIgbV90aHJvdHRsZXI7CiAgICAg
UHJvY2Vzc1Rocm90dGxlcjo6QmFja2dyb3VuZEFjdGl2aXR5VG9rZW4gbV90b2tlbkZvckhvbGRp
bmdMb2NrZWRGaWxlczsKLSNpZiBQTEFURk9STShJT1MpICYmIEVOQUJMRShORVRXT1JLX1BST0NF
U1MpCisjaWYgUExBVEZPUk0oSU9TKQogICAgIFByb2Nlc3NUaHJvdHRsZXI6OkZvcmVncm91bmRB
Y3Rpdml0eVRva2VuIG1fZm9yZWdyb3VuZFRva2VuRm9yTmV0d29ya1Byb2Nlc3M7CiAgICAgUHJv
Y2Vzc1Rocm90dGxlcjo6QmFja2dyb3VuZEFjdGl2aXR5VG9rZW4gbV9iYWNrZ3JvdW5kVG9rZW5G
b3JOZXR3b3JrUHJvY2VzczsKICNlbmRpZgpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1dlYlByb2Nlc3NQcm94eS5tZXNzYWdlcy5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluCShyZXZpc2lvbiAxOTI2MDEp
CisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmlu
CSh3b3JraW5nIGNvcHkpCkBAIC0zOCw5ICszOCw3IEBAIG1lc3NhZ2VzIC0+IFdlYlByb2Nlc3NQ
cm94eSBMZWdhY3lSZWNlaXYKICAgICBHZXRQbHVnaW5zKGJvb2wgcmVmcmVzaCkgLT4gKFZlY3Rv
cjxXZWJDb3JlOjpQbHVnaW5JbmZvPiBwbHVnaW5zLCBWZWN0b3I8V2ViQ29yZTo6UGx1Z2luSW5m
bz4gYXBwbGljYXRpb25QbHVnaW5zKQogICAgIEdldFBsdWdpblByb2Nlc3NDb25uZWN0aW9uKHVp
bnQ2NF90IHBsdWdpblByb2Nlc3NUb2tlbikgLT4gKElQQzo6QXR0YWNobWVudCBjb25uZWN0aW9u
SGFuZGxlLCBib29sIHN1cHBvcnRzQXN5bmNocm9ub3VzSW5pdGlhbGl6YXRpb24pIERlbGF5ZWQK
ICNlbmRpZgotI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCiAgICAgR2V0TmV0d29ya1Byb2Nl
c3NDb25uZWN0aW9uKCkgLT4gKElQQzo6QXR0YWNobWVudCBjb25uZWN0aW9uSGFuZGxlKSBEZWxh
eWVkCi0jZW5kaWYKICNpZiBFTkFCTEUoREFUQUJBU0VfUFJPQ0VTUykKICAgICBHZXREYXRhYmFz
ZVByb2Nlc3NDb25uZWN0aW9uKCkgLT4gKElQQzo6QXR0YWNobWVudCBjb25uZWN0aW9uSGFuZGxl
KSBEZWxheWVkCiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQVBJ
UHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL0FQSVByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5jcHAJKHJldmlzaW9u
IDE5MjYwMSkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQVBJUHJvY2Vzc1Bvb2xD
b25maWd1cmF0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDEsNyArNDEsNiBAQCBSZWY8UHJv
Y2Vzc1Bvb2xDb25maWd1cmF0aW9uPiBQcm9jZXNzUG9vCiAgICAgYXV0byBjb25maWd1cmF0aW9u
ID0gUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uOjpjcmVhdGUoKTsKIAogICAgIGNvbmZpZ3VyYXRp
b24tPm1fc2hvdWxkSGF2ZUxlZ2FjeURhdGFTdG9yZSA9IHRydWU7Ci0gICAgY29uZmlndXJhdGlv
bi0+bV9wcm9jZXNzTW9kZWwgPSBXZWJLaXQ6OlByb2Nlc3NNb2RlbFNoYXJlZFNlY29uZGFyeVBy
b2Nlc3M7CiAgICAgY29uZmlndXJhdGlvbi0+bV91c2VOZXR3b3JrUHJvY2VzcyA9IGZhbHNlOwog
ICAgIGNvbmZpZ3VyYXRpb24tPm1fY2FjaGVNb2RlbCA9IFdlYktpdDo6Q2FjaGVNb2RlbERvY3Vt
ZW50Vmlld2VyOwogCkBAIC03NCw3ICs3Myw2IEBAIFJlZjxQcm9jZXNzUG9vbENvbmZpZ3VyYXRp
b24+IFByb2Nlc3NQb28KICAgICBhdXRvIGNvcHkgPSB0aGlzLT5jcmVhdGUoKTsKIAogICAgIGNv
cHktPm1fc2hvdWxkSGF2ZUxlZ2FjeURhdGFTdG9yZSA9IHRoaXMtPm1fc2hvdWxkSGF2ZUxlZ2Fj
eURhdGFTdG9yZTsKLSAgICBjb3B5LT5tX3Byb2Nlc3NNb2RlbCA9IHRoaXMtPm1fcHJvY2Vzc01v
ZGVsOwogICAgIGNvcHktPm1fdXNlTmV0d29ya1Byb2Nlc3MgPSB0aGlzLT5tX3VzZU5ldHdvcmtQ
cm9jZXNzOwogICAgIGNvcHktPm1fbWF4aW11bVByb2Nlc3NDb3VudCA9IHRoaXMtPm1fbWF4aW11
bVByb2Nlc3NDb3VudDsKICAgICBjb3B5LT5tX2NhY2hlTW9kZWwgPSB0aGlzLT5tX2NhY2hlTW9k
ZWw7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0FQSVByb2Nlc3NQb29sQ29u
ZmlndXJhdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
QVBJUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmgJKHJldmlzaW9uIDE5MjYwMSkKKysrIFNvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQVBJUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmgJKHdv
cmtpbmcgY29weSkKQEAgLTI4LDcgKzI4LDYgQEAKIAogI2luY2x1ZGUgIkFQSU9iamVjdC5oIgog
I2luY2x1ZGUgIkNhY2hlTW9kZWwuaCIKLSNpbmNsdWRlICJQcm9jZXNzTW9kZWwuaCIKICNpbmNs
dWRlIDx3dGYvUmVmLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogI2luY2x1ZGUgPHd0Zi90
ZXh0L1dURlN0cmluZy5oPgpAQCAtNDgsOSArNDcsNiBAQCBwdWJsaWM6CiAgICAgYm9vbCBzaG91
bGRIYXZlTGVnYWN5RGF0YVN0b3JlKCkgY29uc3QgeyByZXR1cm4gbV9zaG91bGRIYXZlTGVnYWN5
RGF0YVN0b3JlOyB9CiAgICAgdm9pZCBzZXRTaG91bGRIYXZlTGVnYWN5RGF0YVN0b3JlKGJvb2wg
c2hvdWxkSGF2ZUxlZ2FjeURhdGFTdG9yZSkgeyBtX3Nob3VsZEhhdmVMZWdhY3lEYXRhU3RvcmUg
PSBzaG91bGRIYXZlTGVnYWN5RGF0YVN0b3JlOyB9CiAKLSAgICBXZWJLaXQ6OlByb2Nlc3NNb2Rl
bCBwcm9jZXNzTW9kZWwoKSBjb25zdCB7IHJldHVybiBtX3Byb2Nlc3NNb2RlbDsgfQotICAgIHZv
aWQgc2V0UHJvY2Vzc01vZGVsKFdlYktpdDo6UHJvY2Vzc01vZGVsIHByb2Nlc3NNb2RlbCkgeyBt
X3Byb2Nlc3NNb2RlbCA9IHByb2Nlc3NNb2RlbDsgfSAKLQogICAgIGJvb2wgdXNlTmV0d29ya1By
b2Nlc3MoKSBjb25zdCB7IHJldHVybiBtX3VzZU5ldHdvcmtQcm9jZXNzOyB9CiAgICAgdm9pZCBz
ZXRVc2VOZXR3b3JrUHJvY2Vzcyhib29sIHVzZU5ldHdvcmtQcm9jZXNzKSB7IG1fdXNlTmV0d29y
a1Byb2Nlc3MgPSB1c2VOZXR3b3JrUHJvY2VzczsgfSAKIApAQCAtOTYsNyArOTIsNiBAQCBwdWJs
aWM6CiBwcml2YXRlOgogICAgIGJvb2wgbV9zaG91bGRIYXZlTGVnYWN5RGF0YVN0b3JlIHsgZmFs
c2UgfTsKIAotICAgIFdlYktpdDo6UHJvY2Vzc01vZGVsIG1fcHJvY2Vzc01vZGVsIHsgV2ViS2l0
OjpQcm9jZXNzTW9kZWxNdWx0aXBsZVNlY29uZGFyeVByb2Nlc3NlcyB9OwogICAgIGJvb2wgbV91
c2VOZXR3b3JrUHJvY2VzcyB7IHRydWUgfTsKICAgICB1bnNpZ25lZCBtX21heGltdW1Qcm9jZXNz
Q291bnQgeyAwIH07CiAgICAgV2ViS2l0OjpDYWNoZU1vZGVsIG1fY2FjaGVNb2RlbCB7IFdlYktp
dDo6Q2FjaGVNb2RlbFByaW1hcnlXZWJCcm93c2VyIH07CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL0FQSVNlc3Npb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvQVBJU2Vzc2lvbi5jcHAJKHJldmlzaW9uIDE5MjYwMSkKKysrIFNvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQVBJU2Vzc2lvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTI4LDEwICsyOCw4IEBACiAKICNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgogCi0jaWYgRU5BQkxF
KE5FVFdPUktfUFJPQ0VTUykKICNpbmNsdWRlICJOZXR3b3JrUHJvY2Vzc01lc3NhZ2VzLmgiCiAj
aW5jbHVkZSAiV2ViUHJvY2Vzc1Bvb2wuaCIKLSNlbmRpZgogCiBuYW1lc3BhY2UgQVBJIHsKIApA
QCAtODAsMTIgKzc4LDEwIEBAIFdlYkNvcmU6OlNlc3Npb25JRCBTZXNzaW9uOjpnZXRJRCgpIGNv
bnMKIAogU2Vzc2lvbjo6flNlc3Npb24oKQogewotI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1Mp
CiAgICAgaWYgKG1fc2Vzc2lvbklELmlzRXBoZW1lcmFsKCkpIHsKICAgICAgICAgZm9yIChhdXRv
JiBwcm9jZXNzUG9vbCA6IFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OmFsbFByb2Nlc3NQb29scygp
KQogICAgICAgICAgICAgcHJvY2Vzc1Bvb2wtPnNlbmRUb05ldHdvcmtpbmdQcm9jZXNzKE1lc3Nh
Z2VzOjpOZXR3b3JrUHJvY2Vzczo6RGVzdHJveVByaXZhdGVCcm93c2luZ1Nlc3Npb24obV9zZXNz
aW9uSUQpKTsKICAgICB9Ci0jZW5kaWYKIH0KIAogfSAvLyBuYW1lc3BhY2UgQVBJCkluZGV4OiBT
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tBUElDYXN0LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLQVBJQ2FzdC5oCShyZXZpc2lvbiAxOTI2
MDEpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tBUElDYXN0LmgJKHdvcmtp
bmcgY29weSkKQEAgLTMyLDcgKzMyLDYgQEAKICNpbmNsdWRlICJIVFRQQ29va2llQWNjZXB0UG9s
aWN5LmgiCiAjaW5jbHVkZSAiSW5qZWN0ZWRCdW5kbGVIaXRUZXN0UmVzdWx0TWVkaWFUeXBlLmgi
CiAjaW5jbHVkZSAiUGx1Z2luTW9kdWxlSW5mby5oIgotI2luY2x1ZGUgIlByb2Nlc3NNb2RlbC5o
IgogI2luY2x1ZGUgIlJlc291cmNlQ2FjaGVzVG9DbGVhci5oIgogI2luY2x1ZGUgIldLQnVuZGxl
SGl0VGVzdFJlc3VsdC5oIgogI2luY2x1ZGUgIldLQ29udGV4dC5oIgpAQCAtMjMwLDMxICsyMjks
NiBAQCBpbmxpbmUgV0tDYWNoZU1vZGVsIHRvQVBJKENhY2hlTW9kZWwgY2FjCiAgICAgcmV0dXJu
IGtXS0NhY2hlTW9kZWxEb2N1bWVudFZpZXdlcjsKIH0KIAotaW5saW5lIFByb2Nlc3NNb2RlbCB0
b1Byb2Nlc3NNb2RlbChXS1Byb2Nlc3NNb2RlbCB3a1Byb2Nlc3NNb2RlbCkKLXsKLSAgICBzd2l0
Y2ggKHdrUHJvY2Vzc01vZGVsKSB7Ci0gICAgY2FzZSBrV0tQcm9jZXNzTW9kZWxTaGFyZWRTZWNv
bmRhcnlQcm9jZXNzOgotICAgICAgICByZXR1cm4gUHJvY2Vzc01vZGVsU2hhcmVkU2Vjb25kYXJ5
UHJvY2VzczsKLSAgICBjYXNlIGtXS1Byb2Nlc3NNb2RlbE11bHRpcGxlU2Vjb25kYXJ5UHJvY2Vz
c2VzOgotICAgICAgICByZXR1cm4gUHJvY2Vzc01vZGVsTXVsdGlwbGVTZWNvbmRhcnlQcm9jZXNz
ZXM7Ci0gICAgfQotCi0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIFByb2Nl
c3NNb2RlbFNoYXJlZFNlY29uZGFyeVByb2Nlc3M7Ci19Ci0KLWlubGluZSBXS1Byb2Nlc3NNb2Rl
bCB0b0FQSShQcm9jZXNzTW9kZWwgcHJvY2Vzc01vZGVsKQotewotICAgIHN3aXRjaCAocHJvY2Vz
c01vZGVsKSB7Ci0gICAgY2FzZSBQcm9jZXNzTW9kZWxTaGFyZWRTZWNvbmRhcnlQcm9jZXNzOgot
ICAgICAgICByZXR1cm4ga1dLUHJvY2Vzc01vZGVsU2hhcmVkU2Vjb25kYXJ5UHJvY2VzczsKLSAg
ICBjYXNlIFByb2Nlc3NNb2RlbE11bHRpcGxlU2Vjb25kYXJ5UHJvY2Vzc2VzOgotICAgICAgICBy
ZXR1cm4ga1dLUHJvY2Vzc01vZGVsTXVsdGlwbGVTZWNvbmRhcnlQcm9jZXNzZXM7Ci0gICAgfQot
ICAgIAotICAgIHJldHVybiBrV0tQcm9jZXNzTW9kZWxTaGFyZWRTZWNvbmRhcnlQcm9jZXNzOwot
fQotCiBpbmxpbmUgRm9udFNtb290aGluZ0xldmVsIHRvRm9udFNtb290aGluZ0xldmVsKFdLRm9u
dFNtb290aGluZ0xldmVsIHdrTGV2ZWwpCiB7CiAgICAgc3dpdGNoICh3a0xldmVsKSB7CkluZGV4
OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0LmNwcAkocmV2aXNp
b24gMTkyNjAxKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTMyOSwxNiArMzI5LDYgQEAgV0tDYWNoZU1vZGVsIFdLQ29u
dGV4dEdldENhY2hlTW9kZWwoV0tDbwogICAgIHJldHVybiB0b0FQSSh0b0ltcGwoY29udGV4dFJl
ZiktPmNhY2hlTW9kZWwoKSk7CiB9CiAKLXZvaWQgV0tDb250ZXh0U2V0UHJvY2Vzc01vZGVsKFdL
Q29udGV4dFJlZiBjb250ZXh0UmVmLCBXS1Byb2Nlc3NNb2RlbCBwcm9jZXNzTW9kZWwpCi17Ci0g
ICAgdG9JbXBsKGNvbnRleHRSZWYpLT5zZXRQcm9jZXNzTW9kZWwodG9Qcm9jZXNzTW9kZWwocHJv
Y2Vzc01vZGVsKSk7Ci19Ci0KLVdLUHJvY2Vzc01vZGVsIFdLQ29udGV4dEdldFByb2Nlc3NNb2Rl
bChXS0NvbnRleHRSZWYgY29udGV4dFJlZikKLXsKLSAgICByZXR1cm4gdG9BUEkodG9JbXBsKGNv
bnRleHRSZWYpLT5wcm9jZXNzTW9kZWwoKSk7Ci19Ci0KIHZvaWQgV0tDb250ZXh0U2V0TWF4aW11
bU51bWJlck9mUHJvY2Vzc2VzKFdLQ29udGV4dFJlZiBjb250ZXh0UmVmLCB1bnNpZ25lZCBudW1i
ZXJPZlByb2Nlc3NlcykKIHsKICAgICB0b0ltcGwoY29udGV4dFJlZiktPnNldE1heGltdW1OdW1i
ZXJPZlByb2Nlc3NlcyhudW1iZXJPZlByb2Nlc3Nlcyk7CkBAIC01NTQsMTEgKzU0NCw2IEBAIHZv
aWQgV0tDb250ZXh0U2V0SmF2YVNjcmlwdEdhcmJhZ2VDb2xsZWMKICAgICB0b0ltcGwoY29udGV4
dFJlZiktPnNldEphdmFTY3JpcHRHYXJiYWdlQ29sbGVjdG9yVGltZXJFbmFibGVkKGVuYWJsZSk7
CiB9CiAKLXZvaWQgV0tDb250ZXh0U2V0VXNlc05ldHdvcmtQcm9jZXNzKFdLQ29udGV4dFJlZiBj
b250ZXh0UmVmLCBib29sIHVzZXNOZXR3b3JrUHJvY2VzcykKLXsKLSAgICB0b0ltcGwoY29udGV4
dFJlZiktPnNldFVzZXNOZXR3b3JrUHJvY2Vzcyh1c2VzTmV0d29ya1Byb2Nlc3MpOwotfQotCiB2
b2lkIFdLQ29udGV4dFVzZVRlc3RpbmdOZXR3b3JrU2Vzc2lvbihXS0NvbnRleHRSZWYgY29udGV4
dCkKIHsKICAgICB0b0ltcGwoY29udGV4dCktPnVzZVRlc3RpbmdOZXR3b3JrU2Vzc2lvbigpOwpJ
bmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHQuaAkocmV2aXNp
b24gMTkyNjAxKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dC5o
CSh3b3JraW5nIGNvcHkpCkBAIC03NSw2ICs3NSw3IEBAIHR5cGVkZWYgc3RydWN0IFdLQ29udGV4
dENsaWVudFYxIHsKICAgICBXS0NvbnRleHRDb3B5V2ViQ3J5cHRvTWFzdGVyS2V5Q2FsbGJhY2sg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvcHlXZWJDcnlwdG9NYXN0ZXJLZXk7CiB9IFdL
Q29udGV4dENsaWVudFYxOwogCisvLyBGSVhNRTogVGhlc2UgY2FuIGJlIHJlbW92ZWQgb25jZSB3
ZSBhcmUgbm8gbG9uZ2VyIHN1cHBvcnRpbmcgTWF2ZXJpY2tzLgogZW51bSB7CiAgICAga1dLUHJv
Y2Vzc01vZGVsU2hhcmVkU2Vjb25kYXJ5UHJvY2VzcyA9IDAsCiAgICAga1dLUHJvY2Vzc01vZGVs
TXVsdGlwbGVTZWNvbmRhcnlQcm9jZXNzZXMgPSAxCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL0MvbWFjL1dLQ29udGV4dFByaXZhdGVNYWMubW0KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL21hYy9XS0NvbnRleHRQcml2YXRlTWFjLm1tCShy
ZXZpc2lvbiAxOTI2MDEpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvbWFjL1dL
Q29udGV4dFByaXZhdGVNYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTE2NiwxMCArMTY2LDUgQEAg
Ym9vbCBXS0NvbnRleHRTaG91bGRTdWdnZXN0QmxvY2tXZWJHTCgpCiAKIHBpZF90IFdLQ29udGV4
dEdldE5ldHdvcmtQcm9jZXNzSWRlbnRpZmllcihXS0NvbnRleHRSZWYgY29udGV4dFJlZikKIHsK
LSNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQogICAgIHJldHVybiB0b0ltcGwoY29udGV4dFJl
ZiktPm5ldHdvcmtQcm9jZXNzSWRlbnRpZmllcigpOwotI2Vsc2UKLSAgICBVTlVTRURfUEFSQU0o
Y29udGV4dFJlZik7Ci0gICAgcmV0dXJuIDA7Ci0jZW5kaWYKIH0KSW5kZXg6IFNvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzR3JvdXAubW0KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NHcm91cC5tbQkocmV2
aXNpb24gMTkyNjAxKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1By
b2Nlc3NHcm91cC5tbQkod29ya2luZyBjb3B5KQpAQCAtMTkyLDEwICsxOTIsNiBAQCAtIChpZClp
bml0V2l0aEluamVjdGVkQnVuZGxlVVJMOihOU1VSTCAqCiAKICAgICBhdXRvIGNvbmZpZ3VyYXRp
b24gPSBBUEk6OlByb2Nlc3NQb29sQ29uZmlndXJhdGlvbjo6Y3JlYXRlV2l0aExlZ2FjeU9wdGlv
bnMoKTsKICAgICBjb25maWd1cmF0aW9uLT5zZXRJbmplY3RlZEJ1bmRsZVBhdGgoYnVuZGxlVVJM
ID8gU3RyaW5nKGJ1bmRsZVVSTC5wYXRoKSA6IFN0cmluZygpKTsKLSNpZiBQTEFURk9STShJT1Mp
Ci0gICAgY29uZmlndXJhdGlvbi0+c2V0VXNlTmV0d29ya1Byb2Nlc3ModHJ1ZSk7Ci0gICAgY29u
ZmlndXJhdGlvbi0+c2V0UHJvY2Vzc01vZGVsKFByb2Nlc3NNb2RlbE11bHRpcGxlU2Vjb25kYXJ5
UHJvY2Vzc2VzKTsKLSNlbmRpZgogCiAgICAgX3Byb2Nlc3NQb29sID0gV2ViUHJvY2Vzc1Bvb2w6
OmNyZWF0ZShjb25maWd1cmF0aW9uKTsKIApJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29sLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9vbC5tbQkocmV2aXNpb24gMTkyNjAxKQor
KysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29sLm1tCSh3
b3JraW5nIGNvcHkpCkBAIC0zMCw3ICszMCw2IEBACiAKICNpbXBvcnQgIkNhY2hlTW9kZWwuaCIK
ICNpbXBvcnQgIkRvd25sb2FkQ2xpZW50LmgiCi0jaW1wb3J0ICJQcm9jZXNzTW9kZWwuaCIKICNp
bXBvcnQgIlNhbmRib3hVdGlsaXRpZXMuaCIKICNpbXBvcnQgIldLT2JqZWN0LmgiCiAjaW1wb3J0
ICJXZWFrT2JqQ1B0ci5oIgpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwv
ZXdrX2NvbnRleHQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvZWZsL2V3a19jb250ZXh0LmNwcAkocmV2aXNpb24gMTkyNjAxKQorKysgU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2NvbnRleHQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01
NzAsMjkgKzU3MCwxOCBAQCB2b2lkIGV3a19jb250ZXh0X21lc3NhZ2VfZnJvbV9leHRlbnNpb25z
CiAKIEVpbmFfQm9vbCBld2tfY29udGV4dF9wcm9jZXNzX21vZGVsX3NldChFd2tfQ29udGV4dCog
ZXdrQ29udGV4dCwgRXdrX1Byb2Nlc3NfTW9kZWwgcHJvY2Vzc01vZGVsKQogewotI2lmIEVOQUJM
RShORVRXT1JLX1BST0NFU1MpCiAgICAgRVdLX09CSl9HRVRfSU1QTF9PUl9SRVRVUk4oRXdrQ29u
dGV4dCwgZXdrQ29udGV4dCwgaW1wbCwgZmFsc2UpOwogCiAgICAgaW1wbC0+c2V0UHJvY2Vzc01v
ZGVsKHByb2Nlc3NNb2RlbCk7CiAKICAgICByZXR1cm4gdHJ1ZTsKLSNlbHNlCi0gICAgVU5VU0VE
X1BBUkFNKGV3a0NvbnRleHQpOwotICAgIFVOVVNFRF9QQVJBTShwcm9jZXNzTW9kZWwpOwotICAg
IHJldHVybiBmYWxzZTsKLSNlbmRpZgogfQogCiBFd2tfUHJvY2Vzc19Nb2RlbCBld2tfY29udGV4
dF9wcm9jZXNzX21vZGVsX2dldChjb25zdCBFd2tfQ29udGV4dCogZXdrQ29udGV4dCkKIHsKLSNp
ZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQogICAgIEVXS19PQkpfR0VUX0lNUExfT1JfUkVUVVJO
KGNvbnN0IEV3a0NvbnRleHQsIGV3a0NvbnRleHQsIGltcGwsIEVXS19QUk9DRVNTX01PREVMX1NI
QVJFRF9TRUNPTkRBUlkpOwogCiAgICAgcmV0dXJuIGltcGwtPnByb2Nlc3NNb2RlbCgpOwotI2Vs
c2UKLSAgICBVTlVTRURfUEFSQU0oZXdrQ29udGV4dCk7Ci0gICAgcmV0dXJuIEVXS19QUk9DRVNT
X01PREVMX1NIQVJFRF9TRUNPTkRBUlk7Ci0jZW5kaWYKIH0KIAogRXdrX1RMU19FcnJvcl9Qb2xp
Y3kgZXdrX2NvbnRleHRfdGxzX2Vycm9yX3BvbGljeV9nZXQoY29uc3QgRXdrX0NvbnRleHQqIGNv
bnRleHQpCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Bv
b2xDb2NvYS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2Ev
V2ViUHJvY2Vzc1Bvb2xDb2NvYS5tbQkocmV2aXNpb24gMTkyNjAxKQorKysgU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQb29sQ29jb2EubW0JKHdvcmtpbmcgY29weSkK
QEAgLTI2LDYgKzI2LDggQEAKICNpbXBvcnQgImNvbmZpZy5oIgogI2ltcG9ydCAiV2ViUHJvY2Vz
c1Bvb2wuaCIKIAorI2ltcG9ydCAiTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaCIK
KyNpbXBvcnQgIk5ldHdvcmtQcm9jZXNzUHJveHkuaCIKICNpbXBvcnQgIlBsdWdpblByb2Nlc3NN
YW5hZ2VyLmgiCiAjaW1wb3J0ICJTYW5kYm94VXRpbGl0aWVzLmgiCiAjaW1wb3J0ICJUZXh0Q2hl
Y2tlci5oIgpAQCAtNDcsMTEgKzQ5LDYgQEAKICNpbXBvcnQgPFdlYkNvcmUvUnVudGltZUFwcGxp
Y2F0aW9uQ2hlY2tzLmg+CiAjaW1wb3J0IDxzeXMvcGFyYW0uaD4KIAotI2lmIEVOQUJMRShORVRX
T1JLX1BST0NFU1MpCi0jaW1wb3J0ICJOZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5o
IgotI2ltcG9ydCAiTmV0d29ya1Byb2Nlc3NQcm94eS5oIgotI2VuZGlmCi0KICNpZiBQTEFURk9S
TShJT1MpCiAjaW1wb3J0ICJBcmd1bWVudENvZGVyc0NGLmgiCiAjaW1wb3J0ICJXZWJNZW1vcnlQ
cmVzc3VyZUhhbmRsZXJJT1MuaCIKQEAgLTc2LDEwICs3Myw4IEBAIHN0YXRpYyBOU1N0cmluZyAq
V2ViS2l0QXBwbGljYXRpb25EaWRDaGEKIC8vIEZJWE1FOiA8cmRhcjovL3Byb2JsZW0vOTEzODgx
Nz4gLSBBZnRlciB0aGlzICJiYWNrd2FyZHMgY29tcGF0aWJpbGl0eSIgcmFkYXIgaXMgcmVtb3Zl
ZCwgdGhpcyBjb2RlIHNob3VsZCBiZSByZW1vdmVkIHRvIG9ubHkgcmV0dXJuIGFuIGVtcHR5IFN0
cmluZy4KIE5TU3RyaW5nICpXZWJJY29uRGF0YWJhc2VEaXJlY3RvcnlEZWZhdWx0c0tleSA9IEAi
V2ViSWNvbkRhdGFiYXNlRGlyZWN0b3J5RGVmYXVsdHNLZXkiOwogCi0jaWYgRU5BQkxFKE5FVFdP
UktfUFJPQ0VTUykKIHN0YXRpYyBOU1N0cmluZyAqIGNvbnN0IFdlYktpdDJIVFRQUHJveHlEZWZh
dWx0c0tleSA9IEAiV2ViS2l0MkhUVFBQcm94eSI7CiBzdGF0aWMgTlNTdHJpbmcgKiBjb25zdCBX
ZWJLaXQySFRUUFNQcm94eURlZmF1bHRzS2V5ID0gQCJXZWJLaXQySFRUUFNQcm94eSI7Ci0jZW5k
aWYKIAogI2lmIEVOQUJMRShORVRXT1JLX0NBQ0hFKQogc3RhdGljIE5TU3RyaW5nICogY29uc3Qg
V2ViS2l0TmV0d29ya0NhY2hlRW5hYmxlZERlZmF1bHRzS2V5ID0gQCJXZWJLaXROZXR3b3JrQ2Fj
aGVFbmFibGVkIjsKQEAgLTExOSwxMCArMTE0LDggQEAgc3RhdGljIHZvaWQgcmVnaXN0ZXJVc2Vy
RGVmYXVsdHNJZk5lZWRlZAogCiB2b2lkIFdlYlByb2Nlc3NQb29sOjp1cGRhdGVQcm9jZXNzU3Vw
cHJlc3Npb25TdGF0ZSgpCiB7Ci0jaWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKLSAgICBpZiAo
dXNlc05ldHdvcmtQcm9jZXNzKCkgJiYgbV9uZXR3b3JrUHJvY2VzcykKKyAgICBpZiAobV9uZXR3
b3JrUHJvY2VzcykKICAgICAgICAgbV9uZXR3b3JrUHJvY2Vzcy0+c2V0UHJvY2Vzc1N1cHByZXNz
aW9uRW5hYmxlZChwcm9jZXNzU3VwcHJlc3Npb25FbmFibGVkKCkpOwotI2VuZGlmCiAKICNpZiBF
TkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQSSkKICAgICBpZiAoIW1fcHJvY2Vzc1N1cHByZXNzaW9u
RGlzYWJsZWRGb3JQYWdlQ291bnRlci52YWx1ZSgpKQpAQCAtMTk3LDE1ICsxOTAsNiBAQCB2b2lk
IFdlYlByb2Nlc3NQb29sOjpwbGF0Zm9ybUluaXRpYWxpemVXCiAKICAgICBwYXJhbWV0ZXJzLnVp
UHJvY2Vzc0J1bmRsZUlkZW50aWZpZXIgPSBTdHJpbmcoW1tOU0J1bmRsZSBtYWluQnVuZGxlXSBi
dW5kbGVJZGVudGlmaWVyXSk7CiAKLSNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQotICAgIGlm
ICghdXNlc05ldHdvcmtQcm9jZXNzKCkpIHsKLSNlbmRpZgotICAgICAgICBmb3IgKGNvbnN0IGF1
dG8mIHNjaGVtZSA6IGdsb2JhbFVSTFNjaGVtZXNXaXRoQ3VzdG9tUHJvdG9jb2xIYW5kbGVycygp
KQotICAgICAgICAgICAgcGFyYW1ldGVycy51cmxTY2hlbWVzUmVnaXN0ZXJlZEZvckN1c3RvbVBy
b3RvY29scy5hcHBlbmQoc2NoZW1lKTsKLSNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQotICAg
IH0KLSNlbmRpZgotCiAgICAgcGFyYW1ldGVycy5mb250V2hpdGVsaXN0ID0gbV9mb250V2hpdGVs
aXN0OwogCiAgICAgaWYgKG1fYnVuZGxlUGFyYW1ldGVycykgewpAQCAtMjM2LDcgKzIyMCw2IEBA
IHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnBsYXRmb3JtSW5pdGlhbGl6ZVcKICNlbmRpZgogfQogCi0j
aWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnBsYXRmb3Jt
SW5pdGlhbGl6ZU5ldHdvcmtQcm9jZXNzKE5ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJz
JiBwYXJhbWV0ZXJzKQogewogICAgIE5TVVJMQ2FjaGUgKnVybENhY2hlID0gW05TVVJMQ2FjaGUg
c2hhcmVkVVJMQ2FjaGVdOwpAQCAtMjcxLDcgKzI1NCw2IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6
OnBsYXRmb3JtSW5pdGlhbGl6ZU4KICAgICBwYXJhbWV0ZXJzLnVpUHJvY2Vzc0Nvb2tpZVN0b3Jh
Z2VJZGVudGlmaWVyLmFwcGVuZChDRkRhdGFHZXRCeXRlUHRyKGNvb2tpZVN0b3JhZ2VEYXRhLmdl
dCgpKSwgQ0ZEYXRhR2V0TGVuZ3RoKGNvb2tpZVN0b3JhZ2VEYXRhLmdldCgpKSk7CiAjZW5kaWYK
IH0KLSNlbmRpZgogCiB2b2lkIFdlYlByb2Nlc3NQb29sOjpwbGF0Zm9ybUludmFsaWRhdGVDb250
ZXh0KCkKIHsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxv
YWRQcm94eS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Rvd25s
b2Fkcy9Eb3dubG9hZFByb3h5LmNwcAkocmV2aXNpb24gMTkyNjAxKQorKysgU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZFByb3h5LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMzEsMTYgKzMxLDEzIEBACiAjaW5jbHVkZSAiQXV0aGVudGljYXRpb25DaGFsbGVuZ2VQcm94
eS5oIgogI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlICJEb3dubG9hZFByb3h5
TWFwLmgiCisjaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3NNZXNzYWdlcy5oIgorI2luY2x1ZGUgIk5l
dHdvcmtQcm9jZXNzUHJveHkuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzTWVzc2FnZXMuaCIKICNp
bmNsdWRlICJXZWJQcm9jZXNzUG9vbC5oIgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4K
ICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAotI2lmIEVOQUJMRShORVRXT1JLX1BS
T0NFU1MpCi0jaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3NNZXNzYWdlcy5oIgotI2luY2x1ZGUgIk5l
dHdvcmtQcm9jZXNzUHJveHkuaCIKLSNlbmRpZgotCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsK
IAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC03NCwxNSArNzEsOCBAQCB2b2lkIERvd25sb2FkUHJv
eHk6OmNhbmNlbCgpCiAgICAgaWYgKCFtX3Byb2Nlc3NQb29sKQogICAgICAgICByZXR1cm47CiAK
LSNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQotICAgIGlmIChtX3Byb2Nlc3NQb29sLT51c2Vz
TmV0d29ya1Byb2Nlc3MoKSkgewotICAgICAgICBpZiAoTmV0d29ya1Byb2Nlc3NQcm94eSogbmV0
d29ya1Byb2Nlc3MgPSBtX3Byb2Nlc3NQb29sLT5uZXR3b3JrUHJvY2VzcygpKQotICAgICAgICAg
ICAgbmV0d29ya1Byb2Nlc3MtPmNvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6TmV0d29ya1By
b2Nlc3M6OkNhbmNlbERvd25sb2FkKG1fZG93bmxvYWRJRCksIDApOwotICAgICAgICByZXR1cm47
Ci0gICAgfQotI2VuZGlmCi0KLSAgICBtX3Byb2Nlc3NQb29sLT5zZW5kVG9BbGxQcm9jZXNzZXMo
TWVzc2FnZXM6OldlYlByb2Nlc3M6OkNhbmNlbERvd25sb2FkKG1fZG93bmxvYWRJRCkpOworICAg
IGlmIChOZXR3b3JrUHJvY2Vzc1Byb3h5KiBuZXR3b3JrUHJvY2VzcyA9IG1fcHJvY2Vzc1Bvb2wt
Pm5ldHdvcmtQcm9jZXNzKCkpCisgICAgICAgIG5ldHdvcmtQcm9jZXNzLT5jb25uZWN0aW9uKCkt
PnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpDYW5jZWxEb3dubG9hZChtX2Rvd25sb2Fk
SUQpLCAwKTsKIH0KIAogdm9pZCBEb3dubG9hZFByb3h5OjppbnZhbGlkYXRlKCkKSW5kZXg6IFNv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9MYXVuY2hlci9Qcm9jZXNzTGF1bmNoZXIuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9MYXVuY2hlci9Qcm9jZXNzTGF1bmNo
ZXIuY3BwCShyZXZpc2lvbiAxOTI2MDEpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTGF1
bmNoZXIvUHJvY2Vzc0xhdW5jaGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODQsMTAgKzg0LDgg
QEAgY29uc3QgY2hhciogUHJvY2Vzc0xhdW5jaGVyOjpwcm9jZXNzVHlwZQogICAgIGNhc2UgUGx1
Z2luUHJvY2VzczoKICAgICAgICAgcmV0dXJuICJwbHVnaW5wcm9jZXNzIjsKICNlbmRpZgotI2lm
IEVOQUJMRShORVRXT1JLX1BST0NFU1MpCiAgICAgY2FzZSBOZXR3b3JrUHJvY2VzczoKICAgICAg
ICAgcmV0dXJuICJuZXR3b3JrcHJvY2VzcyI7Ci0jZW5kaWYKICNpZiBFTkFCTEUoREFUQUJBU0Vf
UFJPQ0VTUykKICAgICBjYXNlIERhdGFiYXNlUHJvY2VzczoKICAgICAgICAgcmV0dXJuICJkYXRh
YmFzZXByb2Nlc3MiOwpAQCAtMTEyLDEyICsxMTAsMTAgQEAgYm9vbCBQcm9jZXNzTGF1bmNoZXI6
OmdldFByb2Nlc3NUeXBlRnJvbQogICAgIH0KICNlbmRpZgogCi0jaWYgRU5BQkxFKE5FVFdPUktf
UFJPQ0VTUykKICAgICBpZiAoIXN0cmNtcChzdHJpbmcsICJuZXR3b3JrcHJvY2VzcyIpKSB7CiAg
ICAgICAgIHByb2Nlc3NUeXBlID0gTmV0d29ya1Byb2Nlc3M7CiAgICAgICAgIHJldHVybiB0cnVl
OwogICAgIH0KLSNlbmRpZgogCiAjaWYgRU5BQkxFKERBVEFCQVNFX1BST0NFU1MpCiAgICAgaWYg
KCFzdHJjbXAoc3RyaW5nLCAiZGF0YWJhc2Vwcm9jZXNzIikpIHsKSW5kZXg6IFNvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9MYXVuY2hlci9Qcm9jZXNzTGF1bmNoZXIuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTGF1bmNoZXIvUHJvY2Vzc0xhdW5jaGVyLmgJKHJldmlz
aW9uIDE5MjYwMSkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9MYXVuY2hlci9Qcm9jZXNz
TGF1bmNoZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNTAsOSArNTAsNyBAQCBwdWJsaWM6CiAjaWYg
RU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpCiAgICAgICAgIFBsdWdpblByb2Nlc3MsCiAjZW5k
aWYKLSNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQogICAgICAgICBOZXR3b3JrUHJvY2VzcywK
LSNlbmRpZgogI2lmIEVOQUJMRShEQVRBQkFTRV9QUk9DRVNTKQogICAgICAgICBEYXRhYmFzZVBy
b2Nlc3MsCiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9MYXVuY2hlci9l
ZmwvUHJvY2Vzc0xhdW5jaGVyRWZsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvTGF1bmNoZXIvZWZsL1Byb2Nlc3NMYXVuY2hlckVmbC5jcHAJKHJldmlzaW9uIDE5
MjYwMSkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9MYXVuY2hlci9lZmwvUHJvY2Vzc0xh
dW5jaGVyRWZsLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTE0LDExICsxMTQsOSBAQCB2b2lkIFBy
b2Nlc3NMYXVuY2hlcjo6bGF1bmNoUHJvY2VzcygpCiAgICAgICAgIHBsdWdpblBhdGggPSBtX2xh
dW5jaE9wdGlvbnMuZXh0cmFJbml0aWFsaXphdGlvbkRhdGEuZ2V0KCJwbHVnaW4tcGF0aCIpOwog
ICAgICAgICBicmVhazsKICNlbmRpZgotI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCiAgICAg
Y2FzZSBOZXR3b3JrUHJvY2VzczoKICAgICAgICAgZXhlY3V0YWJsZVBhdGggPSBleGVjdXRhYmxl
UGF0aE9mTmV0d29ya1Byb2Nlc3MoKTsKICAgICAgICAgYnJlYWs7Ci0jZW5kaWYKICNpZiBFTkFC
TEUoREFUQUJBU0VfUFJPQ0VTUykKICAgICBjYXNlIERhdGFiYXNlUHJvY2VzczoKICAgICAgICAg
ZXhlY3V0YWJsZVBhdGggPSBleGVjdXRhYmxlUGF0aE9mRGF0YWJhc2VQcm9jZXNzKCk7CkluZGV4
OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTGF1bmNoZXIvZ3RrL1Byb2Nlc3NMYXVuY2hlckd0
ay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0xhdW5jaGVyL2d0
ay9Qcm9jZXNzTGF1bmNoZXJHdGsuY3BwCShyZXZpc2lvbiAxOTI2MDEpCisrKyBTb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvTGF1bmNoZXIvZ3RrL1Byb2Nlc3NMYXVuY2hlckd0ay5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTc2LDExICs3Niw5IEBAIHZvaWQgUHJvY2Vzc0xhdW5jaGVyOjpsYXVuY2hQ
cm9jZXNzKCkKICAgICAgICAgcmVhbFBsdWdpblBhdGggPSBmaWxlU3lzdGVtUmVwcmVzZW50YXRp
b24ocGx1Z2luUGF0aCk7CiAgICAgICAgIGJyZWFrOwogI2VuZGlmCi0jaWYgRU5BQkxFKE5FVFdP
UktfUFJPQ0VTUykKICAgICBjYXNlIE5ldHdvcmtQcm9jZXNzOgogICAgICAgICBleGVjdXRhYmxl
UGF0aCA9IGV4ZWN1dGFibGVQYXRoT2ZOZXR3b3JrUHJvY2VzcygpOwogICAgICAgICBicmVhazsK
LSNlbmRpZgogI2lmIEVOQUJMRShEQVRBQkFTRV9QUk9DRVNTKQogICAgIGNhc2UgRGF0YWJhc2VQ
cm9jZXNzOgogICAgICAgICBleGVjdXRhYmxlUGF0aCA9IGV4ZWN1dGFibGVQYXRoT2ZEYXRhYmFz
ZVByb2Nlc3MoKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9MYXVuY2hlci9tYWMv
UHJvY2Vzc0xhdW5jaGVyTWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9MYXVuY2hlci9tYWMvUHJvY2Vzc0xhdW5jaGVyTWFjLm1tCShyZXZpc2lvbiAxOTI2MDEp
CisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTGF1bmNoZXIvbWFjL1Byb2Nlc3NMYXVuY2hl
ck1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtMTA1LDE0ICsxMDUsMTIgQEAgc3RhdGljIFJldGFp
blB0cjxOU1N0cmluZz4gY29tcHV0ZVByb2NlcwogICAgIH0KICNlbmRpZgogCi0jaWYgRU5BQkxF
KE5FVFdPUktfUFJPQ0VTUykKICAgICBpZiAobGF1bmNoT3B0aW9ucy5wcm9jZXNzVHlwZSA9PSBQ
cm9jZXNzTGF1bmNoZXI6Ok5ldHdvcmtQcm9jZXNzKSB7CiAgICAgICAgIE5TU3RyaW5nICpwcm9j
ZXNzUGF0aCA9IFt3ZWJLaXRCdW5kbGUgcGF0aEZvckF1eGlsaWFyeUV4ZWN1dGFibGU6QCJOZXR3
b3JrUHJvY2Vzcy5hcHAiXTsKICAgICAgICAgTlNTdHJpbmcgKnByb2Nlc3NBcHBFeGVjdXRhYmxl
UGF0aCA9IFtbTlNCdW5kbGUgYnVuZGxlV2l0aFBhdGg6cHJvY2Vzc1BhdGhdIGV4ZWN1dGFibGVQ
YXRoXTsKIAogICAgICAgICByZXR1cm4gW1twcm9jZXNzQXBwRXhlY3V0YWJsZVBhdGggc3RyaW5n
QnlEZWxldGluZ0xhc3RQYXRoQ29tcG9uZW50XSBzdHJpbmdCeUFwcGVuZGluZ1BhdGhDb21wb25l
bnQ6QCJTZWNJdGVtU2hpbS5keWxpYiJdOwogICAgIH0KLSNlbmRpZgogCiAgICAgaWYgKGxhdW5j
aE9wdGlvbnMucHJvY2Vzc1R5cGUgPT0gUHJvY2Vzc0xhdW5jaGVyOjpXZWJQcm9jZXNzKSB7CiAg
ICAgICAgIE5TU3RyaW5nICpwcm9jZXNzUGF0aCA9IFt3ZWJLaXRCdW5kbGUgcGF0aEZvckF1eGls
aWFyeUV4ZWN1dGFibGU6QCJXZWJQcm9jZXNzLmFwcCJdOwpAQCAtMTY3LDEyICsxNjUsMTAgQEAg
c3RhdGljIGNvbnN0IGNoYXIqIHNlcnZpY2VOYW1lKGNvbnN0IFBybwogICAgICAgICBpZiAoZm9y
RGV2ZWxvcG1lbnQpCiAgICAgICAgICAgICByZXR1cm4gImNvbS5hcHBsZS5XZWJLaXQuV2ViQ29u
dGVudC5EZXZlbG9wbWVudCI7CiAgICAgICAgIHJldHVybiAiY29tLmFwcGxlLldlYktpdC5XZWJD
b250ZW50IjsKLSNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQogICAgIGNhc2UgUHJvY2Vzc0xh
dW5jaGVyOjpOZXR3b3JrUHJvY2VzczoKICAgICAgICAgaWYgKGZvckRldmVsb3BtZW50KQogICAg
ICAgICAgICAgcmV0dXJuICJjb20uYXBwbGUuV2ViS2l0Lk5ldHdvcmtpbmcuRGV2ZWxvcG1lbnQi
OwogICAgICAgICByZXR1cm4gImNvbS5hcHBsZS5XZWJLaXQuTmV0d29ya2luZyI7Ci0jZW5kaWYK
ICNpZiBFTkFCTEUoREFUQUJBU0VfUFJPQ0VTUykKICAgICBjYXNlIFByb2Nlc3NMYXVuY2hlcjo6
RGF0YWJhc2VQcm9jZXNzOgogICAgICAgICBpZiAoZm9yRGV2ZWxvcG1lbnQpCkBAIC0yMDYsMTIg
KzIwMiw5IEBAIHN0YXRpYyBib29sIHNob3VsZExlYWtCb29zdChjb25zdCBQcm9jZXMKICAgICAv
LyBPbiBpT1MsIGxlYWsgYSBib29zdCBvbnRvIGFsbCBjaGlsZCBwcm9jZXNzZXMKICAgICBVTlVT
RURfUEFSQU0obGF1bmNoT3B0aW9ucyk7CiAgICAgcmV0dXJuIHRydWU7Ci0jZWxpZiBFTkFCTEUo
TkVUV09SS19QUk9DRVNTKQorI2Vsc2UKICAgICAvLyBPbiBNYWMsIGxlYWsgYSBib29zdCBvbnRv
IHRoZSBOZXR3b3JrUHJvY2Vzcy4KICAgICByZXR1cm4gbGF1bmNoT3B0aW9ucy5wcm9jZXNzVHlw
ZSA9PSBQcm9jZXNzTGF1bmNoZXI6Ok5ldHdvcmtQcm9jZXNzOwotI2Vsc2UKLSAgICBVTlVTRURf
UEFSQU0obGF1bmNoT3B0aW9ucyk7Ci0gICAgcmV0dXJuIGZhbHNlOwogI2VuZGlmCiB9CiAgICAg
CkBAIC00ODMsMTEgKzQ3Niw5IEBAIHN0YXRpYyB2b2lkIGNyZWF0ZVByb2Nlc3MoY29uc3QgUHJv
Y2Vzc0wKICAgICAgICAgcHJvY2Vzc1BhdGggPSBbd2ViS2l0QnVuZGxlIHBhdGhGb3JBdXhpbGlh
cnlFeGVjdXRhYmxlOkAiUGx1Z2luUHJvY2Vzcy5hcHAiXTsKICAgICAgICAgYnJlYWs7CiAjZW5k
aWYKLSNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQogICAgIGNhc2UgUHJvY2Vzc0xhdW5jaGVy
OjpOZXR3b3JrUHJvY2VzczoKICAgICAgICAgcHJvY2Vzc1BhdGggPSBbd2ViS2l0QnVuZGxlIHBh
dGhGb3JBdXhpbGlhcnlFeGVjdXRhYmxlOkAiTmV0d29ya1Byb2Nlc3MuYXBwIl07CiAgICAgICAg
IGJyZWFrOwotI2VuZGlmCiAjaWYgRU5BQkxFKERBVEFCQVNFX1BST0NFU1MpCiAgICAgY2FzZSBQ
cm9jZXNzTGF1bmNoZXI6OkRhdGFiYXNlUHJvY2VzczoKICAgICAgICAgcHJvY2Vzc1BhdGggPSBb
d2ViS2l0QnVuZGxlIHBhdGhGb3JBdXhpbGlhcnlFeGVjdXRhYmxlOkAiRGF0YWJhc2VQcm9jZXNz
LmFwcCJdOwpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1By
b2Nlc3NQcm94eS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL05l
dHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAJKHJldmlzaW9uIDE5MjYwMSkKKysrIFNvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yNiw4ICsyNiw2IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVk
ZSAiTmV0d29ya1Byb2Nlc3NQcm94eS5oIgogCi0jaWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykK
LQogI2luY2x1ZGUgIkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHkuaCIKICNpbmNsdWRlICJD
dXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eU1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiRG93bmxvYWRQ
cm94eU1lc3NhZ2VzLmgiCkBAIC0zNzcsNSArMzc1LDMgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzc1By
b3h5OjpzZXRJc0hvbGRpbmdMbwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQotI2VuZGlm
IC8vIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oCShyZXZpc2lvbiAx
OTI2MDEpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vz
c1Byb3h5LmgJKHdvcmtpbmcgY29weSkKQEAgLTI2LDggKzI2LDYgQEAKICNpZm5kZWYgTmV0d29y
a1Byb2Nlc3NQcm94eV9oCiAjZGVmaW5lIE5ldHdvcmtQcm9jZXNzUHJveHlfaAogCi0jaWYgRU5B
QkxFKE5FVFdPUktfUFJPQ0VTUykKLQogI2luY2x1ZGUgIkNoaWxkUHJvY2Vzc1Byb3h5LmgiCiAj
aW5jbHVkZSAiQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHkuaCIKICNpbmNsdWRlICJQcm9jZXNz
TGF1bmNoZXIuaCIKQEAgLTEzMiw2ICsxMzAsNCBAQCBwcml2YXRlOgogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJLaXQKIAotI2VuZGlmIC8vIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCi0KICNlbmRpZiAv
LyBOZXR3b3JrUHJvY2Vzc1Byb3h5X2gKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9O
ZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkubWVzc2FnZXMuaW4KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5tZXNzYWdl
cy5pbgkocmV2aXNpb24gMTkyNjAxKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL05ldHdv
cmsvTmV0d29ya1Byb2Nlc3NQcm94eS5tZXNzYWdlcy5pbgkod29ya2luZyBjb3B5KQpAQCAtMjAs
OCArMjAsNiBAQAogIyBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQogIyBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogCi0jaWYg
RU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKLQogbWVzc2FnZXMgLT4gTmV0d29ya1Byb2Nlc3NQcm94
eSBMZWdhY3lSZWNlaXZlciB7CiAgICAgRGlkQ3JlYXRlTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MoSVBDOjpBdHRhY2htZW50IGNvbm5lY3Rpb25JZGVudGlmaWVyKQogCkBAIC0zOSw1ICsz
NywzIEBAIG1lc3NhZ2VzIC0+IE5ldHdvcmtQcm9jZXNzUHJveHkgTGVnYWN5UmUKICAgICBMb2dT
YW1wbGVkRGlhZ25vc3RpY01lc3NhZ2VXaXRoUmVzdWx0KHVpbnQ2NF90IHBhZ2VJRCwgU3RyaW5n
IG1lc3NhZ2UsIFN0cmluZyBkZXNjcmlwdGlvbiwgdWludDMyX3QgcmVzdWx0KQogICAgIExvZ1Nh
bXBsZWREaWFnbm9zdGljTWVzc2FnZVdpdGhWYWx1ZSh1aW50NjRfdCBwYWdlSUQsIFN0cmluZyBt
ZXNzYWdlLCBTdHJpbmcgZGVzY3JpcHRpb24sIFN0cmluZyB2YWx1ZSkKIH0KLQotI2VuZGlmIC8v
IEVOQUJMRShORVRXT1JLX1BST0NFU1MpCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
TmV0d29yay9tYWMvTmV0d29ya1Byb2Nlc3NQcm94eU1hYy5tbQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvTmV0d29yay9tYWMvTmV0d29ya1Byb2Nlc3NQcm94eU1hYy5t
bQkocmV2aXNpb24gMTkyNjAxKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL05ldHdvcmsv
bWFjL05ldHdvcmtQcm9jZXNzUHJveHlNYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTI4LDggKzI4
LDYgQEAKIAogI2ltcG9ydCAiTmV0d29ya1Byb2Nlc3NNZXNzYWdlcy5oIgogCi0jaWYgRU5BQkxF
KE5FVFdPUktfUFJPQ0VTUykKLQogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIG5hbWVzcGFj
ZSBXZWJLaXQgewpAQCAtNTksNSArNTcsMyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OnBs
YXRmb3JtR2V0TGF1CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAotCi0jZW5kaWYgLy8gRU5B
QkxFKE5FVFdPUktfUFJPQ0VTUykKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9OZXR3
b3JrL3NvdXAvTmV0d29ya1Byb2Nlc3NQcm94eVNvdXAuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9OZXR3b3JrL3NvdXAvTmV0d29ya1Byb2Nlc3NQcm94eVNvdXAu
Y3BwCShyZXZpc2lvbiAxOTI2MDEpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTmV0d29y
ay9zb3VwL05ldHdvcmtQcm9jZXNzUHJveHlTb3VwLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjQs
OSArMjQsOCBAQAogICovCiAKICNpbmNsdWRlICJjb25maWcuaCIKLSNpZiBFTkFCTEUoTkVUV09S
S19QUk9DRVNTKQotCiAjaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3NQcm94eS5oIgorCiAjaW5jbHVk
ZSA8Z2xpYi5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTQzLDUgKzQyLDMgQEAgdm9pZCBO
ZXR3b3JrUHJvY2Vzc1Byb3h5OjpwbGF0Zm9ybUdldExhdQogfQogCiB9Ci0KLSNlbmRpZiAvLyBF
TkFCTEUoTkVUV09SS19QUk9DRVNTKQpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dl
YnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcAkocmV2aXNpb24g
MTkyNjAxKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVE
YXRhU3RvcmUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05NCwxMiArOTQsMTAgQEAgV2Vic2l0ZURh
dGFTdG9yZTo6fldlYnNpdGVEYXRhU3RvcmUoKQogewogICAgIHBsYXRmb3JtRGVzdHJveSgpOwog
Ci0jaWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKICAgICBpZiAobV9zZXNzaW9uSUQuaXNFcGhl
bWVyYWwoKSkgewogICAgICAgICBmb3IgKGF1dG8mIHByb2Nlc3NQb29sIDogV2ViUHJvY2Vzc1Bv
b2w6OmFsbFByb2Nlc3NQb29scygpKQogICAgICAgICAgICAgcHJvY2Vzc1Bvb2wtPnNlbmRUb05l
dHdvcmtpbmdQcm9jZXNzKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6RGVzdHJveVByaXZhdGVC
cm93c2luZ1Nlc3Npb24obV9zZXNzaW9uSUQpKTsKICAgICB9Ci0jZW5kaWYKIH0KIAogdm9pZCBX
ZWJzaXRlRGF0YVN0b3JlOjpjbG9uZVNlc3Npb25EYXRhKFdlYlBhZ2VQcm94eSYgc291cmNlUGFn
ZSwgV2ViUGFnZVByb3h5JiBuZXdQYWdlKQpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L2d0ay9XZWJQcm9jZXNzUG9vbEd0ay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL2d0ay9XZWJQcm9jZXNzUG9vbEd0ay5jcHAJKHJldmlzaW9uIDE5MjYwMSkKKysr
IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsvV2ViUHJvY2Vzc1Bvb2xHdGsuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zMCw2ICszMCw3IEBACiAKICNpbmNsdWRlICJBUElQcm9jZXNzUG9vbENv
bmZpZ3VyYXRpb24uaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCisjaW5jbHVkZSAiTmV0d29ya1By
b2Nlc3NNZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYkNvb2tpZU1hbmFnZXJQcm94eS5oIgogI2lu
Y2x1ZGUgIldlYkluc3BlY3RvclNlcnZlci5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NDcmVhdGlv
blBhcmFtZXRlcnMuaCIKQEAgLTQxLDEwICs0Miw2IEBACiAjaW5jbHVkZSA8d3RmL2dsaWIvR1Vu
aXF1ZVB0ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KIAotI2lmIEVOQUJMRShO
RVRXT1JLX1BST0NFU1MpCi0jaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3NNZXNzYWdlcy5oIgotI2Vu
ZGlmCi0KIG5hbWVzcGFjZSBXZWJLaXQgewogCiBzdGF0aWMgdm9pZCBpbml0SW5zcGVjdG9yU2Vy
dmVyKCkKQEAgLTk4LDE2ICs5NSw2IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnBsYXRmb3JtSW5p
dGlhbGl6ZVcKICAgICAgICAgcGFyYW1ldGVycy51cmxTY2hlbWVzUmVnaXN0ZXJlZEFzTG9jYWwu
YXBwZW5kKCJyZXNvdXJjZSIpOwogICAgIH0KIAotICAgIGlmICghdXNlc05ldHdvcmtQcm9jZXNz
KCkpIHsKLSAgICAgICAgcGFyYW1ldGVycy51cmxTY2hlbWVzUmVnaXN0ZXJlZEZvckN1c3RvbVBy
b3RvY29scyA9IHN1cHBsZW1lbnQ8V2ViU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXI+
KCktPnJlZ2lzdGVyZWRTY2hlbWVzRm9yQ3VzdG9tUHJvdG9jb2xzKCk7Ci0KLSAgICAgICAgc3Vw
cGxlbWVudDxXZWJDb29raWVNYW5hZ2VyUHJveHk+KCktPmdldENvb2tpZVBlcnNpc3RlbnRTdG9y
YWdlKHBhcmFtZXRlcnMuY29va2llUGVyc2lzdGVudFN0b3JhZ2VQYXRoLCBwYXJhbWV0ZXJzLmNv
b2tpZVBlcnNpc3RlbnRTdG9yYWdlVHlwZSk7Ci0gICAgICAgIHBhcmFtZXRlcnMuY29va2llQWNj
ZXB0UG9saWN5ID0gbV9pbml0aWFsSFRUUENvb2tpZUFjY2VwdFBvbGljeTsKLQotICAgICAgICBw
YXJhbWV0ZXJzLmlnbm9yZVRMU0Vycm9ycyA9IG1faWdub3JlVExTRXJyb3JzOwotICAgICAgICBw
YXJhbWV0ZXJzLmRpc2tDYWNoZURpcmVjdG9yeSA9IG1fY29uZmlndXJhdGlvbi0+ZGlza0NhY2hl
RGlyZWN0b3J5KCk7Ci0gICAgfQotCiAgICAgcGFyYW1ldGVycy5tZW1vcnlDYWNoZURpc2FibGVk
ID0gbV9tZW1vcnlDYWNoZURpc2FibGVkIHx8IGNhY2hlTW9kZWwoKSA9PSBDYWNoZU1vZGVsRG9j
dW1lbnRWaWV3ZXI7CiB9CiAKQEAgLTE0OSwxMyArMTM2LDggQEAgU3RyaW5nIFdlYlByb2Nlc3NQ
b29sOjpsZWdhY3lQbGF0Zm9ybURlZgogdm9pZCBXZWJQcm9jZXNzUG9vbDo6c2V0SWdub3JlVExT
RXJyb3JzKGJvb2wgaWdub3JlVExTRXJyb3JzKQogewogICAgIG1faWdub3JlVExTRXJyb3JzID0g
aWdub3JlVExTRXJyb3JzOwotI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCi0gICAgaWYgKHVz
ZXNOZXR3b3JrUHJvY2VzcygpICYmIG5ldHdvcmtQcm9jZXNzKCkpIHsKKyAgICBpZiAobmV0d29y
a1Byb2Nlc3MoKSkKICAgICAgICAgbmV0d29ya1Byb2Nlc3MoKS0+c2VuZChNZXNzYWdlczo6TmV0
d29ya1Byb2Nlc3M6OlNldElnbm9yZVRMU0Vycm9ycyhtX2lnbm9yZVRMU0Vycm9ycyksIDApOwot
ICAgICAgICByZXR1cm47Ci0gICAgfQotI2VuZGlmCi0gICAgc2VuZFRvQWxsUHJvY2Vzc2VzKE1l
c3NhZ2VzOjpXZWJQcm9jZXNzOjpTZXRJZ25vcmVUTFNFcnJvcnMobV9pZ25vcmVUTFNFcnJvcnMp
KTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3Mvc291cC9XZWJQcm9jZXNzUG9vbFNvdXAuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9zb3VwL1dlYlByb2Nlc3NQb29sU291cC5jcHAJKHJldmlzaW9uIDE5
MjYwMSkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9zb3VwL1dlYlByb2Nlc3NQb29sU291
cC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI0LDcgKzI0LDYgQEAKICAqLwogCiAjaW5jbHVkZSAi
Y29uZmlnLmgiCi0jaWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKICNpbmNsdWRlICJXZWJQcm9j
ZXNzUG9vbC5oIgogCiAjaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMu
aCIKQEAgLTQ3LDUgKzQ2LDMgQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6cGxhdGZvcm1Jbml0aWFs
aXplTgogfQogCiB9Ci0KLSNlbmRpZgpJbmRleDogU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYktp
dDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMTkyNjAxKQorKysgU291cmNl
L1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkp
CkBAIC0xNDYwLDcgKzE0NjAsNiBAQAogCQlCQzU3NTA5ODEyNjhGM0M2MDA2RjBGMTIgLyogV2Vi
UG9wdXBNZW51UHJveHlNYWMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBCQzU3NTA5NjEyNjhGM0M2MDA2RjBGMTIgLyogV2ViUG9wdXBNZW51UHJveHlN
YWMubW0gKi87IH07CiAJCUJDNTc1NjEzMTI2RTAxMzgwMDZGMEYxMiAvKiBBUElFcnJvci5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzU3NTYxMjEy
NkUwMTM4MDA2RjBGMTIgLyogQVBJRXJyb3IuY3BwICovOyB9OwogCQlCQzU5NTQ4OTE1Qzc4Njg1
MDBGRDFFM0UgLyogV2ViS2l0Mi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQkM1OTU0ODgxNUM3ODY4NTAwRkQxRTNFIC8qIFdlYktpdDIuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQlCQzU5NzA3NTExNjU5
MUQwMDA1NTFGQ0EgLyogUHJvY2Vzc01vZGVsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBCQzU5NzA3NDExNjU5MUQwMDA1NTFGQ0EgLyogUHJvY2Vzc01v
ZGVsLmggKi87IH07CiAJCUJDNUM3NUM4MTQ5NTREQTYwMEJDNDc3NSAvKiBXS0Nvbm5lY3Rpb25J
bnRlcm5hbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QkM1Qzc1QzYxNDk1NERBNjAwQkM0Nzc1IC8qIFdLQ29ubmVjdGlvbkludGVybmFsLmggKi87IH07
CiAJCUJDNUQyNEExMTZDQzNCOUUwMDdENTQ2MSAvKiBDaGlsZFByb2Nlc3NNYWluLm1tIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkM1RDI0OUYxNkNDM0I5
RTAwN0Q1NDYxIC8qIENoaWxkUHJvY2Vzc01haW4ubW0gKi87IH07CiAJCUJDNUQyNEEyMTZDQzNC
OUUwMDdENTQ2MSAvKiBDaGlsZFByb2Nlc3NNYWluLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkM1RDI0OUYxNkNDM0I5RTAwN0Q1NDYxIC8qIENoaWxk
UHJvY2Vzc01haW4ubW0gKi87IH07CkBAIC0zNzMyLDcgKzM3MzEsNiBAQAogCQlCQzU3NTA5NjEy
NjhGM0M2MDA2RjBGMTIgLyogV2ViUG9wdXBNZW51UHJveHlNYWMubW0gKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXZWJQb3B1cE1lbnVQcm94eU1hYy5tbTsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkM1NzU2MTIxMjZFMDEzODAwNkYwRjEyIC8qIEFQSUVy
cm9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEFQSUVycm9yLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkM1OTU0ODgxNUM3ODY4NTAwRkQxRTNF
IC8qIFdlYktpdDIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViS2l0Mi5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlCQzU5NzA3NDExNjU5MUQwMDA1NTFGQ0Eg
LyogUHJvY2Vzc01vZGVsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFByb2Nl
c3NNb2RlbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQzVDNzVDNjE0OTU0REE2
MDBCQzQ3NzUgLyogV0tDb25uZWN0aW9uSW50ZXJuYWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gV0tDb25uZWN0aW9uSW50ZXJuYWwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJQkM1RDI0OUYxNkNDM0I5RTAwN0Q1NDYxIC8qIENoaWxkUHJvY2Vzc01haW4ubW0g
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBDaGlsZFByb2Nlc3NNYWlu
Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQzVEMjRCODE2Q0M0MEJCMDA3RDU0
NjEgLyogQmFzZUxlZ2FjeVByb2Nlc3MueGNjb25maWcgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnhjY29uZmlnOyBwYXRoID0gQmFzZUxlZ2Fj
eVByb2Nlc3MueGNjb25maWc7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC02MjM4LDcg
KzYyMzYsNiBAQAogCQkJCTFBQzc1MzdBMTgzQTlGREIwMDcyQ0IxNSAvKiBQYWdlTG9hZFN0YXRl
LmggKi8sCiAJCQkJMzc3MTZBNTkxOTVCOTEwNTAwRUU4QjFCIC8qIFByb2Nlc3NBc3NlcnRpb24u
Y3BwICovLAogCQkJCTg2Rjk1MzYwMThGRjRGRDQwMDFEQjJFRiAvKiBQcm9jZXNzQXNzZXJ0aW9u
LmggKi8sCi0JCQkJQkM1OTcwNzQxMTY1OTFEMDAwNTUxRkNBIC8qIFByb2Nlc3NNb2RlbC5oICov
LAogCQkJCTg2RTY3QTIyMTkwRjQxMTgwMDAwNEFCNyAvKiBQcm9jZXNzVGhyb3R0bGVyLmNwcCAq
LywKIAkJCQk4NkU2N0EyMTE5MEY0MTE4MDAwMDRBQjcgLyogUHJvY2Vzc1Rocm90dGxlci5oICov
LAogCQkJCTgzMDQ4QUU1MUFDQTQ1REMwMDgyQzgzMiAvKiBQcm9jZXNzVGhyb3R0bGVyQ2xpZW50
LmggKi8sCkBAIC03OTg5LDcgKzc5ODYsNiBAQAogCQkJCUUxQ0MxQjkwMTJEN0VBREYwMDYyNTgz
OCAvKiBQcmludEluZm8uaCBpbiBIZWFkZXJzICovLAogCQkJCTg2Rjk1MzY1MThGRjU4RjUwMDFE
QjJFRiAvKiBQcm9jZXNzQXNzZXJ0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzFBN0M1ODEx
MzZFMTlDMDBGQjcxNjcgLyogUHJvY2Vzc0xhdW5jaGVyLmggaW4gSGVhZGVycyAqLywKLQkJCQlC
QzU5NzA3NTExNjU5MUQwMDA1NTFGQ0EgLyogUHJvY2Vzc01vZGVsLmggaW4gSGVhZGVycyAqLywK
IAkJCQk4NkU2N0EyNTE5MTBCOUQxMDAwMDRBQjcgLyogUHJvY2Vzc1Rocm90dGxlci5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJODMwNDhBRTYxQUNBNDVEQzAwODJDODMyIC8qIFByb2Nlc3NUaHJvdHRs
ZXJDbGllbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTJEN0YxMzEwMUE3MDJGQkEwMDlBNkZCRCAv
KiBQcm9jZXNzVHlwZS5oIGluIEhlYWRlcnMgKi8sCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlByb2Nlc3MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUHJvY2Vzcy5jcHAJKHJldmlzaW9uIDE5MjYwMSkKKysrIFNvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM3LDYgKzM3LDcg
QEAKICNpbmNsdWRlICJJbmplY3RlZEJ1bmRsZS5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNp
bmNsdWRlICJOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzc01lc3NhZ2VzLmgiCisjaW5jbHVk
ZSAiTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmgiCiAjaW5jbHVkZSAiUGx1Z2luUHJvY2Vzc0Nv
bm5lY3Rpb25NYW5hZ2VyLmgiCiAjaW5jbHVkZSAiU2Vzc2lvblRyYWNrZXIuaCIKICNpbmNsdWRl
ICJTdGF0aXN0aWNzRGF0YS5oIgpAQCAtNjAsNiArNjEsNyBAQAogI2luY2x1ZGUgIldlYlByb2Nl
c3NNZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NQb29sTWVzc2FnZXMuaCIKICNpbmNs
dWRlICJXZWJQcm9jZXNzUHJveHlNZXNzYWdlcy5oIgorI2luY2x1ZGUgIldlYlJlc291cmNlTG9h
ZFNjaGVkdWxlci5oIgogI2luY2x1ZGUgIldlYnNpdGVEYXRhLmgiCiAjaW5jbHVkZSAiV2Vic2l0
ZURhdGFUeXBlcy5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTTG9jay5oPgpAQCAtMTAx
LDEyICsxMDMsOSBAQAogI2luY2x1ZGUgIk9iakNPYmplY3RHcmFwaC5oIgogI2VuZGlmCiAKLSNp
ZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQogI2lmIFBMQVRGT1JNKENPQ09BKQogI2luY2x1ZGUg
IkNvb2tpZVN0b3JhZ2VTaGltLmgiCiAjZW5kaWYKLSNpbmNsdWRlICJOZXR3b3JrUHJvY2Vzc0Nv
bm5lY3Rpb24uaCIKLSNlbmRpZgogCiAjaWYgRU5BQkxFKFNFQ19JVEVNX1NISU0pCiAjaW5jbHVk
ZSAiU2VjSXRlbVNoaW0uaCIKQEAgLTEyNCwxMCArMTIzLDYgQEAKICNpbmNsdWRlICJXZWJCYXR0
ZXJ5TWFuYWdlci5oIgogI2VuZGlmCiAKLSNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQotI2lu
Y2x1ZGUgIldlYlJlc291cmNlTG9hZFNjaGVkdWxlci5oIgotI2VuZGlmCi0KICNpZiBFTkFCTEUo
UkVNT1RFX0lOU1BFQ1RPUikKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9SZW1vdGVJbnNwZWN0
b3IuaD4KICNlbmRpZgpAQCAtMTYxLDExICsxNTYsOCBAQCBXZWJQcm9jZXNzOjpXZWJQcm9jZXNz
KCkKICAgICAsIG1fZnVsbEtleWJvYXJkQWNjZXNzRW5hYmxlZChmYWxzZSkKICAgICAsIG1fdGV4
dENoZWNrZXJTdGF0ZSgpCiAgICAgLCBtX2ljb25EYXRhYmFzZVByb3h5KG5ldyBXZWJJY29uRGF0
YWJhc2VQcm94eSh0aGlzKSkKLSNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQotICAgICwgbV91
c2VzTmV0d29ya1Byb2Nlc3MoZmFsc2UpCiAgICAgLCBtX3dlYlJlc291cmNlTG9hZFNjaGVkdWxl
cihuZXcgV2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVyKQogICAgICwgbV9kbnNQcmVmZXRjaEh5c3Rl
cmVyaXMoW3RoaXNdKEh5c3RlcmVzaXNTdGF0ZSBzdGF0ZSkgeyBpZiAoc3RhdGUgPT0gSHlzdGVy
ZXNpc1N0YXRlOjpTdG9wcGVkKSBtX2Ruc1ByZWZldGNoZWRIb3N0cy5jbGVhcigpOyB9KQotI2Vu
ZGlmCiAjaWYgRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpCiAgICAgLCBtX3BsdWdpblByb2Nl
c3NDb25uZWN0aW9uTWFuYWdlcihQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbk1hbmFnZXI6OmNyZWF0
ZSgpKQogI2VuZGlmCkBAIC0yNTIsMzQgKzI0NCwxMCBAQCB2b2lkIFdlYlByb2Nlc3M6OmluaXRp
YWxpemVDb25uZWN0aW9uKElQCiAgICAgY29ubmVjdGlvbi0+c2V0T25seVNlbmRNZXNzYWdlc0Fz
RGlzcGF0Y2hXaGVuV2FpdGluZ0ZvclN5bmNSZXBseVdoZW5Qcm9jZXNzaW5nU3VjaEFNZXNzYWdl
KHRydWUpOwogfQogCi12b2lkIFdlYlByb2Nlc3M6OmRpZENyZWF0ZURvd25sb2FkKCkKLXsKLSAg
ICBkaXNhYmxlVGVybWluYXRpb24oKTsKLX0KLQotdm9pZCBXZWJQcm9jZXNzOjpkaWREZXN0cm95
RG93bmxvYWQoKQotewotICAgIGVuYWJsZVRlcm1pbmF0aW9uKCk7Ci19Ci0KLUlQQzo6Q29ubmVj
dGlvbiogV2ViUHJvY2Vzczo6ZG93bmxvYWRQcm94eUNvbm5lY3Rpb24oKQotewotICAgIHJldHVy
biBwYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpOwotfQotCi1BdXRoZW50aWNhdGlvbk1hbmFnZXIm
IFdlYlByb2Nlc3M6OmRvd25sb2Fkc0F1dGhlbnRpY2F0aW9uTWFuYWdlcigpCi17Ci0gICAgcmV0
dXJuICpzdXBwbGVtZW50PEF1dGhlbnRpY2F0aW9uTWFuYWdlcj4oKTsKLX0KLQogdm9pZCBXZWJQ
cm9jZXNzOjppbml0aWFsaXplV2ViUHJvY2VzcyhXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJz
JiYgcGFyYW1ldGVycykKIHsKICAgICBBU1NFUlQobV9wYWdlTWFwLmlzRW1wdHkoKSk7CiAKLSNp
ZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQotICAgIG1fdXNlc05ldHdvcmtQcm9jZXNzID0gcGFy
YW1ldGVycy51c2VzTmV0d29ya1Byb2Nlc3M7Ci0jZW5kaWYKLQogI2lmIE9TKExJTlVYKQogICAg
IFdlYkNvcmU6Ok1lbW9yeVByZXNzdXJlSGFuZGxlcjo6UmVsaWVmTG9nZ2VyOjpzZXRMb2dnaW5n
RW5hYmxlZChwYXJhbWV0ZXJzLnNob3VsZEVuYWJsZU1lbW9yeVByZXNzdXJlUmVsaWVmTG9nZ2lu
Zyk7CiAjZW5kaWYKQEAgLTM1OCwxMyArMzI2LDEwIEBAIHZvaWQgV2ViUHJvY2Vzczo6aW5pdGlh
bGl6ZVdlYlByb2Nlc3MoV2UKICAgICBpZiAocGFyYW1ldGVycy5zaG91bGRVc2VUZXN0aW5nTmV0
d29ya1Nlc3Npb24pCiAgICAgICAgIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c3dpdGNoVG9OZXdU
ZXN0aW5nU2Vzc2lvbigpOwogCi0jaWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKICAgICBlbnN1
cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKTsKIAogI2lmIFBMQVRGT1JNKENPQ09BKQotICAg
IGlmICh1c2VzTmV0d29ya1Byb2Nlc3MoKSkKLSAgICAgICAgQ29va2llU3RvcmFnZVNoaW06OnNp
bmdsZXRvbigpLmluaXRpYWxpemUoKTsKLSNlbmRpZgorICAgIENvb2tpZVN0b3JhZ2VTaGltOjpz
aW5nbGV0b24oKS5pbml0aWFsaXplKCk7CiAjZW5kaWYKICAgICBzZXRUZXJtaW5hdGlvblRpbWVv
dXQocGFyYW1ldGVycy50ZXJtaW5hdGlvblRpbWVvdXQpOwogCkBAIC0zOTYsMTIgKzM2MSw4IEBA
IHZvaWQgV2ViUHJvY2Vzczo6aW5pdGlhbGl6ZVdlYlByb2Nlc3MoV2UKICNlbmRpZgogfQogCi0j
aWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKIHZvaWQgV2ViUHJvY2Vzczo6ZW5zdXJlTmV0d29y
a1Byb2Nlc3NDb25uZWN0aW9uKCkKIHsKLSAgICBpZiAoIW1fdXNlc05ldHdvcmtQcm9jZXNzKQot
ICAgICAgICByZXR1cm47Ci0KICAgICBpZiAobV9uZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24pCiAg
ICAgICAgIHJldHVybjsKIApAQCAtNDIyLDcgKzM4Myw2IEBAIHZvaWQgV2ViUHJvY2Vzczo6ZW5z
dXJlTmV0d29ya1Byb2Nlc3NDb24KICAgICAgICAgcmV0dXJuOwogICAgIG1fbmV0d29ya1Byb2Nl
c3NDb25uZWN0aW9uID0gTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uOjpjcmVhdGUoY29ubmVjdGlv
bklkZW50aWZpZXIpOwogfQotI2VuZGlmIC8vIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCiAKIHZv
aWQgV2ViUHJvY2Vzczo6cmVnaXN0ZXJVUkxTY2hlbWVBc0VtcHR5RG9jdW1lbnQoY29uc3QgU3Ry
aW5nJiB1cmxTY2hlbWUpCiB7CkBAIC01MTEsMTQgKzQ3MSw2IEBAIHZvaWQgV2ViUHJvY2Vzczo6
ZGVzdHJveVByaXZhdGVCcm93c2luZ1MKICNlbmRpZgogfQogCi1Eb3dubG9hZE1hbmFnZXImIFdl
YlByb2Nlc3M6OmRvd25sb2FkTWFuYWdlcigpCi17Ci0gICAgQVNTRVJUKCF1c2VzTmV0d29ya1By
b2Nlc3MoKSk7Ci0KLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8RG93bmxvYWRNYW5hZ2VyPiBk
b3dubG9hZE1hbmFnZXIodGhpcyk7Ci0gICAgcmV0dXJuIGRvd25sb2FkTWFuYWdlcjsKLX0KLQog
I2lmIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJKQogUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25N
YW5hZ2VyJiBXZWJQcm9jZXNzOjpwbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbk1hbmFnZXIoKQogewpA
QCAtNTgxLDcgKzUzMyw2IEBAIHZvaWQgV2ViUHJvY2Vzczo6cmVtb3ZlV2ViUGFnZSh1aW50NjRf
dCAKIGJvb2wgV2ViUHJvY2Vzczo6c2hvdWxkVGVybWluYXRlKCkKIHsKICAgICBBU1NFUlQobV9w
YWdlTWFwLmlzRW1wdHkoKSk7Ci0gICAgQVNTRVJUKHVzZXNOZXR3b3JrUHJvY2VzcygpIHx8ICFk
b3dubG9hZE1hbmFnZXIoKS5pc0Rvd25sb2FkaW5nKCkpOwogCiAgICAgLy8gRklYTUU6IHRoZSBT
aG91bGRUZXJtaW5hdGUgbWVzc2FnZSBzaG91bGQgYWxzbyBzZW5kIHRlcm1pbmF0aW9uIHBhcmFt
ZXRlcnMsIHN1Y2ggYXMgYW55IHNlc3Npb24gY29va2llcyB0aGF0IG5lZWQgdG8gYmUgcHJlc2Vy
dmVkLgogICAgIGJvb2wgc2hvdWxkVGVybWluYXRlID0gZmFsc2U7CkBAIC0xMDI1LDIwICs5NzYs
OCBAQCB2b2lkIFdlYlByb2Nlc3M6OnNldEluamVjdGVkQnVuZGxlUGFyYW1lCiAgICAgaW5qZWN0
ZWRCdW5kbGUtPnNldEJ1bmRsZVBhcmFtZXRlcnModmFsdWUpOwogfQogCi1ib29sIFdlYlByb2Nl
c3M6OnVzZXNOZXR3b3JrUHJvY2VzcygpIGNvbnN0Ci17Ci0jaWYgRU5BQkxFKE5FVFdPUktfUFJP
Q0VTUykKLSAgICByZXR1cm4gbV91c2VzTmV0d29ya1Byb2Nlc3M7Ci0jZWxzZQotICAgIHJldHVy
biBmYWxzZTsKLSNlbmRpZgotfQotCi0jaWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKIE5ldHdv
cmtQcm9jZXNzQ29ubmVjdGlvbiogV2ViUHJvY2Vzczo6bmV0d29ya0Nvbm5lY3Rpb24oKQogewot
ICAgIEFTU0VSVChtX3VzZXNOZXR3b3JrUHJvY2Vzcyk7Ci0KICAgICAvLyBJZiB3ZSd2ZSBsb3N0
IG91ciBjb25uZWN0aW9uIHRvIHRoZSBuZXR3b3JrIHByb2Nlc3MgKGUuZy4gaXQgY3Jhc2hlZCkg
dHJ5IHRvIHJlLWVzdGFibGlzaCBpdC4KICAgICBpZiAoIW1fbmV0d29ya1Byb2Nlc3NDb25uZWN0
aW9uKQogICAgICAgICBlbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKTsKQEAgLTEwNjQs
NyArMTAwMyw2IEBAIFdlYlJlc291cmNlTG9hZFNjaGVkdWxlciYgV2ViUHJvY2Vzczo6d2UKIHsK
ICAgICByZXR1cm4gKm1fd2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVyOwogfQotI2VuZGlmIC8vIEVO
QUJMRUQoTkVUV09SS19QUk9DRVNTKQogCiAjaWYgRU5BQkxFKERBVEFCQVNFX1BST0NFU1MpCiB2
b2lkIFdlYlByb2Nlc3M6OndlYlRvRGF0YWJhc2VQcm9jZXNzQ29ubmVjdGlvbkNsb3NlZChXZWJU
b0RhdGFiYXNlUHJvY2Vzc0Nvbm5lY3Rpb24qIGNvbm5lY3Rpb24pCkBAIC0xMTA4LDI3ICsxMDQ2
LDYgQEAgdm9pZCBXZWJQcm9jZXNzOjplbnN1cmVXZWJUb0RhdGFiYXNlUHJvYwogCiAjZW5kaWYg
Ly8gRU5BQkxFRChEQVRBQkFTRV9QUk9DRVNTKQogCi12b2lkIFdlYlByb2Nlc3M6OmRvd25sb2Fk
UmVxdWVzdChTZXNzaW9uSUQgc2Vzc2lvbklELCB1aW50NjRfdCBkb3dubG9hZElELCB1aW50NjRf
dCBpbml0aWF0aW5nUGFnZUlELCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCi17Ci0g
ICAgV2ViUGFnZSogaW5pdGlhdGluZ1BhZ2UgPSBpbml0aWF0aW5nUGFnZUlEID8gd2ViUGFnZShp
bml0aWF0aW5nUGFnZUlEKSA6IDA7Ci0KLSAgICBSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdFdpdGhP
cmlnaW5hbFVSTCA9IHJlcXVlc3Q7Ci0gICAgaWYgKGluaXRpYXRpbmdQYWdlKQotICAgICAgICBp
bml0aWF0aW5nUGFnZS0+bWFpbkZyYW1lKCktPmxvYWRlcigpLnNldE9yaWdpbmFsVVJMRm9yRG93
bmxvYWRSZXF1ZXN0KHJlcXVlc3RXaXRoT3JpZ2luYWxVUkwpOwotCi0gICAgZG93bmxvYWRNYW5h
Z2VyKCkuc3RhcnREb3dubG9hZChzZXNzaW9uSUQsIGRvd25sb2FkSUQsIHJlcXVlc3RXaXRoT3Jp
Z2luYWxVUkwpOwotfQotCi12b2lkIFdlYlByb2Nlc3M6OnJlc3VtZURvd25sb2FkKHVpbnQ2NF90
IGRvd25sb2FkSUQsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgcmVzdW1lRGF0YSwgY29uc3Qg
U3RyaW5nJiBwYXRoLCBjb25zdCBXZWJLaXQ6OlNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYgc2Fu
ZGJveEV4dGVuc2lvbkhhbmRsZSkKLXsKLSAgICBkb3dubG9hZE1hbmFnZXIoKS5yZXN1bWVEb3du
bG9hZChkb3dubG9hZElELCByZXN1bWVEYXRhLCBwYXRoLCBzYW5kYm94RXh0ZW5zaW9uSGFuZGxl
KTsKLX0KLQotdm9pZCBXZWJQcm9jZXNzOjpjYW5jZWxEb3dubG9hZCh1aW50NjRfdCBkb3dubG9h
ZElEKQotewotICAgIGRvd25sb2FkTWFuYWdlcigpLmNhbmNlbERvd25sb2FkKGRvd25sb2FkSUQp
OwotfQotCiB2b2lkIFdlYlByb2Nlc3M6OnNldEVuaGFuY2VkQWNjZXNzaWJpbGl0eShib29sIGZs
YWcpCiB7CiAgICAgV2ViQ29yZTo6QVhPYmplY3RDYWNoZTo6c2V0RW5oYW5jZWRVc2VySW50ZXJm
YWNlQWNjZXNzaWJpbGl0eShmbGFnKTsKQEAgLTE0NzAsMTggKzEzODcsMTIgQEAgdm9pZCBXZWJQ
cm9jZXNzOjpwcmVmZXRjaEROUyhjb25zdCBTdHJpbgogICAgIGlmIChob3N0bmFtZS5pc0VtcHR5
KCkpCiAgICAgICAgIHJldHVybjsKIAotI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCi0gICAg
aWYgKHVzZXNOZXR3b3JrUHJvY2VzcygpKSB7Ci0gICAgICAgIGlmIChtX2Ruc1ByZWZldGNoZWRI
b3N0cy5hZGQoaG9zdG5hbWUpLmlzTmV3RW50cnkpCi0gICAgICAgICAgICBuZXR3b3JrQ29ubmVj
dGlvbigpLT5jb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzOjpQcmVmZXRjaEROUyhob3N0bmFtZSksIDApOwotICAgICAgICAvLyBUaGUgRE5T
IHByZWZldGNoZWQgaG9zdHMgY2FjaGUgaXMgb25seSB0byBhdm9pZCBhc2tpbmcgZm9yIHRoZSBz
YW1lIGhvc3RzIHRvbyBtYW55IHRpbWVzCi0gICAgICAgIC8vIGluIGEgdmVyeSBzaG9ydCBwZXJp
b2Qgb2YgdGltZSwgcHJvZHVjaW5nIGEgbG90IG9mIElQQyB0cmFmZmljLiBTbyB3ZSBjbGVhciB0
aGlzIGNhY2hlIGFmdGVyCi0gICAgICAgIC8vIHNvbWUgdGltZSBvZiBubyBETlMgcmVxdWVzdHMu
Ci0gICAgICAgIG1fZG5zUHJlZmV0Y2hIeXN0ZXJlcmlzLmltcHVsc2UoKTsKLSAgICAgICAgcmV0
dXJuOwotICAgIH0KLSNlbmRpZgotICAgIFdlYkNvcmU6OnByZWZldGNoRE5TKGhvc3RuYW1lKTsK
KyAgICBpZiAobV9kbnNQcmVmZXRjaGVkSG9zdHMuYWRkKGhvc3RuYW1lKS5pc05ld0VudHJ5KQor
ICAgICAgICBuZXR3b3JrQ29ubmVjdGlvbigpLT5jb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6
Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpQcmVmZXRjaEROUyhob3N0bmFtZSksIDAp
OworICAgIC8vIFRoZSBETlMgcHJlZmV0Y2hlZCBob3N0cyBjYWNoZSBpcyBvbmx5IHRvIGF2b2lk
IGFza2luZyBmb3IgdGhlIHNhbWUgaG9zdHMgdG9vIG1hbnkgdGltZXMKKyAgICAvLyBpbiBhIHZl
cnkgc2hvcnQgcGVyaW9kIG9mIHRpbWUsIHByb2R1Y2luZyBhIGxvdCBvZiBJUEMgdHJhZmZpYy4g
U28gd2UgY2xlYXIgdGhpcyBjYWNoZSBhZnRlcgorICAgIC8vIHNvbWUgdGltZSBvZiBubyBETlMg
cmVxdWVzdHMuCisgICAgbV9kbnNQcmVmZXRjaEh5c3RlcmVyaXMuaW1wdWxzZSgpOwogfQogCiB9
IC8vIG5hbWVzcGFjZSBXZWJLaXQKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UHJvY2Vzcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJv
Y2Vzcy5oCShyZXZpc2lvbiAxOTI2MDEpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlByb2Nlc3MuaAkod29ya2luZyBjb3B5KQpAQCAtMjgsNyArMjgsNiBAQAogCiAjaW5jbHVkZSAi
Q2FjaGVNb2RlbC5oIgogI2luY2x1ZGUgIkNoaWxkUHJvY2Vzcy5oIgotI2luY2x1ZGUgIkRvd25s
b2FkTWFuYWdlci5oIgogI2luY2x1ZGUgIkRyYXdpbmdBcmVhLmgiCiAjaW5jbHVkZSAiUGx1Z2lu
UHJvY2Vzc0Nvbm5lY3Rpb25NYW5hZ2VyLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VDYWNoZXNUb0Ns
ZWFyLmgiCkBAIC03MSw5ICs3MCw5IEBAIHN0cnVjdCBTZWN1cml0eU9yaWdpbkRhdGE7CiAKIG5h
bWVzcGFjZSBXZWJLaXQgewogCi1jbGFzcyBEb3dubG9hZE1hbmFnZXI7CiBjbGFzcyBFdmVudERp
c3BhdGNoZXI7CiBjbGFzcyBJbmplY3RlZEJ1bmRsZTsKK2NsYXNzIE5ldHdvcmtQcm9jZXNzQ29u
bmVjdGlvbjsKIGNsYXNzIE9iakNPYmplY3RHcmFwaDsKIGNsYXNzIFVzZXJEYXRhOwogY2xhc3Mg
V2ViQ29ubmVjdGlvblRvVUlQcm9jZXNzOwpAQCAtODIsMjIgKzgxLDE3IEBAIGNsYXNzIFdlYklj
b25EYXRhYmFzZVByb3h5OwogY2xhc3MgV2ViUGFnZTsKIGNsYXNzIFdlYlBhZ2VHcm91cFByb3h5
OwogY2xhc3MgV2ViUHJvY2Vzc1N1cHBsZW1lbnQ7CitjbGFzcyBXZWJSZXNvdXJjZUxvYWRTY2hl
ZHVsZXI7CiBzdHJ1Y3QgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVyczsKIHN0cnVjdCBXZWJQYWdl
R3JvdXBEYXRhOwogc3RydWN0IFdlYlByZWZlcmVuY2VzU3RvcmU7CiBzdHJ1Y3QgV2ViUHJvY2Vz
c0NyZWF0aW9uUGFyYW1ldGVyczsKIAotI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCi1jbGFz
cyBOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb247Ci1jbGFzcyBXZWJSZXNvdXJjZUxvYWRTY2hlZHVs
ZXI7Ci0jZW5kaWYKLQogI2lmIEVOQUJMRShEQVRBQkFTRV9QUk9DRVNTKQogY2xhc3MgV2ViVG9E
YXRhYmFzZVByb2Nlc3NDb25uZWN0aW9uOwogI2VuZGlmCiAKLWNsYXNzIFdlYlByb2Nlc3MgOiBw
dWJsaWMgQ2hpbGRQcm9jZXNzLCBwcml2YXRlIERvd25sb2FkTWFuYWdlcjo6Q2xpZW50IHsKLSAg
ICBmcmllbmQgY2xhc3MgTmV2ZXJEZXN0cm95ZWQ8RG93bmxvYWRNYW5hZ2VyPjsKK2NsYXNzIFdl
YlByb2Nlc3MgOiBwdWJsaWMgQ2hpbGRQcm9jZXNzIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgV2Vi
UHJvY2VzcyYgc2luZ2xldG9uKCk7CiAKQEAgLTE0Nyw3ICsxNDEsNiBAQCBwdWJsaWM6CiAjZW5k
aWYKICAgICAKICAgICBjb25zdCBUZXh0Q2hlY2tlclN0YXRlJiB0ZXh0Q2hlY2tlclN0YXRlKCkg
Y29uc3QgeyByZXR1cm4gbV90ZXh0Q2hlY2tlclN0YXRlOyB9Ci0gICAgRG93bmxvYWRNYW5hZ2Vy
JiBkb3dubG9hZE1hbmFnZXIoKTsKIAogICAgIHZvaWQgY2xlYXJSZXNvdXJjZUNhY2hlcyhSZXNv
dXJjZUNhY2hlc1RvQ2xlYXIgPSBBbGxSZXNvdXJjZUNhY2hlcyk7CiAgICAgCkBAIC0xNTcsMTMg
KzE1MCw5IEBAIHB1YmxpYzoKIAogICAgIEV2ZW50RGlzcGF0Y2hlciYgZXZlbnREaXNwYXRjaGVy
KCkgeyByZXR1cm4gKm1fZXZlbnREaXNwYXRjaGVyOyB9CiAKLSAgICBib29sIHVzZXNOZXR3b3Jr
UHJvY2VzcygpIGNvbnN0OwotCi0jaWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKICAgICBOZXR3
b3JrUHJvY2Vzc0Nvbm5lY3Rpb24qIG5ldHdvcmtDb25uZWN0aW9uKCk7CiAgICAgdm9pZCBuZXR3
b3JrUHJvY2Vzc0Nvbm5lY3Rpb25DbG9zZWQoTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKik7CiAg
ICAgV2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVyJiB3ZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXIoKTsK
LSNlbmRpZgogCiAjaWYgRU5BQkxFKERBVEFCQVNFX1BST0NFU1MpCiAgICAgdm9pZCB3ZWJUb0Rh
dGFiYXNlUHJvY2Vzc0Nvbm5lY3Rpb25DbG9zZWQoV2ViVG9EYXRhYmFzZVByb2Nlc3NDb25uZWN0
aW9uKik7CkBAIC0yMjIsMTIgKzIxMSw2IEBAIHByaXZhdGU6CiAgICAgV2ViUHJvY2VzcygpOwog
ICAgIH5XZWJQcm9jZXNzKCk7CiAKLSAgICAvLyBEb3dubG9hZE1hbmFnZXI6OkNsaWVudC4KLSAg
ICB2aXJ0dWFsIHZvaWQgZGlkQ3JlYXRlRG93bmxvYWQoKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFs
IHZvaWQgZGlkRGVzdHJveURvd25sb2FkKCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBJUEM6OkNv
bm5lY3Rpb24qIGRvd25sb2FkUHJveHlDb25uZWN0aW9uKCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVh
bCBBdXRoZW50aWNhdGlvbk1hbmFnZXImIGRvd25sb2Fkc0F1dGhlbnRpY2F0aW9uTWFuYWdlcigp
IG92ZXJyaWRlOwotCiAgICAgdm9pZCBpbml0aWFsaXplV2ViUHJvY2VzcyhXZWJQcm9jZXNzQ3Jl
YXRpb25QYXJhbWV0ZXJzJiYpOwogICAgIHZvaWQgcGxhdGZvcm1Jbml0aWFsaXplV2ViUHJvY2Vz
cyhXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzJiYpOwogCkBAIC0zNTksMTQgKzM0MiwxMSBA
QCBwcml2YXRlOgogCiAgICAgV2ViSWNvbkRhdGFiYXNlUHJveHkqIG1faWNvbkRhdGFiYXNlUHJv
eHk7CiAKLSNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQogICAgIHZvaWQgZW5zdXJlTmV0d29y
a1Byb2Nlc3NDb25uZWN0aW9uKCk7CiAgICAgUmVmUHRyPE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlv
bj4gbV9uZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb247Ci0gICAgYm9vbCBtX3VzZXNOZXR3b3JrUHJv
Y2VzczsKICAgICBXZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXIqIG1fd2ViUmVzb3VyY2VMb2FkU2No
ZWR1bGVyOwogICAgIEhhc2hTZXQ8U3RyaW5nPiBtX2Ruc1ByZWZldGNoZWRIb3N0czsKICAgICBX
ZWJDb3JlOjpIeXN0ZXJlc2lzQWN0aXZpdHkgbV9kbnNQcmVmZXRjaEh5c3RlcmVyaXM7Ci0jZW5k
aWYKIAogI2lmIEVOQUJMRShEQVRBQkFTRV9QUk9DRVNTKQogICAgIHZvaWQgZW5zdXJlV2ViVG9E
YXRhYmFzZVByb2Nlc3NDb25uZWN0aW9uKCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCShyZXZpc2lvbiAxOTI2MDEpCisrKyBT
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMuaW4JKHdvcmtpbmcg
Y29weSkKQEAgLTYyLDEyICs2Miw2IEBAIG1lc3NhZ2VzIC0+IFdlYlByb2Nlc3MgTGVnYWN5UmVj
ZWl2ZXIgewogICAgIHZvaWQgU3RhcnRNZW1vcnlTYW1wbGVyKFdlYktpdDo6U2FuZGJveEV4dGVu
c2lvbjo6SGFuZGxlIHNhbXBsZUxvZ0ZpbGVIYW5kbGUsIFN0cmluZyBzYW1wbGVMb2dGaWxlUGF0
aCwgZG91YmxlIGludGVydmFsKTsKICAgICB2b2lkIFN0b3BNZW1vcnlTYW1wbGVyKCk7CiAKLSAg
ICAjIERvd25sb2Fkcy4gVGhpcyBzaG91bGQgcmVhbGx5IGJlIGluIGEgRG93bmxvYWQubWVzc2Fn
ZXMuaW4sIGJ1dCBpdCBzZWVtZWQgdW5uZWNlc3NhcnkgdG8gY3JlYXRlIGEgbmV3IGZpbGUganVz
dCBmb3IKLSAgICAjIHRocmVlIG1lc3NhZ2VzLgotICAgIERvd25sb2FkUmVxdWVzdChXZWJDb3Jl
OjpTZXNzaW9uSUQgc2Vzc2lvbklELCB1aW50NjRfdCBkb3dubG9hZElELCB1aW50NjRfdCBpbml0
aWF0aW5nUGFnZUlELCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdCkKLSAgICBSZXN1
bWVEb3dubG9hZCh1aW50NjRfdCBkb3dubG9hZElELCBJUEM6OkRhdGFSZWZlcmVuY2UgcmVzdW1l
RGF0YSwgU3RyaW5nIHBhdGgsIFdlYktpdDo6U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlIHNhbmRi
b3hFeHRlbnNpb25IYW5kbGUpCi0gICAgQ2FuY2VsRG93bmxvYWQodWludDY0X3QgZG93bmxvYWRJ
RCkKLQogICAgIFNldFRleHRDaGVja2VyU3RhdGUoc3RydWN0IFdlYktpdDo6VGV4dENoZWNrZXJT
dGF0ZSB0ZXh0Q2hlY2tlclN0YXRlKQogCiAgICAgU2V0RW5oYW5jZWRBY2Nlc3NpYmlsaXR5KGJv
b2wgZmxhZykKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvRmlsZUFQSS9CbG9iUmVn
aXN0cnlQcm94eS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9G
aWxlQVBJL0Jsb2JSZWdpc3RyeVByb3h5LmNwcAkocmV2aXNpb24gMTkyNjAxKQorKysgU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9GaWxlQVBJL0Jsb2JSZWdpc3RyeVByb3h5LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMjYsOCArMjYsNiBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUg
IkJsb2JSZWdpc3RyeVByb3h5LmgiCiAKLSNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQotCiAj
aW5jbHVkZSAiTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3NNZXNzYWdlcy5oIgogI2luY2x1
ZGUgIk5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5oIgogI2luY2x1ZGUgIldlYkNvcmVBcmd1bWVu
dENvZGVycy5oIgpAQCAtNDAsOCArMzgsNiBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogdm9pZCBC
bG9iUmVnaXN0cnlQcm94eTo6cmVnaXN0ZXJGaWxlQmxvYlVSTChjb25zdCBXZWJDb3JlOjpVUkwm
IHVybCwgUGFzc1JlZlB0cjxCbG9iRGF0YUZpbGVSZWZlcmVuY2U+IGZpbGUsIGNvbnN0IFN0cmlu
ZyYgY29udGVudFR5cGUpCiB7Ci0gICAgQVNTRVJUKFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnVz
ZXNOZXR3b3JrUHJvY2VzcygpKTsKLQogICAgIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSBleHRl
bnNpb25IYW5kbGU7CiAKICAgICAvLyBGaWxlIHBhdGggY2FuIGJlIGVtcHR5IHdoZW4gc3VibWl0
dGluZyBhIGZvcm0gZmlsZSBpbnB1dCB3aXRob3V0IGEgZmlsZSwgc2VlIGJ1ZyAxMTE3NzguCkBA
IC01MywzNiArNDksMjYgQEAgdm9pZCBCbG9iUmVnaXN0cnlQcm94eTo6cmVnaXN0ZXJGaWxlQmxv
YgogCiB2b2lkIEJsb2JSZWdpc3RyeVByb3h5OjpyZWdpc3RlckJsb2JVUkwoY29uc3QgVVJMJiB1
cmwsIFZlY3RvcjxCbG9iUGFydD4gYmxvYlBhcnRzLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBl
KQogewotICAgIEFTU0VSVChXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS51c2VzTmV0d29ya1Byb2Nl
c3MoKSk7Ci0KICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5uZXR3b3JrQ29ubmVjdGlvbigp
LT5jb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzOjpSZWdpc3RlckJsb2JVUkwodXJsLCBibG9iUGFydHMsIGNvbnRlbnRUeXBlKSwgMCk7CiB9
CiAKIHZvaWQgQmxvYlJlZ2lzdHJ5UHJveHk6OnJlZ2lzdGVyQmxvYlVSTChjb25zdCBVUkwmIHVy
bCwgY29uc3QgVVJMJiBzcmNVUkwpCiB7Ci0gICAgQVNTRVJUKFdlYlByb2Nlc3M6OnNpbmdsZXRv
bigpLnVzZXNOZXR3b3JrUHJvY2VzcygpKTsKLQogICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigp
Lm5ldHdvcmtDb25uZWN0aW9uKCktPmNvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6TmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OlJlZ2lzdGVyQmxvYlVSTEZyb21VUkwodXJsLCBzcmNV
UkwpLCAwKTsKIH0KIAogdm9pZCBCbG9iUmVnaXN0cnlQcm94eTo6dW5yZWdpc3RlckJsb2JVUkwo
Y29uc3QgVVJMJiB1cmwpCiB7Ci0gICAgQVNTRVJUKFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnVz
ZXNOZXR3b3JrUHJvY2VzcygpKTsKLQogICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLm5ldHdv
cmtDb25uZWN0aW9uKCktPmNvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6TmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3M6OlVucmVnaXN0ZXJCbG9iVVJMKHVybCksIDApOwogfQogCiB2b2lk
IEJsb2JSZWdpc3RyeVByb3h5OjpyZWdpc3RlckJsb2JVUkxGb3JTbGljZShjb25zdCBVUkwmIHVy
bCwgY29uc3QgVVJMJiBzcmNVUkwsIGxvbmcgbG9uZyBzdGFydCwgbG9uZyBsb25nIGVuZCkKIHsK
LSAgICBBU1NFUlQoV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkudXNlc05ldHdvcmtQcm9jZXNzKCkp
OwotCiAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkubmV0d29ya0Nvbm5lY3Rpb24oKS0+Y29u
bmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6
UmVnaXN0ZXJCbG9iVVJMRm9yU2xpY2UodXJsLCBzcmNVUkwsIHN0YXJ0LCBlbmQpLCAwKTsKIH0K
IAogdW5zaWduZWQgbG9uZyBsb25nIEJsb2JSZWdpc3RyeVByb3h5OjpibG9iU2l6ZShjb25zdCBV
UkwmIHVybCkKIHsKLSAgICBBU1NFUlQoV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkudXNlc05ldHdv
cmtQcm9jZXNzKCkpOwotCiAgICAgdWludDY0X3QgcmVzdWx0U2l6ZTsKICAgICBpZiAoIVdlYlBy
b2Nlc3M6OnNpbmdsZXRvbigpLm5ldHdvcmtDb25uZWN0aW9uKCktPmNvbm5lY3Rpb24oKS0+c2Vu
ZFN5bmMoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpCbG9iU2l6ZSh1
cmwpLCBNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkJsb2JTaXplOjpS
ZXBseShyZXN1bHRTaXplKSwgMCkpCiAgICAgICAgIHJldHVybiAwOwpAQCAtOTAsNSArNzYsMyBA
QCB1bnNpZ25lZCBsb25nIGxvbmcgQmxvYlJlZ2lzdHJ5UHJveHk6OmJsCiB9CiAKIH0KLQotI2Vu
ZGlmIC8vIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL0ZpbGVBUEkvQmxvYlJlZ2lzdHJ5UHJveHkuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL0ZpbGVBUEkvQmxvYlJlZ2lzdHJ5UHJveHkuaAkocmV2aXNpb24g
MTkyNjAxKQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9GaWxlQVBJL0Jsb2JSZWdpc3Ry
eVByb3h5LmgJKHdvcmtpbmcgY29weSkKQEAgLTI2LDggKzI2LDYgQEAKICNpZm5kZWYgQmxvYlJl
Z2lzdHJ5UHJveHlfaAogI2RlZmluZSBCbG9iUmVnaXN0cnlQcm94eV9oCiAKLSNpZiBFTkFCTEUo
TkVUV09SS19QUk9DRVNTKQotCiAjaW5jbHVkZSA8V2ViQ29yZS9CbG9iUmVnaXN0cnkuaD4KIAog
bmFtZXNwYWNlIFdlYktpdCB7CkBAIC00NCw2ICs0Miw0IEBAIHB1YmxpYzoKIAogfQogCi0jZW5k
aWYgLy8gRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKLQogI2VuZGlmIC8vIEJsb2JSZWdpc3RyeVBy
b3h5X2gKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJv
Y2Vzc0Nvbm5lY3Rpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCShyZXZpc2lvbiAxOTI2MDEp
CisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25u
ZWN0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzcsOCArMzcsNiBAQAogI2luY2x1ZGUgPFdl
YkNvcmUvU2Vzc2lvbklELmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TaGFyZWRCdWZmZXIuaD4KIAot
I2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCi0KIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwog
CiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTk4LDUgKzk2LDMgQEAgdm9pZCBOZXR3b3JrUHJvY2Vz
c0Nvbm5lY3Rpb246OmRpZENhY2hlUgogI2VuZGlmCiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAot
Ci0jZW5kaWYgLy8gRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKSW5kZXg6IFNvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25u
ZWN0aW9uLmgJKHJldmlzaW9uIDE5MjYwMSkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
TmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uaAkod29ya2luZyBjb3B5KQpAQCAtMzEs
OCArMzEsNiBAQAogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL3Rl
eHQvV1RGU3RyaW5nLmg+CiAKLSNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQotCiBuYW1lc3Bh
Y2UgSVBDIHsKIGNsYXNzIERhdGFSZWZlcmVuY2U7CiB9CkBAIC04Miw3ICs4MCw0IEBAIHByaXZh
dGU6CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCi0jZW5kaWYgLy8gRU5BQkxFKE5FVFdPUktf
UFJPQ0VTUykKLQotCiAjZW5kaWYgLy8gTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uX2gKSW5kZXg6
IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rp
b24ubWVzc2FnZXMuaW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9O
ZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5tZXNzYWdlcy5pbgkocmV2aXNpb24gMTky
NjAxKQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNz
Q29ubmVjdGlvbi5tZXNzYWdlcy5pbgkod29ya2luZyBjb3B5KQpAQCAtMjAsOCArMjAsNiBAQAog
IyBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQogIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogCi0jaWYgRU5BQkxFKE5FVFdP
UktfUFJPQ0VTUykKLQogbWVzc2FnZXMgLT4gTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uIExlZ2Fj
eVJlY2VpdmVyIHsKIAogI2lmIEVOQUJMRShTSEFSRUFCTEVfUkVTT1VSQ0UpCkBAIC0yOSw1ICsy
NywzIEBAIG1lc3NhZ2VzIC0+IE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbiBMZWcKICNlbmRpZgog
CiB9Ci0KLSNlbmRpZiAvLyBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQpJbmRleDogU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZFNjaGVkdWxlci5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNl
TG9hZFNjaGVkdWxlci5jcHAJKHJldmlzaW9uIDE5MjYwMSkKKysrIFNvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXIuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC01Miw4ICs1Miw2IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9TdWJyZXNvdXJjZUxvYWRl
ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KIAotI2lmIEVOQUJMRShORVRXT1JL
X1BST0NFU1MpCi0KIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBuYW1lc3BhY2UgV2ViS2l0
IHsKQEAgLTI4Niw1ICsyODQsMyBAQCB2b2lkIFdlYlJlc291cmNlTG9hZFNjaGVkdWxlcjo6bmV0
d29ya1ByCiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAotCi0jZW5kaWYgLy8gRU5BQkxFKE5F
VFdPUktfUFJPQ0VTUykKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvTmV0d29yay9X
ZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVyLmgJKHJldmlzaW9uIDE5
MjYwMSkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxv
YWRTY2hlZHVsZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzIsOCArMzIsNiBAQAogI2luY2x1ZGUg
PFdlYkNvcmUvUmVzb3VyY2VMb2FkZXIuaD4KICNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgogCi0j
aWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKLQogbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNz
IE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbjsKQEAgLTc3LDYgKzc1LDQgQEAgcHJpdmF0ZToKIAog
fSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKLSNlbmRpZiAvLyBFTkFCTEUoTkVUV09SS19QUk9DRVNT
KQotCiAjZW5kaWYgLy8gV2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVyX2gKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVy
LmNwcAkocmV2aXNpb24gMTkyNjAxKQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9OZXR3
b3JrL1dlYlJlc291cmNlTG9hZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjYsOCArMjYsNiBA
QAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIldlYlJlc291cmNlTG9hZGVyLmgiCiAK
LSNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQotCiAjaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5o
IgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rp
b24uaCIKQEAgLTIyMSw1ICsyMTksMyBAQCB2b2lkIFdlYlJlc291cmNlTG9hZGVyOjpjYW5BdXRo
ZW50aWNhdGVBCiAjZW5kaWYKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KLSNlbmRpZiAvLyBF
TkFCTEUoTkVUV09SS19QUk9DRVNTKQpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9O
ZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmgJKHJldmlzaW9uIDE5MjYwMSkK
KysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5o
CSh3b3JraW5nIGNvcHkpCkBAIC0yNiw4ICsyNiw2IEBACiAjaWZuZGVmIFdlYlJlc291cmNlTG9h
ZGVyX2gKICNkZWZpbmUgV2ViUmVzb3VyY2VMb2FkZXJfaAogCi0jaWYgRU5BQkxFKE5FVFdPUktf
UFJPQ0VTUykKLQogI2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIKICNpbmNsdWRlICJNZXNzYWdlU2Vu
ZGVyLmgiCiAjaW5jbHVkZSAiU2hhcmVhYmxlUmVzb3VyY2UuaCIKQEAgLTk0LDYgKzkyLDQgQEAg
cHJpdmF0ZToKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKLSNlbmRpZiAvLyBFTkFCTEUoTkVU
V09SS19QUk9DRVNTKQotCiAjZW5kaWYgLy8gV2ViUmVzb3VyY2VMb2FkZXJfaApJbmRleDogU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLm1lc3NhZ2Vz
LmluCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvTmV0d29yay9XZWJS
ZXNvdXJjZUxvYWRlci5tZXNzYWdlcy5pbgkocmV2aXNpb24gMTkyNjAxKQorKysgU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLm1lc3NhZ2VzLmluCSh3
b3JraW5nIGNvcHkpCkBAIC0yMCw4ICsyMCw2IEBACiAjIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCiAj
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCiAKLSNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQotCiBtZXNzYWdlcyAt
PiBXZWJSZXNvdXJjZUxvYWRlciBMZWdhY3lSZWNlaXZlciB7CiAgICAgV2lsbFNlbmRSZXF1ZXN0
KFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCByZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJlc3Bv
bnNlIHJlZGlyZWN0UmVzcG9uc2UpCiAgICAgRGlkU2VuZERhdGEodWludDY0X3QgYnl0ZXNTZW50
LCB1aW50NjRfdCB0b3RhbEJ5dGVzVG9CZVNlbnQpCkBAIC0zOSw1ICszNywzIEBAIG1lc3NhZ2Vz
IC0+IFdlYlJlc291cmNlTG9hZGVyIExlZ2FjeVJlY2UKICAgICBEaWRSZWNlaXZlUmVzb3VyY2Uo
V2ViS2l0OjpTaGFyZWFibGVSZXNvdXJjZTo6SGFuZGxlIHJlc291cmNlLCBkb3VibGUgZmluaXNo
VGltZSkKICNlbmRpZgogfQotCi0jZW5kaWYgLy8gRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZUJy
b3dzZXJGdW5jcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Q
bHVnaW5zL05ldHNjYXBlL05ldHNjYXBlQnJvd3NlckZ1bmNzLmNwcAkocmV2aXNpb24gMTkyNjAx
KQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBl
QnJvd3NlckZ1bmNzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTA1MywxMSArMTA1Myw3IEBAIHN0
YXRpYyB2b2lkIGluaXRpYWxpemVCcm93c2VyRnVuY3MoTlBOZXQKICAgICBuZXRzY2FwZUZ1bmNz
LnBvcHVwY29udGV4dG1lbnUgPSAwOwogICAgIG5ldHNjYXBlRnVuY3MuY29udmVydHBvaW50ID0g
MDsKICNlbmRpZgotI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCiAgICAgbmV0c2NhcGVGdW5j
cy51cmxyZWRpcmVjdHJlc3BvbnNlID0gTlBOX1VSTFJlZGlyZWN0UmVzcG9uc2U7Ci0jZWxzZQot
ICAgIG5ldHNjYXBlRnVuY3MudXJscmVkaXJlY3RyZXNwb25zZSA9IDA7Ci0jZW5kaWYKIH0KICAg
ICAKIE5QTmV0c2NhcGVGdW5jcyogbmV0c2NhcGVCcm93c2VyRnVuY3MoKQpJbmRleDogU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUv
TmV0c2NhcGVQbHVnaW4uY3BwCShyZXZpc2lvbiAxOTI2MDEpCisrKyBTb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4uY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC00MDAsMTYgKzQwMCwxMiBAQCBib29sIE5ldHNjYXBlUGx1Z2luOjpnZXRBdXRoZW50
aWNhdGlvbkluCiAKIHZvaWQgTmV0c2NhcGVQbHVnaW46OnJlZ2lzdGVyUmVkaXJlY3QoTmV0c2Nh
cGVQbHVnaW5TdHJlYW0qIHN0cmVhbSwgY29uc3QgVVJMJiByZXF1ZXN0VVJMLCBpbnQgcmVkaXJl
Y3RSZXNwb25zZVN0YXR1cywgdm9pZCogbm90aWZpY2F0aW9uRGF0YSkKIHsKLSNpZiBFTkFCTEUo
TkVUV09SS19QUk9DRVNTKQogICAgIC8vIE5QUF9VUkxSZWRpcmVjdE5vdGlmeSBtYXkgc3luY2hy
b25vdXNseSByZXF1ZXN0IHRoaXMgc3RyZWFtIGJhY2sgb3V0LCBzbyBzZXQgaXQgZmlyc3QKICAg
ICBtX3JlZGlyZWN0cy5zZXQobm90aWZpY2F0aW9uRGF0YSwgc3RkOjptYWtlX3BhaXIoc3RyZWFt
LCByZXF1ZXN0VVJMLnN0cmluZygpKSk7CiAgICAgaWYgKCFOUFBfVVJMUmVkaXJlY3ROb3RpZnko
cmVxdWVzdFVSTC5zdHJpbmcoKS51dGY4KCkuZGF0YSgpLCByZWRpcmVjdFJlc3BvbnNlU3RhdHVz
LCBub3RpZmljYXRpb25EYXRhKSkgewogICAgICAgICBtX3JlZGlyZWN0cy50YWtlKG5vdGlmaWNh
dGlvbkRhdGEpOwogICAgICAgICBjb250cm9sbGVyKCktPmNvbnRpbnVlU3RyZWFtTG9hZChzdHJl
YW0tPnN0cmVhbUlEKCkpOwogICAgIH0KLSNlbHNlCi0gICAgY29udHJvbGxlcigpLT5jb250aW51
ZVN0cmVhbUxvYWQoc3RyZWFtLT5zdHJlYW1JRCgpKTsKLSNlbmRpZgogfQogCiB2b2lkIE5ldHNj
YXBlUGx1Z2luOjp1cmxSZWRpcmVjdFJlc3BvbnNlKHZvaWQqIG5vdGlmeURhdGEsIGJvb2wgYWxs
b3cpCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBs
YXRmb3JtU3RyYXRlZ2llcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwCShyZXZpc2lvbiAx
OTI2MDEpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBs
YXRmb3JtU3RyYXRlZ2llcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2LDkgKzI2LDEyIEBACiAj
aW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgiCiAK
KyNpbmNsdWRlICJCbG9iUmVnaXN0cnlQcm94eS5oIgogI2luY2x1ZGUgIkJsb2NraW5nUmVzcG9u
c2VNYXAuaCIKICNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiSGFuZ0RldGVj
dGlvbkRpc2FibGVyLmgiCisjaW5jbHVkZSAiTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3NN
ZXNzYWdlcy5oIgorI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5oIgogI2luY2x1
ZGUgIk5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmgiCiAjaW5jbHVkZSAiUGx1Z2luSW5m
b1N0b3JlLmgiCiAjaW5jbHVkZSAiU2Vzc2lvblRyYWNrZXIuaCIKQEAgLTQ0LDYgKzQ3LDcgQEAK
ICNpbmNsdWRlICJXZWJQYXN0ZWJvYXJkUHJveHlNZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYlBy
b2Nlc3MuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzUHJveHlNZXNzYWdlcy5oIgorI2luY2x1ZGUg
IldlYlJlc291cmNlTG9hZFNjaGVkdWxlci5oIgogI2luY2x1ZGUgPFdlYkNvcmUvQ29sb3IuaD4K
ICNpbmNsdWRlIDxXZWJDb3JlL0RvY3VtZW50TG9hZGVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9J
REJGYWN0b3J5QmFja2VuZEludGVyZmFjZS5oPgpAQCAtNjMsMTMgKzY3LDYgQEAKICNpbmNsdWRl
IDxXZWJDb3JlL1VSTC5oPgogI2luY2x1ZGUgPHd0Zi9BdG9taWNzLmg+CiAKLSNpZiBFTkFCTEUo
TkVUV09SS19QUk9DRVNTKQotI2luY2x1ZGUgIkJsb2JSZWdpc3RyeVByb3h5LmgiCi0jaW5jbHVk
ZSAiTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3NNZXNzYWdlcy5oIgotI2luY2x1ZGUgIk5l
dHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5oIgotI2luY2x1ZGUgIldlYlJlc291cmNlTG9hZFNjaGVk
dWxlci5oIgotI2VuZGlmCi0KIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBuYW1lc3BhY2Ug
V2ViS2l0IHsKQEAgLTExMiwxMTQgKzEwOSw1NiBAQCBQbHVnaW5TdHJhdGVneSogV2ViUGxhdGZv
cm1TdHJhdGVnaWVzOjpjCiAKIFN0cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNvb2tpZXNG
b3JET00oY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBVUkwmIGZp
cnN0UGFydHksIGNvbnN0IFVSTCYgdXJsKQogewotI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1Mp
CiAgICAgYXV0byYgd2ViUHJvY2VzcyA9IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpOwotICAgIGlm
ICh3ZWJQcm9jZXNzLnVzZXNOZXR3b3JrUHJvY2VzcygpKSB7Ci0gICAgICAgIFN0cmluZyByZXN1
bHQ7Ci0gICAgICAgIGlmICghd2ViUHJvY2Vzcy5uZXR3b3JrQ29ubmVjdGlvbigpLT5jb25uZWN0
aW9uKCktPnNlbmRTeW5jKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6
Q29va2llc0ZvckRPTShTZXNzaW9uVHJhY2tlcjo6c2Vzc2lvbklEKHNlc3Npb24pLCBmaXJzdFBh
cnR5LCB1cmwpLCBNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkNvb2tp
ZXNGb3JET006OlJlcGx5KHJlc3VsdCksIDApKQotICAgICAgICAgICAgcmV0dXJuIFN0cmluZygp
OwotICAgICAgICByZXR1cm4gcmVzdWx0OwotICAgIH0KLSNlbmRpZgotCi0gICAgcmV0dXJuIFdl
YkNvcmU6OmNvb2tpZXNGb3JET00oc2Vzc2lvbiwgZmlyc3RQYXJ0eSwgdXJsKTsKKyAgICBTdHJp
bmcgcmVzdWx0OworICAgIGlmICghd2ViUHJvY2Vzcy5uZXR3b3JrQ29ubmVjdGlvbigpLT5jb25u
ZWN0aW9uKCktPnNlbmRTeW5jKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vz
czo6Q29va2llc0ZvckRPTShTZXNzaW9uVHJhY2tlcjo6c2Vzc2lvbklEKHNlc3Npb24pLCBmaXJz
dFBhcnR5LCB1cmwpLCBNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkNv
b2tpZXNGb3JET006OlJlcGx5KHJlc3VsdCksIDApKQorICAgICAgICByZXR1cm4gU3RyaW5nKCk7
CisgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAogdm9pZCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnNl
dENvb2tpZXNGcm9tRE9NKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29u
c3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBjb29raWVT
dHJpbmcpCiB7Ci0jaWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKICAgICBhdXRvJiB3ZWJQcm9j
ZXNzID0gV2ViUHJvY2Vzczo6c2luZ2xldG9uKCk7Ci0gICAgaWYgKHdlYlByb2Nlc3MudXNlc05l
dHdvcmtQcm9jZXNzKCkpIHsKLSAgICAgICAgd2ViUHJvY2Vzcy5uZXR3b3JrQ29ubmVjdGlvbigp
LT5jb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzOjpTZXRDb29raWVzRnJvbURPTShTZXNzaW9uVHJhY2tlcjo6c2Vzc2lvbklEKHNlc3Npb24p
LCBmaXJzdFBhcnR5LCB1cmwsIGNvb2tpZVN0cmluZyksIDApOwotICAgICAgICByZXR1cm47Ci0g
ICAgfQotI2VuZGlmCi0KLSAgICBXZWJDb3JlOjpzZXRDb29raWVzRnJvbURPTShzZXNzaW9uLCBm
aXJzdFBhcnR5LCB1cmwsIGNvb2tpZVN0cmluZyk7CisgICAgd2ViUHJvY2Vzcy5uZXR3b3JrQ29u
bmVjdGlvbigpLT5jb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzOjpTZXRDb29raWVzRnJvbURPTShTZXNzaW9uVHJhY2tlcjo6c2Vzc2lvbklE
KHNlc3Npb24pLCBmaXJzdFBhcnR5LCB1cmwsIGNvb2tpZVN0cmluZyksIDApOwogfQogCiBib29s
IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y29va2llc0VuYWJsZWQoY29uc3QgTmV0d29ya1N0b3Jh
Z2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFVSTCYgdXJs
KQogewotI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCi0gICAgYXV0byYgd2ViUHJvY2VzcyA9
IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpOwotICAgIGlmICh3ZWJQcm9jZXNzLnVzZXNOZXR3b3Jr
UHJvY2VzcygpKSB7Ci0gICAgICAgIGJvb2wgcmVzdWx0OwotICAgICAgICBpZiAoIXdlYlByb2Nl
c3MubmV0d29ya0Nvbm5lY3Rpb24oKS0+Y29ubmVjdGlvbigpLT5zZW5kU3luYyhNZXNzYWdlczo6
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkNvb2tpZXNFbmFibGVkKFNlc3Npb25UcmFj
a2VyOjpzZXNzaW9uSUQoc2Vzc2lvbiksIGZpcnN0UGFydHksIHVybCksIE1lc3NhZ2VzOjpOZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Q29va2llc0VuYWJsZWQ6OlJlcGx5KHJlc3VsdCks
IDApKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICByZXR1cm4gcmVzdWx0Owot
ICAgIH0KLSNlbmRpZgotCi0gICAgcmV0dXJuIFdlYkNvcmU6OmNvb2tpZXNFbmFibGVkKHNlc3Np
b24sIGZpcnN0UGFydHksIHVybCk7CisgICAgYm9vbCByZXN1bHQ7CisgICAgaWYgKCFXZWJQcm9j
ZXNzOjpzaW5nbGV0b24oKS5uZXR3b3JrQ29ubmVjdGlvbigpLT5jb25uZWN0aW9uKCktPnNlbmRT
eW5jKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Q29va2llc0VuYWJs
ZWQoU2Vzc2lvblRyYWNrZXI6OnNlc3Npb25JRChzZXNzaW9uKSwgZmlyc3RQYXJ0eSwgdXJsKSwg
TWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpDb29raWVzRW5hYmxlZDo6
UmVwbHkocmVzdWx0KSwgMCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gcmVz
dWx0OwogfQogCiBTdHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjb29raWVSZXF1ZXN0SGVh
ZGVyRmllbGRWYWx1ZShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0
IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgVVJMJiB1cmwpCiB7Ci0jaWYgRU5BQkxFKE5FVFdPUktf
UFJPQ0VTUykKLSAgICBhdXRvJiB3ZWJQcm9jZXNzID0gV2ViUHJvY2Vzczo6c2luZ2xldG9uKCk7
Ci0gICAgaWYgKHdlYlByb2Nlc3MudXNlc05ldHdvcmtQcm9jZXNzKCkpIHsKLSAgICAgICAgU3Ry
aW5nIHJlc3VsdDsKLSAgICAgICAgaWYgKCF3ZWJQcm9jZXNzLm5ldHdvcmtDb25uZWN0aW9uKCkt
PmNvbm5lY3Rpb24oKS0+c2VuZFN5bmMoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzOjpDb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShTZXNzaW9uVHJhY2tlcjo6c2Vz
c2lvbklEKHNlc3Npb24pLCBmaXJzdFBhcnR5LCB1cmwpLCBNZXNzYWdlczo6TmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3M6OkNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlOjpSZXBseShy
ZXN1bHQpLCAwKSkKLSAgICAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKLSAgICAgICAgcmV0dXJu
IHJlc3VsdDsKLSAgICB9Ci0jZW5kaWYKLQotICAgIHJldHVybiBXZWJDb3JlOjpjb29raWVSZXF1
ZXN0SGVhZGVyRmllbGRWYWx1ZShzZXNzaW9uLCBmaXJzdFBhcnR5LCB1cmwpOworICAgIFN0cmlu
ZyByZXN1bHQ7CisgICAgaWYgKCFXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5uZXR3b3JrQ29ubmVj
dGlvbigpLT5jb25uZWN0aW9uKCktPnNlbmRTeW5jKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2Vzczo6Q29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoU2Vzc2lvblRyYWNr
ZXI6OnNlc3Npb25JRChzZXNzaW9uKSwgZmlyc3RQYXJ0eSwgdXJsKSwgTWVzc2FnZXM6Ok5ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpDb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZTo6
UmVwbHkocmVzdWx0KSwgMCkpCisgICAgICAgIHJldHVybiBTdHJpbmcoKTsKKyAgICByZXR1cm4g
cmVzdWx0OwogfQogCiBib29sIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Z2V0UmF3Q29va2llcyhj
b25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IFVSTCYgZmlyc3RQYXJ0
eSwgY29uc3QgVVJMJiB1cmwsIFZlY3RvcjxDb29raWU+JiByYXdDb29raWVzKQogewotI2lmIEVO
QUJMRShORVRXT1JLX1BST0NFU1MpCi0gICAgYXV0byYgd2ViUHJvY2VzcyA9IFdlYlByb2Nlc3M6
OnNpbmdsZXRvbigpOwotICAgIGlmICh3ZWJQcm9jZXNzLnVzZXNOZXR3b3JrUHJvY2VzcygpKSB7
Ci0gICAgICAgIGlmICghd2ViUHJvY2Vzcy5uZXR3b3JrQ29ubmVjdGlvbigpLT5jb25uZWN0aW9u
KCktPnNlbmRTeW5jKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6R2V0
UmF3Q29va2llcyhTZXNzaW9uVHJhY2tlcjo6c2Vzc2lvbklEKHNlc3Npb24pLCBmaXJzdFBhcnR5
LCB1cmwpLCBNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkdldFJhd0Nv
b2tpZXM6OlJlcGx5KHJhd0Nvb2tpZXMpLCAwKSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
LSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotI2VuZGlmCi0KLSAgICByZXR1cm4gV2ViQ29y
ZTo6Z2V0UmF3Q29va2llcyhzZXNzaW9uLCBmaXJzdFBhcnR5LCB1cmwsIHJhd0Nvb2tpZXMpOwor
ICAgIGlmICghV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkubmV0d29ya0Nvbm5lY3Rpb24oKS0+Y29u
bmVjdGlvbigpLT5zZW5kU3luYyhNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3M6OkdldFJhd0Nvb2tpZXMoU2Vzc2lvblRyYWNrZXI6OnNlc3Npb25JRChzZXNzaW9uKSwgZmly
c3RQYXJ0eSwgdXJsKSwgTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpH
ZXRSYXdDb29raWVzOjpSZXBseShyYXdDb29raWVzKSwgMCkpCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogdm9pZCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmRl
bGV0ZUNvb2tpZShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IFVS
TCYgdXJsLCBjb25zdCBTdHJpbmcmIGNvb2tpZU5hbWUpCiB7Ci0jaWYgRU5BQkxFKE5FVFdPUktf
UFJPQ0VTUykKLSAgICBhdXRvJiB3ZWJQcm9jZXNzID0gV2ViUHJvY2Vzczo6c2luZ2xldG9uKCk7
Ci0gICAgaWYgKHdlYlByb2Nlc3MudXNlc05ldHdvcmtQcm9jZXNzKCkpIHsKLSAgICAgICAgd2Vi
UHJvY2Vzcy5uZXR3b3JrQ29ubmVjdGlvbigpLT5jb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6
Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpEZWxldGVDb29raWUoU2Vzc2lvblRyYWNr
ZXI6OnNlc3Npb25JRChzZXNzaW9uKSwgdXJsLCBjb29raWVOYW1lKSwgMCk7Ci0gICAgICAgIHJl
dHVybjsKLSAgICB9Ci0jZW5kaWYKLQotICAgIFdlYkNvcmU6OmRlbGV0ZUNvb2tpZShzZXNzaW9u
LCB1cmwsIGNvb2tpZU5hbWUpOworICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLm5ldHdvcmtD
b25uZWN0aW9uKCktPmNvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3M6OkRlbGV0ZUNvb2tpZShTZXNzaW9uVHJhY2tlcjo6c2Vzc2lvbklEKHNl
c3Npb24pLCB1cmwsIGNvb2tpZU5hbWUpLCAwKTsKIH0KIAogLy8gTG9hZGVyU3RyYXRlZ3kKIAot
I2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCiBSZXNvdXJjZUxvYWRTY2hlZHVsZXIqIFdlYlBs
YXRmb3JtU3RyYXRlZ2llczo6cmVzb3VyY2VMb2FkU2NoZWR1bGVyKCkKIHsKLSAgICBzdGF0aWMg
UmVzb3VyY2VMb2FkU2NoZWR1bGVyKiBzY2hlZHVsZXI7Ci0gICAgaWYgKCFzY2hlZHVsZXIpIHsK
LSAgICAgICAgYXV0byYgd2ViUHJvY2VzcyA9IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpOwotICAg
ICAgICBpZiAod2ViUHJvY2Vzcy51c2VzTmV0d29ya1Byb2Nlc3MoKSkKLSAgICAgICAgICAgIHNj
aGVkdWxlciA9ICZ3ZWJQcm9jZXNzLndlYlJlc291cmNlTG9hZFNjaGVkdWxlcigpOwotICAgICAg
ICBlbHNlCi0gICAgICAgICAgICBzY2hlZHVsZXIgPSBXZWJDb3JlOjpyZXNvdXJjZUxvYWRTY2hl
ZHVsZXIoKTsKLSAgICB9Ci0gICAgCi0gICAgcmV0dXJuIHNjaGVkdWxlcjsKKyAgICByZXR1cm4g
JldlYlByb2Nlc3M6OnNpbmdsZXRvbigpLndlYlJlc291cmNlTG9hZFNjaGVkdWxlcigpOwogfQog
CiB2b2lkIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6bG9hZFJlc291cmNlU3luY2hyb25vdXNseShO
ZXR3b3JraW5nQ29udGV4dCogY29udGV4dCwgdW5zaWduZWQgbG9uZyByZXNvdXJjZUxvYWRJZGVu
dGlmaWVyLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIFN0b3JlZENyZWRlbnRpYWxz
IHN0b3JlZENyZWRlbnRpYWxzLCBDbGllbnRDcmVkZW50aWFsUG9saWN5IGNsaWVudENyZWRlbnRp
YWxQb2xpY3ksIFJlc291cmNlRXJyb3ImIGVycm9yLCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25z
ZSwgVmVjdG9yPGNoYXI+JiBkYXRhKQogewotICAgIGF1dG8mIHdlYlByb2Nlc3MgPSBXZWJQcm9j
ZXNzOjpzaW5nbGV0b24oKTsKLSAgICBpZiAoIXdlYlByb2Nlc3MudXNlc05ldHdvcmtQcm9jZXNz
KCkpIHsKLSAgICAgICAgTG9hZGVyU3RyYXRlZ3k6OmxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHko
Y29udGV4dCwgcmVzb3VyY2VMb2FkSWRlbnRpZmllciwgcmVxdWVzdCwgc3RvcmVkQ3JlZGVudGlh
bHMsIGNsaWVudENyZWRlbnRpYWxQb2xpY3ksIGVycm9yLCByZXNwb25zZSwgZGF0YSk7Ci0gICAg
ICAgIHJldHVybjsKLSAgICB9Ci0KICAgICBXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0KiB3ZWJD
b250ZXh0ID0gc3RhdGljX2Nhc3Q8V2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dCo+KGNvbnRleHQp
OwogICAgIC8vIEZJWE1FOiBTb21lIGVudGl0aWVzIGluIFdlYkNvcmUgdXNlIFdlYkNvcmUncyAi
RW1wdHlGcmFtZUxvYWRlckNsaWVudCIgaW5zdGVhZCBvZiBoYXZpbmcgYSBwcm9wZXIgV2ViRnJh
bWVMb2FkZXJDbGllbnQuCiAgICAgLy8gRW1wdHlGcmFtZUxvYWRlckNsaWVudCBzaG91bGRuJ3Qg
ZXhpc3QgYW5kIGV2ZXJ5dGhpbmcgc2hvdWxkIGJlIHVzaW5nIGEgV2ViRnJhbWVMb2FkZXJDbGll
bnQsCkBAIC0yNDMsNyArMTgyLDcgQEAgdm9pZCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmxvYWRS
ZXNvdXJjZQogCiAgICAgSGFuZ0RldGVjdGlvbkRpc2FibGVyIGhhbmdEZXRlY3Rpb25EaXNhYmxl
cjsKIAotICAgIGlmICghd2ViUHJvY2Vzcy5uZXR3b3JrQ29ubmVjdGlvbigpLT5jb25uZWN0aW9u
KCktPnNlbmRTeW5jKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6UGVy
Zm9ybVN5bmNocm9ub3VzTG9hZChsb2FkUGFyYW1ldGVycyksIE1lc3NhZ2VzOjpOZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2Vzczo6UGVyZm9ybVN5bmNocm9ub3VzTG9hZDo6UmVwbHkoZXJyb3Is
IHJlc3BvbnNlLCBkYXRhKSwgMCkpIHsKKyAgICBpZiAoIVdlYlByb2Nlc3M6OnNpbmdsZXRvbigp
Lm5ldHdvcmtDb25uZWN0aW9uKCktPmNvbm5lY3Rpb24oKS0+c2VuZFN5bmMoTWVzc2FnZXM6Ok5l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpQZXJmb3JtU3luY2hyb25vdXNMb2FkKGxvYWRQ
YXJhbWV0ZXJzKSwgTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpQZXJm
b3JtU3luY2hyb25vdXNMb2FkOjpSZXBseShlcnJvciwgcmVzcG9uc2UsIGRhdGEpLCAwKSkgewog
ICAgICAgICByZXNwb25zZSA9IFJlc291cmNlUmVzcG9uc2UoKTsKICAgICAgICAgZXJyb3IgPSBp
bnRlcm5hbEVycm9yKHJlcXVlc3QudXJsKCkpOwogICAgIH0KQEAgLTI1NiwxMiArMTk1LDYgQEAg
dm9pZCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNyZWF0ZVBpbmdIYQogICAgIGlmICghbmV0d29y
a2luZ0NvbnRleHQpCiAgICAgICAgIHJldHVybjsKIAotICAgIGF1dG8mIHdlYlByb2Nlc3MgPSBX
ZWJQcm9jZXNzOjpzaW5nbGV0b24oKTsKLSAgICBpZiAoIXdlYlByb2Nlc3MudXNlc05ldHdvcmtQ
cm9jZXNzKCkpIHsKLSAgICAgICAgTG9hZGVyU3RyYXRlZ3k6OmNyZWF0ZVBpbmdIYW5kbGUobmV0
d29ya2luZ0NvbnRleHQsIHJlcXVlc3QsIHNob3VsZFVzZUNyZWRlbnRpYWxTdG9yYWdlKTsKLSAg
ICAgICAgcmV0dXJuOwotICAgIH0KLQogICAgIFdlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQqIHdl
YkNvbnRleHQgPSBzdGF0aWNfY2FzdDxXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0Kj4obmV0d29y
a2luZ0NvbnRleHQpOwogICAgIFdlYkZyYW1lTG9hZGVyQ2xpZW50KiB3ZWJGcmFtZUxvYWRlckNs
aWVudCA9IHdlYkNvbnRleHQtPndlYkZyYW1lTG9hZGVyQ2xpZW50KCk7CiAgICAgV2ViRnJhbWUq
IHdlYkZyYW1lID0gd2ViRnJhbWVMb2FkZXJDbGllbnQgPyB3ZWJGcmFtZUxvYWRlckNsaWVudC0+
d2ViRnJhbWUoKSA6IG51bGxwdHI7CkBAIC0yNzMsMTYgKzIwNiwxMyBAQCB2b2lkIFdlYlBsYXRm
b3JtU3RyYXRlZ2llczo6Y3JlYXRlUGluZ0hhCiAgICAgbG9hZFBhcmFtZXRlcnMuYWxsb3dTdG9y
ZWRDcmVkZW50aWFscyA9IHNob3VsZFVzZUNyZWRlbnRpYWxTdG9yYWdlID8gQWxsb3dTdG9yZWRD
cmVkZW50aWFscyA6IERvTm90QWxsb3dTdG9yZWRDcmVkZW50aWFsczsKICAgICBsb2FkUGFyYW1l
dGVycy5zaG91bGRDbGVhclJlZmVycmVyT25IVFRQU1RvSFRUUFJlZGlyZWN0ID0gbmV0d29ya2lu
Z0NvbnRleHQtPnNob3VsZENsZWFyUmVmZXJyZXJPbkhUVFBTVG9IVFRQUmVkaXJlY3QoKTsKIAot
ICAgIHdlYlByb2Nlc3MubmV0d29ya0Nvbm5lY3Rpb24oKS0+Y29ubmVjdGlvbigpLT5zZW5kKE1l
c3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6TG9hZFBpbmcobG9hZFBhcmFt
ZXRlcnMpLCAwKTsKKyAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5uZXR3b3JrQ29ubmVjdGlv
bigpLT5jb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzOjpMb2FkUGluZyhsb2FkUGFyYW1ldGVycyksIDApOwogfQogCiBCbG9iUmVnaXN0cnkq
IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y3JlYXRlQmxvYlJlZ2lzdHJ5KCkKIHsKLSAgICBpZiAo
IVdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnVzZXNOZXR3b3JrUHJvY2VzcygpKQotICAgICAgICBy
ZXR1cm4gTG9hZGVyU3RyYXRlZ3k6OmNyZWF0ZUJsb2JSZWdpc3RyeSgpOwogICAgIHJldHVybiBu
ZXcgQmxvYlJlZ2lzdHJ5UHJveHk7ICAgIAogfQotI2VuZGlmCiAKIC8vIFBsdWdpblN0cmF0ZWd5
CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxh
dGZvcm1TdHJhdGVnaWVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaAkocmV2aXNpb24gMTkyNjAx
KQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9y
bVN0cmF0ZWdpZXMuaAkod29ya2luZyBjb3B5KQpAQCAtNTksMTIgKzU5LDEwIEBAIHByaXZhdGU6
CiAgICAgdmlydHVhbCB2b2lkIGRlbGV0ZUNvb2tpZShjb25zdCBXZWJDb3JlOjpOZXR3b3JrU3Rv
cmFnZVNlc3Npb24mLCBjb25zdCBXZWJDb3JlOjpVUkwmLCBjb25zdCBTdHJpbmcmKSBvdmVycmlk
ZTsKIAogICAgIC8vIFdlYkNvcmU6OkxvYWRlclN0cmF0ZWd5Ci0jaWYgRU5BQkxFKE5FVFdPUktf
UFJPQ0VTUykKICAgICB2aXJ0dWFsIFdlYkNvcmU6OlJlc291cmNlTG9hZFNjaGVkdWxlciogcmVz
b3VyY2VMb2FkU2NoZWR1bGVyKCkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIGxvYWRSZXNv
dXJjZVN5bmNocm9ub3VzbHkoV2ViQ29yZTo6TmV0d29ya2luZ0NvbnRleHQqLCB1bnNpZ25lZCBs
b25nIHJlc291cmNlTG9hZElkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVz
dCYsIFdlYkNvcmU6OlN0b3JlZENyZWRlbnRpYWxzLCBXZWJDb3JlOjpDbGllbnRDcmVkZW50aWFs
UG9saWN5LCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25z
ZSYsIFZlY3RvcjxjaGFyPiYgZGF0YSkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCBXZWJDb3JlOjpC
bG9iUmVnaXN0cnkqIGNyZWF0ZUJsb2JSZWdpc3RyeSgpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwg
dm9pZCBjcmVhdGVQaW5nSGFuZGxlKFdlYkNvcmU6Ok5ldHdvcmtpbmdDb250ZXh0KiwgV2ViQ29y
ZTo6UmVzb3VyY2VSZXF1ZXN0JiwgYm9vbCBzaG91bGRVc2VDcmVkZW50aWFsU3RvcmFnZSkgb3Zl
cnJpZGU7Ci0jZW5kaWYKIAogICAgIC8vIFdlYkNvcmU6OlBsdWdpblN0cmF0ZWd5CiAgICAgdmly
dHVhbCB2b2lkIHJlZnJlc2hQbHVnaW5zKCkgb3ZlcnJpZGU7CkluZGV4OiBTb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAJKHJldmlzaW9uIDE5MjYwMSkK
KysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTMzLDEwICszMywxMyBAQAogI2luY2x1ZGUgIkluamVjdGVkQnVuZGxlTm9k
ZUhhbmRsZS5oIgogI2luY2x1ZGUgIkluamVjdGVkQnVuZGxlUmFuZ2VIYW5kbGUuaCIKICNpbmNs
dWRlICJJbmplY3RlZEJ1bmRsZVNjcmlwdFdvcmxkLmgiCisjaW5jbHVkZSAiTmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3NNZXNzYWdlcy5oIgorI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzQ29u
bmVjdGlvbi5oIgogI2luY2x1ZGUgIlBsdWdpblZpZXcuaCIKICNpbmNsdWRlICJXS0FQSUNhc3Qu
aCIKICNpbmNsdWRlICJXS0J1bmRsZUFQSUNhc3QuaCIKICNpbmNsdWRlICJXZWJDaHJvbWVDbGll
bnQuaCIKKyNpbmNsdWRlICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIKICNpbmNsdWRlICJXZWJE
b2N1bWVudExvYWRlci5oIgogI2luY2x1ZGUgIldlYlBhZ2UuaCIKICNpbmNsdWRlICJXZWJQYWdl
UHJveHlNZXNzYWdlcy5oIgpAQCAtODEsMTIgKzg0LDYgQEAKICNpbmNsdWRlIDxXZWJDb3JlL0xl
Z2FjeVdlYkFyY2hpdmUuaD4KICNlbmRpZgogCi0jaWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykK
LSNpbmNsdWRlICJOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzc01lc3NhZ2VzLmgiCi0jaW5j
bHVkZSAiTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmgiCi0jaW5jbHVkZSAiV2ViQ29yZUFyZ3Vt
ZW50Q29kZXJzLmgiCi0jZW5kaWYKLQogI2lmbmRlZiBOREVCVUcKICNpbmNsdWRlIDx3dGYvUmVm
Q291bnRlZExlYWtDb3VudGVyLmg+CiAjZW5kaWYKQEAgLTI1NywyMyArMjU0LDkgQEAgdm9pZCBX
ZWJGcmFtZTo6c3RhcnREb3dubG9hZChjb25zdCBXZWJDbwogICAgIG1fcG9saWN5RG93bmxvYWRJ
RCA9IDA7CiAKICAgICBhdXRvJiB3ZWJQcm9jZXNzID0gV2ViUHJvY2Vzczo6c2luZ2xldG9uKCk7
Ci0jaWYgVVNFKE5FVFdPUktfU0VTU0lPTikKLSAgICBBU1NFUlQod2ViUHJvY2Vzcy51c2VzTmV0
d29ya1Byb2Nlc3MoKSk7Ci0jZW5kaWYKICAgICBTZXNzaW9uSUQgc2Vzc2lvbklEID0gcGFnZSgp
ID8gcGFnZSgpLT5zZXNzaW9uSUQoKSA6IFNlc3Npb25JRDo6ZGVmYXVsdFNlc3Npb25JRCgpOwot
I2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCi0gICAgaWYgKHdlYlByb2Nlc3MudXNlc05ldHdv
cmtQcm9jZXNzKCkpIHsKLSAgICAgICAgd2ViUHJvY2Vzcy5uZXR3b3JrQ29ubmVjdGlvbigpLT5j
b25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
OjpTdGFydERvd25sb2FkKHNlc3Npb25JRCwgcG9saWN5RG93bmxvYWRJRCwgcmVxdWVzdCksIDAp
OwotICAgICAgICByZXR1cm47Ci0gICAgfQotI2VuZGlmCi0KLSNpZiBVU0UoTkVUV09SS19TRVNT
SU9OKQotICAgIC8vIFVzaW5nIE5FVFdPUktfU0VTU0lPTiByZXF1aXJlcyB0aGUgdXNlIG9mIGEg
bmV0d29yayBwcm9jZXNzLgotICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0jZWxz
ZQotICAgIHdlYlByb2Nlc3MuZG93bmxvYWRNYW5hZ2VyKCkuc3RhcnREb3dubG9hZChzZXNzaW9u
SUQsIHBvbGljeURvd25sb2FkSUQsIHJlcXVlc3QpOwotI2VuZGlmCisgICAgd2ViUHJvY2Vzcy5u
ZXR3b3JrQ29ubmVjdGlvbigpLT5jb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtD
b25uZWN0aW9uVG9XZWJQcm9jZXNzOjpTdGFydERvd25sb2FkKHNlc3Npb25JRCwgcG9saWN5RG93
bmxvYWRJRCwgcmVxdWVzdCksIDApOworICAgIHJldHVybjsKIH0KIAogdm9pZCBXZWJGcmFtZTo6
Y29udmVydE1haW5SZXNvdXJjZUxvYWRUb0Rvd25sb2FkKERvY3VtZW50TG9hZGVyKiBkb2N1bWVu
dExvYWRlciwgU2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1
ZXN0LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKQEAgLTI4NiwzOSArMjY5LDEy
IEBAIHZvaWQgV2ViRnJhbWU6OmNvbnZlcnRNYWluUmVzb3VyY2VMb2FkVG8KICAgICBTdWJyZXNv
dXJjZUxvYWRlciogbWFpblJlc291cmNlTG9hZGVyID0gZG9jdW1lbnRMb2FkZXItPm1haW5SZXNv
dXJjZUxvYWRlcigpOwogCiAgICAgYXV0byYgd2ViUHJvY2VzcyA9IFdlYlByb2Nlc3M6OnNpbmds
ZXRvbigpOwotI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCi0jaWYgVVNFKE5FVFdPUktfU0VT
U0lPTikKLSAgICBBU1NFUlQod2ViUHJvY2Vzcy51c2VzTmV0d29ya1Byb2Nlc3MoKSk7Ci0jZW5k
aWYKLSAgICBpZiAod2ViUHJvY2Vzcy51c2VzTmV0d29ya1Byb2Nlc3MoKSkgewotICAgICAgICAv
LyBVc2UgMCB0byBpbmRpY2F0ZSB0aGF0IHRoZSByZXNvdXJjZSBsb2FkIGNhbid0IGJlIGNvbnZl
cnRlZCBhbmQgYSBuZXcgZG93bmxvYWQgbXVzdCBiZSBzdGFydGVkLgotICAgICAgICAvLyBUaGlz
IGNhbiBoYXBwZW4gaWYgdGhlcmUgaXMgbm8gbG9hZGVyIGJlY2F1c2UgdGhlIG1haW4gcmVzb3Vy
Y2UgaXMgaW4gdGhlIFdlYkNvcmUgbWVtb3J5IGNhY2hlLAotICAgICAgICAvLyBvciBiZWNhdXNl
IHRoZSBjb252ZXJzaW9uIHdhcyBhdHRlbXB0ZWQgd2hlbiBub3QgY2FsbGluZyBTdWJyZXNvdXJj
ZUxvYWRlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNlKCkuCi0gICAgICAgIHVpbnQ2NF90IG1haW5SZXNv
dXJjZUxvYWRJZGVudGlmaWVyOwotICAgICAgICBpZiAobWFpblJlc291cmNlTG9hZGVyKQotICAg
ICAgICAgICAgbWFpblJlc291cmNlTG9hZElkZW50aWZpZXIgPSBtYWluUmVzb3VyY2VMb2FkZXIt
PmlkZW50aWZpZXIoKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgbWFpblJlc291cmNlTG9h
ZElkZW50aWZpZXIgPSAwOwotCi0gICAgICAgIHdlYlByb2Nlc3MubmV0d29ya0Nvbm5lY3Rpb24o
KS0+Y29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzczo6Q29udmVydE1haW5SZXNvdXJjZUxvYWRUb0Rvd25sb2FkKHNlc3Npb25JRCwgbWFpblJl
c291cmNlTG9hZElkZW50aWZpZXIsIHBvbGljeURvd25sb2FkSUQsIHJlcXVlc3QsIHJlc3BvbnNl
KSwgMCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0jZW5kaWYKLQotICAgIGlmICghbWFpblJl
c291cmNlTG9hZGVyKSB7Ci0gICAgICAgIC8vIFRoZSBtYWluIHJlc291cmNlIGhhcyBhbHJlYWR5
IGJlZW4gbG9hZGVkLiBTdGFydCBhIG5ldyBkb3dubG9hZCBpbnN0ZWFkLgotI2lmICFVU0UoTkVU
V09SS19TRVNTSU9OKQotICAgICAgICB3ZWJQcm9jZXNzLmRvd25sb2FkTWFuYWdlcigpLnN0YXJ0
RG93bmxvYWQoc2Vzc2lvbklELCBwb2xpY3lEb3dubG9hZElELCByZXF1ZXN0KTsKLSNlbmRpZgot
ICAgICAgICByZXR1cm47Ci0gICAgfQorICAgIC8vIFVzZSAwIHRvIGluZGljYXRlIHRoYXQgdGhl
IHJlc291cmNlIGxvYWQgY2FuJ3QgYmUgY29udmVydGVkIGFuZCBhIG5ldyBkb3dubG9hZCBtdXN0
IGJlIHN0YXJ0ZWQuCisgICAgLy8gVGhpcyBjYW4gaGFwcGVuIGlmIHRoZXJlIGlzIG5vIGxvYWRl
ciBiZWNhdXNlIHRoZSBtYWluIHJlc291cmNlIGlzIGluIHRoZSBXZWJDb3JlIG1lbW9yeSBjYWNo
ZSwKKyAgICAvLyBvciBiZWNhdXNlIHRoZSBjb252ZXJzaW9uIHdhcyBhdHRlbXB0ZWQgd2hlbiBu
b3QgY2FsbGluZyBTdWJyZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNlKCkuCisgICAg
dWludDY0X3QgbWFpblJlc291cmNlTG9hZElkZW50aWZpZXIgPSBtYWluUmVzb3VyY2VMb2FkZXIg
PyBtYWluUmVzb3VyY2VMb2FkZXItPmlkZW50aWZpZXIoKSA6IDA7CiAKLSNpZiBVU0UoTkVUV09S
S19TRVNTSU9OKQotICAgIC8vIFVzaW5nIE5FVFdPUktfU0VTU0lPTiByZXF1aXJlcyB0aGUgdXNl
IG9mIGEgbmV0d29yayBwcm9jZXNzLgotICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7
Ci0jZWxzZQotICAgIHdlYlByb2Nlc3MuZG93bmxvYWRNYW5hZ2VyKCkuY29udmVydEhhbmRsZVRv
RG93bmxvYWQocG9saWN5RG93bmxvYWRJRCwgZG9jdW1lbnRMb2FkZXItPm1haW5SZXNvdXJjZUxv
YWRlcigpLT5oYW5kbGUoKSwgcmVxdWVzdCwgcmVzcG9uc2UpOwotI2VuZGlmCisgICAgd2ViUHJv
Y2Vzcy5uZXR3b3JrQ29ubmVjdGlvbigpLT5jb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6Ok5l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpDb252ZXJ0TWFpblJlc291cmNlTG9hZFRvRG93
bmxvYWQoc2Vzc2lvbklELCBtYWluUmVzb3VyY2VMb2FkSWRlbnRpZmllciwgcG9saWN5RG93bmxv
YWRJRCwgcmVxdWVzdCwgcmVzcG9uc2UpLCAwKTsKIH0KIAogU3RyaW5nIFdlYkZyYW1lOjpzb3Vy
Y2UoKSBjb25zdApJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9zb3VwL1dlYlByb2Nl
c3NTb3VwLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL3NvdXAv
V2ViUHJvY2Vzc1NvdXAuY3BwCShyZXZpc2lvbiAxOTI2MDEpCisrKyBTb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL3NvdXAvV2ViUHJvY2Vzc1NvdXAuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03NSwx
MSArNzUsNiBAQCB2b2lkIFdlYlByb2Nlc3M6OnBsYXRmb3JtU2V0Q2FjaGVNb2RlbChDCiAgICAg
dWludDY0X3QgZGlza0ZyZWVTaXplID0gMDsKICAgICBTb3VwQ2FjaGUqIGNhY2hlID0gbnVsbHB0
cjsKIAotICAgIGlmICghdXNlc05ldHdvcmtQcm9jZXNzKCkpIHsKLSAgICAgICAgY2FjaGUgPSBX
ZWJDb3JlOjpTb3VwTmV0d29ya1Nlc3Npb246OmRlZmF1bHRTZXNzaW9uKCkuY2FjaGUoKTsKLSAg
ICAgICAgZGlza0ZyZWVTaXplID0gZ2V0Q2FjaGVEaXNrRnJlZVNpemUoY2FjaGUpIC8gV1RGOjpN
QjsKLSAgICB9Ci0KICAgICB1aW50NjRfdCBtZW1TaXplID0gV1RGOjpyYW1TaXplKCkgLyBXVEY6
Ok1COwogICAgIGNhbGN1bGF0ZUNhY2hlU2l6ZXMoY2FjaGVNb2RlbCwgbWVtU2l6ZSwgZGlza0Zy
ZWVTaXplLAogICAgICAgICAgICAgICAgICAgICAgICAgY2FjaGVUb3RhbENhcGFjaXR5LCBjYWNo
ZU1pbkRlYWRDYXBhY2l0eSwgY2FjaGVNYXhEZWFkQ2FwYWNpdHksIGRlYWREZWNvZGVkRGF0YURl
bGV0aW9uSW50ZXJ2YWwsCkBAIC05NCwyMyArODksMTAgQEAgdm9pZCBXZWJQcm9jZXNzOjpwbGF0
Zm9ybVNldENhY2hlTW9kZWwoQwogI2lmIFBMQVRGT1JNKEdUSykKICAgICBXZWJDb3JlOjpQYWdl
Q2FjaGU6OnNpbmdsZXRvbigpLnNldFNob3VsZENsZWFyQmFja2luZ1N0b3Jlcyh0cnVlKTsKICNl
bmRpZgotCi0gICAgaWYgKCF1c2VzTmV0d29ya1Byb2Nlc3MoKSkgewotICAgICAgICBpZiAodXJs
Q2FjaGVEaXNrQ2FwYWNpdHkgPiBzb3VwX2NhY2hlX2dldF9tYXhfc2l6ZShjYWNoZSkpCi0gICAg
ICAgICAgICBzb3VwX2NhY2hlX3NldF9tYXhfc2l6ZShjYWNoZSwgdXJsQ2FjaGVEaXNrQ2FwYWNp
dHkpOwotICAgIH0KIH0KIAogdm9pZCBXZWJQcm9jZXNzOjpwbGF0Zm9ybUNsZWFyUmVzb3VyY2VD
YWNoZXMoUmVzb3VyY2VDYWNoZXNUb0NsZWFyIGNhY2hlc1RvQ2xlYXIpCiB7Ci0gICAgaWYgKGNh
Y2hlc1RvQ2xlYXIgPT0gSW5NZW1vcnlSZXNvdXJjZUNhY2hlc09ubHkpCi0gICAgICAgIHJldHVy
bjsKLQotICAgIC8vIElmIHdlJ3JlIHVzaW5nIHRoZSBuZXR3b3JrIHByb2Nlc3MgdGhlbiBpdCBp
cyB0aGUgb25seSBvbmUgdGhhdCBuZWVkcyB0byBjbGVhciB0aGUgZGlzayBjYWNoZS4KLSAgICBp
ZiAodXNlc05ldHdvcmtQcm9jZXNzKCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIHNvdXBfY2Fj
aGVfY2xlYXIoV2ViQ29yZTo6U291cE5ldHdvcmtTZXNzaW9uOjpkZWZhdWx0U2Vzc2lvbigpLmNh
Y2hlKCkpOwogfQogCiBzdGF0aWMgdm9pZCBzZXRTb3VwU2Vzc2lvbkFjY2VwdExhbmd1YWdlKGNv
bnN0IFZlY3RvcjxTdHJpbmc+JiBsYW5ndWFnZXMpCkBAIC0xMzUsNjIgKzExNywxOCBAQCB2b2lk
IFdlYlByb2Nlc3M6OnBsYXRmb3JtSW5pdGlhbGl6ZVdlYlByCiAgICAgICAgIHNlY2NvbXBGaWx0
ZXJzLmluaXRpYWxpemUoKTsKICAgICB9CiAjZW5kaWYKLQotICAgIGlmICh1c2VzTmV0d29ya1By
b2Nlc3MoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgQVNTRVJUKCFwYXJhbWV0ZXJzLmRpc2tD
YWNoZURpcmVjdG9yeS5pc0VtcHR5KCkpOwotCi0gICAgLy8gV2UgdXNlZCB0byB1c2UgdGhlIGdp
dmVuIGNhY2hlIGRpcmVjdG9yeSBmb3IgdGhlIHNvdXAgY2FjaGUsIGJ1dCBub3cgd2UgdXNlIGEg
c3ViZGlyZWN0b3J5IHRvIGF2b2lkCi0gICAgLy8gY29uZmxpY3RzIHdpdGggb3RoZXIgY2FjaGUg
ZmlsZXMgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LiBSZW1vdmUgdGhlIG9sZCBjYWNoZSBmaWxlcyBp
ZiB0aGV5IHN0aWxsIGV4aXN0LgotICAgIFdlYkNvcmU6OlNvdXBOZXR3b3JrU2Vzc2lvbjo6ZGVm
YXVsdFNlc3Npb24oKS5jbGVhckNhY2hlKFdlYkNvcmU6OmRpcmVjdG9yeU5hbWUocGFyYW1ldGVy
cy5kaXNrQ2FjaGVEaXJlY3RvcnkpKTsKLQotI2lmIEVOQUJMRShORVRXT1JLX0NBQ0hFKQotICAg
IC8vIFdoZW4gbmV0d29yayBjYWNoZSBpcyBlbmFibGVkLCB0aGUgZGlzayBjYWNoZSBkaXJlY3Rv
cnkgaXMgdGhlIG5ldHdvcmsgcHJvY2VzcyBvbmUuCi0gICAgQ1N0cmluZyBkaXNrQ2FjaGVQYXRo
ID0gV2ViQ29yZTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KFdlYkNvcmU6OmRpcmVjdG9yeU5h
bWUocGFyYW1ldGVycy5kaXNrQ2FjaGVEaXJlY3RvcnkpLCAid2Via2l0IikudXRmOCgpOwotI2Vs
c2UKLSAgICBDU3RyaW5nIGRpc2tDYWNoZVBhdGggPSBwYXJhbWV0ZXJzLmRpc2tDYWNoZURpcmVj
dG9yeS51dGY4KCk7Ci0jZW5kaWYKLQotICAgIEdSZWZQdHI8U291cENhY2hlPiBzb3VwQ2FjaGUg
PSBhZG9wdEdSZWYoc291cF9jYWNoZV9uZXcoZGlza0NhY2hlUGF0aC5kYXRhKCksIFNPVVBfQ0FD
SEVfU0lOR0xFX1VTRVIpKTsKLSAgICBXZWJDb3JlOjpTb3VwTmV0d29ya1Nlc3Npb246OmRlZmF1
bHRTZXNzaW9uKCkuc2V0Q2FjaGUoc291cENhY2hlLmdldCgpKTsKLSAgICAvLyBTZXQgYW4gaW5p
dGlhbCBodWdlIG1heF9zaXplIGZvciB0aGUgU291cENhY2hlIHNvIHRoZSBjYWxsIHRvIHNvdXBf
Y2FjaGVfbG9hZCgpIHdvbid0IGV2aWN0IGFueSBjYWNoZWQKLSAgICAvLyByZXNvdXJjZS4gVGhl
IGZpbmFsIHNpemUgb2YgdGhlIGNhY2hlIHdpbGwgYmUgc2V0IGJ5IE5ldHdvcmtQcm9jZXNzOjpw
bGF0Zm9ybVNldENhY2hlTW9kZWwoKS4KLSAgICB1bnNpZ25lZCBpbml0aWFsTWF4U2l6ZSA9IHNv
dXBfY2FjaGVfZ2V0X21heF9zaXplKHNvdXBDYWNoZS5nZXQoKSk7Ci0gICAgc291cF9jYWNoZV9z
ZXRfbWF4X3NpemUoc291cENhY2hlLmdldCgpLCBHX01BWFVJTlQpOwotICAgIHNvdXBfY2FjaGVf
bG9hZChzb3VwQ2FjaGUuZ2V0KCkpOwotICAgIHNvdXBfY2FjaGVfc2V0X21heF9zaXplKHNvdXBD
YWNoZS5nZXQoKSwgaW5pdGlhbE1heFNpemUpOwotCi0gICAgaWYgKCFwYXJhbWV0ZXJzLmNvb2tp
ZVBlcnNpc3RlbnRTdG9yYWdlUGF0aC5pc0VtcHR5KCkpIHsKLSAgICAgICAgc3VwcGxlbWVudDxX
ZWJDb29raWVNYW5hZ2VyPigpLT5zZXRDb29raWVQZXJzaXN0ZW50U3RvcmFnZShwYXJhbWV0ZXJz
LmNvb2tpZVBlcnNpc3RlbnRTdG9yYWdlUGF0aCwKLSAgICAgICAgICAgIHBhcmFtZXRlcnMuY29v
a2llUGVyc2lzdGVudFN0b3JhZ2VUeXBlKTsKLSAgICB9Ci0gICAgc3VwcGxlbWVudDxXZWJDb29r
aWVNYW5hZ2VyPigpLT5zZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KHBhcmFtZXRlcnMuY29va2ll
QWNjZXB0UG9saWN5KTsKLQotICAgIGlmICghcGFyYW1ldGVycy5sYW5ndWFnZXMuaXNFbXB0eSgp
KQotICAgICAgICBzZXRTb3VwU2Vzc2lvbkFjY2VwdExhbmd1YWdlKHBhcmFtZXRlcnMubGFuZ3Vh
Z2VzKTsKLQotICAgIHNldElnbm9yZVRMU0Vycm9ycyhwYXJhbWV0ZXJzLmlnbm9yZVRMU0Vycm9y
cyk7Ci0KLSAgICBXZWJDb3JlOjphZGRMYW5ndWFnZUNoYW5nZU9ic2VydmVyKHRoaXMsIGxhbmd1
YWdlQ2hhbmdlZCk7CiB9CiAKIHZvaWQgV2ViUHJvY2Vzczo6cGxhdGZvcm1UZXJtaW5hdGUoKQog
ewotICAgIGlmICghdXNlc05ldHdvcmtQcm9jZXNzKCkpCi0gICAgICAgIFdlYkNvcmU6OnJlbW92
ZUxhbmd1YWdlQ2hhbmdlT2JzZXJ2ZXIodGhpcyk7CiB9CiAKIHZvaWQgV2ViUHJvY2Vzczo6c2V0
SWdub3JlVExTRXJyb3JzKGJvb2wgaWdub3JlVExTRXJyb3JzKQogewotICAgIEFTU0VSVCghdXNl
c05ldHdvcmtQcm9jZXNzKCkpOwotICAgIFdlYkNvcmU6OlJlc291cmNlSGFuZGxlOjpzZXRJZ25v
cmVTU0xFcnJvcnMoaWdub3JlVExTRXJyb3JzKTsKIH0KIAogdm9pZCBXZWJQcm9jZXNzOjphbGxv
d1NwZWNpZmljSFRUUFNDZXJ0aWZpY2F0ZUZvckhvc3QoY29uc3QgV2ViQ29yZTo6Q2VydGlmaWNh
dGVJbmZvJiBjZXJ0aWZpY2F0ZUluZm8sIGNvbnN0IFN0cmluZyYgaG9zdCkKIHsKLSAgICBBU1NF
UlQoIXVzZXNOZXR3b3JrUHJvY2VzcygpKTsKLSAgICBXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZTo6
c2V0Q2xpZW50Q2VydGlmaWNhdGUoaG9zdCwgY2VydGlmaWNhdGVJbmZvLmNlcnRpZmljYXRlKCkp
OwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKSW5kZXg6IFNvdXJjZS9jbWFrZS9PcHRpb25z
RWZsLmNtYWtlCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9jbWFrZS9PcHRpb25zRWZsLmNtYWtlCShy
ZXZpc2lvbiAxOTI2MDEpCisrKyBTb3VyY2UvY21ha2UvT3B0aW9uc0VmbC5jbWFrZQkod29ya2lu
ZyBjb3B5KQpAQCAtMTA2LDcgKzEwNiw2IEBAIFdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZB
TFVFKEVOQUJMRV8KIFdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9OQVZJ
R0FUT1JfQ09OVEVOVF9VVElMUyBQVUJMSUMgT04pCiBXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9S
VF9WQUxVRShFTkFCTEVfTkFWSUdBVE9SX0hXQ09OQ1VSUkVOQ1kgUFVCTElDIE9OKQogV0VCS0lU
X09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX05FVFNDQVBFX1BMVUdJTl9BUEkgUFVC
TElDIE9OKQotV0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX05FVFdPUktf
UFJPQ0VTUyBQVUJMSUMgT04pCiBXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFC
TEVfTk9TTklGRiBQVUJMSUMgT04pCiBXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShF
TkFCTEVfUE9JTlRFUl9MT0NLIFBSSVZBVEUgT0ZGKQogV0VCS0lUX09QVElPTl9ERUZBVUxUX1BP
UlRfVkFMVUUoRU5BQkxFX1BVQkxJQ19TVUZGSVhfTElTVCBQUklWQVRFIE9OKQpJbmRleDogU291
cmNlL2NtYWtlL09wdGlvbnNHVEsuY21ha2UKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL2NtYWtlL09w
dGlvbnNHVEsuY21ha2UJKHJldmlzaW9uIDE5MjYwMSkKKysrIFNvdXJjZS9jbWFrZS9PcHRpb25z
R1RLLmNtYWtlCSh3b3JraW5nIGNvcHkpCkBAIC0xODYsNyArMTg2LDYgQEAgV0VCS0lUX09QVElP
Tl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFXwogV0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRf
VkFMVUUoRU5BQkxFX1ZJRVdfTU9ERV9DU1NfTUVESUEgUFJJVkFURSBPTikKIFdFQktJVF9PUFRJ
T05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9XRUJfVElNSU5HIFBSSVZBVEUgT04pCiBXRUJL
SVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfV0VCR0wgUFJJVkFURSBPTikKLVdF
QktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9ORVRXT1JLX1BST0NFU1MgUFJJ
VkFURSBPTikKIFdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9USFJFQURF
RF9DT01QT1NJVE9SIFBSSVZBVEUgT0ZGKQogV0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFM
VUUoRU5BQkxFX1NIQURPV19ET00gUFJJVkFURSBPRkYpCiAKSW5kZXg6IFNvdXJjZS9jbWFrZS9P
cHRpb25zTWFjLmNtYWtlCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9jbWFrZS9PcHRpb25zTWFjLmNt
YWtlCShyZXZpc2lvbiAxOTI2MDEpCisrKyBTb3VyY2UvY21ha2UvT3B0aW9uc01hYy5jbWFrZQko
d29ya2luZyBjb3B5KQpAQCAtMjIwLDcgKzIyMCw2IEBAIFdFQktJVF9PUFRJT05fREVGQVVMVF9Q
T1JUX1ZBTFVFKEVOQUJMRV8KIAogV0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5B
QkxFX1NBTkRCT1hfRVhURU5TSU9OUyBQUklWQVRFIE9OKQogV0VCS0lUX09QVElPTl9ERUZBVUxU
X1BPUlRfVkFMVUUoRU5BQkxFX1dFQl9QUk9DRVNTX1NBTkRCT1ggUFJJVkFURSBPTikKLVdFQktJ
VF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9ORVRXT1JLX1BST0NFU1MgUFJJVkFU
RSBPTikKIFdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9EQVRBQkFTRV9Q
Uk9DRVNTIFBSSVZBVEUgT04pCiBXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFC
TEVfUExVR0lOX1BST0NFU1MgUFJJVkFURSBPTikKIFdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JU
X1ZBTFVFKEVOQUJMRV9NRU1PUllfU0FNUExFUiBQUklWQVRFIE9OKQpJbmRleDogU291cmNlL2Nt
YWtlL1dlYktpdEZlYXR1cmVzLmNtYWtlCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9jbWFrZS9XZWJL
aXRGZWF0dXJlcy5jbWFrZQkocmV2aXNpb24gMTkyNjAxKQorKysgU291cmNlL2NtYWtlL1dlYktp
dEZlYXR1cmVzLmNtYWtlCSh3b3JraW5nIGNvcHkpCkBAIC0xMjgsNyArMTI4LDYgQEAgbWFjcm8o
V0VCS0lUX09QVElPTl9CRUdJTikKICAgICBXRUJLSVRfT1BUSU9OX0RFRklORShFTkFCTEVfTkFW
SUdBVE9SX0hXQ09OQ1VSUkVOQ1kgIlRvZ2dsZSBOYXZpZ2F0b3IgaGFyZHdhcmUgY29uY3VycmVu
Y3kgc3VwcG9ydCIgUFJJVkFURSBPTikKICAgICBXRUJLSVRfT1BUSU9OX0RFRklORShFTkFCTEVf
Tk9TTklGRiAiVG9nZ2xlIHN1cHBvcnQgZm9yICdYLUNvbnRlbnQtVHlwZS1PcHRpb25zOiBub3Nu
aWZmJyIgUFJJVkFURSBPRkYpCiAgICAgV0VCS0lUX09QVElPTl9ERUZJTkUoRU5BQkxFX05FVFND
QVBFX1BMVUdJTl9BUEkgIlRvZ2dsZSBOZXRzY2FwZSBQbHVnaW4gc3VwcG9ydCIgUFJJVkFURSBP
TikKLSAgICBXRUJLSVRfT1BUSU9OX0RFRklORShFTkFCTEVfTkVUV09SS19QUk9DRVNTICJUb2dn
bGUgZGVkaWNhdGVkIG5ldHdvcmsgcHJvY2VzcyBzdXBwb3J0IGluIFdlYktpdDIiIFBSSVZBVEUg
T0ZGKQogICAgIFdFQktJVF9PUFRJT05fREVGSU5FKEVOQUJMRV9OT1RJRklDQVRJT05TICJUb2dn
bGUgRGVza3RvcCBOb3RpZmljYXRpb25zIFN1cHBvcnQiIFBSSVZBVEUgT0ZGKQogICAgIFdFQktJ
VF9PUFRJT05fREVGSU5FKEVOQUJMRV9PUklFTlRBVElPTl9FVkVOVFMgIlRvZ2dsZSBPcmllbnRh
dGlvbiBFdmVudHMgc3VwcG9ydCIgUFJJVkFURSBPRkYpCiAgICAgV0VCS0lUX09QVElPTl9ERUZJ
TkUoRU5BQkxFX1BERktJVF9QTFVHSU4gIlRvZ2dsZSBQREZLaXQgcGx1Z2luIHN1cHBvcnQiIFBS
SVZBVEUgT0ZGKQpJbmRleDogVG9vbHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0No
YW5nZUxvZwkocmV2aXNpb24gMTkyNjUzKQorKysgVG9vbHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTUtMTEtMTkgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hy
aXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBSZW1vdmUgdGhlIG5vbi1OZXR3b3JrUHJv
Y2VzcyBjb25maWd1cmF0aW9ucworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTUxNDE4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgR2VvZmYgR2FyZW4uCisK
KyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvbWFjL0dldFBJREFmdGVyQWJv
cnRlZFByb2Nlc3NMYXVuY2guY3BwOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6Cisg
ICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHA6CisgICAgICAgIChX
VFI6OlRlc3RDb250cm9sbGVyOjpnZW5lcmF0ZVBhZ2VDb25maWd1cmF0aW9uKToKKwogMjAxNS0x
MS0xOSAgQWxleGV5IFByb3NrdXJ5YWtvdiAgPGFwQGFwcGxlLmNvbT4KIAogICAgICAgICBMYXlv
dXRUZXN0UmVsYXkgcHJvY2Vzc2VzIGxlYWsgb24gaU9TIHRlc3RlcnMKSW5kZXg6IFRvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9tYWMvR2V0UElEQWZ0ZXJBYm9ydGVkUHJvY2Vzc0xh
dW5jaC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQy
L21hYy9HZXRQSURBZnRlckFib3J0ZWRQcm9jZXNzTGF1bmNoLmNwcAkocmV2aXNpb24gMTkyNjAx
KQorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL21hYy9HZXRQSURBZnRlckFi
b3J0ZWRQcm9jZXNzTGF1bmNoLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDIsNyArNDIsNiBAQCBz
dGF0aWMgdm9pZCBkaWRGaW5pc2hMb2FkRm9yRnJhbWUoV0tQYWdlCiBURVNUKFdlYktpdDIsIEdl
dFBJREFmdGVyQWJvcnRlZFByb2Nlc3NMYXVuY2gpCiB7CiAgICAgV0tSZXRhaW5QdHI8V0tDb250
ZXh0UmVmPiBjb250ZXh0KEFkb3B0V0ssIFdLQ29udGV4dENyZWF0ZSgpKTsKLSAgICBXS0NvbnRl
eHRTZXRVc2VzTmV0d29ya1Byb2Nlc3MoY29udGV4dC5nZXQoKSwgdHJ1ZSk7CiAKICAgICBQbGF0
Zm9ybVdlYlZpZXcgd2ViVmlldyhjb250ZXh0LmdldCgpKTsKIApJbmRleDogVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAJKHJldmlzaW9uIDE5MjYwMSkKKysrIFRvb2xz
L1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00
MDAsMTEgKzQwMCw2IEBAIFdLUmV0YWluUHRyPFdLUGFnZUNvbmZpZ3VyYXRpb25SZWY+IFRlc3QK
IAogICAgIG1fZ2VvbG9jYXRpb25Qcm92aWRlciA9IHN0ZDo6bWFrZV91bmlxdWU8R2VvbG9jYXRp
b25Qcm92aWRlck1vY2s+KG1fY29udGV4dC5nZXQoKSk7CiAKLSNpZiBQTEFURk9STShFRkwpCi0g
ICAgV0tDb250ZXh0U2V0VXNlc05ldHdvcmtQcm9jZXNzKG1fY29udGV4dC5nZXQoKSwgZmFsc2Up
OwotICAgIFdLQ29udGV4dFNldFByb2Nlc3NNb2RlbChtX2NvbnRleHQuZ2V0KCksIGtXS1Byb2Nl
c3NNb2RlbFNoYXJlZFNlY29uZGFyeVByb2Nlc3MpOwotI2VuZGlmCi0KICAgICBpZiAoY29uc3Qg
Y2hhciogZHVtcFJlbmRlclRyZWVUZW1wID0gbGlicmFyeVBhdGhGb3JUZXN0aW5nKCkpIHsKICAg
ICAgICAgU3RyaW5nIHRlbXBvcmFyeUZvbGRlciA9IFN0cmluZzo6ZnJvbVVURjgoZHVtcFJlbmRl
clRyZWVUZW1wKTsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>265912</attachid>
            <date>2015-11-19 15:31:05 -0800</date>
            <delta_ts>2015-11-19 15:38:38 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-151418-20151119153053.patch</filename>
            <type>text/plain</type>
            <size>169277</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IENoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBDaGFuZ2VMb2cJKHJldmlzaW9uIDE5MjYw
MSkKKysrIENoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE1IEBACisyMDE1LTEx
LTE5ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAg
ICAgUmVtb3ZlIHRoZSBub24tTmV0d29ya1Byb2Nlc3MgY29uZmlndXJhdGlvbnMKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MTQxOAorCisgICAgICAg
IFJldmlld2VkIGJ5IEdlb2ZmIEdhcmVuLgorCisgICAgICAgICogU291cmNlL2NtYWtlL09wdGlv
bnNFZmwuY21ha2U6CisgICAgICAgICogU291cmNlL2NtYWtlL09wdGlvbnNHVEsuY21ha2U6Cisg
ICAgICAgICogU291cmNlL2NtYWtlL09wdGlvbnNNYWMuY21ha2U6CisgICAgICAgICogU291cmNl
L2NtYWtlL1dlYktpdEZlYXR1cmVzLmNtYWtlOgorCiAyMDE1LTExLTE3ICBDYXJsb3MgR2FyY2lh
IENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KIAogICAgICAgICBSRUdSRVNTSU9OKHIxOTI0
NTkpOiBbR1RLXSBVc2VyIGFnZW50IHN0cmluZyBpcyBicm9rZW4gYWZ0ZXIgcjE5MjQ1OQpJbmRl
eDogU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQy
L0NoYW5nZUxvZwkocmV2aXNpb24gMTkyNjYwKQorKysgU291cmNlL1dlYktpdDIvQ2hhbmdlTG9n
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzEwIEBACisyMDE1LTExLTE5ICBBbGV4IENocmlz
dGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmVtb3ZlIHRoZSBu
b24tTmV0d29ya1Byb2Nlc3MgY29uZmlndXJhdGlvbnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MTQxOAorCisgICAgICAgIFJldmlld2VkIGJ5IEdl
b2ZmIEdhcmVuLgorCisgICAgICAgIFRoaXMgcGF0Y2ggYXNzdW1lcyBFTkFCTEUoTkVUV09SS19Q
Uk9DRVNTKSBpcyBhbHdheXMgMSwgdXNlc05ldHdvcmtQcm9jZXNzIGlzIGFsd2F5cyB0cnVlLCAK
KyAgICAgICAgYW5kIFByb2Nlc3NNb2RlbCBpcyBhbHdheXMgUHJvY2Vzc01vZGVsTXVsdGlwbGVT
ZWNvbmRhcnlQcm9jZXNzZXMuICBJdCBkb2VzIHRoaXMgYnkgcmVtb3ZpbmcKKyAgICAgICAgdGhl
IGNoZWNrcyBhbmQgdGhlIGNvZGUgdGhhdCB3b3VsZCBiZSBleGVjdXRlZCB3aXRoIG90aGVyIGNv
bmZpZ3VyYXRpb25zLgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogTmV0
d29ya1Byb2Nlc3MvRW50cnlQb2ludC9tYWMvTGVnYWN5UHJvY2Vzcy9OZXR3b3JrUHJvY2Vzc01h
aW4ubW06CisgICAgICAgIChOZXR3b3JrUHJvY2Vzc01haW4pOgorICAgICAgICAqIE5ldHdvcmtQ
cm9jZXNzL0VudHJ5UG9pbnQvbWFjL1hQQ1NlcnZpY2UvTmV0d29ya1NlcnZpY2VFbnRyeVBvaW50
Lm1tOgorICAgICAgICAoTmV0d29ya1NlcnZpY2VJbml0aWFsaXplcik6CisgICAgICAgICogTmV0
d29ya1Byb2Nlc3MvRmlsZUFQSS9OZXR3b3JrQmxvYlJlZ2lzdHJ5LmNwcDoKKyAgICAgICAgKFdl
YktpdDo6TmV0d29ya0Jsb2JSZWdpc3RyeTo6ZmlsZXNJbkJsb2IpOgorICAgICAgICAqIE5ldHdv
cmtQcm9jZXNzL0ZpbGVBUEkvTmV0d29ya0Jsb2JSZWdpc3RyeS5oOgorICAgICAgICAqIE5ldHdv
cmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmJsb2JTaXplKToKKyAgICAgICAg
KiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oOgorICAgICAg
ICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2Vz
LmluOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkLmNwcDoKKyAgICAgICAg
KiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZC5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNz
L05ldHdvcmtMb2FkQ2xpZW50Lmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xv
YWRQYXJhbWV0ZXJzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0xvYWRQYXJhbWV0ZXJz
OjpOZXR3b3JrTG9hZFBhcmFtZXRlcnMpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdv
cmtMb2FkUGFyYW1ldGVycy5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9j
ZXNzLmNwcDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oOgorICAg
ICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluOgorICAgICAg
ICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgICog
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmg6CisgICAgICAgICogTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLm1lc3NhZ2VzLmluOgorICAgICAgICAqIE5l
dHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtQcm9jZXNzQ29jb2EubW06CisgICAgICAgIChXZWJL
aXQ6Ok5ldHdvcmtQcm9jZXNzOjpjbGVhckRpc2tDYWNoZSk6CisgICAgICAgICogTmV0d29ya1By
b2Nlc3MvZWZsL05ldHdvcmtQcm9jZXNzTWFpbkVmbC5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5l
dHdvcmtQcm9jZXNzTWFpblVuaXgpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2d0ay9OZXR3
b3JrUHJvY2Vzc01haW5HdGsuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc01h
aW5Vbml4KToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9pb3MvTmV0d29ya1Byb2Nlc3NJT1Mu
bW06CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvbWFjL05ldHdvcmtMb2FkTWFjLm1tOgorICAg
ICAgICAqIE5ldHdvcmtQcm9jZXNzL21hYy9OZXR3b3JrUHJvY2Vzc01hYy5tbToKKyAgICAgICAg
KiBOZXR3b3JrUHJvY2Vzcy9tYWMvTmV0d29ya1Jlc291cmNlTG9hZGVyTWFjLm1tOgorICAgICAg
ICAqIE5ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya1Byb2Nlc3NTb3VwLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OnBsYXRmb3JtVGVybWluYXRlKToKKyAgICAgICAgKiBO
ZXR3b3JrUHJvY2Vzcy9zb3VwL1JlbW90ZU5ldHdvcmtpbmdDb250ZXh0U291cC5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OlJlbW90ZU5ldHdvcmtpbmdDb250ZXh0OjpzdG9yYWdlU2Vzc2lvbik6Cisg
ICAgICAgICogU2hhcmVkL0FQSS9jL1dLRGVwcmVjYXRlZEZ1bmN0aW9ucy5jcHA6CisgICAgICAg
IChXS0luc3BlY3RvclRvZ2dsZUphdmFTY3JpcHRQcm9maWxpbmcpOgorICAgICAgICAoV0tDb250
ZXh0U2V0UHJvY2Vzc01vZGVsKToKKyAgICAgICAgKFdLQ29udGV4dEdldFByb2Nlc3NNb2RlbCk6
CisgICAgICAgIChXS0NvbnRleHRTZXRVc2VzTmV0d29ya1Byb2Nlc3MpOgorICAgICAgICAoV0tH
cmFwaGljc0NvbnRleHRHZXRDR0NvbnRleHQpOgorICAgICAgICAqIFNoYXJlZC9BdXRoZW50aWNh
dGlvbi9BdXRoZW50aWNhdGlvbk1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpBdXRoZW50
aWNhdGlvbk1hbmFnZXI6OmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSk6CisgICAg
ICAgICogU2hhcmVkL05ldHdvcmsvQ3VzdG9tUHJvdG9jb2xzL0NvY29hL0N1c3RvbVByb3RvY29s
TWFuYWdlckNvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpDdXN0b21Qcm90b2NvbE1hbmFnZXI6
OmluaXRpYWxpemUpOgorICAgICAgICAoV2ViS2l0OjpDdXN0b21Qcm90b2NvbE1hbmFnZXI6OmFk
ZEN1c3RvbVByb3RvY29sKToKKyAgICAgICAgKiBTaGFyZWQvTmV0d29yay9DdXN0b21Qcm90b2Nv
bHMvQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyLmg6CisgICAgICAgICogU2hhcmVkL05ldHdvcmsvQ3Vz
dG9tUHJvdG9jb2xzL3NvdXAvQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyU291cC5jcHA6CisgICAgICAg
IChXZWJLaXQ6OkN1c3RvbVByb3RvY29sTWFuYWdlcjo6c3VwcGxlbWVudE5hbWUpOgorICAgICAg
ICAoV2ViS2l0OjpDdXN0b21Qcm90b2NvbE1hbmFnZXI6OmluaXRpYWxpemUpOgorICAgICAgICAo
V2ViS2l0OjpDdXN0b21Qcm90b2NvbE1hbmFnZXI6OnJlZ2lzdGVyU2NoZW1lKToKKyAgICAgICAg
KiBTaGFyZWQvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOjpkZWNvZGUp
OgorICAgICAgICAqIFNoYXJlZC9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0
ZXJzLmg6CisgICAgICAgICogU2hhcmVkL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NTdXBwbGVtZW50
Lmg6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzU3VwcGxlbWVudDo6aW5pdGlhbGl6
ZSk6CisgICAgICAgICogU2hhcmVkL05ldHdvcmsvTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRl
cnMuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVyczo6
ZGVjb2RlKToKKyAgICAgICAgKiBTaGFyZWQvTmV0d29yay9OZXR3b3JrUmVzb3VyY2VMb2FkUGFy
YW1ldGVycy5oOgorICAgICAgICAqIFNoYXJlZC9Qcm9jZXNzRXhlY3V0YWJsZVBhdGguaDoKKyAg
ICAgICAgKiBTaGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnM6OldlYlByb2Nlc3NDcmVhdGlv
blBhcmFtZXRlcnMpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0
ZXJzOjplbmNvZGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0
ZXJzOjpkZWNvZGUpOgorICAgICAgICAqIFNoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0
ZXJzLmg6CisgICAgICAgICogU2hhcmVkL2VmbC9Qcm9jZXNzRXhlY3V0YWJsZVBhdGhFZmwuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpleGVjdXRhYmxlUGF0aE9mUGx1Z2luUHJvY2Vzcyk6CisgICAg
ICAgIChXZWJLaXQ6OmV4ZWN1dGFibGVQYXRoT2ZOZXR3b3JrUHJvY2Vzcyk6CisgICAgICAgIChX
ZWJLaXQ6OmV4ZWN1dGFibGVQYXRoT2ZEYXRhYmFzZVByb2Nlc3MpOgorICAgICAgICAqIFNoYXJl
ZC9ndGsvUHJvY2Vzc0V4ZWN1dGFibGVQYXRoR3RrLmNwcDoKKyAgICAgICAgKFdlYktpdDo6ZXhl
Y3V0YWJsZVBhdGhPZlBsdWdpblByb2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpleGVjdXRhYmxl
UGF0aE9mTmV0d29ya1Byb2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpleGVjdXRhYmxlUGF0aE9m
RGF0YWJhc2VQcm9jZXNzKToKKyAgICAgICAgKiBTaGFyZWQvbWFjL0Nvb2tpZVN0b3JhZ2VTaGlt
Lmg6CisgICAgICAgICogU2hhcmVkL21hYy9Db29raWVTdG9yYWdlU2hpbS5tbToKKyAgICAgICAg
KC1bV0tOU1VSTFNlc3Npb25Mb2NhbCBfZ2V0Q29va2llSGVhZGVyc0ZvclRhc2s6Y29tcGxldGlv
bkhhbmRsZXI6XSk6CisgICAgICAgICogU2hhcmVkL21hYy9Db29raWVTdG9yYWdlU2hpbUxpYnJh
cnkuY3BwOgorICAgICAgICAqIFNoYXJlZC9tYWMvQ29va2llU3RvcmFnZVNoaW1MaWJyYXJ5Lmg6
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uY3Bw
OgorICAgICAgICAoQVBJOjpQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb246OmNyZWF0ZVdpdGhMZWdh
Y3lPcHRpb25zKToKKyAgICAgICAgKEFQSTo6UHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uOjpjb3B5
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSVByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5o
OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJU2Vzc2lvbi5jcHA6CisgICAgICAgIChBUEk6
OlNlc3Npb246On5TZXNzaW9uKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tBUElDYXN0
Lmg6CisgICAgICAgIChXZWJLaXQ6OnRvQVBJKToKKyAgICAgICAgKFdlYktpdDo6dG9Gb250U21v
b3RoaW5nTGV2ZWwpOgorICAgICAgICAoV2ViS2l0Ojp0b1Byb2Nlc3NNb2RlbCk6IERlbGV0ZWQu
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dC5jcHA6CisgICAgICAgIChXS0Nv
bnRleHRHZXRDYWNoZU1vZGVsKToKKyAgICAgICAgKFdLQ29udGV4dFNldE1heGltdW1OdW1iZXJP
ZlByb2Nlc3Nlcyk6CisgICAgICAgIChXS0NvbnRleHRTZXRKYXZhU2NyaXB0R2FyYmFnZUNvbGxl
Y3RvclRpbWVyRW5hYmxlZCk6CisgICAgICAgIChXS0NvbnRleHRVc2VUZXN0aW5nTmV0d29ya1Nl
c3Npb24pOgorICAgICAgICAoV0tDb250ZXh0U2V0UHJvY2Vzc01vZGVsKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdLQ29udGV4dEdldFByb2Nlc3NNb2RlbCk6IERlbGV0ZWQuCisgICAgICAgIChXS0Nv
bnRleHRTZXRVc2VzTmV0d29ya1Byb2Nlc3MpOiBEZWxldGVkLgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvQy9XS0NvbnRleHQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvbWFjL1dLQ29u
dGV4dFByaXZhdGVNYWMubW06CisgICAgICAgIChXS0NvbnRleHRHZXROZXR3b3JrUHJvY2Vzc0lk
ZW50aWZpZXIpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzR3JvdXAu
bW06CisgICAgICAgICgtW1dLUHJvY2Vzc0dyb3VwIGluaXRXaXRoSW5qZWN0ZWRCdW5kbGVVUkw6
XSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29sLm1tOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a19jb250ZXh0LmNwcDoKKyAgICAgICAgKGV3a19j
b250ZXh0X3Byb2Nlc3NfbW9kZWxfc2V0KToKKyAgICAgICAgKGV3a19jb250ZXh0X3Byb2Nlc3Nf
bW9kZWxfZ2V0KToKKyAgICAgICAgKGV3a19jb250ZXh0X3Rsc19lcnJvcl9wb2xpY3lfZ2V0KToK
KyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Bvb2xDb2NvYS5tbToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnVwZGF0ZVByb2Nlc3NTdXBwcmVzc2lvblN0YXRl
KToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnBsYXRmb3JtSW5pdGlhbGl6ZVdl
YlByb2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6cGxhdGZvcm1Jbml0
aWFsaXplTmV0d29ya1Byb2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6
cGxhdGZvcm1JbnZhbGlkYXRlQ29udGV4dCk6CisgICAgICAgICogVUlQcm9jZXNzL0Rvd25sb2Fk
cy9Eb3dubG9hZFByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6RG93bmxvYWRQcm94eTo6Y2Fu
Y2VsKToKKyAgICAgICAgKFdlYktpdDo6RG93bmxvYWRQcm94eTo6aW52YWxpZGF0ZSk6CisgICAg
ICAgICogVUlQcm9jZXNzL0xhdW5jaGVyL1Byb2Nlc3NMYXVuY2hlci5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OlByb2Nlc3NMYXVuY2hlcjo6cHJvY2Vzc1R5cGVBc1N0cmluZyk6CisgICAgICAgIChX
ZWJLaXQ6OlByb2Nlc3NMYXVuY2hlcjo6Z2V0UHJvY2Vzc1R5cGVGcm9tU3RyaW5nKToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvTGF1bmNoZXIvUHJvY2Vzc0xhdW5jaGVyLmg6CisgICAgICAgICogVUlQ
cm9jZXNzL0xhdW5jaGVyL2VmbC9Qcm9jZXNzTGF1bmNoZXJFZmwuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpQcm9jZXNzTGF1bmNoZXI6OmxhdW5jaFByb2Nlc3MpOgorICAgICAgICAqIFVJUHJvY2Vz
cy9MYXVuY2hlci9ndGsvUHJvY2Vzc0xhdW5jaGVyR3RrLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
UHJvY2Vzc0xhdW5jaGVyOjpsYXVuY2hQcm9jZXNzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvTGF1
bmNoZXIvbWFjL1Byb2Nlc3NMYXVuY2hlck1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6Y29tcHV0
ZVByb2Nlc3NTaGltUGF0aCk6CisgICAgICAgIChXZWJLaXQ6OnNlcnZpY2VOYW1lKToKKyAgICAg
ICAgKFdlYktpdDo6c2hvdWxkTGVha0Jvb3N0KToKKyAgICAgICAgKFdlYktpdDo6Y3JlYXRlUHJv
Y2Vzcyk6CisgICAgICAgICogVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5j
cHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OnNldElzSG9sZGluZ0xv
Y2tlZEZpbGVzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1By
b3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5t
ZXNzYWdlcy5pbjoKKyAgICAgICAgKiBVSVByb2Nlc3MvTmV0d29yay9tYWMvTmV0d29ya1Byb2Nl
c3NQcm94eU1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NQcm94eTo6cGxh
dGZvcm1HZXRMYXVuY2hPcHRpb25zKToKKyAgICAgICAgKiBVSVByb2Nlc3MvTmV0d29yay9zb3Vw
L05ldHdvcmtQcm9jZXNzUHJveHlTb3VwLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1By
b2Nlc3NQcm94eTo6cGxhdGZvcm1HZXRMYXVuY2hPcHRpb25zKToKKyAgICAgICAgKiBVSVByb2Nl
c3MvUHJvY2Vzc01vZGVsLmg6IFJlbW92ZWQuCisgICAgICAgICogVUlQcm9jZXNzL1dlYkNvb2tp
ZU1hbmFnZXJQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkNvb2tpZU1hbmFnZXJQcm94
eTo6c2hvdWxkVGVybWluYXRlKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29va2llTWFuYWdlclBy
b3h5OjpyZWZXZWJDb250ZXh0U3VwcGxlbWVudCk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvb2tp
ZU1hbmFnZXJQcm94eTo6c2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeSk6CisgICAgICAgIChXZWJL
aXQ6OldlYkNvb2tpZU1hbmFnZXJQcm94eTo6Z2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeSk6Cisg
ICAgICAgICogVUlQcm9jZXNzL1dlYkluc3BlY3RvclByb3h5LmNwcDoKKyAgICAgICAgKFdlYktp
dDo6V2ViSW5zcGVjdG9yUHJveHk6Omluc3BlY3RvclByb2Nlc3NQb29sKToKKyAgICAgICAgKiBV
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5
OjpXZWJQYWdlUHJveHkpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnJlYXR0YWNo
VG9XZWJQcm9jZXNzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpzZXRTZXNzaW9u
SUQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmluaXRpYWxpemVXZWJQYWdlKToK
KyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwOgorICAgICAgICAoV2ViS2l0
OjpXZWJQcm9jZXNzUG9vbDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bv
b2w6OldlYlByb2Nlc3NQb29sKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6On5X
ZWJQcm9jZXNzUG9vbCk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjppbml0aWFs
aXplQ2xpZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnNldERvd25sb2Fk
Q2xpZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnNldE1heGltdW1OdW1i
ZXJPZlByb2Nlc3Nlcyk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpuZXR3b3Jr
aW5nUHJvY2Vzc0Nvbm5lY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6
bGFuZ3VhZ2VDaGFuZ2VkKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnRleHRD
aGVja2VyU3RhdGVDaGFuZ2VkKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OmVu
c3VyZU5ldHdvcmtQcm9jZXNzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6Omdl
dE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQ
b29sOjplbnN1cmVEYXRhYmFzZVByb2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNz
UG9vbDo6c2V0QW55UGFnZUdyb3VwTWlnaHRIYXZlUHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpwcm9jZXNzRGlkQ2FjaGVQYWdlKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OmNyZWF0ZU5ld1dlYlByb2Nlc3MpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6ZGlzY29ubmVjdFByb2Nlc3MpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6Y3JlYXRlV2ViUGFnZSk6CisgICAgICAgIChXZWJL
aXQ6OldlYlByb2Nlc3NQb29sOjpkb3dubG9hZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nl
c3NQb29sOjpyZXN1bWVEb3dubG9hZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29s
Ojpwb3N0TWVzc2FnZVRvSW5qZWN0ZWRCdW5kbGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9j
ZXNzUG9vbDo6c2V0QWRkaXRpb25hbFBsdWdpbnNEaXJlY3RvcnkpOgorICAgICAgICAoV2ViS2l0
OjpXZWJQcm9jZXNzUG9vbDo6bmV0d29ya1Byb2Nlc3NJZGVudGlmaWVyKToKKyAgICAgICAgKFdl
YktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnNldEFsd2F5c1VzZXNDb21wbGV4VGV4dENvZGVQYXRoKToK
KyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnNldENhbkhhbmRsZUhUVFBTU2VydmVy
VHJ1c3RFdmFsdWF0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnJlZ2lz
dGVyVVJMU2NoZW1lQXNMb2NhbCk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpz
ZXRDYWNoZU1vZGVsKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnNldERlZmF1
bHRSZXF1ZXN0VGltZW91dEludGVydmFsKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bv
b2w6OmNyZWF0ZURvd25sb2FkUHJveHkpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9v
bDo6YWRkTWVzc2FnZVJlY2VpdmVyKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6
OnVzZVRlc3RpbmdOZXR3b3JrU2Vzc2lvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQ
b29sOjphbGxvd1NwZWNpZmljSFRUUFNDZXJ0aWZpY2F0ZUZvckhvc3QpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQcm9jZXNzUG9vbDo6cmVxdWVzdFdlYkNvbnRlbnRTdGF0aXN0aWNzKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnJlcXVlc3ROZXR3b3JraW5nU3RhdGlzdGljcyk6
CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpoYW5kbGVNZXNzYWdlKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnNldFByb2Nlc3NNb2RlbCk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpzZXRVc2VzTmV0d29ya1Byb2Nlc3MpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6dXNlc05ldHdvcmtQcm9j
ZXNzKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OmVuc3VyZVNo
YXJlZFdlYlByb2Nlc3MpOiBEZWxldGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNz
UG9vbC5oOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6c2VuZFRvTmV0d29ya2lu
Z1Byb2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6c2VuZFRvTmV0d29y
a2luZ1Byb2Nlc3NSZWxhdW5jaGluZ0lmTmVjZXNzYXJ5KToKKyAgICAgICAgKFdlYktpdDo6V2Vi
UHJvY2Vzc1Bvb2w6OnNlbmRUb0FsbFByb2Nlc3Nlc1JlbGF1bmNoaW5nVGhlbUlmTmVjZXNzYXJ5
KToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnNlbmRUb09uZVByb2Nlc3MpOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0
OjpXZWJQcm9jZXNzUHJveHk6OnJlbW92ZVdlYlBhZ2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
cm9jZXNzUHJveHk6OmdldFBsdWdpblByb2Nlc3NDb25uZWN0aW9uKToKKyAgICAgICAgKFdlYktp
dDo6V2ViUHJvY2Vzc1Byb3h5OjpnZXROZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24pOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OmdldERhdGFiYXNlUHJvY2Vzc0Nvbm5lY3Rpb24p
OgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OnVwZGF0ZVRleHRDaGVja2VyU3Rh
dGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OmRpZFNhdmVUb1BhZ2VDYWNo
ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6ZGlkQ2FuY2VsUHJvY2Vzc1N1
c3BlbnNpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OnJlaW5zdGF0ZU5l
dHdvcmtQcm9jZXNzQXNzZXJ0aW9uU3RhdGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNz
UHJveHk6OmRpZFNldEFzc2VydGlvblN0YXRlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vz
c1Byb3h5OjpjcmVhdGVEb3dubG9hZFByb3h5KTogRGVsZXRlZC4KKyAgICAgICAgKiBVSVByb2Nl
c3MvV2ViUHJvY2Vzc1Byb3h5Lmg6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6
dGhyb3R0bGVyKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5Lm1lc3NhZ2Vz
LmluOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6fldlYnNpdGVEYXRhU3RvcmUp
OgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpjbG9uZVNlc3Npb25EYXRhKToK
KyAgICAgICAgKiBVSVByb2Nlc3MvZ3RrL1dlYlByb2Nlc3NQb29sR3RrLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6aW5pdEluc3BlY3RvclNlcnZlcik6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nl
c3NQb29sOjpwbGF0Zm9ybUluaXRpYWxpemVXZWJQcm9jZXNzKToKKyAgICAgICAgKFdlYktpdDo6
V2ViUHJvY2Vzc1Bvb2w6OnNldElnbm9yZVRMU0Vycm9ycyk6CisgICAgICAgICogVUlQcm9jZXNz
L3NvdXAvV2ViUHJvY2Vzc1Bvb2xTb3VwLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vz
c1Bvb2w6OnBsYXRmb3JtSW5pdGlhbGl6ZU5ldHdvcmtQcm9jZXNzKToKKyAgICAgICAgKiBXZWJL
aXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogV2ViS2l0MlByZWZpeC5o
OgorICAgICAgICAqIFdlYlByb2Nlc3MvRmlsZUFQSS9CbG9iUmVnaXN0cnlQcm94eS5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OkJsb2JSZWdpc3RyeVByb3h5OjpyZWdpc3RlckZpbGVCbG9iVVJMKToK
KyAgICAgICAgKFdlYktpdDo6QmxvYlJlZ2lzdHJ5UHJveHk6OnJlZ2lzdGVyQmxvYlVSTCk6Cisg
ICAgICAgIChXZWJLaXQ6OkJsb2JSZWdpc3RyeVByb3h5Ojp1bnJlZ2lzdGVyQmxvYlVSTCk6Cisg
ICAgICAgIChXZWJLaXQ6OkJsb2JSZWdpc3RyeVByb3h5OjpyZWdpc3RlckJsb2JVUkxGb3JTbGlj
ZSk6CisgICAgICAgIChXZWJLaXQ6OkJsb2JSZWdpc3RyeVByb3h5OjpibG9iU2l6ZSk6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9GaWxlQVBJL0Jsb2JSZWdpc3RyeVByb3h5Lmg6CisgICAgICAgICog
V2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5jcHA6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5oOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24ubWVzc2FnZXMu
aW46CisgICAgICAgICogV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZFNjaGVkdWxl
ci5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZFNjaGVkdWxlcjo6bmV0d29y
a1Byb2Nlc3NDcmFzaGVkKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3Vy
Y2VMb2FkU2NoZWR1bGVyLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291
cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VM
b2FkZXIuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIu
bWVzc2FnZXMuaW46CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNj
YXBlQnJvd3NlckZ1bmNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6aW5pdGlhbGl6ZUJyb3dzZXJG
dW5jcyk6CisgICAgICAgIChXZWJLaXQ6Om5ldHNjYXBlQnJvd3NlckZ1bmNzKToKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4uY3BwOgorICAgICAg
ICAoV2ViS2l0OjpOZXRzY2FwZVBsdWdpbjo6cmVnaXN0ZXJSZWRpcmVjdCk6CisgICAgICAgIChX
ZWJLaXQ6Ok5ldHNjYXBlUGx1Z2luOjp1cmxSZWRpcmVjdFJlc3BvbnNlKToKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y29va2llc0ZvckRPTSk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBsYXRmb3JtU3RyYXRlZ2llczo6c2V0Q29va2llc0Zyb21ET00pOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNvb2tpZXNFbmFibGVkKToK
KyAgICAgICAgKFdlYktpdDo6V2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjb29raWVSZXF1ZXN0SGVh
ZGVyRmllbGRWYWx1ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBsYXRmb3JtU3RyYXRlZ2llczo6
Z2V0UmF3Q29va2llcyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBsYXRmb3JtU3RyYXRlZ2llczo6
ZGVsZXRlQ29va2llKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpy
ZXNvdXJjZUxvYWRTY2hlZHVsZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF0Zm9ybVN0cmF0
ZWdpZXM6OmxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkpOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
bGF0Zm9ybVN0cmF0ZWdpZXM6OmNyZWF0ZVBpbmdIYW5kbGUpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNyZWF0ZUJsb2JSZWdpc3RyeSk6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaDoKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJG
cmFtZTo6c3RhcnREb3dubG9hZCk6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lOjpjb252ZXJ0
TWFpblJlc291cmNlTG9hZFRvRG93bmxvYWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZTo6
c291cmNlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwOgorICAgICAgICAo
V2ViS2l0OjpXZWJQcm9jZXNzOjpXZWJQcm9jZXNzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJv
Y2Vzczo6aW5pdGlhbGl6ZUNvbm5lY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNz
Ojppbml0aWFsaXplV2ViUHJvY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OmVu
c3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nl
c3M6OnJlZ2lzdGVyVVJMU2NoZW1lQXNFbXB0eURvY3VtZW50KToKKyAgICAgICAgKFdlYktpdDo6
V2ViUHJvY2Vzczo6ZGVzdHJveVByaXZhdGVCcm93c2luZ1Nlc3Npb24pOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQcm9jZXNzOjpwbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbk1hbmFnZXIpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpzaG91bGRUZXJtaW5hdGUpOgorICAgICAgICAoV2ViS2l0
OjpXZWJQcm9jZXNzOjpzZXRJbmplY3RlZEJ1bmRsZVBhcmFtZXRlcnMpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQcm9jZXNzOjpuZXR3b3JrQ29ubmVjdGlvbik6CisgICAgICAgIChXZWJLaXQ6Oldl
YlByb2Nlc3M6OndlYlJlc291cmNlTG9hZFNjaGVkdWxlcik6CisgICAgICAgIChXZWJLaXQ6Oldl
YlByb2Nlc3M6OndlYlRvRGF0YWJhc2VQcm9jZXNzQ29ubmVjdGlvbkNsb3NlZCk6CisgICAgICAg
IChXZWJLaXQ6OldlYlByb2Nlc3M6OnNldEVuaGFuY2VkQWNjZXNzaWJpbGl0eSk6CisgICAgICAg
IChXZWJLaXQ6OldlYlByb2Nlc3M6OnByZWZldGNoRE5TKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
UHJvY2Vzczo6ZGlkQ3JlYXRlRG93bmxvYWQpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpX
ZWJQcm9jZXNzOjpkaWREZXN0cm95RG93bmxvYWQpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0
OjpXZWJQcm9jZXNzOjpkb3dubG9hZFByb3h5Q29ubmVjdGlvbik6IERlbGV0ZWQuCisgICAgICAg
IChXZWJLaXQ6OldlYlByb2Nlc3M6OmRvd25sb2Fkc0F1dGhlbnRpY2F0aW9uTWFuYWdlcik6IERl
bGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OmRvd25sb2FkTWFuYWdlcik6IERl
bGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OnVzZXNOZXR3b3JrUHJvY2Vzcyk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OmRvd25sb2FkUmVxdWVzdCk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OnJlc3VtZURvd25sb2FkKTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6Y2FuY2VsRG93bmxvYWQpOiBE
ZWxldGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQcm9jZXNzOjp0ZXh0Q2hlY2tlclN0YXRlKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
UHJvY2Vzczo6ZXZlbnREaXNwYXRjaGVyKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nl
c3MubWVzc2FnZXMuaW46CisgICAgICAgICogV2ViUHJvY2Vzcy9zb3VwL1dlYlByb2Nlc3NTb3Vw
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6cGxhdGZvcm1TZXRDYWNoZU1vZGVs
KToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6cGxhdGZvcm1DbGVhclJlc291cmNlQ2Fj
aGVzKToKKyAgICAgICAgKFdlYktpdDo6c2V0U291cFNlc3Npb25BY2NlcHRMYW5ndWFnZSk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OnBsYXRmb3JtSW5pdGlhbGl6ZVdlYlByb2Nlc3Mp
OgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpwbGF0Zm9ybVRlcm1pbmF0ZSk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OnNldElnbm9yZVRMU0Vycm9ycyk6CisgICAgICAgIChX
ZWJLaXQ6OldlYlByb2Nlc3M6OmFsbG93U3BlY2lmaWNIVFRQU0NlcnRpZmljYXRlRm9ySG9zdCk6
CisgICAgICAgICogY29uZmlnLmg6CisKIDIwMTUtMTEtMTkgIENzYWJhIE9zenRyb2dvbsOhYyAg
PG9zc3lAd2Via2l0Lm9yZz4KIAogICAgICAgICBbRUZMXSBGaXggV3JldHVybi10eXBlIGNsYW5n
IHdhcm5pbmcgaW4gRVdLMlVuaXRUZXN0QmFzZS5jcHAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NN
YWtlTGlzdHMudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL0NNYWtlTGlzdHMudHh0
CShyZXZpc2lvbiAxOTI2MDEpCisrKyBTb3VyY2UvV2ViS2l0Mi9DTWFrZUxpc3RzLnR4dAkod29y
a2luZyBjb3B5KQpAQCAtODAzLDE2ICs4MDMsMTMgQEAgaWYgKFdlYktpdDJfV2ViUHJvY2Vzc19P
VVRQVVRfTkFNRSkKICAgICBzZXRfdGFyZ2V0X3Byb3BlcnRpZXMoV2ViUHJvY2VzcyBQUk9QRVJU
SUVTIE9VVFBVVF9OQU1FICR7V2ViS2l0Ml9XZWJQcm9jZXNzX09VVFBVVF9OQU1FfSkKIGVuZGlm
ICgpCiAKLWlmIChFTkFCTEVfTkVUV09SS19QUk9DRVNTKQotICAgIGFkZF9leGVjdXRhYmxlKE5l
dHdvcmtQcm9jZXNzICR7TmV0d29ya1Byb2Nlc3NfU09VUkNFU30pCi0gICAgYWRkX3dlYmtpdDJf
cHJlZml4X2hlYWRlcihOZXR3b3JrUHJvY2VzcykKLSAgICB0YXJnZXRfbGlua19saWJyYXJpZXMo
TmV0d29ya1Byb2Nlc3MgJHtOZXR3b3JrUHJvY2Vzc19MSUJSQVJJRVN9KQotICAgIHNldF90YXJn
ZXRfcHJvcGVydGllcyhOZXR3b3JrUHJvY2VzcyBQUk9QRVJUSUVTIEZPTERFUiAiV2ViS2l0IikK
LSAgICBpbnN0YWxsKFRBUkdFVFMgTmV0d29ya1Byb2Nlc3MgREVTVElOQVRJT04gIiR7TElCRVhF
Q19JTlNUQUxMX0RJUn0iKQorYWRkX2V4ZWN1dGFibGUoTmV0d29ya1Byb2Nlc3MgJHtOZXR3b3Jr
UHJvY2Vzc19TT1VSQ0VTfSkKK2FkZF93ZWJraXQyX3ByZWZpeF9oZWFkZXIoTmV0d29ya1Byb2Nl
c3MpCit0YXJnZXRfbGlua19saWJyYXJpZXMoTmV0d29ya1Byb2Nlc3MgJHtOZXR3b3JrUHJvY2Vz
c19MSUJSQVJJRVN9KQorc2V0X3RhcmdldF9wcm9wZXJ0aWVzKE5ldHdvcmtQcm9jZXNzIFBST1BF
UlRJRVMgRk9MREVSICJXZWJLaXQiKQogCi0gICAgaWYgKFdlYktpdDJfTmV0d29ya1Byb2Nlc3Nf
T1VUUFVUX05BTUUpCi0gICAgICAgIHNldF90YXJnZXRfcHJvcGVydGllcyhOZXR3b3JrUHJvY2Vz
cyBQUk9QRVJUSUVTIE9VVFBVVF9OQU1FICR7V2ViS2l0Ml9OZXR3b3JrUHJvY2Vzc19PVVRQVVRf
TkFNRX0pCi0gICAgZW5kaWYgKCkKK2lmIChXZWJLaXQyX05ldHdvcmtQcm9jZXNzX09VVFBVVF9O
QU1FKQorICAgIHNldF90YXJnZXRfcHJvcGVydGllcyhOZXR3b3JrUHJvY2VzcyBQUk9QRVJUSUVT
IE9VVFBVVF9OQU1FICR7V2ViS2l0Ml9OZXR3b3JrUHJvY2Vzc19PVVRQVVRfTkFNRX0pCiBlbmRp
ZiAoKQogCiBpZiAoRU5BQkxFX1BMVUdJTl9QUk9DRVNTKQpAQCAtODQ3LDcgKzg0NCw3IEBAIHNl
dF90YXJnZXRfcHJvcGVydGllcyhXZWJLaXQyIFBST1BFUlRJRVMKIGlmIChBUFBMRSkKICAgICBX
RUJLSVRfRlJBTUVXT1JLKFdlYktpdDIpCiBlbHNlICgpCi0gICAgaW5zdGFsbChUQVJHRVRTIFdl
YktpdDIgV2ViUHJvY2VzcworICAgIGluc3RhbGwoVEFSR0VUUyBXZWJLaXQyIFdlYlByb2Nlc3Mg
TmV0d29ya1Byb2Nlc3MKICAgICAgICAgTElCUkFSWSBERVNUSU5BVElPTiAiJHtMSUJfSU5TVEFM
TF9ESVJ9IgogICAgICAgICBSVU5USU1FIERFU1RJTkFUSU9OICIke0xJQkVYRUNfSU5TVEFMTF9E
SVJ9IgogICAgICkKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYktpdDJQcmVmaXguaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJLaXQyUHJlZml4LmgJKHJldmlzaW9uIDE5MjYwMSkK
KysrIFNvdXJjZS9XZWJLaXQyL1dlYktpdDJQcmVmaXguaAkod29ya2luZyBjb3B5KQpAQCAtMzYs
OCArMzYsNiBAQAogCiAjZGVmaW5lIEVOQUJMRV9XRUJfUFJPQ0VTU19TQU5EQk9YIDEKIAotI2Rl
ZmluZSBFTkFCTEVfTkVUV09SS19QUk9DRVNTIDEKLQogI2RlZmluZSBFTkFCTEVfREFUQUJBU0Vf
UFJPQ0VTUyAxCiAKICNkZWZpbmUgRU5BQkxFX01FTU9SWV9TQU1QTEVSIDEKQEAgLTU5LDcgKzU3
LDYgQEAKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oR1RLKQotI2RlZmluZSBFTkFCTEVfTkVUV09S
S19QUk9DRVNTIDEKICNkZWZpbmUgRU5BQkxFX1NIQVJFQUJMRV9SRVNPVVJDRSAxCiAjZW5kaWYK
IApJbmRleDogU291cmNlL1dlYktpdDIvY29uZmlnLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdDIvY29uZmlnLmgJKHJldmlzaW9uIDE5MjYwMSkKKysrIFNvdXJjZS9XZWJLaXQyL2NvbmZp
Zy5oCSh3b3JraW5nIGNvcHkpCkBAIC05MSw3ICs5MSw3IEBACiAjZW5kaWYKIAogI2lmbmRlZiBF
TkFCTEVfTkVUV09SS19DQUNIRQotI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpICYmIChQTEFU
Rk9STShDT0NPQSkgfHwgUExBVEZPUk0oR1RLKSkKKyNpZiBQTEFURk9STShDT0NPQSkgfHwgUExB
VEZPUk0oR1RLKQogI2RlZmluZSBFTkFCTEVfTkVUV09SS19DQUNIRSAxCiAjZWxzZQogI2RlZmlu
ZSBFTkFCTEVfTkVUV09SS19DQUNIRSAwCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mu
Y3BwCShyZXZpc2lvbiAxOTI2MDEpCisrKyBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2LDgg
KzI2LDYgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJOZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2Vzcy5oIgogCi0jaWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKLQogI2luY2x1
ZGUgIk5ldHdvcmtCbG9iUmVnaXN0cnkuaCIKICNpbmNsdWRlICJOZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2Vzc01lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiTmV0d29ya0xvYWQuaCIKQEAgLTI3NCw1
ICsyNzIsMyBAQCB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpibG9iCiB9CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYktpdAotCi0jZW5kaWYgLy8gRU5BQkxFKE5FVFdPUktfUFJPQ0VT
UykKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaAkocmV2aXNpb24gMTkyNjAxKQorKysg
U291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MuaAkod29ya2luZyBjb3B5KQpAQCAtMjYsOCArMjYsNiBAQAogI2lmbmRlZiBOZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2Vzc19oCiAjZGVmaW5lIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzX2gKIAotI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCi0KICNpbmNsdWRlICJCbG9ja2lu
Z1Jlc3BvbnNlTWFwLmgiCiAjaW5jbHVkZSAiQ29ubmVjdGlvbi5oIgogI2luY2x1ZGUgIk5ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzTWVzc2FnZXMuaCIKQEAgLTEwMiw2ICsxMDAsNCBAQCBw
cml2YXRlOgogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAotI2VuZGlmIC8vIEVOQUJMRShORVRX
T1JLX1BST0NFU1MpCi0KICNlbmRpZiAvLyBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzc19o
CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgkocmV2
aXNpb24gMTkyNjAxKQorKysgU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4JKHdvcmtpbmcgY29weSkKQEAgLTIwLDgg
KzIwLDYgQEAKICMgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKICMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KIAotI2lmIEVO
QUJMRShORVRXT1JLX1BST0NFU1MpCi0KIG1lc3NhZ2VzIC0+IE5ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzIExlZ2FjeVJlY2VpdmVyIHsKIAogICAgIFNjaGVkdWxlUmVzb3VyY2VMb2FkKFdl
YktpdDo6TmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMgcmVzb3VyY2VMb2FkUGFyYW1ldGVy
cykKQEAgLTQ4LDUgKzQ2LDMgQEAgbWVzc2FnZXMgLT4gTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2NlcwogICAgIFVucmVnaXN0ZXJCbG9iVVJMKFdlYkNvcmU6OlVSTCB1cmwpCiAgICAgQmxvYlNp
emUoV2ViQ29yZTo6VVJMIHVybCkgLT4gKHVpbnQ2NF90IHJlc3VsdFNpemUpCiB9Ci0KLSNlbmRp
ZiAvLyBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQpJbmRleDogU291cmNlL1dlYktpdDIvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya0xvYWQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL05l
dHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkLmNwcAkocmV2aXNpb24gMTkyNjAxKQorKysgU291cmNl
L1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0yNCw4ICsyNCw2IEBACiAgKi8KIAogI2luY2x1ZGUgImNvbmZpZy5oIgotCi0jaWYgRU5BQkxF
KE5FVFdPUktfUFJPQ0VTUykKICNpbmNsdWRlICJOZXR3b3JrTG9hZC5oIgogCiAjaW5jbHVkZSAi
QXV0aGVudGljYXRpb25NYW5hZ2VyLmgiCkBAIC0zNzEsNSArMzY5LDMgQEAgdm9pZCBOZXR3b3Jr
TG9hZDo6cmVjZWl2ZWRDYW5jZWxsYXRpb24oUgogI2VuZGlmIC8vICFVU0UoTkVUV09SS19TRVNT
SU9OKQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQotI2VuZGlmIC8vIEVOQUJMRShORVRXT1JL
X1BST0NFU1MpCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9h
ZC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtM
b2FkLmgJKHJldmlzaW9uIDE5MjYwMSkKKysrIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNz
L05ldHdvcmtMb2FkLmgJKHdvcmtpbmcgY29weSkKQEAgLTI2LDggKzI2LDYgQEAKICNpZm5kZWYg
TmV0d29ya0xvYWRfaAogI2RlZmluZSBOZXR3b3JrTG9hZF9oCiAKLSNpZiBFTkFCTEUoTkVUV09S
S19QUk9DRVNTKQotCiAjaW5jbHVkZSAiTmV0d29ya0xvYWRDbGllbnQuaCIKICNpbmNsdWRlICJO
ZXR3b3JrTG9hZFBhcmFtZXRlcnMuaCIKICNpbmNsdWRlICJSZW1vdGVOZXR3b3JraW5nQ29udGV4
dC5oIgpAQCAtMTI2LDYgKzEyNCw0IEBAIHByaXZhdGU6CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktp
dAogCi0jZW5kaWYgLy8gRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKLQogI2VuZGlmIC8vIE5ldHdv
cmtMb2FkX2gKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2Fk
Q2xpZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya0xvYWRDbGllbnQuaAkocmV2aXNpb24gMTkyNjAxKQorKysgU291cmNlL1dlYktpdDIvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMjYsOCAr
MjYsNiBAQAogI2lmbmRlZiBOZXR3b3JrTG9hZENsaWVudF9oCiAjZGVmaW5lIE5ldHdvcmtMb2Fk
Q2xpZW50X2gKIAotI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCi0KICNpbmNsdWRlIDxXZWJD
b3JlL1Jlc291cmNlRXJyb3IuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlUmVxdWVzdC5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VSZXNwb25zZS5oPgpAQCAtNjYsNyArNjQsNSBA
QCBwdWJsaWM6CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCi0jZW5kaWYgLy8gRU5BQkxFKE5F
VFdPUktfUFJPQ0VTUykKLQogI2VuZGlmIC8vIE5ldHdvcmtMb2FkQ2xpZW50X2gKIApJbmRleDog
U291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRQYXJhbWV0ZXJzLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZFBh
cmFtZXRlcnMuY3BwCShyZXZpc2lvbiAxOTI2MDEpCisrKyBTb3VyY2UvV2ViS2l0Mi9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrTG9hZFBhcmFtZXRlcnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNCw4
ICsyNCw2IEBACiAgKi8KIAogI2luY2x1ZGUgImNvbmZpZy5oIgotCi0jaWYgRU5BQkxFKE5FVFdP
UktfUFJPQ0VTUykKICNpbmNsdWRlICJOZXR3b3JrTG9hZFBhcmFtZXRlcnMuaCIKIAogI2luY2x1
ZGUgIk5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmgiCkBAIC00Nyw1ICs0NSwzIEBAIE5l
dHdvcmtMb2FkUGFyYW1ldGVyczo6TmV0d29ya0xvYWRQYXJhbWUKIH0KIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViS2l0Ci0KLSNlbmRpZiAvLyBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQpJbmRleDogU291
cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRQYXJhbWV0ZXJzLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRQYXJhbWV0
ZXJzLmgJKHJldmlzaW9uIDE5MjYwMSkKKysrIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNz
L05ldHdvcmtMb2FkUGFyYW1ldGVycy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw4ICsyNiw2IEBA
CiAjaWZuZGVmIE5ldHdvcmtMb2FkUGFyYW1ldGVyc19oCiAjZGVmaW5lIE5ldHdvcmtMb2FkUGFy
YW1ldGVyc19oCiAKLSNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQotCiAjaW5jbHVkZSA8V2Vi
Q29yZS9SZXNvdXJjZUxvYWRlck9wdGlvbnMuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNl
UmVxdWVzdC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2Vzc2lvbklELmg+CkBAIC01NSw2ICs1Myw0
IEBAIHB1YmxpYzoKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKLSNlbmRpZiAvLyBFTkFCTEUo
TkVUV09SS19QUk9DRVNTKQotCiAjZW5kaWYgLy8gTmV0d29ya0xvYWRQYXJhbWV0ZXJzX2gKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5j
cHAJKHJldmlzaW9uIDE5MjYwMSkKKysrIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05l
dHdvcmtQcm9jZXNzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjYsOCArMjYsNiBAQAogI2luY2x1
ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzLmgiCiAKLSNpZiBFTkFCTEUo
TkVUV09SS19QUk9DRVNTKQotCiAjaW5jbHVkZSAiQXJndW1lbnRDb2RlcnMuaCIKICNpbmNsdWRl
ICJBdHRhY2htZW50LmgiCiAjaW5jbHVkZSAiQXV0aGVudGljYXRpb25NYW5hZ2VyLmgiCkBAIC01
NTQsNSArNTUyLDMgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6cGxhdGZvcm1Mb3dNZW1vcnlIYQog
I2VuZGlmCiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAotCi0jZW5kaWYgLy8gRU5BQkxFKE5FVFdP
UktfUFJPQ0VTUykKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtQ
cm9jZXNzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1Byb2Nlc3MuaAkocmV2aXNpb24gMTkyNjAxKQorKysgU291cmNlL1dlYktpdDIvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaAkod29ya2luZyBjb3B5KQpAQCAtMjYsOCArMjYsNiBA
QAogI2lmbmRlZiBOZXR3b3JrUHJvY2Vzc19oCiAjZGVmaW5lIE5ldHdvcmtQcm9jZXNzX2gKIAot
I2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCi0KICNpbmNsdWRlICJDYWNoZU1vZGVsLmgiCiAj
aW5jbHVkZSAiQ2hpbGRQcm9jZXNzLmgiCiAjaW5jbHVkZSAiRG93bmxvYWRNYW5hZ2VyLmgiCkBA
IC0xOTcsNiArMTk1LDQgQEAgcHJpdmF0ZToKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKLSNl
bmRpZiAvLyBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQotCiAjZW5kaWYgLy8gTmV0d29ya1Byb2Nl
c3NfaApJbmRleDogU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3Mu
bWVzc2FnZXMuaW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4JKHJldmlzaW9uIDE5MjYwMSkKKysrIFNvdXJjZS9X
ZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluCSh3b3JraW5n
IGNvcHkpCkBAIC0yMCw4ICsyMCw2IEBACiAjIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCiAjIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCiAKLSNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQotCiBtZXNzYWdlcyAtPiBOZXR3
b3JrUHJvY2VzcyBMZWdhY3lSZWNlaXZlciB7CiAgICAgIyBJbml0aWFsaXplcyB0aGUgbmV0d29y
ayBwcm9jZXNzLgogICAgIEluaXRpYWxpemVOZXR3b3JrUHJvY2VzcyhzdHJ1Y3QgV2ViS2l0OjpO
ZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycyBwcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJz
KQpAQCAtNjMsNSArNjEsMyBAQCBtZXNzYWdlcyAtPiBOZXR3b3JrUHJvY2VzcyBMZWdhY3lSZWNl
aXZlCiAgICAgQ2FuY2VsUHJlcGFyZVRvU3VzcGVuZCgpCiAgICAgUHJvY2Vzc0RpZFJlc3VtZSgp
CiB9Ci0KLSNlbmRpZiAvLyBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQpJbmRleDogU291cmNlL1dl
YktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIu
Y3BwCShyZXZpc2lvbiAxOTI2MDEpCisrKyBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw4ICsyNiw2IEBA
CiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiTmV0d29ya1Jlc291cmNlTG9hZGVyLmgi
CiAKLSNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQotCiAjaW5jbHVkZSAiRGF0YVJlZmVyZW5j
ZS5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJOZXR3b3JrQmxvYlJlZ2lzdHJ5
LmgiCkBAIC01ODEsNSArNTc5LDMgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmNvbnRp
bnVlQ2FuQQogI2VuZGlmCiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAotCi0jZW5kaWYgLy8gRU5B
QkxFKE5FVFdPUktfUFJPQ0VTUykKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNz
L05ldHdvcmtSZXNvdXJjZUxvYWRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL05l
dHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5oCShyZXZpc2lvbiAxOTI2MDEpCisr
KyBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuaAko
d29ya2luZyBjb3B5KQpAQCAtMjYsOCArMjYsNiBAQAogI2lmbmRlZiBOZXR3b3JrUmVzb3VyY2VM
b2FkZXJfaAogI2RlZmluZSBOZXR3b3JrUmVzb3VyY2VMb2FkZXJfaAogCi0jaWYgRU5BQkxFKE5F
VFdPUktfUFJPQ0VTUykKLQogI2luY2x1ZGUgIk1lc3NhZ2VTZW5kZXIuaCIKICNpbmNsdWRlICJO
ZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzc01lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiTmV0d29y
a0xvYWRDbGllbnQuaCIKQEAgLTE2OSw2ICsxNjcsNCBAQCBwcml2YXRlOgogCiB9IC8vIG5hbWVz
cGFjZSBXZWJLaXQKIAotI2VuZGlmIC8vIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCi0KICNlbmRp
ZiAvLyBOZXR3b3JrUmVzb3VyY2VMb2FkZXJfaApJbmRleDogU291cmNlL1dlYktpdDIvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLm1lc3NhZ2VzLmluCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5tZXNz
YWdlcy5pbgkocmV2aXNpb24gMTkyNjAxKQorKysgU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLm1lc3NhZ2VzLmluCSh3b3JraW5nIGNvcHkpCkBAIC0y
MCw4ICsyMCw2IEBACiAjIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCiAjIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAKLSNp
ZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQotCiBtZXNzYWdlcyAtPiBOZXR3b3JrUmVzb3VyY2VM
b2FkZXIgTGVnYWN5UmVjZWl2ZXIgewogCiAgICAgQ29udGludWVXaWxsU2VuZFJlcXVlc3QoV2Vi
Q29yZTo6UmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QpCkBAIC0zMCw1ICsyOCwzIEBAIG1lc3NhZ2Vz
IC0+IE5ldHdvcmtSZXNvdXJjZUxvYWRlciBMZWdhY3kKICAgICBDb250aW51ZUNhbkF1dGhlbnRp
Y2F0ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2UoYm9vbCBjYW5BdXRoZW50aWNhdGUpCiAjZW5kaWYK
IH0KLQotI2VuZGlmIC8vIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCkluZGV4OiBTb3VyY2UvV2Vi
S2l0Mi9OZXR3b3JrUHJvY2Vzcy9FbnRyeVBvaW50L21hYy9MZWdhY3lQcm9jZXNzL05ldHdvcmtQ
cm9jZXNzTWFpbi5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vz
cy9FbnRyeVBvaW50L21hYy9MZWdhY3lQcm9jZXNzL05ldHdvcmtQcm9jZXNzTWFpbi5tbQkocmV2
aXNpb24gMTkyNjAxKQorKysgU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvRW50cnlQb2lu
dC9tYWMvTGVnYWN5UHJvY2Vzcy9OZXR3b3JrUHJvY2Vzc01haW4ubW0JKHdvcmtpbmcgY29weSkK
QEAgLTI1LDggKzI1LDYgQEAKIAogI2ltcG9ydCAiY29uZmlnLmgiCiAKLSNpZiBFTkFCTEUoTkVU
V09SS19QUk9DRVNTKQotCiAjaW1wb3J0ICJDaGlsZFByb2Nlc3NFbnRyeVBvaW50LmgiCiAjaW1w
b3J0ICJOZXR3b3JrUHJvY2Vzcy5oIgogI2ltcG9ydCAiV0tCYXNlLmgiCkBAIC0zOSw1ICszNywz
IEBAIGludCBOZXR3b3JrUHJvY2Vzc01haW4oaW50IGFyZ2MsIGNoYXIqKiAKIHsKICAgICByZXR1
cm4gQ2hpbGRQcm9jZXNzTWFpbjxOZXR3b3JrUHJvY2VzcywgQ2hpbGRQcm9jZXNzTWFpbkRlbGVn
YXRlPihhcmdjLCBhcmd2KTsKIH0KLQotI2VuZGlmIC8vIEVOQUJMRShORVRXT1JLX1BST0NFU1Mp
CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9FbnRyeVBvaW50L21hYy9YUENT
ZXJ2aWNlL05ldHdvcmtTZXJ2aWNlRW50cnlQb2ludC5tbQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9FbnRyeVBvaW50L21hYy9YUENTZXJ2aWNlL05ldHdvcmtT
ZXJ2aWNlRW50cnlQb2ludC5tbQkocmV2aXNpb24gMTkyNjAxKQorKysgU291cmNlL1dlYktpdDIv
TmV0d29ya1Byb2Nlc3MvRW50cnlQb2ludC9tYWMvWFBDU2VydmljZS9OZXR3b3JrU2VydmljZUVu
dHJ5UG9pbnQubW0JKHdvcmtpbmcgY29weSkKQEAgLTUyLDcgKzUyLDYgQEAgZXh0ZXJuICJDIiBX
S19FWFBPUlQgdm9pZCBOZXR3b3JrU2VydmljZQogCiB2b2lkIE5ldHdvcmtTZXJ2aWNlSW5pdGlh
bGl6ZXIoeHBjX2Nvbm5lY3Rpb25fdCBjb25uZWN0aW9uLCB4cGNfb2JqZWN0X3QgaW5pdGlhbGl6
ZXJNZXNzYWdlKQogewotI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCiAgICAgLy8gUmVtb3Zl
IHRoZSBTZWNJdGVtU2hpbSBmcm9tIHRoZSBEWUxEX0lOU0VSVF9MSUJSQVJJRVMgZW52aXJvbm1l
bnQgdmFyaWFibGUgc28gYW55IHByb2Nlc3NlcyBzcGF3bmVkIGJ5CiAgICAgLy8gdGhlIHRoaXMg
cHJvY2VzcyBkb24ndCB0cnkgdG8gaW5zZXJ0IHRoZSBzaGltIGFuZCBjcmFzaC4KICAgICBFbnZp
cm9ubWVudFV0aWxpdGllczo6c3RyaXBWYWx1ZXNFbmRpbmdXaXRoU3RyaW5nKCJEWUxEX0lOU0VS
VF9MSUJSQVJJRVMiLCAiL1NlY0l0ZW1TaGltLmR5bGliIik7CkBAIC02OSw1ICs2OCw0IEBAIHZv
aWQgTmV0d29ya1NlcnZpY2VJbml0aWFsaXplcih4cGNfY29ubmUKICNpZiBIQVZFKE9TX0FDVElW
SVRZKQogICAgIG9zX2FjdGl2aXR5X2VuZChhY3Rpdml0eSk7CiAjZW5kaWYKLSNlbmRpZgogfQpJ
bmRleDogU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvRmlsZUFQSS9OZXR3b3JrQmxvYlJl
Z2lzdHJ5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9G
aWxlQVBJL05ldHdvcmtCbG9iUmVnaXN0cnkuY3BwCShyZXZpc2lvbiAxOTI2MDEpCisrKyBTb3Vy
Y2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9GaWxlQVBJL05ldHdvcmtCbG9iUmVnaXN0cnkuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0yNiw4ICsyNiw2IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAj
aW5jbHVkZSAiTmV0d29ya0Jsb2JSZWdpc3RyeS5oIgogCi0jaWYgRU5BQkxFKE5FVFdPUktfUFJP
Q0VTUykKLQogI2luY2x1ZGUgIkJsb2JEYXRhRmlsZVJlZmVyZW5jZVdpdGhTYW5kYm94RXh0ZW5z
aW9uLmgiCiAjaW5jbHVkZSAiU2FuZGJveEV4dGVuc2lvbi5oIgogI2luY2x1ZGUgPFdlYkNvcmUv
QmxvYlBhcnQuaD4KQEAgLTE1MSw1ICsxNDksMyBAQCBWZWN0b3I8UmVmUHRyPEJsb2JEYXRhRmls
ZVJlZmVyZW5jZT4+IE5lCiB9CiAKIH0KLQotI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9O
ZXR3b3JrUHJvY2Vzcy9GaWxlQVBJL05ldHdvcmtCbG9iUmVnaXN0cnkuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9GaWxlQVBJL05ldHdvcmtCbG9iUmVnaXN0
cnkuaAkocmV2aXNpb24gMTkyNjAxKQorKysgU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3Mv
RmlsZUFQSS9OZXR3b3JrQmxvYlJlZ2lzdHJ5LmgJKHdvcmtpbmcgY29weSkKQEAgLTI2LDggKzI2
LDYgQEAKICNpZm5kZWYgTmV0d29ya0Jsb2JSZWdpc3RyeV9oCiAjZGVmaW5lIE5ldHdvcmtCbG9i
UmVnaXN0cnlfaAogCi0jaWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKLQogI2luY2x1ZGUgPFdl
YkNvcmUvVVJMSGFzaC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3Rm
L0hhc2hTZXQuaD4KQEAgLTY4LDYgKzY2LDQgQEAgcHJpdmF0ZToKIAogfQogCi0jZW5kaWYgLy8g
RU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKLQogI2VuZGlmIC8vIE5ldHdvcmtCbG9iUmVnaXN0cnlf
aApJbmRleDogU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Byb2Nl
c3NDb2NvYS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9j
b2NvYS9OZXR3b3JrUHJvY2Vzc0NvY29hLm1tCShyZXZpc2lvbiAxOTI2MDEpCisrKyBTb3VyY2Uv
V2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrUHJvY2Vzc0NvY29hLm1tCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yNiw4ICsyNiw2IEBACiAjaW1wb3J0ICJjb25maWcuaCIKICNpbXBvcnQg
Ik5ldHdvcmtQcm9jZXNzLmgiCiAKLSNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQotCiAjaW1w
b3J0ICJOZXR3b3JrQ2FjaGUuaCIKICNpbXBvcnQgIk5ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJh
bWV0ZXJzLmgiCiAjaW1wb3J0ICJOZXR3b3JrUmVzb3VyY2VMb2FkZXIuaCIKQEAgLTI2Nyw1ICsy
NjUsMyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpjbGVhckRpc2tDYWNoZShzdGQ6CiB9CiAKIH0K
LQotI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9lZmwvTmV0d29y
a1Byb2Nlc3NNYWluRWZsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9OZXR3b3Jr
UHJvY2Vzcy9lZmwvTmV0d29ya1Byb2Nlc3NNYWluRWZsLmNwcAkocmV2aXNpb24gMTkyNjAxKQor
KysgU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvZWZsL05ldHdvcmtQcm9jZXNzTWFpbkVm
bC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI3LDggKzI3LDYgQEAKICNpbmNsdWRlICJjb25maWcu
aCIKICNpbmNsdWRlICJOZXR3b3JrUHJvY2Vzc01haW5Vbml4LmgiCiAKLSNpZiBFTkFCTEUoTkVU
V09SS19QUk9DRVNTKQotCiAjaW5jbHVkZSAiQ2hpbGRQcm9jZXNzTWFpbi5oIgogI2luY2x1ZGUg
Ik5ldHdvcmtQcm9jZXNzLmgiCiAjaW5jbHVkZSA8RWNvcmUuaD4KQEAgLTcwLDUgKzY4LDMgQEAg
aW50IE5ldHdvcmtQcm9jZXNzTWFpblVuaXgoaW50IGFyZ2MsIGNoYQogfQogCiB9IC8vIG5hbWVz
cGFjZSBXZWJLaXQKLQotI2VuZGlmIC8vIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCkluZGV4OiBT
b3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9ndGsvTmV0d29ya1Byb2Nlc3NNYWluR3RrLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9ndGsvTmV0d29y
a1Byb2Nlc3NNYWluR3RrLmNwcAkocmV2aXNpb24gMTkyNjAxKQorKysgU291cmNlL1dlYktpdDIv
TmV0d29ya1Byb2Nlc3MvZ3RrL05ldHdvcmtQcm9jZXNzTWFpbkd0ay5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTI3LDggKzI3LDYgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJOZXR3
b3JrUHJvY2Vzc01haW5Vbml4LmgiCiAKLSNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQotCiAj
aW5jbHVkZSAiQ2hpbGRQcm9jZXNzTWFpbi5oIgogI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzLmgi
CiAjaW5jbHVkZSA8V2ViQ29yZS9Tb3VwTmV0d29ya1Nlc3Npb24uaD4KQEAgLTYzLDUgKzYxLDMg
QEAgaW50IE5ldHdvcmtQcm9jZXNzTWFpblVuaXgoaW50IGFyZ2MsIGNoYQogfQogCiB9IC8vIG5h
bWVzcGFjZSBXZWJLaXQKLQotI2VuZGlmIC8vIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCkluZGV4
OiBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9pb3MvTmV0d29ya1Byb2Nlc3NJT1MubW0K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvaW9zL05ldHdvcmtQ
cm9jZXNzSU9TLm1tCShyZXZpc2lvbiAxOTI2MDEpCisrKyBTb3VyY2UvV2ViS2l0Mi9OZXR3b3Jr
UHJvY2Vzcy9pb3MvTmV0d29ya1Byb2Nlc3NJT1MubW0JKHdvcmtpbmcgY29weSkKQEAgLTI2LDcg
KzI2LDcgQEAKICNpbXBvcnQgImNvbmZpZy5oIgogI2ltcG9ydCAiTmV0d29ya1Byb2Nlc3MuaCIK
IAotI2lmIFBMQVRGT1JNKElPUykgJiYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKKyNpZiBQTEFU
Rk9STShJT1MpCiAKICNpbXBvcnQgIk5ldHdvcmtDYWNoZS5oIgogI2ltcG9ydCAiTmV0d29ya1By
b2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaCIKQEAgLTEwMSw0ICsxMDEsNCBAQCB2b2lkIE5ldHdv
cmtQcm9jZXNzOjpwbGF0Zm9ybVRlcm1pbmF0ZSgpCiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAog
Ci0jZW5kaWYgLy8gUExBVEZPUk0oSU9TKSAmJiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQorI2Vu
ZGlmIC8vIFBMQVRGT1JNKElPUykKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNz
L21hYy9OZXR3b3JrTG9hZE1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9OZXR3
b3JrUHJvY2Vzcy9tYWMvTmV0d29ya0xvYWRNYWMubW0JKHJldmlzaW9uIDE5MjYwMSkKKysrIFNv
dXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL21hYy9OZXR3b3JrTG9hZE1hYy5tbQkod29ya2lu
ZyBjb3B5KQpAQCAtMjQsOCArMjQsNiBAQAogICovCiAKICNpbXBvcnQgImNvbmZpZy5oIgotCi0j
aWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKICNpbXBvcnQgIk5ldHdvcmtMb2FkLmgiCiAKICNp
bXBvcnQgPFdlYkNvcmUvQ0ZOZXR3b3JrU1BJLmg+CkBAIC02MCw1ICs1OCwzIEBAIHZvaWQgTmV0
d29ya0xvYWQ6OndpbGxDYWNoZVJlc3BvbnNlQXN5bmMKICNlbmRpZiAvLyAhVVNFKENGTkVUV09S
SykKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KLSNlbmRpZiAvLyBFTkFCTEUoTkVUV09SS19Q
Uk9DRVNTKQpJbmRleDogU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvbWFjL05ldHdvcmtQ
cm9jZXNzTWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNz
L21hYy9OZXR3b3JrUHJvY2Vzc01hYy5tbQkocmV2aXNpb24gMTkyNjAxKQorKysgU291cmNlL1dl
YktpdDIvTmV0d29ya1Byb2Nlc3MvbWFjL05ldHdvcmtQcm9jZXNzTWFjLm1tCSh3b3JraW5nIGNv
cHkpCkBAIC0yNiw3ICsyNiw3IEBACiAjaW1wb3J0ICJjb25maWcuaCIKICNpbXBvcnQgIk5ldHdv
cmtQcm9jZXNzLmgiCiAKLSNpZiBQTEFURk9STShNQUMpICYmIEVOQUJMRShORVRXT1JLX1BST0NF
U1MpCisjaWYgUExBVEZPUk0oTUFDKQogCiAjaW1wb3J0ICJOZXR3b3JrQ2FjaGUuaCIKICNpbXBv
cnQgIk5ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmgiCkBAIC0xNDQsNCArMTQ0LDQg
QEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6cGxhdGZvcm1UZXJtaW5hdGUoKQogCiB9IC8vIG5hbWVz
cGFjZSBXZWJLaXQKIAotI2VuZGlmIC8vIFBMQVRGT1JNKE1BQykgJiYgRU5BQkxFKE5FVFdPUktf
UFJPQ0VTUykKKyNlbmRpZiAvLyBQTEFURk9STShNQUMpCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9O
ZXR3b3JrUHJvY2Vzcy9tYWMvTmV0d29ya1Jlc291cmNlTG9hZGVyTWFjLm1tCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL21hYy9OZXR3b3JrUmVzb3VyY2VMb2Fk
ZXJNYWMubW0JKHJldmlzaW9uIDE5MjYwMSkKKysrIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9j
ZXNzL21hYy9OZXR3b3JrUmVzb3VyY2VMb2FkZXJNYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTI2
LDggKzI2LDYgQEAKICNpbXBvcnQgImNvbmZpZy5oIgogI2ltcG9ydCAiTmV0d29ya1Jlc291cmNl
TG9hZGVyLmgiCiAKLSNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQotCiAjaW1wb3J0ICJOZXR3
b3JrRGlza0NhY2hlTW9uaXRvci5oIgogI2ltcG9ydCAiU2hhcmVhYmxlUmVzb3VyY2UuaCIKICNp
bXBvcnQgPFdlYkNvcmUvQ0ZOZXR3b3JrU1BJLmg+CkBAIC05MSw1ICs4OSwzIEBAIHZvaWQgTmV0
d29ya1Jlc291cmNlTG9hZGVyOjp3aWxsQ2FjaGVSZXMKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0
CiAKLSNlbmRpZiAvLyBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQotCkluZGV4OiBTb3VyY2UvV2Vi
S2l0Mi9OZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtQcm9jZXNzU291cC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrUHJvY2Vzc1Nv
dXAuY3BwCShyZXZpc2lvbiAxOTI2MDEpCisrKyBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vz
cy9zb3VwL05ldHdvcmtQcm9jZXNzU291cC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI1LDcgKzI1
LDYgQEAKICAqLwogCiAjaW5jbHVkZSAiY29uZmlnLmgiCi0jaWYgRU5BQkxFKE5FVFdPUktfUFJP
Q0VTUykKICNpbmNsdWRlICJOZXR3b3JrUHJvY2Vzcy5oIgogCiAjaW5jbHVkZSAiTmV0d29ya0Nh
Y2hlLmgiCkBAIC0xNzAsNSArMTY5LDMgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6cGxhdGZvcm1U
ZXJtaW5hdGUoKQogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQotI2VuZGlmCkluZGV4OiBT
b3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9zb3VwL1JlbW90ZU5ldHdvcmtpbmdDb250ZXh0
U291cC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3Mvc291
cC9SZW1vdGVOZXR3b3JraW5nQ29udGV4dFNvdXAuY3BwCShyZXZpc2lvbiAxOTI2MDEpCisrKyBT
b3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9zb3VwL1JlbW90ZU5ldHdvcmtpbmdDb250ZXh0
U291cC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2LDcgKzI2LDYgQEAKICAqLwogCiAjaW5jbHVk
ZSAiY29uZmlnLmgiCi0jaWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKICNpbmNsdWRlICJSZW1v
dGVOZXR3b3JraW5nQ29udGV4dC5oIgogCiAjaW5jbHVkZSA8V2ViQ29yZS9OZXR3b3JrU3RvcmFn
ZVNlc3Npb24uaD4KQEAgLTU3LDUgKzU2LDMgQEAgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBSZW1v
dGVOZXR3b3JraW5nQwogfQogCiB9Ci0KLSNlbmRpZiAvLyBFTkFCTEUoTkVUV09SS19QUk9DRVNT
KQpJbmRleDogU291cmNlL1dlYktpdDIvU2hhcmVkL1Byb2Nlc3NFeGVjdXRhYmxlUGF0aC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9Qcm9jZXNzRXhlY3V0YWJsZVBhdGgu
aAkocmV2aXNpb24gMTkyNjAxKQorKysgU291cmNlL1dlYktpdDIvU2hhcmVkL1Byb2Nlc3NFeGVj
dXRhYmxlUGF0aC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw5ICszMiw3IEBAIG5hbWVzcGFjZSBX
ZWJLaXQgewogCiBTdHJpbmcgZXhlY3V0YWJsZVBhdGhPZldlYlByb2Nlc3MoKTsKIFN0cmluZyBl
eGVjdXRhYmxlUGF0aE9mUGx1Z2luUHJvY2VzcygpOwotI2lmIEVOQUJMRShORVRXT1JLX1BST0NF
U1MpCiBTdHJpbmcgZXhlY3V0YWJsZVBhdGhPZk5ldHdvcmtQcm9jZXNzKCk7Ci0jZW5kaWYKICNp
ZiBFTkFCTEUoREFUQUJBU0VfUFJPQ0VTUykKIFN0cmluZyBleGVjdXRhYmxlUGF0aE9mRGF0YWJh
c2VQcm9jZXNzKCk7CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJQcm9j
ZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5jcHAJKHJldmlzaW9uIDE5MjYwMSkK
KysrIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNDMsOSArNDMsNiBAQCBXZWJQcm9jZXNzQ3JlYXRpb25QYXJh
bWV0ZXJzOjpXZWJQcm9jZXNzCiAgICAgLCBzaG91bGRFbmFibGVKSVQoZmFsc2UpCiAgICAgLCBz
aG91bGRFbmFibGVGVExKSVQoZmFsc2UpCiAjZW5kaWYKLSNpZiBFTkFCTEUoTkVUV09SS19QUk9D
RVNTKQotICAgICwgdXNlc05ldHdvcmtQcm9jZXNzKGZhbHNlKQotI2VuZGlmCiAgICAgLCBtZW1v
cnlDYWNoZURpc2FibGVkKGZhbHNlKQogI2lmIEVOQUJMRShTRVJWSUNFX0NPTlRST0xTKQogICAg
ICwgaGFzSW1hZ2VTZXJ2aWNlcyhmYWxzZSkKQEAgLTEzMywxMCArMTMwLDYgQEAgdm9pZCBXZWJQ
cm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOjplbmNvZAogICAgIGVuY29kZXIgPDwgbm90aWZpY2F0
aW9uUGVybWlzc2lvbnM7CiAjZW5kaWYKIAotI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCi0g
ICAgZW5jb2RlciA8PCB1c2VzTmV0d29ya1Byb2Nlc3M7Ci0jZW5kaWYKLQogICAgIGVuY29kZXIg
PDwgcGx1Z0luQXV0b1N0YXJ0T3JpZ2luSGFzaGVzOwogICAgIGVuY29kZXIgPDwgcGx1Z0luQXV0
b1N0YXJ0T3JpZ2luczsKICAgICBlbmNvZGVyIDw8IG1lbW9yeUNhY2hlRGlzYWJsZWQ7CkBAIC0y
OTEsMTEgKzI4NCw2IEBAIGJvb2wgV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyczo6ZGVjb2QK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogI2VuZGlmCiAKLSNpZiBFTkFCTEUoTkVUV09SS19QUk9D
RVNTKQotICAgIGlmICghZGVjb2Rlci5kZWNvZGUocGFyYW1ldGVycy51c2VzTmV0d29ya1Byb2Nl
c3MpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0jZW5kaWYKLQogICAgIGlmICghZGVjb2Rlci5k
ZWNvZGUocGFyYW1ldGVycy5wbHVnSW5BdXRvU3RhcnRPcmlnaW5IYXNoZXMpKQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShwYXJhbWV0ZXJzLnBsdWdJbkF1
dG9TdGFydE9yaWdpbnMpKQpJbmRleDogU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlByb2Nlc3ND
cmVhdGlvblBhcmFtZXRlcnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQv
V2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oCShyZXZpc2lvbiAxOTI2MDEpCisrKyBTb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oCSh3b3JraW5n
IGNvcHkpCkBAIC0xNTQsMTAgKzE1NCw2IEBAIHN0cnVjdCBXZWJQcm9jZXNzQ3JlYXRpb25QYXJh
bWV0ZXJzIHsKICAgICBIYXNoTWFwPFN0cmluZywgYm9vbD4gbm90aWZpY2F0aW9uUGVybWlzc2lv
bnM7CiAjZW5kaWYKIAotI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCi0gICAgYm9vbCB1c2Vz
TmV0d29ya1Byb2Nlc3M7Ci0jZW5kaWYKLQogICAgIEhhc2hNYXA8V2ViQ29yZTo6U2Vzc2lvbklE
LCBIYXNoTWFwPHVuc2lnbmVkLCBkb3VibGU+PiBwbHVnSW5BdXRvU3RhcnRPcmlnaW5IYXNoZXM7
CiAgICAgVmVjdG9yPFN0cmluZz4gcGx1Z0luQXV0b1N0YXJ0T3JpZ2luczsKIApJbmRleDogU291
cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9jL1dLRGVwcmVjYXRlZEZ1bmN0aW9ucy5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9jL1dLRGVwcmVjYXRlZEZ1bmN0aW9u
cy5jcHAJKHJldmlzaW9uIDE5MjYwMSkKKysrIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9X
S0RlcHJlY2F0ZWRGdW5jdGlvbnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw2ICsyNyw4IEBA
CiAKICNpbmNsdWRlICJBUElEaWN0aW9uYXJ5LmgiCiAjaW5jbHVkZSAiV0tBcnJheS5oIgorI2lu
Y2x1ZGUgIldLQ29udGV4dC5oIgorI2luY2x1ZGUgIldLQ29udGV4dFByaXZhdGUuaCIKICNpbmNs
dWRlICJXS011dGFibGVEaWN0aW9uYXJ5LmgiCiAjaW5jbHVkZSAiV0tQcmVmZXJlbmNlc1JlZlBy
aXZhdGUuaCIKICNpbmNsdWRlICJXS1NoYXJlZEFQSUNhc3QuaCIKQEAgLTEzNCw2ICsxMzYsMTkg
QEAgdm9pZCBXS0luc3BlY3RvclRvZ2dsZUphdmFTY3JpcHRQcm9maWxpbgogewogfQogCit2b2lk
IFdLQ29udGV4dFNldFByb2Nlc3NNb2RlbChXS0NvbnRleHRSZWYsIFdLUHJvY2Vzc01vZGVsKQor
eworfQorCitXS1Byb2Nlc3NNb2RlbCBXS0NvbnRleHRHZXRQcm9jZXNzTW9kZWwoV0tDb250ZXh0
UmVmKQoreworICAgIHJldHVybiBrV0tQcm9jZXNzTW9kZWxNdWx0aXBsZVNlY29uZGFyeVByb2Nl
c3NlczsKK30KKwordm9pZCBXS0NvbnRleHRTZXRVc2VzTmV0d29ya1Byb2Nlc3MoV0tDb250ZXh0
UmVmLCBib29sKQoreworfQorCiAjaWYgUExBVEZPUk0oTUFDKQogQ0dDb250ZXh0UmVmIFdLR3Jh
cGhpY3NDb250ZXh0R2V0Q0dDb250ZXh0KFdLR3JhcGhpY3NDb250ZXh0UmVmIGdyYXBoaWNzQ29u
dGV4dCkKIHsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9BdXRoZW50aWNhdGlvbi9BdXRo
ZW50aWNhdGlvbk1hbmFnZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1NoYXJl
ZC9BdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdGlvbk1hbmFnZXIuY3BwCShyZXZpc2lvbiAxOTI2
MDEpCisrKyBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQXV0aGVudGljYXRpb24vQXV0aGVudGljYXRp
b25NYW5hZ2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUg
IkNoaWxkUHJvY2Vzcy5oIgogI2luY2x1ZGUgIkRvd25sb2FkLmgiCiAjaW5jbHVkZSAiRG93bmxv
YWRQcm94eU1lc3NhZ2VzLmgiCisjaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3NQcm94eU1lc3NhZ2Vz
LmgiCiAjaW5jbHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCiAjaW5jbHVkZSAiV2ViRnJh
bWUuaCIKICNpbmNsdWRlICJXZWJQYWdlLmgiCkBAIC0zNywxMCArMzgsNiBAQAogI2luY2x1ZGUg
PFdlYkNvcmUvQXV0aGVudGljYXRpb25DaGFsbGVuZ2UuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0F1
dGhlbnRpY2F0aW9uQ2xpZW50Lmg+CiAKLSNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQotI2lu
Y2x1ZGUgIk5ldHdvcmtQcm9jZXNzUHJveHlNZXNzYWdlcy5oIgotI2VuZGlmCi0KIHVzaW5nIG5h
bWVzcGFjZSBXZWJDb3JlOwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTEyOCw3ICsxMjUsNiBA
QCB2b2lkIEF1dGhlbnRpY2F0aW9uTWFuYWdlcjo6ZGlkUmVjZWl2ZUF1CiAgICAgbV9wcm9jZXNz
LT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZShmcmFtZS0+ZnJhbWVJRCgpLCBhdXRoZW50aWNhdGlvbkNoYWxsZW5nZSwgY2hhbGxl
bmdlSUQpLCBmcmFtZS0+cGFnZSgpLT5wYWdlSUQoKSk7CiB9CiAKLSNpZiBFTkFCTEUoTkVUV09S
S19QUk9DRVNTKQogI2lmIFVTRShORVRXT1JLX1NFU1NJT04pCiB2b2lkIEF1dGhlbnRpY2F0aW9u
TWFuYWdlcjo6ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKHVpbnQ2NF90IHBhZ2VJ
RCwgdWludDY0X3QgZnJhbWVJRCwgY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmIGF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlLCBDaGFsbGVuZ2VDb21wbGV0aW9uSGFuZGxlciBjb21wbGV0aW9u
SGFuZGxlcikKIHsKQEAgLTE1Nyw3ICsxNTMsNiBAQCB2b2lkIEF1dGhlbnRpY2F0aW9uTWFuYWdl
cjo6ZGlkUmVjZWl2ZUF1CiAgICAgCiAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpOZXR3
b3JrUHJvY2Vzc1Byb3h5OjpEaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UocGFnZUlE
LCBmcmFtZUlELCBhdXRoZW50aWNhdGlvbkNoYWxsZW5nZSwgY2hhbGxlbmdlSUQpKTsKIH0KLSNl
bmRpZgogCiAjaWYgIVVTRShORVRXT1JLX1NFU1NJT04pCiB2b2lkIEF1dGhlbnRpY2F0aW9uTWFu
YWdlcjo6ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKERvd25sb2FkKiBkb3dubG9h
ZCwgY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmIGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
KQpJbmRleDogU291cmNlL1dlYktpdDIvU2hhcmVkL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDcmVh
dGlvblBhcmFtZXRlcnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9O
ZXR3b3JrL05ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcAkocmV2aXNpb24gMTky
NjAxKQorKysgU291cmNlL1dlYktpdDIvU2hhcmVkL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDcmVh
dGlvblBhcmFtZXRlcnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw4ICsyNiw2IEBACiAjaW5j
bHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRl
cnMuaCIKIAotI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCi0KICNpbmNsdWRlICJBcmd1bWVu
dENvZGVycy5oIgogCiAjaWYgUExBVEZPUk0oQ09DT0EpCkBAIC0xNjgsNSArMTY2LDMgQEAgYm9v
bCBOZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyczo6ZAogfQogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJLaXQKLQotI2VuZGlmIC8vIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCkluZGV4OiBTb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVy
cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9OZXR3b3JrL05ldHdvcmtQ
cm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmgJKHJldmlzaW9uIDE5MjYwMSkKKysrIFNvdXJjZS9X
ZWJLaXQyL1NoYXJlZC9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTI2LDggKzI2LDYgQEAKICNpZm5kZWYgTmV0d29ya1Byb2Nlc3ND
cmVhdGlvblBhcmFtZXRlcnNfaAogI2RlZmluZSBOZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1l
dGVyc19oCiAKLSNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQotCiAjaW5jbHVkZSAiQ2FjaGVN
b2RlbC5oIgogI2luY2x1ZGUgIlNhbmRib3hFeHRlbnNpb24uaCIKICNpbmNsdWRlIDx3dGYvVmVj
dG9yLmg+CkBAIC0xMDMsNiArMTAxLDQgQEAgc3RydWN0IE5ldHdvcmtQcm9jZXNzQ3JlYXRpb25Q
YXJhbWV0ZXJzIAogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAotI2VuZGlmIC8vIEVOQUJMRShO
RVRXT1JLX1BST0NFU1MpCi0KICNlbmRpZiAvLyBOZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1l
dGVyc19oCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvTmV0d29yay9OZXR3b3JrUHJvY2Vz
c1N1cHBsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvTmV0d29y
ay9OZXR3b3JrUHJvY2Vzc1N1cHBsZW1lbnQuaAkocmV2aXNpb24gMTkyNjAxKQorKysgU291cmNl
L1dlYktpdDIvU2hhcmVkL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NTdXBwbGVtZW50LmgJKHdvcmtp
bmcgY29weSkKQEAgLTMzLDEyICszMywxMCBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIHN0cnVjdCBO
ZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyczsKIAogY2xhc3MgTmV0d29ya1Byb2Nlc3NT
dXBwbGVtZW50IDogcHVibGljIENoaWxkUHJvY2Vzc1N1cHBsZW1lbnQgewotI2lmIEVOQUJMRShO
RVRXT1JLX1BST0NFU1MpCiBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGluaXRpYWxpemUoY29u
c3QgTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMmKQogICAgIHsKICAgICB9Ci0jZW5k
aWYKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApJbmRleDogU291cmNlL1dlYktpdDIvU2hh
cmVkL05ldHdvcmsvTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9OZXR3b3JrL05ldHdvcmtSZXNvdXJjZUxvYWRQYXJh
bWV0ZXJzLmNwcAkocmV2aXNpb24gMTkyNjAxKQorKysgU291cmNlL1dlYktpdDIvU2hhcmVkL05l
dHdvcmsvTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0zMCw4ICszMCw2IEBACiAjaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgIldl
YkNvcmVBcmd1bWVudENvZGVycy5oIgogCi0jaWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKLQog
dXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtMTYwLDUg
KzE1OCwzIEBAIGJvb2wgTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnM6OmRlY28KIH0KICAg
ICAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAotCi0jZW5kaWYgLy8gRU5BQkxFKE5FVFdPUktfUFJP
Q0VTUykKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9OZXR3b3JrL05ldHdvcmtSZXNvdXJj
ZUxvYWRQYXJhbWV0ZXJzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvU2hhcmVkL05l
dHdvcmsvTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMuaAkocmV2aXNpb24gMTkyNjAxKQor
KysgU291cmNlL1dlYktpdDIvU2hhcmVkL05ldHdvcmsvTmV0d29ya1Jlc291cmNlTG9hZFBhcmFt
ZXRlcnMuaAkod29ya2luZyBjb3B5KQpAQCAtMzIsOCArMzIsNiBAQAogI2luY2x1ZGUgPFdlYkNv
cmUvUmVzb3VyY2VSZXF1ZXN0Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZXNzaW9uSUQuaD4KIAot
I2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCi0KIG5hbWVzcGFjZSBJUEMgewogICAgIGNsYXNz
IEFyZ3VtZW50RGVjb2RlcjsKICAgICBjbGFzcyBBcmd1bWVudEVuY29kZXI7CkBAIC02OCw2ICs2
Niw0IEBAIHB1YmxpYzoKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKLSNlbmRpZiAvLyBFTkFC
TEUoTkVUV09SS19QUk9DRVNTKQotCiAjZW5kaWYgLy8gTmV0d29ya1Jlc291cmNlTG9hZFBhcmFt
ZXRlcnNfaApJbmRleDogU291cmNlL1dlYktpdDIvU2hhcmVkL05ldHdvcmsvQ3VzdG9tUHJvdG9j
b2xzL0N1c3RvbVByb3RvY29sTWFuYWdlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQy
L1NoYXJlZC9OZXR3b3JrL0N1c3RvbVByb3RvY29scy9DdXN0b21Qcm90b2NvbE1hbmFnZXIuaAko
cmV2aXNpb24gMTkyNjAxKQorKysgU291cmNlL1dlYktpdDIvU2hhcmVkL05ldHdvcmsvQ3VzdG9t
UHJvdG9jb2xzL0N1c3RvbVByb3RvY29sTWFuYWdlci5oCSh3b3JraW5nIGNvcHkpCkBAIC04Mywx
MCArODMsOCBAQCBwcml2YXRlOgogICAgIC8vIFdlYlByb2Nlc3NTdXBwbGVtZW50CiAgICAgdm9p
ZCBpbml0aWFsaXplKGNvbnN0IFdlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMmKSBvdmVycmlk
ZTsKIAotI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCiAgICAgLy8gTmV0d29ya1Byb2Nlc3NT
dXBwbGVtZW50CiAgICAgdm9pZCBpbml0aWFsaXplKGNvbnN0IE5ldHdvcmtQcm9jZXNzQ3JlYXRp
b25QYXJhbWV0ZXJzJikgb3ZlcnJpZGU7Ci0jZW5kaWYKIAogICAgIC8vIElQQzo6TWVzc2FnZVJl
Y2VpdmVyCiAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlv
biYsIElQQzo6TWVzc2FnZURlY29kZXImKSBvdmVycmlkZTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQy
L1NoYXJlZC9OZXR3b3JrL0N1c3RvbVByb3RvY29scy9Db2NvYS9DdXN0b21Qcm90b2NvbE1hbmFn
ZXJDb2NvYS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvTmV0d29yay9D
dXN0b21Qcm90b2NvbHMvQ29jb2EvQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ29jb2EubW0JKHJldmlz
aW9uIDE5MjYwMSkKKysrIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9OZXR3b3JrL0N1c3RvbVByb3Rv
Y29scy9Db2NvYS9DdXN0b21Qcm90b2NvbE1hbmFnZXJDb2NvYS5tbQkod29ya2luZyBjb3B5KQpA
QCAtMzAsNiArMzAsNyBAQAogI2ltcG9ydCAiQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyTWVzc2FnZXMu
aCIKICNpbXBvcnQgIkN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5TWVzc2FnZXMuaCIKICNpbXBv
cnQgIkRhdGFSZWZlcmVuY2UuaCIKKyNpbXBvcnQgIk5ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJh
bWV0ZXJzLmgiCiAjaW1wb3J0ICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIKICNpbXBvcnQgIldl
YlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaCIKICNpbXBvcnQgPFdlYkNvcmUvVVJMLmg+CkBA
IC0zNywxMCArMzgsNiBAQAogI2ltcG9ydCA8V2ViQ29yZS9SZXNvdXJjZVJlcXVlc3QuaD4KICNp
bXBvcnQgPFdlYkNvcmUvUmVzb3VyY2VSZXNwb25zZS5oPgogCi0jaWYgRU5BQkxFKE5FVFdPUktf
UFJPQ0VTUykKLSNpbXBvcnQgIk5ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmgiCi0j
ZW5kaWYKLQogI2lmZGVmIF9faGFzX2luY2x1ZGUKICNpZiBfX2hhc19pbmNsdWRlKDxGb3VuZGF0
aW9uL05TVVJMQ29ubmVjdGlvblByaXZhdGUuaD4pCiAjaW1wb3J0IDxGb3VuZGF0aW9uL05TVVJM
Q29ubmVjdGlvblByaXZhdGUuaD4KQEAgLTEzNywyMiArMTM0LDExIEBAIHZvaWQgQ3VzdG9tUHJv
dG9jb2xNYW5hZ2VyOjppbml0aWFsaXplQ28KIAogdm9pZCBDdXN0b21Qcm90b2NvbE1hbmFnZXI6
OmluaXRpYWxpemUoY29uc3QgV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycyYgcGFyYW1ldGVy
cykKIHsKLSNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQotICAgIEFTU0VSVChwYXJhbWV0ZXJz
LnVybFNjaGVtZXNSZWdpc3RlcmVkRm9yQ3VzdG9tUHJvdG9jb2xzLmlzRW1wdHkoKSB8fCAhcGFy
YW1ldGVycy51c2VzTmV0d29ya1Byb2Nlc3MpOwotICAgIGlmIChwYXJhbWV0ZXJzLnVzZXNOZXR3
b3JrUHJvY2VzcykgewotICAgICAgICBtX2NoaWxkUHJvY2Vzcy0+cGFyZW50UHJvY2Vzc0Nvbm5l
Y3Rpb24oKS0+cmVtb3ZlV29ya1F1ZXVlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpDdXN0b21Q
cm90b2NvbE1hbmFnZXI6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSk7Ci0gICAgICAgIG1fbWVzc2Fn
ZVF1ZXVlID0gbnVsbHB0cjsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSNlbmRpZgotCi0gICAg
W05TVVJMUHJvdG9jb2wgcmVnaXN0ZXJDbGFzczpbV0tDdXN0b21Qcm90b2NvbCBjbGFzc11dOwot
Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBwYXJhbWV0ZXJzLnVybFNjaGVtZXNSZWdpc3Rl
cmVkRm9yQ3VzdG9tUHJvdG9jb2xzLnNpemUoKTsgKytpKQotICAgICAgICByZWdpc3RlclNjaGVt
ZShwYXJhbWV0ZXJzLnVybFNjaGVtZXNSZWdpc3RlcmVkRm9yQ3VzdG9tUHJvdG9jb2xzW2ldKTsK
KyAgICBBU1NFUlQocGFyYW1ldGVycy51cmxTY2hlbWVzUmVnaXN0ZXJlZEZvckN1c3RvbVByb3Rv
Y29scy5pc0VtcHR5KCkpOworICAgIG1fY2hpbGRQcm9jZXNzLT5wYXJlbnRQcm9jZXNzQ29ubmVj
dGlvbigpLT5yZW1vdmVXb3JrUXVldWVNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OkN1c3RvbVBy
b3RvY29sTWFuYWdlcjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpKTsKKyAgICBtX21lc3NhZ2VRdWV1
ZSA9IG51bGxwdHI7CiB9CiAKLSNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQogdm9pZCBDdXN0
b21Qcm90b2NvbE1hbmFnZXI6OmluaXRpYWxpemUoY29uc3QgTmV0d29ya1Byb2Nlc3NDcmVhdGlv
blBhcmFtZXRlcnMmIHBhcmFtZXRlcnMpCiB7CiAgICAgW05TVVJMUHJvdG9jb2wgcmVnaXN0ZXJD
bGFzczpbV0tDdXN0b21Qcm90b2NvbCBjbGFzc11dOwpAQCAtMTYwLDcgKzE0Niw2IEBAIHZvaWQg
Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyOjppbml0aWFsaXplKGMKICAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IHBhcmFtZXRlcnMudXJsU2NoZW1lc1JlZ2lzdGVyZWRGb3JDdXN0b21Qcm90b2NvbHMu
c2l6ZSgpOyArK2kpCiAgICAgICAgIHJlZ2lzdGVyU2NoZW1lKHBhcmFtZXRlcnMudXJsU2NoZW1l
c1JlZ2lzdGVyZWRGb3JDdXN0b21Qcm90b2NvbHNbaV0pOwogfQotI2VuZGlmCiAKIHZvaWQgQ3Vz
dG9tUHJvdG9jb2xNYW5hZ2VyOjphZGRDdXN0b21Qcm90b2NvbChXS0N1c3RvbVByb3RvY29sICpj
dXN0b21Qcm90b2NvbCkKIHsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9OZXR3b3JrL0N1
c3RvbVByb3RvY29scy9zb3VwL0N1c3RvbVByb3RvY29sTWFuYWdlclNvdXAuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9OZXR3b3JrL0N1c3RvbVByb3RvY29scy9zb3Vw
L0N1c3RvbVByb3RvY29sTWFuYWdlclNvdXAuY3BwCShyZXZpc2lvbiAxOTI2MDEpCisrKyBTb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvTmV0d29yay9DdXN0b21Qcm90b2NvbHMvc291cC9DdXN0b21Qcm90
b2NvbE1hbmFnZXJTb3VwLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjMsMTMgKzIzLDEwIEBACiAj
aW5jbHVkZSAiQ2hpbGRQcm9jZXNzLmgiCiAjaW5jbHVkZSAiQ3VzdG9tUHJvdG9jb2xNYW5hZ2Vy
SW1wbC5oIgogI2luY2x1ZGUgIkN1c3RvbVByb3RvY29sTWFuYWdlck1lc3NhZ2VzLmgiCisjaW5j
bHVkZSAiTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaCIKICNpbmNsdWRlICJXZWJQ
cm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9Ob3RJbXBsZW1l
bnRlZC5oPgogCi0jaWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKLSNpbmNsdWRlICJOZXR3b3Jr
UHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oIgotI2VuZGlmCi0KIG5hbWVzcGFjZSBXZWJLaXQg
ewogCiBjb25zdCBjaGFyKiBDdXN0b21Qcm90b2NvbE1hbmFnZXI6OnN1cHBsZW1lbnROYW1lKCkK
QEAgLTUxLDI1ICs0OCwxNiBAQCB2b2lkIEN1c3RvbVByb3RvY29sTWFuYWdlcjo6aW5pdGlhbGl6
ZUNvCiAKIHZvaWQgQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyOjppbml0aWFsaXplKGNvbnN0IFdlYlBy
b2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMmIHBhcmFtZXRlcnMpCiB7Ci0jaWYgRU5BQkxFKE5FVFdP
UktfUFJPQ0VTUykKLSAgICBBU1NFUlQocGFyYW1ldGVycy51cmxTY2hlbWVzUmVnaXN0ZXJlZEZv
ckN1c3RvbVByb3RvY29scy5pc0VtcHR5KCkgfHwgIXBhcmFtZXRlcnMudXNlc05ldHdvcmtQcm9j
ZXNzKTsKLSAgICBpZiAocGFyYW1ldGVycy51c2VzTmV0d29ya1Byb2Nlc3MpIHsKLSAgICAgICAg
bV9jaGlsZFByb2Nlc3MtPnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnJlbW92ZVdvcmtRdWV1
ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyOjptZXNzYWdl
UmVjZWl2ZXJOYW1lKCkpOwotICAgICAgICBtX21lc3NhZ2VRdWV1ZSA9IG51bGxwdHI7Ci0gICAg
ICAgIHJldHVybjsKLSAgICB9Ci0jZW5kaWYKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHBh
cmFtZXRlcnMudXJsU2NoZW1lc1JlZ2lzdGVyZWRGb3JDdXN0b21Qcm90b2NvbHMuc2l6ZSgpOyAr
K2kpCi0gICAgICAgIHJlZ2lzdGVyU2NoZW1lKHBhcmFtZXRlcnMudXJsU2NoZW1lc1JlZ2lzdGVy
ZWRGb3JDdXN0b21Qcm90b2NvbHNbaV0pOworICAgIEFTU0VSVChwYXJhbWV0ZXJzLnVybFNjaGVt
ZXNSZWdpc3RlcmVkRm9yQ3VzdG9tUHJvdG9jb2xzLmlzRW1wdHkoKSk7CisgICAgbV9jaGlsZFBy
b2Nlc3MtPnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnJlbW92ZVdvcmtRdWV1ZU1lc3NhZ2VS
ZWNlaXZlcihNZXNzYWdlczo6Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyOjptZXNzYWdlUmVjZWl2ZXJO
YW1lKCkpOworICAgIG1fbWVzc2FnZVF1ZXVlID0gbnVsbHB0cjsKIH0KIAotI2lmIEVOQUJMRShO
RVRXT1JLX1BST0NFU1MpCiB2b2lkIEN1c3RvbVByb3RvY29sTWFuYWdlcjo6aW5pdGlhbGl6ZShj
b25zdCBOZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycyYgcGFyYW1ldGVycykKIHsKICAg
ICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHBhcmFtZXRlcnMudXJsU2NoZW1lc1JlZ2lzdGVyZWRG
b3JDdXN0b21Qcm90b2NvbHMuc2l6ZSgpOyArK2kpCiAgICAgICAgIHJlZ2lzdGVyU2NoZW1lKHBh
cmFtZXRlcnMudXJsU2NoZW1lc1JlZ2lzdGVyZWRGb3JDdXN0b21Qcm90b2NvbHNbaV0pOwogfQot
I2VuZGlmCiAKIHZvaWQgQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyOjpyZWdpc3RlclNjaGVtZShjb25z
dCBTdHJpbmcmIHNjaGVtZSkKIHsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9lZmwvUHJv
Y2Vzc0V4ZWN1dGFibGVQYXRoRWZsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvZWZsL1Byb2Nlc3NFeGVjdXRhYmxlUGF0aEVmbC5jcHAJKHJldmlzaW9uIDE5MjYwMSkK
KysrIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9lZmwvUHJvY2Vzc0V4ZWN1dGFibGVQYXRoRWZsLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtODEsMTQgKzgxLDEyIEBAIFN0cmluZyBleGVjdXRhYmxlUGF0
aE9mUGx1Z2luUHJvY2VzcygpCiAgICAgcmV0dXJuIHdlYktpdFBsdWdpblByb2Nlc3NOYW1lOwog
fQogCi0jaWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKIFN0cmluZyBleGVjdXRhYmxlUGF0aE9m
TmV0d29ya1Byb2Nlc3MoKQogewogICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxjb25zdCBTdHJp
bmc+IHdlYktpdE5ldHdvcmtQcm9jZXNzTmFtZShmaW5kUHJvY2Vzc1BhdGgoTkVUV09SS1BST0NF
U1NOQU1FKSk7CiAKICAgICByZXR1cm4gd2ViS2l0TmV0d29ya1Byb2Nlc3NOYW1lOwogfQotI2Vu
ZGlmCiAKICNpZiBFTkFCTEUoREFUQUJBU0VfUFJPQ0VTUykKIFN0cmluZyBleGVjdXRhYmxlUGF0
aE9mRGF0YWJhc2VQcm9jZXNzKCkKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9ndGsvUHJv
Y2Vzc0V4ZWN1dGFibGVQYXRoR3RrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvZ3RrL1Byb2Nlc3NFeGVjdXRhYmxlUGF0aEd0ay5jcHAJKHJldmlzaW9uIDE5MjYwMSkK
KysrIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9ndGsvUHJvY2Vzc0V4ZWN1dGFibGVQYXRoR3RrLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNzksMTIgKzc5LDEwIEBAIFN0cmluZyBleGVjdXRhYmxlUGF0
aE9mUGx1Z2luUHJvY2VzcygpCiAgICAgcmV0dXJuIGZpbmRXZWJLaXRQcm9jZXNzKCJXZWJLaXRQ
bHVnaW5Qcm9jZXNzIik7CiB9CiAKLSNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQogU3RyaW5n
IGV4ZWN1dGFibGVQYXRoT2ZOZXR3b3JrUHJvY2VzcygpCiB7CiAgICAgcmV0dXJuIGZpbmRXZWJL
aXRQcm9jZXNzKCJXZWJLaXROZXR3b3JrUHJvY2VzcyIpOwogfQotI2VuZGlmCiAKICNpZiBFTkFC
TEUoREFUQUJBU0VfUFJPQ0VTUykKIFN0cmluZyBleGVjdXRhYmxlUGF0aE9mRGF0YWJhc2VQcm9j
ZXNzKCkKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9tYWMvQ29va2llU3RvcmFnZVNoaW0u
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvbWFjL0Nvb2tpZVN0b3JhZ2VT
aGltLmgJKHJldmlzaW9uIDE5MjYwMSkKKysrIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9tYWMvQ29v
a2llU3RvcmFnZVNoaW0uaAkod29ya2luZyBjb3B5KQpAQCAtMjYsOCArMjYsNiBAQAogI2lmbmRl
ZiBDb29raWVTdG9yYWdlU2hpbV9oCiAjZGVmaW5lIENvb2tpZVN0b3JhZ2VTaGltX2gKIAotI2lm
IEVOQUJMRShORVRXT1JLX1BST0NFU1MpCi0KICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4K
ICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KIApAQCAtNDksNiArNDcsNCBAQCBwcml2
YXRlOgogCiB9CiAKLSNlbmRpZiAvLyBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQotCiAjZW5kaWYg
Ly8gQ29va2llU3RvcmFnZVNoaW1faApJbmRleDogU291cmNlL1dlYktpdDIvU2hhcmVkL21hYy9D
b29raWVTdG9yYWdlU2hpbS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQv
bWFjL0Nvb2tpZVN0b3JhZ2VTaGltLm1tCShyZXZpc2lvbiAxOTI2MDEpCisrKyBTb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvbWFjL0Nvb2tpZVN0b3JhZ2VTaGltLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0y
Niw4ICsyNiw2IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiQ29va2llU3RvcmFn
ZVNoaW0uaCIKIAotI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCi0KICNpbmNsdWRlICJDb29r
aWVTdG9yYWdlU2hpbUxpYnJhcnkuaCIKICNpbmNsdWRlICJOZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzcy5oIgogI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5oIgpAQCAtMTM1
LDUgKzEzMywzIEBAIC0gKHZvaWQpX2dldENvb2tpZUhlYWRlcnNGb3JUYXNrOihOU1VSTFMKIH0K
IAogQGVuZAotCi0jZW5kaWYgLy8gRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9tYWMvQ29va2llU3RvcmFnZVNoaW1MaWJyYXJ5LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvbWFjL0Nvb2tpZVN0b3JhZ2VTaGltTGlicmFy
eS5jcHAJKHJldmlzaW9uIDE5MjYwMSkKKysrIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9tYWMvQ29v
a2llU3RvcmFnZVNoaW1MaWJyYXJ5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjYsNyArMjYsNyBA
QAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkNvb2tpZVN0b3JhZ2VTaGltTGlicmFy
eS5oIgogCi0jaWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykgJiYgIVBMQVRGT1JNKElPUykKKyNp
ZiAhUExBVEZPUk0oSU9TKQogCiAjaW5jbHVkZSA8V2ViQ29yZS9EeW5hbWljTGlua2VySW50ZXJw
b3NpbmcuaD4KIApAQCAtOTAsNCArOTAsNCBAQCB2b2lkIFdlYktpdENvb2tpZVN0b3JhZ2VTaGlt
SW5pdGlhbGl6ZShjCiAgICAgCiB9CiAKLSNlbmRpZiAvLyBFTkFCTEUoTkVUV09SS19QUk9DRVNT
KSAmJiAhUExBVEZPUk0oSU9TKQorI2VuZGlmIC8vICFQTEFURk9STShJT1MpCkluZGV4OiBTb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvbWFjL0Nvb2tpZVN0b3JhZ2VTaGltTGlicmFyeS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9tYWMvQ29va2llU3RvcmFnZVNoaW1MaWJyYXJ5
LmgJKHJldmlzaW9uIDE5MjYwMSkKKysrIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9tYWMvQ29va2ll
U3RvcmFnZVNoaW1MaWJyYXJ5LmgJKHdvcmtpbmcgY29weSkKQEAgLTI2LDggKzI2LDYgQEAKICNp
Zm5kZWYgQ29va2llU3RvcmFnZVNoaW1MaWJyYXJ5X2gKICNkZWZpbmUgQ29va2llU3RvcmFnZVNo
aW1MaWJyYXJ5X2gKIAotI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCi0KIHR5cGVkZWYgc3Ry
dWN0IE9wYXF1ZUNGSFRUUENvb2tpZVN0b3JhZ2UqICBDRkhUVFBDb29raWVTdG9yYWdlUmVmOwog
CiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTQwLDYgKzM4LDQgQEAgdHlwZWRlZiB2b2lkICgqQ29v
a2llU3RvcmFnZVNoaW1Jbml0aWFsaQogCiB9CiAKLSNlbmRpZiAvLyBFTkFCTEUoTkVUV09SS19Q
Uk9DRVNTKQotCiAjZW5kaWYgLy8gQ29va2llU3RvcmFnZVNoaW1MaWJyYXJ5X2gKSW5kZXg6IFNv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Qcm9jZXNzTW9kZWwuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvUHJvY2Vzc01vZGVsLmgJKHJldmlzaW9uIDE5MjYwMSkKKysr
IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Qcm9jZXNzTW9kZWwuaAkod29ya2luZyBjb3B5KQpA
QCAtMSwzOCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJl
IG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBQcm9jZXNzTW9kZWxfaAotI2Rl
ZmluZSBQcm9jZXNzTW9kZWxfaAotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQotZW51bSBQcm9jZXNz
TW9kZWwgewotICAgIFByb2Nlc3NNb2RlbFNoYXJlZFNlY29uZGFyeVByb2Nlc3MsCi0gICAgUHJv
Y2Vzc01vZGVsTXVsdGlwbGVTZWNvbmRhcnlQcm9jZXNzZXMKLX07Ci0KLX0gLy8gbmFtZXNwYWNl
IFdlYktpdAotCi0jZW5kaWYgLy8gUHJvY2Vzc01vZGVsX2gKSW5kZXg6IFNvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9XZWJDb29raWVNYW5hZ2VyUHJveHkuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb29raWVNYW5hZ2VyUHJveHkuY3BwCShyZXZpc2lvbiAx
OTI2MDEpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29va2llTWFuYWdlclByb3h5
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtODUsOCArODUsOCBAQCB2b2lkIFdlYkNvb2tpZU1hbmFn
ZXJQcm94eTo6cHJvY2Vzc0RpZENsCiAKIGJvb2wgV2ViQ29va2llTWFuYWdlclByb3h5OjpzaG91
bGRUZXJtaW5hdGUoV2ViUHJvY2Vzc1Byb3h5KikgY29uc3QKIHsKLSAgICByZXR1cm4gcHJvY2Vz
c1Bvb2woKS0+cHJvY2Vzc01vZGVsKCkgIT0gUHJvY2Vzc01vZGVsU2hhcmVkU2Vjb25kYXJ5UHJv
Y2VzcwotICAgICAgICB8fCAobV9hcnJheUNhbGxiYWNrcy5pc0VtcHR5KCkgJiYgbV9odHRwQ29v
a2llQWNjZXB0UG9saWN5Q2FsbGJhY2tzLmlzRW1wdHkoKSk7CisgICAgLy8gRklYTUU6IFJlbW92
ZSB0aGlzLgorICAgIHJldHVybiB0cnVlOwogfQogCiB2b2lkIFdlYkNvb2tpZU1hbmFnZXJQcm94
eTo6cmVmV2ViQ29udGV4dFN1cHBsZW1lbnQoKQpAQCAtMTYzLDEwICsxNjMsNyBAQCB2b2lkIFdl
YkNvb2tpZU1hbmFnZXJQcm94eTo6c2V0SFRUUENvb2tpCiAgICAgLy8gLSBXaGVuIHRlc3Rpbmcs
IHdlIG9ubHkgaGF2ZSBvbmUgV2ViUHJvY2VzcyBhbmQgb25lIE5ldHdvcmtQcm9jZXNzLCBhbmQg
V2ViS2l0VGVzdFJ1bm5lciBuZXZlciByZXN0YXJ0cyB0aGVtOwogICAgIC8vIC0gV2hlbiBub3Qg
dGVzdGluZywgQ29jb2EgaGFzIHRoZSBwb2xpY3kgcGVyc2lzdGVkLCBhbmQgdGh1cyBuZXcgcHJv
Y2Vzc2VzIHVzZSBpdCAoZXZlbiBmb3IgZXBoZW1lcmFsIHNlc3Npb25zKS4KICAgICBwcm9jZXNz
UG9vbCgpLT5zZW5kVG9BbGxQcm9jZXNzZXMoTWVzc2FnZXM6OldlYkNvb2tpZU1hbmFnZXI6OlNl
dEhUVFBDb29raWVBY2NlcHRQb2xpY3kocG9saWN5KSk7Ci0jaWYgRU5BQkxFKE5FVFdPUktfUFJP
Q0VTUykKLSAgICBpZiAocHJvY2Vzc1Bvb2woKS0+dXNlc05ldHdvcmtQcm9jZXNzKCkpCi0gICAg
ICAgIHByb2Nlc3NQb29sKCktPnNlbmRUb05ldHdvcmtpbmdQcm9jZXNzKE1lc3NhZ2VzOjpXZWJD
b29raWVNYW5hZ2VyOjpTZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KHBvbGljeSkpOwotI2VuZGlm
CisgICAgcHJvY2Vzc1Bvb2woKS0+c2VuZFRvTmV0d29ya2luZ1Byb2Nlc3MoTWVzc2FnZXM6Oldl
YkNvb2tpZU1hbmFnZXI6OlNldEhUVFBDb29raWVBY2NlcHRQb2xpY3kocG9saWN5KSk7CiB9CiAK
IHZvaWQgV2ViQ29va2llTWFuYWdlclByb3h5OjpnZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KHN0
ZDo6ZnVuY3Rpb248dm9pZCAoSFRUUENvb2tpZUFjY2VwdFBvbGljeSwgQ2FsbGJhY2tCYXNlOjpF
cnJvcik+IGNhbGxiYWNrRnVuY3Rpb24pCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
V2ViSW5zcGVjdG9yUHJveHkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9XZWJJbnNwZWN0b3JQcm94eS5jcHAJKHJldmlzaW9uIDE5MjYwMSkKKysrIFNvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9XZWJJbnNwZWN0b3JQcm94eS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTMxMiw3ICszMTIsNiBAQCBXZWJQcm9jZXNzUG9vbCYgV2ViSW5zcGVjdG9yUHJveHk6Omluc3Bl
CiAgICAgLy8gZ3VhcmFudGVlcyBubyBwcm9jZXNzIHNoYXJpbmcgZm9yIG91ciB1c2VyIGludGVy
ZmFjZS4KICAgICBpZiAoIXNfcHJvY2Vzc1Bvb2wpIHsKICAgICAgICAgYXV0byBjb25maWd1cmF0
aW9uID0gQVBJOjpQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb246OmNyZWF0ZVdpdGhMZWdhY3lPcHRp
b25zKCk7Ci0gICAgICAgIGNvbmZpZ3VyYXRpb24tPnNldFByb2Nlc3NNb2RlbChQcm9jZXNzTW9k
ZWxNdWx0aXBsZVNlY29uZGFyeVByb2Nlc3Nlcyk7CiAgICAgICAgIHNfcHJvY2Vzc1Bvb2wgPSAm
V2ViUHJvY2Vzc1Bvb2w6OmNyZWF0ZShjb25maWd1cmF0aW9uLmdldCgpKS5sZWFrUmVmKCk7CiAg
ICAgfTsKIApJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAJ
KHJldmlzaW9uIDE5MjYwMSkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02MCw2ICs2MCw3IEBACiAjaW5jbHVkZSAiTmF0aXZl
V2ViTW91c2VFdmVudC5oIgogI2luY2x1ZGUgIk5hdGl2ZVdlYldoZWVsRXZlbnQuaCIKICNpbmNs
dWRlICJOYXZpZ2F0aW9uQWN0aW9uRGF0YS5oIgorI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzTWVz
c2FnZXMuaCIKICNpbmNsdWRlICJOb3RpZmljYXRpb25QZXJtaXNzaW9uUmVxdWVzdC5oIgogI2lu
Y2x1ZGUgIk5vdGlmaWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlci5oIgogI2luY2x1ZGUg
IlBhZ2VDbGllbnQuaCIKQEAgLTEzOCwxMCArMTM5LDYgQEAKICNpbmNsdWRlIDx3dGYvUmVmQ291
bnRlZExlYWtDb3VudGVyLmg+CiAjZW5kaWYKIAotI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1Mp
Ci0jaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3NNZXNzYWdlcy5oIgotI2VuZGlmCi0KICNpZiBQTEFU
Rk9STShDT0NPQSkKICNpbmNsdWRlICJSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5Lmgi
CiAjaW5jbHVkZSAiUmVtb3RlTGF5ZXJUcmVlU2Nyb2xsaW5nUGVyZm9ybWFuY2VEYXRhLmgiCkBA
IC00ODcsMTAgKzQ4NCw4IEBAIFdlYlBhZ2VQcm94eTo6V2ViUGFnZVByb3h5KFBhZ2VDbGllbnQm
IHAKIAogICAgIG1fcHJvY2Vzcy0+YWRkTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJQYWdl
UHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9wYWdlSUQsICp0aGlzKTsKIAotI2lmIEVO
QUJMRShORVRXT1JLX1BST0NFU1MpCiAgICAgaWYgKG1fc2Vzc2lvbklELmlzRXBoZW1lcmFsKCkp
CiAgICAgICAgIG1fcHJvY2Vzcy0+cHJvY2Vzc1Bvb2woKS5zZW5kVG9OZXR3b3JraW5nUHJvY2Vz
cyhNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OkVuc3VyZVByaXZhdGVCcm93c2luZ1Nlc3Npb24o
bV9zZXNzaW9uSUQpKTsKLSNlbmRpZgogCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgY29uc3Qg
Q0ZJbmRleCB2aWV3U3RhdGVDaGFuZ2VSdW5Mb29wT3JkZXIgPSAoQ0ZJbmRleClSdW5Mb29wT2Jz
ZXJ2ZXI6OldlbGxLbm93blJ1bkxvb3BPcmRlcnM6OkNvcmVBbmltYXRpb25Db21taXQgLSAxOwpA
QCAtNjk2LDEwICs2OTEsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cmVhdHRhY2hUb1dlYlByb2Nl
c3MoCiAgICAgbV9wcm9jZXNzLT5yZW1vdmVXZWJQYWdlKG1fcGFnZUlEKTsKICAgICBtX3Byb2Nl
c3MtPnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6V2ViUGFnZVByb3h5OjptZXNzYWdl
UmVjZWl2ZXJOYW1lKCksIG1fcGFnZUlEKTsKIAotICAgIGlmIChtX3Byb2Nlc3MtPnByb2Nlc3NQ
b29sKCkucHJvY2Vzc01vZGVsKCkgPT0gUHJvY2Vzc01vZGVsU2hhcmVkU2Vjb25kYXJ5UHJvY2Vz
cykKLSAgICAgICAgbV9wcm9jZXNzID0gbV9wcm9jZXNzLT5wcm9jZXNzUG9vbCgpLmVuc3VyZVNo
YXJlZFdlYlByb2Nlc3MoKTsKLSAgICBlbHNlCi0gICAgICAgIG1fcHJvY2VzcyA9IG1fcHJvY2Vz
cy0+cHJvY2Vzc1Bvb2woKS5jcmVhdGVOZXdXZWJQcm9jZXNzUmVzcGVjdGluZ1Byb2Nlc3NDb3Vu
dExpbWl0KCk7CisgICAgbV9wcm9jZXNzID0gbV9wcm9jZXNzLT5wcm9jZXNzUG9vbCgpLmNyZWF0
ZU5ld1dlYlByb2Nlc3NSZXNwZWN0aW5nUHJvY2Vzc0NvdW50TGltaXQoKTsKIAogICAgIEFTU0VS
VChtX3Byb2Nlc3MtPnN0YXRlKCkgIT0gQ2hpbGRQcm9jZXNzUHJveHk6OlN0YXRlOjpUZXJtaW5h
dGVkKTsKICAgICBpZiAobV9wcm9jZXNzLT5zdGF0ZSgpID09IENoaWxkUHJvY2Vzc1Byb3h5OjpT
dGF0ZTo6UnVubmluZykKQEAgLTc3NCwxMCArNzY2LDggQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNl
dFNlc3Npb25JRChTZXNzaW9uSQogICAgIG1fc2Vzc2lvbklEID0gc2Vzc2lvbklEOwogICAgIG1f
cHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0U2Vzc2lvbklEKHNlc3Npb25JRCks
IG1fcGFnZUlEKTsKIAotI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCiAgICAgaWYgKHNlc3Np
b25JRC5pc0VwaGVtZXJhbCgpKQogICAgICAgICBtX3Byb2Nlc3MtPnByb2Nlc3NQb29sKCkuc2Vu
ZFRvTmV0d29ya2luZ1Byb2Nlc3MoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpFbnN1cmVQcml2
YXRlQnJvd3NpbmdTZXNzaW9uKHNlc3Npb25JRCkpOwotI2VuZGlmCiB9CiAKIHZvaWQgV2ViUGFn
ZVByb3h5Ojppbml0aWFsaXplV2ViUGFnZSgpCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAJKHJldmlzaW9uIDE5MjYwMSkKKysrIFNvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM1LDYg
KzM1LDkgQEAKICNpbmNsdWRlICJEb3dubG9hZFByb3h5LmgiCiAjaW5jbHVkZSAiRG93bmxvYWRQ
cm94eU1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgorI2luY2x1ZGUgIk5ldHdvcmtQ
cm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmgiCisjaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3NNZXNz
YWdlcy5oIgorI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzUHJveHkuaCIKICNpbmNsdWRlICJTYW5k
Ym94RXh0ZW5zaW9uLmgiCiAjaW5jbHVkZSAiU3RhdGlzdGljc0RhdGEuaCIKICNpbmNsdWRlICJU
ZXh0Q2hlY2tlci5oIgpAQCAtNzgsMTEgKzgxLDYgQEAKICNpbmNsdWRlICJEYXRhYmFzZVByb2Nl
c3NNZXNzYWdlcy5oIgogI2VuZGlmCiAKLSNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQotI2lu
Y2x1ZGUgIk5ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmgiCi0jaW5jbHVkZSAiTmV0
d29ya1Byb2Nlc3NNZXNzYWdlcy5oIgotI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzUHJveHkuaCIK
LSNlbmRpZgogCiAjaWYgRU5BQkxFKFNFUlZJQ0VfQ09OVFJPTFMpCiAjaW5jbHVkZSAiU2Vydmlj
ZXNDb250cm9sbGVyLmgiCkBAIC0xMDUsOCArMTAzLDYgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYktp
dDsKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLXN0YXRpYyBjb25zdCBkb3VibGUgc2hhcmVkU2Vj
b25kYXJ5UHJvY2Vzc1NodXRkb3duVGltZW91dCA9IDYwOwotCiBERUZJTkVfREVCVUdfT05MWV9H
TE9CQUwoV1RGOjpSZWZDb3VudGVkTGVha0NvdW50ZXIsIHByb2Nlc3NQb29sQ291bnRlciwgKCJX
ZWJQcm9jZXNzUG9vbCIpKTsKIAogUmVmPFdlYlByb2Nlc3NQb29sPiBXZWJQcm9jZXNzUG9vbDo6
Y3JlYXRlKEFQSTo6UHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uJiBjb25maWd1cmF0aW9uKQpAQCAt
MTU5LDEwICsxNTUsOCBAQCBXZWJQcm9jZXNzUG9vbDo6V2ViUHJvY2Vzc1Bvb2woQVBJOjpQcm9j
CiAjZW5kaWYKICAgICAsIG1fc2hvdWxkVXNlVGVzdGluZ05ldHdvcmtTZXNzaW9uKGZhbHNlKQog
ICAgICwgbV9wcm9jZXNzVGVybWluYXRpb25FbmFibGVkKHRydWUpCi0jaWYgRU5BQkxFKE5FVFdP
UktfUFJPQ0VTUykKICAgICAsIG1fY2FuSGFuZGxlSFRUUFNTZXJ2ZXJUcnVzdEV2YWx1YXRpb24o
dHJ1ZSkKICAgICAsIG1fZGlkTmV0d29ya1Byb2Nlc3NDcmFzaChmYWxzZSkKLSNlbmRpZgogI2lm
IFVTRShTT1VQKQogICAgICwgbV9pZ25vcmVUTFNFcnJvcnModHJ1ZSkKICNlbmRpZgpAQCAtMjU0
LDEwICsyNDgsOCBAQCBXZWJQcm9jZXNzUG9vbDo6fldlYlByb2Nlc3NQb29sKCkKICAgICBwcm9j
ZXNzUG9vbENvdW50ZXIuZGVjcmVtZW50KCk7CiAjZW5kaWYKIAotI2lmIEVOQUJMRShORVRXT1JL
X1BST0NFU1MpCiAgICAgaWYgKG1fbmV0d29ya1Byb2Nlc3MpCiAgICAgICAgIG1fbmV0d29ya1By
b2Nlc3MtPnNodXREb3duUHJvY2VzcygpOwotI2VuZGlmCiB9CiAKIHZvaWQgV2ViUHJvY2Vzc1Bv
b2w6OmluaXRpYWxpemVDbGllbnQoY29uc3QgV0tDb250ZXh0Q2xpZW50QmFzZSogY2xpZW50KQpA
QCAtMjkxLDE3ICsyODMsNiBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpzZXREb3dubG9hZENsaWVu
dChzCiAgICAgICAgIG1fZG93bmxvYWRDbGllbnQgPSBXVEY6Om1vdmUoZG93bmxvYWRDbGllbnQp
OwogfQogCi12b2lkIFdlYlByb2Nlc3NQb29sOjpzZXRQcm9jZXNzTW9kZWwoUHJvY2Vzc01vZGVs
IHByb2Nlc3NNb2RlbCkKLXsKLSAgICAvLyBHdWFyZCBhZ2FpbnN0IEFQSSBtaXN1c2UuCi0gICAg
aWYgKCFtX3Byb2Nlc3Nlcy5pc0VtcHR5KCkpCi0gICAgICAgIENSQVNIKCk7Ci0gICAgaWYgKHBy
b2Nlc3NNb2RlbCAhPSBQcm9jZXNzTW9kZWxTaGFyZWRTZWNvbmRhcnlQcm9jZXNzICYmICFtX21l
c3NhZ2VzVG9JbmplY3RlZEJ1bmRsZVBvc3RlZFRvRW1wdHlDb250ZXh0LmlzRW1wdHkoKSkKLSAg
ICAgICAgQ1JBU0goKTsKLQotICAgIG1fY29uZmlndXJhdGlvbi0+c2V0UHJvY2Vzc01vZGVsKHBy
b2Nlc3NNb2RlbCk7Ci19Ci0KIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnNldE1heGltdW1OdW1iZXJP
ZlByb2Nlc3Nlcyh1bnNpZ25lZCBtYXhpbXVtTnVtYmVyT2ZQcm9jZXNzZXMpCiB7CiAgICAgLy8g
R3VhcmQgYWdhaW5zdCBBUEkgbWlzdXNlLgpAQCAtMzEzLDIzICsyOTQsNyBAQCB2b2lkIFdlYlBy
b2Nlc3NQb29sOjpzZXRNYXhpbXVtTnVtYmVyT2ZQCiAKIElQQzo6Q29ubmVjdGlvbiogV2ViUHJv
Y2Vzc1Bvb2w6Om5ldHdvcmtpbmdQcm9jZXNzQ29ubmVjdGlvbigpCiB7Ci0gICAgc3dpdGNoIChw
cm9jZXNzTW9kZWwoKSkgewotICAgIGNhc2UgUHJvY2Vzc01vZGVsU2hhcmVkU2Vjb25kYXJ5UHJv
Y2VzczoKLSNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQotICAgICAgICBpZiAodXNlc05ldHdv
cmtQcm9jZXNzKCkpCi0gICAgICAgICAgICByZXR1cm4gbV9uZXR3b3JrUHJvY2Vzcy0+Y29ubmVj
dGlvbigpOwotI2VuZGlmCi0gICAgICAgIHJldHVybiBtX3Byb2Nlc3Nlc1swXS0+Y29ubmVjdGlv
bigpOwotICAgIGNhc2UgUHJvY2Vzc01vZGVsTXVsdGlwbGVTZWNvbmRhcnlQcm9jZXNzZXM6Ci0j
aWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKLSAgICAgICAgQVNTRVJUKHVzZXNOZXR3b3JrUHJv
Y2VzcygpKTsKLSAgICAgICAgcmV0dXJuIG1fbmV0d29ya1Byb2Nlc3MtPmNvbm5lY3Rpb24oKTsK
LSNlbHNlCi0gICAgICAgIGJyZWFrOwotI2VuZGlmCi0gICAgfQotICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOwotICAgIHJldHVybiAwOworICAgIHJldHVybiBtX25ldHdvcmtQcm9jZXNzLT5jb25u
ZWN0aW9uKCk7CiB9CiAKIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6Omxhbmd1YWdlQ2hhbmdlZCh2b2lk
KiBjb250ZXh0KQpAQCAtMzQwLDggKzMwNSw4IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6Omxhbmd1
YWdlQ2hhbmdlZCh2b2kKIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6Omxhbmd1YWdlQ2hhbmdlZCgpCiB7
CiAgICAgc2VuZFRvQWxsUHJvY2Vzc2VzKE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpVc2VyUHJlZmVy
cmVkTGFuZ3VhZ2VzQ2hhbmdlZCh1c2VyUHJlZmVycmVkTGFuZ3VhZ2VzKCkpKTsKLSNpZiBVU0Uo
U09VUCkgJiYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKLSAgICBpZiAodXNlc05ldHdvcmtQcm9j
ZXNzKCkgJiYgbV9uZXR3b3JrUHJvY2VzcykKKyNpZiBVU0UoU09VUCkKKyAgICBpZiAobV9uZXR3
b3JrUHJvY2VzcykKICAgICAgICAgbV9uZXR3b3JrUHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6TmV0
d29ya1Byb2Nlc3M6OlVzZXJQcmVmZXJyZWRMYW5ndWFnZXNDaGFuZ2VkKHVzZXJQcmVmZXJyZWRM
YW5ndWFnZXMoKSksIDApOwogI2VuZGlmCiB9CkBAIC0zNTYsMjUgKzMyMSw2IEBAIHZvaWQgV2Vi
UHJvY2Vzc1Bvb2w6OnRleHRDaGVja2VyU3RhdGVDaGEKICAgICBzZW5kVG9BbGxQcm9jZXNzZXMo
TWVzc2FnZXM6OldlYlByb2Nlc3M6OlNldFRleHRDaGVja2VyU3RhdGUoVGV4dENoZWNrZXI6OnN0
YXRlKCkpKTsKIH0KIAotdm9pZCBXZWJQcm9jZXNzUG9vbDo6c2V0VXNlc05ldHdvcmtQcm9jZXNz
KGJvb2wgdXNlc05ldHdvcmtQcm9jZXNzKQotewotI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1Mp
Ci0gICAgbV9jb25maWd1cmF0aW9uLT5zZXRVc2VOZXR3b3JrUHJvY2Vzcyh1c2VzTmV0d29ya1By
b2Nlc3MpOwotI2Vsc2UKLSAgICBVTlVTRURfUEFSQU0odXNlc05ldHdvcmtQcm9jZXNzKTsKLSNl
bmRpZgotfQotCi1ib29sIFdlYlByb2Nlc3NQb29sOjp1c2VzTmV0d29ya1Byb2Nlc3MoKSBjb25z
dAotewotI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCi0gICAgcmV0dXJuIG1fY29uZmlndXJh
dGlvbi0+dXNlTmV0d29ya1Byb2Nlc3MoKTsKLSNlbHNlCi0gICAgcmV0dXJuIGZhbHNlOwotI2Vu
ZGlmCi19Ci0KLSNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQogTmV0d29ya1Byb2Nlc3NQcm94
eSYgV2ViUHJvY2Vzc1Bvb2w6OmVuc3VyZU5ldHdvcmtQcm9jZXNzKCkKIHsKICAgICBpZiAobV9u
ZXR3b3JrUHJvY2VzcykKQEAgLTQ1OSw3ICs0MDUsNiBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpn
ZXROZXR3b3JrUHJvY2Vzc0NvCiAKICAgICBtX25ldHdvcmtQcm9jZXNzLT5nZXROZXR3b3JrUHJv
Y2Vzc0Nvbm5lY3Rpb24ocmVwbHkpOwogfQotI2VuZGlmCiAKICNpZiBFTkFCTEUoREFUQUJBU0Vf
UFJPQ0VTUykKIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OmVuc3VyZURhdGFiYXNlUHJvY2VzcygpCkBA
IC01MjcsMTQgKzQ3MiwxMiBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpzZXRBbnlQYWdlR3JvdXBN
aWdoCiB7CiAgICAgbV9pY29uRGF0YWJhc2UtPnNldFByaXZhdGVCcm93c2luZ0VuYWJsZWQocHJp
dmF0ZUJyb3dzaW5nRW5hYmxlZCk7CiAKLSNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQotICAg
IGlmICh1c2VzTmV0d29ya1Byb2Nlc3MoKSAmJiBuZXR3b3JrUHJvY2VzcygpKSB7CisgICAgaWYg
KG5ldHdvcmtQcm9jZXNzKCkpIHsKICAgICAgICAgaWYgKHByaXZhdGVCcm93c2luZ0VuYWJsZWQp
CiAgICAgICAgICAgICBuZXR3b3JrUHJvY2VzcygpLT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJv
Y2Vzczo6RW5zdXJlUHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbihTZXNzaW9uSUQ6OmxlZ2FjeVByaXZh
dGVTZXNzaW9uSUQoKSksIDApOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBuZXR3b3JrUHJv
Y2VzcygpLT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6RGVzdHJveVByaXZhdGVCcm93
c2luZ1Nlc3Npb24oU2Vzc2lvbklEOjpsZWdhY3lQcml2YXRlU2Vzc2lvbklEKCkpLCAwKTsKICAg
ICB9Ci0jZW5kaWYgLy8gRU5BQkxFRChORVRXT1JLX1BST0NFU1MpCiAKICAgICBpZiAocHJpdmF0
ZUJyb3dzaW5nRW5hYmxlZCkKICAgICAgICAgc2VuZFRvQWxsUHJvY2Vzc2VzKE1lc3NhZ2VzOjpX
ZWJQcm9jZXNzOjpFbnN1cmVQcml2YXRlQnJvd3NpbmdTZXNzaW9uKFNlc3Npb25JRDo6bGVnYWN5
UHJpdmF0ZVNlc3Npb25JRCgpKSk7CkBAIC01NjksMjAgKzUxMiw5IEBAIHZvaWQgV2ViUHJvY2Vz
c1Bvb2w6OnByb2Nlc3NEaWRDYWNoZVBhZ2UKICAgICBtX3Byb2Nlc3NXaXRoUGFnZUNhY2hlID0g
cHJvY2VzczsKIH0KIAotV2ViUHJvY2Vzc1Byb3h5JiBXZWJQcm9jZXNzUG9vbDo6ZW5zdXJlU2hh
cmVkV2ViUHJvY2VzcygpCi17Ci0gICAgQVNTRVJUKHByb2Nlc3NNb2RlbCgpID09IFByb2Nlc3NN
b2RlbFNoYXJlZFNlY29uZGFyeVByb2Nlc3MpOwotICAgIGlmIChtX3Byb2Nlc3Nlcy5pc0VtcHR5
KCkpCi0gICAgICAgIGNyZWF0ZU5ld1dlYlByb2Nlc3MoKTsKLSAgICByZXR1cm4gKm1fcHJvY2Vz
c2VzWzBdOwotfQotCiBXZWJQcm9jZXNzUHJveHkmIFdlYlByb2Nlc3NQb29sOjpjcmVhdGVOZXdX
ZWJQcm9jZXNzKCkKIHsKLSNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQotICAgIGlmICh1c2Vz
TmV0d29ya1Byb2Nlc3MoKSkKLSAgICAgICAgZW5zdXJlTmV0d29ya1Byb2Nlc3MoKTsKLSNlbmRp
ZgorICAgIGVuc3VyZU5ldHdvcmtQcm9jZXNzKCk7CiAKICAgICBSZWY8V2ViUHJvY2Vzc1Byb3h5
PiBwcm9jZXNzID0gV2ViUHJvY2Vzc1Byb3h5OjpjcmVhdGUoKnRoaXMpOwogCkBAIC02NDYsNyAr
NTc4LDcgQEAgV2ViUHJvY2Vzc1Byb3h5JiBXZWJQcm9jZXNzUG9vbDo6Y3JlYXRlTgogICAgIC8v
IGljb25EYXRhYmFzZVBhdGggaXMgbm9uLWVtcHR5IGJ5IGRlZmF1bHQsIGJ1dCBtX2ljb25EYXRh
YmFzZSBpc24ndCBlbmFibGVkIGluIFVJIHByb2Nlc3MgdW5sZXNzIHNldERhdGFiYXNlUGF0aCBp
cyBjYWxsZWQgZXhwbGljaXRseS4KICAgICBwYXJhbWV0ZXJzLmljb25EYXRhYmFzZUVuYWJsZWQg
PSAhaWNvbkRhdGFiYXNlUGF0aCgpLmlzRW1wdHkoKTsKIAotICAgIHBhcmFtZXRlcnMudGVybWlu
YXRpb25UaW1lb3V0ID0gKHByb2Nlc3NNb2RlbCgpID09IFByb2Nlc3NNb2RlbFNoYXJlZFNlY29u
ZGFyeVByb2Nlc3MpID8gc2hhcmVkU2Vjb25kYXJ5UHJvY2Vzc1NodXRkb3duVGltZW91dCA6IDA7
CisgICAgcGFyYW1ldGVycy50ZXJtaW5hdGlvblRpbWVvdXQgPSAwOwogCiAgICAgcGFyYW1ldGVy
cy50ZXh0Q2hlY2tlclN0YXRlID0gVGV4dENoZWNrZXI6OnN0YXRlKCk7CiAKQEAgLTY1OSwxMCAr
NTkxLDYgQEAgV2ViUHJvY2Vzc1Byb3h5JiBXZWJQcm9jZXNzUG9vbDo6Y3JlYXRlTgogICAgIHN1
cHBsZW1lbnQ8V2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5PigpLT5wb3B1bGF0ZUNvcHlPZk5v
dGlmaWNhdGlvblBlcm1pc3Npb25zKHBhcmFtZXRlcnMubm90aWZpY2F0aW9uUGVybWlzc2lvbnMp
OwogI2VuZGlmCiAKLSNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQotICAgIHBhcmFtZXRlcnMu
dXNlc05ldHdvcmtQcm9jZXNzID0gdXNlc05ldHdvcmtQcm9jZXNzKCk7Ci0jZW5kaWYKLQogICAg
IHBhcmFtZXRlcnMucGx1Z0luQXV0b1N0YXJ0T3JpZ2luSGFzaGVzID0gbV9wbHVnSW5BdXRvU3Rh
cnRQcm92aWRlci5hdXRvU3RhcnRPcmlnaW5IYXNoZXNDb3B5KCk7CiAgICAgY29weVRvVmVjdG9y
KG1fcGx1Z0luQXV0b1N0YXJ0UHJvdmlkZXIuYXV0b1N0YXJ0T3JpZ2lucygpLCBwYXJhbWV0ZXJz
LnBsdWdJbkF1dG9TdGFydE9yaWdpbnMpOwogCkBAIC03MDYsMTUgKzYzNCw3IEBAIFdlYlByb2Nl
c3NQcm94eSYgV2ViUHJvY2Vzc1Bvb2w6OmNyZWF0ZU4KIAogICAgIG1fcHJvY2Vzc2VzLmFwcGVu
ZChwcm9jZXNzLnB0cigpKTsKIAotICAgIGlmIChwcm9jZXNzTW9kZWwoKSA9PSBQcm9jZXNzTW9k
ZWxTaGFyZWRTZWNvbmRhcnlQcm9jZXNzKSB7Ci0gICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
ICE9IG1fbWVzc2FnZXNUb0luamVjdGVkQnVuZGxlUG9zdGVkVG9FbXB0eUNvbnRleHQuc2l6ZSgp
OyArK2kpIHsKLSAgICAgICAgICAgIGF1dG8mIG1lc3NhZ2VOYW1lQW5kQm9keSA9IG1fbWVzc2Fn
ZXNUb0luamVjdGVkQnVuZGxlUG9zdGVkVG9FbXB0eUNvbnRleHRbaV07Ci0KLSAgICAgICAgICAg
IHByb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlByb2Nlc3M6OkhhbmRsZUluamVjdGVkQnVuZGxl
TWVzc2FnZShtZXNzYWdlTmFtZUFuZEJvZHkuZmlyc3QsIFVzZXJEYXRhKHByb2Nlc3MtPnRyYW5z
Zm9ybU9iamVjdHNUb0hhbmRsZXMobWVzc2FnZU5hbWVBbmRCb2R5LnNlY29uZC5nZXQoKSkuZ2V0
KCkpKSwgMCk7Ci0gICAgICAgIH0KLSAgICAgICAgbV9tZXNzYWdlc1RvSW5qZWN0ZWRCdW5kbGVQ
b3N0ZWRUb0VtcHR5Q29udGV4dC5jbGVhcigpOwotICAgIH0gZWxzZQotICAgICAgICBBU1NFUlQo
bV9tZXNzYWdlc1RvSW5qZWN0ZWRCdW5kbGVQb3N0ZWRUb0VtcHR5Q29udGV4dC5pc0VtcHR5KCkp
OworICAgIEFTU0VSVChtX21lc3NhZ2VzVG9JbmplY3RlZEJ1bmRsZVBvc3RlZFRvRW1wdHlDb250
ZXh0LmlzRW1wdHkoKSk7CiAKICNpZiBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKICAgICAvLyBJ
bml0aWFsaXplIHJlbW90ZSBpbnNwZWN0b3IgY29ubmVjdGlvbiBub3cgdGhhdCB3ZSBoYXZlIGEg
c3ViLXByb2Nlc3MgdGhhdCBpcyBob3N0aW5nIG9uZSBvZiBvdXIgd2ViIHZpZXdzLgpAQCAtNzk4
LDI4ICs3MTgsMTIgQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6ZGlzY29ubmVjdFByb2Nlc3MoVwog
CiAgICAgLy8gRklYTUUgKE11bHRpLVdlYlByb2Nlc3MpOiA8cmRhcjovL3Byb2JsZW0vMTIyMzk3
NjU+IFNvbWUgb2YgdGhlIGludmFsaWRhdGlvbiBjYWxscyBiZWxvdyBhcmUgc3RpbGwgbmVjZXNz
YXJ5IGluIG11bHRpLXByb2Nlc3MgbW9kZSwgYnV0IHRoZXkgc2hvdWxkIG9ubHkgYWZmZWN0IGRh
dGEgc3RydWN0dXJlcyBwZXJ0YWluaW5nIHRvIHRoZSBwcm9jZXNzIGJlaW5nIGRpc2Nvbm5lY3Rl
ZC4KICAgICAvLyBDbGVhcmluZyBldmVyeXRoaW5nIGNhdXNlcyBhc3NlcnRpb24gZmFpbHVyZXMs
IHNvIGl0J3MgbGVzcyB0cm91YmxlIHRvIHNraXAgdGhhdCBmb3Igbm93LgotICAgIGlmIChwcm9j
ZXNzTW9kZWwoKSAhPSBQcm9jZXNzTW9kZWxTaGFyZWRTZWNvbmRhcnlQcm9jZXNzKSB7Ci0gICAg
ICAgIFJlZlB0cjxXZWJQcm9jZXNzUHJveHk+IHByb3RlY3QocHJvY2Vzcyk7Ci0gICAgICAgIGlm
IChtX3Byb2Nlc3NXaXRoUGFnZUNhY2hlID09IHByb2Nlc3MpCi0gICAgICAgICAgICBtX3Byb2Nl
c3NXaXRoUGFnZUNhY2hlID0gMDsKLQotICAgICAgICBzdGF0aWNfY2FzdDxXZWJDb250ZXh0U3Vw
cGxlbWVudCo+KHN1cHBsZW1lbnQ8V2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk+KCkpLT5wcm9j
ZXNzRGlkQ2xvc2UocHJvY2Vzcyk7Ci0KLSAgICAgICAgbV9wcm9jZXNzZXMucmVtb3ZlRmlyc3Qo
cHJvY2Vzcyk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBXZWJDb250ZXh0U3VwcGxl
bWVudE1hcDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBtX3N1cHBsZW1lbnRzLmJlZ2luKCk7Ci0gICAg
V2ViQ29udGV4dFN1cHBsZW1lbnRNYXA6OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IG1fc3VwcGxlbWVu
dHMuZW5kKCk7Ci0gICAgZm9yICg7IGl0ICE9IGVuZDsgKytpdCkKLSAgICAgICAgaXQtPnZhbHVl
LT5wcm9jZXNzRGlkQ2xvc2UocHJvY2Vzcyk7Ci0KLSAgICAvLyBUaGUgdmVjdG9yIG1heSBoYXZl
IHRoZSBsYXN0IHJlZmVyZW5jZSB0byBwcm9jZXNzIHByb3h5LCB3aGljaCBpbiB0dXJuIG1heSBo
YXZlIHRoZSBsYXN0IHJlZmVyZW5jZSB0byB0aGUgY29udGV4dC4KLSAgICAvLyBTaW5jZSB2ZWN0
b3IgZWxlbWVudHMgYXJlIGRlc3Ryb3llZCBpbiBwbGFjZSwgd2Ugd291bGQgcmVjdXJzZSBpbnRv
IFdlYlByb2Nlc3NQcm94eSBkZXN0cnVjdG9yCi0gICAgLy8gaWYgaXQgd2VyZSBpbnZva2VkIGZy
b20gVmVjdG9yOjpyZW1vdmUoKS4gUmVmUHRyIGRlbGF5cyBkZXN0cnVjdGlvbiB1bnRpbCBpdCdz
IHNhZmUuCiAgICAgUmVmUHRyPFdlYlByb2Nlc3NQcm94eT4gcHJvdGVjdChwcm9jZXNzKTsKICAg
ICBpZiAobV9wcm9jZXNzV2l0aFBhZ2VDYWNoZSA9PSBwcm9jZXNzKQotICAgICAgICBtX3Byb2Nl
c3NXaXRoUGFnZUNhY2hlID0gbnVsbHB0cjsKKyAgICAgICAgbV9wcm9jZXNzV2l0aFBhZ2VDYWNo
ZSA9IDA7CisKKyAgICBzdGF0aWNfY2FzdDxXZWJDb250ZXh0U3VwcGxlbWVudCo+KHN1cHBsZW1l
bnQ8V2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk+KCkpLT5wcm9jZXNzRGlkQ2xvc2UocHJvY2Vz
cyk7CisKICAgICBtX3Byb2Nlc3Nlcy5yZW1vdmVGaXJzdChwcm9jZXNzKTsKIH0KIApAQCAtODUx
LDE4ICs3NTUsMTQgQEAgUmVmPFdlYlBhZ2VQcm94eT4gV2ViUHJvY2Vzc1Bvb2w6OmNyZWF0ZQog
ICAgIH0KIAogICAgIFJlZlB0cjxXZWJQcm9jZXNzUHJveHk+IHByb2Nlc3M7Ci0gICAgaWYgKHBy
b2Nlc3NNb2RlbCgpID09IFByb2Nlc3NNb2RlbFNoYXJlZFNlY29uZGFyeVByb2Nlc3MpIHsKLSAg
ICAgICAgcHJvY2VzcyA9ICZlbnN1cmVTaGFyZWRXZWJQcm9jZXNzKCk7Ci0gICAgfSBlbHNlIHsK
LSAgICAgICAgaWYgKG1faGF2ZUluaXRpYWxFbXB0eVByb2Nlc3MpIHsKLSAgICAgICAgICAgIHBy
b2Nlc3MgPSBtX3Byb2Nlc3Nlcy5sYXN0KCk7Ci0gICAgICAgICAgICBtX2hhdmVJbml0aWFsRW1w
dHlQcm9jZXNzID0gZmFsc2U7Ci0gICAgICAgIH0gZWxzZSBpZiAocGFnZUNvbmZpZ3VyYXRpb24t
PnJlbGF0ZWRQYWdlKCkpIHsKLSAgICAgICAgICAgIC8vIFNoYXJpbmcgcHJvY2Vzc2VzLCBlLmcu
IHdoZW4gY3JlYXRpbmcgdGhlIHBhZ2UgdmlhIHdpbmRvdy5vcGVuKCkuCi0gICAgICAgICAgICBw
cm9jZXNzID0gJnBhZ2VDb25maWd1cmF0aW9uLT5yZWxhdGVkUGFnZSgpLT5wcm9jZXNzKCk7Ci0g
ICAgICAgIH0gZWxzZQotICAgICAgICAgICAgcHJvY2VzcyA9ICZjcmVhdGVOZXdXZWJQcm9jZXNz
UmVzcGVjdGluZ1Byb2Nlc3NDb3VudExpbWl0KCk7Ci0gICAgfQorICAgIGlmIChtX2hhdmVJbml0
aWFsRW1wdHlQcm9jZXNzKSB7CisgICAgICAgIHByb2Nlc3MgPSBtX3Byb2Nlc3Nlcy5sYXN0KCk7
CisgICAgICAgIG1faGF2ZUluaXRpYWxFbXB0eVByb2Nlc3MgPSBmYWxzZTsKKyAgICB9IGVsc2Ug
aWYgKHBhZ2VDb25maWd1cmF0aW9uLT5yZWxhdGVkUGFnZSgpKSB7CisgICAgICAgIC8vIFNoYXJp
bmcgcHJvY2Vzc2VzLCBlLmcuIHdoZW4gY3JlYXRpbmcgdGhlIHBhZ2UgdmlhIHdpbmRvdy5vcGVu
KCkuCisgICAgICAgIHByb2Nlc3MgPSAmcGFnZUNvbmZpZ3VyYXRpb24tPnJlbGF0ZWRQYWdlKCkt
PnByb2Nlc3MoKTsKKyAgICB9IGVsc2UKKyAgICAgICAgcHJvY2VzcyA9ICZjcmVhdGVOZXdXZWJQ
cm9jZXNzUmVzcGVjdGluZ1Byb2Nlc3NDb3VudExpbWl0KCk7CiAKICAgICByZXR1cm4gcHJvY2Vz
cy0+Y3JlYXRlV2ViUGFnZShwYWdlQ2xpZW50LCBXVEY6Om1vdmUocGFnZUNvbmZpZ3VyYXRpb24p
KTsKIH0KQEAgLTg3MCwxOCArNzcwLDE2IEBAIFJlZjxXZWJQYWdlUHJveHk+IFdlYlByb2Nlc3NQ
b29sOjpjcmVhdGUKIERvd25sb2FkUHJveHkqIFdlYlByb2Nlc3NQb29sOjpkb3dubG9hZChXZWJQ
YWdlUHJveHkqIGluaXRpYXRpbmdQYWdlLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3Qp
CiB7CiAgICAgRG93bmxvYWRQcm94eSogZG93bmxvYWRQcm94eSA9IGNyZWF0ZURvd25sb2FkUHJv
eHkocmVxdWVzdCk7Ci0gICAgdWludDY0X3QgaW5pdGlhdGluZ1BhZ2VJRCA9IGluaXRpYXRpbmdQ
YWdlID8gaW5pdGlhdGluZ1BhZ2UtPnBhZ2VJRCgpIDogMDsKICAgICBTZXNzaW9uSUQgc2Vzc2lv
bklEID0gaW5pdGlhdGluZ1BhZ2UgPyBpbml0aWF0aW5nUGFnZS0+c2Vzc2lvbklEKCkgOiBTZXNz
aW9uSUQ6OmRlZmF1bHRTZXNzaW9uSUQoKTsKIAotI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1Mp
Ci0gICAgaWYgKHVzZXNOZXR3b3JrUHJvY2VzcygpICYmIG5ldHdvcmtQcm9jZXNzKCkpIHsKKyAg
ICBpZiAobmV0d29ya1Byb2Nlc3MoKSkgewogICAgICAgICAvLyBGSVhNRSAoTmV0d29ya1Byb2Nl
c3MpOiBSZXBsaWNhdGUgd2hhdGV2ZXIgRnJhbWVMb2FkZXI6OnNldE9yaWdpbmFsVVJMRm9yRG93
bmxvYWRSZXF1ZXN0IGRvZXMgd2l0aCB0aGUgcmVxdWVzdCBoZXJlLgogICAgICAgICBuZXR3b3Jr
UHJvY2VzcygpLT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6RG93bmxvYWRSZXF1ZXN0
KHNlc3Npb25JRCwgZG93bmxvYWRQcm94eS0+ZG93bmxvYWRJRCgpLCByZXF1ZXN0KSwgMCk7CiAg
ICAgICAgIHJldHVybiBkb3dubG9hZFByb3h5OwogICAgIH0KLSNlbmRpZgogCi0gICAgbV9wcm9j
ZXNzZXNbMF0tPnNlbmQoTWVzc2FnZXM6OldlYlByb2Nlc3M6OkRvd25sb2FkUmVxdWVzdChzZXNz
aW9uSUQsIGRvd25sb2FkUHJveHktPmRvd25sb2FkSUQoKSwgaW5pdGlhdGluZ1BhZ2VJRCwgcmVx
dWVzdCksIDApOworICAgIC8vIEZJWE1FOiBtYWtlIG5ldHdvcmtQcm9jZXNzKCkgcmV0dXJuIGEg
cmVmZXJlbmNlIHNvIHRoaXMgaXMgbm90IG5lY2Vzc2FyeS4KKyAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKICAgICByZXR1cm4gZG93bmxvYWRQcm94eTsKIH0KIApAQCAtODkzLDI1ICs3OTEsMTgg
QEAgRG93bmxvYWRQcm94eSogV2ViUHJvY2Vzc1Bvb2w6OnJlc3VtZURvdwogICAgIGlmICghcGF0
aC5pc0VtcHR5KCkpCiAgICAgICAgIFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZShwYXRo
LCBTYW5kYm94RXh0ZW5zaW9uOjpSZWFkV3JpdGUsIHNhbmRib3hFeHRlbnNpb25IYW5kbGUpOwog
Ci0jaWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKLSAgICBpZiAodXNlc05ldHdvcmtQcm9jZXNz
KCkgJiYgbmV0d29ya1Byb2Nlc3MoKSkgeworICAgIGlmIChuZXR3b3JrUHJvY2VzcygpKSB7CiAg
ICAgICAgIG5ldHdvcmtQcm9jZXNzKCktPnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpS
ZXN1bWVEb3dubG9hZChkb3dubG9hZFByb3h5LT5kb3dubG9hZElEKCksIHJlc3VtZURhdGEtPmRh
dGFSZWZlcmVuY2UoKSwgcGF0aCwgc2FuZGJveEV4dGVuc2lvbkhhbmRsZSksIDApOwogICAgICAg
ICByZXR1cm4gZG93bmxvYWRQcm94eTsKICAgICB9Ci0jZW5kaWYKIAotICAgIG1fcHJvY2Vzc2Vz
WzBdLT5zZW5kKE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpSZXN1bWVEb3dubG9hZChkb3dubG9hZFBy
b3h5LT5kb3dubG9hZElEKCksIHJlc3VtZURhdGEtPmRhdGFSZWZlcmVuY2UoKSwgcGF0aCwgc2Fu
ZGJveEV4dGVuc2lvbkhhbmRsZSksIDApOworICAgIC8vIEZJWE1FOiBtYWtlIG5ldHdvcmtQcm9j
ZXNzKCkgcmV0dXJuIGEgcmVmZXJlbmNlIHNvIHRoaXMgaXMgbm90IG5lY2Vzc2FyeS4KKyAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICByZXR1cm4gZG93bmxvYWRQcm94eTsKIH0KIAogdm9p
ZCBXZWJQcm9jZXNzUG9vbDo6cG9zdE1lc3NhZ2VUb0luamVjdGVkQnVuZGxlKGNvbnN0IFN0cmlu
ZyYgbWVzc2FnZU5hbWUsIEFQSTo6T2JqZWN0KiBtZXNzYWdlQm9keSkKIHsKLSAgICBpZiAobV9w
cm9jZXNzZXMuaXNFbXB0eSgpKSB7Ci0gICAgICAgIGlmIChwcm9jZXNzTW9kZWwoKSA9PSBQcm9j
ZXNzTW9kZWxTaGFyZWRTZWNvbmRhcnlQcm9jZXNzKQotICAgICAgICAgICAgbV9tZXNzYWdlc1Rv
SW5qZWN0ZWRCdW5kbGVQb3N0ZWRUb0VtcHR5Q29udGV4dC5hcHBlbmQoc3RkOjptYWtlX3BhaXIo
bWVzc2FnZU5hbWUsIG1lc3NhZ2VCb2R5KSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KICAg
ICBmb3IgKGF1dG8mIHByb2Nlc3MgOiBtX3Byb2Nlc3NlcykgewogICAgICAgICAvLyBGSVhNRTog
UmV0dXJuIGVhcmx5IGlmIHRoZSBtZXNzYWdlIGJvZHkgY29udGFpbnMgYW55IHJlZmVyZW5jZXMg
dG8gV0tQYWdlUmVmcy9XS0ZyYW1lUmVmcyBldGMuIHNpbmNlIHRoZXkncmUgbG9jYWwgdG8gYSBw
cm9jZXNzLgogICAgICAgICBwcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpIYW5k
bGVJbmplY3RlZEJ1bmRsZU1lc3NhZ2UobWVzc2FnZU5hbWUsIFVzZXJEYXRhKHByb2Nlc3MtPnRy
YW5zZm9ybU9iamVjdHNUb0hhbmRsZXMobWVzc2FnZUJvZHkpLmdldCgpKSksIDApOwpAQCAtOTQw
LDcgKzgzMSw2IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnNldEFkZGl0aW9uYWxQbHVnaW4KIH0K
ICNlbmRpZiAvLyBFTkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQSSkKIAotI2lmIEVOQUJMRShORVRX
T1JLX1BST0NFU1MpCiBQbGF0Zm9ybVByb2Nlc3NJZGVudGlmaWVyIFdlYlByb2Nlc3NQb29sOjpu
ZXR3b3JrUHJvY2Vzc0lkZW50aWZpZXIoKQogewogICAgIGlmICghbV9uZXR3b3JrUHJvY2VzcykK
QEAgLTk0OCw3ICs4MzgsNiBAQCBQbGF0Zm9ybVByb2Nlc3NJZGVudGlmaWVyIFdlYlByb2Nlc3NQ
b29sCiAKICAgICByZXR1cm4gbV9uZXR3b3JrUHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKTsK
IH0KLSNlbmRpZgogCiB2b2lkIFdlYlByb2Nlc3NQb29sOjpzZXRBbHdheXNVc2VzQ29tcGxleFRl
eHRDb2RlUGF0aChib29sIGFsd2F5c1VzZUNvbXBsZXhUZXh0KQogewpAQCAtOTg4LDE1ICs4Nzcs
OSBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpzZXREb21haW5SZWxheGF0aW9uCiAKIHZvaWQgV2Vi
UHJvY2Vzc1Bvb2w6OnNldENhbkhhbmRsZUhUVFBTU2VydmVyVHJ1c3RFdmFsdWF0aW9uKGJvb2wg
dmFsdWUpCiB7Ci0jaWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKICAgICBtX2NhbkhhbmRsZUhU
VFBTU2VydmVyVHJ1c3RFdmFsdWF0aW9uID0gdmFsdWU7Ci0gICAgaWYgKHVzZXNOZXR3b3JrUHJv
Y2VzcygpICYmIG1fbmV0d29ya1Byb2Nlc3MpIHsKKyAgICBpZiAobV9uZXR3b3JrUHJvY2VzcykK
ICAgICAgICAgbV9uZXR3b3JrUHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6
OlNldENhbkhhbmRsZUhUVFBTU2VydmVyVHJ1c3RFdmFsdWF0aW9uKHZhbHVlKSwgMCk7Ci0gICAg
ICAgIHJldHVybjsKLSAgICB9Ci0jZWxzZQotICAgIFVOVVNFRF9QQVJBTSh2YWx1ZSk7Ci0jZW5k
aWYKIH0KIAogdm9pZCBXZWJQcm9jZXNzUG9vbDo6cmVnaXN0ZXJVUkxTY2hlbWVBc0xvY2FsKGNv
bnN0IFN0cmluZyYgdXJsU2NoZW1lKQpAQCAtMTA2NCwxMCArOTQ3LDggQEAgdm9pZCBXZWJQcm9j
ZXNzUG9vbDo6c2V0Q2FjaGVNb2RlbChDYWNoZQogICAgIG1fY29uZmlndXJhdGlvbi0+c2V0Q2Fj
aGVNb2RlbChjYWNoZU1vZGVsKTsKICAgICBzZW5kVG9BbGxQcm9jZXNzZXMoTWVzc2FnZXM6Oldl
YlByb2Nlc3M6OlNldENhY2hlTW9kZWwoY2FjaGVNb2RlbCkpOwogCi0jaWYgRU5BQkxFKE5FVFdP
UktfUFJPQ0VTUykKLSAgICBpZiAodXNlc05ldHdvcmtQcm9jZXNzKCkgJiYgbV9uZXR3b3JrUHJv
Y2VzcykKKyAgICBpZiAobV9uZXR3b3JrUHJvY2VzcykKICAgICAgICAgbV9uZXR3b3JrUHJvY2Vz
cy0+c2VuZChNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OlNldENhY2hlTW9kZWwoY2FjaGVNb2Rl
bCksIDApOwotI2VuZGlmCiB9CiAKIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnNldERlZmF1bHRSZXF1
ZXN0VGltZW91dEludGVydmFsKGRvdWJsZSB0aW1lb3V0SW50ZXJ2YWwpCkBAIC0xMDc3LDE1ICs5
NTgsOSBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpzZXREZWZhdWx0UmVxdWVzdFRpCiAKIERvd25s
b2FkUHJveHkqIFdlYlByb2Nlc3NQb29sOjpjcmVhdGVEb3dubG9hZFByb3h5KGNvbnN0IFJlc291
cmNlUmVxdWVzdCYgcmVxdWVzdCkKIHsKLSNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQotICAg
IGlmICh1c2VzTmV0d29ya1Byb2Nlc3MoKSkgewotICAgICAgICBlbnN1cmVOZXR3b3JrUHJvY2Vz
cygpOwotICAgICAgICBBU1NFUlQobV9uZXR3b3JrUHJvY2Vzcyk7Ci0gICAgICAgIHJldHVybiBt
X25ldHdvcmtQcm9jZXNzLT5jcmVhdGVEb3dubG9hZFByb3h5KHJlcXVlc3QpOwotICAgIH0KLSNl
bmRpZgotCi0gICAgcmV0dXJuIGVuc3VyZVNoYXJlZFdlYlByb2Nlc3MoKS5jcmVhdGVEb3dubG9h
ZFByb3h5KHJlcXVlc3QpOworICAgIGVuc3VyZU5ldHdvcmtQcm9jZXNzKCk7CisgICAgQVNTRVJU
KG1fbmV0d29ya1Byb2Nlc3MpOworICAgIHJldHVybiBtX25ldHdvcmtQcm9jZXNzLT5jcmVhdGVE
b3dubG9hZFByb3h5KHJlcXVlc3QpOwogfQogCiB2b2lkIFdlYlByb2Nlc3NQb29sOjphZGRNZXNz
YWdlUmVjZWl2ZXIoSVBDOjpTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFtZSwgSVBD
OjpNZXNzYWdlUmVjZWl2ZXImIG1lc3NhZ2VSZWNlaXZlcikKQEAgLTExODIsMTIgKzEwNTcsMTAg
QEAgU3RyaW5nIFdlYlByb2Nlc3NQb29sOjpjb29raWVTdG9yYWdlRGlyZQogdm9pZCBXZWJQcm9j
ZXNzUG9vbDo6dXNlVGVzdGluZ05ldHdvcmtTZXNzaW9uKCkKIHsKICAgICBBU1NFUlQobV9wcm9j
ZXNzZXMuaXNFbXB0eSgpKTsKLSNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQogICAgIEFTU0VS
VCghbV9uZXR3b3JrUHJvY2Vzcyk7CiAKICAgICBpZiAobV9uZXR3b3JrUHJvY2VzcykKICAgICAg
ICAgcmV0dXJuOwotI2VuZGlmCiAKICAgICBpZiAoIW1fcHJvY2Vzc2VzLmlzRW1wdHkoKSkKICAg
ICAgICAgcmV0dXJuOwpAQCAtMTE5NywyMiArMTA3MCwxOCBAQCB2b2lkIFdlYlByb2Nlc3NQb29s
Ojp1c2VUZXN0aW5nTmV0d29ya1NlCiAKIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OmFsbG93U3BlY2lm
aWNIVFRQU0NlcnRpZmljYXRlRm9ySG9zdChjb25zdCBXZWJDZXJ0aWZpY2F0ZUluZm8qIGNlcnRp
ZmljYXRlLCBjb25zdCBTdHJpbmcmIGhvc3QpCiB7Ci0jaWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VT
UykKLSAgICBpZiAodXNlc05ldHdvcmtQcm9jZXNzKCkgJiYgbV9uZXR3b3JrUHJvY2Vzcykgewor
ICAgIGlmIChtX25ldHdvcmtQcm9jZXNzKSB7CiAgICAgICAgIG1fbmV0d29ya1Byb2Nlc3MtPnNl
bmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpBbGxvd1NwZWNpZmljSFRUUFNDZXJ0aWZpY2F0
ZUZvckhvc3QoY2VydGlmaWNhdGUtPmNlcnRpZmljYXRlSW5mbygpLCBob3N0KSwgMCk7CiAgICAg
ICAgIHJldHVybjsKICAgICB9Ci0jZW5kaWYKIAogI2lmIFVTRShTT1VQKQogICAgIG1fcHJvY2Vz
c2VzWzBdLT5zZW5kKE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpBbGxvd1NwZWNpZmljSFRUUFNDZXJ0
aWZpY2F0ZUZvckhvc3QoY2VydGlmaWNhdGUtPmNlcnRpZmljYXRlSW5mbygpLCBob3N0KSwgMCk7
CiAgICAgcmV0dXJuOwotI2Vsc2UKLSAgICBVTlVTRURfUEFSQU0oY2VydGlmaWNhdGUpOwotICAg
IFVOVVNFRF9QQVJBTShob3N0KTsKICNlbmRpZgogCiAjaWYgIVBMQVRGT1JNKElPUykKKyAgICAv
LyBGSVhNRTogV2h5IGlzIHRoaXMgb25seSBvbiBpT1M/IENhbiB3ZSByZW1vdmUgaXQ/CiAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7CiAjZW5kaWYKIH0KQEAgLTEyNTMsNDAgKzExMjIsMTkgQEAg
dm9pZCBXZWJQcm9jZXNzUG9vbDo6Z2V0U3RhdGlzdGljcyh1aW50MwogCiB2b2lkIFdlYlByb2Nl
c3NQb29sOjpyZXF1ZXN0V2ViQ29udGVudFN0YXRpc3RpY3MoU3RhdGlzdGljc1JlcXVlc3QqIHJl
cXVlc3QpCiB7Ci0gICAgaWYgKHByb2Nlc3NNb2RlbCgpID09IFByb2Nlc3NNb2RlbFNoYXJlZFNl
Y29uZGFyeVByb2Nlc3MpIHsKLSAgICAgICAgaWYgKG1fcHJvY2Vzc2VzLmlzRW1wdHkoKSkKLSAg
ICAgICAgICAgIHJldHVybjsKLSAgICAgICAgCi0gICAgICAgIHVpbnQ2NF90IHJlcXVlc3RJRCA9
IHJlcXVlc3QtPmFkZE91dHN0YW5kaW5nUmVxdWVzdCgpOwotICAgICAgICBtX3N0YXRpc3RpY3NS
ZXF1ZXN0cy5zZXQocmVxdWVzdElELCByZXF1ZXN0KTsKLSAgICAgICAgbV9wcm9jZXNzZXNbMF0t
PnNlbmQoTWVzc2FnZXM6OldlYlByb2Nlc3M6OkdldFdlYkNvcmVTdGF0aXN0aWNzKHJlcXVlc3RJ
RCksIDApOwotCi0gICAgfSBlbHNlIHsKLSAgICAgICAgLy8gRklYTUUgKE11bHRpLVdlYlByb2Nl
c3MpIDxyZGFyOi8vcHJvYmxlbS8xMzIwMDA1OT46IE1ha2UgZ2V0dGluZyBzdGF0aXN0aWNzIGZy
b20gbXVsdGlwbGUgV2ViUHJvY2Vzc2VzIHdvcmsuCi0gICAgfQorICAgIC8vIEZJWE1FIChNdWx0
aS1XZWJQcm9jZXNzKSA8cmRhcjovL3Byb2JsZW0vMTMyMDAwNTk+OiBNYWtlIGdldHRpbmcgc3Rh
dGlzdGljcyBmcm9tIG11bHRpcGxlIFdlYlByb2Nlc3NlcyB3b3JrLgogfQogCiB2b2lkIFdlYlBy
b2Nlc3NQb29sOjpyZXF1ZXN0TmV0d29ya2luZ1N0YXRpc3RpY3MoU3RhdGlzdGljc1JlcXVlc3Qq
IHJlcXVlc3QpCiB7Ci0gICAgYm9vbCBuZXR3b3JrUHJvY2Vzc1VuYXZhaWxhYmxlOwotI2lmIEVO
QUJMRShORVRXT1JLX1BST0NFU1MpCi0gICAgbmV0d29ya1Byb2Nlc3NVbmF2YWlsYWJsZSA9ICF1
c2VzTmV0d29ya1Byb2Nlc3MoKSB8fCAhbV9uZXR3b3JrUHJvY2VzczsKLSNlbHNlCi0gICAgbmV0
d29ya1Byb2Nlc3NVbmF2YWlsYWJsZSA9IHRydWU7Ci0jZW5kaWYKLQotICAgIGlmIChuZXR3b3Jr
UHJvY2Vzc1VuYXZhaWxhYmxlKSB7CisgICAgaWYgKCFtX25ldHdvcmtQcm9jZXNzKSB7CiAgICAg
ICAgIExPR19FUlJPUigiQXR0ZW1wdCB0byBnZXQgTmV0d29ya1Byb2Nlc3Mgc3RhdGlzdGljcyBi
dXQgdGhlIE5ldHdvcmtQcm9jZXNzIGlzIHVuYXZhaWxhYmxlIik7CiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAKLSNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQogICAgIHVpbnQ2NF90IHJlcXVl
c3RJRCA9IHJlcXVlc3QtPmFkZE91dHN0YW5kaW5nUmVxdWVzdCgpOwogICAgIG1fc3RhdGlzdGlj
c1JlcXVlc3RzLnNldChyZXF1ZXN0SUQsIHJlcXVlc3QpOwogICAgIG1fbmV0d29ya1Byb2Nlc3Mt
PnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpHZXROZXR3b3JrUHJvY2Vzc1N0YXRpc3Rp
Y3MocmVxdWVzdElEKSwgMCk7Ci0jZWxzZQotICAgIFVOVVNFRF9QQVJBTShyZXF1ZXN0KTsKLSNl
bmRpZgogfQogCiB2b2lkIFdlYlByb2Nlc3NQb29sOjpoYW5kbGVNZXNzYWdlKElQQzo6Q29ubmVj
dGlvbiYgY29ubmVjdGlvbiwgY29uc3QgU3RyaW5nJiBtZXNzYWdlTmFtZSwgY29uc3QgV2ViS2l0
OjpVc2VyRGF0YSYgbWVzc2FnZUJvZHkpCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
V2ViUHJvY2Vzc1Bvb2wuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
V2ViUHJvY2Vzc1Bvb2wuaAkocmV2aXNpb24gMTkyNjAxKQorKysgU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1dlYlByb2Nlc3NQb29sLmgJKHdvcmtpbmcgY29weSkKQEAgLTM0LDkgKzM0LDkgQEAK
ICNpbmNsdWRlICJHZW5lcmljQ2FsbGJhY2suaCIKICNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIu
aCIKICNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXJNYXAuaCIKKyNpbmNsdWRlICJOZXR3b3JrUHJv
Y2Vzc1Byb3h5LmgiCiAjaW5jbHVkZSAiUGx1Z0luQXV0b1N0YXJ0UHJvdmlkZXIuaCIKICNpbmNs
dWRlICJQbHVnaW5JbmZvU3RvcmUuaCIKLSNpbmNsdWRlICJQcm9jZXNzTW9kZWwuaCIKICNpbmNs
dWRlICJQcm9jZXNzVGhyb3R0bGVyLmgiCiAjaW5jbHVkZSAiU3RhdGlzdGljc1JlcXVlc3QuaCIK
ICNpbmNsdWRlICJWaXNpdGVkTGlua1N0b3JlLmgiCkBAIC01OSwxMCArNTksNiBAQAogI2luY2x1
ZGUgIkRhdGFiYXNlUHJvY2Vzc1Byb3h5LmgiCiAjZW5kaWYKIAotI2lmIEVOQUJMRShORVRXT1JL
X1BST0NFU1MpCi0jaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3NQcm94eS5oIgotI2VuZGlmCi0KICNp
ZiBFTkFCTEUoTUVESUFfU0VTU0lPTikKICNpbmNsdWRlICJXZWJNZWRpYVNlc3Npb25Gb2N1c01h
bmFnZXIuaCIKICNlbmRpZgpAQCAtODYsMTQgKzgyLDEyIEBAIGNsYXNzIFdlYkNvbnRleHRTdXBw
bGVtZW50OwogY2xhc3MgV2ViSWNvbkRhdGFiYXNlOwogY2xhc3MgV2ViUGFnZUdyb3VwOwogY2xh
c3MgV2ViUGFnZVByb3h5Oworc3RydWN0IE5ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJz
Owogc3RydWN0IFN0YXRpc3RpY3NEYXRhOwogc3RydWN0IFdlYlByb2Nlc3NDcmVhdGlvblBhcmFt
ZXRlcnM7CiAgICAgCiB0eXBlZGVmIEdlbmVyaWNDYWxsYmFjazxBUEk6OkRpY3Rpb25hcnkqPiBE
aWN0aW9uYXJ5Q2FsbGJhY2s7CiAKLSNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQotc3RydWN0
IE5ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOwotI2VuZGlmCiAKICNpZiBQTEFURk9S
TShDT0NPQSkKIGludCBuZXR3b3JrUHJvY2Vzc0xhdGVuY3lRT1MoKTsKQEAgLTE0Miw5ICsxMzYs
NiBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRIaXN0b3J5Q2xpZW50KHN0ZDo6dW5pcXVlX3B0cjxB
UEk6OkxlZ2FjeUNvbnRleHRIaXN0b3J5Q2xpZW50Pik7CiAgICAgdm9pZCBzZXREb3dubG9hZENs
aWVudChzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpEb3dubG9hZENsaWVudD4pOwogCi0gICAgdm9pZCBz
ZXRQcm9jZXNzTW9kZWwoUHJvY2Vzc01vZGVsKTsgLy8gQ2FuIG9ubHkgYmUgY2FsbGVkIHdoZW4g
dGhlcmUgYXJlIG5vIHByb2Nlc3NlcyBydW5uaW5nLgotICAgIFByb2Nlc3NNb2RlbCBwcm9jZXNz
TW9kZWwoKSBjb25zdCB7IHJldHVybiBtX2NvbmZpZ3VyYXRpb24tPnByb2Nlc3NNb2RlbCgpOyB9
Ci0KICAgICB2b2lkIHNldE1heGltdW1OdW1iZXJPZlByb2Nlc3Nlcyh1bnNpZ25lZCk7IC8vIENh
biBvbmx5IGJlIGNhbGxlZCB3aGVuIHRoZXJlIGFyZSBubyBwcm9jZXNzZXMgcnVubmluZy4KICAg
ICB1bnNpZ25lZCBtYXhpbXVtTnVtYmVyT2ZQcm9jZXNzZXMoKSBjb25zdCB7IHJldHVybiAhbV9j
b25maWd1cmF0aW9uLT5tYXhpbXVtUHJvY2Vzc0NvdW50KCkgPyBVSU5UX01BWCA6IG1fY29uZmln
dXJhdGlvbi0+bWF4aW11bVByb2Nlc3NDb3VudCgpOyB9CiAKQEAgLTE5Myw5ICsxODQsNyBAQCBw
dWJsaWM6CiAgICAgdm9pZCBjbGVhclBsdWdpbkNsaWVudFBvbGljaWVzKCk7CiAjZW5kaWYKIAot
I2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCiAgICAgUGxhdGZvcm1Qcm9jZXNzSWRlbnRpZmll
ciBuZXR3b3JrUHJvY2Vzc0lkZW50aWZpZXIoKTsKLSNlbmRpZgogCiAgICAgdm9pZCBzZXRBbHdh
eXNVc2VzQ29tcGxleFRleHRDb2RlUGF0aChib29sKTsKICAgICB2b2lkIHNldFNob3VsZFVzZUZv
bnRTbW9vdGhpbmcoYm9vbCk7CkBAIC0yODYsMTYgKzI3NSwxMSBAQCBwdWJsaWM6CiAKICAgICAv
LyBOZXR3b3JrIFByb2Nlc3MgTWFuYWdlbWVudAogCi0gICAgdm9pZCBzZXRVc2VzTmV0d29ya1By
b2Nlc3MoYm9vbCk7Ci0gICAgYm9vbCB1c2VzTmV0d29ya1Byb2Nlc3MoKSBjb25zdDsKLQotI2lm
IEVOQUJMRShORVRXT1JLX1BST0NFU1MpCiAgICAgTmV0d29ya1Byb2Nlc3NQcm94eSYgZW5zdXJl
TmV0d29ya1Byb2Nlc3MoKTsKICAgICBOZXR3b3JrUHJvY2Vzc1Byb3h5KiBuZXR3b3JrUHJvY2Vz
cygpIHsgcmV0dXJuIG1fbmV0d29ya1Byb2Nlc3MuZ2V0KCk7IH0KICAgICB2b2lkIG5ldHdvcmtQ
cm9jZXNzQ3Jhc2hlZChOZXR3b3JrUHJvY2Vzc1Byb3h5Kik7CiAKICAgICB2b2lkIGdldE5ldHdv
cmtQcm9jZXNzQ29ubmVjdGlvbihQYXNzUmVmUHRyPE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6
OkdldE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbjo6RGVsYXllZFJlcGx5Pik7Ci0jZW5kaWYKIAog
I2lmIEVOQUJMRShEQVRBQkFTRV9QUk9DRVNTKQogICAgIHZvaWQgZW5zdXJlRGF0YWJhc2VQcm9j
ZXNzKCk7CkBAIC0zNzgsOSArMzYyLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHJlcXVlc3RXZWJD
b250ZW50U3RhdGlzdGljcyhTdGF0aXN0aWNzUmVxdWVzdCopOwogICAgIHZvaWQgcmVxdWVzdE5l
dHdvcmtpbmdTdGF0aXN0aWNzKFN0YXRpc3RpY3NSZXF1ZXN0Kik7CiAKLSNpZiBFTkFCTEUoTkVU
V09SS19QUk9DRVNTKQogICAgIHZvaWQgcGxhdGZvcm1Jbml0aWFsaXplTmV0d29ya1Byb2Nlc3Mo
TmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMmKTsKLSNlbmRpZgogCiAgICAgdm9pZCBo
YW5kbGVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIGNvbnN0IFN0cmluZyYgbWVzc2FnZU5hbWUs
IGNvbnN0IFVzZXJEYXRhJiBtZXNzYWdlQm9keSk7CiAgICAgdm9pZCBoYW5kbGVTeW5jaHJvbm91
c01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgY29uc3QgU3RyaW5nJiBtZXNzYWdlTmFtZSwgY29u
c3QgVXNlckRhdGEmIG1lc3NhZ2VCb2R5LCBVc2VyRGF0YSYgcmV0dXJuVXNlckRhdGEpOwpAQCAt
NTAwLDExICs0ODIsOSBAQCBwcml2YXRlOgogCiAgICAgYm9vbCBtX3Byb2Nlc3NUZXJtaW5hdGlv
bkVuYWJsZWQ7CiAKLSNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQogICAgIGJvb2wgbV9jYW5I
YW5kbGVIVFRQU1NlcnZlclRydXN0RXZhbHVhdGlvbjsKICAgICBib29sIG1fZGlkTmV0d29ya1By
b2Nlc3NDcmFzaDsKICAgICBSZWZQdHI8TmV0d29ya1Byb2Nlc3NQcm94eT4gbV9uZXR3b3JrUHJv
Y2VzczsKLSNlbmRpZgogCiAjaWYgRU5BQkxFKERBVEFCQVNFX1BST0NFU1MpCiAgICAgUmVmUHRy
PERhdGFiYXNlUHJvY2Vzc1Byb3h5PiBtX2RhdGFiYXNlUHJvY2VzczsKQEAgLTUzOSw1NSArNTE5
LDE1IEBAIHByaXZhdGU6CiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgogdm9pZCBXZWJQcm9jZXNzUG9v
bDo6c2VuZFRvTmV0d29ya2luZ1Byb2Nlc3MoVCYmIG1lc3NhZ2UpCiB7Ci0gICAgc3dpdGNoIChw
cm9jZXNzTW9kZWwoKSkgewotICAgIGNhc2UgUHJvY2Vzc01vZGVsU2hhcmVkU2Vjb25kYXJ5UHJv
Y2VzczoKLSNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQotICAgICAgICBpZiAodXNlc05ldHdv
cmtQcm9jZXNzKCkpIHsKLSAgICAgICAgICAgIGlmIChtX25ldHdvcmtQcm9jZXNzICYmIG1fbmV0
d29ya1Byb2Nlc3MtPmNhblNlbmRNZXNzYWdlKCkpCi0gICAgICAgICAgICAgICAgbV9uZXR3b3Jr
UHJvY2Vzcy0+c2VuZChzdGQ6OmZvcndhcmQ8VD4obWVzc2FnZSksIDApOwotICAgICAgICAgICAg
cmV0dXJuOwotICAgICAgICB9Ci0jZW5kaWYKLSAgICAgICAgaWYgKCFtX3Byb2Nlc3Nlcy5pc0Vt
cHR5KCkgJiYgbV9wcm9jZXNzZXNbMF0tPmNhblNlbmRNZXNzYWdlKCkpCi0gICAgICAgICAgICBt
X3Byb2Nlc3Nlc1swXS0+c2VuZChzdGQ6OmZvcndhcmQ8VD4obWVzc2FnZSksIDApOwotICAgICAg
ICByZXR1cm47Ci0gICAgY2FzZSBQcm9jZXNzTW9kZWxNdWx0aXBsZVNlY29uZGFyeVByb2Nlc3Nl
czoKLSNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQotICAgICAgICBpZiAobV9uZXR3b3JrUHJv
Y2VzcyAmJiBtX25ldHdvcmtQcm9jZXNzLT5jYW5TZW5kTWVzc2FnZSgpKQotICAgICAgICAgICAg
bV9uZXR3b3JrUHJvY2Vzcy0+c2VuZChzdGQ6OmZvcndhcmQ8VD4obWVzc2FnZSksIDApOwotICAg
ICAgICByZXR1cm47Ci0jZWxzZQotICAgICAgICBicmVhazsKLSNlbmRpZgotICAgIH0KLSAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICBpZiAobV9uZXR3b3JrUHJvY2VzcyAmJiBtX25ldHdv
cmtQcm9jZXNzLT5jYW5TZW5kTWVzc2FnZSgpKQorICAgICAgICBtX25ldHdvcmtQcm9jZXNzLT5z
ZW5kKHN0ZDo6Zm9yd2FyZDxUPihtZXNzYWdlKSwgMCk7CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1l
IFQ+CiB2b2lkIFdlYlByb2Nlc3NQb29sOjpzZW5kVG9OZXR3b3JraW5nUHJvY2Vzc1JlbGF1bmNo
aW5nSWZOZWNlc3NhcnkoVCYmIG1lc3NhZ2UpCiB7Ci0gICAgc3dpdGNoIChwcm9jZXNzTW9kZWwo
KSkgewotICAgIGNhc2UgUHJvY2Vzc01vZGVsU2hhcmVkU2Vjb25kYXJ5UHJvY2VzczoKLSNpZiBF
TkFCTEUoTkVUV09SS19QUk9DRVNTKQotICAgICAgICBpZiAodXNlc05ldHdvcmtQcm9jZXNzKCkp
IHsKLSAgICAgICAgICAgIGVuc3VyZU5ldHdvcmtQcm9jZXNzKCk7Ci0gICAgICAgICAgICBtX25l
dHdvcmtQcm9jZXNzLT5zZW5kKHN0ZDo6Zm9yd2FyZDxUPihtZXNzYWdlKSwgMCk7Ci0gICAgICAg
ICAgICByZXR1cm47Ci0gICAgICAgIH0KLSNlbmRpZgotICAgICAgICBlbnN1cmVTaGFyZWRXZWJQ
cm9jZXNzKCk7Ci0gICAgICAgIG1fcHJvY2Vzc2VzWzBdLT5zZW5kKHN0ZDo6Zm9yd2FyZDxUPiht
ZXNzYWdlKSwgMCk7Ci0gICAgICAgIHJldHVybjsKLSAgICBjYXNlIFByb2Nlc3NNb2RlbE11bHRp
cGxlU2Vjb25kYXJ5UHJvY2Vzc2VzOgotI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCi0gICAg
ICAgIGVuc3VyZU5ldHdvcmtQcm9jZXNzKCk7Ci0gICAgICAgIG1fbmV0d29ya1Byb2Nlc3MtPnNl
bmQoc3RkOjpmb3J3YXJkPFQ+KG1lc3NhZ2UpLCAwKTsKLSAgICAgICAgcmV0dXJuOwotI2Vsc2UK
LSAgICAgICAgYnJlYWs7Ci0jZW5kaWYKLSAgICB9Ci0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
CisgICAgZW5zdXJlTmV0d29ya1Byb2Nlc3MoKTsKKyAgICBtX25ldHdvcmtQcm9jZXNzLT5zZW5k
KHN0ZDo6Zm9yd2FyZDxUPihtZXNzYWdlKSwgMCk7CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+
CkBAIC02MTYsMTcgKzU1NiwxMiBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgogdm9pZCBXZWJQcm9j
ZXNzUG9vbDo6c2VuZFRvQWxsUHJvY2Vzc2VzUmVsYXVuY2hpbmdUaGVtSWZOZWNlc3NhcnkoY29u
c3QgVCYgbWVzc2FnZSkKIHsKICAgICAvLyBGSVhNRSAoTXVsdGktV2ViUHJvY2Vzcyk6IFdlYlBy
b2Nlc3NQb29sIGRvZXNuJ3QgdHJhY2sgcHJvY2Vzc2VzIHRoYXQgaGF2ZSBleGl0ZWQsIHNvIGl0
IGNhbm5vdCByZWxhdW5jaCB0aGVzZS4gUGVyaGFwcyB0aGlzIGZ1bmN0aW9uYWxpdHkgd29uJ3Qg
YmUgbmVlZGVkIGluIHRoaXMgbW9kZS4KLSAgICBpZiAocHJvY2Vzc01vZGVsKCkgPT0gUHJvY2Vz
c01vZGVsU2hhcmVkU2Vjb25kYXJ5UHJvY2VzcykKLSAgICAgICAgZW5zdXJlU2hhcmVkV2ViUHJv
Y2VzcygpOwogICAgIHNlbmRUb0FsbFByb2Nlc3NlcyhtZXNzYWdlKTsKIH0KIAogdGVtcGxhdGU8
dHlwZW5hbWUgVD4KIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnNlbmRUb09uZVByb2Nlc3MoVCYmIG1l
c3NhZ2UpCiB7Ci0gICAgaWYgKHByb2Nlc3NNb2RlbCgpID09IFByb2Nlc3NNb2RlbFNoYXJlZFNl
Y29uZGFyeVByb2Nlc3MpCi0gICAgICAgIGVuc3VyZVNoYXJlZFdlYlByb2Nlc3MoKTsKLQogICAg
IGJvb2wgbWVzc2FnZVNlbnQgPSBmYWxzZTsKICAgICBzaXplX3QgcHJvY2Vzc0NvdW50ID0gbV9w
cm9jZXNzZXMuc2l6ZSgpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcHJvY2Vzc0NvdW50
OyArK2kpIHsKQEAgLTYzOCw3ICs1NzMsNyBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpzZW5kVG9P
bmVQcm9jZXNzKFQmCiAgICAgICAgIH0KICAgICB9CiAKLSAgICBpZiAoIW1lc3NhZ2VTZW50ICYm
IHByb2Nlc3NNb2RlbCgpID09IFByb2Nlc3NNb2RlbE11bHRpcGxlU2Vjb25kYXJ5UHJvY2Vzc2Vz
KSB7CisgICAgaWYgKCFtZXNzYWdlU2VudCkgewogICAgICAgICB3YXJtSW5pdGlhbFByb2Nlc3Mo
KTsKICAgICAgICAgUmVmUHRyPFdlYlByb2Nlc3NQcm94eT4gcHJvY2VzcyA9IG1fcHJvY2Vzc2Vz
Lmxhc3QoKTsKICAgICAgICAgaWYgKHByb2Nlc3MtPmNhblNlbmRNZXNzYWdlKCkpCkluZGV4OiBT
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcAkocmV2aXNpb24g
MTkyNjAxKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTI1Niw3ICsyNTYsNyBAQCB2b2lkIFdlYlByb2Nlc3NQcm94eTo6
cmVtb3ZlV2ViUGFnZSh1aW50CiAKICAgICAvLyBJZiB0aGlzIHdhcyB0aGUgbGFzdCBXZWJQYWdl
IG9wZW4gaW4gdGhhdCB3ZWIgcHJvY2VzcywgYW5kIHdlIGhhdmUgbm8gb3RoZXIgcmVhc29uIHRv
IGtlZXAgaXQgYWxpdmUsIGxldCBpdCBnby4KICAgICAvLyBXZSBvbmx5IGFsbG93IHRoaXMgd2hl
biB1c2luZyBhIG5ldHdvcmsgcHJvY2VzcywgYXMgb3RoZXJ3aXNlIHRoZSBXZWJQcm9jZXNzIG5l
ZWRzIHRvIHByZXNlcnZlIGl0cyBzZXNzaW9uIHN0YXRlLgotICAgIGlmICghbV9wcm9jZXNzUG9v
bC0+dXNlc05ldHdvcmtQcm9jZXNzKCkgfHwgc3RhdGUoKSA9PSBTdGF0ZTo6VGVybWluYXRlZCB8
fCAhY2FuVGVybWluYXRlQ2hpbGRQcm9jZXNzKCkpCisgICAgaWYgKHN0YXRlKCkgPT0gU3RhdGU6
OlRlcm1pbmF0ZWQgfHwgIWNhblRlcm1pbmF0ZUNoaWxkUHJvY2VzcygpKQogICAgICAgICByZXR1
cm47CiAKICAgICBzaHV0RG93bigpOwpAQCAtNDI3LDEyICs0MjcsMTAgQEAgdm9pZCBXZWJQcm9j
ZXNzUHJveHk6OmdldFBsdWdpblByb2Nlc3NDbwogfQogI2VuZGlmCiAKLSNpZiBFTkFCTEUoTkVU
V09SS19QUk9DRVNTKQogdm9pZCBXZWJQcm9jZXNzUHJveHk6OmdldE5ldHdvcmtQcm9jZXNzQ29u
bmVjdGlvbihQYXNzUmVmUHRyPE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6OkdldE5ldHdvcmtQ
cm9jZXNzQ29ubmVjdGlvbjo6RGVsYXllZFJlcGx5PiByZXBseSkKIHsKICAgICBtX3Byb2Nlc3NQ
b29sLT5nZXROZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24ocmVwbHkpOwogfQotI2VuZGlmIC8vIEVO
QUJMRShORVRXT1JLX1BST0NFU1MpCiAKICNpZiBFTkFCTEUoREFUQUJBU0VfUFJPQ0VTUykKIHZv
aWQgV2ViUHJvY2Vzc1Byb3h5OjpnZXREYXRhYmFzZVByb2Nlc3NDb25uZWN0aW9uKFBhc3NSZWZQ
dHI8TWVzc2FnZXM6OldlYlByb2Nlc3NQcm94eTo6R2V0RGF0YWJhc2VQcm9jZXNzQ29ubmVjdGlv
bjo6RGVsYXllZFJlcGx5PiByZXBseSkKQEAgLTcwMiwxOCArNzAwLDYgQEAgdm9pZCBXZWJQcm9j
ZXNzUHJveHk6OnVwZGF0ZVRleHRDaGVja2VyUwogICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQ
cm9jZXNzOjpTZXRUZXh0Q2hlY2tlclN0YXRlKFRleHRDaGVja2VyOjpzdGF0ZSgpKSwgMCk7CiB9
CiAKLURvd25sb2FkUHJveHkqIFdlYlByb2Nlc3NQcm94eTo6Y3JlYXRlRG93bmxvYWRQcm94eShj
b25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCi17Ci0jaWYgRU5BQkxFKE5FVFdPUktfUFJP
Q0VTUykKLSAgICBBU1NFUlQoIW1fcHJvY2Vzc1Bvb2wtPnVzZXNOZXR3b3JrUHJvY2VzcygpKTsK
LSNlbmRpZgotCi0gICAgaWYgKCFtX2Rvd25sb2FkUHJveHlNYXApCi0gICAgICAgIG1fZG93bmxv
YWRQcm94eU1hcCA9IHN0ZDo6bWFrZV91bmlxdWU8RG93bmxvYWRQcm94eU1hcD4odGhpcyk7Ci0K
LSAgICByZXR1cm4gbV9kb3dubG9hZFByb3h5TWFwLT5jcmVhdGVEb3dubG9hZFByb3h5KG1fcHJv
Y2Vzc1Bvb2wsIHJlcXVlc3QpOwotfQotCiB2b2lkIFdlYlByb2Nlc3NQcm94eTo6ZGlkU2F2ZVRv
UGFnZUNhY2hlKCkKIHsKICAgICBtX3Byb2Nlc3NQb29sLT5wcm9jZXNzRGlkQ2FjaGVQYWdlKHRo
aXMpOwpAQCAtOTQ3LDcgKzkzMyw2IEBAIHZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpkaWRDYW5jZWxQ
cm9jZXNzU3UKICAgICBtX3Rocm90dGxlci5kaWRDYW5jZWxQcm9jZXNzU3VzcGVuc2lvbigpOwog
fQogCi0jaWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKIHZvaWQgV2ViUHJvY2Vzc1Byb3h5Ojpy
ZWluc3RhdGVOZXR3b3JrUHJvY2Vzc0Fzc2VydGlvblN0YXRlKE5ldHdvcmtQcm9jZXNzUHJveHkm
IG5ld05ldHdvcmtQcm9jZXNzUHJveHkpCiB7CiAjaWYgUExBVEZPUk0oSU9TKQpAQCAtOTYyLDEx
ICs5NDcsMTAgQEAgdm9pZCBXZWJQcm9jZXNzUHJveHk6OnJlaW5zdGF0ZU5ldHdvcmtQcgogICAg
IFVOVVNFRF9QQVJBTShuZXdOZXR3b3JrUHJvY2Vzc1Byb3h5KTsKICNlbmRpZgogfQotI2VuZGlm
CiAKIHZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpkaWRTZXRBc3NlcnRpb25TdGF0ZShBc3NlcnRpb25T
dGF0ZSBzdGF0ZSkKIHsKLSNpZiBQTEFURk9STShJT1MpICYmIEVOQUJMRShORVRXT1JLX1BST0NF
U1MpCisjaWYgUExBVEZPUk0oSU9TKQogICAgIEFTU0VSVCghbV9iYWNrZ3JvdW5kVG9rZW5Gb3JO
ZXR3b3JrUHJvY2VzcyB8fCAhbV9mb3JlZ3JvdW5kVG9rZW5Gb3JOZXR3b3JrUHJvY2Vzcyk7CiAK
ICAgICBzd2l0Y2ggKHN0YXRlKSB7CkBAIC05NzgsMTQgKzk2MiwxMiBAQCB2b2lkIFdlYlByb2Nl
c3NQcm94eTo6ZGlkU2V0QXNzZXJ0aW9uU3RhCiAgICAgICAgIGJyZWFrOwogCiAgICAgY2FzZSBB
c3NlcnRpb25TdGF0ZTo6QmFja2dyb3VuZDoKLSAgICAgICAgaWYgKHByb2Nlc3NQb29sKCkudXNl
c05ldHdvcmtQcm9jZXNzKCkpCi0gICAgICAgICAgICBtX2JhY2tncm91bmRUb2tlbkZvck5ldHdv
cmtQcm9jZXNzID0gcHJvY2Vzc1Bvb2woKS5lbnN1cmVOZXR3b3JrUHJvY2VzcygpLnRocm90dGxl
cigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCk7CisgICAgICAgIG1fYmFja2dyb3VuZFRva2Vu
Rm9yTmV0d29ya1Byb2Nlc3MgPSBwcm9jZXNzUG9vbCgpLmVuc3VyZU5ldHdvcmtQcm9jZXNzKCku
dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKTsKICAgICAgICAgbV9mb3JlZ3Jv
dW5kVG9rZW5Gb3JOZXR3b3JrUHJvY2VzcyA9IG51bGxwdHI7CiAgICAgICAgIGJyZWFrOwogICAg
IAogICAgIGNhc2UgQXNzZXJ0aW9uU3RhdGU6OkZvcmVncm91bmQ6Ci0gICAgICAgIGlmIChwcm9j
ZXNzUG9vbCgpLnVzZXNOZXR3b3JrUHJvY2VzcygpKQotICAgICAgICAgICAgbV9mb3JlZ3JvdW5k
VG9rZW5Gb3JOZXR3b3JrUHJvY2VzcyA9IHByb2Nlc3NQb29sKCkuZW5zdXJlTmV0d29ya1Byb2Nl
c3MoKS50aHJvdHRsZXIoKS5mb3JlZ3JvdW5kQWN0aXZpdHlUb2tlbigpOworICAgICAgICBtX2Zv
cmVncm91bmRUb2tlbkZvck5ldHdvcmtQcm9jZXNzID0gcHJvY2Vzc1Bvb2woKS5lbnN1cmVOZXR3
b3JrUHJvY2VzcygpLnRocm90dGxlcigpLmZvcmVncm91bmRBY3Rpdml0eVRva2VuKCk7CiAgICAg
ICAgIG1fYmFja2dyb3VuZFRva2VuRm9yTmV0d29ya1Byb2Nlc3MgPSBudWxscHRyOwogICAgICAg
ICBmb3IgKGF1dG8mIHBhZ2UgOiBtX3BhZ2VNYXAudmFsdWVzKCkpCiAgICAgICAgICAgICBwYWdl
LT5wcm9jZXNzV2lsbEJlY29tZUZvcmVncm91bmQoKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmgJKHJldmlzaW9uIDE5MjYwMSkKKysrIFNvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaAkod29ya2luZyBjb3B5KQpAQCAtMTUy
LDkgKzE1Miw3IEBAIHB1YmxpYzoKIAogICAgIFByb2Nlc3NUaHJvdHRsZXImIHRocm90dGxlcigp
IHsgcmV0dXJuIG1fdGhyb3R0bGVyOyB9CiAKLSNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQog
ICAgIHZvaWQgcmVpbnN0YXRlTmV0d29ya1Byb2Nlc3NBc3NlcnRpb25TdGF0ZShOZXR3b3JrUHJv
Y2Vzc1Byb3h5Jik7Ci0jZW5kaWYKIAogcHJpdmF0ZToKICAgICBleHBsaWNpdCBXZWJQcm9jZXNz
UHJveHkoV2ViUHJvY2Vzc1Bvb2wmKTsKQEAgLTE4Niw5ICsxODQsNyBAQCBwcml2YXRlOgogI2lm
IEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJKQogICAgIHZvaWQgZ2V0UGx1Z2luUHJvY2Vzc0Nv
bm5lY3Rpb24odWludDY0X3QgcGx1Z2luUHJvY2Vzc1Rva2VuLCBQYXNzUmVmUHRyPE1lc3NhZ2Vz
OjpXZWJQcm9jZXNzUHJveHk6OkdldFBsdWdpblByb2Nlc3NDb25uZWN0aW9uOjpEZWxheWVkUmVw
bHk+KTsKICNlbmRpZgotI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCiAgICAgdm9pZCBnZXRO
ZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oUGFzc1JlZlB0cjxNZXNzYWdlczo6V2ViUHJvY2Vzc1By
b3h5OjpHZXROZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb246OkRlbGF5ZWRSZXBseT4pOwotI2VuZGlm
CiAjaWYgRU5BQkxFKERBVEFCQVNFX1BST0NFU1MpCiAgICAgdm9pZCBnZXREYXRhYmFzZVByb2Nl
c3NDb25uZWN0aW9uKFBhc3NSZWZQdHI8TWVzc2FnZXM6OldlYlByb2Nlc3NQcm94eTo6R2V0RGF0
YWJhc2VQcm9jZXNzQ29ubmVjdGlvbjo6RGVsYXllZFJlcGx5Pik7CiAjZW5kaWYKQEAgLTI1Myw3
ICsyNDksNyBAQCBwcml2YXRlOgogICAgIGludCBtX251bWJlck9mVGltZXNTdWRkZW5UZXJtaW5h
dGlvbldhc0Rpc2FibGVkOwogICAgIFByb2Nlc3NUaHJvdHRsZXIgbV90aHJvdHRsZXI7CiAgICAg
UHJvY2Vzc1Rocm90dGxlcjo6QmFja2dyb3VuZEFjdGl2aXR5VG9rZW4gbV90b2tlbkZvckhvbGRp
bmdMb2NrZWRGaWxlczsKLSNpZiBQTEFURk9STShJT1MpICYmIEVOQUJMRShORVRXT1JLX1BST0NF
U1MpCisjaWYgUExBVEZPUk0oSU9TKQogICAgIFByb2Nlc3NUaHJvdHRsZXI6OkZvcmVncm91bmRB
Y3Rpdml0eVRva2VuIG1fZm9yZWdyb3VuZFRva2VuRm9yTmV0d29ya1Byb2Nlc3M7CiAgICAgUHJv
Y2Vzc1Rocm90dGxlcjo6QmFja2dyb3VuZEFjdGl2aXR5VG9rZW4gbV9iYWNrZ3JvdW5kVG9rZW5G
b3JOZXR3b3JrUHJvY2VzczsKICNlbmRpZgpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1dlYlByb2Nlc3NQcm94eS5tZXNzYWdlcy5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluCShyZXZpc2lvbiAxOTI2MDEp
CisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmlu
CSh3b3JraW5nIGNvcHkpCkBAIC0zOCw5ICszOCw3IEBAIG1lc3NhZ2VzIC0+IFdlYlByb2Nlc3NQ
cm94eSBMZWdhY3lSZWNlaXYKICAgICBHZXRQbHVnaW5zKGJvb2wgcmVmcmVzaCkgLT4gKFZlY3Rv
cjxXZWJDb3JlOjpQbHVnaW5JbmZvPiBwbHVnaW5zLCBWZWN0b3I8V2ViQ29yZTo6UGx1Z2luSW5m
bz4gYXBwbGljYXRpb25QbHVnaW5zKQogICAgIEdldFBsdWdpblByb2Nlc3NDb25uZWN0aW9uKHVp
bnQ2NF90IHBsdWdpblByb2Nlc3NUb2tlbikgLT4gKElQQzo6QXR0YWNobWVudCBjb25uZWN0aW9u
SGFuZGxlLCBib29sIHN1cHBvcnRzQXN5bmNocm9ub3VzSW5pdGlhbGl6YXRpb24pIERlbGF5ZWQK
ICNlbmRpZgotI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCiAgICAgR2V0TmV0d29ya1Byb2Nl
c3NDb25uZWN0aW9uKCkgLT4gKElQQzo6QXR0YWNobWVudCBjb25uZWN0aW9uSGFuZGxlKSBEZWxh
eWVkCi0jZW5kaWYKICNpZiBFTkFCTEUoREFUQUJBU0VfUFJPQ0VTUykKICAgICBHZXREYXRhYmFz
ZVByb2Nlc3NDb25uZWN0aW9uKCkgLT4gKElQQzo6QXR0YWNobWVudCBjb25uZWN0aW9uSGFuZGxl
KSBEZWxheWVkCiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQVBJ
UHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL0FQSVByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5jcHAJKHJldmlzaW9u
IDE5MjYwMSkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQVBJUHJvY2Vzc1Bvb2xD
b25maWd1cmF0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDEsNyArNDEsNiBAQCBSZWY8UHJv
Y2Vzc1Bvb2xDb25maWd1cmF0aW9uPiBQcm9jZXNzUG9vCiAgICAgYXV0byBjb25maWd1cmF0aW9u
ID0gUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uOjpjcmVhdGUoKTsKIAogICAgIGNvbmZpZ3VyYXRp
b24tPm1fc2hvdWxkSGF2ZUxlZ2FjeURhdGFTdG9yZSA9IHRydWU7Ci0gICAgY29uZmlndXJhdGlv
bi0+bV9wcm9jZXNzTW9kZWwgPSBXZWJLaXQ6OlByb2Nlc3NNb2RlbFNoYXJlZFNlY29uZGFyeVBy
b2Nlc3M7CiAgICAgY29uZmlndXJhdGlvbi0+bV91c2VOZXR3b3JrUHJvY2VzcyA9IGZhbHNlOwog
ICAgIGNvbmZpZ3VyYXRpb24tPm1fY2FjaGVNb2RlbCA9IFdlYktpdDo6Q2FjaGVNb2RlbERvY3Vt
ZW50Vmlld2VyOwogCkBAIC03NCw3ICs3Myw2IEBAIFJlZjxQcm9jZXNzUG9vbENvbmZpZ3VyYXRp
b24+IFByb2Nlc3NQb28KICAgICBhdXRvIGNvcHkgPSB0aGlzLT5jcmVhdGUoKTsKIAogICAgIGNv
cHktPm1fc2hvdWxkSGF2ZUxlZ2FjeURhdGFTdG9yZSA9IHRoaXMtPm1fc2hvdWxkSGF2ZUxlZ2Fj
eURhdGFTdG9yZTsKLSAgICBjb3B5LT5tX3Byb2Nlc3NNb2RlbCA9IHRoaXMtPm1fcHJvY2Vzc01v
ZGVsOwogICAgIGNvcHktPm1fdXNlTmV0d29ya1Byb2Nlc3MgPSB0aGlzLT5tX3VzZU5ldHdvcmtQ
cm9jZXNzOwogICAgIGNvcHktPm1fbWF4aW11bVByb2Nlc3NDb3VudCA9IHRoaXMtPm1fbWF4aW11
bVByb2Nlc3NDb3VudDsKICAgICBjb3B5LT5tX2NhY2hlTW9kZWwgPSB0aGlzLT5tX2NhY2hlTW9k
ZWw7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0FQSVByb2Nlc3NQb29sQ29u
ZmlndXJhdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
QVBJUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmgJKHJldmlzaW9uIDE5MjYwMSkKKysrIFNvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQVBJUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmgJKHdv
cmtpbmcgY29weSkKQEAgLTI4LDcgKzI4LDYgQEAKIAogI2luY2x1ZGUgIkFQSU9iamVjdC5oIgog
I2luY2x1ZGUgIkNhY2hlTW9kZWwuaCIKLSNpbmNsdWRlICJQcm9jZXNzTW9kZWwuaCIKICNpbmNs
dWRlIDx3dGYvUmVmLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogI2luY2x1ZGUgPHd0Zi90
ZXh0L1dURlN0cmluZy5oPgpAQCAtNDgsOSArNDcsNiBAQCBwdWJsaWM6CiAgICAgYm9vbCBzaG91
bGRIYXZlTGVnYWN5RGF0YVN0b3JlKCkgY29uc3QgeyByZXR1cm4gbV9zaG91bGRIYXZlTGVnYWN5
RGF0YVN0b3JlOyB9CiAgICAgdm9pZCBzZXRTaG91bGRIYXZlTGVnYWN5RGF0YVN0b3JlKGJvb2wg
c2hvdWxkSGF2ZUxlZ2FjeURhdGFTdG9yZSkgeyBtX3Nob3VsZEhhdmVMZWdhY3lEYXRhU3RvcmUg
PSBzaG91bGRIYXZlTGVnYWN5RGF0YVN0b3JlOyB9CiAKLSAgICBXZWJLaXQ6OlByb2Nlc3NNb2Rl
bCBwcm9jZXNzTW9kZWwoKSBjb25zdCB7IHJldHVybiBtX3Byb2Nlc3NNb2RlbDsgfQotICAgIHZv
aWQgc2V0UHJvY2Vzc01vZGVsKFdlYktpdDo6UHJvY2Vzc01vZGVsIHByb2Nlc3NNb2RlbCkgeyBt
X3Byb2Nlc3NNb2RlbCA9IHByb2Nlc3NNb2RlbDsgfSAKLQogICAgIGJvb2wgdXNlTmV0d29ya1By
b2Nlc3MoKSBjb25zdCB7IHJldHVybiBtX3VzZU5ldHdvcmtQcm9jZXNzOyB9CiAgICAgdm9pZCBz
ZXRVc2VOZXR3b3JrUHJvY2Vzcyhib29sIHVzZU5ldHdvcmtQcm9jZXNzKSB7IG1fdXNlTmV0d29y
a1Byb2Nlc3MgPSB1c2VOZXR3b3JrUHJvY2VzczsgfSAKIApAQCAtOTYsNyArOTIsNiBAQCBwdWJs
aWM6CiBwcml2YXRlOgogICAgIGJvb2wgbV9zaG91bGRIYXZlTGVnYWN5RGF0YVN0b3JlIHsgZmFs
c2UgfTsKIAotICAgIFdlYktpdDo6UHJvY2Vzc01vZGVsIG1fcHJvY2Vzc01vZGVsIHsgV2ViS2l0
OjpQcm9jZXNzTW9kZWxNdWx0aXBsZVNlY29uZGFyeVByb2Nlc3NlcyB9OwogICAgIGJvb2wgbV91
c2VOZXR3b3JrUHJvY2VzcyB7IHRydWUgfTsKICAgICB1bnNpZ25lZCBtX21heGltdW1Qcm9jZXNz
Q291bnQgeyAwIH07CiAgICAgV2ViS2l0OjpDYWNoZU1vZGVsIG1fY2FjaGVNb2RlbCB7IFdlYktp
dDo6Q2FjaGVNb2RlbFByaW1hcnlXZWJCcm93c2VyIH07CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL0FQSVNlc3Npb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvQVBJU2Vzc2lvbi5jcHAJKHJldmlzaW9uIDE5MjYwMSkKKysrIFNvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQVBJU2Vzc2lvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTI4LDEwICsyOCw4IEBACiAKICNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgogCi0jaWYgRU5BQkxF
KE5FVFdPUktfUFJPQ0VTUykKICNpbmNsdWRlICJOZXR3b3JrUHJvY2Vzc01lc3NhZ2VzLmgiCiAj
aW5jbHVkZSAiV2ViUHJvY2Vzc1Bvb2wuaCIKLSNlbmRpZgogCiBuYW1lc3BhY2UgQVBJIHsKIApA
QCAtODAsMTIgKzc4LDEwIEBAIFdlYkNvcmU6OlNlc3Npb25JRCBTZXNzaW9uOjpnZXRJRCgpIGNv
bnMKIAogU2Vzc2lvbjo6flNlc3Npb24oKQogewotI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1Mp
CiAgICAgaWYgKG1fc2Vzc2lvbklELmlzRXBoZW1lcmFsKCkpIHsKICAgICAgICAgZm9yIChhdXRv
JiBwcm9jZXNzUG9vbCA6IFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OmFsbFByb2Nlc3NQb29scygp
KQogICAgICAgICAgICAgcHJvY2Vzc1Bvb2wtPnNlbmRUb05ldHdvcmtpbmdQcm9jZXNzKE1lc3Nh
Z2VzOjpOZXR3b3JrUHJvY2Vzczo6RGVzdHJveVByaXZhdGVCcm93c2luZ1Nlc3Npb24obV9zZXNz
aW9uSUQpKTsKICAgICB9Ci0jZW5kaWYKIH0KIAogfSAvLyBuYW1lc3BhY2UgQVBJCkluZGV4OiBT
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tBUElDYXN0LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLQVBJQ2FzdC5oCShyZXZpc2lvbiAxOTI2
MDEpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tBUElDYXN0LmgJKHdvcmtp
bmcgY29weSkKQEAgLTMyLDcgKzMyLDYgQEAKICNpbmNsdWRlICJIVFRQQ29va2llQWNjZXB0UG9s
aWN5LmgiCiAjaW5jbHVkZSAiSW5qZWN0ZWRCdW5kbGVIaXRUZXN0UmVzdWx0TWVkaWFUeXBlLmgi
CiAjaW5jbHVkZSAiUGx1Z2luTW9kdWxlSW5mby5oIgotI2luY2x1ZGUgIlByb2Nlc3NNb2RlbC5o
IgogI2luY2x1ZGUgIlJlc291cmNlQ2FjaGVzVG9DbGVhci5oIgogI2luY2x1ZGUgIldLQnVuZGxl
SGl0VGVzdFJlc3VsdC5oIgogI2luY2x1ZGUgIldLQ29udGV4dC5oIgpAQCAtMjMwLDMxICsyMjks
NiBAQCBpbmxpbmUgV0tDYWNoZU1vZGVsIHRvQVBJKENhY2hlTW9kZWwgY2FjCiAgICAgcmV0dXJu
IGtXS0NhY2hlTW9kZWxEb2N1bWVudFZpZXdlcjsKIH0KIAotaW5saW5lIFByb2Nlc3NNb2RlbCB0
b1Byb2Nlc3NNb2RlbChXS1Byb2Nlc3NNb2RlbCB3a1Byb2Nlc3NNb2RlbCkKLXsKLSAgICBzd2l0
Y2ggKHdrUHJvY2Vzc01vZGVsKSB7Ci0gICAgY2FzZSBrV0tQcm9jZXNzTW9kZWxTaGFyZWRTZWNv
bmRhcnlQcm9jZXNzOgotICAgICAgICByZXR1cm4gUHJvY2Vzc01vZGVsU2hhcmVkU2Vjb25kYXJ5
UHJvY2VzczsKLSAgICBjYXNlIGtXS1Byb2Nlc3NNb2RlbE11bHRpcGxlU2Vjb25kYXJ5UHJvY2Vz
c2VzOgotICAgICAgICByZXR1cm4gUHJvY2Vzc01vZGVsTXVsdGlwbGVTZWNvbmRhcnlQcm9jZXNz
ZXM7Ci0gICAgfQotCi0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIFByb2Nl
c3NNb2RlbFNoYXJlZFNlY29uZGFyeVByb2Nlc3M7Ci19Ci0KLWlubGluZSBXS1Byb2Nlc3NNb2Rl
bCB0b0FQSShQcm9jZXNzTW9kZWwgcHJvY2Vzc01vZGVsKQotewotICAgIHN3aXRjaCAocHJvY2Vz
c01vZGVsKSB7Ci0gICAgY2FzZSBQcm9jZXNzTW9kZWxTaGFyZWRTZWNvbmRhcnlQcm9jZXNzOgot
ICAgICAgICByZXR1cm4ga1dLUHJvY2Vzc01vZGVsU2hhcmVkU2Vjb25kYXJ5UHJvY2VzczsKLSAg
ICBjYXNlIFByb2Nlc3NNb2RlbE11bHRpcGxlU2Vjb25kYXJ5UHJvY2Vzc2VzOgotICAgICAgICBy
ZXR1cm4ga1dLUHJvY2Vzc01vZGVsTXVsdGlwbGVTZWNvbmRhcnlQcm9jZXNzZXM7Ci0gICAgfQot
ICAgIAotICAgIHJldHVybiBrV0tQcm9jZXNzTW9kZWxTaGFyZWRTZWNvbmRhcnlQcm9jZXNzOwot
fQotCiBpbmxpbmUgRm9udFNtb290aGluZ0xldmVsIHRvRm9udFNtb290aGluZ0xldmVsKFdLRm9u
dFNtb290aGluZ0xldmVsIHdrTGV2ZWwpCiB7CiAgICAgc3dpdGNoICh3a0xldmVsKSB7CkluZGV4
OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0LmNwcAkocmV2aXNp
b24gMTkyNjAxKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTMyOSwxNiArMzI5LDYgQEAgV0tDYWNoZU1vZGVsIFdLQ29u
dGV4dEdldENhY2hlTW9kZWwoV0tDbwogICAgIHJldHVybiB0b0FQSSh0b0ltcGwoY29udGV4dFJl
ZiktPmNhY2hlTW9kZWwoKSk7CiB9CiAKLXZvaWQgV0tDb250ZXh0U2V0UHJvY2Vzc01vZGVsKFdL
Q29udGV4dFJlZiBjb250ZXh0UmVmLCBXS1Byb2Nlc3NNb2RlbCBwcm9jZXNzTW9kZWwpCi17Ci0g
ICAgdG9JbXBsKGNvbnRleHRSZWYpLT5zZXRQcm9jZXNzTW9kZWwodG9Qcm9jZXNzTW9kZWwocHJv
Y2Vzc01vZGVsKSk7Ci19Ci0KLVdLUHJvY2Vzc01vZGVsIFdLQ29udGV4dEdldFByb2Nlc3NNb2Rl
bChXS0NvbnRleHRSZWYgY29udGV4dFJlZikKLXsKLSAgICByZXR1cm4gdG9BUEkodG9JbXBsKGNv
bnRleHRSZWYpLT5wcm9jZXNzTW9kZWwoKSk7Ci19Ci0KIHZvaWQgV0tDb250ZXh0U2V0TWF4aW11
bU51bWJlck9mUHJvY2Vzc2VzKFdLQ29udGV4dFJlZiBjb250ZXh0UmVmLCB1bnNpZ25lZCBudW1i
ZXJPZlByb2Nlc3NlcykKIHsKICAgICB0b0ltcGwoY29udGV4dFJlZiktPnNldE1heGltdW1OdW1i
ZXJPZlByb2Nlc3NlcyhudW1iZXJPZlByb2Nlc3Nlcyk7CkBAIC01NTQsMTEgKzU0NCw2IEBAIHZv
aWQgV0tDb250ZXh0U2V0SmF2YVNjcmlwdEdhcmJhZ2VDb2xsZWMKICAgICB0b0ltcGwoY29udGV4
dFJlZiktPnNldEphdmFTY3JpcHRHYXJiYWdlQ29sbGVjdG9yVGltZXJFbmFibGVkKGVuYWJsZSk7
CiB9CiAKLXZvaWQgV0tDb250ZXh0U2V0VXNlc05ldHdvcmtQcm9jZXNzKFdLQ29udGV4dFJlZiBj
b250ZXh0UmVmLCBib29sIHVzZXNOZXR3b3JrUHJvY2VzcykKLXsKLSAgICB0b0ltcGwoY29udGV4
dFJlZiktPnNldFVzZXNOZXR3b3JrUHJvY2Vzcyh1c2VzTmV0d29ya1Byb2Nlc3MpOwotfQotCiB2
b2lkIFdLQ29udGV4dFVzZVRlc3RpbmdOZXR3b3JrU2Vzc2lvbihXS0NvbnRleHRSZWYgY29udGV4
dCkKIHsKICAgICB0b0ltcGwoY29udGV4dCktPnVzZVRlc3RpbmdOZXR3b3JrU2Vzc2lvbigpOwpJ
bmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHQuaAkocmV2aXNp
b24gMTkyNjAxKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dC5o
CSh3b3JraW5nIGNvcHkpCkBAIC03NSw2ICs3NSw3IEBAIHR5cGVkZWYgc3RydWN0IFdLQ29udGV4
dENsaWVudFYxIHsKICAgICBXS0NvbnRleHRDb3B5V2ViQ3J5cHRvTWFzdGVyS2V5Q2FsbGJhY2sg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvcHlXZWJDcnlwdG9NYXN0ZXJLZXk7CiB9IFdL
Q29udGV4dENsaWVudFYxOwogCisvLyBGSVhNRTogVGhlc2UgY2FuIGJlIHJlbW92ZWQgb25jZSB3
ZSBhcmUgbm8gbG9uZ2VyIHN1cHBvcnRpbmcgTWF2ZXJpY2tzLgogZW51bSB7CiAgICAga1dLUHJv
Y2Vzc01vZGVsU2hhcmVkU2Vjb25kYXJ5UHJvY2VzcyA9IDAsCiAgICAga1dLUHJvY2Vzc01vZGVs
TXVsdGlwbGVTZWNvbmRhcnlQcm9jZXNzZXMgPSAxCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL0MvbWFjL1dLQ29udGV4dFByaXZhdGVNYWMubW0KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL21hYy9XS0NvbnRleHRQcml2YXRlTWFjLm1tCShy
ZXZpc2lvbiAxOTI2MDEpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvbWFjL1dL
Q29udGV4dFByaXZhdGVNYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTE2NiwxMCArMTY2LDUgQEAg
Ym9vbCBXS0NvbnRleHRTaG91bGRTdWdnZXN0QmxvY2tXZWJHTCgpCiAKIHBpZF90IFdLQ29udGV4
dEdldE5ldHdvcmtQcm9jZXNzSWRlbnRpZmllcihXS0NvbnRleHRSZWYgY29udGV4dFJlZikKIHsK
LSNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQogICAgIHJldHVybiB0b0ltcGwoY29udGV4dFJl
ZiktPm5ldHdvcmtQcm9jZXNzSWRlbnRpZmllcigpOwotI2Vsc2UKLSAgICBVTlVTRURfUEFSQU0o
Y29udGV4dFJlZik7Ci0gICAgcmV0dXJuIDA7Ci0jZW5kaWYKIH0KSW5kZXg6IFNvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzR3JvdXAubW0KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NHcm91cC5tbQkocmV2
aXNpb24gMTkyNjAxKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1By
b2Nlc3NHcm91cC5tbQkod29ya2luZyBjb3B5KQpAQCAtMTkyLDEwICsxOTIsNiBAQCAtIChpZClp
bml0V2l0aEluamVjdGVkQnVuZGxlVVJMOihOU1VSTCAqCiAKICAgICBhdXRvIGNvbmZpZ3VyYXRp
b24gPSBBUEk6OlByb2Nlc3NQb29sQ29uZmlndXJhdGlvbjo6Y3JlYXRlV2l0aExlZ2FjeU9wdGlv
bnMoKTsKICAgICBjb25maWd1cmF0aW9uLT5zZXRJbmplY3RlZEJ1bmRsZVBhdGgoYnVuZGxlVVJM
ID8gU3RyaW5nKGJ1bmRsZVVSTC5wYXRoKSA6IFN0cmluZygpKTsKLSNpZiBQTEFURk9STShJT1Mp
Ci0gICAgY29uZmlndXJhdGlvbi0+c2V0VXNlTmV0d29ya1Byb2Nlc3ModHJ1ZSk7Ci0gICAgY29u
ZmlndXJhdGlvbi0+c2V0UHJvY2Vzc01vZGVsKFByb2Nlc3NNb2RlbE11bHRpcGxlU2Vjb25kYXJ5
UHJvY2Vzc2VzKTsKLSNlbmRpZgogCiAgICAgX3Byb2Nlc3NQb29sID0gV2ViUHJvY2Vzc1Bvb2w6
OmNyZWF0ZShjb25maWd1cmF0aW9uKTsKIApJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29sLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9vbC5tbQkocmV2aXNpb24gMTkyNjAxKQor
KysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29sLm1tCSh3
b3JraW5nIGNvcHkpCkBAIC0zMCw3ICszMCw2IEBACiAKICNpbXBvcnQgIkNhY2hlTW9kZWwuaCIK
ICNpbXBvcnQgIkRvd25sb2FkQ2xpZW50LmgiCi0jaW1wb3J0ICJQcm9jZXNzTW9kZWwuaCIKICNp
bXBvcnQgIlNhbmRib3hVdGlsaXRpZXMuaCIKICNpbXBvcnQgIldLT2JqZWN0LmgiCiAjaW1wb3J0
ICJXZWFrT2JqQ1B0ci5oIgpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwv
ZXdrX2NvbnRleHQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvZWZsL2V3a19jb250ZXh0LmNwcAkocmV2aXNpb24gMTkyNjAxKQorKysgU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2NvbnRleHQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01
NzAsMjkgKzU3MCwxOCBAQCB2b2lkIGV3a19jb250ZXh0X21lc3NhZ2VfZnJvbV9leHRlbnNpb25z
CiAKIEVpbmFfQm9vbCBld2tfY29udGV4dF9wcm9jZXNzX21vZGVsX3NldChFd2tfQ29udGV4dCog
ZXdrQ29udGV4dCwgRXdrX1Byb2Nlc3NfTW9kZWwgcHJvY2Vzc01vZGVsKQogewotI2lmIEVOQUJM
RShORVRXT1JLX1BST0NFU1MpCiAgICAgRVdLX09CSl9HRVRfSU1QTF9PUl9SRVRVUk4oRXdrQ29u
dGV4dCwgZXdrQ29udGV4dCwgaW1wbCwgZmFsc2UpOwogCiAgICAgaW1wbC0+c2V0UHJvY2Vzc01v
ZGVsKHByb2Nlc3NNb2RlbCk7CiAKICAgICByZXR1cm4gdHJ1ZTsKLSNlbHNlCi0gICAgVU5VU0VE
X1BBUkFNKGV3a0NvbnRleHQpOwotICAgIFVOVVNFRF9QQVJBTShwcm9jZXNzTW9kZWwpOwotICAg
IHJldHVybiBmYWxzZTsKLSNlbmRpZgogfQogCiBFd2tfUHJvY2Vzc19Nb2RlbCBld2tfY29udGV4
dF9wcm9jZXNzX21vZGVsX2dldChjb25zdCBFd2tfQ29udGV4dCogZXdrQ29udGV4dCkKIHsKLSNp
ZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQogICAgIEVXS19PQkpfR0VUX0lNUExfT1JfUkVUVVJO
KGNvbnN0IEV3a0NvbnRleHQsIGV3a0NvbnRleHQsIGltcGwsIEVXS19QUk9DRVNTX01PREVMX1NI
QVJFRF9TRUNPTkRBUlkpOwogCiAgICAgcmV0dXJuIGltcGwtPnByb2Nlc3NNb2RlbCgpOwotI2Vs
c2UKLSAgICBVTlVTRURfUEFSQU0oZXdrQ29udGV4dCk7Ci0gICAgcmV0dXJuIEVXS19QUk9DRVNT
X01PREVMX1NIQVJFRF9TRUNPTkRBUlk7Ci0jZW5kaWYKIH0KIAogRXdrX1RMU19FcnJvcl9Qb2xp
Y3kgZXdrX2NvbnRleHRfdGxzX2Vycm9yX3BvbGljeV9nZXQoY29uc3QgRXdrX0NvbnRleHQqIGNv
bnRleHQpCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Bv
b2xDb2NvYS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2Ev
V2ViUHJvY2Vzc1Bvb2xDb2NvYS5tbQkocmV2aXNpb24gMTkyNjAxKQorKysgU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQb29sQ29jb2EubW0JKHdvcmtpbmcgY29weSkK
QEAgLTI2LDYgKzI2LDggQEAKICNpbXBvcnQgImNvbmZpZy5oIgogI2ltcG9ydCAiV2ViUHJvY2Vz
c1Bvb2wuaCIKIAorI2ltcG9ydCAiTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaCIK
KyNpbXBvcnQgIk5ldHdvcmtQcm9jZXNzUHJveHkuaCIKICNpbXBvcnQgIlBsdWdpblByb2Nlc3NN
YW5hZ2VyLmgiCiAjaW1wb3J0ICJTYW5kYm94VXRpbGl0aWVzLmgiCiAjaW1wb3J0ICJUZXh0Q2hl
Y2tlci5oIgpAQCAtNDcsMTEgKzQ5LDYgQEAKICNpbXBvcnQgPFdlYkNvcmUvUnVudGltZUFwcGxp
Y2F0aW9uQ2hlY2tzLmg+CiAjaW1wb3J0IDxzeXMvcGFyYW0uaD4KIAotI2lmIEVOQUJMRShORVRX
T1JLX1BST0NFU1MpCi0jaW1wb3J0ICJOZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5o
IgotI2ltcG9ydCAiTmV0d29ya1Byb2Nlc3NQcm94eS5oIgotI2VuZGlmCi0KICNpZiBQTEFURk9S
TShJT1MpCiAjaW1wb3J0ICJBcmd1bWVudENvZGVyc0NGLmgiCiAjaW1wb3J0ICJXZWJNZW1vcnlQ
cmVzc3VyZUhhbmRsZXJJT1MuaCIKQEAgLTc2LDEwICs3Myw4IEBAIHN0YXRpYyBOU1N0cmluZyAq
V2ViS2l0QXBwbGljYXRpb25EaWRDaGEKIC8vIEZJWE1FOiA8cmRhcjovL3Byb2JsZW0vOTEzODgx
Nz4gLSBBZnRlciB0aGlzICJiYWNrd2FyZHMgY29tcGF0aWJpbGl0eSIgcmFkYXIgaXMgcmVtb3Zl
ZCwgdGhpcyBjb2RlIHNob3VsZCBiZSByZW1vdmVkIHRvIG9ubHkgcmV0dXJuIGFuIGVtcHR5IFN0
cmluZy4KIE5TU3RyaW5nICpXZWJJY29uRGF0YWJhc2VEaXJlY3RvcnlEZWZhdWx0c0tleSA9IEAi
V2ViSWNvbkRhdGFiYXNlRGlyZWN0b3J5RGVmYXVsdHNLZXkiOwogCi0jaWYgRU5BQkxFKE5FVFdP
UktfUFJPQ0VTUykKIHN0YXRpYyBOU1N0cmluZyAqIGNvbnN0IFdlYktpdDJIVFRQUHJveHlEZWZh
dWx0c0tleSA9IEAiV2ViS2l0MkhUVFBQcm94eSI7CiBzdGF0aWMgTlNTdHJpbmcgKiBjb25zdCBX
ZWJLaXQySFRUUFNQcm94eURlZmF1bHRzS2V5ID0gQCJXZWJLaXQySFRUUFNQcm94eSI7Ci0jZW5k
aWYKIAogI2lmIEVOQUJMRShORVRXT1JLX0NBQ0hFKQogc3RhdGljIE5TU3RyaW5nICogY29uc3Qg
V2ViS2l0TmV0d29ya0NhY2hlRW5hYmxlZERlZmF1bHRzS2V5ID0gQCJXZWJLaXROZXR3b3JrQ2Fj
aGVFbmFibGVkIjsKQEAgLTExOSwxMCArMTE0LDggQEAgc3RhdGljIHZvaWQgcmVnaXN0ZXJVc2Vy
RGVmYXVsdHNJZk5lZWRlZAogCiB2b2lkIFdlYlByb2Nlc3NQb29sOjp1cGRhdGVQcm9jZXNzU3Vw
cHJlc3Npb25TdGF0ZSgpCiB7Ci0jaWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKLSAgICBpZiAo
dXNlc05ldHdvcmtQcm9jZXNzKCkgJiYgbV9uZXR3b3JrUHJvY2VzcykKKyAgICBpZiAobV9uZXR3
b3JrUHJvY2VzcykKICAgICAgICAgbV9uZXR3b3JrUHJvY2Vzcy0+c2V0UHJvY2Vzc1N1cHByZXNz
aW9uRW5hYmxlZChwcm9jZXNzU3VwcHJlc3Npb25FbmFibGVkKCkpOwotI2VuZGlmCiAKICNpZiBF
TkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQSSkKICAgICBpZiAoIW1fcHJvY2Vzc1N1cHByZXNzaW9u
RGlzYWJsZWRGb3JQYWdlQ291bnRlci52YWx1ZSgpKQpAQCAtMTk3LDE1ICsxOTAsNiBAQCB2b2lk
IFdlYlByb2Nlc3NQb29sOjpwbGF0Zm9ybUluaXRpYWxpemVXCiAKICAgICBwYXJhbWV0ZXJzLnVp
UHJvY2Vzc0J1bmRsZUlkZW50aWZpZXIgPSBTdHJpbmcoW1tOU0J1bmRsZSBtYWluQnVuZGxlXSBi
dW5kbGVJZGVudGlmaWVyXSk7CiAKLSNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQotICAgIGlm
ICghdXNlc05ldHdvcmtQcm9jZXNzKCkpIHsKLSNlbmRpZgotICAgICAgICBmb3IgKGNvbnN0IGF1
dG8mIHNjaGVtZSA6IGdsb2JhbFVSTFNjaGVtZXNXaXRoQ3VzdG9tUHJvdG9jb2xIYW5kbGVycygp
KQotICAgICAgICAgICAgcGFyYW1ldGVycy51cmxTY2hlbWVzUmVnaXN0ZXJlZEZvckN1c3RvbVBy
b3RvY29scy5hcHBlbmQoc2NoZW1lKTsKLSNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQotICAg
IH0KLSNlbmRpZgotCiAgICAgcGFyYW1ldGVycy5mb250V2hpdGVsaXN0ID0gbV9mb250V2hpdGVs
aXN0OwogCiAgICAgaWYgKG1fYnVuZGxlUGFyYW1ldGVycykgewpAQCAtMjM2LDcgKzIyMCw2IEBA
IHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnBsYXRmb3JtSW5pdGlhbGl6ZVcKICNlbmRpZgogfQogCi0j
aWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnBsYXRmb3Jt
SW5pdGlhbGl6ZU5ldHdvcmtQcm9jZXNzKE5ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJz
JiBwYXJhbWV0ZXJzKQogewogICAgIE5TVVJMQ2FjaGUgKnVybENhY2hlID0gW05TVVJMQ2FjaGUg
c2hhcmVkVVJMQ2FjaGVdOwpAQCAtMjcxLDcgKzI1NCw2IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6
OnBsYXRmb3JtSW5pdGlhbGl6ZU4KICAgICBwYXJhbWV0ZXJzLnVpUHJvY2Vzc0Nvb2tpZVN0b3Jh
Z2VJZGVudGlmaWVyLmFwcGVuZChDRkRhdGFHZXRCeXRlUHRyKGNvb2tpZVN0b3JhZ2VEYXRhLmdl
dCgpKSwgQ0ZEYXRhR2V0TGVuZ3RoKGNvb2tpZVN0b3JhZ2VEYXRhLmdldCgpKSk7CiAjZW5kaWYK
IH0KLSNlbmRpZgogCiB2b2lkIFdlYlByb2Nlc3NQb29sOjpwbGF0Zm9ybUludmFsaWRhdGVDb250
ZXh0KCkKIHsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxv
YWRQcm94eS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Rvd25s
b2Fkcy9Eb3dubG9hZFByb3h5LmNwcAkocmV2aXNpb24gMTkyNjAxKQorKysgU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZFByb3h5LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMzEsMTYgKzMxLDEzIEBACiAjaW5jbHVkZSAiQXV0aGVudGljYXRpb25DaGFsbGVuZ2VQcm94
eS5oIgogI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlICJEb3dubG9hZFByb3h5
TWFwLmgiCisjaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3NNZXNzYWdlcy5oIgorI2luY2x1ZGUgIk5l
dHdvcmtQcm9jZXNzUHJveHkuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzTWVzc2FnZXMuaCIKICNp
bmNsdWRlICJXZWJQcm9jZXNzUG9vbC5oIgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4K
ICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAotI2lmIEVOQUJMRShORVRXT1JLX1BS
T0NFU1MpCi0jaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3NNZXNzYWdlcy5oIgotI2luY2x1ZGUgIk5l
dHdvcmtQcm9jZXNzUHJveHkuaCIKLSNlbmRpZgotCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsK
IAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC03NCwxNSArNzEsOCBAQCB2b2lkIERvd25sb2FkUHJv
eHk6OmNhbmNlbCgpCiAgICAgaWYgKCFtX3Byb2Nlc3NQb29sKQogICAgICAgICByZXR1cm47CiAK
LSNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQotICAgIGlmIChtX3Byb2Nlc3NQb29sLT51c2Vz
TmV0d29ya1Byb2Nlc3MoKSkgewotICAgICAgICBpZiAoTmV0d29ya1Byb2Nlc3NQcm94eSogbmV0
d29ya1Byb2Nlc3MgPSBtX3Byb2Nlc3NQb29sLT5uZXR3b3JrUHJvY2VzcygpKQotICAgICAgICAg
ICAgbmV0d29ya1Byb2Nlc3MtPmNvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6TmV0d29ya1By
b2Nlc3M6OkNhbmNlbERvd25sb2FkKG1fZG93bmxvYWRJRCksIDApOwotICAgICAgICByZXR1cm47
Ci0gICAgfQotI2VuZGlmCi0KLSAgICBtX3Byb2Nlc3NQb29sLT5zZW5kVG9BbGxQcm9jZXNzZXMo
TWVzc2FnZXM6OldlYlByb2Nlc3M6OkNhbmNlbERvd25sb2FkKG1fZG93bmxvYWRJRCkpOworICAg
IGlmIChOZXR3b3JrUHJvY2Vzc1Byb3h5KiBuZXR3b3JrUHJvY2VzcyA9IG1fcHJvY2Vzc1Bvb2wt
Pm5ldHdvcmtQcm9jZXNzKCkpCisgICAgICAgIG5ldHdvcmtQcm9jZXNzLT5jb25uZWN0aW9uKCkt
PnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpDYW5jZWxEb3dubG9hZChtX2Rvd25sb2Fk
SUQpLCAwKTsKIH0KIAogdm9pZCBEb3dubG9hZFByb3h5OjppbnZhbGlkYXRlKCkKSW5kZXg6IFNv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9MYXVuY2hlci9Qcm9jZXNzTGF1bmNoZXIuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9MYXVuY2hlci9Qcm9jZXNzTGF1bmNo
ZXIuY3BwCShyZXZpc2lvbiAxOTI2MDEpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTGF1
bmNoZXIvUHJvY2Vzc0xhdW5jaGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODQsMTAgKzg0LDgg
QEAgY29uc3QgY2hhciogUHJvY2Vzc0xhdW5jaGVyOjpwcm9jZXNzVHlwZQogICAgIGNhc2UgUGx1
Z2luUHJvY2VzczoKICAgICAgICAgcmV0dXJuICJwbHVnaW5wcm9jZXNzIjsKICNlbmRpZgotI2lm
IEVOQUJMRShORVRXT1JLX1BST0NFU1MpCiAgICAgY2FzZSBOZXR3b3JrUHJvY2VzczoKICAgICAg
ICAgcmV0dXJuICJuZXR3b3JrcHJvY2VzcyI7Ci0jZW5kaWYKICNpZiBFTkFCTEUoREFUQUJBU0Vf
UFJPQ0VTUykKICAgICBjYXNlIERhdGFiYXNlUHJvY2VzczoKICAgICAgICAgcmV0dXJuICJkYXRh
YmFzZXByb2Nlc3MiOwpAQCAtMTEyLDEyICsxMTAsMTAgQEAgYm9vbCBQcm9jZXNzTGF1bmNoZXI6
OmdldFByb2Nlc3NUeXBlRnJvbQogICAgIH0KICNlbmRpZgogCi0jaWYgRU5BQkxFKE5FVFdPUktf
UFJPQ0VTUykKICAgICBpZiAoIXN0cmNtcChzdHJpbmcsICJuZXR3b3JrcHJvY2VzcyIpKSB7CiAg
ICAgICAgIHByb2Nlc3NUeXBlID0gTmV0d29ya1Byb2Nlc3M7CiAgICAgICAgIHJldHVybiB0cnVl
OwogICAgIH0KLSNlbmRpZgogCiAjaWYgRU5BQkxFKERBVEFCQVNFX1BST0NFU1MpCiAgICAgaWYg
KCFzdHJjbXAoc3RyaW5nLCAiZGF0YWJhc2Vwcm9jZXNzIikpIHsKSW5kZXg6IFNvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9MYXVuY2hlci9Qcm9jZXNzTGF1bmNoZXIuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTGF1bmNoZXIvUHJvY2Vzc0xhdW5jaGVyLmgJKHJldmlz
aW9uIDE5MjYwMSkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9MYXVuY2hlci9Qcm9jZXNz
TGF1bmNoZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNTAsOSArNTAsNyBAQCBwdWJsaWM6CiAjaWYg
RU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpCiAgICAgICAgIFBsdWdpblByb2Nlc3MsCiAjZW5k
aWYKLSNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQogICAgICAgICBOZXR3b3JrUHJvY2VzcywK
LSNlbmRpZgogI2lmIEVOQUJMRShEQVRBQkFTRV9QUk9DRVNTKQogICAgICAgICBEYXRhYmFzZVBy
b2Nlc3MsCiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9MYXVuY2hlci9l
ZmwvUHJvY2Vzc0xhdW5jaGVyRWZsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvTGF1bmNoZXIvZWZsL1Byb2Nlc3NMYXVuY2hlckVmbC5jcHAJKHJldmlzaW9uIDE5
MjYwMSkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9MYXVuY2hlci9lZmwvUHJvY2Vzc0xh
dW5jaGVyRWZsLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTE0LDExICsxMTQsOSBAQCB2b2lkIFBy
b2Nlc3NMYXVuY2hlcjo6bGF1bmNoUHJvY2VzcygpCiAgICAgICAgIHBsdWdpblBhdGggPSBtX2xh
dW5jaE9wdGlvbnMuZXh0cmFJbml0aWFsaXphdGlvbkRhdGEuZ2V0KCJwbHVnaW4tcGF0aCIpOwog
ICAgICAgICBicmVhazsKICNlbmRpZgotI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCiAgICAg
Y2FzZSBOZXR3b3JrUHJvY2VzczoKICAgICAgICAgZXhlY3V0YWJsZVBhdGggPSBleGVjdXRhYmxl
UGF0aE9mTmV0d29ya1Byb2Nlc3MoKTsKICAgICAgICAgYnJlYWs7Ci0jZW5kaWYKICNpZiBFTkFC
TEUoREFUQUJBU0VfUFJPQ0VTUykKICAgICBjYXNlIERhdGFiYXNlUHJvY2VzczoKICAgICAgICAg
ZXhlY3V0YWJsZVBhdGggPSBleGVjdXRhYmxlUGF0aE9mRGF0YWJhc2VQcm9jZXNzKCk7CkluZGV4
OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTGF1bmNoZXIvZ3RrL1Byb2Nlc3NMYXVuY2hlckd0
ay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0xhdW5jaGVyL2d0
ay9Qcm9jZXNzTGF1bmNoZXJHdGsuY3BwCShyZXZpc2lvbiAxOTI2MDEpCisrKyBTb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvTGF1bmNoZXIvZ3RrL1Byb2Nlc3NMYXVuY2hlckd0ay5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTc2LDExICs3Niw5IEBAIHZvaWQgUHJvY2Vzc0xhdW5jaGVyOjpsYXVuY2hQ
cm9jZXNzKCkKICAgICAgICAgcmVhbFBsdWdpblBhdGggPSBmaWxlU3lzdGVtUmVwcmVzZW50YXRp
b24ocGx1Z2luUGF0aCk7CiAgICAgICAgIGJyZWFrOwogI2VuZGlmCi0jaWYgRU5BQkxFKE5FVFdP
UktfUFJPQ0VTUykKICAgICBjYXNlIE5ldHdvcmtQcm9jZXNzOgogICAgICAgICBleGVjdXRhYmxl
UGF0aCA9IGV4ZWN1dGFibGVQYXRoT2ZOZXR3b3JrUHJvY2VzcygpOwogICAgICAgICBicmVhazsK
LSNlbmRpZgogI2lmIEVOQUJMRShEQVRBQkFTRV9QUk9DRVNTKQogICAgIGNhc2UgRGF0YWJhc2VQ
cm9jZXNzOgogICAgICAgICBleGVjdXRhYmxlUGF0aCA9IGV4ZWN1dGFibGVQYXRoT2ZEYXRhYmFz
ZVByb2Nlc3MoKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9MYXVuY2hlci9tYWMv
UHJvY2Vzc0xhdW5jaGVyTWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9MYXVuY2hlci9tYWMvUHJvY2Vzc0xhdW5jaGVyTWFjLm1tCShyZXZpc2lvbiAxOTI2MDEp
CisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTGF1bmNoZXIvbWFjL1Byb2Nlc3NMYXVuY2hl
ck1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtMTA1LDE0ICsxMDUsMTIgQEAgc3RhdGljIFJldGFp
blB0cjxOU1N0cmluZz4gY29tcHV0ZVByb2NlcwogICAgIH0KICNlbmRpZgogCi0jaWYgRU5BQkxF
KE5FVFdPUktfUFJPQ0VTUykKICAgICBpZiAobGF1bmNoT3B0aW9ucy5wcm9jZXNzVHlwZSA9PSBQ
cm9jZXNzTGF1bmNoZXI6Ok5ldHdvcmtQcm9jZXNzKSB7CiAgICAgICAgIE5TU3RyaW5nICpwcm9j
ZXNzUGF0aCA9IFt3ZWJLaXRCdW5kbGUgcGF0aEZvckF1eGlsaWFyeUV4ZWN1dGFibGU6QCJOZXR3
b3JrUHJvY2Vzcy5hcHAiXTsKICAgICAgICAgTlNTdHJpbmcgKnByb2Nlc3NBcHBFeGVjdXRhYmxl
UGF0aCA9IFtbTlNCdW5kbGUgYnVuZGxlV2l0aFBhdGg6cHJvY2Vzc1BhdGhdIGV4ZWN1dGFibGVQ
YXRoXTsKIAogICAgICAgICByZXR1cm4gW1twcm9jZXNzQXBwRXhlY3V0YWJsZVBhdGggc3RyaW5n
QnlEZWxldGluZ0xhc3RQYXRoQ29tcG9uZW50XSBzdHJpbmdCeUFwcGVuZGluZ1BhdGhDb21wb25l
bnQ6QCJTZWNJdGVtU2hpbS5keWxpYiJdOwogICAgIH0KLSNlbmRpZgogCiAgICAgaWYgKGxhdW5j
aE9wdGlvbnMucHJvY2Vzc1R5cGUgPT0gUHJvY2Vzc0xhdW5jaGVyOjpXZWJQcm9jZXNzKSB7CiAg
ICAgICAgIE5TU3RyaW5nICpwcm9jZXNzUGF0aCA9IFt3ZWJLaXRCdW5kbGUgcGF0aEZvckF1eGls
aWFyeUV4ZWN1dGFibGU6QCJXZWJQcm9jZXNzLmFwcCJdOwpAQCAtMTY3LDEyICsxNjUsMTAgQEAg
c3RhdGljIGNvbnN0IGNoYXIqIHNlcnZpY2VOYW1lKGNvbnN0IFBybwogICAgICAgICBpZiAoZm9y
RGV2ZWxvcG1lbnQpCiAgICAgICAgICAgICByZXR1cm4gImNvbS5hcHBsZS5XZWJLaXQuV2ViQ29u
dGVudC5EZXZlbG9wbWVudCI7CiAgICAgICAgIHJldHVybiAiY29tLmFwcGxlLldlYktpdC5XZWJD
b250ZW50IjsKLSNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQogICAgIGNhc2UgUHJvY2Vzc0xh
dW5jaGVyOjpOZXR3b3JrUHJvY2VzczoKICAgICAgICAgaWYgKGZvckRldmVsb3BtZW50KQogICAg
ICAgICAgICAgcmV0dXJuICJjb20uYXBwbGUuV2ViS2l0Lk5ldHdvcmtpbmcuRGV2ZWxvcG1lbnQi
OwogICAgICAgICByZXR1cm4gImNvbS5hcHBsZS5XZWJLaXQuTmV0d29ya2luZyI7Ci0jZW5kaWYK
ICNpZiBFTkFCTEUoREFUQUJBU0VfUFJPQ0VTUykKICAgICBjYXNlIFByb2Nlc3NMYXVuY2hlcjo6
RGF0YWJhc2VQcm9jZXNzOgogICAgICAgICBpZiAoZm9yRGV2ZWxvcG1lbnQpCkBAIC0yMDYsMTIg
KzIwMiw5IEBAIHN0YXRpYyBib29sIHNob3VsZExlYWtCb29zdChjb25zdCBQcm9jZXMKICAgICAv
LyBPbiBpT1MsIGxlYWsgYSBib29zdCBvbnRvIGFsbCBjaGlsZCBwcm9jZXNzZXMKICAgICBVTlVT
RURfUEFSQU0obGF1bmNoT3B0aW9ucyk7CiAgICAgcmV0dXJuIHRydWU7Ci0jZWxpZiBFTkFCTEUo
TkVUV09SS19QUk9DRVNTKQorI2Vsc2UKICAgICAvLyBPbiBNYWMsIGxlYWsgYSBib29zdCBvbnRv
IHRoZSBOZXR3b3JrUHJvY2Vzcy4KICAgICByZXR1cm4gbGF1bmNoT3B0aW9ucy5wcm9jZXNzVHlw
ZSA9PSBQcm9jZXNzTGF1bmNoZXI6Ok5ldHdvcmtQcm9jZXNzOwotI2Vsc2UKLSAgICBVTlVTRURf
UEFSQU0obGF1bmNoT3B0aW9ucyk7Ci0gICAgcmV0dXJuIGZhbHNlOwogI2VuZGlmCiB9CiAgICAg
CkBAIC00ODMsMTEgKzQ3Niw5IEBAIHN0YXRpYyB2b2lkIGNyZWF0ZVByb2Nlc3MoY29uc3QgUHJv
Y2Vzc0wKICAgICAgICAgcHJvY2Vzc1BhdGggPSBbd2ViS2l0QnVuZGxlIHBhdGhGb3JBdXhpbGlh
cnlFeGVjdXRhYmxlOkAiUGx1Z2luUHJvY2Vzcy5hcHAiXTsKICAgICAgICAgYnJlYWs7CiAjZW5k
aWYKLSNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQogICAgIGNhc2UgUHJvY2Vzc0xhdW5jaGVy
OjpOZXR3b3JrUHJvY2VzczoKICAgICAgICAgcHJvY2Vzc1BhdGggPSBbd2ViS2l0QnVuZGxlIHBh
dGhGb3JBdXhpbGlhcnlFeGVjdXRhYmxlOkAiTmV0d29ya1Byb2Nlc3MuYXBwIl07CiAgICAgICAg
IGJyZWFrOwotI2VuZGlmCiAjaWYgRU5BQkxFKERBVEFCQVNFX1BST0NFU1MpCiAgICAgY2FzZSBQ
cm9jZXNzTGF1bmNoZXI6OkRhdGFiYXNlUHJvY2VzczoKICAgICAgICAgcHJvY2Vzc1BhdGggPSBb
d2ViS2l0QnVuZGxlIHBhdGhGb3JBdXhpbGlhcnlFeGVjdXRhYmxlOkAiRGF0YWJhc2VQcm9jZXNz
LmFwcCJdOwpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1By
b2Nlc3NQcm94eS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL05l
dHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAJKHJldmlzaW9uIDE5MjYwMSkKKysrIFNvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yNiw4ICsyNiw2IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVk
ZSAiTmV0d29ya1Byb2Nlc3NQcm94eS5oIgogCi0jaWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykK
LQogI2luY2x1ZGUgIkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHkuaCIKICNpbmNsdWRlICJD
dXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eU1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiRG93bmxvYWRQ
cm94eU1lc3NhZ2VzLmgiCkBAIC0zNzcsNSArMzc1LDMgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzc1By
b3h5OjpzZXRJc0hvbGRpbmdMbwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQotI2VuZGlm
IC8vIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oCShyZXZpc2lvbiAx
OTI2MDEpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vz
c1Byb3h5LmgJKHdvcmtpbmcgY29weSkKQEAgLTI2LDggKzI2LDYgQEAKICNpZm5kZWYgTmV0d29y
a1Byb2Nlc3NQcm94eV9oCiAjZGVmaW5lIE5ldHdvcmtQcm9jZXNzUHJveHlfaAogCi0jaWYgRU5B
QkxFKE5FVFdPUktfUFJPQ0VTUykKLQogI2luY2x1ZGUgIkNoaWxkUHJvY2Vzc1Byb3h5LmgiCiAj
aW5jbHVkZSAiQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHkuaCIKICNpbmNsdWRlICJQcm9jZXNz
TGF1bmNoZXIuaCIKQEAgLTEzMiw2ICsxMzAsNCBAQCBwcml2YXRlOgogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJLaXQKIAotI2VuZGlmIC8vIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCi0KICNlbmRpZiAv
LyBOZXR3b3JrUHJvY2Vzc1Byb3h5X2gKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9O
ZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkubWVzc2FnZXMuaW4KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5tZXNzYWdl
cy5pbgkocmV2aXNpb24gMTkyNjAxKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL05ldHdv
cmsvTmV0d29ya1Byb2Nlc3NQcm94eS5tZXNzYWdlcy5pbgkod29ya2luZyBjb3B5KQpAQCAtMjAs
OCArMjAsNiBAQAogIyBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQogIyBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogCi0jaWYg
RU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKLQogbWVzc2FnZXMgLT4gTmV0d29ya1Byb2Nlc3NQcm94
eSBMZWdhY3lSZWNlaXZlciB7CiAgICAgRGlkQ3JlYXRlTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MoSVBDOjpBdHRhY2htZW50IGNvbm5lY3Rpb25JZGVudGlmaWVyKQogCkBAIC0zOSw1ICsz
NywzIEBAIG1lc3NhZ2VzIC0+IE5ldHdvcmtQcm9jZXNzUHJveHkgTGVnYWN5UmUKICAgICBMb2dT
YW1wbGVkRGlhZ25vc3RpY01lc3NhZ2VXaXRoUmVzdWx0KHVpbnQ2NF90IHBhZ2VJRCwgU3RyaW5n
IG1lc3NhZ2UsIFN0cmluZyBkZXNjcmlwdGlvbiwgdWludDMyX3QgcmVzdWx0KQogICAgIExvZ1Nh
bXBsZWREaWFnbm9zdGljTWVzc2FnZVdpdGhWYWx1ZSh1aW50NjRfdCBwYWdlSUQsIFN0cmluZyBt
ZXNzYWdlLCBTdHJpbmcgZGVzY3JpcHRpb24sIFN0cmluZyB2YWx1ZSkKIH0KLQotI2VuZGlmIC8v
IEVOQUJMRShORVRXT1JLX1BST0NFU1MpCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
TmV0d29yay9tYWMvTmV0d29ya1Byb2Nlc3NQcm94eU1hYy5tbQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvTmV0d29yay9tYWMvTmV0d29ya1Byb2Nlc3NQcm94eU1hYy5t
bQkocmV2aXNpb24gMTkyNjAxKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL05ldHdvcmsv
bWFjL05ldHdvcmtQcm9jZXNzUHJveHlNYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTI4LDggKzI4
LDYgQEAKIAogI2ltcG9ydCAiTmV0d29ya1Byb2Nlc3NNZXNzYWdlcy5oIgogCi0jaWYgRU5BQkxF
KE5FVFdPUktfUFJPQ0VTUykKLQogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIG5hbWVzcGFj
ZSBXZWJLaXQgewpAQCAtNTksNSArNTcsMyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OnBs
YXRmb3JtR2V0TGF1CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAotCi0jZW5kaWYgLy8gRU5B
QkxFKE5FVFdPUktfUFJPQ0VTUykKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9OZXR3
b3JrL3NvdXAvTmV0d29ya1Byb2Nlc3NQcm94eVNvdXAuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9OZXR3b3JrL3NvdXAvTmV0d29ya1Byb2Nlc3NQcm94eVNvdXAu
Y3BwCShyZXZpc2lvbiAxOTI2MDEpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTmV0d29y
ay9zb3VwL05ldHdvcmtQcm9jZXNzUHJveHlTb3VwLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjQs
OSArMjQsOCBAQAogICovCiAKICNpbmNsdWRlICJjb25maWcuaCIKLSNpZiBFTkFCTEUoTkVUV09S
S19QUk9DRVNTKQotCiAjaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3NQcm94eS5oIgorCiAjaW5jbHVk
ZSA8Z2xpYi5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTQzLDUgKzQyLDMgQEAgdm9pZCBO
ZXR3b3JrUHJvY2Vzc1Byb3h5OjpwbGF0Zm9ybUdldExhdQogfQogCiB9Ci0KLSNlbmRpZiAvLyBF
TkFCTEUoTkVUV09SS19QUk9DRVNTKQpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dl
YnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcAkocmV2aXNpb24g
MTkyNjAxKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVE
YXRhU3RvcmUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05NCwxMiArOTQsMTAgQEAgV2Vic2l0ZURh
dGFTdG9yZTo6fldlYnNpdGVEYXRhU3RvcmUoKQogewogICAgIHBsYXRmb3JtRGVzdHJveSgpOwog
Ci0jaWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKICAgICBpZiAobV9zZXNzaW9uSUQuaXNFcGhl
bWVyYWwoKSkgewogICAgICAgICBmb3IgKGF1dG8mIHByb2Nlc3NQb29sIDogV2ViUHJvY2Vzc1Bv
b2w6OmFsbFByb2Nlc3NQb29scygpKQogICAgICAgICAgICAgcHJvY2Vzc1Bvb2wtPnNlbmRUb05l
dHdvcmtpbmdQcm9jZXNzKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6RGVzdHJveVByaXZhdGVC
cm93c2luZ1Nlc3Npb24obV9zZXNzaW9uSUQpKTsKICAgICB9Ci0jZW5kaWYKIH0KIAogdm9pZCBX
ZWJzaXRlRGF0YVN0b3JlOjpjbG9uZVNlc3Npb25EYXRhKFdlYlBhZ2VQcm94eSYgc291cmNlUGFn
ZSwgV2ViUGFnZVByb3h5JiBuZXdQYWdlKQpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L2d0ay9XZWJQcm9jZXNzUG9vbEd0ay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL2d0ay9XZWJQcm9jZXNzUG9vbEd0ay5jcHAJKHJldmlzaW9uIDE5MjYwMSkKKysr
IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsvV2ViUHJvY2Vzc1Bvb2xHdGsuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zMCw2ICszMCw3IEBACiAKICNpbmNsdWRlICJBUElQcm9jZXNzUG9vbENv
bmZpZ3VyYXRpb24uaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCisjaW5jbHVkZSAiTmV0d29ya1By
b2Nlc3NNZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYkNvb2tpZU1hbmFnZXJQcm94eS5oIgogI2lu
Y2x1ZGUgIldlYkluc3BlY3RvclNlcnZlci5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NDcmVhdGlv
blBhcmFtZXRlcnMuaCIKQEAgLTQxLDEwICs0Miw2IEBACiAjaW5jbHVkZSA8d3RmL2dsaWIvR1Vu
aXF1ZVB0ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KIAotI2lmIEVOQUJMRShO
RVRXT1JLX1BST0NFU1MpCi0jaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3NNZXNzYWdlcy5oIgotI2Vu
ZGlmCi0KIG5hbWVzcGFjZSBXZWJLaXQgewogCiBzdGF0aWMgdm9pZCBpbml0SW5zcGVjdG9yU2Vy
dmVyKCkKQEAgLTk4LDE2ICs5NSw2IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnBsYXRmb3JtSW5p
dGlhbGl6ZVcKICAgICAgICAgcGFyYW1ldGVycy51cmxTY2hlbWVzUmVnaXN0ZXJlZEFzTG9jYWwu
YXBwZW5kKCJyZXNvdXJjZSIpOwogICAgIH0KIAotICAgIGlmICghdXNlc05ldHdvcmtQcm9jZXNz
KCkpIHsKLSAgICAgICAgcGFyYW1ldGVycy51cmxTY2hlbWVzUmVnaXN0ZXJlZEZvckN1c3RvbVBy
b3RvY29scyA9IHN1cHBsZW1lbnQ8V2ViU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXI+
KCktPnJlZ2lzdGVyZWRTY2hlbWVzRm9yQ3VzdG9tUHJvdG9jb2xzKCk7Ci0KLSAgICAgICAgc3Vw
cGxlbWVudDxXZWJDb29raWVNYW5hZ2VyUHJveHk+KCktPmdldENvb2tpZVBlcnNpc3RlbnRTdG9y
YWdlKHBhcmFtZXRlcnMuY29va2llUGVyc2lzdGVudFN0b3JhZ2VQYXRoLCBwYXJhbWV0ZXJzLmNv
b2tpZVBlcnNpc3RlbnRTdG9yYWdlVHlwZSk7Ci0gICAgICAgIHBhcmFtZXRlcnMuY29va2llQWNj
ZXB0UG9saWN5ID0gbV9pbml0aWFsSFRUUENvb2tpZUFjY2VwdFBvbGljeTsKLQotICAgICAgICBw
YXJhbWV0ZXJzLmlnbm9yZVRMU0Vycm9ycyA9IG1faWdub3JlVExTRXJyb3JzOwotICAgICAgICBw
YXJhbWV0ZXJzLmRpc2tDYWNoZURpcmVjdG9yeSA9IG1fY29uZmlndXJhdGlvbi0+ZGlza0NhY2hl
RGlyZWN0b3J5KCk7Ci0gICAgfQotCiAgICAgcGFyYW1ldGVycy5tZW1vcnlDYWNoZURpc2FibGVk
ID0gbV9tZW1vcnlDYWNoZURpc2FibGVkIHx8IGNhY2hlTW9kZWwoKSA9PSBDYWNoZU1vZGVsRG9j
dW1lbnRWaWV3ZXI7CiB9CiAKQEAgLTE0OSwxMyArMTM2LDggQEAgU3RyaW5nIFdlYlByb2Nlc3NQ
b29sOjpsZWdhY3lQbGF0Zm9ybURlZgogdm9pZCBXZWJQcm9jZXNzUG9vbDo6c2V0SWdub3JlVExT
RXJyb3JzKGJvb2wgaWdub3JlVExTRXJyb3JzKQogewogICAgIG1faWdub3JlVExTRXJyb3JzID0g
aWdub3JlVExTRXJyb3JzOwotI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCi0gICAgaWYgKHVz
ZXNOZXR3b3JrUHJvY2VzcygpICYmIG5ldHdvcmtQcm9jZXNzKCkpIHsKKyAgICBpZiAobmV0d29y
a1Byb2Nlc3MoKSkKICAgICAgICAgbmV0d29ya1Byb2Nlc3MoKS0+c2VuZChNZXNzYWdlczo6TmV0
d29ya1Byb2Nlc3M6OlNldElnbm9yZVRMU0Vycm9ycyhtX2lnbm9yZVRMU0Vycm9ycyksIDApOwot
ICAgICAgICByZXR1cm47Ci0gICAgfQotI2VuZGlmCi0gICAgc2VuZFRvQWxsUHJvY2Vzc2VzKE1l
c3NhZ2VzOjpXZWJQcm9jZXNzOjpTZXRJZ25vcmVUTFNFcnJvcnMobV9pZ25vcmVUTFNFcnJvcnMp
KTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3Mvc291cC9XZWJQcm9jZXNzUG9vbFNvdXAuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9zb3VwL1dlYlByb2Nlc3NQb29sU291cC5jcHAJKHJldmlzaW9uIDE5
MjYwMSkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9zb3VwL1dlYlByb2Nlc3NQb29sU291
cC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI0LDcgKzI0LDYgQEAKICAqLwogCiAjaW5jbHVkZSAi
Y29uZmlnLmgiCi0jaWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKICNpbmNsdWRlICJXZWJQcm9j
ZXNzUG9vbC5oIgogCiAjaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMu
aCIKQEAgLTQ3LDUgKzQ2LDMgQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6cGxhdGZvcm1Jbml0aWFs
aXplTgogfQogCiB9Ci0KLSNlbmRpZgpJbmRleDogU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYktp
dDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMTkyNjAxKQorKysgU291cmNl
L1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkp
CkBAIC0xNDYwLDcgKzE0NjAsNiBAQAogCQlCQzU3NTA5ODEyNjhGM0M2MDA2RjBGMTIgLyogV2Vi
UG9wdXBNZW51UHJveHlNYWMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBCQzU3NTA5NjEyNjhGM0M2MDA2RjBGMTIgLyogV2ViUG9wdXBNZW51UHJveHlN
YWMubW0gKi87IH07CiAJCUJDNTc1NjEzMTI2RTAxMzgwMDZGMEYxMiAvKiBBUElFcnJvci5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzU3NTYxMjEy
NkUwMTM4MDA2RjBGMTIgLyogQVBJRXJyb3IuY3BwICovOyB9OwogCQlCQzU5NTQ4OTE1Qzc4Njg1
MDBGRDFFM0UgLyogV2ViS2l0Mi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQkM1OTU0ODgxNUM3ODY4NTAwRkQxRTNFIC8qIFdlYktpdDIuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQlCQzU5NzA3NTExNjU5
MUQwMDA1NTFGQ0EgLyogUHJvY2Vzc01vZGVsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBCQzU5NzA3NDExNjU5MUQwMDA1NTFGQ0EgLyogUHJvY2Vzc01v
ZGVsLmggKi87IH07CiAJCUJDNUM3NUM4MTQ5NTREQTYwMEJDNDc3NSAvKiBXS0Nvbm5lY3Rpb25J
bnRlcm5hbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QkM1Qzc1QzYxNDk1NERBNjAwQkM0Nzc1IC8qIFdLQ29ubmVjdGlvbkludGVybmFsLmggKi87IH07
CiAJCUJDNUQyNEExMTZDQzNCOUUwMDdENTQ2MSAvKiBDaGlsZFByb2Nlc3NNYWluLm1tIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkM1RDI0OUYxNkNDM0I5
RTAwN0Q1NDYxIC8qIENoaWxkUHJvY2Vzc01haW4ubW0gKi87IH07CiAJCUJDNUQyNEEyMTZDQzNC
OUUwMDdENTQ2MSAvKiBDaGlsZFByb2Nlc3NNYWluLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkM1RDI0OUYxNkNDM0I5RTAwN0Q1NDYxIC8qIENoaWxk
UHJvY2Vzc01haW4ubW0gKi87IH07CkBAIC0zNzMyLDcgKzM3MzEsNiBAQAogCQlCQzU3NTA5NjEy
NjhGM0M2MDA2RjBGMTIgLyogV2ViUG9wdXBNZW51UHJveHlNYWMubW0gKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXZWJQb3B1cE1lbnVQcm94eU1hYy5tbTsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkM1NzU2MTIxMjZFMDEzODAwNkYwRjEyIC8qIEFQSUVy
cm9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEFQSUVycm9yLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkM1OTU0ODgxNUM3ODY4NTAwRkQxRTNF
IC8qIFdlYktpdDIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViS2l0Mi5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlCQzU5NzA3NDExNjU5MUQwMDA1NTFGQ0Eg
LyogUHJvY2Vzc01vZGVsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFByb2Nl
c3NNb2RlbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQzVDNzVDNjE0OTU0REE2
MDBCQzQ3NzUgLyogV0tDb25uZWN0aW9uSW50ZXJuYWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gV0tDb25uZWN0aW9uSW50ZXJuYWwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJQkM1RDI0OUYxNkNDM0I5RTAwN0Q1NDYxIC8qIENoaWxkUHJvY2Vzc01haW4ubW0g
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBDaGlsZFByb2Nlc3NNYWlu
Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQzVEMjRCODE2Q0M0MEJCMDA3RDU0
NjEgLyogQmFzZUxlZ2FjeVByb2Nlc3MueGNjb25maWcgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnhjY29uZmlnOyBwYXRoID0gQmFzZUxlZ2Fj
eVByb2Nlc3MueGNjb25maWc7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC02MjM4LDcg
KzYyMzYsNiBAQAogCQkJCTFBQzc1MzdBMTgzQTlGREIwMDcyQ0IxNSAvKiBQYWdlTG9hZFN0YXRl
LmggKi8sCiAJCQkJMzc3MTZBNTkxOTVCOTEwNTAwRUU4QjFCIC8qIFByb2Nlc3NBc3NlcnRpb24u
Y3BwICovLAogCQkJCTg2Rjk1MzYwMThGRjRGRDQwMDFEQjJFRiAvKiBQcm9jZXNzQXNzZXJ0aW9u
LmggKi8sCi0JCQkJQkM1OTcwNzQxMTY1OTFEMDAwNTUxRkNBIC8qIFByb2Nlc3NNb2RlbC5oICov
LAogCQkJCTg2RTY3QTIyMTkwRjQxMTgwMDAwNEFCNyAvKiBQcm9jZXNzVGhyb3R0bGVyLmNwcCAq
LywKIAkJCQk4NkU2N0EyMTE5MEY0MTE4MDAwMDRBQjcgLyogUHJvY2Vzc1Rocm90dGxlci5oICov
LAogCQkJCTgzMDQ4QUU1MUFDQTQ1REMwMDgyQzgzMiAvKiBQcm9jZXNzVGhyb3R0bGVyQ2xpZW50
LmggKi8sCkBAIC03OTg5LDcgKzc5ODYsNiBAQAogCQkJCUUxQ0MxQjkwMTJEN0VBREYwMDYyNTgz
OCAvKiBQcmludEluZm8uaCBpbiBIZWFkZXJzICovLAogCQkJCTg2Rjk1MzY1MThGRjU4RjUwMDFE
QjJFRiAvKiBQcm9jZXNzQXNzZXJ0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzFBN0M1ODEx
MzZFMTlDMDBGQjcxNjcgLyogUHJvY2Vzc0xhdW5jaGVyLmggaW4gSGVhZGVycyAqLywKLQkJCQlC
QzU5NzA3NTExNjU5MUQwMDA1NTFGQ0EgLyogUHJvY2Vzc01vZGVsLmggaW4gSGVhZGVycyAqLywK
IAkJCQk4NkU2N0EyNTE5MTBCOUQxMDAwMDRBQjcgLyogUHJvY2Vzc1Rocm90dGxlci5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJODMwNDhBRTYxQUNBNDVEQzAwODJDODMyIC8qIFByb2Nlc3NUaHJvdHRs
ZXJDbGllbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTJEN0YxMzEwMUE3MDJGQkEwMDlBNkZCRCAv
KiBQcm9jZXNzVHlwZS5oIGluIEhlYWRlcnMgKi8sCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlByb2Nlc3MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUHJvY2Vzcy5jcHAJKHJldmlzaW9uIDE5MjYwMSkKKysrIFNvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM3LDYgKzM3LDcg
QEAKICNpbmNsdWRlICJJbmplY3RlZEJ1bmRsZS5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNp
bmNsdWRlICJOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzc01lc3NhZ2VzLmgiCisjaW5jbHVk
ZSAiTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmgiCiAjaW5jbHVkZSAiUGx1Z2luUHJvY2Vzc0Nv
bm5lY3Rpb25NYW5hZ2VyLmgiCiAjaW5jbHVkZSAiU2Vzc2lvblRyYWNrZXIuaCIKICNpbmNsdWRl
ICJTdGF0aXN0aWNzRGF0YS5oIgpAQCAtNjAsNiArNjEsNyBAQAogI2luY2x1ZGUgIldlYlByb2Nl
c3NNZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NQb29sTWVzc2FnZXMuaCIKICNpbmNs
dWRlICJXZWJQcm9jZXNzUHJveHlNZXNzYWdlcy5oIgorI2luY2x1ZGUgIldlYlJlc291cmNlTG9h
ZFNjaGVkdWxlci5oIgogI2luY2x1ZGUgIldlYnNpdGVEYXRhLmgiCiAjaW5jbHVkZSAiV2Vic2l0
ZURhdGFUeXBlcy5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTTG9jay5oPgpAQCAtMTAx
LDEyICsxMDMsOSBAQAogI2luY2x1ZGUgIk9iakNPYmplY3RHcmFwaC5oIgogI2VuZGlmCiAKLSNp
ZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQogI2lmIFBMQVRGT1JNKENPQ09BKQogI2luY2x1ZGUg
IkNvb2tpZVN0b3JhZ2VTaGltLmgiCiAjZW5kaWYKLSNpbmNsdWRlICJOZXR3b3JrUHJvY2Vzc0Nv
bm5lY3Rpb24uaCIKLSNlbmRpZgogCiAjaWYgRU5BQkxFKFNFQ19JVEVNX1NISU0pCiAjaW5jbHVk
ZSAiU2VjSXRlbVNoaW0uaCIKQEAgLTEyNCwxMCArMTIzLDYgQEAKICNpbmNsdWRlICJXZWJCYXR0
ZXJ5TWFuYWdlci5oIgogI2VuZGlmCiAKLSNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQotI2lu
Y2x1ZGUgIldlYlJlc291cmNlTG9hZFNjaGVkdWxlci5oIgotI2VuZGlmCi0KICNpZiBFTkFCTEUo
UkVNT1RFX0lOU1BFQ1RPUikKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9SZW1vdGVJbnNwZWN0
b3IuaD4KICNlbmRpZgpAQCAtMTYxLDExICsxNTYsOCBAQCBXZWJQcm9jZXNzOjpXZWJQcm9jZXNz
KCkKICAgICAsIG1fZnVsbEtleWJvYXJkQWNjZXNzRW5hYmxlZChmYWxzZSkKICAgICAsIG1fdGV4
dENoZWNrZXJTdGF0ZSgpCiAgICAgLCBtX2ljb25EYXRhYmFzZVByb3h5KG5ldyBXZWJJY29uRGF0
YWJhc2VQcm94eSh0aGlzKSkKLSNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQotICAgICwgbV91
c2VzTmV0d29ya1Byb2Nlc3MoZmFsc2UpCiAgICAgLCBtX3dlYlJlc291cmNlTG9hZFNjaGVkdWxl
cihuZXcgV2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVyKQogICAgICwgbV9kbnNQcmVmZXRjaEh5c3Rl
cmVyaXMoW3RoaXNdKEh5c3RlcmVzaXNTdGF0ZSBzdGF0ZSkgeyBpZiAoc3RhdGUgPT0gSHlzdGVy
ZXNpc1N0YXRlOjpTdG9wcGVkKSBtX2Ruc1ByZWZldGNoZWRIb3N0cy5jbGVhcigpOyB9KQotI2Vu
ZGlmCiAjaWYgRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpCiAgICAgLCBtX3BsdWdpblByb2Nl
c3NDb25uZWN0aW9uTWFuYWdlcihQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbk1hbmFnZXI6OmNyZWF0
ZSgpKQogI2VuZGlmCkBAIC0yNTIsMzQgKzI0NCwxMCBAQCB2b2lkIFdlYlByb2Nlc3M6OmluaXRp
YWxpemVDb25uZWN0aW9uKElQCiAgICAgY29ubmVjdGlvbi0+c2V0T25seVNlbmRNZXNzYWdlc0Fz
RGlzcGF0Y2hXaGVuV2FpdGluZ0ZvclN5bmNSZXBseVdoZW5Qcm9jZXNzaW5nU3VjaEFNZXNzYWdl
KHRydWUpOwogfQogCi12b2lkIFdlYlByb2Nlc3M6OmRpZENyZWF0ZURvd25sb2FkKCkKLXsKLSAg
ICBkaXNhYmxlVGVybWluYXRpb24oKTsKLX0KLQotdm9pZCBXZWJQcm9jZXNzOjpkaWREZXN0cm95
RG93bmxvYWQoKQotewotICAgIGVuYWJsZVRlcm1pbmF0aW9uKCk7Ci19Ci0KLUlQQzo6Q29ubmVj
dGlvbiogV2ViUHJvY2Vzczo6ZG93bmxvYWRQcm94eUNvbm5lY3Rpb24oKQotewotICAgIHJldHVy
biBwYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpOwotfQotCi1BdXRoZW50aWNhdGlvbk1hbmFnZXIm
IFdlYlByb2Nlc3M6OmRvd25sb2Fkc0F1dGhlbnRpY2F0aW9uTWFuYWdlcigpCi17Ci0gICAgcmV0
dXJuICpzdXBwbGVtZW50PEF1dGhlbnRpY2F0aW9uTWFuYWdlcj4oKTsKLX0KLQogdm9pZCBXZWJQ
cm9jZXNzOjppbml0aWFsaXplV2ViUHJvY2VzcyhXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJz
JiYgcGFyYW1ldGVycykKIHsKICAgICBBU1NFUlQobV9wYWdlTWFwLmlzRW1wdHkoKSk7CiAKLSNp
ZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQotICAgIG1fdXNlc05ldHdvcmtQcm9jZXNzID0gcGFy
YW1ldGVycy51c2VzTmV0d29ya1Byb2Nlc3M7Ci0jZW5kaWYKLQogI2lmIE9TKExJTlVYKQogICAg
IFdlYkNvcmU6Ok1lbW9yeVByZXNzdXJlSGFuZGxlcjo6UmVsaWVmTG9nZ2VyOjpzZXRMb2dnaW5n
RW5hYmxlZChwYXJhbWV0ZXJzLnNob3VsZEVuYWJsZU1lbW9yeVByZXNzdXJlUmVsaWVmTG9nZ2lu
Zyk7CiAjZW5kaWYKQEAgLTM1OCwxMyArMzI2LDEwIEBAIHZvaWQgV2ViUHJvY2Vzczo6aW5pdGlh
bGl6ZVdlYlByb2Nlc3MoV2UKICAgICBpZiAocGFyYW1ldGVycy5zaG91bGRVc2VUZXN0aW5nTmV0
d29ya1Nlc3Npb24pCiAgICAgICAgIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c3dpdGNoVG9OZXdU
ZXN0aW5nU2Vzc2lvbigpOwogCi0jaWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKICAgICBlbnN1
cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKTsKIAogI2lmIFBMQVRGT1JNKENPQ09BKQotICAg
IGlmICh1c2VzTmV0d29ya1Byb2Nlc3MoKSkKLSAgICAgICAgQ29va2llU3RvcmFnZVNoaW06OnNp
bmdsZXRvbigpLmluaXRpYWxpemUoKTsKLSNlbmRpZgorICAgIENvb2tpZVN0b3JhZ2VTaGltOjpz
aW5nbGV0b24oKS5pbml0aWFsaXplKCk7CiAjZW5kaWYKICAgICBzZXRUZXJtaW5hdGlvblRpbWVv
dXQocGFyYW1ldGVycy50ZXJtaW5hdGlvblRpbWVvdXQpOwogCkBAIC0zOTYsMTIgKzM2MSw4IEBA
IHZvaWQgV2ViUHJvY2Vzczo6aW5pdGlhbGl6ZVdlYlByb2Nlc3MoV2UKICNlbmRpZgogfQogCi0j
aWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKIHZvaWQgV2ViUHJvY2Vzczo6ZW5zdXJlTmV0d29y
a1Byb2Nlc3NDb25uZWN0aW9uKCkKIHsKLSAgICBpZiAoIW1fdXNlc05ldHdvcmtQcm9jZXNzKQot
ICAgICAgICByZXR1cm47Ci0KICAgICBpZiAobV9uZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24pCiAg
ICAgICAgIHJldHVybjsKIApAQCAtNDIyLDcgKzM4Myw2IEBAIHZvaWQgV2ViUHJvY2Vzczo6ZW5z
dXJlTmV0d29ya1Byb2Nlc3NDb24KICAgICAgICAgcmV0dXJuOwogICAgIG1fbmV0d29ya1Byb2Nl
c3NDb25uZWN0aW9uID0gTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uOjpjcmVhdGUoY29ubmVjdGlv
bklkZW50aWZpZXIpOwogfQotI2VuZGlmIC8vIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCiAKIHZv
aWQgV2ViUHJvY2Vzczo6cmVnaXN0ZXJVUkxTY2hlbWVBc0VtcHR5RG9jdW1lbnQoY29uc3QgU3Ry
aW5nJiB1cmxTY2hlbWUpCiB7CkBAIC01MTEsMTQgKzQ3MSw2IEBAIHZvaWQgV2ViUHJvY2Vzczo6
ZGVzdHJveVByaXZhdGVCcm93c2luZ1MKICNlbmRpZgogfQogCi1Eb3dubG9hZE1hbmFnZXImIFdl
YlByb2Nlc3M6OmRvd25sb2FkTWFuYWdlcigpCi17Ci0gICAgQVNTRVJUKCF1c2VzTmV0d29ya1By
b2Nlc3MoKSk7Ci0KLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8RG93bmxvYWRNYW5hZ2VyPiBk
b3dubG9hZE1hbmFnZXIodGhpcyk7Ci0gICAgcmV0dXJuIGRvd25sb2FkTWFuYWdlcjsKLX0KLQog
I2lmIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJKQogUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25N
YW5hZ2VyJiBXZWJQcm9jZXNzOjpwbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbk1hbmFnZXIoKQogewpA
QCAtNTgxLDcgKzUzMyw2IEBAIHZvaWQgV2ViUHJvY2Vzczo6cmVtb3ZlV2ViUGFnZSh1aW50NjRf
dCAKIGJvb2wgV2ViUHJvY2Vzczo6c2hvdWxkVGVybWluYXRlKCkKIHsKICAgICBBU1NFUlQobV9w
YWdlTWFwLmlzRW1wdHkoKSk7Ci0gICAgQVNTRVJUKHVzZXNOZXR3b3JrUHJvY2VzcygpIHx8ICFk
b3dubG9hZE1hbmFnZXIoKS5pc0Rvd25sb2FkaW5nKCkpOwogCiAgICAgLy8gRklYTUU6IHRoZSBT
aG91bGRUZXJtaW5hdGUgbWVzc2FnZSBzaG91bGQgYWxzbyBzZW5kIHRlcm1pbmF0aW9uIHBhcmFt
ZXRlcnMsIHN1Y2ggYXMgYW55IHNlc3Npb24gY29va2llcyB0aGF0IG5lZWQgdG8gYmUgcHJlc2Vy
dmVkLgogICAgIGJvb2wgc2hvdWxkVGVybWluYXRlID0gZmFsc2U7CkBAIC0xMDI1LDIwICs5NzYs
OCBAQCB2b2lkIFdlYlByb2Nlc3M6OnNldEluamVjdGVkQnVuZGxlUGFyYW1lCiAgICAgaW5qZWN0
ZWRCdW5kbGUtPnNldEJ1bmRsZVBhcmFtZXRlcnModmFsdWUpOwogfQogCi1ib29sIFdlYlByb2Nl
c3M6OnVzZXNOZXR3b3JrUHJvY2VzcygpIGNvbnN0Ci17Ci0jaWYgRU5BQkxFKE5FVFdPUktfUFJP
Q0VTUykKLSAgICByZXR1cm4gbV91c2VzTmV0d29ya1Byb2Nlc3M7Ci0jZWxzZQotICAgIHJldHVy
biBmYWxzZTsKLSNlbmRpZgotfQotCi0jaWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKIE5ldHdv
cmtQcm9jZXNzQ29ubmVjdGlvbiogV2ViUHJvY2Vzczo6bmV0d29ya0Nvbm5lY3Rpb24oKQogewot
ICAgIEFTU0VSVChtX3VzZXNOZXR3b3JrUHJvY2Vzcyk7Ci0KICAgICAvLyBJZiB3ZSd2ZSBsb3N0
IG91ciBjb25uZWN0aW9uIHRvIHRoZSBuZXR3b3JrIHByb2Nlc3MgKGUuZy4gaXQgY3Jhc2hlZCkg
dHJ5IHRvIHJlLWVzdGFibGlzaCBpdC4KICAgICBpZiAoIW1fbmV0d29ya1Byb2Nlc3NDb25uZWN0
aW9uKQogICAgICAgICBlbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKTsKQEAgLTEwNjQs
NyArMTAwMyw2IEBAIFdlYlJlc291cmNlTG9hZFNjaGVkdWxlciYgV2ViUHJvY2Vzczo6d2UKIHsK
ICAgICByZXR1cm4gKm1fd2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVyOwogfQotI2VuZGlmIC8vIEVO
QUJMRUQoTkVUV09SS19QUk9DRVNTKQogCiAjaWYgRU5BQkxFKERBVEFCQVNFX1BST0NFU1MpCiB2
b2lkIFdlYlByb2Nlc3M6OndlYlRvRGF0YWJhc2VQcm9jZXNzQ29ubmVjdGlvbkNsb3NlZChXZWJU
b0RhdGFiYXNlUHJvY2Vzc0Nvbm5lY3Rpb24qIGNvbm5lY3Rpb24pCkBAIC0xMTA4LDI3ICsxMDQ2
LDYgQEAgdm9pZCBXZWJQcm9jZXNzOjplbnN1cmVXZWJUb0RhdGFiYXNlUHJvYwogCiAjZW5kaWYg
Ly8gRU5BQkxFRChEQVRBQkFTRV9QUk9DRVNTKQogCi12b2lkIFdlYlByb2Nlc3M6OmRvd25sb2Fk
UmVxdWVzdChTZXNzaW9uSUQgc2Vzc2lvbklELCB1aW50NjRfdCBkb3dubG9hZElELCB1aW50NjRf
dCBpbml0aWF0aW5nUGFnZUlELCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCi17Ci0g
ICAgV2ViUGFnZSogaW5pdGlhdGluZ1BhZ2UgPSBpbml0aWF0aW5nUGFnZUlEID8gd2ViUGFnZShp
bml0aWF0aW5nUGFnZUlEKSA6IDA7Ci0KLSAgICBSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdFdpdGhP
cmlnaW5hbFVSTCA9IHJlcXVlc3Q7Ci0gICAgaWYgKGluaXRpYXRpbmdQYWdlKQotICAgICAgICBp
bml0aWF0aW5nUGFnZS0+bWFpbkZyYW1lKCktPmxvYWRlcigpLnNldE9yaWdpbmFsVVJMRm9yRG93
bmxvYWRSZXF1ZXN0KHJlcXVlc3RXaXRoT3JpZ2luYWxVUkwpOwotCi0gICAgZG93bmxvYWRNYW5h
Z2VyKCkuc3RhcnREb3dubG9hZChzZXNzaW9uSUQsIGRvd25sb2FkSUQsIHJlcXVlc3RXaXRoT3Jp
Z2luYWxVUkwpOwotfQotCi12b2lkIFdlYlByb2Nlc3M6OnJlc3VtZURvd25sb2FkKHVpbnQ2NF90
IGRvd25sb2FkSUQsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgcmVzdW1lRGF0YSwgY29uc3Qg
U3RyaW5nJiBwYXRoLCBjb25zdCBXZWJLaXQ6OlNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYgc2Fu
ZGJveEV4dGVuc2lvbkhhbmRsZSkKLXsKLSAgICBkb3dubG9hZE1hbmFnZXIoKS5yZXN1bWVEb3du
bG9hZChkb3dubG9hZElELCByZXN1bWVEYXRhLCBwYXRoLCBzYW5kYm94RXh0ZW5zaW9uSGFuZGxl
KTsKLX0KLQotdm9pZCBXZWJQcm9jZXNzOjpjYW5jZWxEb3dubG9hZCh1aW50NjRfdCBkb3dubG9h
ZElEKQotewotICAgIGRvd25sb2FkTWFuYWdlcigpLmNhbmNlbERvd25sb2FkKGRvd25sb2FkSUQp
OwotfQotCiB2b2lkIFdlYlByb2Nlc3M6OnNldEVuaGFuY2VkQWNjZXNzaWJpbGl0eShib29sIGZs
YWcpCiB7CiAgICAgV2ViQ29yZTo6QVhPYmplY3RDYWNoZTo6c2V0RW5oYW5jZWRVc2VySW50ZXJm
YWNlQWNjZXNzaWJpbGl0eShmbGFnKTsKQEAgLTE0NzAsMTggKzEzODcsMTIgQEAgdm9pZCBXZWJQ
cm9jZXNzOjpwcmVmZXRjaEROUyhjb25zdCBTdHJpbgogICAgIGlmIChob3N0bmFtZS5pc0VtcHR5
KCkpCiAgICAgICAgIHJldHVybjsKIAotI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCi0gICAg
aWYgKHVzZXNOZXR3b3JrUHJvY2VzcygpKSB7Ci0gICAgICAgIGlmIChtX2Ruc1ByZWZldGNoZWRI
b3N0cy5hZGQoaG9zdG5hbWUpLmlzTmV3RW50cnkpCi0gICAgICAgICAgICBuZXR3b3JrQ29ubmVj
dGlvbigpLT5jb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzOjpQcmVmZXRjaEROUyhob3N0bmFtZSksIDApOwotICAgICAgICAvLyBUaGUgRE5T
IHByZWZldGNoZWQgaG9zdHMgY2FjaGUgaXMgb25seSB0byBhdm9pZCBhc2tpbmcgZm9yIHRoZSBz
YW1lIGhvc3RzIHRvbyBtYW55IHRpbWVzCi0gICAgICAgIC8vIGluIGEgdmVyeSBzaG9ydCBwZXJp
b2Qgb2YgdGltZSwgcHJvZHVjaW5nIGEgbG90IG9mIElQQyB0cmFmZmljLiBTbyB3ZSBjbGVhciB0
aGlzIGNhY2hlIGFmdGVyCi0gICAgICAgIC8vIHNvbWUgdGltZSBvZiBubyBETlMgcmVxdWVzdHMu
Ci0gICAgICAgIG1fZG5zUHJlZmV0Y2hIeXN0ZXJlcmlzLmltcHVsc2UoKTsKLSAgICAgICAgcmV0
dXJuOwotICAgIH0KLSNlbmRpZgotICAgIFdlYkNvcmU6OnByZWZldGNoRE5TKGhvc3RuYW1lKTsK
KyAgICBpZiAobV9kbnNQcmVmZXRjaGVkSG9zdHMuYWRkKGhvc3RuYW1lKS5pc05ld0VudHJ5KQor
ICAgICAgICBuZXR3b3JrQ29ubmVjdGlvbigpLT5jb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6
Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpQcmVmZXRjaEROUyhob3N0bmFtZSksIDAp
OworICAgIC8vIFRoZSBETlMgcHJlZmV0Y2hlZCBob3N0cyBjYWNoZSBpcyBvbmx5IHRvIGF2b2lk
IGFza2luZyBmb3IgdGhlIHNhbWUgaG9zdHMgdG9vIG1hbnkgdGltZXMKKyAgICAvLyBpbiBhIHZl
cnkgc2hvcnQgcGVyaW9kIG9mIHRpbWUsIHByb2R1Y2luZyBhIGxvdCBvZiBJUEMgdHJhZmZpYy4g
U28gd2UgY2xlYXIgdGhpcyBjYWNoZSBhZnRlcgorICAgIC8vIHNvbWUgdGltZSBvZiBubyBETlMg
cmVxdWVzdHMuCisgICAgbV9kbnNQcmVmZXRjaEh5c3RlcmVyaXMuaW1wdWxzZSgpOwogfQogCiB9
IC8vIG5hbWVzcGFjZSBXZWJLaXQKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UHJvY2Vzcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJv
Y2Vzcy5oCShyZXZpc2lvbiAxOTI2MDEpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlByb2Nlc3MuaAkod29ya2luZyBjb3B5KQpAQCAtMjgsNyArMjgsNiBAQAogCiAjaW5jbHVkZSAi
Q2FjaGVNb2RlbC5oIgogI2luY2x1ZGUgIkNoaWxkUHJvY2Vzcy5oIgotI2luY2x1ZGUgIkRvd25s
b2FkTWFuYWdlci5oIgogI2luY2x1ZGUgIkRyYXdpbmdBcmVhLmgiCiAjaW5jbHVkZSAiUGx1Z2lu
UHJvY2Vzc0Nvbm5lY3Rpb25NYW5hZ2VyLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VDYWNoZXNUb0Ns
ZWFyLmgiCkBAIC03MSw5ICs3MCw5IEBAIHN0cnVjdCBTZWN1cml0eU9yaWdpbkRhdGE7CiAKIG5h
bWVzcGFjZSBXZWJLaXQgewogCi1jbGFzcyBEb3dubG9hZE1hbmFnZXI7CiBjbGFzcyBFdmVudERp
c3BhdGNoZXI7CiBjbGFzcyBJbmplY3RlZEJ1bmRsZTsKK2NsYXNzIE5ldHdvcmtQcm9jZXNzQ29u
bmVjdGlvbjsKIGNsYXNzIE9iakNPYmplY3RHcmFwaDsKIGNsYXNzIFVzZXJEYXRhOwogY2xhc3Mg
V2ViQ29ubmVjdGlvblRvVUlQcm9jZXNzOwpAQCAtODIsMjIgKzgxLDE3IEBAIGNsYXNzIFdlYklj
b25EYXRhYmFzZVByb3h5OwogY2xhc3MgV2ViUGFnZTsKIGNsYXNzIFdlYlBhZ2VHcm91cFByb3h5
OwogY2xhc3MgV2ViUHJvY2Vzc1N1cHBsZW1lbnQ7CitjbGFzcyBXZWJSZXNvdXJjZUxvYWRTY2hl
ZHVsZXI7CiBzdHJ1Y3QgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVyczsKIHN0cnVjdCBXZWJQYWdl
R3JvdXBEYXRhOwogc3RydWN0IFdlYlByZWZlcmVuY2VzU3RvcmU7CiBzdHJ1Y3QgV2ViUHJvY2Vz
c0NyZWF0aW9uUGFyYW1ldGVyczsKIAotI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCi1jbGFz
cyBOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb247Ci1jbGFzcyBXZWJSZXNvdXJjZUxvYWRTY2hlZHVs
ZXI7Ci0jZW5kaWYKLQogI2lmIEVOQUJMRShEQVRBQkFTRV9QUk9DRVNTKQogY2xhc3MgV2ViVG9E
YXRhYmFzZVByb2Nlc3NDb25uZWN0aW9uOwogI2VuZGlmCiAKLWNsYXNzIFdlYlByb2Nlc3MgOiBw
dWJsaWMgQ2hpbGRQcm9jZXNzLCBwcml2YXRlIERvd25sb2FkTWFuYWdlcjo6Q2xpZW50IHsKLSAg
ICBmcmllbmQgY2xhc3MgTmV2ZXJEZXN0cm95ZWQ8RG93bmxvYWRNYW5hZ2VyPjsKK2NsYXNzIFdl
YlByb2Nlc3MgOiBwdWJsaWMgQ2hpbGRQcm9jZXNzIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgV2Vi
UHJvY2VzcyYgc2luZ2xldG9uKCk7CiAKQEAgLTE0Nyw3ICsxNDEsNiBAQCBwdWJsaWM6CiAjZW5k
aWYKICAgICAKICAgICBjb25zdCBUZXh0Q2hlY2tlclN0YXRlJiB0ZXh0Q2hlY2tlclN0YXRlKCkg
Y29uc3QgeyByZXR1cm4gbV90ZXh0Q2hlY2tlclN0YXRlOyB9Ci0gICAgRG93bmxvYWRNYW5hZ2Vy
JiBkb3dubG9hZE1hbmFnZXIoKTsKIAogICAgIHZvaWQgY2xlYXJSZXNvdXJjZUNhY2hlcyhSZXNv
dXJjZUNhY2hlc1RvQ2xlYXIgPSBBbGxSZXNvdXJjZUNhY2hlcyk7CiAgICAgCkBAIC0xNTcsMTMg
KzE1MCw5IEBAIHB1YmxpYzoKIAogICAgIEV2ZW50RGlzcGF0Y2hlciYgZXZlbnREaXNwYXRjaGVy
KCkgeyByZXR1cm4gKm1fZXZlbnREaXNwYXRjaGVyOyB9CiAKLSAgICBib29sIHVzZXNOZXR3b3Jr
UHJvY2VzcygpIGNvbnN0OwotCi0jaWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKICAgICBOZXR3
b3JrUHJvY2Vzc0Nvbm5lY3Rpb24qIG5ldHdvcmtDb25uZWN0aW9uKCk7CiAgICAgdm9pZCBuZXR3
b3JrUHJvY2Vzc0Nvbm5lY3Rpb25DbG9zZWQoTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKik7CiAg
ICAgV2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVyJiB3ZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXIoKTsK
LSNlbmRpZgogCiAjaWYgRU5BQkxFKERBVEFCQVNFX1BST0NFU1MpCiAgICAgdm9pZCB3ZWJUb0Rh
dGFiYXNlUHJvY2Vzc0Nvbm5lY3Rpb25DbG9zZWQoV2ViVG9EYXRhYmFzZVByb2Nlc3NDb25uZWN0
aW9uKik7CkBAIC0yMjIsMTIgKzIxMSw2IEBAIHByaXZhdGU6CiAgICAgV2ViUHJvY2VzcygpOwog
ICAgIH5XZWJQcm9jZXNzKCk7CiAKLSAgICAvLyBEb3dubG9hZE1hbmFnZXI6OkNsaWVudC4KLSAg
ICB2aXJ0dWFsIHZvaWQgZGlkQ3JlYXRlRG93bmxvYWQoKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFs
IHZvaWQgZGlkRGVzdHJveURvd25sb2FkKCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBJUEM6OkNv
bm5lY3Rpb24qIGRvd25sb2FkUHJveHlDb25uZWN0aW9uKCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVh
bCBBdXRoZW50aWNhdGlvbk1hbmFnZXImIGRvd25sb2Fkc0F1dGhlbnRpY2F0aW9uTWFuYWdlcigp
IG92ZXJyaWRlOwotCiAgICAgdm9pZCBpbml0aWFsaXplV2ViUHJvY2VzcyhXZWJQcm9jZXNzQ3Jl
YXRpb25QYXJhbWV0ZXJzJiYpOwogICAgIHZvaWQgcGxhdGZvcm1Jbml0aWFsaXplV2ViUHJvY2Vz
cyhXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzJiYpOwogCkBAIC0zNTksMTQgKzM0MiwxMSBA
QCBwcml2YXRlOgogCiAgICAgV2ViSWNvbkRhdGFiYXNlUHJveHkqIG1faWNvbkRhdGFiYXNlUHJv
eHk7CiAKLSNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQogICAgIHZvaWQgZW5zdXJlTmV0d29y
a1Byb2Nlc3NDb25uZWN0aW9uKCk7CiAgICAgUmVmUHRyPE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlv
bj4gbV9uZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb247Ci0gICAgYm9vbCBtX3VzZXNOZXR3b3JrUHJv
Y2VzczsKICAgICBXZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXIqIG1fd2ViUmVzb3VyY2VMb2FkU2No
ZWR1bGVyOwogICAgIEhhc2hTZXQ8U3RyaW5nPiBtX2Ruc1ByZWZldGNoZWRIb3N0czsKICAgICBX
ZWJDb3JlOjpIeXN0ZXJlc2lzQWN0aXZpdHkgbV9kbnNQcmVmZXRjaEh5c3RlcmVyaXM7Ci0jZW5k
aWYKIAogI2lmIEVOQUJMRShEQVRBQkFTRV9QUk9DRVNTKQogICAgIHZvaWQgZW5zdXJlV2ViVG9E
YXRhYmFzZVByb2Nlc3NDb25uZWN0aW9uKCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCShyZXZpc2lvbiAxOTI2MDEpCisrKyBT
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMuaW4JKHdvcmtpbmcg
Y29weSkKQEAgLTYyLDEyICs2Miw2IEBAIG1lc3NhZ2VzIC0+IFdlYlByb2Nlc3MgTGVnYWN5UmVj
ZWl2ZXIgewogICAgIHZvaWQgU3RhcnRNZW1vcnlTYW1wbGVyKFdlYktpdDo6U2FuZGJveEV4dGVu
c2lvbjo6SGFuZGxlIHNhbXBsZUxvZ0ZpbGVIYW5kbGUsIFN0cmluZyBzYW1wbGVMb2dGaWxlUGF0
aCwgZG91YmxlIGludGVydmFsKTsKICAgICB2b2lkIFN0b3BNZW1vcnlTYW1wbGVyKCk7CiAKLSAg
ICAjIERvd25sb2Fkcy4gVGhpcyBzaG91bGQgcmVhbGx5IGJlIGluIGEgRG93bmxvYWQubWVzc2Fn
ZXMuaW4sIGJ1dCBpdCBzZWVtZWQgdW5uZWNlc3NhcnkgdG8gY3JlYXRlIGEgbmV3IGZpbGUganVz
dCBmb3IKLSAgICAjIHRocmVlIG1lc3NhZ2VzLgotICAgIERvd25sb2FkUmVxdWVzdChXZWJDb3Jl
OjpTZXNzaW9uSUQgc2Vzc2lvbklELCB1aW50NjRfdCBkb3dubG9hZElELCB1aW50NjRfdCBpbml0
aWF0aW5nUGFnZUlELCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdCkKLSAgICBSZXN1
bWVEb3dubG9hZCh1aW50NjRfdCBkb3dubG9hZElELCBJUEM6OkRhdGFSZWZlcmVuY2UgcmVzdW1l
RGF0YSwgU3RyaW5nIHBhdGgsIFdlYktpdDo6U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlIHNhbmRi
b3hFeHRlbnNpb25IYW5kbGUpCi0gICAgQ2FuY2VsRG93bmxvYWQodWludDY0X3QgZG93bmxvYWRJ
RCkKLQogICAgIFNldFRleHRDaGVja2VyU3RhdGUoc3RydWN0IFdlYktpdDo6VGV4dENoZWNrZXJT
dGF0ZSB0ZXh0Q2hlY2tlclN0YXRlKQogCiAgICAgU2V0RW5oYW5jZWRBY2Nlc3NpYmlsaXR5KGJv
b2wgZmxhZykKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvRmlsZUFQSS9CbG9iUmVn
aXN0cnlQcm94eS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9G
aWxlQVBJL0Jsb2JSZWdpc3RyeVByb3h5LmNwcAkocmV2aXNpb24gMTkyNjAxKQorKysgU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9GaWxlQVBJL0Jsb2JSZWdpc3RyeVByb3h5LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMjYsOCArMjYsNiBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUg
IkJsb2JSZWdpc3RyeVByb3h5LmgiCiAKLSNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQotCiAj
aW5jbHVkZSAiTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3NNZXNzYWdlcy5oIgogI2luY2x1
ZGUgIk5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5oIgogI2luY2x1ZGUgIldlYkNvcmVBcmd1bWVu
dENvZGVycy5oIgpAQCAtNDAsOCArMzgsNiBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogdm9pZCBC
bG9iUmVnaXN0cnlQcm94eTo6cmVnaXN0ZXJGaWxlQmxvYlVSTChjb25zdCBXZWJDb3JlOjpVUkwm
IHVybCwgUGFzc1JlZlB0cjxCbG9iRGF0YUZpbGVSZWZlcmVuY2U+IGZpbGUsIGNvbnN0IFN0cmlu
ZyYgY29udGVudFR5cGUpCiB7Ci0gICAgQVNTRVJUKFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnVz
ZXNOZXR3b3JrUHJvY2VzcygpKTsKLQogICAgIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSBleHRl
bnNpb25IYW5kbGU7CiAKICAgICAvLyBGaWxlIHBhdGggY2FuIGJlIGVtcHR5IHdoZW4gc3VibWl0
dGluZyBhIGZvcm0gZmlsZSBpbnB1dCB3aXRob3V0IGEgZmlsZSwgc2VlIGJ1ZyAxMTE3NzguCkBA
IC01MywzNiArNDksMjYgQEAgdm9pZCBCbG9iUmVnaXN0cnlQcm94eTo6cmVnaXN0ZXJGaWxlQmxv
YgogCiB2b2lkIEJsb2JSZWdpc3RyeVByb3h5OjpyZWdpc3RlckJsb2JVUkwoY29uc3QgVVJMJiB1
cmwsIFZlY3RvcjxCbG9iUGFydD4gYmxvYlBhcnRzLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBl
KQogewotICAgIEFTU0VSVChXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS51c2VzTmV0d29ya1Byb2Nl
c3MoKSk7Ci0KICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5uZXR3b3JrQ29ubmVjdGlvbigp
LT5jb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzOjpSZWdpc3RlckJsb2JVUkwodXJsLCBibG9iUGFydHMsIGNvbnRlbnRUeXBlKSwgMCk7CiB9
CiAKIHZvaWQgQmxvYlJlZ2lzdHJ5UHJveHk6OnJlZ2lzdGVyQmxvYlVSTChjb25zdCBVUkwmIHVy
bCwgY29uc3QgVVJMJiBzcmNVUkwpCiB7Ci0gICAgQVNTRVJUKFdlYlByb2Nlc3M6OnNpbmdsZXRv
bigpLnVzZXNOZXR3b3JrUHJvY2VzcygpKTsKLQogICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigp
Lm5ldHdvcmtDb25uZWN0aW9uKCktPmNvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6TmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OlJlZ2lzdGVyQmxvYlVSTEZyb21VUkwodXJsLCBzcmNV
UkwpLCAwKTsKIH0KIAogdm9pZCBCbG9iUmVnaXN0cnlQcm94eTo6dW5yZWdpc3RlckJsb2JVUkwo
Y29uc3QgVVJMJiB1cmwpCiB7Ci0gICAgQVNTRVJUKFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnVz
ZXNOZXR3b3JrUHJvY2VzcygpKTsKLQogICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLm5ldHdv
cmtDb25uZWN0aW9uKCktPmNvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6TmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3M6OlVucmVnaXN0ZXJCbG9iVVJMKHVybCksIDApOwogfQogCiB2b2lk
IEJsb2JSZWdpc3RyeVByb3h5OjpyZWdpc3RlckJsb2JVUkxGb3JTbGljZShjb25zdCBVUkwmIHVy
bCwgY29uc3QgVVJMJiBzcmNVUkwsIGxvbmcgbG9uZyBzdGFydCwgbG9uZyBsb25nIGVuZCkKIHsK
LSAgICBBU1NFUlQoV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkudXNlc05ldHdvcmtQcm9jZXNzKCkp
OwotCiAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkubmV0d29ya0Nvbm5lY3Rpb24oKS0+Y29u
bmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6
UmVnaXN0ZXJCbG9iVVJMRm9yU2xpY2UodXJsLCBzcmNVUkwsIHN0YXJ0LCBlbmQpLCAwKTsKIH0K
IAogdW5zaWduZWQgbG9uZyBsb25nIEJsb2JSZWdpc3RyeVByb3h5OjpibG9iU2l6ZShjb25zdCBV
UkwmIHVybCkKIHsKLSAgICBBU1NFUlQoV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkudXNlc05ldHdv
cmtQcm9jZXNzKCkpOwotCiAgICAgdWludDY0X3QgcmVzdWx0U2l6ZTsKICAgICBpZiAoIVdlYlBy
b2Nlc3M6OnNpbmdsZXRvbigpLm5ldHdvcmtDb25uZWN0aW9uKCktPmNvbm5lY3Rpb24oKS0+c2Vu
ZFN5bmMoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpCbG9iU2l6ZSh1
cmwpLCBNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkJsb2JTaXplOjpS
ZXBseShyZXN1bHRTaXplKSwgMCkpCiAgICAgICAgIHJldHVybiAwOwpAQCAtOTAsNSArNzYsMyBA
QCB1bnNpZ25lZCBsb25nIGxvbmcgQmxvYlJlZ2lzdHJ5UHJveHk6OmJsCiB9CiAKIH0KLQotI2Vu
ZGlmIC8vIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL0ZpbGVBUEkvQmxvYlJlZ2lzdHJ5UHJveHkuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL0ZpbGVBUEkvQmxvYlJlZ2lzdHJ5UHJveHkuaAkocmV2aXNpb24g
MTkyNjAxKQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9GaWxlQVBJL0Jsb2JSZWdpc3Ry
eVByb3h5LmgJKHdvcmtpbmcgY29weSkKQEAgLTI2LDggKzI2LDYgQEAKICNpZm5kZWYgQmxvYlJl
Z2lzdHJ5UHJveHlfaAogI2RlZmluZSBCbG9iUmVnaXN0cnlQcm94eV9oCiAKLSNpZiBFTkFCTEUo
TkVUV09SS19QUk9DRVNTKQotCiAjaW5jbHVkZSA8V2ViQ29yZS9CbG9iUmVnaXN0cnkuaD4KIAog
bmFtZXNwYWNlIFdlYktpdCB7CkBAIC00NCw2ICs0Miw0IEBAIHB1YmxpYzoKIAogfQogCi0jZW5k
aWYgLy8gRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKLQogI2VuZGlmIC8vIEJsb2JSZWdpc3RyeVBy
b3h5X2gKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJv
Y2Vzc0Nvbm5lY3Rpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCShyZXZpc2lvbiAxOTI2MDEp
CisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25u
ZWN0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzcsOCArMzcsNiBAQAogI2luY2x1ZGUgPFdl
YkNvcmUvU2Vzc2lvbklELmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TaGFyZWRCdWZmZXIuaD4KIAot
I2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCi0KIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwog
CiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTk4LDUgKzk2LDMgQEAgdm9pZCBOZXR3b3JrUHJvY2Vz
c0Nvbm5lY3Rpb246OmRpZENhY2hlUgogI2VuZGlmCiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAot
Ci0jZW5kaWYgLy8gRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKSW5kZXg6IFNvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25u
ZWN0aW9uLmgJKHJldmlzaW9uIDE5MjYwMSkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
TmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uaAkod29ya2luZyBjb3B5KQpAQCAtMzEs
OCArMzEsNiBAQAogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL3Rl
eHQvV1RGU3RyaW5nLmg+CiAKLSNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQotCiBuYW1lc3Bh
Y2UgSVBDIHsKIGNsYXNzIERhdGFSZWZlcmVuY2U7CiB9CkBAIC04Miw3ICs4MCw0IEBAIHByaXZh
dGU6CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCi0jZW5kaWYgLy8gRU5BQkxFKE5FVFdPUktf
UFJPQ0VTUykKLQotCiAjZW5kaWYgLy8gTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uX2gKSW5kZXg6
IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rp
b24ubWVzc2FnZXMuaW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9O
ZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5tZXNzYWdlcy5pbgkocmV2aXNpb24gMTky
NjAxKQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNz
Q29ubmVjdGlvbi5tZXNzYWdlcy5pbgkod29ya2luZyBjb3B5KQpAQCAtMjAsOCArMjAsNiBAQAog
IyBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQogIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogCi0jaWYgRU5BQkxFKE5FVFdP
UktfUFJPQ0VTUykKLQogbWVzc2FnZXMgLT4gTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uIExlZ2Fj
eVJlY2VpdmVyIHsKIAogI2lmIEVOQUJMRShTSEFSRUFCTEVfUkVTT1VSQ0UpCkBAIC0yOSw1ICsy
NywzIEBAIG1lc3NhZ2VzIC0+IE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbiBMZWcKICNlbmRpZgog
CiB9Ci0KLSNlbmRpZiAvLyBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQpJbmRleDogU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZFNjaGVkdWxlci5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNl
TG9hZFNjaGVkdWxlci5jcHAJKHJldmlzaW9uIDE5MjYwMSkKKysrIFNvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXIuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC01Miw4ICs1Miw2IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9TdWJyZXNvdXJjZUxvYWRl
ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KIAotI2lmIEVOQUJMRShORVRXT1JL
X1BST0NFU1MpCi0KIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBuYW1lc3BhY2UgV2ViS2l0
IHsKQEAgLTI4Niw1ICsyODQsMyBAQCB2b2lkIFdlYlJlc291cmNlTG9hZFNjaGVkdWxlcjo6bmV0
d29ya1ByCiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAotCi0jZW5kaWYgLy8gRU5BQkxFKE5F
VFdPUktfUFJPQ0VTUykKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvTmV0d29yay9X
ZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVyLmgJKHJldmlzaW9uIDE5
MjYwMSkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxv
YWRTY2hlZHVsZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzIsOCArMzIsNiBAQAogI2luY2x1ZGUg
PFdlYkNvcmUvUmVzb3VyY2VMb2FkZXIuaD4KICNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgogCi0j
aWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKLQogbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNz
IE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbjsKQEAgLTc3LDYgKzc1LDQgQEAgcHJpdmF0ZToKIAog
fSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKLSNlbmRpZiAvLyBFTkFCTEUoTkVUV09SS19QUk9DRVNT
KQotCiAjZW5kaWYgLy8gV2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVyX2gKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVy
LmNwcAkocmV2aXNpb24gMTkyNjAxKQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9OZXR3
b3JrL1dlYlJlc291cmNlTG9hZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjYsOCArMjYsNiBA
QAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIldlYlJlc291cmNlTG9hZGVyLmgiCiAK
LSNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQotCiAjaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5o
IgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rp
b24uaCIKQEAgLTIyMSw1ICsyMTksMyBAQCB2b2lkIFdlYlJlc291cmNlTG9hZGVyOjpjYW5BdXRo
ZW50aWNhdGVBCiAjZW5kaWYKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KLSNlbmRpZiAvLyBF
TkFCTEUoTkVUV09SS19QUk9DRVNTKQpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9O
ZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmgJKHJldmlzaW9uIDE5MjYwMSkK
KysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5o
CSh3b3JraW5nIGNvcHkpCkBAIC0yNiw4ICsyNiw2IEBACiAjaWZuZGVmIFdlYlJlc291cmNlTG9h
ZGVyX2gKICNkZWZpbmUgV2ViUmVzb3VyY2VMb2FkZXJfaAogCi0jaWYgRU5BQkxFKE5FVFdPUktf
UFJPQ0VTUykKLQogI2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIKICNpbmNsdWRlICJNZXNzYWdlU2Vu
ZGVyLmgiCiAjaW5jbHVkZSAiU2hhcmVhYmxlUmVzb3VyY2UuaCIKQEAgLTk0LDYgKzkyLDQgQEAg
cHJpdmF0ZToKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKLSNlbmRpZiAvLyBFTkFCTEUoTkVU
V09SS19QUk9DRVNTKQotCiAjZW5kaWYgLy8gV2ViUmVzb3VyY2VMb2FkZXJfaApJbmRleDogU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLm1lc3NhZ2Vz
LmluCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvTmV0d29yay9XZWJS
ZXNvdXJjZUxvYWRlci5tZXNzYWdlcy5pbgkocmV2aXNpb24gMTkyNjAxKQorKysgU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLm1lc3NhZ2VzLmluCSh3
b3JraW5nIGNvcHkpCkBAIC0yMCw4ICsyMCw2IEBACiAjIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCiAj
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCiAKLSNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQotCiBtZXNzYWdlcyAt
PiBXZWJSZXNvdXJjZUxvYWRlciBMZWdhY3lSZWNlaXZlciB7CiAgICAgV2lsbFNlbmRSZXF1ZXN0
KFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCByZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJlc3Bv
bnNlIHJlZGlyZWN0UmVzcG9uc2UpCiAgICAgRGlkU2VuZERhdGEodWludDY0X3QgYnl0ZXNTZW50
LCB1aW50NjRfdCB0b3RhbEJ5dGVzVG9CZVNlbnQpCkBAIC0zOSw1ICszNywzIEBAIG1lc3NhZ2Vz
IC0+IFdlYlJlc291cmNlTG9hZGVyIExlZ2FjeVJlY2UKICAgICBEaWRSZWNlaXZlUmVzb3VyY2Uo
V2ViS2l0OjpTaGFyZWFibGVSZXNvdXJjZTo6SGFuZGxlIHJlc291cmNlLCBkb3VibGUgZmluaXNo
VGltZSkKICNlbmRpZgogfQotCi0jZW5kaWYgLy8gRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZUJy
b3dzZXJGdW5jcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Q
bHVnaW5zL05ldHNjYXBlL05ldHNjYXBlQnJvd3NlckZ1bmNzLmNwcAkocmV2aXNpb24gMTkyNjAx
KQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBl
QnJvd3NlckZ1bmNzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTA1MywxMSArMTA1Myw3IEBAIHN0
YXRpYyB2b2lkIGluaXRpYWxpemVCcm93c2VyRnVuY3MoTlBOZXQKICAgICBuZXRzY2FwZUZ1bmNz
LnBvcHVwY29udGV4dG1lbnUgPSAwOwogICAgIG5ldHNjYXBlRnVuY3MuY29udmVydHBvaW50ID0g
MDsKICNlbmRpZgotI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCiAgICAgbmV0c2NhcGVGdW5j
cy51cmxyZWRpcmVjdHJlc3BvbnNlID0gTlBOX1VSTFJlZGlyZWN0UmVzcG9uc2U7Ci0jZWxzZQot
ICAgIG5ldHNjYXBlRnVuY3MudXJscmVkaXJlY3RyZXNwb25zZSA9IDA7Ci0jZW5kaWYKIH0KICAg
ICAKIE5QTmV0c2NhcGVGdW5jcyogbmV0c2NhcGVCcm93c2VyRnVuY3MoKQpJbmRleDogU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUv
TmV0c2NhcGVQbHVnaW4uY3BwCShyZXZpc2lvbiAxOTI2MDEpCisrKyBTb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4uY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC00MDAsMTYgKzQwMCwxMiBAQCBib29sIE5ldHNjYXBlUGx1Z2luOjpnZXRBdXRoZW50
aWNhdGlvbkluCiAKIHZvaWQgTmV0c2NhcGVQbHVnaW46OnJlZ2lzdGVyUmVkaXJlY3QoTmV0c2Nh
cGVQbHVnaW5TdHJlYW0qIHN0cmVhbSwgY29uc3QgVVJMJiByZXF1ZXN0VVJMLCBpbnQgcmVkaXJl
Y3RSZXNwb25zZVN0YXR1cywgdm9pZCogbm90aWZpY2F0aW9uRGF0YSkKIHsKLSNpZiBFTkFCTEUo
TkVUV09SS19QUk9DRVNTKQogICAgIC8vIE5QUF9VUkxSZWRpcmVjdE5vdGlmeSBtYXkgc3luY2hy
b25vdXNseSByZXF1ZXN0IHRoaXMgc3RyZWFtIGJhY2sgb3V0LCBzbyBzZXQgaXQgZmlyc3QKICAg
ICBtX3JlZGlyZWN0cy5zZXQobm90aWZpY2F0aW9uRGF0YSwgc3RkOjptYWtlX3BhaXIoc3RyZWFt
LCByZXF1ZXN0VVJMLnN0cmluZygpKSk7CiAgICAgaWYgKCFOUFBfVVJMUmVkaXJlY3ROb3RpZnko
cmVxdWVzdFVSTC5zdHJpbmcoKS51dGY4KCkuZGF0YSgpLCByZWRpcmVjdFJlc3BvbnNlU3RhdHVz
LCBub3RpZmljYXRpb25EYXRhKSkgewogICAgICAgICBtX3JlZGlyZWN0cy50YWtlKG5vdGlmaWNh
dGlvbkRhdGEpOwogICAgICAgICBjb250cm9sbGVyKCktPmNvbnRpbnVlU3RyZWFtTG9hZChzdHJl
YW0tPnN0cmVhbUlEKCkpOwogICAgIH0KLSNlbHNlCi0gICAgY29udHJvbGxlcigpLT5jb250aW51
ZVN0cmVhbUxvYWQoc3RyZWFtLT5zdHJlYW1JRCgpKTsKLSNlbmRpZgogfQogCiB2b2lkIE5ldHNj
YXBlUGx1Z2luOjp1cmxSZWRpcmVjdFJlc3BvbnNlKHZvaWQqIG5vdGlmeURhdGEsIGJvb2wgYWxs
b3cpCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBs
YXRmb3JtU3RyYXRlZ2llcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwCShyZXZpc2lvbiAx
OTI2MDEpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBs
YXRmb3JtU3RyYXRlZ2llcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2LDkgKzI2LDEyIEBACiAj
aW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgiCiAK
KyNpbmNsdWRlICJCbG9iUmVnaXN0cnlQcm94eS5oIgogI2luY2x1ZGUgIkJsb2NraW5nUmVzcG9u
c2VNYXAuaCIKICNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiSGFuZ0RldGVj
dGlvbkRpc2FibGVyLmgiCisjaW5jbHVkZSAiTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3NN
ZXNzYWdlcy5oIgorI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5oIgogI2luY2x1
ZGUgIk5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmgiCiAjaW5jbHVkZSAiUGx1Z2luSW5m
b1N0b3JlLmgiCiAjaW5jbHVkZSAiU2Vzc2lvblRyYWNrZXIuaCIKQEAgLTQ0LDYgKzQ3LDcgQEAK
ICNpbmNsdWRlICJXZWJQYXN0ZWJvYXJkUHJveHlNZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYlBy
b2Nlc3MuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzUHJveHlNZXNzYWdlcy5oIgorI2luY2x1ZGUg
IldlYlJlc291cmNlTG9hZFNjaGVkdWxlci5oIgogI2luY2x1ZGUgPFdlYkNvcmUvQ29sb3IuaD4K
ICNpbmNsdWRlIDxXZWJDb3JlL0RvY3VtZW50TG9hZGVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9J
REJGYWN0b3J5QmFja2VuZEludGVyZmFjZS5oPgpAQCAtNjMsMTMgKzY3LDYgQEAKICNpbmNsdWRl
IDxXZWJDb3JlL1VSTC5oPgogI2luY2x1ZGUgPHd0Zi9BdG9taWNzLmg+CiAKLSNpZiBFTkFCTEUo
TkVUV09SS19QUk9DRVNTKQotI2luY2x1ZGUgIkJsb2JSZWdpc3RyeVByb3h5LmgiCi0jaW5jbHVk
ZSAiTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3NNZXNzYWdlcy5oIgotI2luY2x1ZGUgIk5l
dHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5oIgotI2luY2x1ZGUgIldlYlJlc291cmNlTG9hZFNjaGVk
dWxlci5oIgotI2VuZGlmCi0KIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBuYW1lc3BhY2Ug
V2ViS2l0IHsKQEAgLTExMiwxMTQgKzEwOSw1NiBAQCBQbHVnaW5TdHJhdGVneSogV2ViUGxhdGZv
cm1TdHJhdGVnaWVzOjpjCiAKIFN0cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNvb2tpZXNG
b3JET00oY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBVUkwmIGZp
cnN0UGFydHksIGNvbnN0IFVSTCYgdXJsKQogewotI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1Mp
CiAgICAgYXV0byYgd2ViUHJvY2VzcyA9IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpOwotICAgIGlm
ICh3ZWJQcm9jZXNzLnVzZXNOZXR3b3JrUHJvY2VzcygpKSB7Ci0gICAgICAgIFN0cmluZyByZXN1
bHQ7Ci0gICAgICAgIGlmICghd2ViUHJvY2Vzcy5uZXR3b3JrQ29ubmVjdGlvbigpLT5jb25uZWN0
aW9uKCktPnNlbmRTeW5jKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6
Q29va2llc0ZvckRPTShTZXNzaW9uVHJhY2tlcjo6c2Vzc2lvbklEKHNlc3Npb24pLCBmaXJzdFBh
cnR5LCB1cmwpLCBNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkNvb2tp
ZXNGb3JET006OlJlcGx5KHJlc3VsdCksIDApKQotICAgICAgICAgICAgcmV0dXJuIFN0cmluZygp
OwotICAgICAgICByZXR1cm4gcmVzdWx0OwotICAgIH0KLSNlbmRpZgotCi0gICAgcmV0dXJuIFdl
YkNvcmU6OmNvb2tpZXNGb3JET00oc2Vzc2lvbiwgZmlyc3RQYXJ0eSwgdXJsKTsKKyAgICBTdHJp
bmcgcmVzdWx0OworICAgIGlmICghd2ViUHJvY2Vzcy5uZXR3b3JrQ29ubmVjdGlvbigpLT5jb25u
ZWN0aW9uKCktPnNlbmRTeW5jKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vz
czo6Q29va2llc0ZvckRPTShTZXNzaW9uVHJhY2tlcjo6c2Vzc2lvbklEKHNlc3Npb24pLCBmaXJz
dFBhcnR5LCB1cmwpLCBNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkNv
b2tpZXNGb3JET006OlJlcGx5KHJlc3VsdCksIDApKQorICAgICAgICByZXR1cm4gU3RyaW5nKCk7
CisgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAogdm9pZCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnNl
dENvb2tpZXNGcm9tRE9NKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29u
c3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBjb29raWVT
dHJpbmcpCiB7Ci0jaWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKICAgICBhdXRvJiB3ZWJQcm9j
ZXNzID0gV2ViUHJvY2Vzczo6c2luZ2xldG9uKCk7Ci0gICAgaWYgKHdlYlByb2Nlc3MudXNlc05l
dHdvcmtQcm9jZXNzKCkpIHsKLSAgICAgICAgd2ViUHJvY2Vzcy5uZXR3b3JrQ29ubmVjdGlvbigp
LT5jb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzOjpTZXRDb29raWVzRnJvbURPTShTZXNzaW9uVHJhY2tlcjo6c2Vzc2lvbklEKHNlc3Npb24p
LCBmaXJzdFBhcnR5LCB1cmwsIGNvb2tpZVN0cmluZyksIDApOwotICAgICAgICByZXR1cm47Ci0g
ICAgfQotI2VuZGlmCi0KLSAgICBXZWJDb3JlOjpzZXRDb29raWVzRnJvbURPTShzZXNzaW9uLCBm
aXJzdFBhcnR5LCB1cmwsIGNvb2tpZVN0cmluZyk7CisgICAgd2ViUHJvY2Vzcy5uZXR3b3JrQ29u
bmVjdGlvbigpLT5jb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzOjpTZXRDb29raWVzRnJvbURPTShTZXNzaW9uVHJhY2tlcjo6c2Vzc2lvbklE
KHNlc3Npb24pLCBmaXJzdFBhcnR5LCB1cmwsIGNvb2tpZVN0cmluZyksIDApOwogfQogCiBib29s
IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y29va2llc0VuYWJsZWQoY29uc3QgTmV0d29ya1N0b3Jh
Z2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFVSTCYgdXJs
KQogewotI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCi0gICAgYXV0byYgd2ViUHJvY2VzcyA9
IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpOwotICAgIGlmICh3ZWJQcm9jZXNzLnVzZXNOZXR3b3Jr
UHJvY2VzcygpKSB7Ci0gICAgICAgIGJvb2wgcmVzdWx0OwotICAgICAgICBpZiAoIXdlYlByb2Nl
c3MubmV0d29ya0Nvbm5lY3Rpb24oKS0+Y29ubmVjdGlvbigpLT5zZW5kU3luYyhNZXNzYWdlczo6
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkNvb2tpZXNFbmFibGVkKFNlc3Npb25UcmFj
a2VyOjpzZXNzaW9uSUQoc2Vzc2lvbiksIGZpcnN0UGFydHksIHVybCksIE1lc3NhZ2VzOjpOZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Q29va2llc0VuYWJsZWQ6OlJlcGx5KHJlc3VsdCks
IDApKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICByZXR1cm4gcmVzdWx0Owot
ICAgIH0KLSNlbmRpZgotCi0gICAgcmV0dXJuIFdlYkNvcmU6OmNvb2tpZXNFbmFibGVkKHNlc3Np
b24sIGZpcnN0UGFydHksIHVybCk7CisgICAgYm9vbCByZXN1bHQ7CisgICAgaWYgKCFXZWJQcm9j
ZXNzOjpzaW5nbGV0b24oKS5uZXR3b3JrQ29ubmVjdGlvbigpLT5jb25uZWN0aW9uKCktPnNlbmRT
eW5jKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Q29va2llc0VuYWJs
ZWQoU2Vzc2lvblRyYWNrZXI6OnNlc3Npb25JRChzZXNzaW9uKSwgZmlyc3RQYXJ0eSwgdXJsKSwg
TWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpDb29raWVzRW5hYmxlZDo6
UmVwbHkocmVzdWx0KSwgMCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gcmVz
dWx0OwogfQogCiBTdHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjb29raWVSZXF1ZXN0SGVh
ZGVyRmllbGRWYWx1ZShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0
IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgVVJMJiB1cmwpCiB7Ci0jaWYgRU5BQkxFKE5FVFdPUktf
UFJPQ0VTUykKLSAgICBhdXRvJiB3ZWJQcm9jZXNzID0gV2ViUHJvY2Vzczo6c2luZ2xldG9uKCk7
Ci0gICAgaWYgKHdlYlByb2Nlc3MudXNlc05ldHdvcmtQcm9jZXNzKCkpIHsKLSAgICAgICAgU3Ry
aW5nIHJlc3VsdDsKLSAgICAgICAgaWYgKCF3ZWJQcm9jZXNzLm5ldHdvcmtDb25uZWN0aW9uKCkt
PmNvbm5lY3Rpb24oKS0+c2VuZFN5bmMoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzOjpDb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShTZXNzaW9uVHJhY2tlcjo6c2Vz
c2lvbklEKHNlc3Npb24pLCBmaXJzdFBhcnR5LCB1cmwpLCBNZXNzYWdlczo6TmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3M6OkNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlOjpSZXBseShy
ZXN1bHQpLCAwKSkKLSAgICAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKLSAgICAgICAgcmV0dXJu
IHJlc3VsdDsKLSAgICB9Ci0jZW5kaWYKLQotICAgIHJldHVybiBXZWJDb3JlOjpjb29raWVSZXF1
ZXN0SGVhZGVyRmllbGRWYWx1ZShzZXNzaW9uLCBmaXJzdFBhcnR5LCB1cmwpOworICAgIFN0cmlu
ZyByZXN1bHQ7CisgICAgaWYgKCFXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5uZXR3b3JrQ29ubmVj
dGlvbigpLT5jb25uZWN0aW9uKCktPnNlbmRTeW5jKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2Vzczo6Q29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoU2Vzc2lvblRyYWNr
ZXI6OnNlc3Npb25JRChzZXNzaW9uKSwgZmlyc3RQYXJ0eSwgdXJsKSwgTWVzc2FnZXM6Ok5ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpDb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZTo6
UmVwbHkocmVzdWx0KSwgMCkpCisgICAgICAgIHJldHVybiBTdHJpbmcoKTsKKyAgICByZXR1cm4g
cmVzdWx0OwogfQogCiBib29sIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Z2V0UmF3Q29va2llcyhj
b25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IFVSTCYgZmlyc3RQYXJ0
eSwgY29uc3QgVVJMJiB1cmwsIFZlY3RvcjxDb29raWU+JiByYXdDb29raWVzKQogewotI2lmIEVO
QUJMRShORVRXT1JLX1BST0NFU1MpCi0gICAgYXV0byYgd2ViUHJvY2VzcyA9IFdlYlByb2Nlc3M6
OnNpbmdsZXRvbigpOwotICAgIGlmICh3ZWJQcm9jZXNzLnVzZXNOZXR3b3JrUHJvY2VzcygpKSB7
Ci0gICAgICAgIGlmICghd2ViUHJvY2Vzcy5uZXR3b3JrQ29ubmVjdGlvbigpLT5jb25uZWN0aW9u
KCktPnNlbmRTeW5jKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6R2V0
UmF3Q29va2llcyhTZXNzaW9uVHJhY2tlcjo6c2Vzc2lvbklEKHNlc3Npb24pLCBmaXJzdFBhcnR5
LCB1cmwpLCBNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkdldFJhd0Nv
b2tpZXM6OlJlcGx5KHJhd0Nvb2tpZXMpLCAwKSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
LSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotI2VuZGlmCi0KLSAgICByZXR1cm4gV2ViQ29y
ZTo6Z2V0UmF3Q29va2llcyhzZXNzaW9uLCBmaXJzdFBhcnR5LCB1cmwsIHJhd0Nvb2tpZXMpOwor
ICAgIGlmICghV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkubmV0d29ya0Nvbm5lY3Rpb24oKS0+Y29u
bmVjdGlvbigpLT5zZW5kU3luYyhNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3M6OkdldFJhd0Nvb2tpZXMoU2Vzc2lvblRyYWNrZXI6OnNlc3Npb25JRChzZXNzaW9uKSwgZmly
c3RQYXJ0eSwgdXJsKSwgTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpH
ZXRSYXdDb29raWVzOjpSZXBseShyYXdDb29raWVzKSwgMCkpCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogdm9pZCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmRl
bGV0ZUNvb2tpZShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IFVS
TCYgdXJsLCBjb25zdCBTdHJpbmcmIGNvb2tpZU5hbWUpCiB7Ci0jaWYgRU5BQkxFKE5FVFdPUktf
UFJPQ0VTUykKLSAgICBhdXRvJiB3ZWJQcm9jZXNzID0gV2ViUHJvY2Vzczo6c2luZ2xldG9uKCk7
Ci0gICAgaWYgKHdlYlByb2Nlc3MudXNlc05ldHdvcmtQcm9jZXNzKCkpIHsKLSAgICAgICAgd2Vi
UHJvY2Vzcy5uZXR3b3JrQ29ubmVjdGlvbigpLT5jb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6
Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpEZWxldGVDb29raWUoU2Vzc2lvblRyYWNr
ZXI6OnNlc3Npb25JRChzZXNzaW9uKSwgdXJsLCBjb29raWVOYW1lKSwgMCk7Ci0gICAgICAgIHJl
dHVybjsKLSAgICB9Ci0jZW5kaWYKLQotICAgIFdlYkNvcmU6OmRlbGV0ZUNvb2tpZShzZXNzaW9u
LCB1cmwsIGNvb2tpZU5hbWUpOworICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLm5ldHdvcmtD
b25uZWN0aW9uKCktPmNvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3M6OkRlbGV0ZUNvb2tpZShTZXNzaW9uVHJhY2tlcjo6c2Vzc2lvbklEKHNl
c3Npb24pLCB1cmwsIGNvb2tpZU5hbWUpLCAwKTsKIH0KIAogLy8gTG9hZGVyU3RyYXRlZ3kKIAot
I2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCiBSZXNvdXJjZUxvYWRTY2hlZHVsZXIqIFdlYlBs
YXRmb3JtU3RyYXRlZ2llczo6cmVzb3VyY2VMb2FkU2NoZWR1bGVyKCkKIHsKLSAgICBzdGF0aWMg
UmVzb3VyY2VMb2FkU2NoZWR1bGVyKiBzY2hlZHVsZXI7Ci0gICAgaWYgKCFzY2hlZHVsZXIpIHsK
LSAgICAgICAgYXV0byYgd2ViUHJvY2VzcyA9IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpOwotICAg
ICAgICBpZiAod2ViUHJvY2Vzcy51c2VzTmV0d29ya1Byb2Nlc3MoKSkKLSAgICAgICAgICAgIHNj
aGVkdWxlciA9ICZ3ZWJQcm9jZXNzLndlYlJlc291cmNlTG9hZFNjaGVkdWxlcigpOwotICAgICAg
ICBlbHNlCi0gICAgICAgICAgICBzY2hlZHVsZXIgPSBXZWJDb3JlOjpyZXNvdXJjZUxvYWRTY2hl
ZHVsZXIoKTsKLSAgICB9Ci0gICAgCi0gICAgcmV0dXJuIHNjaGVkdWxlcjsKKyAgICByZXR1cm4g
JldlYlByb2Nlc3M6OnNpbmdsZXRvbigpLndlYlJlc291cmNlTG9hZFNjaGVkdWxlcigpOwogfQog
CiB2b2lkIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6bG9hZFJlc291cmNlU3luY2hyb25vdXNseShO
ZXR3b3JraW5nQ29udGV4dCogY29udGV4dCwgdW5zaWduZWQgbG9uZyByZXNvdXJjZUxvYWRJZGVu
dGlmaWVyLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIFN0b3JlZENyZWRlbnRpYWxz
IHN0b3JlZENyZWRlbnRpYWxzLCBDbGllbnRDcmVkZW50aWFsUG9saWN5IGNsaWVudENyZWRlbnRp
YWxQb2xpY3ksIFJlc291cmNlRXJyb3ImIGVycm9yLCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25z
ZSwgVmVjdG9yPGNoYXI+JiBkYXRhKQogewotICAgIGF1dG8mIHdlYlByb2Nlc3MgPSBXZWJQcm9j
ZXNzOjpzaW5nbGV0b24oKTsKLSAgICBpZiAoIXdlYlByb2Nlc3MudXNlc05ldHdvcmtQcm9jZXNz
KCkpIHsKLSAgICAgICAgTG9hZGVyU3RyYXRlZ3k6OmxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHko
Y29udGV4dCwgcmVzb3VyY2VMb2FkSWRlbnRpZmllciwgcmVxdWVzdCwgc3RvcmVkQ3JlZGVudGlh
bHMsIGNsaWVudENyZWRlbnRpYWxQb2xpY3ksIGVycm9yLCByZXNwb25zZSwgZGF0YSk7Ci0gICAg
ICAgIHJldHVybjsKLSAgICB9Ci0KICAgICBXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0KiB3ZWJD
b250ZXh0ID0gc3RhdGljX2Nhc3Q8V2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dCo+KGNvbnRleHQp
OwogICAgIC8vIEZJWE1FOiBTb21lIGVudGl0aWVzIGluIFdlYkNvcmUgdXNlIFdlYkNvcmUncyAi
RW1wdHlGcmFtZUxvYWRlckNsaWVudCIgaW5zdGVhZCBvZiBoYXZpbmcgYSBwcm9wZXIgV2ViRnJh
bWVMb2FkZXJDbGllbnQuCiAgICAgLy8gRW1wdHlGcmFtZUxvYWRlckNsaWVudCBzaG91bGRuJ3Qg
ZXhpc3QgYW5kIGV2ZXJ5dGhpbmcgc2hvdWxkIGJlIHVzaW5nIGEgV2ViRnJhbWVMb2FkZXJDbGll
bnQsCkBAIC0yNDMsNyArMTgyLDcgQEAgdm9pZCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmxvYWRS
ZXNvdXJjZQogCiAgICAgSGFuZ0RldGVjdGlvbkRpc2FibGVyIGhhbmdEZXRlY3Rpb25EaXNhYmxl
cjsKIAotICAgIGlmICghd2ViUHJvY2Vzcy5uZXR3b3JrQ29ubmVjdGlvbigpLT5jb25uZWN0aW9u
KCktPnNlbmRTeW5jKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6UGVy
Zm9ybVN5bmNocm9ub3VzTG9hZChsb2FkUGFyYW1ldGVycyksIE1lc3NhZ2VzOjpOZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2Vzczo6UGVyZm9ybVN5bmNocm9ub3VzTG9hZDo6UmVwbHkoZXJyb3Is
IHJlc3BvbnNlLCBkYXRhKSwgMCkpIHsKKyAgICBpZiAoIVdlYlByb2Nlc3M6OnNpbmdsZXRvbigp
Lm5ldHdvcmtDb25uZWN0aW9uKCktPmNvbm5lY3Rpb24oKS0+c2VuZFN5bmMoTWVzc2FnZXM6Ok5l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpQZXJmb3JtU3luY2hyb25vdXNMb2FkKGxvYWRQ
YXJhbWV0ZXJzKSwgTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpQZXJm
b3JtU3luY2hyb25vdXNMb2FkOjpSZXBseShlcnJvciwgcmVzcG9uc2UsIGRhdGEpLCAwKSkgewog
ICAgICAgICByZXNwb25zZSA9IFJlc291cmNlUmVzcG9uc2UoKTsKICAgICAgICAgZXJyb3IgPSBp
bnRlcm5hbEVycm9yKHJlcXVlc3QudXJsKCkpOwogICAgIH0KQEAgLTI1NiwxMiArMTk1LDYgQEAg
dm9pZCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNyZWF0ZVBpbmdIYQogICAgIGlmICghbmV0d29y
a2luZ0NvbnRleHQpCiAgICAgICAgIHJldHVybjsKIAotICAgIGF1dG8mIHdlYlByb2Nlc3MgPSBX
ZWJQcm9jZXNzOjpzaW5nbGV0b24oKTsKLSAgICBpZiAoIXdlYlByb2Nlc3MudXNlc05ldHdvcmtQ
cm9jZXNzKCkpIHsKLSAgICAgICAgTG9hZGVyU3RyYXRlZ3k6OmNyZWF0ZVBpbmdIYW5kbGUobmV0
d29ya2luZ0NvbnRleHQsIHJlcXVlc3QsIHNob3VsZFVzZUNyZWRlbnRpYWxTdG9yYWdlKTsKLSAg
ICAgICAgcmV0dXJuOwotICAgIH0KLQogICAgIFdlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQqIHdl
YkNvbnRleHQgPSBzdGF0aWNfY2FzdDxXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0Kj4obmV0d29y
a2luZ0NvbnRleHQpOwogICAgIFdlYkZyYW1lTG9hZGVyQ2xpZW50KiB3ZWJGcmFtZUxvYWRlckNs
aWVudCA9IHdlYkNvbnRleHQtPndlYkZyYW1lTG9hZGVyQ2xpZW50KCk7CiAgICAgV2ViRnJhbWUq
IHdlYkZyYW1lID0gd2ViRnJhbWVMb2FkZXJDbGllbnQgPyB3ZWJGcmFtZUxvYWRlckNsaWVudC0+
d2ViRnJhbWUoKSA6IG51bGxwdHI7CkBAIC0yNzMsMTYgKzIwNiwxMyBAQCB2b2lkIFdlYlBsYXRm
b3JtU3RyYXRlZ2llczo6Y3JlYXRlUGluZ0hhCiAgICAgbG9hZFBhcmFtZXRlcnMuYWxsb3dTdG9y
ZWRDcmVkZW50aWFscyA9IHNob3VsZFVzZUNyZWRlbnRpYWxTdG9yYWdlID8gQWxsb3dTdG9yZWRD
cmVkZW50aWFscyA6IERvTm90QWxsb3dTdG9yZWRDcmVkZW50aWFsczsKICAgICBsb2FkUGFyYW1l
dGVycy5zaG91bGRDbGVhclJlZmVycmVyT25IVFRQU1RvSFRUUFJlZGlyZWN0ID0gbmV0d29ya2lu
Z0NvbnRleHQtPnNob3VsZENsZWFyUmVmZXJyZXJPbkhUVFBTVG9IVFRQUmVkaXJlY3QoKTsKIAot
ICAgIHdlYlByb2Nlc3MubmV0d29ya0Nvbm5lY3Rpb24oKS0+Y29ubmVjdGlvbigpLT5zZW5kKE1l
c3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6TG9hZFBpbmcobG9hZFBhcmFt
ZXRlcnMpLCAwKTsKKyAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5uZXR3b3JrQ29ubmVjdGlv
bigpLT5jb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzOjpMb2FkUGluZyhsb2FkUGFyYW1ldGVycyksIDApOwogfQogCiBCbG9iUmVnaXN0cnkq
IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y3JlYXRlQmxvYlJlZ2lzdHJ5KCkKIHsKLSAgICBpZiAo
IVdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnVzZXNOZXR3b3JrUHJvY2VzcygpKQotICAgICAgICBy
ZXR1cm4gTG9hZGVyU3RyYXRlZ3k6OmNyZWF0ZUJsb2JSZWdpc3RyeSgpOwogICAgIHJldHVybiBu
ZXcgQmxvYlJlZ2lzdHJ5UHJveHk7ICAgIAogfQotI2VuZGlmCiAKIC8vIFBsdWdpblN0cmF0ZWd5
CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxh
dGZvcm1TdHJhdGVnaWVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaAkocmV2aXNpb24gMTkyNjAx
KQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9y
bVN0cmF0ZWdpZXMuaAkod29ya2luZyBjb3B5KQpAQCAtNTksMTIgKzU5LDEwIEBAIHByaXZhdGU6
CiAgICAgdmlydHVhbCB2b2lkIGRlbGV0ZUNvb2tpZShjb25zdCBXZWJDb3JlOjpOZXR3b3JrU3Rv
cmFnZVNlc3Npb24mLCBjb25zdCBXZWJDb3JlOjpVUkwmLCBjb25zdCBTdHJpbmcmKSBvdmVycmlk
ZTsKIAogICAgIC8vIFdlYkNvcmU6OkxvYWRlclN0cmF0ZWd5Ci0jaWYgRU5BQkxFKE5FVFdPUktf
UFJPQ0VTUykKICAgICB2aXJ0dWFsIFdlYkNvcmU6OlJlc291cmNlTG9hZFNjaGVkdWxlciogcmVz
b3VyY2VMb2FkU2NoZWR1bGVyKCkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIGxvYWRSZXNv
dXJjZVN5bmNocm9ub3VzbHkoV2ViQ29yZTo6TmV0d29ya2luZ0NvbnRleHQqLCB1bnNpZ25lZCBs
b25nIHJlc291cmNlTG9hZElkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVz
dCYsIFdlYkNvcmU6OlN0b3JlZENyZWRlbnRpYWxzLCBXZWJDb3JlOjpDbGllbnRDcmVkZW50aWFs
UG9saWN5LCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25z
ZSYsIFZlY3RvcjxjaGFyPiYgZGF0YSkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCBXZWJDb3JlOjpC
bG9iUmVnaXN0cnkqIGNyZWF0ZUJsb2JSZWdpc3RyeSgpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwg
dm9pZCBjcmVhdGVQaW5nSGFuZGxlKFdlYkNvcmU6Ok5ldHdvcmtpbmdDb250ZXh0KiwgV2ViQ29y
ZTo6UmVzb3VyY2VSZXF1ZXN0JiwgYm9vbCBzaG91bGRVc2VDcmVkZW50aWFsU3RvcmFnZSkgb3Zl
cnJpZGU7Ci0jZW5kaWYKIAogICAgIC8vIFdlYkNvcmU6OlBsdWdpblN0cmF0ZWd5CiAgICAgdmly
dHVhbCB2b2lkIHJlZnJlc2hQbHVnaW5zKCkgb3ZlcnJpZGU7CkluZGV4OiBTb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAJKHJldmlzaW9uIDE5MjYwMSkK
KysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTMzLDEwICszMywxMyBAQAogI2luY2x1ZGUgIkluamVjdGVkQnVuZGxlTm9k
ZUhhbmRsZS5oIgogI2luY2x1ZGUgIkluamVjdGVkQnVuZGxlUmFuZ2VIYW5kbGUuaCIKICNpbmNs
dWRlICJJbmplY3RlZEJ1bmRsZVNjcmlwdFdvcmxkLmgiCisjaW5jbHVkZSAiTmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3NNZXNzYWdlcy5oIgorI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzQ29u
bmVjdGlvbi5oIgogI2luY2x1ZGUgIlBsdWdpblZpZXcuaCIKICNpbmNsdWRlICJXS0FQSUNhc3Qu
aCIKICNpbmNsdWRlICJXS0J1bmRsZUFQSUNhc3QuaCIKICNpbmNsdWRlICJXZWJDaHJvbWVDbGll
bnQuaCIKKyNpbmNsdWRlICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIKICNpbmNsdWRlICJXZWJE
b2N1bWVudExvYWRlci5oIgogI2luY2x1ZGUgIldlYlBhZ2UuaCIKICNpbmNsdWRlICJXZWJQYWdl
UHJveHlNZXNzYWdlcy5oIgpAQCAtODEsMTIgKzg0LDYgQEAKICNpbmNsdWRlIDxXZWJDb3JlL0xl
Z2FjeVdlYkFyY2hpdmUuaD4KICNlbmRpZgogCi0jaWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykK
LSNpbmNsdWRlICJOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzc01lc3NhZ2VzLmgiCi0jaW5j
bHVkZSAiTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmgiCi0jaW5jbHVkZSAiV2ViQ29yZUFyZ3Vt
ZW50Q29kZXJzLmgiCi0jZW5kaWYKLQogI2lmbmRlZiBOREVCVUcKICNpbmNsdWRlIDx3dGYvUmVm
Q291bnRlZExlYWtDb3VudGVyLmg+CiAjZW5kaWYKQEAgLTI1NywyMyArMjU0LDkgQEAgdm9pZCBX
ZWJGcmFtZTo6c3RhcnREb3dubG9hZChjb25zdCBXZWJDbwogICAgIG1fcG9saWN5RG93bmxvYWRJ
RCA9IDA7CiAKICAgICBhdXRvJiB3ZWJQcm9jZXNzID0gV2ViUHJvY2Vzczo6c2luZ2xldG9uKCk7
Ci0jaWYgVVNFKE5FVFdPUktfU0VTU0lPTikKLSAgICBBU1NFUlQod2ViUHJvY2Vzcy51c2VzTmV0
d29ya1Byb2Nlc3MoKSk7Ci0jZW5kaWYKICAgICBTZXNzaW9uSUQgc2Vzc2lvbklEID0gcGFnZSgp
ID8gcGFnZSgpLT5zZXNzaW9uSUQoKSA6IFNlc3Npb25JRDo6ZGVmYXVsdFNlc3Npb25JRCgpOwot
I2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCi0gICAgaWYgKHdlYlByb2Nlc3MudXNlc05ldHdv
cmtQcm9jZXNzKCkpIHsKLSAgICAgICAgd2ViUHJvY2Vzcy5uZXR3b3JrQ29ubmVjdGlvbigpLT5j
b25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
OjpTdGFydERvd25sb2FkKHNlc3Npb25JRCwgcG9saWN5RG93bmxvYWRJRCwgcmVxdWVzdCksIDAp
OwotICAgICAgICByZXR1cm47Ci0gICAgfQotI2VuZGlmCi0KLSNpZiBVU0UoTkVUV09SS19TRVNT
SU9OKQotICAgIC8vIFVzaW5nIE5FVFdPUktfU0VTU0lPTiByZXF1aXJlcyB0aGUgdXNlIG9mIGEg
bmV0d29yayBwcm9jZXNzLgotICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0jZWxz
ZQotICAgIHdlYlByb2Nlc3MuZG93bmxvYWRNYW5hZ2VyKCkuc3RhcnREb3dubG9hZChzZXNzaW9u
SUQsIHBvbGljeURvd25sb2FkSUQsIHJlcXVlc3QpOwotI2VuZGlmCisgICAgd2ViUHJvY2Vzcy5u
ZXR3b3JrQ29ubmVjdGlvbigpLT5jb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtD
b25uZWN0aW9uVG9XZWJQcm9jZXNzOjpTdGFydERvd25sb2FkKHNlc3Npb25JRCwgcG9saWN5RG93
bmxvYWRJRCwgcmVxdWVzdCksIDApOworICAgIHJldHVybjsKIH0KIAogdm9pZCBXZWJGcmFtZTo6
Y29udmVydE1haW5SZXNvdXJjZUxvYWRUb0Rvd25sb2FkKERvY3VtZW50TG9hZGVyKiBkb2N1bWVu
dExvYWRlciwgU2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1
ZXN0LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKQEAgLTI4NiwzOSArMjY5LDEy
IEBAIHZvaWQgV2ViRnJhbWU6OmNvbnZlcnRNYWluUmVzb3VyY2VMb2FkVG8KICAgICBTdWJyZXNv
dXJjZUxvYWRlciogbWFpblJlc291cmNlTG9hZGVyID0gZG9jdW1lbnRMb2FkZXItPm1haW5SZXNv
dXJjZUxvYWRlcigpOwogCiAgICAgYXV0byYgd2ViUHJvY2VzcyA9IFdlYlByb2Nlc3M6OnNpbmds
ZXRvbigpOwotI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCi0jaWYgVVNFKE5FVFdPUktfU0VT
U0lPTikKLSAgICBBU1NFUlQod2ViUHJvY2Vzcy51c2VzTmV0d29ya1Byb2Nlc3MoKSk7Ci0jZW5k
aWYKLSAgICBpZiAod2ViUHJvY2Vzcy51c2VzTmV0d29ya1Byb2Nlc3MoKSkgewotICAgICAgICAv
LyBVc2UgMCB0byBpbmRpY2F0ZSB0aGF0IHRoZSByZXNvdXJjZSBsb2FkIGNhbid0IGJlIGNvbnZl
cnRlZCBhbmQgYSBuZXcgZG93bmxvYWQgbXVzdCBiZSBzdGFydGVkLgotICAgICAgICAvLyBUaGlz
IGNhbiBoYXBwZW4gaWYgdGhlcmUgaXMgbm8gbG9hZGVyIGJlY2F1c2UgdGhlIG1haW4gcmVzb3Vy
Y2UgaXMgaW4gdGhlIFdlYkNvcmUgbWVtb3J5IGNhY2hlLAotICAgICAgICAvLyBvciBiZWNhdXNl
IHRoZSBjb252ZXJzaW9uIHdhcyBhdHRlbXB0ZWQgd2hlbiBub3QgY2FsbGluZyBTdWJyZXNvdXJj
ZUxvYWRlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNlKCkuCi0gICAgICAgIHVpbnQ2NF90IG1haW5SZXNv
dXJjZUxvYWRJZGVudGlmaWVyOwotICAgICAgICBpZiAobWFpblJlc291cmNlTG9hZGVyKQotICAg
ICAgICAgICAgbWFpblJlc291cmNlTG9hZElkZW50aWZpZXIgPSBtYWluUmVzb3VyY2VMb2FkZXIt
PmlkZW50aWZpZXIoKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgbWFpblJlc291cmNlTG9h
ZElkZW50aWZpZXIgPSAwOwotCi0gICAgICAgIHdlYlByb2Nlc3MubmV0d29ya0Nvbm5lY3Rpb24o
KS0+Y29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzczo6Q29udmVydE1haW5SZXNvdXJjZUxvYWRUb0Rvd25sb2FkKHNlc3Npb25JRCwgbWFpblJl
c291cmNlTG9hZElkZW50aWZpZXIsIHBvbGljeURvd25sb2FkSUQsIHJlcXVlc3QsIHJlc3BvbnNl
KSwgMCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0jZW5kaWYKLQotICAgIGlmICghbWFpblJl
c291cmNlTG9hZGVyKSB7Ci0gICAgICAgIC8vIFRoZSBtYWluIHJlc291cmNlIGhhcyBhbHJlYWR5
IGJlZW4gbG9hZGVkLiBTdGFydCBhIG5ldyBkb3dubG9hZCBpbnN0ZWFkLgotI2lmICFVU0UoTkVU
V09SS19TRVNTSU9OKQotICAgICAgICB3ZWJQcm9jZXNzLmRvd25sb2FkTWFuYWdlcigpLnN0YXJ0
RG93bmxvYWQoc2Vzc2lvbklELCBwb2xpY3lEb3dubG9hZElELCByZXF1ZXN0KTsKLSNlbmRpZgot
ICAgICAgICByZXR1cm47Ci0gICAgfQorICAgIC8vIFVzZSAwIHRvIGluZGljYXRlIHRoYXQgdGhl
IHJlc291cmNlIGxvYWQgY2FuJ3QgYmUgY29udmVydGVkIGFuZCBhIG5ldyBkb3dubG9hZCBtdXN0
IGJlIHN0YXJ0ZWQuCisgICAgLy8gVGhpcyBjYW4gaGFwcGVuIGlmIHRoZXJlIGlzIG5vIGxvYWRl
ciBiZWNhdXNlIHRoZSBtYWluIHJlc291cmNlIGlzIGluIHRoZSBXZWJDb3JlIG1lbW9yeSBjYWNo
ZSwKKyAgICAvLyBvciBiZWNhdXNlIHRoZSBjb252ZXJzaW9uIHdhcyBhdHRlbXB0ZWQgd2hlbiBu
b3QgY2FsbGluZyBTdWJyZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNlKCkuCisgICAg
dWludDY0X3QgbWFpblJlc291cmNlTG9hZElkZW50aWZpZXIgPSBtYWluUmVzb3VyY2VMb2FkZXIg
PyBtYWluUmVzb3VyY2VMb2FkZXItPmlkZW50aWZpZXIoKSA6IDA7CiAKLSNpZiBVU0UoTkVUV09S
S19TRVNTSU9OKQotICAgIC8vIFVzaW5nIE5FVFdPUktfU0VTU0lPTiByZXF1aXJlcyB0aGUgdXNl
IG9mIGEgbmV0d29yayBwcm9jZXNzLgotICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7
Ci0jZWxzZQotICAgIHdlYlByb2Nlc3MuZG93bmxvYWRNYW5hZ2VyKCkuY29udmVydEhhbmRsZVRv
RG93bmxvYWQocG9saWN5RG93bmxvYWRJRCwgZG9jdW1lbnRMb2FkZXItPm1haW5SZXNvdXJjZUxv
YWRlcigpLT5oYW5kbGUoKSwgcmVxdWVzdCwgcmVzcG9uc2UpOwotI2VuZGlmCisgICAgd2ViUHJv
Y2Vzcy5uZXR3b3JrQ29ubmVjdGlvbigpLT5jb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6Ok5l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpDb252ZXJ0TWFpblJlc291cmNlTG9hZFRvRG93
bmxvYWQoc2Vzc2lvbklELCBtYWluUmVzb3VyY2VMb2FkSWRlbnRpZmllciwgcG9saWN5RG93bmxv
YWRJRCwgcmVxdWVzdCwgcmVzcG9uc2UpLCAwKTsKIH0KIAogU3RyaW5nIFdlYkZyYW1lOjpzb3Vy
Y2UoKSBjb25zdApJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9zb3VwL1dlYlByb2Nl
c3NTb3VwLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL3NvdXAv
V2ViUHJvY2Vzc1NvdXAuY3BwCShyZXZpc2lvbiAxOTI2MDEpCisrKyBTb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL3NvdXAvV2ViUHJvY2Vzc1NvdXAuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00OSwx
OCArNDksNiBAQAogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotc3RhdGljIHVpbnQ2NF90IGdldENh
Y2hlRGlza0ZyZWVTaXplKFNvdXBDYWNoZSogY2FjaGUpCi17Ci0gICAgQVNTRVJUKGNhY2hlKTsK
LQotICAgIEdVbmlxdWVPdXRQdHI8Y2hhcj4gY2FjaGVEaXI7Ci0gICAgZ19vYmplY3RfZ2V0KEdf
T0JKRUNUKGNhY2hlKSwgImNhY2hlLWRpciIsICZjYWNoZURpci5vdXRQdHIoKSwgTlVMTCk7Ci0g
ICAgaWYgKCFjYWNoZURpcikKLSAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICByZXR1cm4gV2ViQ29y
ZTo6Z2V0Vm9sdW1lRnJlZVNpemVGb3JQYXRoKGNhY2hlRGlyLmdldCgpKTsKLX0KLQogdm9pZCBX
ZWJQcm9jZXNzOjpwbGF0Zm9ybVNldENhY2hlTW9kZWwoQ2FjaGVNb2RlbCBjYWNoZU1vZGVsKQog
ewogICAgIHVuc2lnbmVkIGNhY2hlVG90YWxDYXBhY2l0eSA9IDA7CkBAIC03MywxMiArNjEsNiBA
QCB2b2lkIFdlYlByb2Nlc3M6OnBsYXRmb3JtU2V0Q2FjaGVNb2RlbChDCiAgICAgdW5zaWduZWQg
bG9uZyB1cmxDYWNoZURpc2tDYXBhY2l0eSA9IDA7CiAKICAgICB1aW50NjRfdCBkaXNrRnJlZVNp
emUgPSAwOwotICAgIFNvdXBDYWNoZSogY2FjaGUgPSBudWxscHRyOwotCi0gICAgaWYgKCF1c2Vz
TmV0d29ya1Byb2Nlc3MoKSkgewotICAgICAgICBjYWNoZSA9IFdlYkNvcmU6OlNvdXBOZXR3b3Jr
U2Vzc2lvbjo6ZGVmYXVsdFNlc3Npb24oKS5jYWNoZSgpOwotICAgICAgICBkaXNrRnJlZVNpemUg
PSBnZXRDYWNoZURpc2tGcmVlU2l6ZShjYWNoZSkgLyBXVEY6Ok1COwotICAgIH0KIAogICAgIHVp
bnQ2NF90IG1lbVNpemUgPSBXVEY6OnJhbVNpemUoKSAvIFdURjo6TUI7CiAgICAgY2FsY3VsYXRl
Q2FjaGVTaXplcyhjYWNoZU1vZGVsLCBtZW1TaXplLCBkaXNrRnJlZVNpemUsCkBAIC05NCwyMyAr
NzYsMTAgQEAgdm9pZCBXZWJQcm9jZXNzOjpwbGF0Zm9ybVNldENhY2hlTW9kZWwoQwogI2lmIFBM
QVRGT1JNKEdUSykKICAgICBXZWJDb3JlOjpQYWdlQ2FjaGU6OnNpbmdsZXRvbigpLnNldFNob3Vs
ZENsZWFyQmFja2luZ1N0b3Jlcyh0cnVlKTsKICNlbmRpZgotCi0gICAgaWYgKCF1c2VzTmV0d29y
a1Byb2Nlc3MoKSkgewotICAgICAgICBpZiAodXJsQ2FjaGVEaXNrQ2FwYWNpdHkgPiBzb3VwX2Nh
Y2hlX2dldF9tYXhfc2l6ZShjYWNoZSkpCi0gICAgICAgICAgICBzb3VwX2NhY2hlX3NldF9tYXhf
c2l6ZShjYWNoZSwgdXJsQ2FjaGVEaXNrQ2FwYWNpdHkpOwotICAgIH0KIH0KIAogdm9pZCBXZWJQ
cm9jZXNzOjpwbGF0Zm9ybUNsZWFyUmVzb3VyY2VDYWNoZXMoUmVzb3VyY2VDYWNoZXNUb0NsZWFy
IGNhY2hlc1RvQ2xlYXIpCiB7Ci0gICAgaWYgKGNhY2hlc1RvQ2xlYXIgPT0gSW5NZW1vcnlSZXNv
dXJjZUNhY2hlc09ubHkpCi0gICAgICAgIHJldHVybjsKLQotICAgIC8vIElmIHdlJ3JlIHVzaW5n
IHRoZSBuZXR3b3JrIHByb2Nlc3MgdGhlbiBpdCBpcyB0aGUgb25seSBvbmUgdGhhdCBuZWVkcyB0
byBjbGVhciB0aGUgZGlzayBjYWNoZS4KLSAgICBpZiAodXNlc05ldHdvcmtQcm9jZXNzKCkpCi0g
ICAgICAgIHJldHVybjsKLQotICAgIHNvdXBfY2FjaGVfY2xlYXIoV2ViQ29yZTo6U291cE5ldHdv
cmtTZXNzaW9uOjpkZWZhdWx0U2Vzc2lvbigpLmNhY2hlKCkpOwogfQogCiBzdGF0aWMgdm9pZCBz
ZXRTb3VwU2Vzc2lvbkFjY2VwdExhbmd1YWdlKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBsYW5ndWFn
ZXMpCkBAIC0xMzUsNjIgKzEwNCwxOCBAQCB2b2lkIFdlYlByb2Nlc3M6OnBsYXRmb3JtSW5pdGlh
bGl6ZVdlYlByCiAgICAgICAgIHNlY2NvbXBGaWx0ZXJzLmluaXRpYWxpemUoKTsKICAgICB9CiAj
ZW5kaWYKLQotICAgIGlmICh1c2VzTmV0d29ya1Byb2Nlc3MoKSkKLSAgICAgICAgcmV0dXJuOwot
Ci0gICAgQVNTRVJUKCFwYXJhbWV0ZXJzLmRpc2tDYWNoZURpcmVjdG9yeS5pc0VtcHR5KCkpOwot
Ci0gICAgLy8gV2UgdXNlZCB0byB1c2UgdGhlIGdpdmVuIGNhY2hlIGRpcmVjdG9yeSBmb3IgdGhl
IHNvdXAgY2FjaGUsIGJ1dCBub3cgd2UgdXNlIGEgc3ViZGlyZWN0b3J5IHRvIGF2b2lkCi0gICAg
Ly8gY29uZmxpY3RzIHdpdGggb3RoZXIgY2FjaGUgZmlsZXMgaW4gdGhlIHNhbWUgZGlyZWN0b3J5
LiBSZW1vdmUgdGhlIG9sZCBjYWNoZSBmaWxlcyBpZiB0aGV5IHN0aWxsIGV4aXN0LgotICAgIFdl
YkNvcmU6OlNvdXBOZXR3b3JrU2Vzc2lvbjo6ZGVmYXVsdFNlc3Npb24oKS5jbGVhckNhY2hlKFdl
YkNvcmU6OmRpcmVjdG9yeU5hbWUocGFyYW1ldGVycy5kaXNrQ2FjaGVEaXJlY3RvcnkpKTsKLQot
I2lmIEVOQUJMRShORVRXT1JLX0NBQ0hFKQotICAgIC8vIFdoZW4gbmV0d29yayBjYWNoZSBpcyBl
bmFibGVkLCB0aGUgZGlzayBjYWNoZSBkaXJlY3RvcnkgaXMgdGhlIG5ldHdvcmsgcHJvY2VzcyBv
bmUuCi0gICAgQ1N0cmluZyBkaXNrQ2FjaGVQYXRoID0gV2ViQ29yZTo6cGF0aEJ5QXBwZW5kaW5n
Q29tcG9uZW50KFdlYkNvcmU6OmRpcmVjdG9yeU5hbWUocGFyYW1ldGVycy5kaXNrQ2FjaGVEaXJl
Y3RvcnkpLCAid2Via2l0IikudXRmOCgpOwotI2Vsc2UKLSAgICBDU3RyaW5nIGRpc2tDYWNoZVBh
dGggPSBwYXJhbWV0ZXJzLmRpc2tDYWNoZURpcmVjdG9yeS51dGY4KCk7Ci0jZW5kaWYKLQotICAg
IEdSZWZQdHI8U291cENhY2hlPiBzb3VwQ2FjaGUgPSBhZG9wdEdSZWYoc291cF9jYWNoZV9uZXco
ZGlza0NhY2hlUGF0aC5kYXRhKCksIFNPVVBfQ0FDSEVfU0lOR0xFX1VTRVIpKTsKLSAgICBXZWJD
b3JlOjpTb3VwTmV0d29ya1Nlc3Npb246OmRlZmF1bHRTZXNzaW9uKCkuc2V0Q2FjaGUoc291cENh
Y2hlLmdldCgpKTsKLSAgICAvLyBTZXQgYW4gaW5pdGlhbCBodWdlIG1heF9zaXplIGZvciB0aGUg
U291cENhY2hlIHNvIHRoZSBjYWxsIHRvIHNvdXBfY2FjaGVfbG9hZCgpIHdvbid0IGV2aWN0IGFu
eSBjYWNoZWQKLSAgICAvLyByZXNvdXJjZS4gVGhlIGZpbmFsIHNpemUgb2YgdGhlIGNhY2hlIHdp
bGwgYmUgc2V0IGJ5IE5ldHdvcmtQcm9jZXNzOjpwbGF0Zm9ybVNldENhY2hlTW9kZWwoKS4KLSAg
ICB1bnNpZ25lZCBpbml0aWFsTWF4U2l6ZSA9IHNvdXBfY2FjaGVfZ2V0X21heF9zaXplKHNvdXBD
YWNoZS5nZXQoKSk7Ci0gICAgc291cF9jYWNoZV9zZXRfbWF4X3NpemUoc291cENhY2hlLmdldCgp
LCBHX01BWFVJTlQpOwotICAgIHNvdXBfY2FjaGVfbG9hZChzb3VwQ2FjaGUuZ2V0KCkpOwotICAg
IHNvdXBfY2FjaGVfc2V0X21heF9zaXplKHNvdXBDYWNoZS5nZXQoKSwgaW5pdGlhbE1heFNpemUp
OwotCi0gICAgaWYgKCFwYXJhbWV0ZXJzLmNvb2tpZVBlcnNpc3RlbnRTdG9yYWdlUGF0aC5pc0Vt
cHR5KCkpIHsKLSAgICAgICAgc3VwcGxlbWVudDxXZWJDb29raWVNYW5hZ2VyPigpLT5zZXRDb29r
aWVQZXJzaXN0ZW50U3RvcmFnZShwYXJhbWV0ZXJzLmNvb2tpZVBlcnNpc3RlbnRTdG9yYWdlUGF0
aCwKLSAgICAgICAgICAgIHBhcmFtZXRlcnMuY29va2llUGVyc2lzdGVudFN0b3JhZ2VUeXBlKTsK
LSAgICB9Ci0gICAgc3VwcGxlbWVudDxXZWJDb29raWVNYW5hZ2VyPigpLT5zZXRIVFRQQ29va2ll
QWNjZXB0UG9saWN5KHBhcmFtZXRlcnMuY29va2llQWNjZXB0UG9saWN5KTsKLQotICAgIGlmICgh
cGFyYW1ldGVycy5sYW5ndWFnZXMuaXNFbXB0eSgpKQotICAgICAgICBzZXRTb3VwU2Vzc2lvbkFj
Y2VwdExhbmd1YWdlKHBhcmFtZXRlcnMubGFuZ3VhZ2VzKTsKLQotICAgIHNldElnbm9yZVRMU0Vy
cm9ycyhwYXJhbWV0ZXJzLmlnbm9yZVRMU0Vycm9ycyk7Ci0KLSAgICBXZWJDb3JlOjphZGRMYW5n
dWFnZUNoYW5nZU9ic2VydmVyKHRoaXMsIGxhbmd1YWdlQ2hhbmdlZCk7CiB9CiAKIHZvaWQgV2Vi
UHJvY2Vzczo6cGxhdGZvcm1UZXJtaW5hdGUoKQogewotICAgIGlmICghdXNlc05ldHdvcmtQcm9j
ZXNzKCkpCi0gICAgICAgIFdlYkNvcmU6OnJlbW92ZUxhbmd1YWdlQ2hhbmdlT2JzZXJ2ZXIodGhp
cyk7CiB9CiAKIHZvaWQgV2ViUHJvY2Vzczo6c2V0SWdub3JlVExTRXJyb3JzKGJvb2wgaWdub3Jl
VExTRXJyb3JzKQogewotICAgIEFTU0VSVCghdXNlc05ldHdvcmtQcm9jZXNzKCkpOwotICAgIFdl
YkNvcmU6OlJlc291cmNlSGFuZGxlOjpzZXRJZ25vcmVTU0xFcnJvcnMoaWdub3JlVExTRXJyb3Jz
KTsKIH0KIAogdm9pZCBXZWJQcm9jZXNzOjphbGxvd1NwZWNpZmljSFRUUFNDZXJ0aWZpY2F0ZUZv
ckhvc3QoY29uc3QgV2ViQ29yZTo6Q2VydGlmaWNhdGVJbmZvJiBjZXJ0aWZpY2F0ZUluZm8sIGNv
bnN0IFN0cmluZyYgaG9zdCkKIHsKLSAgICBBU1NFUlQoIXVzZXNOZXR3b3JrUHJvY2VzcygpKTsK
LSAgICBXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZTo6c2V0Q2xpZW50Q2VydGlmaWNhdGUoaG9zdCwg
Y2VydGlmaWNhdGVJbmZvLmNlcnRpZmljYXRlKCkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJL
aXQKSW5kZXg6IFNvdXJjZS9jbWFrZS9PcHRpb25zRWZsLmNtYWtlCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9jbWFrZS9PcHRpb25zRWZsLmNtYWtlCShyZXZpc2lvbiAxOTI2MDEpCisrKyBTb3VyY2Uv
Y21ha2UvT3B0aW9uc0VmbC5jbWFrZQkod29ya2luZyBjb3B5KQpAQCAtMTA2LDcgKzEwNiw2IEBA
IFdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV8KIFdFQktJVF9PUFRJT05f
REVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9OQVZJR0FUT1JfQ09OVEVOVF9VVElMUyBQVUJMSUMg
T04pCiBXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfTkFWSUdBVE9SX0hX
Q09OQ1VSUkVOQ1kgUFVCTElDIE9OKQogV0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUo
RU5BQkxFX05FVFNDQVBFX1BMVUdJTl9BUEkgUFVCTElDIE9OKQotV0VCS0lUX09QVElPTl9ERUZB
VUxUX1BPUlRfVkFMVUUoRU5BQkxFX05FVFdPUktfUFJPQ0VTUyBQVUJMSUMgT04pCiBXRUJLSVRf
T1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfTk9TTklGRiBQVUJMSUMgT04pCiBXRUJL
SVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfUE9JTlRFUl9MT0NLIFBSSVZBVEUg
T0ZGKQogV0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX1BVQkxJQ19TVUZG
SVhfTElTVCBQUklWQVRFIE9OKQpJbmRleDogU291cmNlL2NtYWtlL09wdGlvbnNHVEsuY21ha2UK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL2NtYWtlL09wdGlvbnNHVEsuY21ha2UJKHJldmlzaW9uIDE5
MjYwMSkKKysrIFNvdXJjZS9jbWFrZS9PcHRpb25zR1RLLmNtYWtlCSh3b3JraW5nIGNvcHkpCkBA
IC0xODYsNyArMTg2LDYgQEAgV0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxF
XwogV0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX1ZJRVdfTU9ERV9DU1Nf
TUVESUEgUFJJVkFURSBPTikKIFdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJM
RV9XRUJfVElNSU5HIFBSSVZBVEUgT04pCiBXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxV
RShFTkFCTEVfV0VCR0wgUFJJVkFURSBPTikKLVdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZB
TFVFKEVOQUJMRV9ORVRXT1JLX1BST0NFU1MgUFJJVkFURSBPTikKIFdFQktJVF9PUFRJT05fREVG
QVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9USFJFQURFRF9DT01QT1NJVE9SIFBSSVZBVEUgT0ZGKQog
V0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX1NIQURPV19ET00gUFJJVkFU
RSBPRkYpCiAKSW5kZXg6IFNvdXJjZS9jbWFrZS9PcHRpb25zTWFjLmNtYWtlCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9jbWFrZS9PcHRpb25zTWFjLmNtYWtlCShyZXZpc2lvbiAxOTI2MDEpCisrKyBT
b3VyY2UvY21ha2UvT3B0aW9uc01hYy5jbWFrZQkod29ya2luZyBjb3B5KQpAQCAtMjIwLDcgKzIy
MCw2IEBAIFdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV8KIAogV0VCS0lU
X09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX1NBTkRCT1hfRVhURU5TSU9OUyBQUklW
QVRFIE9OKQogV0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX1dFQl9QUk9D
RVNTX1NBTkRCT1ggUFJJVkFURSBPTikKLVdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVF
KEVOQUJMRV9ORVRXT1JLX1BST0NFU1MgUFJJVkFURSBPTikKIFdFQktJVF9PUFRJT05fREVGQVVM
VF9QT1JUX1ZBTFVFKEVOQUJMRV9EQVRBQkFTRV9QUk9DRVNTIFBSSVZBVEUgT04pCiBXRUJLSVRf
T1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfUExVR0lOX1BST0NFU1MgUFJJVkFURSBP
TikKIFdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9NRU1PUllfU0FNUExF
UiBQUklWQVRFIE9OKQpJbmRleDogU291cmNlL2NtYWtlL1dlYktpdEZlYXR1cmVzLmNtYWtlCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9jbWFrZS9XZWJLaXRGZWF0dXJlcy5jbWFrZQkocmV2aXNpb24g
MTkyNjAxKQorKysgU291cmNlL2NtYWtlL1dlYktpdEZlYXR1cmVzLmNtYWtlCSh3b3JraW5nIGNv
cHkpCkBAIC0xMjgsNyArMTI4LDYgQEAgbWFjcm8oV0VCS0lUX09QVElPTl9CRUdJTikKICAgICBX
RUJLSVRfT1BUSU9OX0RFRklORShFTkFCTEVfTkFWSUdBVE9SX0hXQ09OQ1VSUkVOQ1kgIlRvZ2ds
ZSBOYXZpZ2F0b3IgaGFyZHdhcmUgY29uY3VycmVuY3kgc3VwcG9ydCIgUFJJVkFURSBPTikKICAg
ICBXRUJLSVRfT1BUSU9OX0RFRklORShFTkFCTEVfTk9TTklGRiAiVG9nZ2xlIHN1cHBvcnQgZm9y
ICdYLUNvbnRlbnQtVHlwZS1PcHRpb25zOiBub3NuaWZmJyIgUFJJVkFURSBPRkYpCiAgICAgV0VC
S0lUX09QVElPTl9ERUZJTkUoRU5BQkxFX05FVFNDQVBFX1BMVUdJTl9BUEkgIlRvZ2dsZSBOZXRz
Y2FwZSBQbHVnaW4gc3VwcG9ydCIgUFJJVkFURSBPTikKLSAgICBXRUJLSVRfT1BUSU9OX0RFRklO
RShFTkFCTEVfTkVUV09SS19QUk9DRVNTICJUb2dnbGUgZGVkaWNhdGVkIG5ldHdvcmsgcHJvY2Vz
cyBzdXBwb3J0IGluIFdlYktpdDIiIFBSSVZBVEUgT0ZGKQogICAgIFdFQktJVF9PUFRJT05fREVG
SU5FKEVOQUJMRV9OT1RJRklDQVRJT05TICJUb2dnbGUgRGVza3RvcCBOb3RpZmljYXRpb25zIFN1
cHBvcnQiIFBSSVZBVEUgT0ZGKQogICAgIFdFQktJVF9PUFRJT05fREVGSU5FKEVOQUJMRV9PUklF
TlRBVElPTl9FVkVOVFMgIlRvZ2dsZSBPcmllbnRhdGlvbiBFdmVudHMgc3VwcG9ydCIgUFJJVkFU
RSBPRkYpCiAgICAgV0VCS0lUX09QVElPTl9ERUZJTkUoRU5BQkxFX1BERktJVF9QTFVHSU4gIlRv
Z2dsZSBQREZLaXQgcGx1Z2luIHN1cHBvcnQiIFBSSVZBVEUgT0ZGKQpJbmRleDogVG9vbHMvQ2hh
bmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0NoYW5nZUxvZwkocmV2aXNpb24gMTkyNjUzKQor
KysgVG9vbHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTUt
MTEtMTkgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAg
ICAgICBSZW1vdmUgdGhlIG5vbi1OZXR3b3JrUHJvY2VzcyBjb25maWd1cmF0aW9ucworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUxNDE4CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgR2VvZmYgR2FyZW4uCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdDIvbWFjL0dldFBJREFmdGVyQWJvcnRlZFByb2Nlc3NMYXVuY2guY3BwOgorICAg
ICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9U
ZXN0Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXVFI6OlRlc3RDb250cm9sbGVyOjpnZW5lcmF0
ZVBhZ2VDb25maWd1cmF0aW9uKToKKwogMjAxNS0xMS0xOSAgQWxleGV5IFByb3NrdXJ5YWtvdiAg
PGFwQGFwcGxlLmNvbT4KIAogICAgICAgICBMYXlvdXRUZXN0UmVsYXkgcHJvY2Vzc2VzIGxlYWsg
b24gaU9TIHRlc3RlcnMKSW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9t
YWMvR2V0UElEQWZ0ZXJBYm9ydGVkUHJvY2Vzc0xhdW5jaC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL21hYy9HZXRQSURBZnRlckFib3J0ZWRQcm9j
ZXNzTGF1bmNoLmNwcAkocmV2aXNpb24gMTkyNjAxKQorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXQyL21hYy9HZXRQSURBZnRlckFib3J0ZWRQcm9jZXNzTGF1bmNoLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNDIsNyArNDIsNiBAQCBzdGF0aWMgdm9pZCBkaWRGaW5pc2hMb2FkRm9y
RnJhbWUoV0tQYWdlCiBURVNUKFdlYktpdDIsIEdldFBJREFmdGVyQWJvcnRlZFByb2Nlc3NMYXVu
Y2gpCiB7CiAgICAgV0tSZXRhaW5QdHI8V0tDb250ZXh0UmVmPiBjb250ZXh0KEFkb3B0V0ssIFdL
Q29udGV4dENyZWF0ZSgpKTsKLSAgICBXS0NvbnRleHRTZXRVc2VzTmV0d29ya1Byb2Nlc3MoY29u
dGV4dC5nZXQoKSwgdHJ1ZSk7CiAKICAgICBQbGF0Zm9ybVdlYlZpZXcgd2ViVmlldyhjb250ZXh0
LmdldCgpKTsKIApJbmRleDogVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5j
cHAJKHJldmlzaW9uIDE5MjYwMSkKKysrIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRy
b2xsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MDAsMTEgKzQwMCw2IEBAIFdLUmV0YWluUHRy
PFdLUGFnZUNvbmZpZ3VyYXRpb25SZWY+IFRlc3QKIAogICAgIG1fZ2VvbG9jYXRpb25Qcm92aWRl
ciA9IHN0ZDo6bWFrZV91bmlxdWU8R2VvbG9jYXRpb25Qcm92aWRlck1vY2s+KG1fY29udGV4dC5n
ZXQoKSk7CiAKLSNpZiBQTEFURk9STShFRkwpCi0gICAgV0tDb250ZXh0U2V0VXNlc05ldHdvcmtQ
cm9jZXNzKG1fY29udGV4dC5nZXQoKSwgZmFsc2UpOwotICAgIFdLQ29udGV4dFNldFByb2Nlc3NN
b2RlbChtX2NvbnRleHQuZ2V0KCksIGtXS1Byb2Nlc3NNb2RlbFNoYXJlZFNlY29uZGFyeVByb2Nl
c3MpOwotI2VuZGlmCi0KICAgICBpZiAoY29uc3QgY2hhciogZHVtcFJlbmRlclRyZWVUZW1wID0g
bGlicmFyeVBhdGhGb3JUZXN0aW5nKCkpIHsKICAgICAgICAgU3RyaW5nIHRlbXBvcmFyeUZvbGRl
ciA9IFN0cmluZzo6ZnJvbVVURjgoZHVtcFJlbmRlclRyZWVUZW1wKTsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>265913</attachid>
            <date>2015-11-19 15:38:41 -0800</date>
            <delta_ts>2015-11-19 15:50:48 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-151418-20151119153829.patch</filename>
            <type>text/plain</type>
            <size>169660</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IENoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBDaGFuZ2VMb2cJKHJldmlzaW9uIDE5MjYw
MSkKKysrIENoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE1IEBACisyMDE1LTEx
LTE5ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAg
ICAgUmVtb3ZlIHRoZSBub24tTmV0d29ya1Byb2Nlc3MgY29uZmlndXJhdGlvbnMKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MTQxOAorCisgICAgICAg
IFJldmlld2VkIGJ5IEdlb2ZmIEdhcmVuLgorCisgICAgICAgICogU291cmNlL2NtYWtlL09wdGlv
bnNFZmwuY21ha2U6CisgICAgICAgICogU291cmNlL2NtYWtlL09wdGlvbnNHVEsuY21ha2U6Cisg
ICAgICAgICogU291cmNlL2NtYWtlL09wdGlvbnNNYWMuY21ha2U6CisgICAgICAgICogU291cmNl
L2NtYWtlL1dlYktpdEZlYXR1cmVzLmNtYWtlOgorCiAyMDE1LTExLTE3ICBDYXJsb3MgR2FyY2lh
IENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KIAogICAgICAgICBSRUdSRVNTSU9OKHIxOTI0
NTkpOiBbR1RLXSBVc2VyIGFnZW50IHN0cmluZyBpcyBicm9rZW4gYWZ0ZXIgcjE5MjQ1OQpJbmRl
eDogU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQy
L0NoYW5nZUxvZwkocmV2aXNpb24gMTkyNjYwKQorKysgU291cmNlL1dlYktpdDIvQ2hhbmdlTG9n
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzEwIEBACisyMDE1LTExLTE5ICBBbGV4IENocmlz
dGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmVtb3ZlIHRoZSBu
b24tTmV0d29ya1Byb2Nlc3MgY29uZmlndXJhdGlvbnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MTQxOAorCisgICAgICAgIFJldmlld2VkIGJ5IEdl
b2ZmIEdhcmVuLgorCisgICAgICAgIFRoaXMgcGF0Y2ggYXNzdW1lcyBFTkFCTEUoTkVUV09SS19Q
Uk9DRVNTKSBpcyBhbHdheXMgMSwgdXNlc05ldHdvcmtQcm9jZXNzIGlzIGFsd2F5cyB0cnVlLCAK
KyAgICAgICAgYW5kIFByb2Nlc3NNb2RlbCBpcyBhbHdheXMgUHJvY2Vzc01vZGVsTXVsdGlwbGVT
ZWNvbmRhcnlQcm9jZXNzZXMuICBJdCBkb2VzIHRoaXMgYnkgcmVtb3ZpbmcKKyAgICAgICAgdGhl
IGNoZWNrcyBhbmQgdGhlIGNvZGUgdGhhdCB3b3VsZCBiZSBleGVjdXRlZCB3aXRoIG90aGVyIGNv
bmZpZ3VyYXRpb25zLgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogTmV0
d29ya1Byb2Nlc3MvRW50cnlQb2ludC9tYWMvTGVnYWN5UHJvY2Vzcy9OZXR3b3JrUHJvY2Vzc01h
aW4ubW06CisgICAgICAgIChOZXR3b3JrUHJvY2Vzc01haW4pOgorICAgICAgICAqIE5ldHdvcmtQ
cm9jZXNzL0VudHJ5UG9pbnQvbWFjL1hQQ1NlcnZpY2UvTmV0d29ya1NlcnZpY2VFbnRyeVBvaW50
Lm1tOgorICAgICAgICAoTmV0d29ya1NlcnZpY2VJbml0aWFsaXplcik6CisgICAgICAgICogTmV0
d29ya1Byb2Nlc3MvRmlsZUFQSS9OZXR3b3JrQmxvYlJlZ2lzdHJ5LmNwcDoKKyAgICAgICAgKFdl
YktpdDo6TmV0d29ya0Jsb2JSZWdpc3RyeTo6ZmlsZXNJbkJsb2IpOgorICAgICAgICAqIE5ldHdv
cmtQcm9jZXNzL0ZpbGVBUEkvTmV0d29ya0Jsb2JSZWdpc3RyeS5oOgorICAgICAgICAqIE5ldHdv
cmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmJsb2JTaXplKToKKyAgICAgICAg
KiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oOgorICAgICAg
ICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2Vz
LmluOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkLmNwcDoKKyAgICAgICAg
KiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZC5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNz
L05ldHdvcmtMb2FkQ2xpZW50Lmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xv
YWRQYXJhbWV0ZXJzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0xvYWRQYXJhbWV0ZXJz
OjpOZXR3b3JrTG9hZFBhcmFtZXRlcnMpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdv
cmtMb2FkUGFyYW1ldGVycy5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9j
ZXNzLmNwcDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oOgorICAg
ICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluOgorICAgICAg
ICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgICog
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmg6CisgICAgICAgICogTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLm1lc3NhZ2VzLmluOgorICAgICAgICAqIE5l
dHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtQcm9jZXNzQ29jb2EubW06CisgICAgICAgIChXZWJL
aXQ6Ok5ldHdvcmtQcm9jZXNzOjpjbGVhckRpc2tDYWNoZSk6CisgICAgICAgICogTmV0d29ya1By
b2Nlc3MvZWZsL05ldHdvcmtQcm9jZXNzTWFpbkVmbC5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5l
dHdvcmtQcm9jZXNzTWFpblVuaXgpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2d0ay9OZXR3
b3JrUHJvY2Vzc01haW5HdGsuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc01h
aW5Vbml4KToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9pb3MvTmV0d29ya1Byb2Nlc3NJT1Mu
bW06CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvbWFjL05ldHdvcmtMb2FkTWFjLm1tOgorICAg
ICAgICAqIE5ldHdvcmtQcm9jZXNzL21hYy9OZXR3b3JrUHJvY2Vzc01hYy5tbToKKyAgICAgICAg
KiBOZXR3b3JrUHJvY2Vzcy9tYWMvTmV0d29ya1Jlc291cmNlTG9hZGVyTWFjLm1tOgorICAgICAg
ICAqIE5ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya1Byb2Nlc3NTb3VwLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OnBsYXRmb3JtVGVybWluYXRlKToKKyAgICAgICAgKiBO
ZXR3b3JrUHJvY2Vzcy9zb3VwL1JlbW90ZU5ldHdvcmtpbmdDb250ZXh0U291cC5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OlJlbW90ZU5ldHdvcmtpbmdDb250ZXh0OjpzdG9yYWdlU2Vzc2lvbik6Cisg
ICAgICAgICogU2hhcmVkL0FQSS9jL1dLRGVwcmVjYXRlZEZ1bmN0aW9ucy5jcHA6CisgICAgICAg
IChXS0luc3BlY3RvclRvZ2dsZUphdmFTY3JpcHRQcm9maWxpbmcpOgorICAgICAgICAoV0tDb250
ZXh0U2V0UHJvY2Vzc01vZGVsKToKKyAgICAgICAgKFdLQ29udGV4dEdldFByb2Nlc3NNb2RlbCk6
CisgICAgICAgIChXS0NvbnRleHRTZXRVc2VzTmV0d29ya1Byb2Nlc3MpOgorICAgICAgICAoV0tH
cmFwaGljc0NvbnRleHRHZXRDR0NvbnRleHQpOgorICAgICAgICAqIFNoYXJlZC9BdXRoZW50aWNh
dGlvbi9BdXRoZW50aWNhdGlvbk1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpBdXRoZW50
aWNhdGlvbk1hbmFnZXI6OmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSk6CisgICAg
ICAgICogU2hhcmVkL05ldHdvcmsvQ3VzdG9tUHJvdG9jb2xzL0NvY29hL0N1c3RvbVByb3RvY29s
TWFuYWdlckNvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpDdXN0b21Qcm90b2NvbE1hbmFnZXI6
OmluaXRpYWxpemUpOgorICAgICAgICAoV2ViS2l0OjpDdXN0b21Qcm90b2NvbE1hbmFnZXI6OmFk
ZEN1c3RvbVByb3RvY29sKToKKyAgICAgICAgKiBTaGFyZWQvTmV0d29yay9DdXN0b21Qcm90b2Nv
bHMvQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyLmg6CisgICAgICAgICogU2hhcmVkL05ldHdvcmsvQ3Vz
dG9tUHJvdG9jb2xzL3NvdXAvQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyU291cC5jcHA6CisgICAgICAg
IChXZWJLaXQ6OkN1c3RvbVByb3RvY29sTWFuYWdlcjo6c3VwcGxlbWVudE5hbWUpOgorICAgICAg
ICAoV2ViS2l0OjpDdXN0b21Qcm90b2NvbE1hbmFnZXI6OmluaXRpYWxpemUpOgorICAgICAgICAo
V2ViS2l0OjpDdXN0b21Qcm90b2NvbE1hbmFnZXI6OnJlZ2lzdGVyU2NoZW1lKToKKyAgICAgICAg
KiBTaGFyZWQvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOjpkZWNvZGUp
OgorICAgICAgICAqIFNoYXJlZC9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0
ZXJzLmg6CisgICAgICAgICogU2hhcmVkL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NTdXBwbGVtZW50
Lmg6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzU3VwcGxlbWVudDo6aW5pdGlhbGl6
ZSk6CisgICAgICAgICogU2hhcmVkL05ldHdvcmsvTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRl
cnMuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVyczo6
ZGVjb2RlKToKKyAgICAgICAgKiBTaGFyZWQvTmV0d29yay9OZXR3b3JrUmVzb3VyY2VMb2FkUGFy
YW1ldGVycy5oOgorICAgICAgICAqIFNoYXJlZC9Qcm9jZXNzRXhlY3V0YWJsZVBhdGguaDoKKyAg
ICAgICAgKiBTaGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnM6OldlYlByb2Nlc3NDcmVhdGlv
blBhcmFtZXRlcnMpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0
ZXJzOjplbmNvZGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0
ZXJzOjpkZWNvZGUpOgorICAgICAgICAqIFNoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0
ZXJzLmg6CisgICAgICAgICogU2hhcmVkL2VmbC9Qcm9jZXNzRXhlY3V0YWJsZVBhdGhFZmwuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpleGVjdXRhYmxlUGF0aE9mUGx1Z2luUHJvY2Vzcyk6CisgICAg
ICAgIChXZWJLaXQ6OmV4ZWN1dGFibGVQYXRoT2ZOZXR3b3JrUHJvY2Vzcyk6CisgICAgICAgIChX
ZWJLaXQ6OmV4ZWN1dGFibGVQYXRoT2ZEYXRhYmFzZVByb2Nlc3MpOgorICAgICAgICAqIFNoYXJl
ZC9ndGsvUHJvY2Vzc0V4ZWN1dGFibGVQYXRoR3RrLmNwcDoKKyAgICAgICAgKFdlYktpdDo6ZXhl
Y3V0YWJsZVBhdGhPZlBsdWdpblByb2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpleGVjdXRhYmxl
UGF0aE9mTmV0d29ya1Byb2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpleGVjdXRhYmxlUGF0aE9m
RGF0YWJhc2VQcm9jZXNzKToKKyAgICAgICAgKiBTaGFyZWQvbWFjL0Nvb2tpZVN0b3JhZ2VTaGlt
Lmg6CisgICAgICAgICogU2hhcmVkL21hYy9Db29raWVTdG9yYWdlU2hpbS5tbToKKyAgICAgICAg
KC1bV0tOU1VSTFNlc3Npb25Mb2NhbCBfZ2V0Q29va2llSGVhZGVyc0ZvclRhc2s6Y29tcGxldGlv
bkhhbmRsZXI6XSk6CisgICAgICAgICogU2hhcmVkL21hYy9Db29raWVTdG9yYWdlU2hpbUxpYnJh
cnkuY3BwOgorICAgICAgICAqIFNoYXJlZC9tYWMvQ29va2llU3RvcmFnZVNoaW1MaWJyYXJ5Lmg6
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uY3Bw
OgorICAgICAgICAoQVBJOjpQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb246OmNyZWF0ZVdpdGhMZWdh
Y3lPcHRpb25zKToKKyAgICAgICAgKEFQSTo6UHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uOjpjb3B5
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSVByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5o
OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJU2Vzc2lvbi5jcHA6CisgICAgICAgIChBUEk6
OlNlc3Npb246On5TZXNzaW9uKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tBUElDYXN0
Lmg6CisgICAgICAgIChXZWJLaXQ6OnRvQVBJKToKKyAgICAgICAgKFdlYktpdDo6dG9Gb250U21v
b3RoaW5nTGV2ZWwpOgorICAgICAgICAoV2ViS2l0Ojp0b1Byb2Nlc3NNb2RlbCk6IERlbGV0ZWQu
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dC5jcHA6CisgICAgICAgIChXS0Nv
bnRleHRHZXRDYWNoZU1vZGVsKToKKyAgICAgICAgKFdLQ29udGV4dFNldE1heGltdW1OdW1iZXJP
ZlByb2Nlc3Nlcyk6CisgICAgICAgIChXS0NvbnRleHRTZXRKYXZhU2NyaXB0R2FyYmFnZUNvbGxl
Y3RvclRpbWVyRW5hYmxlZCk6CisgICAgICAgIChXS0NvbnRleHRVc2VUZXN0aW5nTmV0d29ya1Nl
c3Npb24pOgorICAgICAgICAoV0tDb250ZXh0U2V0UHJvY2Vzc01vZGVsKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdLQ29udGV4dEdldFByb2Nlc3NNb2RlbCk6IERlbGV0ZWQuCisgICAgICAgIChXS0Nv
bnRleHRTZXRVc2VzTmV0d29ya1Byb2Nlc3MpOiBEZWxldGVkLgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvQy9XS0NvbnRleHQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvbWFjL1dLQ29u
dGV4dFByaXZhdGVNYWMubW06CisgICAgICAgIChXS0NvbnRleHRHZXROZXR3b3JrUHJvY2Vzc0lk
ZW50aWZpZXIpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzR3JvdXAu
bW06CisgICAgICAgICgtW1dLUHJvY2Vzc0dyb3VwIGluaXRXaXRoSW5qZWN0ZWRCdW5kbGVVUkw6
XSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29sLm1tOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a19jb250ZXh0LmNwcDoKKyAgICAgICAgKGV3a19j
b250ZXh0X3Byb2Nlc3NfbW9kZWxfc2V0KToKKyAgICAgICAgKGV3a19jb250ZXh0X3Byb2Nlc3Nf
bW9kZWxfZ2V0KToKKyAgICAgICAgKGV3a19jb250ZXh0X3Rsc19lcnJvcl9wb2xpY3lfZ2V0KToK
KyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Bvb2xDb2NvYS5tbToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnVwZGF0ZVByb2Nlc3NTdXBwcmVzc2lvblN0YXRl
KToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnBsYXRmb3JtSW5pdGlhbGl6ZVdl
YlByb2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6cGxhdGZvcm1Jbml0
aWFsaXplTmV0d29ya1Byb2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6
cGxhdGZvcm1JbnZhbGlkYXRlQ29udGV4dCk6CisgICAgICAgICogVUlQcm9jZXNzL0Rvd25sb2Fk
cy9Eb3dubG9hZFByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6RG93bmxvYWRQcm94eTo6Y2Fu
Y2VsKToKKyAgICAgICAgKFdlYktpdDo6RG93bmxvYWRQcm94eTo6aW52YWxpZGF0ZSk6CisgICAg
ICAgICogVUlQcm9jZXNzL0xhdW5jaGVyL1Byb2Nlc3NMYXVuY2hlci5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OlByb2Nlc3NMYXVuY2hlcjo6cHJvY2Vzc1R5cGVBc1N0cmluZyk6CisgICAgICAgIChX
ZWJLaXQ6OlByb2Nlc3NMYXVuY2hlcjo6Z2V0UHJvY2Vzc1R5cGVGcm9tU3RyaW5nKToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvTGF1bmNoZXIvUHJvY2Vzc0xhdW5jaGVyLmg6CisgICAgICAgICogVUlQ
cm9jZXNzL0xhdW5jaGVyL2VmbC9Qcm9jZXNzTGF1bmNoZXJFZmwuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpQcm9jZXNzTGF1bmNoZXI6OmxhdW5jaFByb2Nlc3MpOgorICAgICAgICAqIFVJUHJvY2Vz
cy9MYXVuY2hlci9ndGsvUHJvY2Vzc0xhdW5jaGVyR3RrLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
UHJvY2Vzc0xhdW5jaGVyOjpsYXVuY2hQcm9jZXNzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvTGF1
bmNoZXIvbWFjL1Byb2Nlc3NMYXVuY2hlck1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6Y29tcHV0
ZVByb2Nlc3NTaGltUGF0aCk6CisgICAgICAgIChXZWJLaXQ6OnNlcnZpY2VOYW1lKToKKyAgICAg
ICAgKFdlYktpdDo6c2hvdWxkTGVha0Jvb3N0KToKKyAgICAgICAgKFdlYktpdDo6Y3JlYXRlUHJv
Y2Vzcyk6CisgICAgICAgICogVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5j
cHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OnNldElzSG9sZGluZ0xv
Y2tlZEZpbGVzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1By
b3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5t
ZXNzYWdlcy5pbjoKKyAgICAgICAgKiBVSVByb2Nlc3MvTmV0d29yay9tYWMvTmV0d29ya1Byb2Nl
c3NQcm94eU1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NQcm94eTo6cGxh
dGZvcm1HZXRMYXVuY2hPcHRpb25zKToKKyAgICAgICAgKiBVSVByb2Nlc3MvTmV0d29yay9zb3Vw
L05ldHdvcmtQcm9jZXNzUHJveHlTb3VwLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1By
b2Nlc3NQcm94eTo6cGxhdGZvcm1HZXRMYXVuY2hPcHRpb25zKToKKyAgICAgICAgKiBVSVByb2Nl
c3MvUHJvY2Vzc01vZGVsLmg6IFJlbW92ZWQuCisgICAgICAgICogVUlQcm9jZXNzL1dlYkNvb2tp
ZU1hbmFnZXJQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkNvb2tpZU1hbmFnZXJQcm94
eTo6c2hvdWxkVGVybWluYXRlKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29va2llTWFuYWdlclBy
b3h5OjpyZWZXZWJDb250ZXh0U3VwcGxlbWVudCk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvb2tp
ZU1hbmFnZXJQcm94eTo6c2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeSk6CisgICAgICAgIChXZWJL
aXQ6OldlYkNvb2tpZU1hbmFnZXJQcm94eTo6Z2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeSk6Cisg
ICAgICAgICogVUlQcm9jZXNzL1dlYkluc3BlY3RvclByb3h5LmNwcDoKKyAgICAgICAgKFdlYktp
dDo6V2ViSW5zcGVjdG9yUHJveHk6Omluc3BlY3RvclByb2Nlc3NQb29sKToKKyAgICAgICAgKiBV
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5
OjpXZWJQYWdlUHJveHkpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnJlYXR0YWNo
VG9XZWJQcm9jZXNzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpzZXRTZXNzaW9u
SUQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmluaXRpYWxpemVXZWJQYWdlKToK
KyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwOgorICAgICAgICAoV2ViS2l0
OjpXZWJQcm9jZXNzUG9vbDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bv
b2w6OldlYlByb2Nlc3NQb29sKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6On5X
ZWJQcm9jZXNzUG9vbCk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjppbml0aWFs
aXplQ2xpZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnNldERvd25sb2Fk
Q2xpZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnNldE1heGltdW1OdW1i
ZXJPZlByb2Nlc3Nlcyk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpuZXR3b3Jr
aW5nUHJvY2Vzc0Nvbm5lY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6
bGFuZ3VhZ2VDaGFuZ2VkKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnRleHRD
aGVja2VyU3RhdGVDaGFuZ2VkKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OmVu
c3VyZU5ldHdvcmtQcm9jZXNzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6Omdl
dE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQ
b29sOjplbnN1cmVEYXRhYmFzZVByb2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNz
UG9vbDo6c2V0QW55UGFnZUdyb3VwTWlnaHRIYXZlUHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpwcm9jZXNzRGlkQ2FjaGVQYWdlKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OmNyZWF0ZU5ld1dlYlByb2Nlc3MpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6ZGlzY29ubmVjdFByb2Nlc3MpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6Y3JlYXRlV2ViUGFnZSk6CisgICAgICAgIChXZWJL
aXQ6OldlYlByb2Nlc3NQb29sOjpkb3dubG9hZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nl
c3NQb29sOjpyZXN1bWVEb3dubG9hZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29s
Ojpwb3N0TWVzc2FnZVRvSW5qZWN0ZWRCdW5kbGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9j
ZXNzUG9vbDo6c2V0QWRkaXRpb25hbFBsdWdpbnNEaXJlY3RvcnkpOgorICAgICAgICAoV2ViS2l0
OjpXZWJQcm9jZXNzUG9vbDo6bmV0d29ya1Byb2Nlc3NJZGVudGlmaWVyKToKKyAgICAgICAgKFdl
YktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnNldEFsd2F5c1VzZXNDb21wbGV4VGV4dENvZGVQYXRoKToK
KyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnNldENhbkhhbmRsZUhUVFBTU2VydmVy
VHJ1c3RFdmFsdWF0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnJlZ2lz
dGVyVVJMU2NoZW1lQXNMb2NhbCk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpz
ZXRDYWNoZU1vZGVsKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnNldERlZmF1
bHRSZXF1ZXN0VGltZW91dEludGVydmFsKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bv
b2w6OmNyZWF0ZURvd25sb2FkUHJveHkpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9v
bDo6YWRkTWVzc2FnZVJlY2VpdmVyKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6
OnVzZVRlc3RpbmdOZXR3b3JrU2Vzc2lvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQ
b29sOjphbGxvd1NwZWNpZmljSFRUUFNDZXJ0aWZpY2F0ZUZvckhvc3QpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQcm9jZXNzUG9vbDo6cmVxdWVzdFdlYkNvbnRlbnRTdGF0aXN0aWNzKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnJlcXVlc3ROZXR3b3JraW5nU3RhdGlzdGljcyk6
CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpoYW5kbGVNZXNzYWdlKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnNldFByb2Nlc3NNb2RlbCk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpzZXRVc2VzTmV0d29ya1Byb2Nlc3MpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6dXNlc05ldHdvcmtQcm9j
ZXNzKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OmVuc3VyZVNo
YXJlZFdlYlByb2Nlc3MpOiBEZWxldGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNz
UG9vbC5oOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6c2VuZFRvTmV0d29ya2lu
Z1Byb2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6c2VuZFRvTmV0d29y
a2luZ1Byb2Nlc3NSZWxhdW5jaGluZ0lmTmVjZXNzYXJ5KToKKyAgICAgICAgKFdlYktpdDo6V2Vi
UHJvY2Vzc1Bvb2w6OnNlbmRUb0FsbFByb2Nlc3Nlc1JlbGF1bmNoaW5nVGhlbUlmTmVjZXNzYXJ5
KToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnNlbmRUb09uZVByb2Nlc3MpOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0
OjpXZWJQcm9jZXNzUHJveHk6OnJlbW92ZVdlYlBhZ2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
cm9jZXNzUHJveHk6OmdldFBsdWdpblByb2Nlc3NDb25uZWN0aW9uKToKKyAgICAgICAgKFdlYktp
dDo6V2ViUHJvY2Vzc1Byb3h5OjpnZXROZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24pOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OmdldERhdGFiYXNlUHJvY2Vzc0Nvbm5lY3Rpb24p
OgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OnVwZGF0ZVRleHRDaGVja2VyU3Rh
dGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OmRpZFNhdmVUb1BhZ2VDYWNo
ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6ZGlkQ2FuY2VsUHJvY2Vzc1N1
c3BlbnNpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OnJlaW5zdGF0ZU5l
dHdvcmtQcm9jZXNzQXNzZXJ0aW9uU3RhdGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNz
UHJveHk6OmRpZFNldEFzc2VydGlvblN0YXRlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vz
c1Byb3h5OjpjcmVhdGVEb3dubG9hZFByb3h5KTogRGVsZXRlZC4KKyAgICAgICAgKiBVSVByb2Nl
c3MvV2ViUHJvY2Vzc1Byb3h5Lmg6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6
dGhyb3R0bGVyKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5Lm1lc3NhZ2Vz
LmluOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6fldlYnNpdGVEYXRhU3RvcmUp
OgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpjbG9uZVNlc3Npb25EYXRhKToK
KyAgICAgICAgKiBVSVByb2Nlc3MvZ3RrL1dlYlByb2Nlc3NQb29sR3RrLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6aW5pdEluc3BlY3RvclNlcnZlcik6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nl
c3NQb29sOjpwbGF0Zm9ybUluaXRpYWxpemVXZWJQcm9jZXNzKToKKyAgICAgICAgKFdlYktpdDo6
V2ViUHJvY2Vzc1Bvb2w6OnNldElnbm9yZVRMU0Vycm9ycyk6CisgICAgICAgICogVUlQcm9jZXNz
L3NvdXAvV2ViUHJvY2Vzc1Bvb2xTb3VwLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vz
c1Bvb2w6OnBsYXRmb3JtSW5pdGlhbGl6ZU5ldHdvcmtQcm9jZXNzKToKKyAgICAgICAgKiBXZWJL
aXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogV2ViS2l0MlByZWZpeC5o
OgorICAgICAgICAqIFdlYlByb2Nlc3MvRmlsZUFQSS9CbG9iUmVnaXN0cnlQcm94eS5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OkJsb2JSZWdpc3RyeVByb3h5OjpyZWdpc3RlckZpbGVCbG9iVVJMKToK
KyAgICAgICAgKFdlYktpdDo6QmxvYlJlZ2lzdHJ5UHJveHk6OnJlZ2lzdGVyQmxvYlVSTCk6Cisg
ICAgICAgIChXZWJLaXQ6OkJsb2JSZWdpc3RyeVByb3h5Ojp1bnJlZ2lzdGVyQmxvYlVSTCk6Cisg
ICAgICAgIChXZWJLaXQ6OkJsb2JSZWdpc3RyeVByb3h5OjpyZWdpc3RlckJsb2JVUkxGb3JTbGlj
ZSk6CisgICAgICAgIChXZWJLaXQ6OkJsb2JSZWdpc3RyeVByb3h5OjpibG9iU2l6ZSk6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9GaWxlQVBJL0Jsb2JSZWdpc3RyeVByb3h5Lmg6CisgICAgICAgICog
V2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5jcHA6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5oOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24ubWVzc2FnZXMu
aW46CisgICAgICAgICogV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZFNjaGVkdWxl
ci5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZFNjaGVkdWxlcjo6bmV0d29y
a1Byb2Nlc3NDcmFzaGVkKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3Vy
Y2VMb2FkU2NoZWR1bGVyLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291
cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VM
b2FkZXIuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIu
bWVzc2FnZXMuaW46CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNj
YXBlQnJvd3NlckZ1bmNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6aW5pdGlhbGl6ZUJyb3dzZXJG
dW5jcyk6CisgICAgICAgIChXZWJLaXQ6Om5ldHNjYXBlQnJvd3NlckZ1bmNzKToKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4uY3BwOgorICAgICAg
ICAoV2ViS2l0OjpOZXRzY2FwZVBsdWdpbjo6cmVnaXN0ZXJSZWRpcmVjdCk6CisgICAgICAgIChX
ZWJLaXQ6Ok5ldHNjYXBlUGx1Z2luOjp1cmxSZWRpcmVjdFJlc3BvbnNlKToKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y29va2llc0ZvckRPTSk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBsYXRmb3JtU3RyYXRlZ2llczo6c2V0Q29va2llc0Zyb21ET00pOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNvb2tpZXNFbmFibGVkKToK
KyAgICAgICAgKFdlYktpdDo6V2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjb29raWVSZXF1ZXN0SGVh
ZGVyRmllbGRWYWx1ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBsYXRmb3JtU3RyYXRlZ2llczo6
Z2V0UmF3Q29va2llcyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBsYXRmb3JtU3RyYXRlZ2llczo6
ZGVsZXRlQ29va2llKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpy
ZXNvdXJjZUxvYWRTY2hlZHVsZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF0Zm9ybVN0cmF0
ZWdpZXM6OmxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkpOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
bGF0Zm9ybVN0cmF0ZWdpZXM6OmNyZWF0ZVBpbmdIYW5kbGUpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNyZWF0ZUJsb2JSZWdpc3RyeSk6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaDoKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJG
cmFtZTo6c3RhcnREb3dubG9hZCk6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lOjpjb252ZXJ0
TWFpblJlc291cmNlTG9hZFRvRG93bmxvYWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZTo6
c291cmNlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwOgorICAgICAgICAo
V2ViS2l0OjpXZWJQcm9jZXNzOjpXZWJQcm9jZXNzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJv
Y2Vzczo6aW5pdGlhbGl6ZUNvbm5lY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNz
Ojppbml0aWFsaXplV2ViUHJvY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OmVu
c3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nl
c3M6OnJlZ2lzdGVyVVJMU2NoZW1lQXNFbXB0eURvY3VtZW50KToKKyAgICAgICAgKFdlYktpdDo6
V2ViUHJvY2Vzczo6ZGVzdHJveVByaXZhdGVCcm93c2luZ1Nlc3Npb24pOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQcm9jZXNzOjpwbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbk1hbmFnZXIpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpzaG91bGRUZXJtaW5hdGUpOgorICAgICAgICAoV2ViS2l0
OjpXZWJQcm9jZXNzOjpzZXRJbmplY3RlZEJ1bmRsZVBhcmFtZXRlcnMpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQcm9jZXNzOjpuZXR3b3JrQ29ubmVjdGlvbik6CisgICAgICAgIChXZWJLaXQ6Oldl
YlByb2Nlc3M6OndlYlJlc291cmNlTG9hZFNjaGVkdWxlcik6CisgICAgICAgIChXZWJLaXQ6Oldl
YlByb2Nlc3M6OndlYlRvRGF0YWJhc2VQcm9jZXNzQ29ubmVjdGlvbkNsb3NlZCk6CisgICAgICAg
IChXZWJLaXQ6OldlYlByb2Nlc3M6OnNldEVuaGFuY2VkQWNjZXNzaWJpbGl0eSk6CisgICAgICAg
IChXZWJLaXQ6OldlYlByb2Nlc3M6OnByZWZldGNoRE5TKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
UHJvY2Vzczo6ZGlkQ3JlYXRlRG93bmxvYWQpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpX
ZWJQcm9jZXNzOjpkaWREZXN0cm95RG93bmxvYWQpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0
OjpXZWJQcm9jZXNzOjpkb3dubG9hZFByb3h5Q29ubmVjdGlvbik6IERlbGV0ZWQuCisgICAgICAg
IChXZWJLaXQ6OldlYlByb2Nlc3M6OmRvd25sb2Fkc0F1dGhlbnRpY2F0aW9uTWFuYWdlcik6IERl
bGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OmRvd25sb2FkTWFuYWdlcik6IERl
bGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OnVzZXNOZXR3b3JrUHJvY2Vzcyk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OmRvd25sb2FkUmVxdWVzdCk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OnJlc3VtZURvd25sb2FkKTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6Y2FuY2VsRG93bmxvYWQpOiBE
ZWxldGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQcm9jZXNzOjp0ZXh0Q2hlY2tlclN0YXRlKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
UHJvY2Vzczo6ZXZlbnREaXNwYXRjaGVyKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nl
c3MubWVzc2FnZXMuaW46CisgICAgICAgICogV2ViUHJvY2Vzcy9zb3VwL1dlYlByb2Nlc3NTb3Vw
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6cGxhdGZvcm1TZXRDYWNoZU1vZGVs
KToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6cGxhdGZvcm1DbGVhclJlc291cmNlQ2Fj
aGVzKToKKyAgICAgICAgKFdlYktpdDo6c2V0U291cFNlc3Npb25BY2NlcHRMYW5ndWFnZSk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OnBsYXRmb3JtSW5pdGlhbGl6ZVdlYlByb2Nlc3Mp
OgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpwbGF0Zm9ybVRlcm1pbmF0ZSk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OnNldElnbm9yZVRMU0Vycm9ycyk6CisgICAgICAgIChX
ZWJLaXQ6OldlYlByb2Nlc3M6OmFsbG93U3BlY2lmaWNIVFRQU0NlcnRpZmljYXRlRm9ySG9zdCk6
CisgICAgICAgICogY29uZmlnLmg6CisKIDIwMTUtMTEtMTkgIENzYWJhIE9zenRyb2dvbsOhYyAg
PG9zc3lAd2Via2l0Lm9yZz4KIAogICAgICAgICBbRUZMXSBGaXggV3JldHVybi10eXBlIGNsYW5n
IHdhcm5pbmcgaW4gRVdLMlVuaXRUZXN0QmFzZS5jcHAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NN
YWtlTGlzdHMudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL0NNYWtlTGlzdHMudHh0
CShyZXZpc2lvbiAxOTI2MDEpCisrKyBTb3VyY2UvV2ViS2l0Mi9DTWFrZUxpc3RzLnR4dAkod29y
a2luZyBjb3B5KQpAQCAtODAzLDE2ICs4MDMsMTMgQEAgaWYgKFdlYktpdDJfV2ViUHJvY2Vzc19P
VVRQVVRfTkFNRSkKICAgICBzZXRfdGFyZ2V0X3Byb3BlcnRpZXMoV2ViUHJvY2VzcyBQUk9QRVJU
SUVTIE9VVFBVVF9OQU1FICR7V2ViS2l0Ml9XZWJQcm9jZXNzX09VVFBVVF9OQU1FfSkKIGVuZGlm
ICgpCiAKLWlmIChFTkFCTEVfTkVUV09SS19QUk9DRVNTKQotICAgIGFkZF9leGVjdXRhYmxlKE5l
dHdvcmtQcm9jZXNzICR7TmV0d29ya1Byb2Nlc3NfU09VUkNFU30pCi0gICAgYWRkX3dlYmtpdDJf
cHJlZml4X2hlYWRlcihOZXR3b3JrUHJvY2VzcykKLSAgICB0YXJnZXRfbGlua19saWJyYXJpZXMo
TmV0d29ya1Byb2Nlc3MgJHtOZXR3b3JrUHJvY2Vzc19MSUJSQVJJRVN9KQotICAgIHNldF90YXJn
ZXRfcHJvcGVydGllcyhOZXR3b3JrUHJvY2VzcyBQUk9QRVJUSUVTIEZPTERFUiAiV2ViS2l0IikK
LSAgICBpbnN0YWxsKFRBUkdFVFMgTmV0d29ya1Byb2Nlc3MgREVTVElOQVRJT04gIiR7TElCRVhF
Q19JTlNUQUxMX0RJUn0iKQorYWRkX2V4ZWN1dGFibGUoTmV0d29ya1Byb2Nlc3MgJHtOZXR3b3Jr
UHJvY2Vzc19TT1VSQ0VTfSkKK2FkZF93ZWJraXQyX3ByZWZpeF9oZWFkZXIoTmV0d29ya1Byb2Nl
c3MpCit0YXJnZXRfbGlua19saWJyYXJpZXMoTmV0d29ya1Byb2Nlc3MgJHtOZXR3b3JrUHJvY2Vz
c19MSUJSQVJJRVN9KQorc2V0X3RhcmdldF9wcm9wZXJ0aWVzKE5ldHdvcmtQcm9jZXNzIFBST1BF
UlRJRVMgRk9MREVSICJXZWJLaXQiKQogCi0gICAgaWYgKFdlYktpdDJfTmV0d29ya1Byb2Nlc3Nf
T1VUUFVUX05BTUUpCi0gICAgICAgIHNldF90YXJnZXRfcHJvcGVydGllcyhOZXR3b3JrUHJvY2Vz
cyBQUk9QRVJUSUVTIE9VVFBVVF9OQU1FICR7V2ViS2l0Ml9OZXR3b3JrUHJvY2Vzc19PVVRQVVRf
TkFNRX0pCi0gICAgZW5kaWYgKCkKK2lmIChXZWJLaXQyX05ldHdvcmtQcm9jZXNzX09VVFBVVF9O
QU1FKQorICAgIHNldF90YXJnZXRfcHJvcGVydGllcyhOZXR3b3JrUHJvY2VzcyBQUk9QRVJUSUVT
IE9VVFBVVF9OQU1FICR7V2ViS2l0Ml9OZXR3b3JrUHJvY2Vzc19PVVRQVVRfTkFNRX0pCiBlbmRp
ZiAoKQogCiBpZiAoRU5BQkxFX1BMVUdJTl9QUk9DRVNTKQpAQCAtODQ3LDcgKzg0NCw3IEBAIHNl
dF90YXJnZXRfcHJvcGVydGllcyhXZWJLaXQyIFBST1BFUlRJRVMKIGlmIChBUFBMRSkKICAgICBX
RUJLSVRfRlJBTUVXT1JLKFdlYktpdDIpCiBlbHNlICgpCi0gICAgaW5zdGFsbChUQVJHRVRTIFdl
YktpdDIgV2ViUHJvY2VzcworICAgIGluc3RhbGwoVEFSR0VUUyBXZWJLaXQyIFdlYlByb2Nlc3Mg
TmV0d29ya1Byb2Nlc3MKICAgICAgICAgTElCUkFSWSBERVNUSU5BVElPTiAiJHtMSUJfSU5TVEFM
TF9ESVJ9IgogICAgICAgICBSVU5USU1FIERFU1RJTkFUSU9OICIke0xJQkVYRUNfSU5TVEFMTF9E
SVJ9IgogICAgICkKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYktpdDJQcmVmaXguaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJLaXQyUHJlZml4LmgJKHJldmlzaW9uIDE5MjYwMSkK
KysrIFNvdXJjZS9XZWJLaXQyL1dlYktpdDJQcmVmaXguaAkod29ya2luZyBjb3B5KQpAQCAtMzYs
OCArMzYsNiBAQAogCiAjZGVmaW5lIEVOQUJMRV9XRUJfUFJPQ0VTU19TQU5EQk9YIDEKIAotI2Rl
ZmluZSBFTkFCTEVfTkVUV09SS19QUk9DRVNTIDEKLQogI2RlZmluZSBFTkFCTEVfREFUQUJBU0Vf
UFJPQ0VTUyAxCiAKICNkZWZpbmUgRU5BQkxFX01FTU9SWV9TQU1QTEVSIDEKQEAgLTU5LDcgKzU3
LDYgQEAKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oR1RLKQotI2RlZmluZSBFTkFCTEVfTkVUV09S
S19QUk9DRVNTIDEKICNkZWZpbmUgRU5BQkxFX1NIQVJFQUJMRV9SRVNPVVJDRSAxCiAjZW5kaWYK
IApJbmRleDogU291cmNlL1dlYktpdDIvY29uZmlnLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdDIvY29uZmlnLmgJKHJldmlzaW9uIDE5MjYwMSkKKysrIFNvdXJjZS9XZWJLaXQyL2NvbmZp
Zy5oCSh3b3JraW5nIGNvcHkpCkBAIC05MSw3ICs5MSw3IEBACiAjZW5kaWYKIAogI2lmbmRlZiBF
TkFCTEVfTkVUV09SS19DQUNIRQotI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpICYmIChQTEFU
Rk9STShDT0NPQSkgfHwgUExBVEZPUk0oR1RLKSkKKyNpZiBQTEFURk9STShDT0NPQSkgfHwgUExB
VEZPUk0oR1RLKQogI2RlZmluZSBFTkFCTEVfTkVUV09SS19DQUNIRSAxCiAjZWxzZQogI2RlZmlu
ZSBFTkFCTEVfTkVUV09SS19DQUNIRSAwCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mu
Y3BwCShyZXZpc2lvbiAxOTI2MDEpCisrKyBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2LDgg
KzI2LDYgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJOZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2Vzcy5oIgogCi0jaWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKLQogI2luY2x1
ZGUgIk5ldHdvcmtCbG9iUmVnaXN0cnkuaCIKICNpbmNsdWRlICJOZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2Vzc01lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiTmV0d29ya0xvYWQuaCIKQEAgLTI3NCw1
ICsyNzIsMyBAQCB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpibG9iCiB9CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYktpdAotCi0jZW5kaWYgLy8gRU5BQkxFKE5FVFdPUktfUFJPQ0VT
UykKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaAkocmV2aXNpb24gMTkyNjAxKQorKysg
U291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MuaAkod29ya2luZyBjb3B5KQpAQCAtMjYsOCArMjYsNiBAQAogI2lmbmRlZiBOZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2Vzc19oCiAjZGVmaW5lIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzX2gKIAotI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCi0KICNpbmNsdWRlICJCbG9ja2lu
Z1Jlc3BvbnNlTWFwLmgiCiAjaW5jbHVkZSAiQ29ubmVjdGlvbi5oIgogI2luY2x1ZGUgIk5ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzTWVzc2FnZXMuaCIKQEAgLTEwMiw2ICsxMDAsNCBAQCBw
cml2YXRlOgogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAotI2VuZGlmIC8vIEVOQUJMRShORVRX
T1JLX1BST0NFU1MpCi0KICNlbmRpZiAvLyBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzc19o
CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgkocmV2
aXNpb24gMTkyNjAxKQorKysgU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4JKHdvcmtpbmcgY29weSkKQEAgLTIwLDgg
KzIwLDYgQEAKICMgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKICMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KIAotI2lmIEVO
QUJMRShORVRXT1JLX1BST0NFU1MpCi0KIG1lc3NhZ2VzIC0+IE5ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzIExlZ2FjeVJlY2VpdmVyIHsKIAogICAgIFNjaGVkdWxlUmVzb3VyY2VMb2FkKFdl
YktpdDo6TmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMgcmVzb3VyY2VMb2FkUGFyYW1ldGVy
cykKQEAgLTQ4LDUgKzQ2LDMgQEAgbWVzc2FnZXMgLT4gTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2NlcwogICAgIFVucmVnaXN0ZXJCbG9iVVJMKFdlYkNvcmU6OlVSTCB1cmwpCiAgICAgQmxvYlNp
emUoV2ViQ29yZTo6VVJMIHVybCkgLT4gKHVpbnQ2NF90IHJlc3VsdFNpemUpCiB9Ci0KLSNlbmRp
ZiAvLyBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQpJbmRleDogU291cmNlL1dlYktpdDIvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya0xvYWQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL05l
dHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkLmNwcAkocmV2aXNpb24gMTkyNjAxKQorKysgU291cmNl
L1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0yNCw4ICsyNCw2IEBACiAgKi8KIAogI2luY2x1ZGUgImNvbmZpZy5oIgotCi0jaWYgRU5BQkxF
KE5FVFdPUktfUFJPQ0VTUykKICNpbmNsdWRlICJOZXR3b3JrTG9hZC5oIgogCiAjaW5jbHVkZSAi
QXV0aGVudGljYXRpb25NYW5hZ2VyLmgiCkBAIC0zNzEsNSArMzY5LDMgQEAgdm9pZCBOZXR3b3Jr
TG9hZDo6cmVjZWl2ZWRDYW5jZWxsYXRpb24oUgogI2VuZGlmIC8vICFVU0UoTkVUV09SS19TRVNT
SU9OKQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQotI2VuZGlmIC8vIEVOQUJMRShORVRXT1JL
X1BST0NFU1MpCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9h
ZC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtM
b2FkLmgJKHJldmlzaW9uIDE5MjYwMSkKKysrIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNz
L05ldHdvcmtMb2FkLmgJKHdvcmtpbmcgY29weSkKQEAgLTI2LDggKzI2LDYgQEAKICNpZm5kZWYg
TmV0d29ya0xvYWRfaAogI2RlZmluZSBOZXR3b3JrTG9hZF9oCiAKLSNpZiBFTkFCTEUoTkVUV09S
S19QUk9DRVNTKQotCiAjaW5jbHVkZSAiTmV0d29ya0xvYWRDbGllbnQuaCIKICNpbmNsdWRlICJO
ZXR3b3JrTG9hZFBhcmFtZXRlcnMuaCIKICNpbmNsdWRlICJSZW1vdGVOZXR3b3JraW5nQ29udGV4
dC5oIgpAQCAtMTI2LDYgKzEyNCw0IEBAIHByaXZhdGU6CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktp
dAogCi0jZW5kaWYgLy8gRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKLQogI2VuZGlmIC8vIE5ldHdv
cmtMb2FkX2gKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2Fk
Q2xpZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya0xvYWRDbGllbnQuaAkocmV2aXNpb24gMTkyNjAxKQorKysgU291cmNlL1dlYktpdDIvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMjYsOCAr
MjYsNiBAQAogI2lmbmRlZiBOZXR3b3JrTG9hZENsaWVudF9oCiAjZGVmaW5lIE5ldHdvcmtMb2Fk
Q2xpZW50X2gKIAotI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCi0KICNpbmNsdWRlIDxXZWJD
b3JlL1Jlc291cmNlRXJyb3IuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlUmVxdWVzdC5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VSZXNwb25zZS5oPgpAQCAtNjYsNyArNjQsNSBA
QCBwdWJsaWM6CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCi0jZW5kaWYgLy8gRU5BQkxFKE5F
VFdPUktfUFJPQ0VTUykKLQogI2VuZGlmIC8vIE5ldHdvcmtMb2FkQ2xpZW50X2gKIApJbmRleDog
U291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRQYXJhbWV0ZXJzLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZFBh
cmFtZXRlcnMuY3BwCShyZXZpc2lvbiAxOTI2MDEpCisrKyBTb3VyY2UvV2ViS2l0Mi9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrTG9hZFBhcmFtZXRlcnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNCw4
ICsyNCw2IEBACiAgKi8KIAogI2luY2x1ZGUgImNvbmZpZy5oIgotCi0jaWYgRU5BQkxFKE5FVFdP
UktfUFJPQ0VTUykKICNpbmNsdWRlICJOZXR3b3JrTG9hZFBhcmFtZXRlcnMuaCIKIAogI2luY2x1
ZGUgIk5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmgiCkBAIC00Nyw1ICs0NSwzIEBAIE5l
dHdvcmtMb2FkUGFyYW1ldGVyczo6TmV0d29ya0xvYWRQYXJhbWUKIH0KIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViS2l0Ci0KLSNlbmRpZiAvLyBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQpJbmRleDogU291
cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRQYXJhbWV0ZXJzLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRQYXJhbWV0
ZXJzLmgJKHJldmlzaW9uIDE5MjYwMSkKKysrIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNz
L05ldHdvcmtMb2FkUGFyYW1ldGVycy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw4ICsyNiw2IEBA
CiAjaWZuZGVmIE5ldHdvcmtMb2FkUGFyYW1ldGVyc19oCiAjZGVmaW5lIE5ldHdvcmtMb2FkUGFy
YW1ldGVyc19oCiAKLSNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQotCiAjaW5jbHVkZSA8V2Vi
Q29yZS9SZXNvdXJjZUxvYWRlck9wdGlvbnMuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNl
UmVxdWVzdC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2Vzc2lvbklELmg+CkBAIC01NSw2ICs1Myw0
IEBAIHB1YmxpYzoKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKLSNlbmRpZiAvLyBFTkFCTEUo
TkVUV09SS19QUk9DRVNTKQotCiAjZW5kaWYgLy8gTmV0d29ya0xvYWRQYXJhbWV0ZXJzX2gKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5j
cHAJKHJldmlzaW9uIDE5MjYwMSkKKysrIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05l
dHdvcmtQcm9jZXNzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjYsOCArMjYsNiBAQAogI2luY2x1
ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzLmgiCiAKLSNpZiBFTkFCTEUo
TkVUV09SS19QUk9DRVNTKQotCiAjaW5jbHVkZSAiQXJndW1lbnRDb2RlcnMuaCIKICNpbmNsdWRl
ICJBdHRhY2htZW50LmgiCiAjaW5jbHVkZSAiQXV0aGVudGljYXRpb25NYW5hZ2VyLmgiCkBAIC01
NTQsNSArNTUyLDMgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6cGxhdGZvcm1Mb3dNZW1vcnlIYQog
I2VuZGlmCiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAotCi0jZW5kaWYgLy8gRU5BQkxFKE5FVFdP
UktfUFJPQ0VTUykKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtQ
cm9jZXNzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1Byb2Nlc3MuaAkocmV2aXNpb24gMTkyNjAxKQorKysgU291cmNlL1dlYktpdDIvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaAkod29ya2luZyBjb3B5KQpAQCAtMjYsOCArMjYsNiBA
QAogI2lmbmRlZiBOZXR3b3JrUHJvY2Vzc19oCiAjZGVmaW5lIE5ldHdvcmtQcm9jZXNzX2gKIAot
I2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCi0KICNpbmNsdWRlICJDYWNoZU1vZGVsLmgiCiAj
aW5jbHVkZSAiQ2hpbGRQcm9jZXNzLmgiCiAjaW5jbHVkZSAiRG93bmxvYWRNYW5hZ2VyLmgiCkBA
IC0xOTcsNiArMTk1LDQgQEAgcHJpdmF0ZToKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKLSNl
bmRpZiAvLyBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQotCiAjZW5kaWYgLy8gTmV0d29ya1Byb2Nl
c3NfaApJbmRleDogU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3Mu
bWVzc2FnZXMuaW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4JKHJldmlzaW9uIDE5MjYwMSkKKysrIFNvdXJjZS9X
ZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluCSh3b3JraW5n
IGNvcHkpCkBAIC0yMCw4ICsyMCw2IEBACiAjIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCiAjIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCiAKLSNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQotCiBtZXNzYWdlcyAtPiBOZXR3
b3JrUHJvY2VzcyBMZWdhY3lSZWNlaXZlciB7CiAgICAgIyBJbml0aWFsaXplcyB0aGUgbmV0d29y
ayBwcm9jZXNzLgogICAgIEluaXRpYWxpemVOZXR3b3JrUHJvY2VzcyhzdHJ1Y3QgV2ViS2l0OjpO
ZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycyBwcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJz
KQpAQCAtNjMsNSArNjEsMyBAQCBtZXNzYWdlcyAtPiBOZXR3b3JrUHJvY2VzcyBMZWdhY3lSZWNl
aXZlCiAgICAgQ2FuY2VsUHJlcGFyZVRvU3VzcGVuZCgpCiAgICAgUHJvY2Vzc0RpZFJlc3VtZSgp
CiB9Ci0KLSNlbmRpZiAvLyBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQpJbmRleDogU291cmNlL1dl
YktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIu
Y3BwCShyZXZpc2lvbiAxOTI2MDEpCisrKyBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw4ICsyNiw2IEBA
CiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiTmV0d29ya1Jlc291cmNlTG9hZGVyLmgi
CiAKLSNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQotCiAjaW5jbHVkZSAiRGF0YVJlZmVyZW5j
ZS5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJOZXR3b3JrQmxvYlJlZ2lzdHJ5
LmgiCkBAIC01ODEsNSArNTc5LDMgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmNvbnRp
bnVlQ2FuQQogI2VuZGlmCiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAotCi0jZW5kaWYgLy8gRU5B
QkxFKE5FVFdPUktfUFJPQ0VTUykKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNz
L05ldHdvcmtSZXNvdXJjZUxvYWRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL05l
dHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5oCShyZXZpc2lvbiAxOTI2MDEpCisr
KyBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuaAko
d29ya2luZyBjb3B5KQpAQCAtMjYsOCArMjYsNiBAQAogI2lmbmRlZiBOZXR3b3JrUmVzb3VyY2VM
b2FkZXJfaAogI2RlZmluZSBOZXR3b3JrUmVzb3VyY2VMb2FkZXJfaAogCi0jaWYgRU5BQkxFKE5F
VFdPUktfUFJPQ0VTUykKLQogI2luY2x1ZGUgIk1lc3NhZ2VTZW5kZXIuaCIKICNpbmNsdWRlICJO
ZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzc01lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiTmV0d29y
a0xvYWRDbGllbnQuaCIKQEAgLTE2OSw2ICsxNjcsNCBAQCBwcml2YXRlOgogCiB9IC8vIG5hbWVz
cGFjZSBXZWJLaXQKIAotI2VuZGlmIC8vIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCi0KICNlbmRp
ZiAvLyBOZXR3b3JrUmVzb3VyY2VMb2FkZXJfaApJbmRleDogU291cmNlL1dlYktpdDIvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLm1lc3NhZ2VzLmluCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5tZXNz
YWdlcy5pbgkocmV2aXNpb24gMTkyNjAxKQorKysgU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLm1lc3NhZ2VzLmluCSh3b3JraW5nIGNvcHkpCkBAIC0y
MCw4ICsyMCw2IEBACiAjIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCiAjIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAKLSNp
ZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQotCiBtZXNzYWdlcyAtPiBOZXR3b3JrUmVzb3VyY2VM
b2FkZXIgTGVnYWN5UmVjZWl2ZXIgewogCiAgICAgQ29udGludWVXaWxsU2VuZFJlcXVlc3QoV2Vi
Q29yZTo6UmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QpCkBAIC0zMCw1ICsyOCwzIEBAIG1lc3NhZ2Vz
IC0+IE5ldHdvcmtSZXNvdXJjZUxvYWRlciBMZWdhY3kKICAgICBDb250aW51ZUNhbkF1dGhlbnRp
Y2F0ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2UoYm9vbCBjYW5BdXRoZW50aWNhdGUpCiAjZW5kaWYK
IH0KLQotI2VuZGlmIC8vIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCkluZGV4OiBTb3VyY2UvV2Vi
S2l0Mi9OZXR3b3JrUHJvY2Vzcy9FbnRyeVBvaW50L21hYy9MZWdhY3lQcm9jZXNzL05ldHdvcmtQ
cm9jZXNzTWFpbi5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vz
cy9FbnRyeVBvaW50L21hYy9MZWdhY3lQcm9jZXNzL05ldHdvcmtQcm9jZXNzTWFpbi5tbQkocmV2
aXNpb24gMTkyNjAxKQorKysgU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvRW50cnlQb2lu
dC9tYWMvTGVnYWN5UHJvY2Vzcy9OZXR3b3JrUHJvY2Vzc01haW4ubW0JKHdvcmtpbmcgY29weSkK
QEAgLTI1LDggKzI1LDYgQEAKIAogI2ltcG9ydCAiY29uZmlnLmgiCiAKLSNpZiBFTkFCTEUoTkVU
V09SS19QUk9DRVNTKQotCiAjaW1wb3J0ICJDaGlsZFByb2Nlc3NFbnRyeVBvaW50LmgiCiAjaW1w
b3J0ICJOZXR3b3JrUHJvY2Vzcy5oIgogI2ltcG9ydCAiV0tCYXNlLmgiCkBAIC0zOSw1ICszNywz
IEBAIGludCBOZXR3b3JrUHJvY2Vzc01haW4oaW50IGFyZ2MsIGNoYXIqKiAKIHsKICAgICByZXR1
cm4gQ2hpbGRQcm9jZXNzTWFpbjxOZXR3b3JrUHJvY2VzcywgQ2hpbGRQcm9jZXNzTWFpbkRlbGVn
YXRlPihhcmdjLCBhcmd2KTsKIH0KLQotI2VuZGlmIC8vIEVOQUJMRShORVRXT1JLX1BST0NFU1Mp
CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9FbnRyeVBvaW50L21hYy9YUENT
ZXJ2aWNlL05ldHdvcmtTZXJ2aWNlRW50cnlQb2ludC5tbQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9FbnRyeVBvaW50L21hYy9YUENTZXJ2aWNlL05ldHdvcmtT
ZXJ2aWNlRW50cnlQb2ludC5tbQkocmV2aXNpb24gMTkyNjAxKQorKysgU291cmNlL1dlYktpdDIv
TmV0d29ya1Byb2Nlc3MvRW50cnlQb2ludC9tYWMvWFBDU2VydmljZS9OZXR3b3JrU2VydmljZUVu
dHJ5UG9pbnQubW0JKHdvcmtpbmcgY29weSkKQEAgLTUyLDcgKzUyLDYgQEAgZXh0ZXJuICJDIiBX
S19FWFBPUlQgdm9pZCBOZXR3b3JrU2VydmljZQogCiB2b2lkIE5ldHdvcmtTZXJ2aWNlSW5pdGlh
bGl6ZXIoeHBjX2Nvbm5lY3Rpb25fdCBjb25uZWN0aW9uLCB4cGNfb2JqZWN0X3QgaW5pdGlhbGl6
ZXJNZXNzYWdlKQogewotI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCiAgICAgLy8gUmVtb3Zl
IHRoZSBTZWNJdGVtU2hpbSBmcm9tIHRoZSBEWUxEX0lOU0VSVF9MSUJSQVJJRVMgZW52aXJvbm1l
bnQgdmFyaWFibGUgc28gYW55IHByb2Nlc3NlcyBzcGF3bmVkIGJ5CiAgICAgLy8gdGhlIHRoaXMg
cHJvY2VzcyBkb24ndCB0cnkgdG8gaW5zZXJ0IHRoZSBzaGltIGFuZCBjcmFzaC4KICAgICBFbnZp
cm9ubWVudFV0aWxpdGllczo6c3RyaXBWYWx1ZXNFbmRpbmdXaXRoU3RyaW5nKCJEWUxEX0lOU0VS
VF9MSUJSQVJJRVMiLCAiL1NlY0l0ZW1TaGltLmR5bGliIik7CkBAIC02OSw1ICs2OCw0IEBAIHZv
aWQgTmV0d29ya1NlcnZpY2VJbml0aWFsaXplcih4cGNfY29ubmUKICNpZiBIQVZFKE9TX0FDVElW
SVRZKQogICAgIG9zX2FjdGl2aXR5X2VuZChhY3Rpdml0eSk7CiAjZW5kaWYKLSNlbmRpZgogfQpJ
bmRleDogU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvRmlsZUFQSS9OZXR3b3JrQmxvYlJl
Z2lzdHJ5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9G
aWxlQVBJL05ldHdvcmtCbG9iUmVnaXN0cnkuY3BwCShyZXZpc2lvbiAxOTI2MDEpCisrKyBTb3Vy
Y2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9GaWxlQVBJL05ldHdvcmtCbG9iUmVnaXN0cnkuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0yNiw4ICsyNiw2IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAj
aW5jbHVkZSAiTmV0d29ya0Jsb2JSZWdpc3RyeS5oIgogCi0jaWYgRU5BQkxFKE5FVFdPUktfUFJP
Q0VTUykKLQogI2luY2x1ZGUgIkJsb2JEYXRhRmlsZVJlZmVyZW5jZVdpdGhTYW5kYm94RXh0ZW5z
aW9uLmgiCiAjaW5jbHVkZSAiU2FuZGJveEV4dGVuc2lvbi5oIgogI2luY2x1ZGUgPFdlYkNvcmUv
QmxvYlBhcnQuaD4KQEAgLTE1MSw1ICsxNDksMyBAQCBWZWN0b3I8UmVmUHRyPEJsb2JEYXRhRmls
ZVJlZmVyZW5jZT4+IE5lCiB9CiAKIH0KLQotI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9O
ZXR3b3JrUHJvY2Vzcy9GaWxlQVBJL05ldHdvcmtCbG9iUmVnaXN0cnkuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9GaWxlQVBJL05ldHdvcmtCbG9iUmVnaXN0
cnkuaAkocmV2aXNpb24gMTkyNjAxKQorKysgU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3Mv
RmlsZUFQSS9OZXR3b3JrQmxvYlJlZ2lzdHJ5LmgJKHdvcmtpbmcgY29weSkKQEAgLTI2LDggKzI2
LDYgQEAKICNpZm5kZWYgTmV0d29ya0Jsb2JSZWdpc3RyeV9oCiAjZGVmaW5lIE5ldHdvcmtCbG9i
UmVnaXN0cnlfaAogCi0jaWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKLQogI2luY2x1ZGUgPFdl
YkNvcmUvVVJMSGFzaC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3Rm
L0hhc2hTZXQuaD4KQEAgLTY4LDYgKzY2LDQgQEAgcHJpdmF0ZToKIAogfQogCi0jZW5kaWYgLy8g
RU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKLQogI2VuZGlmIC8vIE5ldHdvcmtCbG9iUmVnaXN0cnlf
aApJbmRleDogU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Byb2Nl
c3NDb2NvYS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9j
b2NvYS9OZXR3b3JrUHJvY2Vzc0NvY29hLm1tCShyZXZpc2lvbiAxOTI2MDEpCisrKyBTb3VyY2Uv
V2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrUHJvY2Vzc0NvY29hLm1tCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yNiw4ICsyNiw2IEBACiAjaW1wb3J0ICJjb25maWcuaCIKICNpbXBvcnQg
Ik5ldHdvcmtQcm9jZXNzLmgiCiAKLSNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQotCiAjaW1w
b3J0ICJOZXR3b3JrQ2FjaGUuaCIKICNpbXBvcnQgIk5ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJh
bWV0ZXJzLmgiCiAjaW1wb3J0ICJOZXR3b3JrUmVzb3VyY2VMb2FkZXIuaCIKQEAgLTI2Nyw1ICsy
NjUsMyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpjbGVhckRpc2tDYWNoZShzdGQ6CiB9CiAKIH0K
LQotI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9lZmwvTmV0d29y
a1Byb2Nlc3NNYWluRWZsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9OZXR3b3Jr
UHJvY2Vzcy9lZmwvTmV0d29ya1Byb2Nlc3NNYWluRWZsLmNwcAkocmV2aXNpb24gMTkyNjAxKQor
KysgU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvZWZsL05ldHdvcmtQcm9jZXNzTWFpbkVm
bC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI3LDggKzI3LDYgQEAKICNpbmNsdWRlICJjb25maWcu
aCIKICNpbmNsdWRlICJOZXR3b3JrUHJvY2Vzc01haW5Vbml4LmgiCiAKLSNpZiBFTkFCTEUoTkVU
V09SS19QUk9DRVNTKQotCiAjaW5jbHVkZSAiQ2hpbGRQcm9jZXNzTWFpbi5oIgogI2luY2x1ZGUg
Ik5ldHdvcmtQcm9jZXNzLmgiCiAjaW5jbHVkZSA8RWNvcmUuaD4KQEAgLTcwLDUgKzY4LDMgQEAg
aW50IE5ldHdvcmtQcm9jZXNzTWFpblVuaXgoaW50IGFyZ2MsIGNoYQogfQogCiB9IC8vIG5hbWVz
cGFjZSBXZWJLaXQKLQotI2VuZGlmIC8vIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCkluZGV4OiBT
b3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9ndGsvTmV0d29ya1Byb2Nlc3NNYWluR3RrLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9ndGsvTmV0d29y
a1Byb2Nlc3NNYWluR3RrLmNwcAkocmV2aXNpb24gMTkyNjAxKQorKysgU291cmNlL1dlYktpdDIv
TmV0d29ya1Byb2Nlc3MvZ3RrL05ldHdvcmtQcm9jZXNzTWFpbkd0ay5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTI3LDggKzI3LDYgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJOZXR3
b3JrUHJvY2Vzc01haW5Vbml4LmgiCiAKLSNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQotCiAj
aW5jbHVkZSAiQ2hpbGRQcm9jZXNzTWFpbi5oIgogI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzLmgi
CiAjaW5jbHVkZSA8V2ViQ29yZS9Tb3VwTmV0d29ya1Nlc3Npb24uaD4KQEAgLTYzLDUgKzYxLDMg
QEAgaW50IE5ldHdvcmtQcm9jZXNzTWFpblVuaXgoaW50IGFyZ2MsIGNoYQogfQogCiB9IC8vIG5h
bWVzcGFjZSBXZWJLaXQKLQotI2VuZGlmIC8vIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCkluZGV4
OiBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9pb3MvTmV0d29ya1Byb2Nlc3NJT1MubW0K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvaW9zL05ldHdvcmtQ
cm9jZXNzSU9TLm1tCShyZXZpc2lvbiAxOTI2MDEpCisrKyBTb3VyY2UvV2ViS2l0Mi9OZXR3b3Jr
UHJvY2Vzcy9pb3MvTmV0d29ya1Byb2Nlc3NJT1MubW0JKHdvcmtpbmcgY29weSkKQEAgLTI2LDcg
KzI2LDcgQEAKICNpbXBvcnQgImNvbmZpZy5oIgogI2ltcG9ydCAiTmV0d29ya1Byb2Nlc3MuaCIK
IAotI2lmIFBMQVRGT1JNKElPUykgJiYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKKyNpZiBQTEFU
Rk9STShJT1MpCiAKICNpbXBvcnQgIk5ldHdvcmtDYWNoZS5oIgogI2ltcG9ydCAiTmV0d29ya1By
b2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaCIKQEAgLTEwMSw0ICsxMDEsNCBAQCB2b2lkIE5ldHdv
cmtQcm9jZXNzOjpwbGF0Zm9ybVRlcm1pbmF0ZSgpCiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAog
Ci0jZW5kaWYgLy8gUExBVEZPUk0oSU9TKSAmJiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQorI2Vu
ZGlmIC8vIFBMQVRGT1JNKElPUykKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNz
L21hYy9OZXR3b3JrTG9hZE1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9OZXR3
b3JrUHJvY2Vzcy9tYWMvTmV0d29ya0xvYWRNYWMubW0JKHJldmlzaW9uIDE5MjYwMSkKKysrIFNv
dXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL21hYy9OZXR3b3JrTG9hZE1hYy5tbQkod29ya2lu
ZyBjb3B5KQpAQCAtMjQsOCArMjQsNiBAQAogICovCiAKICNpbXBvcnQgImNvbmZpZy5oIgotCi0j
aWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKICNpbXBvcnQgIk5ldHdvcmtMb2FkLmgiCiAKICNp
bXBvcnQgPFdlYkNvcmUvQ0ZOZXR3b3JrU1BJLmg+CkBAIC02MCw1ICs1OCwzIEBAIHZvaWQgTmV0
d29ya0xvYWQ6OndpbGxDYWNoZVJlc3BvbnNlQXN5bmMKICNlbmRpZiAvLyAhVVNFKENGTkVUV09S
SykKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KLSNlbmRpZiAvLyBFTkFCTEUoTkVUV09SS19Q
Uk9DRVNTKQpJbmRleDogU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvbWFjL05ldHdvcmtQ
cm9jZXNzTWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNz
L21hYy9OZXR3b3JrUHJvY2Vzc01hYy5tbQkocmV2aXNpb24gMTkyNjAxKQorKysgU291cmNlL1dl
YktpdDIvTmV0d29ya1Byb2Nlc3MvbWFjL05ldHdvcmtQcm9jZXNzTWFjLm1tCSh3b3JraW5nIGNv
cHkpCkBAIC0yNiw3ICsyNiw3IEBACiAjaW1wb3J0ICJjb25maWcuaCIKICNpbXBvcnQgIk5ldHdv
cmtQcm9jZXNzLmgiCiAKLSNpZiBQTEFURk9STShNQUMpICYmIEVOQUJMRShORVRXT1JLX1BST0NF
U1MpCisjaWYgUExBVEZPUk0oTUFDKQogCiAjaW1wb3J0ICJOZXR3b3JrQ2FjaGUuaCIKICNpbXBv
cnQgIk5ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmgiCkBAIC0xNDQsNCArMTQ0LDQg
QEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6cGxhdGZvcm1UZXJtaW5hdGUoKQogCiB9IC8vIG5hbWVz
cGFjZSBXZWJLaXQKIAotI2VuZGlmIC8vIFBMQVRGT1JNKE1BQykgJiYgRU5BQkxFKE5FVFdPUktf
UFJPQ0VTUykKKyNlbmRpZiAvLyBQTEFURk9STShNQUMpCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9O
ZXR3b3JrUHJvY2Vzcy9tYWMvTmV0d29ya1Jlc291cmNlTG9hZGVyTWFjLm1tCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL21hYy9OZXR3b3JrUmVzb3VyY2VMb2Fk
ZXJNYWMubW0JKHJldmlzaW9uIDE5MjYwMSkKKysrIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9j
ZXNzL21hYy9OZXR3b3JrUmVzb3VyY2VMb2FkZXJNYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTI2
LDggKzI2LDYgQEAKICNpbXBvcnQgImNvbmZpZy5oIgogI2ltcG9ydCAiTmV0d29ya1Jlc291cmNl
TG9hZGVyLmgiCiAKLSNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQotCiAjaW1wb3J0ICJOZXR3
b3JrRGlza0NhY2hlTW9uaXRvci5oIgogI2ltcG9ydCAiU2hhcmVhYmxlUmVzb3VyY2UuaCIKICNp
bXBvcnQgPFdlYkNvcmUvQ0ZOZXR3b3JrU1BJLmg+CkBAIC05MSw1ICs4OSwzIEBAIHZvaWQgTmV0
d29ya1Jlc291cmNlTG9hZGVyOjp3aWxsQ2FjaGVSZXMKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0
CiAKLSNlbmRpZiAvLyBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQotCkluZGV4OiBTb3VyY2UvV2Vi
S2l0Mi9OZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtQcm9jZXNzU291cC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrUHJvY2Vzc1Nv
dXAuY3BwCShyZXZpc2lvbiAxOTI2MDEpCisrKyBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vz
cy9zb3VwL05ldHdvcmtQcm9jZXNzU291cC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI1LDcgKzI1
LDYgQEAKICAqLwogCiAjaW5jbHVkZSAiY29uZmlnLmgiCi0jaWYgRU5BQkxFKE5FVFdPUktfUFJP
Q0VTUykKICNpbmNsdWRlICJOZXR3b3JrUHJvY2Vzcy5oIgogCiAjaW5jbHVkZSAiTmV0d29ya0Nh
Y2hlLmgiCkBAIC0xNzAsNSArMTY5LDMgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6cGxhdGZvcm1U
ZXJtaW5hdGUoKQogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQotI2VuZGlmCkluZGV4OiBT
b3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9zb3VwL1JlbW90ZU5ldHdvcmtpbmdDb250ZXh0
U291cC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3Mvc291
cC9SZW1vdGVOZXR3b3JraW5nQ29udGV4dFNvdXAuY3BwCShyZXZpc2lvbiAxOTI2MDEpCisrKyBT
b3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9zb3VwL1JlbW90ZU5ldHdvcmtpbmdDb250ZXh0
U291cC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2LDcgKzI2LDYgQEAKICAqLwogCiAjaW5jbHVk
ZSAiY29uZmlnLmgiCi0jaWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKICNpbmNsdWRlICJSZW1v
dGVOZXR3b3JraW5nQ29udGV4dC5oIgogCiAjaW5jbHVkZSA8V2ViQ29yZS9OZXR3b3JrU3RvcmFn
ZVNlc3Npb24uaD4KQEAgLTU3LDUgKzU2LDMgQEAgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBSZW1v
dGVOZXR3b3JraW5nQwogfQogCiB9Ci0KLSNlbmRpZiAvLyBFTkFCTEUoTkVUV09SS19QUk9DRVNT
KQpJbmRleDogU291cmNlL1dlYktpdDIvU2hhcmVkL1Byb2Nlc3NFeGVjdXRhYmxlUGF0aC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9Qcm9jZXNzRXhlY3V0YWJsZVBhdGgu
aAkocmV2aXNpb24gMTkyNjAxKQorKysgU291cmNlL1dlYktpdDIvU2hhcmVkL1Byb2Nlc3NFeGVj
dXRhYmxlUGF0aC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw5ICszMiw3IEBAIG5hbWVzcGFjZSBX
ZWJLaXQgewogCiBTdHJpbmcgZXhlY3V0YWJsZVBhdGhPZldlYlByb2Nlc3MoKTsKIFN0cmluZyBl
eGVjdXRhYmxlUGF0aE9mUGx1Z2luUHJvY2VzcygpOwotI2lmIEVOQUJMRShORVRXT1JLX1BST0NF
U1MpCiBTdHJpbmcgZXhlY3V0YWJsZVBhdGhPZk5ldHdvcmtQcm9jZXNzKCk7Ci0jZW5kaWYKICNp
ZiBFTkFCTEUoREFUQUJBU0VfUFJPQ0VTUykKIFN0cmluZyBleGVjdXRhYmxlUGF0aE9mRGF0YWJh
c2VQcm9jZXNzKCk7CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJQcm9j
ZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5jcHAJKHJldmlzaW9uIDE5MjYwMSkK
KysrIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNDMsOSArNDMsNiBAQCBXZWJQcm9jZXNzQ3JlYXRpb25QYXJh
bWV0ZXJzOjpXZWJQcm9jZXNzCiAgICAgLCBzaG91bGRFbmFibGVKSVQoZmFsc2UpCiAgICAgLCBz
aG91bGRFbmFibGVGVExKSVQoZmFsc2UpCiAjZW5kaWYKLSNpZiBFTkFCTEUoTkVUV09SS19QUk9D
RVNTKQotICAgICwgdXNlc05ldHdvcmtQcm9jZXNzKGZhbHNlKQotI2VuZGlmCiAgICAgLCBtZW1v
cnlDYWNoZURpc2FibGVkKGZhbHNlKQogI2lmIEVOQUJMRShTRVJWSUNFX0NPTlRST0xTKQogICAg
ICwgaGFzSW1hZ2VTZXJ2aWNlcyhmYWxzZSkKQEAgLTEzMywxMCArMTMwLDYgQEAgdm9pZCBXZWJQ
cm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOjplbmNvZAogICAgIGVuY29kZXIgPDwgbm90aWZpY2F0
aW9uUGVybWlzc2lvbnM7CiAjZW5kaWYKIAotI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCi0g
ICAgZW5jb2RlciA8PCB1c2VzTmV0d29ya1Byb2Nlc3M7Ci0jZW5kaWYKLQogICAgIGVuY29kZXIg
PDwgcGx1Z0luQXV0b1N0YXJ0T3JpZ2luSGFzaGVzOwogICAgIGVuY29kZXIgPDwgcGx1Z0luQXV0
b1N0YXJ0T3JpZ2luczsKICAgICBlbmNvZGVyIDw8IG1lbW9yeUNhY2hlRGlzYWJsZWQ7CkBAIC0y
OTEsMTEgKzI4NCw2IEBAIGJvb2wgV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyczo6ZGVjb2QK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogI2VuZGlmCiAKLSNpZiBFTkFCTEUoTkVUV09SS19QUk9D
RVNTKQotICAgIGlmICghZGVjb2Rlci5kZWNvZGUocGFyYW1ldGVycy51c2VzTmV0d29ya1Byb2Nl
c3MpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0jZW5kaWYKLQogICAgIGlmICghZGVjb2Rlci5k
ZWNvZGUocGFyYW1ldGVycy5wbHVnSW5BdXRvU3RhcnRPcmlnaW5IYXNoZXMpKQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShwYXJhbWV0ZXJzLnBsdWdJbkF1
dG9TdGFydE9yaWdpbnMpKQpJbmRleDogU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlByb2Nlc3ND
cmVhdGlvblBhcmFtZXRlcnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQv
V2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oCShyZXZpc2lvbiAxOTI2MDEpCisrKyBTb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oCSh3b3JraW5n
IGNvcHkpCkBAIC0xNTQsMTAgKzE1NCw2IEBAIHN0cnVjdCBXZWJQcm9jZXNzQ3JlYXRpb25QYXJh
bWV0ZXJzIHsKICAgICBIYXNoTWFwPFN0cmluZywgYm9vbD4gbm90aWZpY2F0aW9uUGVybWlzc2lv
bnM7CiAjZW5kaWYKIAotI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCi0gICAgYm9vbCB1c2Vz
TmV0d29ya1Byb2Nlc3M7Ci0jZW5kaWYKLQogICAgIEhhc2hNYXA8V2ViQ29yZTo6U2Vzc2lvbklE
LCBIYXNoTWFwPHVuc2lnbmVkLCBkb3VibGU+PiBwbHVnSW5BdXRvU3RhcnRPcmlnaW5IYXNoZXM7
CiAgICAgVmVjdG9yPFN0cmluZz4gcGx1Z0luQXV0b1N0YXJ0T3JpZ2luczsKIApJbmRleDogU291
cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9jL1dLRGVwcmVjYXRlZEZ1bmN0aW9ucy5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9jL1dLRGVwcmVjYXRlZEZ1bmN0aW9u
cy5jcHAJKHJldmlzaW9uIDE5MjYwMSkKKysrIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9X
S0RlcHJlY2F0ZWRGdW5jdGlvbnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw2ICsyNyw4IEBA
CiAKICNpbmNsdWRlICJBUElEaWN0aW9uYXJ5LmgiCiAjaW5jbHVkZSAiV0tBcnJheS5oIgorI2lu
Y2x1ZGUgIldLQ29udGV4dC5oIgorI2luY2x1ZGUgIldLQ29udGV4dFByaXZhdGUuaCIKICNpbmNs
dWRlICJXS011dGFibGVEaWN0aW9uYXJ5LmgiCiAjaW5jbHVkZSAiV0tQcmVmZXJlbmNlc1JlZlBy
aXZhdGUuaCIKICNpbmNsdWRlICJXS1NoYXJlZEFQSUNhc3QuaCIKQEAgLTEzNCw2ICsxMzYsMTkg
QEAgdm9pZCBXS0luc3BlY3RvclRvZ2dsZUphdmFTY3JpcHRQcm9maWxpbgogewogfQogCit2b2lk
IFdLQ29udGV4dFNldFByb2Nlc3NNb2RlbChXS0NvbnRleHRSZWYsIFdLUHJvY2Vzc01vZGVsKQor
eworfQorCitXS1Byb2Nlc3NNb2RlbCBXS0NvbnRleHRHZXRQcm9jZXNzTW9kZWwoV0tDb250ZXh0
UmVmKQoreworICAgIHJldHVybiBrV0tQcm9jZXNzTW9kZWxNdWx0aXBsZVNlY29uZGFyeVByb2Nl
c3NlczsKK30KKwordm9pZCBXS0NvbnRleHRTZXRVc2VzTmV0d29ya1Byb2Nlc3MoV0tDb250ZXh0
UmVmLCBib29sKQoreworfQorCiAjaWYgUExBVEZPUk0oTUFDKQogQ0dDb250ZXh0UmVmIFdLR3Jh
cGhpY3NDb250ZXh0R2V0Q0dDb250ZXh0KFdLR3JhcGhpY3NDb250ZXh0UmVmIGdyYXBoaWNzQ29u
dGV4dCkKIHsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9BdXRoZW50aWNhdGlvbi9BdXRo
ZW50aWNhdGlvbk1hbmFnZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1NoYXJl
ZC9BdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdGlvbk1hbmFnZXIuY3BwCShyZXZpc2lvbiAxOTI2
MDEpCisrKyBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQXV0aGVudGljYXRpb24vQXV0aGVudGljYXRp
b25NYW5hZ2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUg
IkNoaWxkUHJvY2Vzcy5oIgogI2luY2x1ZGUgIkRvd25sb2FkLmgiCiAjaW5jbHVkZSAiRG93bmxv
YWRQcm94eU1lc3NhZ2VzLmgiCisjaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3NQcm94eU1lc3NhZ2Vz
LmgiCiAjaW5jbHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCiAjaW5jbHVkZSAiV2ViRnJh
bWUuaCIKICNpbmNsdWRlICJXZWJQYWdlLmgiCkBAIC0zNywxMCArMzgsNiBAQAogI2luY2x1ZGUg
PFdlYkNvcmUvQXV0aGVudGljYXRpb25DaGFsbGVuZ2UuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0F1
dGhlbnRpY2F0aW9uQ2xpZW50Lmg+CiAKLSNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQotI2lu
Y2x1ZGUgIk5ldHdvcmtQcm9jZXNzUHJveHlNZXNzYWdlcy5oIgotI2VuZGlmCi0KIHVzaW5nIG5h
bWVzcGFjZSBXZWJDb3JlOwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTEyOCw3ICsxMjUsNiBA
QCB2b2lkIEF1dGhlbnRpY2F0aW9uTWFuYWdlcjo6ZGlkUmVjZWl2ZUF1CiAgICAgbV9wcm9jZXNz
LT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZShmcmFtZS0+ZnJhbWVJRCgpLCBhdXRoZW50aWNhdGlvbkNoYWxsZW5nZSwgY2hhbGxl
bmdlSUQpLCBmcmFtZS0+cGFnZSgpLT5wYWdlSUQoKSk7CiB9CiAKLSNpZiBFTkFCTEUoTkVUV09S
S19QUk9DRVNTKQogI2lmIFVTRShORVRXT1JLX1NFU1NJT04pCiB2b2lkIEF1dGhlbnRpY2F0aW9u
TWFuYWdlcjo6ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKHVpbnQ2NF90IHBhZ2VJ
RCwgdWludDY0X3QgZnJhbWVJRCwgY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmIGF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlLCBDaGFsbGVuZ2VDb21wbGV0aW9uSGFuZGxlciBjb21wbGV0aW9u
SGFuZGxlcikKIHsKQEAgLTE1Nyw3ICsxNTMsNiBAQCB2b2lkIEF1dGhlbnRpY2F0aW9uTWFuYWdl
cjo6ZGlkUmVjZWl2ZUF1CiAgICAgCiAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpOZXR3
b3JrUHJvY2Vzc1Byb3h5OjpEaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UocGFnZUlE
LCBmcmFtZUlELCBhdXRoZW50aWNhdGlvbkNoYWxsZW5nZSwgY2hhbGxlbmdlSUQpKTsKIH0KLSNl
bmRpZgogCiAjaWYgIVVTRShORVRXT1JLX1NFU1NJT04pCiB2b2lkIEF1dGhlbnRpY2F0aW9uTWFu
YWdlcjo6ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKERvd25sb2FkKiBkb3dubG9h
ZCwgY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmIGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
KQpJbmRleDogU291cmNlL1dlYktpdDIvU2hhcmVkL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDcmVh
dGlvblBhcmFtZXRlcnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9O
ZXR3b3JrL05ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcAkocmV2aXNpb24gMTky
NjAxKQorKysgU291cmNlL1dlYktpdDIvU2hhcmVkL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDcmVh
dGlvblBhcmFtZXRlcnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw4ICsyNiw2IEBACiAjaW5j
bHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRl
cnMuaCIKIAotI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCi0KICNpbmNsdWRlICJBcmd1bWVu
dENvZGVycy5oIgogCiAjaWYgUExBVEZPUk0oQ09DT0EpCkBAIC0xNjgsNSArMTY2LDMgQEAgYm9v
bCBOZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyczo6ZAogfQogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJLaXQKLQotI2VuZGlmIC8vIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCkluZGV4OiBTb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVy
cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9OZXR3b3JrL05ldHdvcmtQ
cm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmgJKHJldmlzaW9uIDE5MjYwMSkKKysrIFNvdXJjZS9X
ZWJLaXQyL1NoYXJlZC9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTI2LDggKzI2LDYgQEAKICNpZm5kZWYgTmV0d29ya1Byb2Nlc3ND
cmVhdGlvblBhcmFtZXRlcnNfaAogI2RlZmluZSBOZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1l
dGVyc19oCiAKLSNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQotCiAjaW5jbHVkZSAiQ2FjaGVN
b2RlbC5oIgogI2luY2x1ZGUgIlNhbmRib3hFeHRlbnNpb24uaCIKICNpbmNsdWRlIDx3dGYvVmVj
dG9yLmg+CkBAIC0xMDMsNiArMTAxLDQgQEAgc3RydWN0IE5ldHdvcmtQcm9jZXNzQ3JlYXRpb25Q
YXJhbWV0ZXJzIAogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAotI2VuZGlmIC8vIEVOQUJMRShO
RVRXT1JLX1BST0NFU1MpCi0KICNlbmRpZiAvLyBOZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1l
dGVyc19oCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvTmV0d29yay9OZXR3b3JrUHJvY2Vz
c1N1cHBsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvTmV0d29y
ay9OZXR3b3JrUHJvY2Vzc1N1cHBsZW1lbnQuaAkocmV2aXNpb24gMTkyNjAxKQorKysgU291cmNl
L1dlYktpdDIvU2hhcmVkL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NTdXBwbGVtZW50LmgJKHdvcmtp
bmcgY29weSkKQEAgLTMzLDEyICszMywxMCBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIHN0cnVjdCBO
ZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyczsKIAogY2xhc3MgTmV0d29ya1Byb2Nlc3NT
dXBwbGVtZW50IDogcHVibGljIENoaWxkUHJvY2Vzc1N1cHBsZW1lbnQgewotI2lmIEVOQUJMRShO
RVRXT1JLX1BST0NFU1MpCiBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGluaXRpYWxpemUoY29u
c3QgTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMmKQogICAgIHsKICAgICB9Ci0jZW5k
aWYKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApJbmRleDogU291cmNlL1dlYktpdDIvU2hh
cmVkL05ldHdvcmsvTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9OZXR3b3JrL05ldHdvcmtSZXNvdXJjZUxvYWRQYXJh
bWV0ZXJzLmNwcAkocmV2aXNpb24gMTkyNjAxKQorKysgU291cmNlL1dlYktpdDIvU2hhcmVkL05l
dHdvcmsvTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0zMCw4ICszMCw2IEBACiAjaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgIldl
YkNvcmVBcmd1bWVudENvZGVycy5oIgogCi0jaWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKLQog
dXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtMTYwLDUg
KzE1OCwzIEBAIGJvb2wgTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnM6OmRlY28KIH0KICAg
ICAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAotCi0jZW5kaWYgLy8gRU5BQkxFKE5FVFdPUktfUFJP
Q0VTUykKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9OZXR3b3JrL05ldHdvcmtSZXNvdXJj
ZUxvYWRQYXJhbWV0ZXJzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvU2hhcmVkL05l
dHdvcmsvTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMuaAkocmV2aXNpb24gMTkyNjAxKQor
KysgU291cmNlL1dlYktpdDIvU2hhcmVkL05ldHdvcmsvTmV0d29ya1Jlc291cmNlTG9hZFBhcmFt
ZXRlcnMuaAkod29ya2luZyBjb3B5KQpAQCAtMzIsOCArMzIsNiBAQAogI2luY2x1ZGUgPFdlYkNv
cmUvUmVzb3VyY2VSZXF1ZXN0Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZXNzaW9uSUQuaD4KIAot
I2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCi0KIG5hbWVzcGFjZSBJUEMgewogICAgIGNsYXNz
IEFyZ3VtZW50RGVjb2RlcjsKICAgICBjbGFzcyBBcmd1bWVudEVuY29kZXI7CkBAIC02OCw2ICs2
Niw0IEBAIHB1YmxpYzoKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKLSNlbmRpZiAvLyBFTkFC
TEUoTkVUV09SS19QUk9DRVNTKQotCiAjZW5kaWYgLy8gTmV0d29ya1Jlc291cmNlTG9hZFBhcmFt
ZXRlcnNfaApJbmRleDogU291cmNlL1dlYktpdDIvU2hhcmVkL05ldHdvcmsvQ3VzdG9tUHJvdG9j
b2xzL0N1c3RvbVByb3RvY29sTWFuYWdlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQy
L1NoYXJlZC9OZXR3b3JrL0N1c3RvbVByb3RvY29scy9DdXN0b21Qcm90b2NvbE1hbmFnZXIuaAko
cmV2aXNpb24gMTkyNjAxKQorKysgU291cmNlL1dlYktpdDIvU2hhcmVkL05ldHdvcmsvQ3VzdG9t
UHJvdG9jb2xzL0N1c3RvbVByb3RvY29sTWFuYWdlci5oCSh3b3JraW5nIGNvcHkpCkBAIC04Mywx
MCArODMsOCBAQCBwcml2YXRlOgogICAgIC8vIFdlYlByb2Nlc3NTdXBwbGVtZW50CiAgICAgdm9p
ZCBpbml0aWFsaXplKGNvbnN0IFdlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMmKSBvdmVycmlk
ZTsKIAotI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCiAgICAgLy8gTmV0d29ya1Byb2Nlc3NT
dXBwbGVtZW50CiAgICAgdm9pZCBpbml0aWFsaXplKGNvbnN0IE5ldHdvcmtQcm9jZXNzQ3JlYXRp
b25QYXJhbWV0ZXJzJikgb3ZlcnJpZGU7Ci0jZW5kaWYKIAogICAgIC8vIElQQzo6TWVzc2FnZVJl
Y2VpdmVyCiAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlv
biYsIElQQzo6TWVzc2FnZURlY29kZXImKSBvdmVycmlkZTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQy
L1NoYXJlZC9OZXR3b3JrL0N1c3RvbVByb3RvY29scy9Db2NvYS9DdXN0b21Qcm90b2NvbE1hbmFn
ZXJDb2NvYS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvTmV0d29yay9D
dXN0b21Qcm90b2NvbHMvQ29jb2EvQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ29jb2EubW0JKHJldmlz
aW9uIDE5MjYwMSkKKysrIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9OZXR3b3JrL0N1c3RvbVByb3Rv
Y29scy9Db2NvYS9DdXN0b21Qcm90b2NvbE1hbmFnZXJDb2NvYS5tbQkod29ya2luZyBjb3B5KQpA
QCAtMzAsNiArMzAsNyBAQAogI2ltcG9ydCAiQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyTWVzc2FnZXMu
aCIKICNpbXBvcnQgIkN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5TWVzc2FnZXMuaCIKICNpbXBv
cnQgIkRhdGFSZWZlcmVuY2UuaCIKKyNpbXBvcnQgIk5ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJh
bWV0ZXJzLmgiCiAjaW1wb3J0ICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIKICNpbXBvcnQgIldl
YlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaCIKICNpbXBvcnQgPFdlYkNvcmUvVVJMLmg+CkBA
IC0zNywxMCArMzgsNiBAQAogI2ltcG9ydCA8V2ViQ29yZS9SZXNvdXJjZVJlcXVlc3QuaD4KICNp
bXBvcnQgPFdlYkNvcmUvUmVzb3VyY2VSZXNwb25zZS5oPgogCi0jaWYgRU5BQkxFKE5FVFdPUktf
UFJPQ0VTUykKLSNpbXBvcnQgIk5ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmgiCi0j
ZW5kaWYKLQogI2lmZGVmIF9faGFzX2luY2x1ZGUKICNpZiBfX2hhc19pbmNsdWRlKDxGb3VuZGF0
aW9uL05TVVJMQ29ubmVjdGlvblByaXZhdGUuaD4pCiAjaW1wb3J0IDxGb3VuZGF0aW9uL05TVVJM
Q29ubmVjdGlvblByaXZhdGUuaD4KQEAgLTEzNywyMiArMTM0LDExIEBAIHZvaWQgQ3VzdG9tUHJv
dG9jb2xNYW5hZ2VyOjppbml0aWFsaXplQ28KIAogdm9pZCBDdXN0b21Qcm90b2NvbE1hbmFnZXI6
OmluaXRpYWxpemUoY29uc3QgV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycyYgcGFyYW1ldGVy
cykKIHsKLSNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQotICAgIEFTU0VSVChwYXJhbWV0ZXJz
LnVybFNjaGVtZXNSZWdpc3RlcmVkRm9yQ3VzdG9tUHJvdG9jb2xzLmlzRW1wdHkoKSB8fCAhcGFy
YW1ldGVycy51c2VzTmV0d29ya1Byb2Nlc3MpOwotICAgIGlmIChwYXJhbWV0ZXJzLnVzZXNOZXR3
b3JrUHJvY2VzcykgewotICAgICAgICBtX2NoaWxkUHJvY2Vzcy0+cGFyZW50UHJvY2Vzc0Nvbm5l
Y3Rpb24oKS0+cmVtb3ZlV29ya1F1ZXVlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpDdXN0b21Q
cm90b2NvbE1hbmFnZXI6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSk7Ci0gICAgICAgIG1fbWVzc2Fn
ZVF1ZXVlID0gbnVsbHB0cjsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSNlbmRpZgotCi0gICAg
W05TVVJMUHJvdG9jb2wgcmVnaXN0ZXJDbGFzczpbV0tDdXN0b21Qcm90b2NvbCBjbGFzc11dOwot
Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBwYXJhbWV0ZXJzLnVybFNjaGVtZXNSZWdpc3Rl
cmVkRm9yQ3VzdG9tUHJvdG9jb2xzLnNpemUoKTsgKytpKQotICAgICAgICByZWdpc3RlclNjaGVt
ZShwYXJhbWV0ZXJzLnVybFNjaGVtZXNSZWdpc3RlcmVkRm9yQ3VzdG9tUHJvdG9jb2xzW2ldKTsK
KyAgICBBU1NFUlQocGFyYW1ldGVycy51cmxTY2hlbWVzUmVnaXN0ZXJlZEZvckN1c3RvbVByb3Rv
Y29scy5pc0VtcHR5KCkpOworICAgIG1fY2hpbGRQcm9jZXNzLT5wYXJlbnRQcm9jZXNzQ29ubmVj
dGlvbigpLT5yZW1vdmVXb3JrUXVldWVNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OkN1c3RvbVBy
b3RvY29sTWFuYWdlcjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpKTsKKyAgICBtX21lc3NhZ2VRdWV1
ZSA9IG51bGxwdHI7CiB9CiAKLSNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQogdm9pZCBDdXN0
b21Qcm90b2NvbE1hbmFnZXI6OmluaXRpYWxpemUoY29uc3QgTmV0d29ya1Byb2Nlc3NDcmVhdGlv
blBhcmFtZXRlcnMmIHBhcmFtZXRlcnMpCiB7CiAgICAgW05TVVJMUHJvdG9jb2wgcmVnaXN0ZXJD
bGFzczpbV0tDdXN0b21Qcm90b2NvbCBjbGFzc11dOwpAQCAtMTYwLDcgKzE0Niw2IEBAIHZvaWQg
Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyOjppbml0aWFsaXplKGMKICAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IHBhcmFtZXRlcnMudXJsU2NoZW1lc1JlZ2lzdGVyZWRGb3JDdXN0b21Qcm90b2NvbHMu
c2l6ZSgpOyArK2kpCiAgICAgICAgIHJlZ2lzdGVyU2NoZW1lKHBhcmFtZXRlcnMudXJsU2NoZW1l
c1JlZ2lzdGVyZWRGb3JDdXN0b21Qcm90b2NvbHNbaV0pOwogfQotI2VuZGlmCiAKIHZvaWQgQ3Vz
dG9tUHJvdG9jb2xNYW5hZ2VyOjphZGRDdXN0b21Qcm90b2NvbChXS0N1c3RvbVByb3RvY29sICpj
dXN0b21Qcm90b2NvbCkKIHsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9OZXR3b3JrL0N1
c3RvbVByb3RvY29scy9zb3VwL0N1c3RvbVByb3RvY29sTWFuYWdlclNvdXAuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9OZXR3b3JrL0N1c3RvbVByb3RvY29scy9zb3Vw
L0N1c3RvbVByb3RvY29sTWFuYWdlclNvdXAuY3BwCShyZXZpc2lvbiAxOTI2MDEpCisrKyBTb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvTmV0d29yay9DdXN0b21Qcm90b2NvbHMvc291cC9DdXN0b21Qcm90
b2NvbE1hbmFnZXJTb3VwLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjMsMTMgKzIzLDEwIEBACiAj
aW5jbHVkZSAiQ2hpbGRQcm9jZXNzLmgiCiAjaW5jbHVkZSAiQ3VzdG9tUHJvdG9jb2xNYW5hZ2Vy
SW1wbC5oIgogI2luY2x1ZGUgIkN1c3RvbVByb3RvY29sTWFuYWdlck1lc3NhZ2VzLmgiCisjaW5j
bHVkZSAiTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaCIKICNpbmNsdWRlICJXZWJQ
cm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9Ob3RJbXBsZW1l
bnRlZC5oPgogCi0jaWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKLSNpbmNsdWRlICJOZXR3b3Jr
UHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oIgotI2VuZGlmCi0KIG5hbWVzcGFjZSBXZWJLaXQg
ewogCiBjb25zdCBjaGFyKiBDdXN0b21Qcm90b2NvbE1hbmFnZXI6OnN1cHBsZW1lbnROYW1lKCkK
QEAgLTUxLDI1ICs0OCwxNiBAQCB2b2lkIEN1c3RvbVByb3RvY29sTWFuYWdlcjo6aW5pdGlhbGl6
ZUNvCiAKIHZvaWQgQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyOjppbml0aWFsaXplKGNvbnN0IFdlYlBy
b2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMmIHBhcmFtZXRlcnMpCiB7Ci0jaWYgRU5BQkxFKE5FVFdP
UktfUFJPQ0VTUykKLSAgICBBU1NFUlQocGFyYW1ldGVycy51cmxTY2hlbWVzUmVnaXN0ZXJlZEZv
ckN1c3RvbVByb3RvY29scy5pc0VtcHR5KCkgfHwgIXBhcmFtZXRlcnMudXNlc05ldHdvcmtQcm9j
ZXNzKTsKLSAgICBpZiAocGFyYW1ldGVycy51c2VzTmV0d29ya1Byb2Nlc3MpIHsKLSAgICAgICAg
bV9jaGlsZFByb2Nlc3MtPnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnJlbW92ZVdvcmtRdWV1
ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyOjptZXNzYWdl
UmVjZWl2ZXJOYW1lKCkpOwotICAgICAgICBtX21lc3NhZ2VRdWV1ZSA9IG51bGxwdHI7Ci0gICAg
ICAgIHJldHVybjsKLSAgICB9Ci0jZW5kaWYKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHBh
cmFtZXRlcnMudXJsU2NoZW1lc1JlZ2lzdGVyZWRGb3JDdXN0b21Qcm90b2NvbHMuc2l6ZSgpOyAr
K2kpCi0gICAgICAgIHJlZ2lzdGVyU2NoZW1lKHBhcmFtZXRlcnMudXJsU2NoZW1lc1JlZ2lzdGVy
ZWRGb3JDdXN0b21Qcm90b2NvbHNbaV0pOworICAgIEFTU0VSVChwYXJhbWV0ZXJzLnVybFNjaGVt
ZXNSZWdpc3RlcmVkRm9yQ3VzdG9tUHJvdG9jb2xzLmlzRW1wdHkoKSk7CisgICAgbV9jaGlsZFBy
b2Nlc3MtPnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnJlbW92ZVdvcmtRdWV1ZU1lc3NhZ2VS
ZWNlaXZlcihNZXNzYWdlczo6Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyOjptZXNzYWdlUmVjZWl2ZXJO
YW1lKCkpOworICAgIG1fbWVzc2FnZVF1ZXVlID0gbnVsbHB0cjsKIH0KIAotI2lmIEVOQUJMRShO
RVRXT1JLX1BST0NFU1MpCiB2b2lkIEN1c3RvbVByb3RvY29sTWFuYWdlcjo6aW5pdGlhbGl6ZShj
b25zdCBOZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycyYgcGFyYW1ldGVycykKIHsKICAg
ICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHBhcmFtZXRlcnMudXJsU2NoZW1lc1JlZ2lzdGVyZWRG
b3JDdXN0b21Qcm90b2NvbHMuc2l6ZSgpOyArK2kpCiAgICAgICAgIHJlZ2lzdGVyU2NoZW1lKHBh
cmFtZXRlcnMudXJsU2NoZW1lc1JlZ2lzdGVyZWRGb3JDdXN0b21Qcm90b2NvbHNbaV0pOwogfQot
I2VuZGlmCiAKIHZvaWQgQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyOjpyZWdpc3RlclNjaGVtZShjb25z
dCBTdHJpbmcmIHNjaGVtZSkKIHsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9lZmwvUHJv
Y2Vzc0V4ZWN1dGFibGVQYXRoRWZsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvZWZsL1Byb2Nlc3NFeGVjdXRhYmxlUGF0aEVmbC5jcHAJKHJldmlzaW9uIDE5MjYwMSkK
KysrIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9lZmwvUHJvY2Vzc0V4ZWN1dGFibGVQYXRoRWZsLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtODEsMTQgKzgxLDEyIEBAIFN0cmluZyBleGVjdXRhYmxlUGF0
aE9mUGx1Z2luUHJvY2VzcygpCiAgICAgcmV0dXJuIHdlYktpdFBsdWdpblByb2Nlc3NOYW1lOwog
fQogCi0jaWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKIFN0cmluZyBleGVjdXRhYmxlUGF0aE9m
TmV0d29ya1Byb2Nlc3MoKQogewogICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxjb25zdCBTdHJp
bmc+IHdlYktpdE5ldHdvcmtQcm9jZXNzTmFtZShmaW5kUHJvY2Vzc1BhdGgoTkVUV09SS1BST0NF
U1NOQU1FKSk7CiAKICAgICByZXR1cm4gd2ViS2l0TmV0d29ya1Byb2Nlc3NOYW1lOwogfQotI2Vu
ZGlmCiAKICNpZiBFTkFCTEUoREFUQUJBU0VfUFJPQ0VTUykKIFN0cmluZyBleGVjdXRhYmxlUGF0
aE9mRGF0YWJhc2VQcm9jZXNzKCkKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9ndGsvUHJv
Y2Vzc0V4ZWN1dGFibGVQYXRoR3RrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvZ3RrL1Byb2Nlc3NFeGVjdXRhYmxlUGF0aEd0ay5jcHAJKHJldmlzaW9uIDE5MjYwMSkK
KysrIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9ndGsvUHJvY2Vzc0V4ZWN1dGFibGVQYXRoR3RrLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNzksMTIgKzc5LDEwIEBAIFN0cmluZyBleGVjdXRhYmxlUGF0
aE9mUGx1Z2luUHJvY2VzcygpCiAgICAgcmV0dXJuIGZpbmRXZWJLaXRQcm9jZXNzKCJXZWJLaXRQ
bHVnaW5Qcm9jZXNzIik7CiB9CiAKLSNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQogU3RyaW5n
IGV4ZWN1dGFibGVQYXRoT2ZOZXR3b3JrUHJvY2VzcygpCiB7CiAgICAgcmV0dXJuIGZpbmRXZWJL
aXRQcm9jZXNzKCJXZWJLaXROZXR3b3JrUHJvY2VzcyIpOwogfQotI2VuZGlmCiAKICNpZiBFTkFC
TEUoREFUQUJBU0VfUFJPQ0VTUykKIFN0cmluZyBleGVjdXRhYmxlUGF0aE9mRGF0YWJhc2VQcm9j
ZXNzKCkKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9tYWMvQ29va2llU3RvcmFnZVNoaW0u
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvbWFjL0Nvb2tpZVN0b3JhZ2VT
aGltLmgJKHJldmlzaW9uIDE5MjYwMSkKKysrIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9tYWMvQ29v
a2llU3RvcmFnZVNoaW0uaAkod29ya2luZyBjb3B5KQpAQCAtMjYsOCArMjYsNiBAQAogI2lmbmRl
ZiBDb29raWVTdG9yYWdlU2hpbV9oCiAjZGVmaW5lIENvb2tpZVN0b3JhZ2VTaGltX2gKIAotI2lm
IEVOQUJMRShORVRXT1JLX1BST0NFU1MpCi0KICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4K
ICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KIApAQCAtNDksNiArNDcsNCBAQCBwcml2
YXRlOgogCiB9CiAKLSNlbmRpZiAvLyBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQotCiAjZW5kaWYg
Ly8gQ29va2llU3RvcmFnZVNoaW1faApJbmRleDogU291cmNlL1dlYktpdDIvU2hhcmVkL21hYy9D
b29raWVTdG9yYWdlU2hpbS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQv
bWFjL0Nvb2tpZVN0b3JhZ2VTaGltLm1tCShyZXZpc2lvbiAxOTI2MDEpCisrKyBTb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvbWFjL0Nvb2tpZVN0b3JhZ2VTaGltLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0y
Niw4ICsyNiw2IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiQ29va2llU3RvcmFn
ZVNoaW0uaCIKIAotI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCi0KICNpbmNsdWRlICJDb29r
aWVTdG9yYWdlU2hpbUxpYnJhcnkuaCIKICNpbmNsdWRlICJOZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzcy5oIgogI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5oIgpAQCAtMTM1
LDUgKzEzMywzIEBAIC0gKHZvaWQpX2dldENvb2tpZUhlYWRlcnNGb3JUYXNrOihOU1VSTFMKIH0K
IAogQGVuZAotCi0jZW5kaWYgLy8gRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9tYWMvQ29va2llU3RvcmFnZVNoaW1MaWJyYXJ5LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvbWFjL0Nvb2tpZVN0b3JhZ2VTaGltTGlicmFy
eS5jcHAJKHJldmlzaW9uIDE5MjYwMSkKKysrIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9tYWMvQ29v
a2llU3RvcmFnZVNoaW1MaWJyYXJ5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjYsNyArMjYsNyBA
QAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkNvb2tpZVN0b3JhZ2VTaGltTGlicmFy
eS5oIgogCi0jaWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykgJiYgIVBMQVRGT1JNKElPUykKKyNp
ZiAhUExBVEZPUk0oSU9TKQogCiAjaW5jbHVkZSA8V2ViQ29yZS9EeW5hbWljTGlua2VySW50ZXJw
b3NpbmcuaD4KIApAQCAtOTAsNCArOTAsNCBAQCB2b2lkIFdlYktpdENvb2tpZVN0b3JhZ2VTaGlt
SW5pdGlhbGl6ZShjCiAgICAgCiB9CiAKLSNlbmRpZiAvLyBFTkFCTEUoTkVUV09SS19QUk9DRVNT
KSAmJiAhUExBVEZPUk0oSU9TKQorI2VuZGlmIC8vICFQTEFURk9STShJT1MpCkluZGV4OiBTb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvbWFjL0Nvb2tpZVN0b3JhZ2VTaGltTGlicmFyeS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9tYWMvQ29va2llU3RvcmFnZVNoaW1MaWJyYXJ5
LmgJKHJldmlzaW9uIDE5MjYwMSkKKysrIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9tYWMvQ29va2ll
U3RvcmFnZVNoaW1MaWJyYXJ5LmgJKHdvcmtpbmcgY29weSkKQEAgLTI2LDggKzI2LDYgQEAKICNp
Zm5kZWYgQ29va2llU3RvcmFnZVNoaW1MaWJyYXJ5X2gKICNkZWZpbmUgQ29va2llU3RvcmFnZVNo
aW1MaWJyYXJ5X2gKIAotI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCi0KIHR5cGVkZWYgc3Ry
dWN0IE9wYXF1ZUNGSFRUUENvb2tpZVN0b3JhZ2UqICBDRkhUVFBDb29raWVTdG9yYWdlUmVmOwog
CiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTQwLDYgKzM4LDQgQEAgdHlwZWRlZiB2b2lkICgqQ29v
a2llU3RvcmFnZVNoaW1Jbml0aWFsaQogCiB9CiAKLSNlbmRpZiAvLyBFTkFCTEUoTkVUV09SS19Q
Uk9DRVNTKQotCiAjZW5kaWYgLy8gQ29va2llU3RvcmFnZVNoaW1MaWJyYXJ5X2gKSW5kZXg6IFNv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Qcm9jZXNzTW9kZWwuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvUHJvY2Vzc01vZGVsLmgJKHJldmlzaW9uIDE5MjYwMSkKKysr
IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Qcm9jZXNzTW9kZWwuaAkod29ya2luZyBjb3B5KQpA
QCAtMSwzOCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJl
IG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBQcm9jZXNzTW9kZWxfaAotI2Rl
ZmluZSBQcm9jZXNzTW9kZWxfaAotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQotZW51bSBQcm9jZXNz
TW9kZWwgewotICAgIFByb2Nlc3NNb2RlbFNoYXJlZFNlY29uZGFyeVByb2Nlc3MsCi0gICAgUHJv
Y2Vzc01vZGVsTXVsdGlwbGVTZWNvbmRhcnlQcm9jZXNzZXMKLX07Ci0KLX0gLy8gbmFtZXNwYWNl
IFdlYktpdAotCi0jZW5kaWYgLy8gUHJvY2Vzc01vZGVsX2gKSW5kZXg6IFNvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9XZWJDb29raWVNYW5hZ2VyUHJveHkuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb29raWVNYW5hZ2VyUHJveHkuY3BwCShyZXZpc2lvbiAx
OTI2MDEpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29va2llTWFuYWdlclByb3h5
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtODUsOCArODUsOCBAQCB2b2lkIFdlYkNvb2tpZU1hbmFn
ZXJQcm94eTo6cHJvY2Vzc0RpZENsCiAKIGJvb2wgV2ViQ29va2llTWFuYWdlclByb3h5OjpzaG91
bGRUZXJtaW5hdGUoV2ViUHJvY2Vzc1Byb3h5KikgY29uc3QKIHsKLSAgICByZXR1cm4gcHJvY2Vz
c1Bvb2woKS0+cHJvY2Vzc01vZGVsKCkgIT0gUHJvY2Vzc01vZGVsU2hhcmVkU2Vjb25kYXJ5UHJv
Y2VzcwotICAgICAgICB8fCAobV9hcnJheUNhbGxiYWNrcy5pc0VtcHR5KCkgJiYgbV9odHRwQ29v
a2llQWNjZXB0UG9saWN5Q2FsbGJhY2tzLmlzRW1wdHkoKSk7CisgICAgLy8gRklYTUU6IFJlbW92
ZSB0aGlzLgorICAgIHJldHVybiB0cnVlOwogfQogCiB2b2lkIFdlYkNvb2tpZU1hbmFnZXJQcm94
eTo6cmVmV2ViQ29udGV4dFN1cHBsZW1lbnQoKQpAQCAtMTYzLDEwICsxNjMsNyBAQCB2b2lkIFdl
YkNvb2tpZU1hbmFnZXJQcm94eTo6c2V0SFRUUENvb2tpCiAgICAgLy8gLSBXaGVuIHRlc3Rpbmcs
IHdlIG9ubHkgaGF2ZSBvbmUgV2ViUHJvY2VzcyBhbmQgb25lIE5ldHdvcmtQcm9jZXNzLCBhbmQg
V2ViS2l0VGVzdFJ1bm5lciBuZXZlciByZXN0YXJ0cyB0aGVtOwogICAgIC8vIC0gV2hlbiBub3Qg
dGVzdGluZywgQ29jb2EgaGFzIHRoZSBwb2xpY3kgcGVyc2lzdGVkLCBhbmQgdGh1cyBuZXcgcHJv
Y2Vzc2VzIHVzZSBpdCAoZXZlbiBmb3IgZXBoZW1lcmFsIHNlc3Npb25zKS4KICAgICBwcm9jZXNz
UG9vbCgpLT5zZW5kVG9BbGxQcm9jZXNzZXMoTWVzc2FnZXM6OldlYkNvb2tpZU1hbmFnZXI6OlNl
dEhUVFBDb29raWVBY2NlcHRQb2xpY3kocG9saWN5KSk7Ci0jaWYgRU5BQkxFKE5FVFdPUktfUFJP
Q0VTUykKLSAgICBpZiAocHJvY2Vzc1Bvb2woKS0+dXNlc05ldHdvcmtQcm9jZXNzKCkpCi0gICAg
ICAgIHByb2Nlc3NQb29sKCktPnNlbmRUb05ldHdvcmtpbmdQcm9jZXNzKE1lc3NhZ2VzOjpXZWJD
b29raWVNYW5hZ2VyOjpTZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KHBvbGljeSkpOwotI2VuZGlm
CisgICAgcHJvY2Vzc1Bvb2woKS0+c2VuZFRvTmV0d29ya2luZ1Byb2Nlc3MoTWVzc2FnZXM6Oldl
YkNvb2tpZU1hbmFnZXI6OlNldEhUVFBDb29raWVBY2NlcHRQb2xpY3kocG9saWN5KSk7CiB9CiAK
IHZvaWQgV2ViQ29va2llTWFuYWdlclByb3h5OjpnZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KHN0
ZDo6ZnVuY3Rpb248dm9pZCAoSFRUUENvb2tpZUFjY2VwdFBvbGljeSwgQ2FsbGJhY2tCYXNlOjpF
cnJvcik+IGNhbGxiYWNrRnVuY3Rpb24pCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
V2ViSW5zcGVjdG9yUHJveHkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9XZWJJbnNwZWN0b3JQcm94eS5jcHAJKHJldmlzaW9uIDE5MjYwMSkKKysrIFNvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9XZWJJbnNwZWN0b3JQcm94eS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTMxMiw3ICszMTIsNiBAQCBXZWJQcm9jZXNzUG9vbCYgV2ViSW5zcGVjdG9yUHJveHk6Omluc3Bl
CiAgICAgLy8gZ3VhcmFudGVlcyBubyBwcm9jZXNzIHNoYXJpbmcgZm9yIG91ciB1c2VyIGludGVy
ZmFjZS4KICAgICBpZiAoIXNfcHJvY2Vzc1Bvb2wpIHsKICAgICAgICAgYXV0byBjb25maWd1cmF0
aW9uID0gQVBJOjpQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb246OmNyZWF0ZVdpdGhMZWdhY3lPcHRp
b25zKCk7Ci0gICAgICAgIGNvbmZpZ3VyYXRpb24tPnNldFByb2Nlc3NNb2RlbChQcm9jZXNzTW9k
ZWxNdWx0aXBsZVNlY29uZGFyeVByb2Nlc3Nlcyk7CiAgICAgICAgIHNfcHJvY2Vzc1Bvb2wgPSAm
V2ViUHJvY2Vzc1Bvb2w6OmNyZWF0ZShjb25maWd1cmF0aW9uLmdldCgpKS5sZWFrUmVmKCk7CiAg
ICAgfTsKIApJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAJ
KHJldmlzaW9uIDE5MjYwMSkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02MCw2ICs2MCw3IEBACiAjaW5jbHVkZSAiTmF0aXZl
V2ViTW91c2VFdmVudC5oIgogI2luY2x1ZGUgIk5hdGl2ZVdlYldoZWVsRXZlbnQuaCIKICNpbmNs
dWRlICJOYXZpZ2F0aW9uQWN0aW9uRGF0YS5oIgorI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzTWVz
c2FnZXMuaCIKICNpbmNsdWRlICJOb3RpZmljYXRpb25QZXJtaXNzaW9uUmVxdWVzdC5oIgogI2lu
Y2x1ZGUgIk5vdGlmaWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlci5oIgogI2luY2x1ZGUg
IlBhZ2VDbGllbnQuaCIKQEAgLTEzOCwxMCArMTM5LDYgQEAKICNpbmNsdWRlIDx3dGYvUmVmQ291
bnRlZExlYWtDb3VudGVyLmg+CiAjZW5kaWYKIAotI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1Mp
Ci0jaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3NNZXNzYWdlcy5oIgotI2VuZGlmCi0KICNpZiBQTEFU
Rk9STShDT0NPQSkKICNpbmNsdWRlICJSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5Lmgi
CiAjaW5jbHVkZSAiUmVtb3RlTGF5ZXJUcmVlU2Nyb2xsaW5nUGVyZm9ybWFuY2VEYXRhLmgiCkBA
IC00ODcsMTAgKzQ4NCw4IEBAIFdlYlBhZ2VQcm94eTo6V2ViUGFnZVByb3h5KFBhZ2VDbGllbnQm
IHAKIAogICAgIG1fcHJvY2Vzcy0+YWRkTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJQYWdl
UHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9wYWdlSUQsICp0aGlzKTsKIAotI2lmIEVO
QUJMRShORVRXT1JLX1BST0NFU1MpCiAgICAgaWYgKG1fc2Vzc2lvbklELmlzRXBoZW1lcmFsKCkp
CiAgICAgICAgIG1fcHJvY2Vzcy0+cHJvY2Vzc1Bvb2woKS5zZW5kVG9OZXR3b3JraW5nUHJvY2Vz
cyhNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OkVuc3VyZVByaXZhdGVCcm93c2luZ1Nlc3Npb24o
bV9zZXNzaW9uSUQpKTsKLSNlbmRpZgogCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgY29uc3Qg
Q0ZJbmRleCB2aWV3U3RhdGVDaGFuZ2VSdW5Mb29wT3JkZXIgPSAoQ0ZJbmRleClSdW5Mb29wT2Jz
ZXJ2ZXI6OldlbGxLbm93blJ1bkxvb3BPcmRlcnM6OkNvcmVBbmltYXRpb25Db21taXQgLSAxOwpA
QCAtNjk2LDEwICs2OTEsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cmVhdHRhY2hUb1dlYlByb2Nl
c3MoCiAgICAgbV9wcm9jZXNzLT5yZW1vdmVXZWJQYWdlKG1fcGFnZUlEKTsKICAgICBtX3Byb2Nl
c3MtPnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6V2ViUGFnZVByb3h5OjptZXNzYWdl
UmVjZWl2ZXJOYW1lKCksIG1fcGFnZUlEKTsKIAotICAgIGlmIChtX3Byb2Nlc3MtPnByb2Nlc3NQ
b29sKCkucHJvY2Vzc01vZGVsKCkgPT0gUHJvY2Vzc01vZGVsU2hhcmVkU2Vjb25kYXJ5UHJvY2Vz
cykKLSAgICAgICAgbV9wcm9jZXNzID0gbV9wcm9jZXNzLT5wcm9jZXNzUG9vbCgpLmVuc3VyZVNo
YXJlZFdlYlByb2Nlc3MoKTsKLSAgICBlbHNlCi0gICAgICAgIG1fcHJvY2VzcyA9IG1fcHJvY2Vz
cy0+cHJvY2Vzc1Bvb2woKS5jcmVhdGVOZXdXZWJQcm9jZXNzUmVzcGVjdGluZ1Byb2Nlc3NDb3Vu
dExpbWl0KCk7CisgICAgbV9wcm9jZXNzID0gbV9wcm9jZXNzLT5wcm9jZXNzUG9vbCgpLmNyZWF0
ZU5ld1dlYlByb2Nlc3NSZXNwZWN0aW5nUHJvY2Vzc0NvdW50TGltaXQoKTsKIAogICAgIEFTU0VS
VChtX3Byb2Nlc3MtPnN0YXRlKCkgIT0gQ2hpbGRQcm9jZXNzUHJveHk6OlN0YXRlOjpUZXJtaW5h
dGVkKTsKICAgICBpZiAobV9wcm9jZXNzLT5zdGF0ZSgpID09IENoaWxkUHJvY2Vzc1Byb3h5OjpT
dGF0ZTo6UnVubmluZykKQEAgLTc3NCwxMCArNzY2LDggQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNl
dFNlc3Npb25JRChTZXNzaW9uSQogICAgIG1fc2Vzc2lvbklEID0gc2Vzc2lvbklEOwogICAgIG1f
cHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0U2Vzc2lvbklEKHNlc3Npb25JRCks
IG1fcGFnZUlEKTsKIAotI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCiAgICAgaWYgKHNlc3Np
b25JRC5pc0VwaGVtZXJhbCgpKQogICAgICAgICBtX3Byb2Nlc3MtPnByb2Nlc3NQb29sKCkuc2Vu
ZFRvTmV0d29ya2luZ1Byb2Nlc3MoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpFbnN1cmVQcml2
YXRlQnJvd3NpbmdTZXNzaW9uKHNlc3Npb25JRCkpOwotI2VuZGlmCiB9CiAKIHZvaWQgV2ViUGFn
ZVByb3h5Ojppbml0aWFsaXplV2ViUGFnZSgpCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAJKHJldmlzaW9uIDE5MjYwMSkKKysrIFNvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM1LDYg
KzM1LDkgQEAKICNpbmNsdWRlICJEb3dubG9hZFByb3h5LmgiCiAjaW5jbHVkZSAiRG93bmxvYWRQ
cm94eU1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgorI2luY2x1ZGUgIk5ldHdvcmtQ
cm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmgiCisjaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3NNZXNz
YWdlcy5oIgorI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzUHJveHkuaCIKICNpbmNsdWRlICJTYW5k
Ym94RXh0ZW5zaW9uLmgiCiAjaW5jbHVkZSAiU3RhdGlzdGljc0RhdGEuaCIKICNpbmNsdWRlICJU
ZXh0Q2hlY2tlci5oIgpAQCAtNzgsMTEgKzgxLDYgQEAKICNpbmNsdWRlICJEYXRhYmFzZVByb2Nl
c3NNZXNzYWdlcy5oIgogI2VuZGlmCiAKLSNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQotI2lu
Y2x1ZGUgIk5ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmgiCi0jaW5jbHVkZSAiTmV0
d29ya1Byb2Nlc3NNZXNzYWdlcy5oIgotI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzUHJveHkuaCIK
LSNlbmRpZgogCiAjaWYgRU5BQkxFKFNFUlZJQ0VfQ09OVFJPTFMpCiAjaW5jbHVkZSAiU2Vydmlj
ZXNDb250cm9sbGVyLmgiCkBAIC0xMDUsOCArMTAzLDYgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYktp
dDsKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLXN0YXRpYyBjb25zdCBkb3VibGUgc2hhcmVkU2Vj
b25kYXJ5UHJvY2Vzc1NodXRkb3duVGltZW91dCA9IDYwOwotCiBERUZJTkVfREVCVUdfT05MWV9H
TE9CQUwoV1RGOjpSZWZDb3VudGVkTGVha0NvdW50ZXIsIHByb2Nlc3NQb29sQ291bnRlciwgKCJX
ZWJQcm9jZXNzUG9vbCIpKTsKIAogUmVmPFdlYlByb2Nlc3NQb29sPiBXZWJQcm9jZXNzUG9vbDo6
Y3JlYXRlKEFQSTo6UHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uJiBjb25maWd1cmF0aW9uKQpAQCAt
MTU5LDEwICsxNTUsOCBAQCBXZWJQcm9jZXNzUG9vbDo6V2ViUHJvY2Vzc1Bvb2woQVBJOjpQcm9j
CiAjZW5kaWYKICAgICAsIG1fc2hvdWxkVXNlVGVzdGluZ05ldHdvcmtTZXNzaW9uKGZhbHNlKQog
ICAgICwgbV9wcm9jZXNzVGVybWluYXRpb25FbmFibGVkKHRydWUpCi0jaWYgRU5BQkxFKE5FVFdP
UktfUFJPQ0VTUykKICAgICAsIG1fY2FuSGFuZGxlSFRUUFNTZXJ2ZXJUcnVzdEV2YWx1YXRpb24o
dHJ1ZSkKICAgICAsIG1fZGlkTmV0d29ya1Byb2Nlc3NDcmFzaChmYWxzZSkKLSNlbmRpZgogI2lm
IFVTRShTT1VQKQogICAgICwgbV9pZ25vcmVUTFNFcnJvcnModHJ1ZSkKICNlbmRpZgpAQCAtMjU0
LDEwICsyNDgsOCBAQCBXZWJQcm9jZXNzUG9vbDo6fldlYlByb2Nlc3NQb29sKCkKICAgICBwcm9j
ZXNzUG9vbENvdW50ZXIuZGVjcmVtZW50KCk7CiAjZW5kaWYKIAotI2lmIEVOQUJMRShORVRXT1JL
X1BST0NFU1MpCiAgICAgaWYgKG1fbmV0d29ya1Byb2Nlc3MpCiAgICAgICAgIG1fbmV0d29ya1By
b2Nlc3MtPnNodXREb3duUHJvY2VzcygpOwotI2VuZGlmCiB9CiAKIHZvaWQgV2ViUHJvY2Vzc1Bv
b2w6OmluaXRpYWxpemVDbGllbnQoY29uc3QgV0tDb250ZXh0Q2xpZW50QmFzZSogY2xpZW50KQpA
QCAtMjkxLDE3ICsyODMsNiBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpzZXREb3dubG9hZENsaWVu
dChzCiAgICAgICAgIG1fZG93bmxvYWRDbGllbnQgPSBXVEY6Om1vdmUoZG93bmxvYWRDbGllbnQp
OwogfQogCi12b2lkIFdlYlByb2Nlc3NQb29sOjpzZXRQcm9jZXNzTW9kZWwoUHJvY2Vzc01vZGVs
IHByb2Nlc3NNb2RlbCkKLXsKLSAgICAvLyBHdWFyZCBhZ2FpbnN0IEFQSSBtaXN1c2UuCi0gICAg
aWYgKCFtX3Byb2Nlc3Nlcy5pc0VtcHR5KCkpCi0gICAgICAgIENSQVNIKCk7Ci0gICAgaWYgKHBy
b2Nlc3NNb2RlbCAhPSBQcm9jZXNzTW9kZWxTaGFyZWRTZWNvbmRhcnlQcm9jZXNzICYmICFtX21l
c3NhZ2VzVG9JbmplY3RlZEJ1bmRsZVBvc3RlZFRvRW1wdHlDb250ZXh0LmlzRW1wdHkoKSkKLSAg
ICAgICAgQ1JBU0goKTsKLQotICAgIG1fY29uZmlndXJhdGlvbi0+c2V0UHJvY2Vzc01vZGVsKHBy
b2Nlc3NNb2RlbCk7Ci19Ci0KIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnNldE1heGltdW1OdW1iZXJP
ZlByb2Nlc3Nlcyh1bnNpZ25lZCBtYXhpbXVtTnVtYmVyT2ZQcm9jZXNzZXMpCiB7CiAgICAgLy8g
R3VhcmQgYWdhaW5zdCBBUEkgbWlzdXNlLgpAQCAtMzEzLDIzICsyOTQsNyBAQCB2b2lkIFdlYlBy
b2Nlc3NQb29sOjpzZXRNYXhpbXVtTnVtYmVyT2ZQCiAKIElQQzo6Q29ubmVjdGlvbiogV2ViUHJv
Y2Vzc1Bvb2w6Om5ldHdvcmtpbmdQcm9jZXNzQ29ubmVjdGlvbigpCiB7Ci0gICAgc3dpdGNoIChw
cm9jZXNzTW9kZWwoKSkgewotICAgIGNhc2UgUHJvY2Vzc01vZGVsU2hhcmVkU2Vjb25kYXJ5UHJv
Y2VzczoKLSNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQotICAgICAgICBpZiAodXNlc05ldHdv
cmtQcm9jZXNzKCkpCi0gICAgICAgICAgICByZXR1cm4gbV9uZXR3b3JrUHJvY2Vzcy0+Y29ubmVj
dGlvbigpOwotI2VuZGlmCi0gICAgICAgIHJldHVybiBtX3Byb2Nlc3Nlc1swXS0+Y29ubmVjdGlv
bigpOwotICAgIGNhc2UgUHJvY2Vzc01vZGVsTXVsdGlwbGVTZWNvbmRhcnlQcm9jZXNzZXM6Ci0j
aWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKLSAgICAgICAgQVNTRVJUKHVzZXNOZXR3b3JrUHJv
Y2VzcygpKTsKLSAgICAgICAgcmV0dXJuIG1fbmV0d29ya1Byb2Nlc3MtPmNvbm5lY3Rpb24oKTsK
LSNlbHNlCi0gICAgICAgIGJyZWFrOwotI2VuZGlmCi0gICAgfQotICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOwotICAgIHJldHVybiAwOworICAgIHJldHVybiBtX25ldHdvcmtQcm9jZXNzLT5jb25u
ZWN0aW9uKCk7CiB9CiAKIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6Omxhbmd1YWdlQ2hhbmdlZCh2b2lk
KiBjb250ZXh0KQpAQCAtMzQwLDggKzMwNSw4IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6Omxhbmd1
YWdlQ2hhbmdlZCh2b2kKIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6Omxhbmd1YWdlQ2hhbmdlZCgpCiB7
CiAgICAgc2VuZFRvQWxsUHJvY2Vzc2VzKE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpVc2VyUHJlZmVy
cmVkTGFuZ3VhZ2VzQ2hhbmdlZCh1c2VyUHJlZmVycmVkTGFuZ3VhZ2VzKCkpKTsKLSNpZiBVU0Uo
U09VUCkgJiYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKLSAgICBpZiAodXNlc05ldHdvcmtQcm9j
ZXNzKCkgJiYgbV9uZXR3b3JrUHJvY2VzcykKKyNpZiBVU0UoU09VUCkKKyAgICBpZiAobV9uZXR3
b3JrUHJvY2VzcykKICAgICAgICAgbV9uZXR3b3JrUHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6TmV0
d29ya1Byb2Nlc3M6OlVzZXJQcmVmZXJyZWRMYW5ndWFnZXNDaGFuZ2VkKHVzZXJQcmVmZXJyZWRM
YW5ndWFnZXMoKSksIDApOwogI2VuZGlmCiB9CkBAIC0zNTYsMjUgKzMyMSw2IEBAIHZvaWQgV2Vi
UHJvY2Vzc1Bvb2w6OnRleHRDaGVja2VyU3RhdGVDaGEKICAgICBzZW5kVG9BbGxQcm9jZXNzZXMo
TWVzc2FnZXM6OldlYlByb2Nlc3M6OlNldFRleHRDaGVja2VyU3RhdGUoVGV4dENoZWNrZXI6OnN0
YXRlKCkpKTsKIH0KIAotdm9pZCBXZWJQcm9jZXNzUG9vbDo6c2V0VXNlc05ldHdvcmtQcm9jZXNz
KGJvb2wgdXNlc05ldHdvcmtQcm9jZXNzKQotewotI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1Mp
Ci0gICAgbV9jb25maWd1cmF0aW9uLT5zZXRVc2VOZXR3b3JrUHJvY2Vzcyh1c2VzTmV0d29ya1By
b2Nlc3MpOwotI2Vsc2UKLSAgICBVTlVTRURfUEFSQU0odXNlc05ldHdvcmtQcm9jZXNzKTsKLSNl
bmRpZgotfQotCi1ib29sIFdlYlByb2Nlc3NQb29sOjp1c2VzTmV0d29ya1Byb2Nlc3MoKSBjb25z
dAotewotI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCi0gICAgcmV0dXJuIG1fY29uZmlndXJh
dGlvbi0+dXNlTmV0d29ya1Byb2Nlc3MoKTsKLSNlbHNlCi0gICAgcmV0dXJuIGZhbHNlOwotI2Vu
ZGlmCi19Ci0KLSNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQogTmV0d29ya1Byb2Nlc3NQcm94
eSYgV2ViUHJvY2Vzc1Bvb2w6OmVuc3VyZU5ldHdvcmtQcm9jZXNzKCkKIHsKICAgICBpZiAobV9u
ZXR3b3JrUHJvY2VzcykKQEAgLTQ1OSw3ICs0MDUsNiBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpn
ZXROZXR3b3JrUHJvY2Vzc0NvCiAKICAgICBtX25ldHdvcmtQcm9jZXNzLT5nZXROZXR3b3JrUHJv
Y2Vzc0Nvbm5lY3Rpb24ocmVwbHkpOwogfQotI2VuZGlmCiAKICNpZiBFTkFCTEUoREFUQUJBU0Vf
UFJPQ0VTUykKIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OmVuc3VyZURhdGFiYXNlUHJvY2VzcygpCkBA
IC01MjcsMTQgKzQ3MiwxMiBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpzZXRBbnlQYWdlR3JvdXBN
aWdoCiB7CiAgICAgbV9pY29uRGF0YWJhc2UtPnNldFByaXZhdGVCcm93c2luZ0VuYWJsZWQocHJp
dmF0ZUJyb3dzaW5nRW5hYmxlZCk7CiAKLSNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQotICAg
IGlmICh1c2VzTmV0d29ya1Byb2Nlc3MoKSAmJiBuZXR3b3JrUHJvY2VzcygpKSB7CisgICAgaWYg
KG5ldHdvcmtQcm9jZXNzKCkpIHsKICAgICAgICAgaWYgKHByaXZhdGVCcm93c2luZ0VuYWJsZWQp
CiAgICAgICAgICAgICBuZXR3b3JrUHJvY2VzcygpLT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJv
Y2Vzczo6RW5zdXJlUHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbihTZXNzaW9uSUQ6OmxlZ2FjeVByaXZh
dGVTZXNzaW9uSUQoKSksIDApOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBuZXR3b3JrUHJv
Y2VzcygpLT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6RGVzdHJveVByaXZhdGVCcm93
c2luZ1Nlc3Npb24oU2Vzc2lvbklEOjpsZWdhY3lQcml2YXRlU2Vzc2lvbklEKCkpLCAwKTsKICAg
ICB9Ci0jZW5kaWYgLy8gRU5BQkxFRChORVRXT1JLX1BST0NFU1MpCiAKICAgICBpZiAocHJpdmF0
ZUJyb3dzaW5nRW5hYmxlZCkKICAgICAgICAgc2VuZFRvQWxsUHJvY2Vzc2VzKE1lc3NhZ2VzOjpX
ZWJQcm9jZXNzOjpFbnN1cmVQcml2YXRlQnJvd3NpbmdTZXNzaW9uKFNlc3Npb25JRDo6bGVnYWN5
UHJpdmF0ZVNlc3Npb25JRCgpKSk7CkBAIC01NjksMjAgKzUxMiw5IEBAIHZvaWQgV2ViUHJvY2Vz
c1Bvb2w6OnByb2Nlc3NEaWRDYWNoZVBhZ2UKICAgICBtX3Byb2Nlc3NXaXRoUGFnZUNhY2hlID0g
cHJvY2VzczsKIH0KIAotV2ViUHJvY2Vzc1Byb3h5JiBXZWJQcm9jZXNzUG9vbDo6ZW5zdXJlU2hh
cmVkV2ViUHJvY2VzcygpCi17Ci0gICAgQVNTRVJUKHByb2Nlc3NNb2RlbCgpID09IFByb2Nlc3NN
b2RlbFNoYXJlZFNlY29uZGFyeVByb2Nlc3MpOwotICAgIGlmIChtX3Byb2Nlc3Nlcy5pc0VtcHR5
KCkpCi0gICAgICAgIGNyZWF0ZU5ld1dlYlByb2Nlc3MoKTsKLSAgICByZXR1cm4gKm1fcHJvY2Vz
c2VzWzBdOwotfQotCiBXZWJQcm9jZXNzUHJveHkmIFdlYlByb2Nlc3NQb29sOjpjcmVhdGVOZXdX
ZWJQcm9jZXNzKCkKIHsKLSNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQotICAgIGlmICh1c2Vz
TmV0d29ya1Byb2Nlc3MoKSkKLSAgICAgICAgZW5zdXJlTmV0d29ya1Byb2Nlc3MoKTsKLSNlbmRp
ZgorICAgIGVuc3VyZU5ldHdvcmtQcm9jZXNzKCk7CiAKICAgICBSZWY8V2ViUHJvY2Vzc1Byb3h5
PiBwcm9jZXNzID0gV2ViUHJvY2Vzc1Byb3h5OjpjcmVhdGUoKnRoaXMpOwogCkBAIC02NDYsNyAr
NTc4LDcgQEAgV2ViUHJvY2Vzc1Byb3h5JiBXZWJQcm9jZXNzUG9vbDo6Y3JlYXRlTgogICAgIC8v
IGljb25EYXRhYmFzZVBhdGggaXMgbm9uLWVtcHR5IGJ5IGRlZmF1bHQsIGJ1dCBtX2ljb25EYXRh
YmFzZSBpc24ndCBlbmFibGVkIGluIFVJIHByb2Nlc3MgdW5sZXNzIHNldERhdGFiYXNlUGF0aCBp
cyBjYWxsZWQgZXhwbGljaXRseS4KICAgICBwYXJhbWV0ZXJzLmljb25EYXRhYmFzZUVuYWJsZWQg
PSAhaWNvbkRhdGFiYXNlUGF0aCgpLmlzRW1wdHkoKTsKIAotICAgIHBhcmFtZXRlcnMudGVybWlu
YXRpb25UaW1lb3V0ID0gKHByb2Nlc3NNb2RlbCgpID09IFByb2Nlc3NNb2RlbFNoYXJlZFNlY29u
ZGFyeVByb2Nlc3MpID8gc2hhcmVkU2Vjb25kYXJ5UHJvY2Vzc1NodXRkb3duVGltZW91dCA6IDA7
CisgICAgcGFyYW1ldGVycy50ZXJtaW5hdGlvblRpbWVvdXQgPSAwOwogCiAgICAgcGFyYW1ldGVy
cy50ZXh0Q2hlY2tlclN0YXRlID0gVGV4dENoZWNrZXI6OnN0YXRlKCk7CiAKQEAgLTY1OSwxMCAr
NTkxLDYgQEAgV2ViUHJvY2Vzc1Byb3h5JiBXZWJQcm9jZXNzUG9vbDo6Y3JlYXRlTgogICAgIHN1
cHBsZW1lbnQ8V2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5PigpLT5wb3B1bGF0ZUNvcHlPZk5v
dGlmaWNhdGlvblBlcm1pc3Npb25zKHBhcmFtZXRlcnMubm90aWZpY2F0aW9uUGVybWlzc2lvbnMp
OwogI2VuZGlmCiAKLSNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQotICAgIHBhcmFtZXRlcnMu
dXNlc05ldHdvcmtQcm9jZXNzID0gdXNlc05ldHdvcmtQcm9jZXNzKCk7Ci0jZW5kaWYKLQogICAg
IHBhcmFtZXRlcnMucGx1Z0luQXV0b1N0YXJ0T3JpZ2luSGFzaGVzID0gbV9wbHVnSW5BdXRvU3Rh
cnRQcm92aWRlci5hdXRvU3RhcnRPcmlnaW5IYXNoZXNDb3B5KCk7CiAgICAgY29weVRvVmVjdG9y
KG1fcGx1Z0luQXV0b1N0YXJ0UHJvdmlkZXIuYXV0b1N0YXJ0T3JpZ2lucygpLCBwYXJhbWV0ZXJz
LnBsdWdJbkF1dG9TdGFydE9yaWdpbnMpOwogCkBAIC03MDYsMTUgKzYzNCw3IEBAIFdlYlByb2Nl
c3NQcm94eSYgV2ViUHJvY2Vzc1Bvb2w6OmNyZWF0ZU4KIAogICAgIG1fcHJvY2Vzc2VzLmFwcGVu
ZChwcm9jZXNzLnB0cigpKTsKIAotICAgIGlmIChwcm9jZXNzTW9kZWwoKSA9PSBQcm9jZXNzTW9k
ZWxTaGFyZWRTZWNvbmRhcnlQcm9jZXNzKSB7Ci0gICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
ICE9IG1fbWVzc2FnZXNUb0luamVjdGVkQnVuZGxlUG9zdGVkVG9FbXB0eUNvbnRleHQuc2l6ZSgp
OyArK2kpIHsKLSAgICAgICAgICAgIGF1dG8mIG1lc3NhZ2VOYW1lQW5kQm9keSA9IG1fbWVzc2Fn
ZXNUb0luamVjdGVkQnVuZGxlUG9zdGVkVG9FbXB0eUNvbnRleHRbaV07Ci0KLSAgICAgICAgICAg
IHByb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlByb2Nlc3M6OkhhbmRsZUluamVjdGVkQnVuZGxl
TWVzc2FnZShtZXNzYWdlTmFtZUFuZEJvZHkuZmlyc3QsIFVzZXJEYXRhKHByb2Nlc3MtPnRyYW5z
Zm9ybU9iamVjdHNUb0hhbmRsZXMobWVzc2FnZU5hbWVBbmRCb2R5LnNlY29uZC5nZXQoKSkuZ2V0
KCkpKSwgMCk7Ci0gICAgICAgIH0KLSAgICAgICAgbV9tZXNzYWdlc1RvSW5qZWN0ZWRCdW5kbGVQ
b3N0ZWRUb0VtcHR5Q29udGV4dC5jbGVhcigpOwotICAgIH0gZWxzZQotICAgICAgICBBU1NFUlQo
bV9tZXNzYWdlc1RvSW5qZWN0ZWRCdW5kbGVQb3N0ZWRUb0VtcHR5Q29udGV4dC5pc0VtcHR5KCkp
OworICAgIEFTU0VSVChtX21lc3NhZ2VzVG9JbmplY3RlZEJ1bmRsZVBvc3RlZFRvRW1wdHlDb250
ZXh0LmlzRW1wdHkoKSk7CiAKICNpZiBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKICAgICAvLyBJ
bml0aWFsaXplIHJlbW90ZSBpbnNwZWN0b3IgY29ubmVjdGlvbiBub3cgdGhhdCB3ZSBoYXZlIGEg
c3ViLXByb2Nlc3MgdGhhdCBpcyBob3N0aW5nIG9uZSBvZiBvdXIgd2ViIHZpZXdzLgpAQCAtNzk4
LDI4ICs3MTgsMTIgQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6ZGlzY29ubmVjdFByb2Nlc3MoVwog
CiAgICAgLy8gRklYTUUgKE11bHRpLVdlYlByb2Nlc3MpOiA8cmRhcjovL3Byb2JsZW0vMTIyMzk3
NjU+IFNvbWUgb2YgdGhlIGludmFsaWRhdGlvbiBjYWxscyBiZWxvdyBhcmUgc3RpbGwgbmVjZXNz
YXJ5IGluIG11bHRpLXByb2Nlc3MgbW9kZSwgYnV0IHRoZXkgc2hvdWxkIG9ubHkgYWZmZWN0IGRh
dGEgc3RydWN0dXJlcyBwZXJ0YWluaW5nIHRvIHRoZSBwcm9jZXNzIGJlaW5nIGRpc2Nvbm5lY3Rl
ZC4KICAgICAvLyBDbGVhcmluZyBldmVyeXRoaW5nIGNhdXNlcyBhc3NlcnRpb24gZmFpbHVyZXMs
IHNvIGl0J3MgbGVzcyB0cm91YmxlIHRvIHNraXAgdGhhdCBmb3Igbm93LgotICAgIGlmIChwcm9j
ZXNzTW9kZWwoKSAhPSBQcm9jZXNzTW9kZWxTaGFyZWRTZWNvbmRhcnlQcm9jZXNzKSB7Ci0gICAg
ICAgIFJlZlB0cjxXZWJQcm9jZXNzUHJveHk+IHByb3RlY3QocHJvY2Vzcyk7Ci0gICAgICAgIGlm
IChtX3Byb2Nlc3NXaXRoUGFnZUNhY2hlID09IHByb2Nlc3MpCi0gICAgICAgICAgICBtX3Byb2Nl
c3NXaXRoUGFnZUNhY2hlID0gMDsKLQotICAgICAgICBzdGF0aWNfY2FzdDxXZWJDb250ZXh0U3Vw
cGxlbWVudCo+KHN1cHBsZW1lbnQ8V2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk+KCkpLT5wcm9j
ZXNzRGlkQ2xvc2UocHJvY2Vzcyk7Ci0KLSAgICAgICAgbV9wcm9jZXNzZXMucmVtb3ZlRmlyc3Qo
cHJvY2Vzcyk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBXZWJDb250ZXh0U3VwcGxl
bWVudE1hcDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBtX3N1cHBsZW1lbnRzLmJlZ2luKCk7Ci0gICAg
V2ViQ29udGV4dFN1cHBsZW1lbnRNYXA6OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IG1fc3VwcGxlbWVu
dHMuZW5kKCk7Ci0gICAgZm9yICg7IGl0ICE9IGVuZDsgKytpdCkKLSAgICAgICAgaXQtPnZhbHVl
LT5wcm9jZXNzRGlkQ2xvc2UocHJvY2Vzcyk7Ci0KLSAgICAvLyBUaGUgdmVjdG9yIG1heSBoYXZl
IHRoZSBsYXN0IHJlZmVyZW5jZSB0byBwcm9jZXNzIHByb3h5LCB3aGljaCBpbiB0dXJuIG1heSBo
YXZlIHRoZSBsYXN0IHJlZmVyZW5jZSB0byB0aGUgY29udGV4dC4KLSAgICAvLyBTaW5jZSB2ZWN0
b3IgZWxlbWVudHMgYXJlIGRlc3Ryb3llZCBpbiBwbGFjZSwgd2Ugd291bGQgcmVjdXJzZSBpbnRv
IFdlYlByb2Nlc3NQcm94eSBkZXN0cnVjdG9yCi0gICAgLy8gaWYgaXQgd2VyZSBpbnZva2VkIGZy
b20gVmVjdG9yOjpyZW1vdmUoKS4gUmVmUHRyIGRlbGF5cyBkZXN0cnVjdGlvbiB1bnRpbCBpdCdz
IHNhZmUuCiAgICAgUmVmUHRyPFdlYlByb2Nlc3NQcm94eT4gcHJvdGVjdChwcm9jZXNzKTsKICAg
ICBpZiAobV9wcm9jZXNzV2l0aFBhZ2VDYWNoZSA9PSBwcm9jZXNzKQotICAgICAgICBtX3Byb2Nl
c3NXaXRoUGFnZUNhY2hlID0gbnVsbHB0cjsKKyAgICAgICAgbV9wcm9jZXNzV2l0aFBhZ2VDYWNo
ZSA9IDA7CisKKyAgICBzdGF0aWNfY2FzdDxXZWJDb250ZXh0U3VwcGxlbWVudCo+KHN1cHBsZW1l
bnQ8V2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk+KCkpLT5wcm9jZXNzRGlkQ2xvc2UocHJvY2Vz
cyk7CisKICAgICBtX3Byb2Nlc3Nlcy5yZW1vdmVGaXJzdChwcm9jZXNzKTsKIH0KIApAQCAtODUx
LDE4ICs3NTUsMTQgQEAgUmVmPFdlYlBhZ2VQcm94eT4gV2ViUHJvY2Vzc1Bvb2w6OmNyZWF0ZQog
ICAgIH0KIAogICAgIFJlZlB0cjxXZWJQcm9jZXNzUHJveHk+IHByb2Nlc3M7Ci0gICAgaWYgKHBy
b2Nlc3NNb2RlbCgpID09IFByb2Nlc3NNb2RlbFNoYXJlZFNlY29uZGFyeVByb2Nlc3MpIHsKLSAg
ICAgICAgcHJvY2VzcyA9ICZlbnN1cmVTaGFyZWRXZWJQcm9jZXNzKCk7Ci0gICAgfSBlbHNlIHsK
LSAgICAgICAgaWYgKG1faGF2ZUluaXRpYWxFbXB0eVByb2Nlc3MpIHsKLSAgICAgICAgICAgIHBy
b2Nlc3MgPSBtX3Byb2Nlc3Nlcy5sYXN0KCk7Ci0gICAgICAgICAgICBtX2hhdmVJbml0aWFsRW1w
dHlQcm9jZXNzID0gZmFsc2U7Ci0gICAgICAgIH0gZWxzZSBpZiAocGFnZUNvbmZpZ3VyYXRpb24t
PnJlbGF0ZWRQYWdlKCkpIHsKLSAgICAgICAgICAgIC8vIFNoYXJpbmcgcHJvY2Vzc2VzLCBlLmcu
IHdoZW4gY3JlYXRpbmcgdGhlIHBhZ2UgdmlhIHdpbmRvdy5vcGVuKCkuCi0gICAgICAgICAgICBw
cm9jZXNzID0gJnBhZ2VDb25maWd1cmF0aW9uLT5yZWxhdGVkUGFnZSgpLT5wcm9jZXNzKCk7Ci0g
ICAgICAgIH0gZWxzZQotICAgICAgICAgICAgcHJvY2VzcyA9ICZjcmVhdGVOZXdXZWJQcm9jZXNz
UmVzcGVjdGluZ1Byb2Nlc3NDb3VudExpbWl0KCk7Ci0gICAgfQorICAgIGlmIChtX2hhdmVJbml0
aWFsRW1wdHlQcm9jZXNzKSB7CisgICAgICAgIHByb2Nlc3MgPSBtX3Byb2Nlc3Nlcy5sYXN0KCk7
CisgICAgICAgIG1faGF2ZUluaXRpYWxFbXB0eVByb2Nlc3MgPSBmYWxzZTsKKyAgICB9IGVsc2Ug
aWYgKHBhZ2VDb25maWd1cmF0aW9uLT5yZWxhdGVkUGFnZSgpKSB7CisgICAgICAgIC8vIFNoYXJp
bmcgcHJvY2Vzc2VzLCBlLmcuIHdoZW4gY3JlYXRpbmcgdGhlIHBhZ2UgdmlhIHdpbmRvdy5vcGVu
KCkuCisgICAgICAgIHByb2Nlc3MgPSAmcGFnZUNvbmZpZ3VyYXRpb24tPnJlbGF0ZWRQYWdlKCkt
PnByb2Nlc3MoKTsKKyAgICB9IGVsc2UKKyAgICAgICAgcHJvY2VzcyA9ICZjcmVhdGVOZXdXZWJQ
cm9jZXNzUmVzcGVjdGluZ1Byb2Nlc3NDb3VudExpbWl0KCk7CiAKICAgICByZXR1cm4gcHJvY2Vz
cy0+Y3JlYXRlV2ViUGFnZShwYWdlQ2xpZW50LCBXVEY6Om1vdmUocGFnZUNvbmZpZ3VyYXRpb24p
KTsKIH0KQEAgLTg3MCwxOCArNzcwLDE2IEBAIFJlZjxXZWJQYWdlUHJveHk+IFdlYlByb2Nlc3NQ
b29sOjpjcmVhdGUKIERvd25sb2FkUHJveHkqIFdlYlByb2Nlc3NQb29sOjpkb3dubG9hZChXZWJQ
YWdlUHJveHkqIGluaXRpYXRpbmdQYWdlLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3Qp
CiB7CiAgICAgRG93bmxvYWRQcm94eSogZG93bmxvYWRQcm94eSA9IGNyZWF0ZURvd25sb2FkUHJv
eHkocmVxdWVzdCk7Ci0gICAgdWludDY0X3QgaW5pdGlhdGluZ1BhZ2VJRCA9IGluaXRpYXRpbmdQ
YWdlID8gaW5pdGlhdGluZ1BhZ2UtPnBhZ2VJRCgpIDogMDsKICAgICBTZXNzaW9uSUQgc2Vzc2lv
bklEID0gaW5pdGlhdGluZ1BhZ2UgPyBpbml0aWF0aW5nUGFnZS0+c2Vzc2lvbklEKCkgOiBTZXNz
aW9uSUQ6OmRlZmF1bHRTZXNzaW9uSUQoKTsKIAotI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1Mp
Ci0gICAgaWYgKHVzZXNOZXR3b3JrUHJvY2VzcygpICYmIG5ldHdvcmtQcm9jZXNzKCkpIHsKKyAg
ICBpZiAobmV0d29ya1Byb2Nlc3MoKSkgewogICAgICAgICAvLyBGSVhNRSAoTmV0d29ya1Byb2Nl
c3MpOiBSZXBsaWNhdGUgd2hhdGV2ZXIgRnJhbWVMb2FkZXI6OnNldE9yaWdpbmFsVVJMRm9yRG93
bmxvYWRSZXF1ZXN0IGRvZXMgd2l0aCB0aGUgcmVxdWVzdCBoZXJlLgogICAgICAgICBuZXR3b3Jr
UHJvY2VzcygpLT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6RG93bmxvYWRSZXF1ZXN0
KHNlc3Npb25JRCwgZG93bmxvYWRQcm94eS0+ZG93bmxvYWRJRCgpLCByZXF1ZXN0KSwgMCk7CiAg
ICAgICAgIHJldHVybiBkb3dubG9hZFByb3h5OwogICAgIH0KLSNlbmRpZgogCi0gICAgbV9wcm9j
ZXNzZXNbMF0tPnNlbmQoTWVzc2FnZXM6OldlYlByb2Nlc3M6OkRvd25sb2FkUmVxdWVzdChzZXNz
aW9uSUQsIGRvd25sb2FkUHJveHktPmRvd25sb2FkSUQoKSwgaW5pdGlhdGluZ1BhZ2VJRCwgcmVx
dWVzdCksIDApOworICAgIC8vIEZJWE1FOiBtYWtlIG5ldHdvcmtQcm9jZXNzKCkgcmV0dXJuIGEg
cmVmZXJlbmNlIHNvIHRoaXMgaXMgbm90IG5lY2Vzc2FyeS4KKyAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKICAgICByZXR1cm4gZG93bmxvYWRQcm94eTsKIH0KIApAQCAtODkzLDI1ICs3OTEsMTgg
QEAgRG93bmxvYWRQcm94eSogV2ViUHJvY2Vzc1Bvb2w6OnJlc3VtZURvdwogICAgIGlmICghcGF0
aC5pc0VtcHR5KCkpCiAgICAgICAgIFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZShwYXRo
LCBTYW5kYm94RXh0ZW5zaW9uOjpSZWFkV3JpdGUsIHNhbmRib3hFeHRlbnNpb25IYW5kbGUpOwog
Ci0jaWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKLSAgICBpZiAodXNlc05ldHdvcmtQcm9jZXNz
KCkgJiYgbmV0d29ya1Byb2Nlc3MoKSkgeworICAgIGlmIChuZXR3b3JrUHJvY2VzcygpKSB7CiAg
ICAgICAgIG5ldHdvcmtQcm9jZXNzKCktPnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpS
ZXN1bWVEb3dubG9hZChkb3dubG9hZFByb3h5LT5kb3dubG9hZElEKCksIHJlc3VtZURhdGEtPmRh
dGFSZWZlcmVuY2UoKSwgcGF0aCwgc2FuZGJveEV4dGVuc2lvbkhhbmRsZSksIDApOwogICAgICAg
ICByZXR1cm4gZG93bmxvYWRQcm94eTsKICAgICB9Ci0jZW5kaWYKIAotICAgIG1fcHJvY2Vzc2Vz
WzBdLT5zZW5kKE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpSZXN1bWVEb3dubG9hZChkb3dubG9hZFBy
b3h5LT5kb3dubG9hZElEKCksIHJlc3VtZURhdGEtPmRhdGFSZWZlcmVuY2UoKSwgcGF0aCwgc2Fu
ZGJveEV4dGVuc2lvbkhhbmRsZSksIDApOworICAgIC8vIEZJWE1FOiBtYWtlIG5ldHdvcmtQcm9j
ZXNzKCkgcmV0dXJuIGEgcmVmZXJlbmNlIHNvIHRoaXMgaXMgbm90IG5lY2Vzc2FyeS4KKyAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICByZXR1cm4gZG93bmxvYWRQcm94eTsKIH0KIAogdm9p
ZCBXZWJQcm9jZXNzUG9vbDo6cG9zdE1lc3NhZ2VUb0luamVjdGVkQnVuZGxlKGNvbnN0IFN0cmlu
ZyYgbWVzc2FnZU5hbWUsIEFQSTo6T2JqZWN0KiBtZXNzYWdlQm9keSkKIHsKLSAgICBpZiAobV9w
cm9jZXNzZXMuaXNFbXB0eSgpKSB7Ci0gICAgICAgIGlmIChwcm9jZXNzTW9kZWwoKSA9PSBQcm9j
ZXNzTW9kZWxTaGFyZWRTZWNvbmRhcnlQcm9jZXNzKQotICAgICAgICAgICAgbV9tZXNzYWdlc1Rv
SW5qZWN0ZWRCdW5kbGVQb3N0ZWRUb0VtcHR5Q29udGV4dC5hcHBlbmQoc3RkOjptYWtlX3BhaXIo
bWVzc2FnZU5hbWUsIG1lc3NhZ2VCb2R5KSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KICAg
ICBmb3IgKGF1dG8mIHByb2Nlc3MgOiBtX3Byb2Nlc3NlcykgewogICAgICAgICAvLyBGSVhNRTog
UmV0dXJuIGVhcmx5IGlmIHRoZSBtZXNzYWdlIGJvZHkgY29udGFpbnMgYW55IHJlZmVyZW5jZXMg
dG8gV0tQYWdlUmVmcy9XS0ZyYW1lUmVmcyBldGMuIHNpbmNlIHRoZXkncmUgbG9jYWwgdG8gYSBw
cm9jZXNzLgogICAgICAgICBwcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpIYW5k
bGVJbmplY3RlZEJ1bmRsZU1lc3NhZ2UobWVzc2FnZU5hbWUsIFVzZXJEYXRhKHByb2Nlc3MtPnRy
YW5zZm9ybU9iamVjdHNUb0hhbmRsZXMobWVzc2FnZUJvZHkpLmdldCgpKSksIDApOwpAQCAtOTQw
LDcgKzgzMSw2IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnNldEFkZGl0aW9uYWxQbHVnaW4KIH0K
ICNlbmRpZiAvLyBFTkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQSSkKIAotI2lmIEVOQUJMRShORVRX
T1JLX1BST0NFU1MpCiBQbGF0Zm9ybVByb2Nlc3NJZGVudGlmaWVyIFdlYlByb2Nlc3NQb29sOjpu
ZXR3b3JrUHJvY2Vzc0lkZW50aWZpZXIoKQogewogICAgIGlmICghbV9uZXR3b3JrUHJvY2VzcykK
QEAgLTk0OCw3ICs4MzgsNiBAQCBQbGF0Zm9ybVByb2Nlc3NJZGVudGlmaWVyIFdlYlByb2Nlc3NQ
b29sCiAKICAgICByZXR1cm4gbV9uZXR3b3JrUHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKTsK
IH0KLSNlbmRpZgogCiB2b2lkIFdlYlByb2Nlc3NQb29sOjpzZXRBbHdheXNVc2VzQ29tcGxleFRl
eHRDb2RlUGF0aChib29sIGFsd2F5c1VzZUNvbXBsZXhUZXh0KQogewpAQCAtOTg4LDE1ICs4Nzcs
OSBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpzZXREb21haW5SZWxheGF0aW9uCiAKIHZvaWQgV2Vi
UHJvY2Vzc1Bvb2w6OnNldENhbkhhbmRsZUhUVFBTU2VydmVyVHJ1c3RFdmFsdWF0aW9uKGJvb2wg
dmFsdWUpCiB7Ci0jaWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKICAgICBtX2NhbkhhbmRsZUhU
VFBTU2VydmVyVHJ1c3RFdmFsdWF0aW9uID0gdmFsdWU7Ci0gICAgaWYgKHVzZXNOZXR3b3JrUHJv
Y2VzcygpICYmIG1fbmV0d29ya1Byb2Nlc3MpIHsKKyAgICBpZiAobV9uZXR3b3JrUHJvY2VzcykK
ICAgICAgICAgbV9uZXR3b3JrUHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6
OlNldENhbkhhbmRsZUhUVFBTU2VydmVyVHJ1c3RFdmFsdWF0aW9uKHZhbHVlKSwgMCk7Ci0gICAg
ICAgIHJldHVybjsKLSAgICB9Ci0jZWxzZQotICAgIFVOVVNFRF9QQVJBTSh2YWx1ZSk7Ci0jZW5k
aWYKIH0KIAogdm9pZCBXZWJQcm9jZXNzUG9vbDo6cmVnaXN0ZXJVUkxTY2hlbWVBc0xvY2FsKGNv
bnN0IFN0cmluZyYgdXJsU2NoZW1lKQpAQCAtMTA2NCwxMCArOTQ3LDggQEAgdm9pZCBXZWJQcm9j
ZXNzUG9vbDo6c2V0Q2FjaGVNb2RlbChDYWNoZQogICAgIG1fY29uZmlndXJhdGlvbi0+c2V0Q2Fj
aGVNb2RlbChjYWNoZU1vZGVsKTsKICAgICBzZW5kVG9BbGxQcm9jZXNzZXMoTWVzc2FnZXM6Oldl
YlByb2Nlc3M6OlNldENhY2hlTW9kZWwoY2FjaGVNb2RlbCkpOwogCi0jaWYgRU5BQkxFKE5FVFdP
UktfUFJPQ0VTUykKLSAgICBpZiAodXNlc05ldHdvcmtQcm9jZXNzKCkgJiYgbV9uZXR3b3JrUHJv
Y2VzcykKKyAgICBpZiAobV9uZXR3b3JrUHJvY2VzcykKICAgICAgICAgbV9uZXR3b3JrUHJvY2Vz
cy0+c2VuZChNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OlNldENhY2hlTW9kZWwoY2FjaGVNb2Rl
bCksIDApOwotI2VuZGlmCiB9CiAKIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnNldERlZmF1bHRSZXF1
ZXN0VGltZW91dEludGVydmFsKGRvdWJsZSB0aW1lb3V0SW50ZXJ2YWwpCkBAIC0xMDc3LDE1ICs5
NTgsOSBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpzZXREZWZhdWx0UmVxdWVzdFRpCiAKIERvd25s
b2FkUHJveHkqIFdlYlByb2Nlc3NQb29sOjpjcmVhdGVEb3dubG9hZFByb3h5KGNvbnN0IFJlc291
cmNlUmVxdWVzdCYgcmVxdWVzdCkKIHsKLSNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQotICAg
IGlmICh1c2VzTmV0d29ya1Byb2Nlc3MoKSkgewotICAgICAgICBlbnN1cmVOZXR3b3JrUHJvY2Vz
cygpOwotICAgICAgICBBU1NFUlQobV9uZXR3b3JrUHJvY2Vzcyk7Ci0gICAgICAgIHJldHVybiBt
X25ldHdvcmtQcm9jZXNzLT5jcmVhdGVEb3dubG9hZFByb3h5KHJlcXVlc3QpOwotICAgIH0KLSNl
bmRpZgotCi0gICAgcmV0dXJuIGVuc3VyZVNoYXJlZFdlYlByb2Nlc3MoKS5jcmVhdGVEb3dubG9h
ZFByb3h5KHJlcXVlc3QpOworICAgIGVuc3VyZU5ldHdvcmtQcm9jZXNzKCk7CisgICAgQVNTRVJU
KG1fbmV0d29ya1Byb2Nlc3MpOworICAgIHJldHVybiBtX25ldHdvcmtQcm9jZXNzLT5jcmVhdGVE
b3dubG9hZFByb3h5KHJlcXVlc3QpOwogfQogCiB2b2lkIFdlYlByb2Nlc3NQb29sOjphZGRNZXNz
YWdlUmVjZWl2ZXIoSVBDOjpTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFtZSwgSVBD
OjpNZXNzYWdlUmVjZWl2ZXImIG1lc3NhZ2VSZWNlaXZlcikKQEAgLTExODIsMTIgKzEwNTcsMTAg
QEAgU3RyaW5nIFdlYlByb2Nlc3NQb29sOjpjb29raWVTdG9yYWdlRGlyZQogdm9pZCBXZWJQcm9j
ZXNzUG9vbDo6dXNlVGVzdGluZ05ldHdvcmtTZXNzaW9uKCkKIHsKICAgICBBU1NFUlQobV9wcm9j
ZXNzZXMuaXNFbXB0eSgpKTsKLSNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQogICAgIEFTU0VS
VCghbV9uZXR3b3JrUHJvY2Vzcyk7CiAKICAgICBpZiAobV9uZXR3b3JrUHJvY2VzcykKICAgICAg
ICAgcmV0dXJuOwotI2VuZGlmCiAKICAgICBpZiAoIW1fcHJvY2Vzc2VzLmlzRW1wdHkoKSkKICAg
ICAgICAgcmV0dXJuOwpAQCAtMTE5NywyMiArMTA3MCwxOCBAQCB2b2lkIFdlYlByb2Nlc3NQb29s
Ojp1c2VUZXN0aW5nTmV0d29ya1NlCiAKIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OmFsbG93U3BlY2lm
aWNIVFRQU0NlcnRpZmljYXRlRm9ySG9zdChjb25zdCBXZWJDZXJ0aWZpY2F0ZUluZm8qIGNlcnRp
ZmljYXRlLCBjb25zdCBTdHJpbmcmIGhvc3QpCiB7Ci0jaWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VT
UykKLSAgICBpZiAodXNlc05ldHdvcmtQcm9jZXNzKCkgJiYgbV9uZXR3b3JrUHJvY2Vzcykgewor
ICAgIGlmIChtX25ldHdvcmtQcm9jZXNzKSB7CiAgICAgICAgIG1fbmV0d29ya1Byb2Nlc3MtPnNl
bmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpBbGxvd1NwZWNpZmljSFRUUFNDZXJ0aWZpY2F0
ZUZvckhvc3QoY2VydGlmaWNhdGUtPmNlcnRpZmljYXRlSW5mbygpLCBob3N0KSwgMCk7CiAgICAg
ICAgIHJldHVybjsKICAgICB9Ci0jZW5kaWYKIAogI2lmIFVTRShTT1VQKQogICAgIG1fcHJvY2Vz
c2VzWzBdLT5zZW5kKE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpBbGxvd1NwZWNpZmljSFRUUFNDZXJ0
aWZpY2F0ZUZvckhvc3QoY2VydGlmaWNhdGUtPmNlcnRpZmljYXRlSW5mbygpLCBob3N0KSwgMCk7
CiAgICAgcmV0dXJuOwotI2Vsc2UKLSAgICBVTlVTRURfUEFSQU0oY2VydGlmaWNhdGUpOwotICAg
IFVOVVNFRF9QQVJBTShob3N0KTsKICNlbmRpZgogCiAjaWYgIVBMQVRGT1JNKElPUykKKyAgICAv
LyBGSVhNRTogV2h5IGlzIHRoaXMgb25seSBvbiBpT1M/IENhbiB3ZSByZW1vdmUgaXQ/CiAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7CiAjZW5kaWYKIH0KQEAgLTEyNTMsNDAgKzExMjIsMTkgQEAg
dm9pZCBXZWJQcm9jZXNzUG9vbDo6Z2V0U3RhdGlzdGljcyh1aW50MwogCiB2b2lkIFdlYlByb2Nl
c3NQb29sOjpyZXF1ZXN0V2ViQ29udGVudFN0YXRpc3RpY3MoU3RhdGlzdGljc1JlcXVlc3QqIHJl
cXVlc3QpCiB7Ci0gICAgaWYgKHByb2Nlc3NNb2RlbCgpID09IFByb2Nlc3NNb2RlbFNoYXJlZFNl
Y29uZGFyeVByb2Nlc3MpIHsKLSAgICAgICAgaWYgKG1fcHJvY2Vzc2VzLmlzRW1wdHkoKSkKLSAg
ICAgICAgICAgIHJldHVybjsKLSAgICAgICAgCi0gICAgICAgIHVpbnQ2NF90IHJlcXVlc3RJRCA9
IHJlcXVlc3QtPmFkZE91dHN0YW5kaW5nUmVxdWVzdCgpOwotICAgICAgICBtX3N0YXRpc3RpY3NS
ZXF1ZXN0cy5zZXQocmVxdWVzdElELCByZXF1ZXN0KTsKLSAgICAgICAgbV9wcm9jZXNzZXNbMF0t
PnNlbmQoTWVzc2FnZXM6OldlYlByb2Nlc3M6OkdldFdlYkNvcmVTdGF0aXN0aWNzKHJlcXVlc3RJ
RCksIDApOwotCi0gICAgfSBlbHNlIHsKLSAgICAgICAgLy8gRklYTUUgKE11bHRpLVdlYlByb2Nl
c3MpIDxyZGFyOi8vcHJvYmxlbS8xMzIwMDA1OT46IE1ha2UgZ2V0dGluZyBzdGF0aXN0aWNzIGZy
b20gbXVsdGlwbGUgV2ViUHJvY2Vzc2VzIHdvcmsuCi0gICAgfQorICAgIC8vIEZJWE1FIChNdWx0
aS1XZWJQcm9jZXNzKSA8cmRhcjovL3Byb2JsZW0vMTMyMDAwNTk+OiBNYWtlIGdldHRpbmcgc3Rh
dGlzdGljcyBmcm9tIG11bHRpcGxlIFdlYlByb2Nlc3NlcyB3b3JrLgogfQogCiB2b2lkIFdlYlBy
b2Nlc3NQb29sOjpyZXF1ZXN0TmV0d29ya2luZ1N0YXRpc3RpY3MoU3RhdGlzdGljc1JlcXVlc3Qq
IHJlcXVlc3QpCiB7Ci0gICAgYm9vbCBuZXR3b3JrUHJvY2Vzc1VuYXZhaWxhYmxlOwotI2lmIEVO
QUJMRShORVRXT1JLX1BST0NFU1MpCi0gICAgbmV0d29ya1Byb2Nlc3NVbmF2YWlsYWJsZSA9ICF1
c2VzTmV0d29ya1Byb2Nlc3MoKSB8fCAhbV9uZXR3b3JrUHJvY2VzczsKLSNlbHNlCi0gICAgbmV0
d29ya1Byb2Nlc3NVbmF2YWlsYWJsZSA9IHRydWU7Ci0jZW5kaWYKLQotICAgIGlmIChuZXR3b3Jr
UHJvY2Vzc1VuYXZhaWxhYmxlKSB7CisgICAgaWYgKCFtX25ldHdvcmtQcm9jZXNzKSB7CiAgICAg
ICAgIExPR19FUlJPUigiQXR0ZW1wdCB0byBnZXQgTmV0d29ya1Byb2Nlc3Mgc3RhdGlzdGljcyBi
dXQgdGhlIE5ldHdvcmtQcm9jZXNzIGlzIHVuYXZhaWxhYmxlIik7CiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAKLSNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQogICAgIHVpbnQ2NF90IHJlcXVl
c3RJRCA9IHJlcXVlc3QtPmFkZE91dHN0YW5kaW5nUmVxdWVzdCgpOwogICAgIG1fc3RhdGlzdGlj
c1JlcXVlc3RzLnNldChyZXF1ZXN0SUQsIHJlcXVlc3QpOwogICAgIG1fbmV0d29ya1Byb2Nlc3Mt
PnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpHZXROZXR3b3JrUHJvY2Vzc1N0YXRpc3Rp
Y3MocmVxdWVzdElEKSwgMCk7Ci0jZWxzZQotICAgIFVOVVNFRF9QQVJBTShyZXF1ZXN0KTsKLSNl
bmRpZgogfQogCiB2b2lkIFdlYlByb2Nlc3NQb29sOjpoYW5kbGVNZXNzYWdlKElQQzo6Q29ubmVj
dGlvbiYgY29ubmVjdGlvbiwgY29uc3QgU3RyaW5nJiBtZXNzYWdlTmFtZSwgY29uc3QgV2ViS2l0
OjpVc2VyRGF0YSYgbWVzc2FnZUJvZHkpCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
V2ViUHJvY2Vzc1Bvb2wuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
V2ViUHJvY2Vzc1Bvb2wuaAkocmV2aXNpb24gMTkyNjAxKQorKysgU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1dlYlByb2Nlc3NQb29sLmgJKHdvcmtpbmcgY29weSkKQEAgLTM0LDkgKzM0LDkgQEAK
ICNpbmNsdWRlICJHZW5lcmljQ2FsbGJhY2suaCIKICNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIu
aCIKICNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXJNYXAuaCIKKyNpbmNsdWRlICJOZXR3b3JrUHJv
Y2Vzc1Byb3h5LmgiCiAjaW5jbHVkZSAiUGx1Z0luQXV0b1N0YXJ0UHJvdmlkZXIuaCIKICNpbmNs
dWRlICJQbHVnaW5JbmZvU3RvcmUuaCIKLSNpbmNsdWRlICJQcm9jZXNzTW9kZWwuaCIKICNpbmNs
dWRlICJQcm9jZXNzVGhyb3R0bGVyLmgiCiAjaW5jbHVkZSAiU3RhdGlzdGljc1JlcXVlc3QuaCIK
ICNpbmNsdWRlICJWaXNpdGVkTGlua1N0b3JlLmgiCkBAIC01OSwxMCArNTksNiBAQAogI2luY2x1
ZGUgIkRhdGFiYXNlUHJvY2Vzc1Byb3h5LmgiCiAjZW5kaWYKIAotI2lmIEVOQUJMRShORVRXT1JL
X1BST0NFU1MpCi0jaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3NQcm94eS5oIgotI2VuZGlmCi0KICNp
ZiBFTkFCTEUoTUVESUFfU0VTU0lPTikKICNpbmNsdWRlICJXZWJNZWRpYVNlc3Npb25Gb2N1c01h
bmFnZXIuaCIKICNlbmRpZgpAQCAtODYsMTQgKzgyLDEyIEBAIGNsYXNzIFdlYkNvbnRleHRTdXBw
bGVtZW50OwogY2xhc3MgV2ViSWNvbkRhdGFiYXNlOwogY2xhc3MgV2ViUGFnZUdyb3VwOwogY2xh
c3MgV2ViUGFnZVByb3h5Oworc3RydWN0IE5ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJz
Owogc3RydWN0IFN0YXRpc3RpY3NEYXRhOwogc3RydWN0IFdlYlByb2Nlc3NDcmVhdGlvblBhcmFt
ZXRlcnM7CiAgICAgCiB0eXBlZGVmIEdlbmVyaWNDYWxsYmFjazxBUEk6OkRpY3Rpb25hcnkqPiBE
aWN0aW9uYXJ5Q2FsbGJhY2s7CiAKLSNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQotc3RydWN0
IE5ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOwotI2VuZGlmCiAKICNpZiBQTEFURk9S
TShDT0NPQSkKIGludCBuZXR3b3JrUHJvY2Vzc0xhdGVuY3lRT1MoKTsKQEAgLTE0Miw5ICsxMzYs
NiBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRIaXN0b3J5Q2xpZW50KHN0ZDo6dW5pcXVlX3B0cjxB
UEk6OkxlZ2FjeUNvbnRleHRIaXN0b3J5Q2xpZW50Pik7CiAgICAgdm9pZCBzZXREb3dubG9hZENs
aWVudChzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpEb3dubG9hZENsaWVudD4pOwogCi0gICAgdm9pZCBz
ZXRQcm9jZXNzTW9kZWwoUHJvY2Vzc01vZGVsKTsgLy8gQ2FuIG9ubHkgYmUgY2FsbGVkIHdoZW4g
dGhlcmUgYXJlIG5vIHByb2Nlc3NlcyBydW5uaW5nLgotICAgIFByb2Nlc3NNb2RlbCBwcm9jZXNz
TW9kZWwoKSBjb25zdCB7IHJldHVybiBtX2NvbmZpZ3VyYXRpb24tPnByb2Nlc3NNb2RlbCgpOyB9
Ci0KICAgICB2b2lkIHNldE1heGltdW1OdW1iZXJPZlByb2Nlc3Nlcyh1bnNpZ25lZCk7IC8vIENh
biBvbmx5IGJlIGNhbGxlZCB3aGVuIHRoZXJlIGFyZSBubyBwcm9jZXNzZXMgcnVubmluZy4KICAg
ICB1bnNpZ25lZCBtYXhpbXVtTnVtYmVyT2ZQcm9jZXNzZXMoKSBjb25zdCB7IHJldHVybiAhbV9j
b25maWd1cmF0aW9uLT5tYXhpbXVtUHJvY2Vzc0NvdW50KCkgPyBVSU5UX01BWCA6IG1fY29uZmln
dXJhdGlvbi0+bWF4aW11bVByb2Nlc3NDb3VudCgpOyB9CiAKQEAgLTE5Myw5ICsxODQsNyBAQCBw
dWJsaWM6CiAgICAgdm9pZCBjbGVhclBsdWdpbkNsaWVudFBvbGljaWVzKCk7CiAjZW5kaWYKIAot
I2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCiAgICAgUGxhdGZvcm1Qcm9jZXNzSWRlbnRpZmll
ciBuZXR3b3JrUHJvY2Vzc0lkZW50aWZpZXIoKTsKLSNlbmRpZgogCiAgICAgdm9pZCBzZXRBbHdh
eXNVc2VzQ29tcGxleFRleHRDb2RlUGF0aChib29sKTsKICAgICB2b2lkIHNldFNob3VsZFVzZUZv
bnRTbW9vdGhpbmcoYm9vbCk7CkBAIC0yODYsMTYgKzI3NSwxMSBAQCBwdWJsaWM6CiAKICAgICAv
LyBOZXR3b3JrIFByb2Nlc3MgTWFuYWdlbWVudAogCi0gICAgdm9pZCBzZXRVc2VzTmV0d29ya1By
b2Nlc3MoYm9vbCk7Ci0gICAgYm9vbCB1c2VzTmV0d29ya1Byb2Nlc3MoKSBjb25zdDsKLQotI2lm
IEVOQUJMRShORVRXT1JLX1BST0NFU1MpCiAgICAgTmV0d29ya1Byb2Nlc3NQcm94eSYgZW5zdXJl
TmV0d29ya1Byb2Nlc3MoKTsKICAgICBOZXR3b3JrUHJvY2Vzc1Byb3h5KiBuZXR3b3JrUHJvY2Vz
cygpIHsgcmV0dXJuIG1fbmV0d29ya1Byb2Nlc3MuZ2V0KCk7IH0KICAgICB2b2lkIG5ldHdvcmtQ
cm9jZXNzQ3Jhc2hlZChOZXR3b3JrUHJvY2Vzc1Byb3h5Kik7CiAKICAgICB2b2lkIGdldE5ldHdv
cmtQcm9jZXNzQ29ubmVjdGlvbihQYXNzUmVmUHRyPE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6
OkdldE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbjo6RGVsYXllZFJlcGx5Pik7Ci0jZW5kaWYKIAog
I2lmIEVOQUJMRShEQVRBQkFTRV9QUk9DRVNTKQogICAgIHZvaWQgZW5zdXJlRGF0YWJhc2VQcm9j
ZXNzKCk7CkBAIC0zNzgsOSArMzYyLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHJlcXVlc3RXZWJD
b250ZW50U3RhdGlzdGljcyhTdGF0aXN0aWNzUmVxdWVzdCopOwogICAgIHZvaWQgcmVxdWVzdE5l
dHdvcmtpbmdTdGF0aXN0aWNzKFN0YXRpc3RpY3NSZXF1ZXN0Kik7CiAKLSNpZiBFTkFCTEUoTkVU
V09SS19QUk9DRVNTKQogICAgIHZvaWQgcGxhdGZvcm1Jbml0aWFsaXplTmV0d29ya1Byb2Nlc3Mo
TmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMmKTsKLSNlbmRpZgogCiAgICAgdm9pZCBo
YW5kbGVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIGNvbnN0IFN0cmluZyYgbWVzc2FnZU5hbWUs
IGNvbnN0IFVzZXJEYXRhJiBtZXNzYWdlQm9keSk7CiAgICAgdm9pZCBoYW5kbGVTeW5jaHJvbm91
c01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgY29uc3QgU3RyaW5nJiBtZXNzYWdlTmFtZSwgY29u
c3QgVXNlckRhdGEmIG1lc3NhZ2VCb2R5LCBVc2VyRGF0YSYgcmV0dXJuVXNlckRhdGEpOwpAQCAt
NTAwLDExICs0ODIsOSBAQCBwcml2YXRlOgogCiAgICAgYm9vbCBtX3Byb2Nlc3NUZXJtaW5hdGlv
bkVuYWJsZWQ7CiAKLSNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQogICAgIGJvb2wgbV9jYW5I
YW5kbGVIVFRQU1NlcnZlclRydXN0RXZhbHVhdGlvbjsKICAgICBib29sIG1fZGlkTmV0d29ya1By
b2Nlc3NDcmFzaDsKICAgICBSZWZQdHI8TmV0d29ya1Byb2Nlc3NQcm94eT4gbV9uZXR3b3JrUHJv
Y2VzczsKLSNlbmRpZgogCiAjaWYgRU5BQkxFKERBVEFCQVNFX1BST0NFU1MpCiAgICAgUmVmUHRy
PERhdGFiYXNlUHJvY2Vzc1Byb3h5PiBtX2RhdGFiYXNlUHJvY2VzczsKQEAgLTUzOSw1NSArNTE5
LDE1IEBAIHByaXZhdGU6CiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgogdm9pZCBXZWJQcm9jZXNzUG9v
bDo6c2VuZFRvTmV0d29ya2luZ1Byb2Nlc3MoVCYmIG1lc3NhZ2UpCiB7Ci0gICAgc3dpdGNoIChw
cm9jZXNzTW9kZWwoKSkgewotICAgIGNhc2UgUHJvY2Vzc01vZGVsU2hhcmVkU2Vjb25kYXJ5UHJv
Y2VzczoKLSNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQotICAgICAgICBpZiAodXNlc05ldHdv
cmtQcm9jZXNzKCkpIHsKLSAgICAgICAgICAgIGlmIChtX25ldHdvcmtQcm9jZXNzICYmIG1fbmV0
d29ya1Byb2Nlc3MtPmNhblNlbmRNZXNzYWdlKCkpCi0gICAgICAgICAgICAgICAgbV9uZXR3b3Jr
UHJvY2Vzcy0+c2VuZChzdGQ6OmZvcndhcmQ8VD4obWVzc2FnZSksIDApOwotICAgICAgICAgICAg
cmV0dXJuOwotICAgICAgICB9Ci0jZW5kaWYKLSAgICAgICAgaWYgKCFtX3Byb2Nlc3Nlcy5pc0Vt
cHR5KCkgJiYgbV9wcm9jZXNzZXNbMF0tPmNhblNlbmRNZXNzYWdlKCkpCi0gICAgICAgICAgICBt
X3Byb2Nlc3Nlc1swXS0+c2VuZChzdGQ6OmZvcndhcmQ8VD4obWVzc2FnZSksIDApOwotICAgICAg
ICByZXR1cm47Ci0gICAgY2FzZSBQcm9jZXNzTW9kZWxNdWx0aXBsZVNlY29uZGFyeVByb2Nlc3Nl
czoKLSNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQotICAgICAgICBpZiAobV9uZXR3b3JrUHJv
Y2VzcyAmJiBtX25ldHdvcmtQcm9jZXNzLT5jYW5TZW5kTWVzc2FnZSgpKQotICAgICAgICAgICAg
bV9uZXR3b3JrUHJvY2Vzcy0+c2VuZChzdGQ6OmZvcndhcmQ8VD4obWVzc2FnZSksIDApOwotICAg
ICAgICByZXR1cm47Ci0jZWxzZQotICAgICAgICBicmVhazsKLSNlbmRpZgotICAgIH0KLSAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICBpZiAobV9uZXR3b3JrUHJvY2VzcyAmJiBtX25ldHdv
cmtQcm9jZXNzLT5jYW5TZW5kTWVzc2FnZSgpKQorICAgICAgICBtX25ldHdvcmtQcm9jZXNzLT5z
ZW5kKHN0ZDo6Zm9yd2FyZDxUPihtZXNzYWdlKSwgMCk7CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1l
IFQ+CiB2b2lkIFdlYlByb2Nlc3NQb29sOjpzZW5kVG9OZXR3b3JraW5nUHJvY2Vzc1JlbGF1bmNo
aW5nSWZOZWNlc3NhcnkoVCYmIG1lc3NhZ2UpCiB7Ci0gICAgc3dpdGNoIChwcm9jZXNzTW9kZWwo
KSkgewotICAgIGNhc2UgUHJvY2Vzc01vZGVsU2hhcmVkU2Vjb25kYXJ5UHJvY2VzczoKLSNpZiBF
TkFCTEUoTkVUV09SS19QUk9DRVNTKQotICAgICAgICBpZiAodXNlc05ldHdvcmtQcm9jZXNzKCkp
IHsKLSAgICAgICAgICAgIGVuc3VyZU5ldHdvcmtQcm9jZXNzKCk7Ci0gICAgICAgICAgICBtX25l
dHdvcmtQcm9jZXNzLT5zZW5kKHN0ZDo6Zm9yd2FyZDxUPihtZXNzYWdlKSwgMCk7Ci0gICAgICAg
ICAgICByZXR1cm47Ci0gICAgICAgIH0KLSNlbmRpZgotICAgICAgICBlbnN1cmVTaGFyZWRXZWJQ
cm9jZXNzKCk7Ci0gICAgICAgIG1fcHJvY2Vzc2VzWzBdLT5zZW5kKHN0ZDo6Zm9yd2FyZDxUPiht
ZXNzYWdlKSwgMCk7Ci0gICAgICAgIHJldHVybjsKLSAgICBjYXNlIFByb2Nlc3NNb2RlbE11bHRp
cGxlU2Vjb25kYXJ5UHJvY2Vzc2VzOgotI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCi0gICAg
ICAgIGVuc3VyZU5ldHdvcmtQcm9jZXNzKCk7Ci0gICAgICAgIG1fbmV0d29ya1Byb2Nlc3MtPnNl
bmQoc3RkOjpmb3J3YXJkPFQ+KG1lc3NhZ2UpLCAwKTsKLSAgICAgICAgcmV0dXJuOwotI2Vsc2UK
LSAgICAgICAgYnJlYWs7Ci0jZW5kaWYKLSAgICB9Ci0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
CisgICAgZW5zdXJlTmV0d29ya1Byb2Nlc3MoKTsKKyAgICBtX25ldHdvcmtQcm9jZXNzLT5zZW5k
KHN0ZDo6Zm9yd2FyZDxUPihtZXNzYWdlKSwgMCk7CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+
CkBAIC02MTYsMTcgKzU1NiwxMiBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgogdm9pZCBXZWJQcm9j
ZXNzUG9vbDo6c2VuZFRvQWxsUHJvY2Vzc2VzUmVsYXVuY2hpbmdUaGVtSWZOZWNlc3NhcnkoY29u
c3QgVCYgbWVzc2FnZSkKIHsKICAgICAvLyBGSVhNRSAoTXVsdGktV2ViUHJvY2Vzcyk6IFdlYlBy
b2Nlc3NQb29sIGRvZXNuJ3QgdHJhY2sgcHJvY2Vzc2VzIHRoYXQgaGF2ZSBleGl0ZWQsIHNvIGl0
IGNhbm5vdCByZWxhdW5jaCB0aGVzZS4gUGVyaGFwcyB0aGlzIGZ1bmN0aW9uYWxpdHkgd29uJ3Qg
YmUgbmVlZGVkIGluIHRoaXMgbW9kZS4KLSAgICBpZiAocHJvY2Vzc01vZGVsKCkgPT0gUHJvY2Vz
c01vZGVsU2hhcmVkU2Vjb25kYXJ5UHJvY2VzcykKLSAgICAgICAgZW5zdXJlU2hhcmVkV2ViUHJv
Y2VzcygpOwogICAgIHNlbmRUb0FsbFByb2Nlc3NlcyhtZXNzYWdlKTsKIH0KIAogdGVtcGxhdGU8
dHlwZW5hbWUgVD4KIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnNlbmRUb09uZVByb2Nlc3MoVCYmIG1l
c3NhZ2UpCiB7Ci0gICAgaWYgKHByb2Nlc3NNb2RlbCgpID09IFByb2Nlc3NNb2RlbFNoYXJlZFNl
Y29uZGFyeVByb2Nlc3MpCi0gICAgICAgIGVuc3VyZVNoYXJlZFdlYlByb2Nlc3MoKTsKLQogICAg
IGJvb2wgbWVzc2FnZVNlbnQgPSBmYWxzZTsKICAgICBzaXplX3QgcHJvY2Vzc0NvdW50ID0gbV9w
cm9jZXNzZXMuc2l6ZSgpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcHJvY2Vzc0NvdW50
OyArK2kpIHsKQEAgLTYzOCw3ICs1NzMsNyBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpzZW5kVG9P
bmVQcm9jZXNzKFQmCiAgICAgICAgIH0KICAgICB9CiAKLSAgICBpZiAoIW1lc3NhZ2VTZW50ICYm
IHByb2Nlc3NNb2RlbCgpID09IFByb2Nlc3NNb2RlbE11bHRpcGxlU2Vjb25kYXJ5UHJvY2Vzc2Vz
KSB7CisgICAgaWYgKCFtZXNzYWdlU2VudCkgewogICAgICAgICB3YXJtSW5pdGlhbFByb2Nlc3Mo
KTsKICAgICAgICAgUmVmUHRyPFdlYlByb2Nlc3NQcm94eT4gcHJvY2VzcyA9IG1fcHJvY2Vzc2Vz
Lmxhc3QoKTsKICAgICAgICAgaWYgKHByb2Nlc3MtPmNhblNlbmRNZXNzYWdlKCkpCkluZGV4OiBT
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcAkocmV2aXNpb24g
MTkyNjAxKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTI1Niw3ICsyNTYsNyBAQCB2b2lkIFdlYlByb2Nlc3NQcm94eTo6
cmVtb3ZlV2ViUGFnZSh1aW50CiAKICAgICAvLyBJZiB0aGlzIHdhcyB0aGUgbGFzdCBXZWJQYWdl
IG9wZW4gaW4gdGhhdCB3ZWIgcHJvY2VzcywgYW5kIHdlIGhhdmUgbm8gb3RoZXIgcmVhc29uIHRv
IGtlZXAgaXQgYWxpdmUsIGxldCBpdCBnby4KICAgICAvLyBXZSBvbmx5IGFsbG93IHRoaXMgd2hl
biB1c2luZyBhIG5ldHdvcmsgcHJvY2VzcywgYXMgb3RoZXJ3aXNlIHRoZSBXZWJQcm9jZXNzIG5l
ZWRzIHRvIHByZXNlcnZlIGl0cyBzZXNzaW9uIHN0YXRlLgotICAgIGlmICghbV9wcm9jZXNzUG9v
bC0+dXNlc05ldHdvcmtQcm9jZXNzKCkgfHwgc3RhdGUoKSA9PSBTdGF0ZTo6VGVybWluYXRlZCB8
fCAhY2FuVGVybWluYXRlQ2hpbGRQcm9jZXNzKCkpCisgICAgaWYgKHN0YXRlKCkgPT0gU3RhdGU6
OlRlcm1pbmF0ZWQgfHwgIWNhblRlcm1pbmF0ZUNoaWxkUHJvY2VzcygpKQogICAgICAgICByZXR1
cm47CiAKICAgICBzaHV0RG93bigpOwpAQCAtNDI3LDEyICs0MjcsMTAgQEAgdm9pZCBXZWJQcm9j
ZXNzUHJveHk6OmdldFBsdWdpblByb2Nlc3NDbwogfQogI2VuZGlmCiAKLSNpZiBFTkFCTEUoTkVU
V09SS19QUk9DRVNTKQogdm9pZCBXZWJQcm9jZXNzUHJveHk6OmdldE5ldHdvcmtQcm9jZXNzQ29u
bmVjdGlvbihQYXNzUmVmUHRyPE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6OkdldE5ldHdvcmtQ
cm9jZXNzQ29ubmVjdGlvbjo6RGVsYXllZFJlcGx5PiByZXBseSkKIHsKICAgICBtX3Byb2Nlc3NQ
b29sLT5nZXROZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24ocmVwbHkpOwogfQotI2VuZGlmIC8vIEVO
QUJMRShORVRXT1JLX1BST0NFU1MpCiAKICNpZiBFTkFCTEUoREFUQUJBU0VfUFJPQ0VTUykKIHZv
aWQgV2ViUHJvY2Vzc1Byb3h5OjpnZXREYXRhYmFzZVByb2Nlc3NDb25uZWN0aW9uKFBhc3NSZWZQ
dHI8TWVzc2FnZXM6OldlYlByb2Nlc3NQcm94eTo6R2V0RGF0YWJhc2VQcm9jZXNzQ29ubmVjdGlv
bjo6RGVsYXllZFJlcGx5PiByZXBseSkKQEAgLTcwMiwxOCArNzAwLDYgQEAgdm9pZCBXZWJQcm9j
ZXNzUHJveHk6OnVwZGF0ZVRleHRDaGVja2VyUwogICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQ
cm9jZXNzOjpTZXRUZXh0Q2hlY2tlclN0YXRlKFRleHRDaGVja2VyOjpzdGF0ZSgpKSwgMCk7CiB9
CiAKLURvd25sb2FkUHJveHkqIFdlYlByb2Nlc3NQcm94eTo6Y3JlYXRlRG93bmxvYWRQcm94eShj
b25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCi17Ci0jaWYgRU5BQkxFKE5FVFdPUktfUFJP
Q0VTUykKLSAgICBBU1NFUlQoIW1fcHJvY2Vzc1Bvb2wtPnVzZXNOZXR3b3JrUHJvY2VzcygpKTsK
LSNlbmRpZgotCi0gICAgaWYgKCFtX2Rvd25sb2FkUHJveHlNYXApCi0gICAgICAgIG1fZG93bmxv
YWRQcm94eU1hcCA9IHN0ZDo6bWFrZV91bmlxdWU8RG93bmxvYWRQcm94eU1hcD4odGhpcyk7Ci0K
LSAgICByZXR1cm4gbV9kb3dubG9hZFByb3h5TWFwLT5jcmVhdGVEb3dubG9hZFByb3h5KG1fcHJv
Y2Vzc1Bvb2wsIHJlcXVlc3QpOwotfQotCiB2b2lkIFdlYlByb2Nlc3NQcm94eTo6ZGlkU2F2ZVRv
UGFnZUNhY2hlKCkKIHsKICAgICBtX3Byb2Nlc3NQb29sLT5wcm9jZXNzRGlkQ2FjaGVQYWdlKHRo
aXMpOwpAQCAtOTQ3LDcgKzkzMyw2IEBAIHZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpkaWRDYW5jZWxQ
cm9jZXNzU3UKICAgICBtX3Rocm90dGxlci5kaWRDYW5jZWxQcm9jZXNzU3VzcGVuc2lvbigpOwog
fQogCi0jaWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKIHZvaWQgV2ViUHJvY2Vzc1Byb3h5Ojpy
ZWluc3RhdGVOZXR3b3JrUHJvY2Vzc0Fzc2VydGlvblN0YXRlKE5ldHdvcmtQcm9jZXNzUHJveHkm
IG5ld05ldHdvcmtQcm9jZXNzUHJveHkpCiB7CiAjaWYgUExBVEZPUk0oSU9TKQpAQCAtOTYyLDEx
ICs5NDcsMTAgQEAgdm9pZCBXZWJQcm9jZXNzUHJveHk6OnJlaW5zdGF0ZU5ldHdvcmtQcgogICAg
IFVOVVNFRF9QQVJBTShuZXdOZXR3b3JrUHJvY2Vzc1Byb3h5KTsKICNlbmRpZgogfQotI2VuZGlm
CiAKIHZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpkaWRTZXRBc3NlcnRpb25TdGF0ZShBc3NlcnRpb25T
dGF0ZSBzdGF0ZSkKIHsKLSNpZiBQTEFURk9STShJT1MpICYmIEVOQUJMRShORVRXT1JLX1BST0NF
U1MpCisjaWYgUExBVEZPUk0oSU9TKQogICAgIEFTU0VSVCghbV9iYWNrZ3JvdW5kVG9rZW5Gb3JO
ZXR3b3JrUHJvY2VzcyB8fCAhbV9mb3JlZ3JvdW5kVG9rZW5Gb3JOZXR3b3JrUHJvY2Vzcyk7CiAK
ICAgICBzd2l0Y2ggKHN0YXRlKSB7CkBAIC05NzgsMTQgKzk2MiwxMiBAQCB2b2lkIFdlYlByb2Nl
c3NQcm94eTo6ZGlkU2V0QXNzZXJ0aW9uU3RhCiAgICAgICAgIGJyZWFrOwogCiAgICAgY2FzZSBB
c3NlcnRpb25TdGF0ZTo6QmFja2dyb3VuZDoKLSAgICAgICAgaWYgKHByb2Nlc3NQb29sKCkudXNl
c05ldHdvcmtQcm9jZXNzKCkpCi0gICAgICAgICAgICBtX2JhY2tncm91bmRUb2tlbkZvck5ldHdv
cmtQcm9jZXNzID0gcHJvY2Vzc1Bvb2woKS5lbnN1cmVOZXR3b3JrUHJvY2VzcygpLnRocm90dGxl
cigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCk7CisgICAgICAgIG1fYmFja2dyb3VuZFRva2Vu
Rm9yTmV0d29ya1Byb2Nlc3MgPSBwcm9jZXNzUG9vbCgpLmVuc3VyZU5ldHdvcmtQcm9jZXNzKCku
dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKTsKICAgICAgICAgbV9mb3JlZ3Jv
dW5kVG9rZW5Gb3JOZXR3b3JrUHJvY2VzcyA9IG51bGxwdHI7CiAgICAgICAgIGJyZWFrOwogICAg
IAogICAgIGNhc2UgQXNzZXJ0aW9uU3RhdGU6OkZvcmVncm91bmQ6Ci0gICAgICAgIGlmIChwcm9j
ZXNzUG9vbCgpLnVzZXNOZXR3b3JrUHJvY2VzcygpKQotICAgICAgICAgICAgbV9mb3JlZ3JvdW5k
VG9rZW5Gb3JOZXR3b3JrUHJvY2VzcyA9IHByb2Nlc3NQb29sKCkuZW5zdXJlTmV0d29ya1Byb2Nl
c3MoKS50aHJvdHRsZXIoKS5mb3JlZ3JvdW5kQWN0aXZpdHlUb2tlbigpOworICAgICAgICBtX2Zv
cmVncm91bmRUb2tlbkZvck5ldHdvcmtQcm9jZXNzID0gcHJvY2Vzc1Bvb2woKS5lbnN1cmVOZXR3
b3JrUHJvY2VzcygpLnRocm90dGxlcigpLmZvcmVncm91bmRBY3Rpdml0eVRva2VuKCk7CiAgICAg
ICAgIG1fYmFja2dyb3VuZFRva2VuRm9yTmV0d29ya1Byb2Nlc3MgPSBudWxscHRyOwogICAgICAg
ICBmb3IgKGF1dG8mIHBhZ2UgOiBtX3BhZ2VNYXAudmFsdWVzKCkpCiAgICAgICAgICAgICBwYWdl
LT5wcm9jZXNzV2lsbEJlY29tZUZvcmVncm91bmQoKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmgJKHJldmlzaW9uIDE5MjYwMSkKKysrIFNvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaAkod29ya2luZyBjb3B5KQpAQCAtMTUy
LDkgKzE1Miw3IEBAIHB1YmxpYzoKIAogICAgIFByb2Nlc3NUaHJvdHRsZXImIHRocm90dGxlcigp
IHsgcmV0dXJuIG1fdGhyb3R0bGVyOyB9CiAKLSNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQog
ICAgIHZvaWQgcmVpbnN0YXRlTmV0d29ya1Byb2Nlc3NBc3NlcnRpb25TdGF0ZShOZXR3b3JrUHJv
Y2Vzc1Byb3h5Jik7Ci0jZW5kaWYKIAogcHJpdmF0ZToKICAgICBleHBsaWNpdCBXZWJQcm9jZXNz
UHJveHkoV2ViUHJvY2Vzc1Bvb2wmKTsKQEAgLTE4Niw5ICsxODQsNyBAQCBwcml2YXRlOgogI2lm
IEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJKQogICAgIHZvaWQgZ2V0UGx1Z2luUHJvY2Vzc0Nv
bm5lY3Rpb24odWludDY0X3QgcGx1Z2luUHJvY2Vzc1Rva2VuLCBQYXNzUmVmUHRyPE1lc3NhZ2Vz
OjpXZWJQcm9jZXNzUHJveHk6OkdldFBsdWdpblByb2Nlc3NDb25uZWN0aW9uOjpEZWxheWVkUmVw
bHk+KTsKICNlbmRpZgotI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCiAgICAgdm9pZCBnZXRO
ZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oUGFzc1JlZlB0cjxNZXNzYWdlczo6V2ViUHJvY2Vzc1By
b3h5OjpHZXROZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb246OkRlbGF5ZWRSZXBseT4pOwotI2VuZGlm
CiAjaWYgRU5BQkxFKERBVEFCQVNFX1BST0NFU1MpCiAgICAgdm9pZCBnZXREYXRhYmFzZVByb2Nl
c3NDb25uZWN0aW9uKFBhc3NSZWZQdHI8TWVzc2FnZXM6OldlYlByb2Nlc3NQcm94eTo6R2V0RGF0
YWJhc2VQcm9jZXNzQ29ubmVjdGlvbjo6RGVsYXllZFJlcGx5Pik7CiAjZW5kaWYKQEAgLTI1Myw3
ICsyNDksNyBAQCBwcml2YXRlOgogICAgIGludCBtX251bWJlck9mVGltZXNTdWRkZW5UZXJtaW5h
dGlvbldhc0Rpc2FibGVkOwogICAgIFByb2Nlc3NUaHJvdHRsZXIgbV90aHJvdHRsZXI7CiAgICAg
UHJvY2Vzc1Rocm90dGxlcjo6QmFja2dyb3VuZEFjdGl2aXR5VG9rZW4gbV90b2tlbkZvckhvbGRp
bmdMb2NrZWRGaWxlczsKLSNpZiBQTEFURk9STShJT1MpICYmIEVOQUJMRShORVRXT1JLX1BST0NF
U1MpCisjaWYgUExBVEZPUk0oSU9TKQogICAgIFByb2Nlc3NUaHJvdHRsZXI6OkZvcmVncm91bmRB
Y3Rpdml0eVRva2VuIG1fZm9yZWdyb3VuZFRva2VuRm9yTmV0d29ya1Byb2Nlc3M7CiAgICAgUHJv
Y2Vzc1Rocm90dGxlcjo6QmFja2dyb3VuZEFjdGl2aXR5VG9rZW4gbV9iYWNrZ3JvdW5kVG9rZW5G
b3JOZXR3b3JrUHJvY2VzczsKICNlbmRpZgpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1dlYlByb2Nlc3NQcm94eS5tZXNzYWdlcy5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluCShyZXZpc2lvbiAxOTI2MDEp
CisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmlu
CSh3b3JraW5nIGNvcHkpCkBAIC0zOCw5ICszOCw3IEBAIG1lc3NhZ2VzIC0+IFdlYlByb2Nlc3NQ
cm94eSBMZWdhY3lSZWNlaXYKICAgICBHZXRQbHVnaW5zKGJvb2wgcmVmcmVzaCkgLT4gKFZlY3Rv
cjxXZWJDb3JlOjpQbHVnaW5JbmZvPiBwbHVnaW5zLCBWZWN0b3I8V2ViQ29yZTo6UGx1Z2luSW5m
bz4gYXBwbGljYXRpb25QbHVnaW5zKQogICAgIEdldFBsdWdpblByb2Nlc3NDb25uZWN0aW9uKHVp
bnQ2NF90IHBsdWdpblByb2Nlc3NUb2tlbikgLT4gKElQQzo6QXR0YWNobWVudCBjb25uZWN0aW9u
SGFuZGxlLCBib29sIHN1cHBvcnRzQXN5bmNocm9ub3VzSW5pdGlhbGl6YXRpb24pIERlbGF5ZWQK
ICNlbmRpZgotI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCiAgICAgR2V0TmV0d29ya1Byb2Nl
c3NDb25uZWN0aW9uKCkgLT4gKElQQzo6QXR0YWNobWVudCBjb25uZWN0aW9uSGFuZGxlKSBEZWxh
eWVkCi0jZW5kaWYKICNpZiBFTkFCTEUoREFUQUJBU0VfUFJPQ0VTUykKICAgICBHZXREYXRhYmFz
ZVByb2Nlc3NDb25uZWN0aW9uKCkgLT4gKElQQzo6QXR0YWNobWVudCBjb25uZWN0aW9uSGFuZGxl
KSBEZWxheWVkCiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQVBJ
UHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL0FQSVByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5jcHAJKHJldmlzaW9u
IDE5MjYwMSkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQVBJUHJvY2Vzc1Bvb2xD
b25maWd1cmF0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDEsNyArNDEsNiBAQCBSZWY8UHJv
Y2Vzc1Bvb2xDb25maWd1cmF0aW9uPiBQcm9jZXNzUG9vCiAgICAgYXV0byBjb25maWd1cmF0aW9u
ID0gUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uOjpjcmVhdGUoKTsKIAogICAgIGNvbmZpZ3VyYXRp
b24tPm1fc2hvdWxkSGF2ZUxlZ2FjeURhdGFTdG9yZSA9IHRydWU7Ci0gICAgY29uZmlndXJhdGlv
bi0+bV9wcm9jZXNzTW9kZWwgPSBXZWJLaXQ6OlByb2Nlc3NNb2RlbFNoYXJlZFNlY29uZGFyeVBy
b2Nlc3M7CiAgICAgY29uZmlndXJhdGlvbi0+bV91c2VOZXR3b3JrUHJvY2VzcyA9IGZhbHNlOwog
ICAgIGNvbmZpZ3VyYXRpb24tPm1fY2FjaGVNb2RlbCA9IFdlYktpdDo6Q2FjaGVNb2RlbERvY3Vt
ZW50Vmlld2VyOwogCkBAIC03NCw3ICs3Myw2IEBAIFJlZjxQcm9jZXNzUG9vbENvbmZpZ3VyYXRp
b24+IFByb2Nlc3NQb28KICAgICBhdXRvIGNvcHkgPSB0aGlzLT5jcmVhdGUoKTsKIAogICAgIGNv
cHktPm1fc2hvdWxkSGF2ZUxlZ2FjeURhdGFTdG9yZSA9IHRoaXMtPm1fc2hvdWxkSGF2ZUxlZ2Fj
eURhdGFTdG9yZTsKLSAgICBjb3B5LT5tX3Byb2Nlc3NNb2RlbCA9IHRoaXMtPm1fcHJvY2Vzc01v
ZGVsOwogICAgIGNvcHktPm1fdXNlTmV0d29ya1Byb2Nlc3MgPSB0aGlzLT5tX3VzZU5ldHdvcmtQ
cm9jZXNzOwogICAgIGNvcHktPm1fbWF4aW11bVByb2Nlc3NDb3VudCA9IHRoaXMtPm1fbWF4aW11
bVByb2Nlc3NDb3VudDsKICAgICBjb3B5LT5tX2NhY2hlTW9kZWwgPSB0aGlzLT5tX2NhY2hlTW9k
ZWw7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0FQSVByb2Nlc3NQb29sQ29u
ZmlndXJhdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
QVBJUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmgJKHJldmlzaW9uIDE5MjYwMSkKKysrIFNvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQVBJUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmgJKHdv
cmtpbmcgY29weSkKQEAgLTI4LDcgKzI4LDYgQEAKIAogI2luY2x1ZGUgIkFQSU9iamVjdC5oIgog
I2luY2x1ZGUgIkNhY2hlTW9kZWwuaCIKLSNpbmNsdWRlICJQcm9jZXNzTW9kZWwuaCIKICNpbmNs
dWRlIDx3dGYvUmVmLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogI2luY2x1ZGUgPHd0Zi90
ZXh0L1dURlN0cmluZy5oPgpAQCAtNDgsOSArNDcsNiBAQCBwdWJsaWM6CiAgICAgYm9vbCBzaG91
bGRIYXZlTGVnYWN5RGF0YVN0b3JlKCkgY29uc3QgeyByZXR1cm4gbV9zaG91bGRIYXZlTGVnYWN5
RGF0YVN0b3JlOyB9CiAgICAgdm9pZCBzZXRTaG91bGRIYXZlTGVnYWN5RGF0YVN0b3JlKGJvb2wg
c2hvdWxkSGF2ZUxlZ2FjeURhdGFTdG9yZSkgeyBtX3Nob3VsZEhhdmVMZWdhY3lEYXRhU3RvcmUg
PSBzaG91bGRIYXZlTGVnYWN5RGF0YVN0b3JlOyB9CiAKLSAgICBXZWJLaXQ6OlByb2Nlc3NNb2Rl
bCBwcm9jZXNzTW9kZWwoKSBjb25zdCB7IHJldHVybiBtX3Byb2Nlc3NNb2RlbDsgfQotICAgIHZv
aWQgc2V0UHJvY2Vzc01vZGVsKFdlYktpdDo6UHJvY2Vzc01vZGVsIHByb2Nlc3NNb2RlbCkgeyBt
X3Byb2Nlc3NNb2RlbCA9IHByb2Nlc3NNb2RlbDsgfSAKLQogICAgIGJvb2wgdXNlTmV0d29ya1By
b2Nlc3MoKSBjb25zdCB7IHJldHVybiBtX3VzZU5ldHdvcmtQcm9jZXNzOyB9CiAgICAgdm9pZCBz
ZXRVc2VOZXR3b3JrUHJvY2Vzcyhib29sIHVzZU5ldHdvcmtQcm9jZXNzKSB7IG1fdXNlTmV0d29y
a1Byb2Nlc3MgPSB1c2VOZXR3b3JrUHJvY2VzczsgfSAKIApAQCAtOTYsNyArOTIsNiBAQCBwdWJs
aWM6CiBwcml2YXRlOgogICAgIGJvb2wgbV9zaG91bGRIYXZlTGVnYWN5RGF0YVN0b3JlIHsgZmFs
c2UgfTsKIAotICAgIFdlYktpdDo6UHJvY2Vzc01vZGVsIG1fcHJvY2Vzc01vZGVsIHsgV2ViS2l0
OjpQcm9jZXNzTW9kZWxNdWx0aXBsZVNlY29uZGFyeVByb2Nlc3NlcyB9OwogICAgIGJvb2wgbV91
c2VOZXR3b3JrUHJvY2VzcyB7IHRydWUgfTsKICAgICB1bnNpZ25lZCBtX21heGltdW1Qcm9jZXNz
Q291bnQgeyAwIH07CiAgICAgV2ViS2l0OjpDYWNoZU1vZGVsIG1fY2FjaGVNb2RlbCB7IFdlYktp
dDo6Q2FjaGVNb2RlbFByaW1hcnlXZWJCcm93c2VyIH07CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL0FQSVNlc3Npb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvQVBJU2Vzc2lvbi5jcHAJKHJldmlzaW9uIDE5MjYwMSkKKysrIFNvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQVBJU2Vzc2lvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTI4LDEwICsyOCw4IEBACiAKICNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgogCi0jaWYgRU5BQkxF
KE5FVFdPUktfUFJPQ0VTUykKICNpbmNsdWRlICJOZXR3b3JrUHJvY2Vzc01lc3NhZ2VzLmgiCiAj
aW5jbHVkZSAiV2ViUHJvY2Vzc1Bvb2wuaCIKLSNlbmRpZgogCiBuYW1lc3BhY2UgQVBJIHsKIApA
QCAtODAsMTIgKzc4LDEwIEBAIFdlYkNvcmU6OlNlc3Npb25JRCBTZXNzaW9uOjpnZXRJRCgpIGNv
bnMKIAogU2Vzc2lvbjo6flNlc3Npb24oKQogewotI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1Mp
CiAgICAgaWYgKG1fc2Vzc2lvbklELmlzRXBoZW1lcmFsKCkpIHsKICAgICAgICAgZm9yIChhdXRv
JiBwcm9jZXNzUG9vbCA6IFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OmFsbFByb2Nlc3NQb29scygp
KQogICAgICAgICAgICAgcHJvY2Vzc1Bvb2wtPnNlbmRUb05ldHdvcmtpbmdQcm9jZXNzKE1lc3Nh
Z2VzOjpOZXR3b3JrUHJvY2Vzczo6RGVzdHJveVByaXZhdGVCcm93c2luZ1Nlc3Npb24obV9zZXNz
aW9uSUQpKTsKICAgICB9Ci0jZW5kaWYKIH0KIAogfSAvLyBuYW1lc3BhY2UgQVBJCkluZGV4OiBT
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tBUElDYXN0LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLQVBJQ2FzdC5oCShyZXZpc2lvbiAxOTI2
MDEpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tBUElDYXN0LmgJKHdvcmtp
bmcgY29weSkKQEAgLTMyLDcgKzMyLDYgQEAKICNpbmNsdWRlICJIVFRQQ29va2llQWNjZXB0UG9s
aWN5LmgiCiAjaW5jbHVkZSAiSW5qZWN0ZWRCdW5kbGVIaXRUZXN0UmVzdWx0TWVkaWFUeXBlLmgi
CiAjaW5jbHVkZSAiUGx1Z2luTW9kdWxlSW5mby5oIgotI2luY2x1ZGUgIlByb2Nlc3NNb2RlbC5o
IgogI2luY2x1ZGUgIlJlc291cmNlQ2FjaGVzVG9DbGVhci5oIgogI2luY2x1ZGUgIldLQnVuZGxl
SGl0VGVzdFJlc3VsdC5oIgogI2luY2x1ZGUgIldLQ29udGV4dC5oIgpAQCAtMjMwLDMxICsyMjks
NiBAQCBpbmxpbmUgV0tDYWNoZU1vZGVsIHRvQVBJKENhY2hlTW9kZWwgY2FjCiAgICAgcmV0dXJu
IGtXS0NhY2hlTW9kZWxEb2N1bWVudFZpZXdlcjsKIH0KIAotaW5saW5lIFByb2Nlc3NNb2RlbCB0
b1Byb2Nlc3NNb2RlbChXS1Byb2Nlc3NNb2RlbCB3a1Byb2Nlc3NNb2RlbCkKLXsKLSAgICBzd2l0
Y2ggKHdrUHJvY2Vzc01vZGVsKSB7Ci0gICAgY2FzZSBrV0tQcm9jZXNzTW9kZWxTaGFyZWRTZWNv
bmRhcnlQcm9jZXNzOgotICAgICAgICByZXR1cm4gUHJvY2Vzc01vZGVsU2hhcmVkU2Vjb25kYXJ5
UHJvY2VzczsKLSAgICBjYXNlIGtXS1Byb2Nlc3NNb2RlbE11bHRpcGxlU2Vjb25kYXJ5UHJvY2Vz
c2VzOgotICAgICAgICByZXR1cm4gUHJvY2Vzc01vZGVsTXVsdGlwbGVTZWNvbmRhcnlQcm9jZXNz
ZXM7Ci0gICAgfQotCi0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIFByb2Nl
c3NNb2RlbFNoYXJlZFNlY29uZGFyeVByb2Nlc3M7Ci19Ci0KLWlubGluZSBXS1Byb2Nlc3NNb2Rl
bCB0b0FQSShQcm9jZXNzTW9kZWwgcHJvY2Vzc01vZGVsKQotewotICAgIHN3aXRjaCAocHJvY2Vz
c01vZGVsKSB7Ci0gICAgY2FzZSBQcm9jZXNzTW9kZWxTaGFyZWRTZWNvbmRhcnlQcm9jZXNzOgot
ICAgICAgICByZXR1cm4ga1dLUHJvY2Vzc01vZGVsU2hhcmVkU2Vjb25kYXJ5UHJvY2VzczsKLSAg
ICBjYXNlIFByb2Nlc3NNb2RlbE11bHRpcGxlU2Vjb25kYXJ5UHJvY2Vzc2VzOgotICAgICAgICBy
ZXR1cm4ga1dLUHJvY2Vzc01vZGVsTXVsdGlwbGVTZWNvbmRhcnlQcm9jZXNzZXM7Ci0gICAgfQot
ICAgIAotICAgIHJldHVybiBrV0tQcm9jZXNzTW9kZWxTaGFyZWRTZWNvbmRhcnlQcm9jZXNzOwot
fQotCiBpbmxpbmUgRm9udFNtb290aGluZ0xldmVsIHRvRm9udFNtb290aGluZ0xldmVsKFdLRm9u
dFNtb290aGluZ0xldmVsIHdrTGV2ZWwpCiB7CiAgICAgc3dpdGNoICh3a0xldmVsKSB7CkluZGV4
OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0LmNwcAkocmV2aXNp
b24gMTkyNjAxKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTMyOSwxNiArMzI5LDYgQEAgV0tDYWNoZU1vZGVsIFdLQ29u
dGV4dEdldENhY2hlTW9kZWwoV0tDbwogICAgIHJldHVybiB0b0FQSSh0b0ltcGwoY29udGV4dFJl
ZiktPmNhY2hlTW9kZWwoKSk7CiB9CiAKLXZvaWQgV0tDb250ZXh0U2V0UHJvY2Vzc01vZGVsKFdL
Q29udGV4dFJlZiBjb250ZXh0UmVmLCBXS1Byb2Nlc3NNb2RlbCBwcm9jZXNzTW9kZWwpCi17Ci0g
ICAgdG9JbXBsKGNvbnRleHRSZWYpLT5zZXRQcm9jZXNzTW9kZWwodG9Qcm9jZXNzTW9kZWwocHJv
Y2Vzc01vZGVsKSk7Ci19Ci0KLVdLUHJvY2Vzc01vZGVsIFdLQ29udGV4dEdldFByb2Nlc3NNb2Rl
bChXS0NvbnRleHRSZWYgY29udGV4dFJlZikKLXsKLSAgICByZXR1cm4gdG9BUEkodG9JbXBsKGNv
bnRleHRSZWYpLT5wcm9jZXNzTW9kZWwoKSk7Ci19Ci0KIHZvaWQgV0tDb250ZXh0U2V0TWF4aW11
bU51bWJlck9mUHJvY2Vzc2VzKFdLQ29udGV4dFJlZiBjb250ZXh0UmVmLCB1bnNpZ25lZCBudW1i
ZXJPZlByb2Nlc3NlcykKIHsKICAgICB0b0ltcGwoY29udGV4dFJlZiktPnNldE1heGltdW1OdW1i
ZXJPZlByb2Nlc3NlcyhudW1iZXJPZlByb2Nlc3Nlcyk7CkBAIC01NTQsMTEgKzU0NCw2IEBAIHZv
aWQgV0tDb250ZXh0U2V0SmF2YVNjcmlwdEdhcmJhZ2VDb2xsZWMKICAgICB0b0ltcGwoY29udGV4
dFJlZiktPnNldEphdmFTY3JpcHRHYXJiYWdlQ29sbGVjdG9yVGltZXJFbmFibGVkKGVuYWJsZSk7
CiB9CiAKLXZvaWQgV0tDb250ZXh0U2V0VXNlc05ldHdvcmtQcm9jZXNzKFdLQ29udGV4dFJlZiBj
b250ZXh0UmVmLCBib29sIHVzZXNOZXR3b3JrUHJvY2VzcykKLXsKLSAgICB0b0ltcGwoY29udGV4
dFJlZiktPnNldFVzZXNOZXR3b3JrUHJvY2Vzcyh1c2VzTmV0d29ya1Byb2Nlc3MpOwotfQotCiB2
b2lkIFdLQ29udGV4dFVzZVRlc3RpbmdOZXR3b3JrU2Vzc2lvbihXS0NvbnRleHRSZWYgY29udGV4
dCkKIHsKICAgICB0b0ltcGwoY29udGV4dCktPnVzZVRlc3RpbmdOZXR3b3JrU2Vzc2lvbigpOwpJ
bmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHQuaAkocmV2aXNp
b24gMTkyNjAxKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dC5o
CSh3b3JraW5nIGNvcHkpCkBAIC03NSw2ICs3NSw3IEBAIHR5cGVkZWYgc3RydWN0IFdLQ29udGV4
dENsaWVudFYxIHsKICAgICBXS0NvbnRleHRDb3B5V2ViQ3J5cHRvTWFzdGVyS2V5Q2FsbGJhY2sg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvcHlXZWJDcnlwdG9NYXN0ZXJLZXk7CiB9IFdL
Q29udGV4dENsaWVudFYxOwogCisvLyBGSVhNRTogVGhlc2UgY2FuIGJlIHJlbW92ZWQgb25jZSB3
ZSBhcmUgbm8gbG9uZ2VyIHN1cHBvcnRpbmcgTWF2ZXJpY2tzLgogZW51bSB7CiAgICAga1dLUHJv
Y2Vzc01vZGVsU2hhcmVkU2Vjb25kYXJ5UHJvY2VzcyA9IDAsCiAgICAga1dLUHJvY2Vzc01vZGVs
TXVsdGlwbGVTZWNvbmRhcnlQcm9jZXNzZXMgPSAxCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL0MvbWFjL1dLQ29udGV4dFByaXZhdGVNYWMubW0KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL21hYy9XS0NvbnRleHRQcml2YXRlTWFjLm1tCShy
ZXZpc2lvbiAxOTI2MDEpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvbWFjL1dL
Q29udGV4dFByaXZhdGVNYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTE2NiwxMCArMTY2LDUgQEAg
Ym9vbCBXS0NvbnRleHRTaG91bGRTdWdnZXN0QmxvY2tXZWJHTCgpCiAKIHBpZF90IFdLQ29udGV4
dEdldE5ldHdvcmtQcm9jZXNzSWRlbnRpZmllcihXS0NvbnRleHRSZWYgY29udGV4dFJlZikKIHsK
LSNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQogICAgIHJldHVybiB0b0ltcGwoY29udGV4dFJl
ZiktPm5ldHdvcmtQcm9jZXNzSWRlbnRpZmllcigpOwotI2Vsc2UKLSAgICBVTlVTRURfUEFSQU0o
Y29udGV4dFJlZik7Ci0gICAgcmV0dXJuIDA7Ci0jZW5kaWYKIH0KSW5kZXg6IFNvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzR3JvdXAubW0KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NHcm91cC5tbQkocmV2
aXNpb24gMTkyNjAxKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1By
b2Nlc3NHcm91cC5tbQkod29ya2luZyBjb3B5KQpAQCAtMTkyLDEwICsxOTIsNiBAQCAtIChpZClp
bml0V2l0aEluamVjdGVkQnVuZGxlVVJMOihOU1VSTCAqCiAKICAgICBhdXRvIGNvbmZpZ3VyYXRp
b24gPSBBUEk6OlByb2Nlc3NQb29sQ29uZmlndXJhdGlvbjo6Y3JlYXRlV2l0aExlZ2FjeU9wdGlv
bnMoKTsKICAgICBjb25maWd1cmF0aW9uLT5zZXRJbmplY3RlZEJ1bmRsZVBhdGgoYnVuZGxlVVJM
ID8gU3RyaW5nKGJ1bmRsZVVSTC5wYXRoKSA6IFN0cmluZygpKTsKLSNpZiBQTEFURk9STShJT1Mp
Ci0gICAgY29uZmlndXJhdGlvbi0+c2V0VXNlTmV0d29ya1Byb2Nlc3ModHJ1ZSk7Ci0gICAgY29u
ZmlndXJhdGlvbi0+c2V0UHJvY2Vzc01vZGVsKFByb2Nlc3NNb2RlbE11bHRpcGxlU2Vjb25kYXJ5
UHJvY2Vzc2VzKTsKLSNlbmRpZgogCiAgICAgX3Byb2Nlc3NQb29sID0gV2ViUHJvY2Vzc1Bvb2w6
OmNyZWF0ZShjb25maWd1cmF0aW9uKTsKIApJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29sLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9vbC5tbQkocmV2aXNpb24gMTkyNjAxKQor
KysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29sLm1tCSh3
b3JraW5nIGNvcHkpCkBAIC0zMCw3ICszMCw2IEBACiAKICNpbXBvcnQgIkNhY2hlTW9kZWwuaCIK
ICNpbXBvcnQgIkRvd25sb2FkQ2xpZW50LmgiCi0jaW1wb3J0ICJQcm9jZXNzTW9kZWwuaCIKICNp
bXBvcnQgIlNhbmRib3hVdGlsaXRpZXMuaCIKICNpbXBvcnQgIldLT2JqZWN0LmgiCiAjaW1wb3J0
ICJXZWFrT2JqQ1B0ci5oIgpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwv
ZXdrX2NvbnRleHQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvZWZsL2V3a19jb250ZXh0LmNwcAkocmV2aXNpb24gMTkyNjAxKQorKysgU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2NvbnRleHQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01
NzAsMjkgKzU3MCwxOCBAQCB2b2lkIGV3a19jb250ZXh0X21lc3NhZ2VfZnJvbV9leHRlbnNpb25z
CiAKIEVpbmFfQm9vbCBld2tfY29udGV4dF9wcm9jZXNzX21vZGVsX3NldChFd2tfQ29udGV4dCog
ZXdrQ29udGV4dCwgRXdrX1Byb2Nlc3NfTW9kZWwgcHJvY2Vzc01vZGVsKQogewotI2lmIEVOQUJM
RShORVRXT1JLX1BST0NFU1MpCiAgICAgRVdLX09CSl9HRVRfSU1QTF9PUl9SRVRVUk4oRXdrQ29u
dGV4dCwgZXdrQ29udGV4dCwgaW1wbCwgZmFsc2UpOwogCiAgICAgaW1wbC0+c2V0UHJvY2Vzc01v
ZGVsKHByb2Nlc3NNb2RlbCk7CiAKICAgICByZXR1cm4gdHJ1ZTsKLSNlbHNlCi0gICAgVU5VU0VE
X1BBUkFNKGV3a0NvbnRleHQpOwotICAgIFVOVVNFRF9QQVJBTShwcm9jZXNzTW9kZWwpOwotICAg
IHJldHVybiBmYWxzZTsKLSNlbmRpZgogfQogCiBFd2tfUHJvY2Vzc19Nb2RlbCBld2tfY29udGV4
dF9wcm9jZXNzX21vZGVsX2dldChjb25zdCBFd2tfQ29udGV4dCogZXdrQ29udGV4dCkKIHsKLSNp
ZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQogICAgIEVXS19PQkpfR0VUX0lNUExfT1JfUkVUVVJO
KGNvbnN0IEV3a0NvbnRleHQsIGV3a0NvbnRleHQsIGltcGwsIEVXS19QUk9DRVNTX01PREVMX1NI
QVJFRF9TRUNPTkRBUlkpOwogCiAgICAgcmV0dXJuIGltcGwtPnByb2Nlc3NNb2RlbCgpOwotI2Vs
c2UKLSAgICBVTlVTRURfUEFSQU0oZXdrQ29udGV4dCk7Ci0gICAgcmV0dXJuIEVXS19QUk9DRVNT
X01PREVMX1NIQVJFRF9TRUNPTkRBUlk7Ci0jZW5kaWYKIH0KIAogRXdrX1RMU19FcnJvcl9Qb2xp
Y3kgZXdrX2NvbnRleHRfdGxzX2Vycm9yX3BvbGljeV9nZXQoY29uc3QgRXdrX0NvbnRleHQqIGNv
bnRleHQpCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Bv
b2xDb2NvYS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2Ev
V2ViUHJvY2Vzc1Bvb2xDb2NvYS5tbQkocmV2aXNpb24gMTkyNjAxKQorKysgU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQb29sQ29jb2EubW0JKHdvcmtpbmcgY29weSkK
QEAgLTI2LDYgKzI2LDggQEAKICNpbXBvcnQgImNvbmZpZy5oIgogI2ltcG9ydCAiV2ViUHJvY2Vz
c1Bvb2wuaCIKIAorI2ltcG9ydCAiTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaCIK
KyNpbXBvcnQgIk5ldHdvcmtQcm9jZXNzUHJveHkuaCIKICNpbXBvcnQgIlBsdWdpblByb2Nlc3NN
YW5hZ2VyLmgiCiAjaW1wb3J0ICJTYW5kYm94VXRpbGl0aWVzLmgiCiAjaW1wb3J0ICJUZXh0Q2hl
Y2tlci5oIgpAQCAtNDcsMTEgKzQ5LDYgQEAKICNpbXBvcnQgPFdlYkNvcmUvUnVudGltZUFwcGxp
Y2F0aW9uQ2hlY2tzLmg+CiAjaW1wb3J0IDxzeXMvcGFyYW0uaD4KIAotI2lmIEVOQUJMRShORVRX
T1JLX1BST0NFU1MpCi0jaW1wb3J0ICJOZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5o
IgotI2ltcG9ydCAiTmV0d29ya1Byb2Nlc3NQcm94eS5oIgotI2VuZGlmCi0KICNpZiBQTEFURk9S
TShJT1MpCiAjaW1wb3J0ICJBcmd1bWVudENvZGVyc0NGLmgiCiAjaW1wb3J0ICJXZWJNZW1vcnlQ
cmVzc3VyZUhhbmRsZXJJT1MuaCIKQEAgLTc2LDEwICs3Myw4IEBAIHN0YXRpYyBOU1N0cmluZyAq
V2ViS2l0QXBwbGljYXRpb25EaWRDaGEKIC8vIEZJWE1FOiA8cmRhcjovL3Byb2JsZW0vOTEzODgx
Nz4gLSBBZnRlciB0aGlzICJiYWNrd2FyZHMgY29tcGF0aWJpbGl0eSIgcmFkYXIgaXMgcmVtb3Zl
ZCwgdGhpcyBjb2RlIHNob3VsZCBiZSByZW1vdmVkIHRvIG9ubHkgcmV0dXJuIGFuIGVtcHR5IFN0
cmluZy4KIE5TU3RyaW5nICpXZWJJY29uRGF0YWJhc2VEaXJlY3RvcnlEZWZhdWx0c0tleSA9IEAi
V2ViSWNvbkRhdGFiYXNlRGlyZWN0b3J5RGVmYXVsdHNLZXkiOwogCi0jaWYgRU5BQkxFKE5FVFdP
UktfUFJPQ0VTUykKIHN0YXRpYyBOU1N0cmluZyAqIGNvbnN0IFdlYktpdDJIVFRQUHJveHlEZWZh
dWx0c0tleSA9IEAiV2ViS2l0MkhUVFBQcm94eSI7CiBzdGF0aWMgTlNTdHJpbmcgKiBjb25zdCBX
ZWJLaXQySFRUUFNQcm94eURlZmF1bHRzS2V5ID0gQCJXZWJLaXQySFRUUFNQcm94eSI7Ci0jZW5k
aWYKIAogI2lmIEVOQUJMRShORVRXT1JLX0NBQ0hFKQogc3RhdGljIE5TU3RyaW5nICogY29uc3Qg
V2ViS2l0TmV0d29ya0NhY2hlRW5hYmxlZERlZmF1bHRzS2V5ID0gQCJXZWJLaXROZXR3b3JrQ2Fj
aGVFbmFibGVkIjsKQEAgLTExOSwxMCArMTE0LDggQEAgc3RhdGljIHZvaWQgcmVnaXN0ZXJVc2Vy
RGVmYXVsdHNJZk5lZWRlZAogCiB2b2lkIFdlYlByb2Nlc3NQb29sOjp1cGRhdGVQcm9jZXNzU3Vw
cHJlc3Npb25TdGF0ZSgpCiB7Ci0jaWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKLSAgICBpZiAo
dXNlc05ldHdvcmtQcm9jZXNzKCkgJiYgbV9uZXR3b3JrUHJvY2VzcykKKyAgICBpZiAobV9uZXR3
b3JrUHJvY2VzcykKICAgICAgICAgbV9uZXR3b3JrUHJvY2Vzcy0+c2V0UHJvY2Vzc1N1cHByZXNz
aW9uRW5hYmxlZChwcm9jZXNzU3VwcHJlc3Npb25FbmFibGVkKCkpOwotI2VuZGlmCiAKICNpZiBF
TkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQSSkKICAgICBpZiAoIW1fcHJvY2Vzc1N1cHByZXNzaW9u
RGlzYWJsZWRGb3JQYWdlQ291bnRlci52YWx1ZSgpKQpAQCAtMTk3LDE1ICsxOTAsNiBAQCB2b2lk
IFdlYlByb2Nlc3NQb29sOjpwbGF0Zm9ybUluaXRpYWxpemVXCiAKICAgICBwYXJhbWV0ZXJzLnVp
UHJvY2Vzc0J1bmRsZUlkZW50aWZpZXIgPSBTdHJpbmcoW1tOU0J1bmRsZSBtYWluQnVuZGxlXSBi
dW5kbGVJZGVudGlmaWVyXSk7CiAKLSNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQotICAgIGlm
ICghdXNlc05ldHdvcmtQcm9jZXNzKCkpIHsKLSNlbmRpZgotICAgICAgICBmb3IgKGNvbnN0IGF1
dG8mIHNjaGVtZSA6IGdsb2JhbFVSTFNjaGVtZXNXaXRoQ3VzdG9tUHJvdG9jb2xIYW5kbGVycygp
KQotICAgICAgICAgICAgcGFyYW1ldGVycy51cmxTY2hlbWVzUmVnaXN0ZXJlZEZvckN1c3RvbVBy
b3RvY29scy5hcHBlbmQoc2NoZW1lKTsKLSNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQotICAg
IH0KLSNlbmRpZgotCiAgICAgcGFyYW1ldGVycy5mb250V2hpdGVsaXN0ID0gbV9mb250V2hpdGVs
aXN0OwogCiAgICAgaWYgKG1fYnVuZGxlUGFyYW1ldGVycykgewpAQCAtMjM2LDcgKzIyMCw2IEBA
IHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnBsYXRmb3JtSW5pdGlhbGl6ZVcKICNlbmRpZgogfQogCi0j
aWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnBsYXRmb3Jt
SW5pdGlhbGl6ZU5ldHdvcmtQcm9jZXNzKE5ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJz
JiBwYXJhbWV0ZXJzKQogewogICAgIE5TVVJMQ2FjaGUgKnVybENhY2hlID0gW05TVVJMQ2FjaGUg
c2hhcmVkVVJMQ2FjaGVdOwpAQCAtMjcxLDcgKzI1NCw2IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6
OnBsYXRmb3JtSW5pdGlhbGl6ZU4KICAgICBwYXJhbWV0ZXJzLnVpUHJvY2Vzc0Nvb2tpZVN0b3Jh
Z2VJZGVudGlmaWVyLmFwcGVuZChDRkRhdGFHZXRCeXRlUHRyKGNvb2tpZVN0b3JhZ2VEYXRhLmdl
dCgpKSwgQ0ZEYXRhR2V0TGVuZ3RoKGNvb2tpZVN0b3JhZ2VEYXRhLmdldCgpKSk7CiAjZW5kaWYK
IH0KLSNlbmRpZgogCiB2b2lkIFdlYlByb2Nlc3NQb29sOjpwbGF0Zm9ybUludmFsaWRhdGVDb250
ZXh0KCkKIHsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxv
YWRQcm94eS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Rvd25s
b2Fkcy9Eb3dubG9hZFByb3h5LmNwcAkocmV2aXNpb24gMTkyNjAxKQorKysgU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZFByb3h5LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMzEsMTYgKzMxLDEzIEBACiAjaW5jbHVkZSAiQXV0aGVudGljYXRpb25DaGFsbGVuZ2VQcm94
eS5oIgogI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlICJEb3dubG9hZFByb3h5
TWFwLmgiCisjaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3NNZXNzYWdlcy5oIgorI2luY2x1ZGUgIk5l
dHdvcmtQcm9jZXNzUHJveHkuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzTWVzc2FnZXMuaCIKICNp
bmNsdWRlICJXZWJQcm9jZXNzUG9vbC5oIgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4K
ICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAotI2lmIEVOQUJMRShORVRXT1JLX1BS
T0NFU1MpCi0jaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3NNZXNzYWdlcy5oIgotI2luY2x1ZGUgIk5l
dHdvcmtQcm9jZXNzUHJveHkuaCIKLSNlbmRpZgotCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsK
IAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC03NCwxNSArNzEsOCBAQCB2b2lkIERvd25sb2FkUHJv
eHk6OmNhbmNlbCgpCiAgICAgaWYgKCFtX3Byb2Nlc3NQb29sKQogICAgICAgICByZXR1cm47CiAK
LSNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQotICAgIGlmIChtX3Byb2Nlc3NQb29sLT51c2Vz
TmV0d29ya1Byb2Nlc3MoKSkgewotICAgICAgICBpZiAoTmV0d29ya1Byb2Nlc3NQcm94eSogbmV0
d29ya1Byb2Nlc3MgPSBtX3Byb2Nlc3NQb29sLT5uZXR3b3JrUHJvY2VzcygpKQotICAgICAgICAg
ICAgbmV0d29ya1Byb2Nlc3MtPmNvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6TmV0d29ya1By
b2Nlc3M6OkNhbmNlbERvd25sb2FkKG1fZG93bmxvYWRJRCksIDApOwotICAgICAgICByZXR1cm47
Ci0gICAgfQotI2VuZGlmCi0KLSAgICBtX3Byb2Nlc3NQb29sLT5zZW5kVG9BbGxQcm9jZXNzZXMo
TWVzc2FnZXM6OldlYlByb2Nlc3M6OkNhbmNlbERvd25sb2FkKG1fZG93bmxvYWRJRCkpOworICAg
IGlmIChOZXR3b3JrUHJvY2Vzc1Byb3h5KiBuZXR3b3JrUHJvY2VzcyA9IG1fcHJvY2Vzc1Bvb2wt
Pm5ldHdvcmtQcm9jZXNzKCkpCisgICAgICAgIG5ldHdvcmtQcm9jZXNzLT5jb25uZWN0aW9uKCkt
PnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpDYW5jZWxEb3dubG9hZChtX2Rvd25sb2Fk
SUQpLCAwKTsKIH0KIAogdm9pZCBEb3dubG9hZFByb3h5OjppbnZhbGlkYXRlKCkKSW5kZXg6IFNv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9MYXVuY2hlci9Qcm9jZXNzTGF1bmNoZXIuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9MYXVuY2hlci9Qcm9jZXNzTGF1bmNo
ZXIuY3BwCShyZXZpc2lvbiAxOTI2MDEpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTGF1
bmNoZXIvUHJvY2Vzc0xhdW5jaGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODQsMTAgKzg0LDgg
QEAgY29uc3QgY2hhciogUHJvY2Vzc0xhdW5jaGVyOjpwcm9jZXNzVHlwZQogICAgIGNhc2UgUGx1
Z2luUHJvY2VzczoKICAgICAgICAgcmV0dXJuICJwbHVnaW5wcm9jZXNzIjsKICNlbmRpZgotI2lm
IEVOQUJMRShORVRXT1JLX1BST0NFU1MpCiAgICAgY2FzZSBOZXR3b3JrUHJvY2VzczoKICAgICAg
ICAgcmV0dXJuICJuZXR3b3JrcHJvY2VzcyI7Ci0jZW5kaWYKICNpZiBFTkFCTEUoREFUQUJBU0Vf
UFJPQ0VTUykKICAgICBjYXNlIERhdGFiYXNlUHJvY2VzczoKICAgICAgICAgcmV0dXJuICJkYXRh
YmFzZXByb2Nlc3MiOwpAQCAtMTEyLDEyICsxMTAsMTAgQEAgYm9vbCBQcm9jZXNzTGF1bmNoZXI6
OmdldFByb2Nlc3NUeXBlRnJvbQogICAgIH0KICNlbmRpZgogCi0jaWYgRU5BQkxFKE5FVFdPUktf
UFJPQ0VTUykKICAgICBpZiAoIXN0cmNtcChzdHJpbmcsICJuZXR3b3JrcHJvY2VzcyIpKSB7CiAg
ICAgICAgIHByb2Nlc3NUeXBlID0gTmV0d29ya1Byb2Nlc3M7CiAgICAgICAgIHJldHVybiB0cnVl
OwogICAgIH0KLSNlbmRpZgogCiAjaWYgRU5BQkxFKERBVEFCQVNFX1BST0NFU1MpCiAgICAgaWYg
KCFzdHJjbXAoc3RyaW5nLCAiZGF0YWJhc2Vwcm9jZXNzIikpIHsKSW5kZXg6IFNvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9MYXVuY2hlci9Qcm9jZXNzTGF1bmNoZXIuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTGF1bmNoZXIvUHJvY2Vzc0xhdW5jaGVyLmgJKHJldmlz
aW9uIDE5MjYwMSkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9MYXVuY2hlci9Qcm9jZXNz
TGF1bmNoZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNTAsOSArNTAsNyBAQCBwdWJsaWM6CiAjaWYg
RU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpCiAgICAgICAgIFBsdWdpblByb2Nlc3MsCiAjZW5k
aWYKLSNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQogICAgICAgICBOZXR3b3JrUHJvY2VzcywK
LSNlbmRpZgogI2lmIEVOQUJMRShEQVRBQkFTRV9QUk9DRVNTKQogICAgICAgICBEYXRhYmFzZVBy
b2Nlc3MsCiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9MYXVuY2hlci9l
ZmwvUHJvY2Vzc0xhdW5jaGVyRWZsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvTGF1bmNoZXIvZWZsL1Byb2Nlc3NMYXVuY2hlckVmbC5jcHAJKHJldmlzaW9uIDE5
MjYwMSkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9MYXVuY2hlci9lZmwvUHJvY2Vzc0xh
dW5jaGVyRWZsLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTE0LDExICsxMTQsOSBAQCB2b2lkIFBy
b2Nlc3NMYXVuY2hlcjo6bGF1bmNoUHJvY2VzcygpCiAgICAgICAgIHBsdWdpblBhdGggPSBtX2xh
dW5jaE9wdGlvbnMuZXh0cmFJbml0aWFsaXphdGlvbkRhdGEuZ2V0KCJwbHVnaW4tcGF0aCIpOwog
ICAgICAgICBicmVhazsKICNlbmRpZgotI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCiAgICAg
Y2FzZSBOZXR3b3JrUHJvY2VzczoKICAgICAgICAgZXhlY3V0YWJsZVBhdGggPSBleGVjdXRhYmxl
UGF0aE9mTmV0d29ya1Byb2Nlc3MoKTsKICAgICAgICAgYnJlYWs7Ci0jZW5kaWYKICNpZiBFTkFC
TEUoREFUQUJBU0VfUFJPQ0VTUykKICAgICBjYXNlIERhdGFiYXNlUHJvY2VzczoKICAgICAgICAg
ZXhlY3V0YWJsZVBhdGggPSBleGVjdXRhYmxlUGF0aE9mRGF0YWJhc2VQcm9jZXNzKCk7CkluZGV4
OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTGF1bmNoZXIvZ3RrL1Byb2Nlc3NMYXVuY2hlckd0
ay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0xhdW5jaGVyL2d0
ay9Qcm9jZXNzTGF1bmNoZXJHdGsuY3BwCShyZXZpc2lvbiAxOTI2MDEpCisrKyBTb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvTGF1bmNoZXIvZ3RrL1Byb2Nlc3NMYXVuY2hlckd0ay5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTc2LDExICs3Niw5IEBAIHZvaWQgUHJvY2Vzc0xhdW5jaGVyOjpsYXVuY2hQ
cm9jZXNzKCkKICAgICAgICAgcmVhbFBsdWdpblBhdGggPSBmaWxlU3lzdGVtUmVwcmVzZW50YXRp
b24ocGx1Z2luUGF0aCk7CiAgICAgICAgIGJyZWFrOwogI2VuZGlmCi0jaWYgRU5BQkxFKE5FVFdP
UktfUFJPQ0VTUykKICAgICBjYXNlIE5ldHdvcmtQcm9jZXNzOgogICAgICAgICBleGVjdXRhYmxl
UGF0aCA9IGV4ZWN1dGFibGVQYXRoT2ZOZXR3b3JrUHJvY2VzcygpOwogICAgICAgICBicmVhazsK
LSNlbmRpZgogI2lmIEVOQUJMRShEQVRBQkFTRV9QUk9DRVNTKQogICAgIGNhc2UgRGF0YWJhc2VQ
cm9jZXNzOgogICAgICAgICBleGVjdXRhYmxlUGF0aCA9IGV4ZWN1dGFibGVQYXRoT2ZEYXRhYmFz
ZVByb2Nlc3MoKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9MYXVuY2hlci9tYWMv
UHJvY2Vzc0xhdW5jaGVyTWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9MYXVuY2hlci9tYWMvUHJvY2Vzc0xhdW5jaGVyTWFjLm1tCShyZXZpc2lvbiAxOTI2MDEp
CisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTGF1bmNoZXIvbWFjL1Byb2Nlc3NMYXVuY2hl
ck1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtMTA1LDE0ICsxMDUsMTIgQEAgc3RhdGljIFJldGFp
blB0cjxOU1N0cmluZz4gY29tcHV0ZVByb2NlcwogICAgIH0KICNlbmRpZgogCi0jaWYgRU5BQkxF
KE5FVFdPUktfUFJPQ0VTUykKICAgICBpZiAobGF1bmNoT3B0aW9ucy5wcm9jZXNzVHlwZSA9PSBQ
cm9jZXNzTGF1bmNoZXI6Ok5ldHdvcmtQcm9jZXNzKSB7CiAgICAgICAgIE5TU3RyaW5nICpwcm9j
ZXNzUGF0aCA9IFt3ZWJLaXRCdW5kbGUgcGF0aEZvckF1eGlsaWFyeUV4ZWN1dGFibGU6QCJOZXR3
b3JrUHJvY2Vzcy5hcHAiXTsKICAgICAgICAgTlNTdHJpbmcgKnByb2Nlc3NBcHBFeGVjdXRhYmxl
UGF0aCA9IFtbTlNCdW5kbGUgYnVuZGxlV2l0aFBhdGg6cHJvY2Vzc1BhdGhdIGV4ZWN1dGFibGVQ
YXRoXTsKIAogICAgICAgICByZXR1cm4gW1twcm9jZXNzQXBwRXhlY3V0YWJsZVBhdGggc3RyaW5n
QnlEZWxldGluZ0xhc3RQYXRoQ29tcG9uZW50XSBzdHJpbmdCeUFwcGVuZGluZ1BhdGhDb21wb25l
bnQ6QCJTZWNJdGVtU2hpbS5keWxpYiJdOwogICAgIH0KLSNlbmRpZgogCiAgICAgaWYgKGxhdW5j
aE9wdGlvbnMucHJvY2Vzc1R5cGUgPT0gUHJvY2Vzc0xhdW5jaGVyOjpXZWJQcm9jZXNzKSB7CiAg
ICAgICAgIE5TU3RyaW5nICpwcm9jZXNzUGF0aCA9IFt3ZWJLaXRCdW5kbGUgcGF0aEZvckF1eGls
aWFyeUV4ZWN1dGFibGU6QCJXZWJQcm9jZXNzLmFwcCJdOwpAQCAtMTY3LDEyICsxNjUsMTAgQEAg
c3RhdGljIGNvbnN0IGNoYXIqIHNlcnZpY2VOYW1lKGNvbnN0IFBybwogICAgICAgICBpZiAoZm9y
RGV2ZWxvcG1lbnQpCiAgICAgICAgICAgICByZXR1cm4gImNvbS5hcHBsZS5XZWJLaXQuV2ViQ29u
dGVudC5EZXZlbG9wbWVudCI7CiAgICAgICAgIHJldHVybiAiY29tLmFwcGxlLldlYktpdC5XZWJD
b250ZW50IjsKLSNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQogICAgIGNhc2UgUHJvY2Vzc0xh
dW5jaGVyOjpOZXR3b3JrUHJvY2VzczoKICAgICAgICAgaWYgKGZvckRldmVsb3BtZW50KQogICAg
ICAgICAgICAgcmV0dXJuICJjb20uYXBwbGUuV2ViS2l0Lk5ldHdvcmtpbmcuRGV2ZWxvcG1lbnQi
OwogICAgICAgICByZXR1cm4gImNvbS5hcHBsZS5XZWJLaXQuTmV0d29ya2luZyI7Ci0jZW5kaWYK
ICNpZiBFTkFCTEUoREFUQUJBU0VfUFJPQ0VTUykKICAgICBjYXNlIFByb2Nlc3NMYXVuY2hlcjo6
RGF0YWJhc2VQcm9jZXNzOgogICAgICAgICBpZiAoZm9yRGV2ZWxvcG1lbnQpCkBAIC0yMDYsMTIg
KzIwMiw5IEBAIHN0YXRpYyBib29sIHNob3VsZExlYWtCb29zdChjb25zdCBQcm9jZXMKICAgICAv
LyBPbiBpT1MsIGxlYWsgYSBib29zdCBvbnRvIGFsbCBjaGlsZCBwcm9jZXNzZXMKICAgICBVTlVT
RURfUEFSQU0obGF1bmNoT3B0aW9ucyk7CiAgICAgcmV0dXJuIHRydWU7Ci0jZWxpZiBFTkFCTEUo
TkVUV09SS19QUk9DRVNTKQorI2Vsc2UKICAgICAvLyBPbiBNYWMsIGxlYWsgYSBib29zdCBvbnRv
IHRoZSBOZXR3b3JrUHJvY2Vzcy4KICAgICByZXR1cm4gbGF1bmNoT3B0aW9ucy5wcm9jZXNzVHlw
ZSA9PSBQcm9jZXNzTGF1bmNoZXI6Ok5ldHdvcmtQcm9jZXNzOwotI2Vsc2UKLSAgICBVTlVTRURf
UEFSQU0obGF1bmNoT3B0aW9ucyk7Ci0gICAgcmV0dXJuIGZhbHNlOwogI2VuZGlmCiB9CiAgICAg
CkBAIC00ODMsMTEgKzQ3Niw5IEBAIHN0YXRpYyB2b2lkIGNyZWF0ZVByb2Nlc3MoY29uc3QgUHJv
Y2Vzc0wKICAgICAgICAgcHJvY2Vzc1BhdGggPSBbd2ViS2l0QnVuZGxlIHBhdGhGb3JBdXhpbGlh
cnlFeGVjdXRhYmxlOkAiUGx1Z2luUHJvY2Vzcy5hcHAiXTsKICAgICAgICAgYnJlYWs7CiAjZW5k
aWYKLSNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQogICAgIGNhc2UgUHJvY2Vzc0xhdW5jaGVy
OjpOZXR3b3JrUHJvY2VzczoKICAgICAgICAgcHJvY2Vzc1BhdGggPSBbd2ViS2l0QnVuZGxlIHBh
dGhGb3JBdXhpbGlhcnlFeGVjdXRhYmxlOkAiTmV0d29ya1Byb2Nlc3MuYXBwIl07CiAgICAgICAg
IGJyZWFrOwotI2VuZGlmCiAjaWYgRU5BQkxFKERBVEFCQVNFX1BST0NFU1MpCiAgICAgY2FzZSBQ
cm9jZXNzTGF1bmNoZXI6OkRhdGFiYXNlUHJvY2VzczoKICAgICAgICAgcHJvY2Vzc1BhdGggPSBb
d2ViS2l0QnVuZGxlIHBhdGhGb3JBdXhpbGlhcnlFeGVjdXRhYmxlOkAiRGF0YWJhc2VQcm9jZXNz
LmFwcCJdOwpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1By
b2Nlc3NQcm94eS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL05l
dHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAJKHJldmlzaW9uIDE5MjYwMSkKKysrIFNvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yNiw4ICsyNiw2IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVk
ZSAiTmV0d29ya1Byb2Nlc3NQcm94eS5oIgogCi0jaWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykK
LQogI2luY2x1ZGUgIkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHkuaCIKICNpbmNsdWRlICJD
dXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eU1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiRG93bmxvYWRQ
cm94eU1lc3NhZ2VzLmgiCkBAIC0zNzcsNSArMzc1LDMgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzc1By
b3h5OjpzZXRJc0hvbGRpbmdMbwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQotI2VuZGlm
IC8vIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oCShyZXZpc2lvbiAx
OTI2MDEpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vz
c1Byb3h5LmgJKHdvcmtpbmcgY29weSkKQEAgLTI2LDggKzI2LDYgQEAKICNpZm5kZWYgTmV0d29y
a1Byb2Nlc3NQcm94eV9oCiAjZGVmaW5lIE5ldHdvcmtQcm9jZXNzUHJveHlfaAogCi0jaWYgRU5B
QkxFKE5FVFdPUktfUFJPQ0VTUykKLQogI2luY2x1ZGUgIkNoaWxkUHJvY2Vzc1Byb3h5LmgiCiAj
aW5jbHVkZSAiQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHkuaCIKICNpbmNsdWRlICJQcm9jZXNz
TGF1bmNoZXIuaCIKQEAgLTEzMiw2ICsxMzAsNCBAQCBwcml2YXRlOgogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJLaXQKIAotI2VuZGlmIC8vIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCi0KICNlbmRpZiAv
LyBOZXR3b3JrUHJvY2Vzc1Byb3h5X2gKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9O
ZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkubWVzc2FnZXMuaW4KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5tZXNzYWdl
cy5pbgkocmV2aXNpb24gMTkyNjAxKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL05ldHdv
cmsvTmV0d29ya1Byb2Nlc3NQcm94eS5tZXNzYWdlcy5pbgkod29ya2luZyBjb3B5KQpAQCAtMjAs
OCArMjAsNiBAQAogIyBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQogIyBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogCi0jaWYg
RU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKLQogbWVzc2FnZXMgLT4gTmV0d29ya1Byb2Nlc3NQcm94
eSBMZWdhY3lSZWNlaXZlciB7CiAgICAgRGlkQ3JlYXRlTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MoSVBDOjpBdHRhY2htZW50IGNvbm5lY3Rpb25JZGVudGlmaWVyKQogCkBAIC0zOSw1ICsz
NywzIEBAIG1lc3NhZ2VzIC0+IE5ldHdvcmtQcm9jZXNzUHJveHkgTGVnYWN5UmUKICAgICBMb2dT
YW1wbGVkRGlhZ25vc3RpY01lc3NhZ2VXaXRoUmVzdWx0KHVpbnQ2NF90IHBhZ2VJRCwgU3RyaW5n
IG1lc3NhZ2UsIFN0cmluZyBkZXNjcmlwdGlvbiwgdWludDMyX3QgcmVzdWx0KQogICAgIExvZ1Nh
bXBsZWREaWFnbm9zdGljTWVzc2FnZVdpdGhWYWx1ZSh1aW50NjRfdCBwYWdlSUQsIFN0cmluZyBt
ZXNzYWdlLCBTdHJpbmcgZGVzY3JpcHRpb24sIFN0cmluZyB2YWx1ZSkKIH0KLQotI2VuZGlmIC8v
IEVOQUJMRShORVRXT1JLX1BST0NFU1MpCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
TmV0d29yay9tYWMvTmV0d29ya1Byb2Nlc3NQcm94eU1hYy5tbQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvTmV0d29yay9tYWMvTmV0d29ya1Byb2Nlc3NQcm94eU1hYy5t
bQkocmV2aXNpb24gMTkyNjAxKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL05ldHdvcmsv
bWFjL05ldHdvcmtQcm9jZXNzUHJveHlNYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTI4LDggKzI4
LDYgQEAKIAogI2ltcG9ydCAiTmV0d29ya1Byb2Nlc3NNZXNzYWdlcy5oIgogCi0jaWYgRU5BQkxF
KE5FVFdPUktfUFJPQ0VTUykKLQogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIG5hbWVzcGFj
ZSBXZWJLaXQgewpAQCAtNTksNSArNTcsMyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OnBs
YXRmb3JtR2V0TGF1CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAotCi0jZW5kaWYgLy8gRU5B
QkxFKE5FVFdPUktfUFJPQ0VTUykKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9OZXR3
b3JrL3NvdXAvTmV0d29ya1Byb2Nlc3NQcm94eVNvdXAuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9OZXR3b3JrL3NvdXAvTmV0d29ya1Byb2Nlc3NQcm94eVNvdXAu
Y3BwCShyZXZpc2lvbiAxOTI2MDEpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTmV0d29y
ay9zb3VwL05ldHdvcmtQcm9jZXNzUHJveHlTb3VwLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjQs
OSArMjQsOCBAQAogICovCiAKICNpbmNsdWRlICJjb25maWcuaCIKLSNpZiBFTkFCTEUoTkVUV09S
S19QUk9DRVNTKQotCiAjaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3NQcm94eS5oIgorCiAjaW5jbHVk
ZSA8Z2xpYi5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTQzLDUgKzQyLDMgQEAgdm9pZCBO
ZXR3b3JrUHJvY2Vzc1Byb3h5OjpwbGF0Zm9ybUdldExhdQogfQogCiB9Ci0KLSNlbmRpZiAvLyBF
TkFCTEUoTkVUV09SS19QUk9DRVNTKQpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dl
YnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcAkocmV2aXNpb24g
MTkyNjAxKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVE
YXRhU3RvcmUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05NCwxMiArOTQsMTAgQEAgV2Vic2l0ZURh
dGFTdG9yZTo6fldlYnNpdGVEYXRhU3RvcmUoKQogewogICAgIHBsYXRmb3JtRGVzdHJveSgpOwog
Ci0jaWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKICAgICBpZiAobV9zZXNzaW9uSUQuaXNFcGhl
bWVyYWwoKSkgewogICAgICAgICBmb3IgKGF1dG8mIHByb2Nlc3NQb29sIDogV2ViUHJvY2Vzc1Bv
b2w6OmFsbFByb2Nlc3NQb29scygpKQogICAgICAgICAgICAgcHJvY2Vzc1Bvb2wtPnNlbmRUb05l
dHdvcmtpbmdQcm9jZXNzKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6RGVzdHJveVByaXZhdGVC
cm93c2luZ1Nlc3Npb24obV9zZXNzaW9uSUQpKTsKICAgICB9Ci0jZW5kaWYKIH0KIAogdm9pZCBX
ZWJzaXRlRGF0YVN0b3JlOjpjbG9uZVNlc3Npb25EYXRhKFdlYlBhZ2VQcm94eSYgc291cmNlUGFn
ZSwgV2ViUGFnZVByb3h5JiBuZXdQYWdlKQpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L2d0ay9XZWJQcm9jZXNzUG9vbEd0ay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL2d0ay9XZWJQcm9jZXNzUG9vbEd0ay5jcHAJKHJldmlzaW9uIDE5MjYwMSkKKysr
IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsvV2ViUHJvY2Vzc1Bvb2xHdGsuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zMCw2ICszMCw3IEBACiAKICNpbmNsdWRlICJBUElQcm9jZXNzUG9vbENv
bmZpZ3VyYXRpb24uaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCisjaW5jbHVkZSAiTmV0d29ya1By
b2Nlc3NNZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYkNvb2tpZU1hbmFnZXJQcm94eS5oIgogI2lu
Y2x1ZGUgIldlYkluc3BlY3RvclNlcnZlci5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NDcmVhdGlv
blBhcmFtZXRlcnMuaCIKQEAgLTQxLDEwICs0Miw2IEBACiAjaW5jbHVkZSA8d3RmL2dsaWIvR1Vu
aXF1ZVB0ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KIAotI2lmIEVOQUJMRShO
RVRXT1JLX1BST0NFU1MpCi0jaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3NNZXNzYWdlcy5oIgotI2Vu
ZGlmCi0KIG5hbWVzcGFjZSBXZWJLaXQgewogCiBzdGF0aWMgdm9pZCBpbml0SW5zcGVjdG9yU2Vy
dmVyKCkKQEAgLTk4LDE2ICs5NSw2IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnBsYXRmb3JtSW5p
dGlhbGl6ZVcKICAgICAgICAgcGFyYW1ldGVycy51cmxTY2hlbWVzUmVnaXN0ZXJlZEFzTG9jYWwu
YXBwZW5kKCJyZXNvdXJjZSIpOwogICAgIH0KIAotICAgIGlmICghdXNlc05ldHdvcmtQcm9jZXNz
KCkpIHsKLSAgICAgICAgcGFyYW1ldGVycy51cmxTY2hlbWVzUmVnaXN0ZXJlZEZvckN1c3RvbVBy
b3RvY29scyA9IHN1cHBsZW1lbnQ8V2ViU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXI+
KCktPnJlZ2lzdGVyZWRTY2hlbWVzRm9yQ3VzdG9tUHJvdG9jb2xzKCk7Ci0KLSAgICAgICAgc3Vw
cGxlbWVudDxXZWJDb29raWVNYW5hZ2VyUHJveHk+KCktPmdldENvb2tpZVBlcnNpc3RlbnRTdG9y
YWdlKHBhcmFtZXRlcnMuY29va2llUGVyc2lzdGVudFN0b3JhZ2VQYXRoLCBwYXJhbWV0ZXJzLmNv
b2tpZVBlcnNpc3RlbnRTdG9yYWdlVHlwZSk7Ci0gICAgICAgIHBhcmFtZXRlcnMuY29va2llQWNj
ZXB0UG9saWN5ID0gbV9pbml0aWFsSFRUUENvb2tpZUFjY2VwdFBvbGljeTsKLQotICAgICAgICBw
YXJhbWV0ZXJzLmlnbm9yZVRMU0Vycm9ycyA9IG1faWdub3JlVExTRXJyb3JzOwotICAgICAgICBw
YXJhbWV0ZXJzLmRpc2tDYWNoZURpcmVjdG9yeSA9IG1fY29uZmlndXJhdGlvbi0+ZGlza0NhY2hl
RGlyZWN0b3J5KCk7Ci0gICAgfQotCiAgICAgcGFyYW1ldGVycy5tZW1vcnlDYWNoZURpc2FibGVk
ID0gbV9tZW1vcnlDYWNoZURpc2FibGVkIHx8IGNhY2hlTW9kZWwoKSA9PSBDYWNoZU1vZGVsRG9j
dW1lbnRWaWV3ZXI7CiB9CiAKQEAgLTE0OSwxMyArMTM2LDggQEAgU3RyaW5nIFdlYlByb2Nlc3NQ
b29sOjpsZWdhY3lQbGF0Zm9ybURlZgogdm9pZCBXZWJQcm9jZXNzUG9vbDo6c2V0SWdub3JlVExT
RXJyb3JzKGJvb2wgaWdub3JlVExTRXJyb3JzKQogewogICAgIG1faWdub3JlVExTRXJyb3JzID0g
aWdub3JlVExTRXJyb3JzOwotI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCi0gICAgaWYgKHVz
ZXNOZXR3b3JrUHJvY2VzcygpICYmIG5ldHdvcmtQcm9jZXNzKCkpIHsKKyAgICBpZiAobmV0d29y
a1Byb2Nlc3MoKSkKICAgICAgICAgbmV0d29ya1Byb2Nlc3MoKS0+c2VuZChNZXNzYWdlczo6TmV0
d29ya1Byb2Nlc3M6OlNldElnbm9yZVRMU0Vycm9ycyhtX2lnbm9yZVRMU0Vycm9ycyksIDApOwot
ICAgICAgICByZXR1cm47Ci0gICAgfQotI2VuZGlmCi0gICAgc2VuZFRvQWxsUHJvY2Vzc2VzKE1l
c3NhZ2VzOjpXZWJQcm9jZXNzOjpTZXRJZ25vcmVUTFNFcnJvcnMobV9pZ25vcmVUTFNFcnJvcnMp
KTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3Mvc291cC9XZWJQcm9jZXNzUG9vbFNvdXAuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9zb3VwL1dlYlByb2Nlc3NQb29sU291cC5jcHAJKHJldmlzaW9uIDE5
MjYwMSkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9zb3VwL1dlYlByb2Nlc3NQb29sU291
cC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI0LDcgKzI0LDYgQEAKICAqLwogCiAjaW5jbHVkZSAi
Y29uZmlnLmgiCi0jaWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKICNpbmNsdWRlICJXZWJQcm9j
ZXNzUG9vbC5oIgogCiAjaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMu
aCIKQEAgLTQ3LDUgKzQ2LDMgQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6cGxhdGZvcm1Jbml0aWFs
aXplTgogfQogCiB9Ci0KLSNlbmRpZgpJbmRleDogU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYktp
dDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMTkyNjAxKQorKysgU291cmNl
L1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkp
CkBAIC0xNDYwLDcgKzE0NjAsNiBAQAogCQlCQzU3NTA5ODEyNjhGM0M2MDA2RjBGMTIgLyogV2Vi
UG9wdXBNZW51UHJveHlNYWMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBCQzU3NTA5NjEyNjhGM0M2MDA2RjBGMTIgLyogV2ViUG9wdXBNZW51UHJveHlN
YWMubW0gKi87IH07CiAJCUJDNTc1NjEzMTI2RTAxMzgwMDZGMEYxMiAvKiBBUElFcnJvci5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzU3NTYxMjEy
NkUwMTM4MDA2RjBGMTIgLyogQVBJRXJyb3IuY3BwICovOyB9OwogCQlCQzU5NTQ4OTE1Qzc4Njg1
MDBGRDFFM0UgLyogV2ViS2l0Mi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQkM1OTU0ODgxNUM3ODY4NTAwRkQxRTNFIC8qIFdlYktpdDIuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQlCQzU5NzA3NTExNjU5
MUQwMDA1NTFGQ0EgLyogUHJvY2Vzc01vZGVsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBCQzU5NzA3NDExNjU5MUQwMDA1NTFGQ0EgLyogUHJvY2Vzc01v
ZGVsLmggKi87IH07CiAJCUJDNUM3NUM4MTQ5NTREQTYwMEJDNDc3NSAvKiBXS0Nvbm5lY3Rpb25J
bnRlcm5hbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QkM1Qzc1QzYxNDk1NERBNjAwQkM0Nzc1IC8qIFdLQ29ubmVjdGlvbkludGVybmFsLmggKi87IH07
CiAJCUJDNUQyNEExMTZDQzNCOUUwMDdENTQ2MSAvKiBDaGlsZFByb2Nlc3NNYWluLm1tIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkM1RDI0OUYxNkNDM0I5
RTAwN0Q1NDYxIC8qIENoaWxkUHJvY2Vzc01haW4ubW0gKi87IH07CiAJCUJDNUQyNEEyMTZDQzNC
OUUwMDdENTQ2MSAvKiBDaGlsZFByb2Nlc3NNYWluLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkM1RDI0OUYxNkNDM0I5RTAwN0Q1NDYxIC8qIENoaWxk
UHJvY2Vzc01haW4ubW0gKi87IH07CkBAIC0zNzMyLDcgKzM3MzEsNiBAQAogCQlCQzU3NTA5NjEy
NjhGM0M2MDA2RjBGMTIgLyogV2ViUG9wdXBNZW51UHJveHlNYWMubW0gKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXZWJQb3B1cE1lbnVQcm94eU1hYy5tbTsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkM1NzU2MTIxMjZFMDEzODAwNkYwRjEyIC8qIEFQSUVy
cm9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEFQSUVycm9yLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkM1OTU0ODgxNUM3ODY4NTAwRkQxRTNF
IC8qIFdlYktpdDIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViS2l0Mi5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlCQzU5NzA3NDExNjU5MUQwMDA1NTFGQ0Eg
LyogUHJvY2Vzc01vZGVsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFByb2Nl
c3NNb2RlbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQzVDNzVDNjE0OTU0REE2
MDBCQzQ3NzUgLyogV0tDb25uZWN0aW9uSW50ZXJuYWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gV0tDb25uZWN0aW9uSW50ZXJuYWwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJQkM1RDI0OUYxNkNDM0I5RTAwN0Q1NDYxIC8qIENoaWxkUHJvY2Vzc01haW4ubW0g
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBDaGlsZFByb2Nlc3NNYWlu
Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQzVEMjRCODE2Q0M0MEJCMDA3RDU0
NjEgLyogQmFzZUxlZ2FjeVByb2Nlc3MueGNjb25maWcgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnhjY29uZmlnOyBwYXRoID0gQmFzZUxlZ2Fj
eVByb2Nlc3MueGNjb25maWc7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC02MjM4LDcg
KzYyMzYsNiBAQAogCQkJCTFBQzc1MzdBMTgzQTlGREIwMDcyQ0IxNSAvKiBQYWdlTG9hZFN0YXRl
LmggKi8sCiAJCQkJMzc3MTZBNTkxOTVCOTEwNTAwRUU4QjFCIC8qIFByb2Nlc3NBc3NlcnRpb24u
Y3BwICovLAogCQkJCTg2Rjk1MzYwMThGRjRGRDQwMDFEQjJFRiAvKiBQcm9jZXNzQXNzZXJ0aW9u
LmggKi8sCi0JCQkJQkM1OTcwNzQxMTY1OTFEMDAwNTUxRkNBIC8qIFByb2Nlc3NNb2RlbC5oICov
LAogCQkJCTg2RTY3QTIyMTkwRjQxMTgwMDAwNEFCNyAvKiBQcm9jZXNzVGhyb3R0bGVyLmNwcCAq
LywKIAkJCQk4NkU2N0EyMTE5MEY0MTE4MDAwMDRBQjcgLyogUHJvY2Vzc1Rocm90dGxlci5oICov
LAogCQkJCTgzMDQ4QUU1MUFDQTQ1REMwMDgyQzgzMiAvKiBQcm9jZXNzVGhyb3R0bGVyQ2xpZW50
LmggKi8sCkBAIC03OTg5LDcgKzc5ODYsNiBAQAogCQkJCUUxQ0MxQjkwMTJEN0VBREYwMDYyNTgz
OCAvKiBQcmludEluZm8uaCBpbiBIZWFkZXJzICovLAogCQkJCTg2Rjk1MzY1MThGRjU4RjUwMDFE
QjJFRiAvKiBQcm9jZXNzQXNzZXJ0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzFBN0M1ODEx
MzZFMTlDMDBGQjcxNjcgLyogUHJvY2Vzc0xhdW5jaGVyLmggaW4gSGVhZGVycyAqLywKLQkJCQlC
QzU5NzA3NTExNjU5MUQwMDA1NTFGQ0EgLyogUHJvY2Vzc01vZGVsLmggaW4gSGVhZGVycyAqLywK
IAkJCQk4NkU2N0EyNTE5MTBCOUQxMDAwMDRBQjcgLyogUHJvY2Vzc1Rocm90dGxlci5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJODMwNDhBRTYxQUNBNDVEQzAwODJDODMyIC8qIFByb2Nlc3NUaHJvdHRs
ZXJDbGllbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTJEN0YxMzEwMUE3MDJGQkEwMDlBNkZCRCAv
KiBQcm9jZXNzVHlwZS5oIGluIEhlYWRlcnMgKi8sCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlByb2Nlc3MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUHJvY2Vzcy5jcHAJKHJldmlzaW9uIDE5MjYwMSkKKysrIFNvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM3LDYgKzM3LDcg
QEAKICNpbmNsdWRlICJJbmplY3RlZEJ1bmRsZS5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNp
bmNsdWRlICJOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzc01lc3NhZ2VzLmgiCisjaW5jbHVk
ZSAiTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmgiCiAjaW5jbHVkZSAiUGx1Z2luUHJvY2Vzc0Nv
bm5lY3Rpb25NYW5hZ2VyLmgiCiAjaW5jbHVkZSAiU2Vzc2lvblRyYWNrZXIuaCIKICNpbmNsdWRl
ICJTdGF0aXN0aWNzRGF0YS5oIgpAQCAtNjAsNiArNjEsNyBAQAogI2luY2x1ZGUgIldlYlByb2Nl
c3NNZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NQb29sTWVzc2FnZXMuaCIKICNpbmNs
dWRlICJXZWJQcm9jZXNzUHJveHlNZXNzYWdlcy5oIgorI2luY2x1ZGUgIldlYlJlc291cmNlTG9h
ZFNjaGVkdWxlci5oIgogI2luY2x1ZGUgIldlYnNpdGVEYXRhLmgiCiAjaW5jbHVkZSAiV2Vic2l0
ZURhdGFUeXBlcy5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTTG9jay5oPgpAQCAtMTAx
LDEyICsxMDMsOSBAQAogI2luY2x1ZGUgIk9iakNPYmplY3RHcmFwaC5oIgogI2VuZGlmCiAKLSNp
ZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQogI2lmIFBMQVRGT1JNKENPQ09BKQogI2luY2x1ZGUg
IkNvb2tpZVN0b3JhZ2VTaGltLmgiCiAjZW5kaWYKLSNpbmNsdWRlICJOZXR3b3JrUHJvY2Vzc0Nv
bm5lY3Rpb24uaCIKLSNlbmRpZgogCiAjaWYgRU5BQkxFKFNFQ19JVEVNX1NISU0pCiAjaW5jbHVk
ZSAiU2VjSXRlbVNoaW0uaCIKQEAgLTEyNCwxMCArMTIzLDYgQEAKICNpbmNsdWRlICJXZWJCYXR0
ZXJ5TWFuYWdlci5oIgogI2VuZGlmCiAKLSNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQotI2lu
Y2x1ZGUgIldlYlJlc291cmNlTG9hZFNjaGVkdWxlci5oIgotI2VuZGlmCi0KICNpZiBFTkFCTEUo
UkVNT1RFX0lOU1BFQ1RPUikKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9SZW1vdGVJbnNwZWN0
b3IuaD4KICNlbmRpZgpAQCAtMTYxLDExICsxNTYsOCBAQCBXZWJQcm9jZXNzOjpXZWJQcm9jZXNz
KCkKICAgICAsIG1fZnVsbEtleWJvYXJkQWNjZXNzRW5hYmxlZChmYWxzZSkKICAgICAsIG1fdGV4
dENoZWNrZXJTdGF0ZSgpCiAgICAgLCBtX2ljb25EYXRhYmFzZVByb3h5KG5ldyBXZWJJY29uRGF0
YWJhc2VQcm94eSh0aGlzKSkKLSNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQotICAgICwgbV91
c2VzTmV0d29ya1Byb2Nlc3MoZmFsc2UpCiAgICAgLCBtX3dlYlJlc291cmNlTG9hZFNjaGVkdWxl
cihuZXcgV2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVyKQogICAgICwgbV9kbnNQcmVmZXRjaEh5c3Rl
cmVyaXMoW3RoaXNdKEh5c3RlcmVzaXNTdGF0ZSBzdGF0ZSkgeyBpZiAoc3RhdGUgPT0gSHlzdGVy
ZXNpc1N0YXRlOjpTdG9wcGVkKSBtX2Ruc1ByZWZldGNoZWRIb3N0cy5jbGVhcigpOyB9KQotI2Vu
ZGlmCiAjaWYgRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpCiAgICAgLCBtX3BsdWdpblByb2Nl
c3NDb25uZWN0aW9uTWFuYWdlcihQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbk1hbmFnZXI6OmNyZWF0
ZSgpKQogI2VuZGlmCkBAIC0yNTIsMzQgKzI0NCwxMCBAQCB2b2lkIFdlYlByb2Nlc3M6OmluaXRp
YWxpemVDb25uZWN0aW9uKElQCiAgICAgY29ubmVjdGlvbi0+c2V0T25seVNlbmRNZXNzYWdlc0Fz
RGlzcGF0Y2hXaGVuV2FpdGluZ0ZvclN5bmNSZXBseVdoZW5Qcm9jZXNzaW5nU3VjaEFNZXNzYWdl
KHRydWUpOwogfQogCi12b2lkIFdlYlByb2Nlc3M6OmRpZENyZWF0ZURvd25sb2FkKCkKLXsKLSAg
ICBkaXNhYmxlVGVybWluYXRpb24oKTsKLX0KLQotdm9pZCBXZWJQcm9jZXNzOjpkaWREZXN0cm95
RG93bmxvYWQoKQotewotICAgIGVuYWJsZVRlcm1pbmF0aW9uKCk7Ci19Ci0KLUlQQzo6Q29ubmVj
dGlvbiogV2ViUHJvY2Vzczo6ZG93bmxvYWRQcm94eUNvbm5lY3Rpb24oKQotewotICAgIHJldHVy
biBwYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpOwotfQotCi1BdXRoZW50aWNhdGlvbk1hbmFnZXIm
IFdlYlByb2Nlc3M6OmRvd25sb2Fkc0F1dGhlbnRpY2F0aW9uTWFuYWdlcigpCi17Ci0gICAgcmV0
dXJuICpzdXBwbGVtZW50PEF1dGhlbnRpY2F0aW9uTWFuYWdlcj4oKTsKLX0KLQogdm9pZCBXZWJQ
cm9jZXNzOjppbml0aWFsaXplV2ViUHJvY2VzcyhXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJz
JiYgcGFyYW1ldGVycykKIHsKICAgICBBU1NFUlQobV9wYWdlTWFwLmlzRW1wdHkoKSk7CiAKLSNp
ZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQotICAgIG1fdXNlc05ldHdvcmtQcm9jZXNzID0gcGFy
YW1ldGVycy51c2VzTmV0d29ya1Byb2Nlc3M7Ci0jZW5kaWYKLQogI2lmIE9TKExJTlVYKQogICAg
IFdlYkNvcmU6Ok1lbW9yeVByZXNzdXJlSGFuZGxlcjo6UmVsaWVmTG9nZ2VyOjpzZXRMb2dnaW5n
RW5hYmxlZChwYXJhbWV0ZXJzLnNob3VsZEVuYWJsZU1lbW9yeVByZXNzdXJlUmVsaWVmTG9nZ2lu
Zyk7CiAjZW5kaWYKQEAgLTM1OCwxMyArMzI2LDEwIEBAIHZvaWQgV2ViUHJvY2Vzczo6aW5pdGlh
bGl6ZVdlYlByb2Nlc3MoV2UKICAgICBpZiAocGFyYW1ldGVycy5zaG91bGRVc2VUZXN0aW5nTmV0
d29ya1Nlc3Npb24pCiAgICAgICAgIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c3dpdGNoVG9OZXdU
ZXN0aW5nU2Vzc2lvbigpOwogCi0jaWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKICAgICBlbnN1
cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKTsKIAogI2lmIFBMQVRGT1JNKENPQ09BKQotICAg
IGlmICh1c2VzTmV0d29ya1Byb2Nlc3MoKSkKLSAgICAgICAgQ29va2llU3RvcmFnZVNoaW06OnNp
bmdsZXRvbigpLmluaXRpYWxpemUoKTsKLSNlbmRpZgorICAgIENvb2tpZVN0b3JhZ2VTaGltOjpz
aW5nbGV0b24oKS5pbml0aWFsaXplKCk7CiAjZW5kaWYKICAgICBzZXRUZXJtaW5hdGlvblRpbWVv
dXQocGFyYW1ldGVycy50ZXJtaW5hdGlvblRpbWVvdXQpOwogCkBAIC0zOTYsMTIgKzM2MSw4IEBA
IHZvaWQgV2ViUHJvY2Vzczo6aW5pdGlhbGl6ZVdlYlByb2Nlc3MoV2UKICNlbmRpZgogfQogCi0j
aWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKIHZvaWQgV2ViUHJvY2Vzczo6ZW5zdXJlTmV0d29y
a1Byb2Nlc3NDb25uZWN0aW9uKCkKIHsKLSAgICBpZiAoIW1fdXNlc05ldHdvcmtQcm9jZXNzKQot
ICAgICAgICByZXR1cm47Ci0KICAgICBpZiAobV9uZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24pCiAg
ICAgICAgIHJldHVybjsKIApAQCAtNDIyLDcgKzM4Myw2IEBAIHZvaWQgV2ViUHJvY2Vzczo6ZW5z
dXJlTmV0d29ya1Byb2Nlc3NDb24KICAgICAgICAgcmV0dXJuOwogICAgIG1fbmV0d29ya1Byb2Nl
c3NDb25uZWN0aW9uID0gTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uOjpjcmVhdGUoY29ubmVjdGlv
bklkZW50aWZpZXIpOwogfQotI2VuZGlmIC8vIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCiAKIHZv
aWQgV2ViUHJvY2Vzczo6cmVnaXN0ZXJVUkxTY2hlbWVBc0VtcHR5RG9jdW1lbnQoY29uc3QgU3Ry
aW5nJiB1cmxTY2hlbWUpCiB7CkBAIC01MTEsMTQgKzQ3MSw2IEBAIHZvaWQgV2ViUHJvY2Vzczo6
ZGVzdHJveVByaXZhdGVCcm93c2luZ1MKICNlbmRpZgogfQogCi1Eb3dubG9hZE1hbmFnZXImIFdl
YlByb2Nlc3M6OmRvd25sb2FkTWFuYWdlcigpCi17Ci0gICAgQVNTRVJUKCF1c2VzTmV0d29ya1By
b2Nlc3MoKSk7Ci0KLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8RG93bmxvYWRNYW5hZ2VyPiBk
b3dubG9hZE1hbmFnZXIodGhpcyk7Ci0gICAgcmV0dXJuIGRvd25sb2FkTWFuYWdlcjsKLX0KLQog
I2lmIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJKQogUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25N
YW5hZ2VyJiBXZWJQcm9jZXNzOjpwbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbk1hbmFnZXIoKQogewpA
QCAtNTgxLDcgKzUzMyw2IEBAIHZvaWQgV2ViUHJvY2Vzczo6cmVtb3ZlV2ViUGFnZSh1aW50NjRf
dCAKIGJvb2wgV2ViUHJvY2Vzczo6c2hvdWxkVGVybWluYXRlKCkKIHsKICAgICBBU1NFUlQobV9w
YWdlTWFwLmlzRW1wdHkoKSk7Ci0gICAgQVNTRVJUKHVzZXNOZXR3b3JrUHJvY2VzcygpIHx8ICFk
b3dubG9hZE1hbmFnZXIoKS5pc0Rvd25sb2FkaW5nKCkpOwogCiAgICAgLy8gRklYTUU6IHRoZSBT
aG91bGRUZXJtaW5hdGUgbWVzc2FnZSBzaG91bGQgYWxzbyBzZW5kIHRlcm1pbmF0aW9uIHBhcmFt
ZXRlcnMsIHN1Y2ggYXMgYW55IHNlc3Npb24gY29va2llcyB0aGF0IG5lZWQgdG8gYmUgcHJlc2Vy
dmVkLgogICAgIGJvb2wgc2hvdWxkVGVybWluYXRlID0gZmFsc2U7CkBAIC0xMDI1LDIwICs5NzYs
OCBAQCB2b2lkIFdlYlByb2Nlc3M6OnNldEluamVjdGVkQnVuZGxlUGFyYW1lCiAgICAgaW5qZWN0
ZWRCdW5kbGUtPnNldEJ1bmRsZVBhcmFtZXRlcnModmFsdWUpOwogfQogCi1ib29sIFdlYlByb2Nl
c3M6OnVzZXNOZXR3b3JrUHJvY2VzcygpIGNvbnN0Ci17Ci0jaWYgRU5BQkxFKE5FVFdPUktfUFJP
Q0VTUykKLSAgICByZXR1cm4gbV91c2VzTmV0d29ya1Byb2Nlc3M7Ci0jZWxzZQotICAgIHJldHVy
biBmYWxzZTsKLSNlbmRpZgotfQotCi0jaWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKIE5ldHdv
cmtQcm9jZXNzQ29ubmVjdGlvbiogV2ViUHJvY2Vzczo6bmV0d29ya0Nvbm5lY3Rpb24oKQogewot
ICAgIEFTU0VSVChtX3VzZXNOZXR3b3JrUHJvY2Vzcyk7Ci0KICAgICAvLyBJZiB3ZSd2ZSBsb3N0
IG91ciBjb25uZWN0aW9uIHRvIHRoZSBuZXR3b3JrIHByb2Nlc3MgKGUuZy4gaXQgY3Jhc2hlZCkg
dHJ5IHRvIHJlLWVzdGFibGlzaCBpdC4KICAgICBpZiAoIW1fbmV0d29ya1Byb2Nlc3NDb25uZWN0
aW9uKQogICAgICAgICBlbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKTsKQEAgLTEwNjQs
NyArMTAwMyw2IEBAIFdlYlJlc291cmNlTG9hZFNjaGVkdWxlciYgV2ViUHJvY2Vzczo6d2UKIHsK
ICAgICByZXR1cm4gKm1fd2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVyOwogfQotI2VuZGlmIC8vIEVO
QUJMRUQoTkVUV09SS19QUk9DRVNTKQogCiAjaWYgRU5BQkxFKERBVEFCQVNFX1BST0NFU1MpCiB2
b2lkIFdlYlByb2Nlc3M6OndlYlRvRGF0YWJhc2VQcm9jZXNzQ29ubmVjdGlvbkNsb3NlZChXZWJU
b0RhdGFiYXNlUHJvY2Vzc0Nvbm5lY3Rpb24qIGNvbm5lY3Rpb24pCkBAIC0xMTA4LDI3ICsxMDQ2
LDYgQEAgdm9pZCBXZWJQcm9jZXNzOjplbnN1cmVXZWJUb0RhdGFiYXNlUHJvYwogCiAjZW5kaWYg
Ly8gRU5BQkxFRChEQVRBQkFTRV9QUk9DRVNTKQogCi12b2lkIFdlYlByb2Nlc3M6OmRvd25sb2Fk
UmVxdWVzdChTZXNzaW9uSUQgc2Vzc2lvbklELCB1aW50NjRfdCBkb3dubG9hZElELCB1aW50NjRf
dCBpbml0aWF0aW5nUGFnZUlELCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCi17Ci0g
ICAgV2ViUGFnZSogaW5pdGlhdGluZ1BhZ2UgPSBpbml0aWF0aW5nUGFnZUlEID8gd2ViUGFnZShp
bml0aWF0aW5nUGFnZUlEKSA6IDA7Ci0KLSAgICBSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdFdpdGhP
cmlnaW5hbFVSTCA9IHJlcXVlc3Q7Ci0gICAgaWYgKGluaXRpYXRpbmdQYWdlKQotICAgICAgICBp
bml0aWF0aW5nUGFnZS0+bWFpbkZyYW1lKCktPmxvYWRlcigpLnNldE9yaWdpbmFsVVJMRm9yRG93
bmxvYWRSZXF1ZXN0KHJlcXVlc3RXaXRoT3JpZ2luYWxVUkwpOwotCi0gICAgZG93bmxvYWRNYW5h
Z2VyKCkuc3RhcnREb3dubG9hZChzZXNzaW9uSUQsIGRvd25sb2FkSUQsIHJlcXVlc3RXaXRoT3Jp
Z2luYWxVUkwpOwotfQotCi12b2lkIFdlYlByb2Nlc3M6OnJlc3VtZURvd25sb2FkKHVpbnQ2NF90
IGRvd25sb2FkSUQsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgcmVzdW1lRGF0YSwgY29uc3Qg
U3RyaW5nJiBwYXRoLCBjb25zdCBXZWJLaXQ6OlNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYgc2Fu
ZGJveEV4dGVuc2lvbkhhbmRsZSkKLXsKLSAgICBkb3dubG9hZE1hbmFnZXIoKS5yZXN1bWVEb3du
bG9hZChkb3dubG9hZElELCByZXN1bWVEYXRhLCBwYXRoLCBzYW5kYm94RXh0ZW5zaW9uSGFuZGxl
KTsKLX0KLQotdm9pZCBXZWJQcm9jZXNzOjpjYW5jZWxEb3dubG9hZCh1aW50NjRfdCBkb3dubG9h
ZElEKQotewotICAgIGRvd25sb2FkTWFuYWdlcigpLmNhbmNlbERvd25sb2FkKGRvd25sb2FkSUQp
OwotfQotCiB2b2lkIFdlYlByb2Nlc3M6OnNldEVuaGFuY2VkQWNjZXNzaWJpbGl0eShib29sIGZs
YWcpCiB7CiAgICAgV2ViQ29yZTo6QVhPYmplY3RDYWNoZTo6c2V0RW5oYW5jZWRVc2VySW50ZXJm
YWNlQWNjZXNzaWJpbGl0eShmbGFnKTsKQEAgLTE0NzAsMTggKzEzODcsMTIgQEAgdm9pZCBXZWJQ
cm9jZXNzOjpwcmVmZXRjaEROUyhjb25zdCBTdHJpbgogICAgIGlmIChob3N0bmFtZS5pc0VtcHR5
KCkpCiAgICAgICAgIHJldHVybjsKIAotI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCi0gICAg
aWYgKHVzZXNOZXR3b3JrUHJvY2VzcygpKSB7Ci0gICAgICAgIGlmIChtX2Ruc1ByZWZldGNoZWRI
b3N0cy5hZGQoaG9zdG5hbWUpLmlzTmV3RW50cnkpCi0gICAgICAgICAgICBuZXR3b3JrQ29ubmVj
dGlvbigpLT5jb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzOjpQcmVmZXRjaEROUyhob3N0bmFtZSksIDApOwotICAgICAgICAvLyBUaGUgRE5T
IHByZWZldGNoZWQgaG9zdHMgY2FjaGUgaXMgb25seSB0byBhdm9pZCBhc2tpbmcgZm9yIHRoZSBz
YW1lIGhvc3RzIHRvbyBtYW55IHRpbWVzCi0gICAgICAgIC8vIGluIGEgdmVyeSBzaG9ydCBwZXJp
b2Qgb2YgdGltZSwgcHJvZHVjaW5nIGEgbG90IG9mIElQQyB0cmFmZmljLiBTbyB3ZSBjbGVhciB0
aGlzIGNhY2hlIGFmdGVyCi0gICAgICAgIC8vIHNvbWUgdGltZSBvZiBubyBETlMgcmVxdWVzdHMu
Ci0gICAgICAgIG1fZG5zUHJlZmV0Y2hIeXN0ZXJlcmlzLmltcHVsc2UoKTsKLSAgICAgICAgcmV0
dXJuOwotICAgIH0KLSNlbmRpZgotICAgIFdlYkNvcmU6OnByZWZldGNoRE5TKGhvc3RuYW1lKTsK
KyAgICBpZiAobV9kbnNQcmVmZXRjaGVkSG9zdHMuYWRkKGhvc3RuYW1lKS5pc05ld0VudHJ5KQor
ICAgICAgICBuZXR3b3JrQ29ubmVjdGlvbigpLT5jb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6
Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpQcmVmZXRjaEROUyhob3N0bmFtZSksIDAp
OworICAgIC8vIFRoZSBETlMgcHJlZmV0Y2hlZCBob3N0cyBjYWNoZSBpcyBvbmx5IHRvIGF2b2lk
IGFza2luZyBmb3IgdGhlIHNhbWUgaG9zdHMgdG9vIG1hbnkgdGltZXMKKyAgICAvLyBpbiBhIHZl
cnkgc2hvcnQgcGVyaW9kIG9mIHRpbWUsIHByb2R1Y2luZyBhIGxvdCBvZiBJUEMgdHJhZmZpYy4g
U28gd2UgY2xlYXIgdGhpcyBjYWNoZSBhZnRlcgorICAgIC8vIHNvbWUgdGltZSBvZiBubyBETlMg
cmVxdWVzdHMuCisgICAgbV9kbnNQcmVmZXRjaEh5c3RlcmVyaXMuaW1wdWxzZSgpOwogfQogCiB9
IC8vIG5hbWVzcGFjZSBXZWJLaXQKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UHJvY2Vzcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJv
Y2Vzcy5oCShyZXZpc2lvbiAxOTI2MDEpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlByb2Nlc3MuaAkod29ya2luZyBjb3B5KQpAQCAtMjgsNyArMjgsNiBAQAogCiAjaW5jbHVkZSAi
Q2FjaGVNb2RlbC5oIgogI2luY2x1ZGUgIkNoaWxkUHJvY2Vzcy5oIgotI2luY2x1ZGUgIkRvd25s
b2FkTWFuYWdlci5oIgogI2luY2x1ZGUgIkRyYXdpbmdBcmVhLmgiCiAjaW5jbHVkZSAiUGx1Z2lu
UHJvY2Vzc0Nvbm5lY3Rpb25NYW5hZ2VyLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VDYWNoZXNUb0Ns
ZWFyLmgiCkBAIC03MSw5ICs3MCw5IEBAIHN0cnVjdCBTZWN1cml0eU9yaWdpbkRhdGE7CiAKIG5h
bWVzcGFjZSBXZWJLaXQgewogCi1jbGFzcyBEb3dubG9hZE1hbmFnZXI7CiBjbGFzcyBFdmVudERp
c3BhdGNoZXI7CiBjbGFzcyBJbmplY3RlZEJ1bmRsZTsKK2NsYXNzIE5ldHdvcmtQcm9jZXNzQ29u
bmVjdGlvbjsKIGNsYXNzIE9iakNPYmplY3RHcmFwaDsKIGNsYXNzIFVzZXJEYXRhOwogY2xhc3Mg
V2ViQ29ubmVjdGlvblRvVUlQcm9jZXNzOwpAQCAtODIsMjIgKzgxLDE3IEBAIGNsYXNzIFdlYklj
b25EYXRhYmFzZVByb3h5OwogY2xhc3MgV2ViUGFnZTsKIGNsYXNzIFdlYlBhZ2VHcm91cFByb3h5
OwogY2xhc3MgV2ViUHJvY2Vzc1N1cHBsZW1lbnQ7CitjbGFzcyBXZWJSZXNvdXJjZUxvYWRTY2hl
ZHVsZXI7CiBzdHJ1Y3QgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVyczsKIHN0cnVjdCBXZWJQYWdl
R3JvdXBEYXRhOwogc3RydWN0IFdlYlByZWZlcmVuY2VzU3RvcmU7CiBzdHJ1Y3QgV2ViUHJvY2Vz
c0NyZWF0aW9uUGFyYW1ldGVyczsKIAotI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCi1jbGFz
cyBOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb247Ci1jbGFzcyBXZWJSZXNvdXJjZUxvYWRTY2hlZHVs
ZXI7Ci0jZW5kaWYKLQogI2lmIEVOQUJMRShEQVRBQkFTRV9QUk9DRVNTKQogY2xhc3MgV2ViVG9E
YXRhYmFzZVByb2Nlc3NDb25uZWN0aW9uOwogI2VuZGlmCiAKLWNsYXNzIFdlYlByb2Nlc3MgOiBw
dWJsaWMgQ2hpbGRQcm9jZXNzLCBwcml2YXRlIERvd25sb2FkTWFuYWdlcjo6Q2xpZW50IHsKLSAg
ICBmcmllbmQgY2xhc3MgTmV2ZXJEZXN0cm95ZWQ8RG93bmxvYWRNYW5hZ2VyPjsKK2NsYXNzIFdl
YlByb2Nlc3MgOiBwdWJsaWMgQ2hpbGRQcm9jZXNzIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgV2Vi
UHJvY2VzcyYgc2luZ2xldG9uKCk7CiAKQEAgLTE0Nyw3ICsxNDEsNiBAQCBwdWJsaWM6CiAjZW5k
aWYKICAgICAKICAgICBjb25zdCBUZXh0Q2hlY2tlclN0YXRlJiB0ZXh0Q2hlY2tlclN0YXRlKCkg
Y29uc3QgeyByZXR1cm4gbV90ZXh0Q2hlY2tlclN0YXRlOyB9Ci0gICAgRG93bmxvYWRNYW5hZ2Vy
JiBkb3dubG9hZE1hbmFnZXIoKTsKIAogICAgIHZvaWQgY2xlYXJSZXNvdXJjZUNhY2hlcyhSZXNv
dXJjZUNhY2hlc1RvQ2xlYXIgPSBBbGxSZXNvdXJjZUNhY2hlcyk7CiAgICAgCkBAIC0xNTcsMTMg
KzE1MCw5IEBAIHB1YmxpYzoKIAogICAgIEV2ZW50RGlzcGF0Y2hlciYgZXZlbnREaXNwYXRjaGVy
KCkgeyByZXR1cm4gKm1fZXZlbnREaXNwYXRjaGVyOyB9CiAKLSAgICBib29sIHVzZXNOZXR3b3Jr
UHJvY2VzcygpIGNvbnN0OwotCi0jaWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKICAgICBOZXR3
b3JrUHJvY2Vzc0Nvbm5lY3Rpb24qIG5ldHdvcmtDb25uZWN0aW9uKCk7CiAgICAgdm9pZCBuZXR3
b3JrUHJvY2Vzc0Nvbm5lY3Rpb25DbG9zZWQoTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKik7CiAg
ICAgV2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVyJiB3ZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXIoKTsK
LSNlbmRpZgogCiAjaWYgRU5BQkxFKERBVEFCQVNFX1BST0NFU1MpCiAgICAgdm9pZCB3ZWJUb0Rh
dGFiYXNlUHJvY2Vzc0Nvbm5lY3Rpb25DbG9zZWQoV2ViVG9EYXRhYmFzZVByb2Nlc3NDb25uZWN0
aW9uKik7CkBAIC0yMjIsMTIgKzIxMSw2IEBAIHByaXZhdGU6CiAgICAgV2ViUHJvY2VzcygpOwog
ICAgIH5XZWJQcm9jZXNzKCk7CiAKLSAgICAvLyBEb3dubG9hZE1hbmFnZXI6OkNsaWVudC4KLSAg
ICB2aXJ0dWFsIHZvaWQgZGlkQ3JlYXRlRG93bmxvYWQoKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFs
IHZvaWQgZGlkRGVzdHJveURvd25sb2FkKCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBJUEM6OkNv
bm5lY3Rpb24qIGRvd25sb2FkUHJveHlDb25uZWN0aW9uKCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVh
bCBBdXRoZW50aWNhdGlvbk1hbmFnZXImIGRvd25sb2Fkc0F1dGhlbnRpY2F0aW9uTWFuYWdlcigp
IG92ZXJyaWRlOwotCiAgICAgdm9pZCBpbml0aWFsaXplV2ViUHJvY2VzcyhXZWJQcm9jZXNzQ3Jl
YXRpb25QYXJhbWV0ZXJzJiYpOwogICAgIHZvaWQgcGxhdGZvcm1Jbml0aWFsaXplV2ViUHJvY2Vz
cyhXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzJiYpOwogCkBAIC0zNTksMTQgKzM0MiwxMSBA
QCBwcml2YXRlOgogCiAgICAgV2ViSWNvbkRhdGFiYXNlUHJveHkqIG1faWNvbkRhdGFiYXNlUHJv
eHk7CiAKLSNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQogICAgIHZvaWQgZW5zdXJlTmV0d29y
a1Byb2Nlc3NDb25uZWN0aW9uKCk7CiAgICAgUmVmUHRyPE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlv
bj4gbV9uZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb247Ci0gICAgYm9vbCBtX3VzZXNOZXR3b3JrUHJv
Y2VzczsKICAgICBXZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXIqIG1fd2ViUmVzb3VyY2VMb2FkU2No
ZWR1bGVyOwogICAgIEhhc2hTZXQ8U3RyaW5nPiBtX2Ruc1ByZWZldGNoZWRIb3N0czsKICAgICBX
ZWJDb3JlOjpIeXN0ZXJlc2lzQWN0aXZpdHkgbV9kbnNQcmVmZXRjaEh5c3RlcmVyaXM7Ci0jZW5k
aWYKIAogI2lmIEVOQUJMRShEQVRBQkFTRV9QUk9DRVNTKQogICAgIHZvaWQgZW5zdXJlV2ViVG9E
YXRhYmFzZVByb2Nlc3NDb25uZWN0aW9uKCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCShyZXZpc2lvbiAxOTI2MDEpCisrKyBT
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMuaW4JKHdvcmtpbmcg
Y29weSkKQEAgLTYyLDEyICs2Miw2IEBAIG1lc3NhZ2VzIC0+IFdlYlByb2Nlc3MgTGVnYWN5UmVj
ZWl2ZXIgewogICAgIHZvaWQgU3RhcnRNZW1vcnlTYW1wbGVyKFdlYktpdDo6U2FuZGJveEV4dGVu
c2lvbjo6SGFuZGxlIHNhbXBsZUxvZ0ZpbGVIYW5kbGUsIFN0cmluZyBzYW1wbGVMb2dGaWxlUGF0
aCwgZG91YmxlIGludGVydmFsKTsKICAgICB2b2lkIFN0b3BNZW1vcnlTYW1wbGVyKCk7CiAKLSAg
ICAjIERvd25sb2Fkcy4gVGhpcyBzaG91bGQgcmVhbGx5IGJlIGluIGEgRG93bmxvYWQubWVzc2Fn
ZXMuaW4sIGJ1dCBpdCBzZWVtZWQgdW5uZWNlc3NhcnkgdG8gY3JlYXRlIGEgbmV3IGZpbGUganVz
dCBmb3IKLSAgICAjIHRocmVlIG1lc3NhZ2VzLgotICAgIERvd25sb2FkUmVxdWVzdChXZWJDb3Jl
OjpTZXNzaW9uSUQgc2Vzc2lvbklELCB1aW50NjRfdCBkb3dubG9hZElELCB1aW50NjRfdCBpbml0
aWF0aW5nUGFnZUlELCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdCkKLSAgICBSZXN1
bWVEb3dubG9hZCh1aW50NjRfdCBkb3dubG9hZElELCBJUEM6OkRhdGFSZWZlcmVuY2UgcmVzdW1l
RGF0YSwgU3RyaW5nIHBhdGgsIFdlYktpdDo6U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlIHNhbmRi
b3hFeHRlbnNpb25IYW5kbGUpCi0gICAgQ2FuY2VsRG93bmxvYWQodWludDY0X3QgZG93bmxvYWRJ
RCkKLQogICAgIFNldFRleHRDaGVja2VyU3RhdGUoc3RydWN0IFdlYktpdDo6VGV4dENoZWNrZXJT
dGF0ZSB0ZXh0Q2hlY2tlclN0YXRlKQogCiAgICAgU2V0RW5oYW5jZWRBY2Nlc3NpYmlsaXR5KGJv
b2wgZmxhZykKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvRmlsZUFQSS9CbG9iUmVn
aXN0cnlQcm94eS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9G
aWxlQVBJL0Jsb2JSZWdpc3RyeVByb3h5LmNwcAkocmV2aXNpb24gMTkyNjAxKQorKysgU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9GaWxlQVBJL0Jsb2JSZWdpc3RyeVByb3h5LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMjYsOCArMjYsNiBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUg
IkJsb2JSZWdpc3RyeVByb3h5LmgiCiAKLSNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQotCiAj
aW5jbHVkZSAiTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3NNZXNzYWdlcy5oIgogI2luY2x1
ZGUgIk5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5oIgogI2luY2x1ZGUgIldlYkNvcmVBcmd1bWVu
dENvZGVycy5oIgpAQCAtNDAsOCArMzgsNiBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogdm9pZCBC
bG9iUmVnaXN0cnlQcm94eTo6cmVnaXN0ZXJGaWxlQmxvYlVSTChjb25zdCBXZWJDb3JlOjpVUkwm
IHVybCwgUGFzc1JlZlB0cjxCbG9iRGF0YUZpbGVSZWZlcmVuY2U+IGZpbGUsIGNvbnN0IFN0cmlu
ZyYgY29udGVudFR5cGUpCiB7Ci0gICAgQVNTRVJUKFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnVz
ZXNOZXR3b3JrUHJvY2VzcygpKTsKLQogICAgIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSBleHRl
bnNpb25IYW5kbGU7CiAKICAgICAvLyBGaWxlIHBhdGggY2FuIGJlIGVtcHR5IHdoZW4gc3VibWl0
dGluZyBhIGZvcm0gZmlsZSBpbnB1dCB3aXRob3V0IGEgZmlsZSwgc2VlIGJ1ZyAxMTE3NzguCkBA
IC01MywzNiArNDksMjYgQEAgdm9pZCBCbG9iUmVnaXN0cnlQcm94eTo6cmVnaXN0ZXJGaWxlQmxv
YgogCiB2b2lkIEJsb2JSZWdpc3RyeVByb3h5OjpyZWdpc3RlckJsb2JVUkwoY29uc3QgVVJMJiB1
cmwsIFZlY3RvcjxCbG9iUGFydD4gYmxvYlBhcnRzLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBl
KQogewotICAgIEFTU0VSVChXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS51c2VzTmV0d29ya1Byb2Nl
c3MoKSk7Ci0KICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5uZXR3b3JrQ29ubmVjdGlvbigp
LT5jb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzOjpSZWdpc3RlckJsb2JVUkwodXJsLCBibG9iUGFydHMsIGNvbnRlbnRUeXBlKSwgMCk7CiB9
CiAKIHZvaWQgQmxvYlJlZ2lzdHJ5UHJveHk6OnJlZ2lzdGVyQmxvYlVSTChjb25zdCBVUkwmIHVy
bCwgY29uc3QgVVJMJiBzcmNVUkwpCiB7Ci0gICAgQVNTRVJUKFdlYlByb2Nlc3M6OnNpbmdsZXRv
bigpLnVzZXNOZXR3b3JrUHJvY2VzcygpKTsKLQogICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigp
Lm5ldHdvcmtDb25uZWN0aW9uKCktPmNvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6TmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OlJlZ2lzdGVyQmxvYlVSTEZyb21VUkwodXJsLCBzcmNV
UkwpLCAwKTsKIH0KIAogdm9pZCBCbG9iUmVnaXN0cnlQcm94eTo6dW5yZWdpc3RlckJsb2JVUkwo
Y29uc3QgVVJMJiB1cmwpCiB7Ci0gICAgQVNTRVJUKFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnVz
ZXNOZXR3b3JrUHJvY2VzcygpKTsKLQogICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLm5ldHdv
cmtDb25uZWN0aW9uKCktPmNvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6TmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3M6OlVucmVnaXN0ZXJCbG9iVVJMKHVybCksIDApOwogfQogCiB2b2lk
IEJsb2JSZWdpc3RyeVByb3h5OjpyZWdpc3RlckJsb2JVUkxGb3JTbGljZShjb25zdCBVUkwmIHVy
bCwgY29uc3QgVVJMJiBzcmNVUkwsIGxvbmcgbG9uZyBzdGFydCwgbG9uZyBsb25nIGVuZCkKIHsK
LSAgICBBU1NFUlQoV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkudXNlc05ldHdvcmtQcm9jZXNzKCkp
OwotCiAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkubmV0d29ya0Nvbm5lY3Rpb24oKS0+Y29u
bmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6
UmVnaXN0ZXJCbG9iVVJMRm9yU2xpY2UodXJsLCBzcmNVUkwsIHN0YXJ0LCBlbmQpLCAwKTsKIH0K
IAogdW5zaWduZWQgbG9uZyBsb25nIEJsb2JSZWdpc3RyeVByb3h5OjpibG9iU2l6ZShjb25zdCBV
UkwmIHVybCkKIHsKLSAgICBBU1NFUlQoV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkudXNlc05ldHdv
cmtQcm9jZXNzKCkpOwotCiAgICAgdWludDY0X3QgcmVzdWx0U2l6ZTsKICAgICBpZiAoIVdlYlBy
b2Nlc3M6OnNpbmdsZXRvbigpLm5ldHdvcmtDb25uZWN0aW9uKCktPmNvbm5lY3Rpb24oKS0+c2Vu
ZFN5bmMoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpCbG9iU2l6ZSh1
cmwpLCBNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkJsb2JTaXplOjpS
ZXBseShyZXN1bHRTaXplKSwgMCkpCiAgICAgICAgIHJldHVybiAwOwpAQCAtOTAsNSArNzYsMyBA
QCB1bnNpZ25lZCBsb25nIGxvbmcgQmxvYlJlZ2lzdHJ5UHJveHk6OmJsCiB9CiAKIH0KLQotI2Vu
ZGlmIC8vIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL0ZpbGVBUEkvQmxvYlJlZ2lzdHJ5UHJveHkuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL0ZpbGVBUEkvQmxvYlJlZ2lzdHJ5UHJveHkuaAkocmV2aXNpb24g
MTkyNjAxKQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9GaWxlQVBJL0Jsb2JSZWdpc3Ry
eVByb3h5LmgJKHdvcmtpbmcgY29weSkKQEAgLTI2LDggKzI2LDYgQEAKICNpZm5kZWYgQmxvYlJl
Z2lzdHJ5UHJveHlfaAogI2RlZmluZSBCbG9iUmVnaXN0cnlQcm94eV9oCiAKLSNpZiBFTkFCTEUo
TkVUV09SS19QUk9DRVNTKQotCiAjaW5jbHVkZSA8V2ViQ29yZS9CbG9iUmVnaXN0cnkuaD4KIAog
bmFtZXNwYWNlIFdlYktpdCB7CkBAIC00NCw2ICs0Miw0IEBAIHB1YmxpYzoKIAogfQogCi0jZW5k
aWYgLy8gRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKLQogI2VuZGlmIC8vIEJsb2JSZWdpc3RyeVBy
b3h5X2gKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJv
Y2Vzc0Nvbm5lY3Rpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCShyZXZpc2lvbiAxOTI2MDEp
CisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25u
ZWN0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzcsOCArMzcsNiBAQAogI2luY2x1ZGUgPFdl
YkNvcmUvU2Vzc2lvbklELmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TaGFyZWRCdWZmZXIuaD4KIAot
I2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCi0KIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwog
CiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTk4LDUgKzk2LDMgQEAgdm9pZCBOZXR3b3JrUHJvY2Vz
c0Nvbm5lY3Rpb246OmRpZENhY2hlUgogI2VuZGlmCiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAot
Ci0jZW5kaWYgLy8gRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKSW5kZXg6IFNvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25u
ZWN0aW9uLmgJKHJldmlzaW9uIDE5MjYwMSkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
TmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uaAkod29ya2luZyBjb3B5KQpAQCAtMzEs
OCArMzEsNiBAQAogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL3Rl
eHQvV1RGU3RyaW5nLmg+CiAKLSNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQotCiBuYW1lc3Bh
Y2UgSVBDIHsKIGNsYXNzIERhdGFSZWZlcmVuY2U7CiB9CkBAIC04Miw3ICs4MCw0IEBAIHByaXZh
dGU6CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCi0jZW5kaWYgLy8gRU5BQkxFKE5FVFdPUktf
UFJPQ0VTUykKLQotCiAjZW5kaWYgLy8gTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uX2gKSW5kZXg6
IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rp
b24ubWVzc2FnZXMuaW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9O
ZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5tZXNzYWdlcy5pbgkocmV2aXNpb24gMTky
NjAxKQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNz
Q29ubmVjdGlvbi5tZXNzYWdlcy5pbgkod29ya2luZyBjb3B5KQpAQCAtMjAsOCArMjAsNiBAQAog
IyBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQogIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogCi0jaWYgRU5BQkxFKE5FVFdP
UktfUFJPQ0VTUykKLQogbWVzc2FnZXMgLT4gTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uIExlZ2Fj
eVJlY2VpdmVyIHsKIAogI2lmIEVOQUJMRShTSEFSRUFCTEVfUkVTT1VSQ0UpCkBAIC0yOSw1ICsy
NywzIEBAIG1lc3NhZ2VzIC0+IE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbiBMZWcKICNlbmRpZgog
CiB9Ci0KLSNlbmRpZiAvLyBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQpJbmRleDogU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZFNjaGVkdWxlci5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNl
TG9hZFNjaGVkdWxlci5jcHAJKHJldmlzaW9uIDE5MjYwMSkKKysrIFNvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXIuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC01Miw4ICs1Miw2IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9TdWJyZXNvdXJjZUxvYWRl
ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KIAotI2lmIEVOQUJMRShORVRXT1JL
X1BST0NFU1MpCi0KIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBuYW1lc3BhY2UgV2ViS2l0
IHsKQEAgLTI4Niw1ICsyODQsMyBAQCB2b2lkIFdlYlJlc291cmNlTG9hZFNjaGVkdWxlcjo6bmV0
d29ya1ByCiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAotCi0jZW5kaWYgLy8gRU5BQkxFKE5F
VFdPUktfUFJPQ0VTUykKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvTmV0d29yay9X
ZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVyLmgJKHJldmlzaW9uIDE5
MjYwMSkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxv
YWRTY2hlZHVsZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzIsOCArMzIsNiBAQAogI2luY2x1ZGUg
PFdlYkNvcmUvUmVzb3VyY2VMb2FkZXIuaD4KICNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgogCi0j
aWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKLQogbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNz
IE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbjsKQEAgLTc3LDYgKzc1LDQgQEAgcHJpdmF0ZToKIAog
fSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKLSNlbmRpZiAvLyBFTkFCTEUoTkVUV09SS19QUk9DRVNT
KQotCiAjZW5kaWYgLy8gV2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVyX2gKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVy
LmNwcAkocmV2aXNpb24gMTkyNjAxKQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9OZXR3
b3JrL1dlYlJlc291cmNlTG9hZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjYsOCArMjYsNiBA
QAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIldlYlJlc291cmNlTG9hZGVyLmgiCiAK
LSNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQotCiAjaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5o
IgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rp
b24uaCIKQEAgLTIyMSw1ICsyMTksMyBAQCB2b2lkIFdlYlJlc291cmNlTG9hZGVyOjpjYW5BdXRo
ZW50aWNhdGVBCiAjZW5kaWYKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KLSNlbmRpZiAvLyBF
TkFCTEUoTkVUV09SS19QUk9DRVNTKQpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9O
ZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmgJKHJldmlzaW9uIDE5MjYwMSkK
KysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5o
CSh3b3JraW5nIGNvcHkpCkBAIC0yNiw4ICsyNiw2IEBACiAjaWZuZGVmIFdlYlJlc291cmNlTG9h
ZGVyX2gKICNkZWZpbmUgV2ViUmVzb3VyY2VMb2FkZXJfaAogCi0jaWYgRU5BQkxFKE5FVFdPUktf
UFJPQ0VTUykKLQogI2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIKICNpbmNsdWRlICJNZXNzYWdlU2Vu
ZGVyLmgiCiAjaW5jbHVkZSAiU2hhcmVhYmxlUmVzb3VyY2UuaCIKQEAgLTk0LDYgKzkyLDQgQEAg
cHJpdmF0ZToKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKLSNlbmRpZiAvLyBFTkFCTEUoTkVU
V09SS19QUk9DRVNTKQotCiAjZW5kaWYgLy8gV2ViUmVzb3VyY2VMb2FkZXJfaApJbmRleDogU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLm1lc3NhZ2Vz
LmluCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvTmV0d29yay9XZWJS
ZXNvdXJjZUxvYWRlci5tZXNzYWdlcy5pbgkocmV2aXNpb24gMTkyNjAxKQorKysgU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLm1lc3NhZ2VzLmluCSh3
b3JraW5nIGNvcHkpCkBAIC0yMCw4ICsyMCw2IEBACiAjIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCiAj
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCiAKLSNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQotCiBtZXNzYWdlcyAt
PiBXZWJSZXNvdXJjZUxvYWRlciBMZWdhY3lSZWNlaXZlciB7CiAgICAgV2lsbFNlbmRSZXF1ZXN0
KFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCByZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJlc3Bv
bnNlIHJlZGlyZWN0UmVzcG9uc2UpCiAgICAgRGlkU2VuZERhdGEodWludDY0X3QgYnl0ZXNTZW50
LCB1aW50NjRfdCB0b3RhbEJ5dGVzVG9CZVNlbnQpCkBAIC0zOSw1ICszNywzIEBAIG1lc3NhZ2Vz
IC0+IFdlYlJlc291cmNlTG9hZGVyIExlZ2FjeVJlY2UKICAgICBEaWRSZWNlaXZlUmVzb3VyY2Uo
V2ViS2l0OjpTaGFyZWFibGVSZXNvdXJjZTo6SGFuZGxlIHJlc291cmNlLCBkb3VibGUgZmluaXNo
VGltZSkKICNlbmRpZgogfQotCi0jZW5kaWYgLy8gRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZUJy
b3dzZXJGdW5jcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Q
bHVnaW5zL05ldHNjYXBlL05ldHNjYXBlQnJvd3NlckZ1bmNzLmNwcAkocmV2aXNpb24gMTkyNjAx
KQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBl
QnJvd3NlckZ1bmNzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTA1MywxMSArMTA1Myw3IEBAIHN0
YXRpYyB2b2lkIGluaXRpYWxpemVCcm93c2VyRnVuY3MoTlBOZXQKICAgICBuZXRzY2FwZUZ1bmNz
LnBvcHVwY29udGV4dG1lbnUgPSAwOwogICAgIG5ldHNjYXBlRnVuY3MuY29udmVydHBvaW50ID0g
MDsKICNlbmRpZgotI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCiAgICAgbmV0c2NhcGVGdW5j
cy51cmxyZWRpcmVjdHJlc3BvbnNlID0gTlBOX1VSTFJlZGlyZWN0UmVzcG9uc2U7Ci0jZWxzZQot
ICAgIG5ldHNjYXBlRnVuY3MudXJscmVkaXJlY3RyZXNwb25zZSA9IDA7Ci0jZW5kaWYKIH0KICAg
ICAKIE5QTmV0c2NhcGVGdW5jcyogbmV0c2NhcGVCcm93c2VyRnVuY3MoKQpJbmRleDogU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUv
TmV0c2NhcGVQbHVnaW4uY3BwCShyZXZpc2lvbiAxOTI2MDEpCisrKyBTb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4uY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC00MDAsMTYgKzQwMCwxMiBAQCBib29sIE5ldHNjYXBlUGx1Z2luOjpnZXRBdXRoZW50
aWNhdGlvbkluCiAKIHZvaWQgTmV0c2NhcGVQbHVnaW46OnJlZ2lzdGVyUmVkaXJlY3QoTmV0c2Nh
cGVQbHVnaW5TdHJlYW0qIHN0cmVhbSwgY29uc3QgVVJMJiByZXF1ZXN0VVJMLCBpbnQgcmVkaXJl
Y3RSZXNwb25zZVN0YXR1cywgdm9pZCogbm90aWZpY2F0aW9uRGF0YSkKIHsKLSNpZiBFTkFCTEUo
TkVUV09SS19QUk9DRVNTKQogICAgIC8vIE5QUF9VUkxSZWRpcmVjdE5vdGlmeSBtYXkgc3luY2hy
b25vdXNseSByZXF1ZXN0IHRoaXMgc3RyZWFtIGJhY2sgb3V0LCBzbyBzZXQgaXQgZmlyc3QKICAg
ICBtX3JlZGlyZWN0cy5zZXQobm90aWZpY2F0aW9uRGF0YSwgc3RkOjptYWtlX3BhaXIoc3RyZWFt
LCByZXF1ZXN0VVJMLnN0cmluZygpKSk7CiAgICAgaWYgKCFOUFBfVVJMUmVkaXJlY3ROb3RpZnko
cmVxdWVzdFVSTC5zdHJpbmcoKS51dGY4KCkuZGF0YSgpLCByZWRpcmVjdFJlc3BvbnNlU3RhdHVz
LCBub3RpZmljYXRpb25EYXRhKSkgewogICAgICAgICBtX3JlZGlyZWN0cy50YWtlKG5vdGlmaWNh
dGlvbkRhdGEpOwogICAgICAgICBjb250cm9sbGVyKCktPmNvbnRpbnVlU3RyZWFtTG9hZChzdHJl
YW0tPnN0cmVhbUlEKCkpOwogICAgIH0KLSNlbHNlCi0gICAgY29udHJvbGxlcigpLT5jb250aW51
ZVN0cmVhbUxvYWQoc3RyZWFtLT5zdHJlYW1JRCgpKTsKLSNlbmRpZgogfQogCiB2b2lkIE5ldHNj
YXBlUGx1Z2luOjp1cmxSZWRpcmVjdFJlc3BvbnNlKHZvaWQqIG5vdGlmeURhdGEsIGJvb2wgYWxs
b3cpCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBs
YXRmb3JtU3RyYXRlZ2llcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwCShyZXZpc2lvbiAx
OTI2MDEpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBs
YXRmb3JtU3RyYXRlZ2llcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2LDkgKzI2LDEyIEBACiAj
aW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgiCiAK
KyNpbmNsdWRlICJCbG9iUmVnaXN0cnlQcm94eS5oIgogI2luY2x1ZGUgIkJsb2NraW5nUmVzcG9u
c2VNYXAuaCIKICNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiSGFuZ0RldGVj
dGlvbkRpc2FibGVyLmgiCisjaW5jbHVkZSAiTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3NN
ZXNzYWdlcy5oIgorI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5oIgogI2luY2x1
ZGUgIk5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmgiCiAjaW5jbHVkZSAiUGx1Z2luSW5m
b1N0b3JlLmgiCiAjaW5jbHVkZSAiU2Vzc2lvblRyYWNrZXIuaCIKQEAgLTQ0LDYgKzQ3LDcgQEAK
ICNpbmNsdWRlICJXZWJQYXN0ZWJvYXJkUHJveHlNZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYlBy
b2Nlc3MuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzUHJveHlNZXNzYWdlcy5oIgorI2luY2x1ZGUg
IldlYlJlc291cmNlTG9hZFNjaGVkdWxlci5oIgogI2luY2x1ZGUgPFdlYkNvcmUvQ29sb3IuaD4K
ICNpbmNsdWRlIDxXZWJDb3JlL0RvY3VtZW50TG9hZGVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9J
REJGYWN0b3J5QmFja2VuZEludGVyZmFjZS5oPgpAQCAtNjMsMTMgKzY3LDYgQEAKICNpbmNsdWRl
IDxXZWJDb3JlL1VSTC5oPgogI2luY2x1ZGUgPHd0Zi9BdG9taWNzLmg+CiAKLSNpZiBFTkFCTEUo
TkVUV09SS19QUk9DRVNTKQotI2luY2x1ZGUgIkJsb2JSZWdpc3RyeVByb3h5LmgiCi0jaW5jbHVk
ZSAiTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3NNZXNzYWdlcy5oIgotI2luY2x1ZGUgIk5l
dHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5oIgotI2luY2x1ZGUgIldlYlJlc291cmNlTG9hZFNjaGVk
dWxlci5oIgotI2VuZGlmCi0KIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBuYW1lc3BhY2Ug
V2ViS2l0IHsKQEAgLTExMiwxMTQgKzEwOSw1NiBAQCBQbHVnaW5TdHJhdGVneSogV2ViUGxhdGZv
cm1TdHJhdGVnaWVzOjpjCiAKIFN0cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNvb2tpZXNG
b3JET00oY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBVUkwmIGZp
cnN0UGFydHksIGNvbnN0IFVSTCYgdXJsKQogewotI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1Mp
CiAgICAgYXV0byYgd2ViUHJvY2VzcyA9IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpOwotICAgIGlm
ICh3ZWJQcm9jZXNzLnVzZXNOZXR3b3JrUHJvY2VzcygpKSB7Ci0gICAgICAgIFN0cmluZyByZXN1
bHQ7Ci0gICAgICAgIGlmICghd2ViUHJvY2Vzcy5uZXR3b3JrQ29ubmVjdGlvbigpLT5jb25uZWN0
aW9uKCktPnNlbmRTeW5jKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6
Q29va2llc0ZvckRPTShTZXNzaW9uVHJhY2tlcjo6c2Vzc2lvbklEKHNlc3Npb24pLCBmaXJzdFBh
cnR5LCB1cmwpLCBNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkNvb2tp
ZXNGb3JET006OlJlcGx5KHJlc3VsdCksIDApKQotICAgICAgICAgICAgcmV0dXJuIFN0cmluZygp
OwotICAgICAgICByZXR1cm4gcmVzdWx0OwotICAgIH0KLSNlbmRpZgotCi0gICAgcmV0dXJuIFdl
YkNvcmU6OmNvb2tpZXNGb3JET00oc2Vzc2lvbiwgZmlyc3RQYXJ0eSwgdXJsKTsKKyAgICBTdHJp
bmcgcmVzdWx0OworICAgIGlmICghd2ViUHJvY2Vzcy5uZXR3b3JrQ29ubmVjdGlvbigpLT5jb25u
ZWN0aW9uKCktPnNlbmRTeW5jKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vz
czo6Q29va2llc0ZvckRPTShTZXNzaW9uVHJhY2tlcjo6c2Vzc2lvbklEKHNlc3Npb24pLCBmaXJz
dFBhcnR5LCB1cmwpLCBNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkNv
b2tpZXNGb3JET006OlJlcGx5KHJlc3VsdCksIDApKQorICAgICAgICByZXR1cm4gU3RyaW5nKCk7
CisgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAogdm9pZCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnNl
dENvb2tpZXNGcm9tRE9NKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29u
c3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBjb29raWVT
dHJpbmcpCiB7Ci0jaWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKICAgICBhdXRvJiB3ZWJQcm9j
ZXNzID0gV2ViUHJvY2Vzczo6c2luZ2xldG9uKCk7Ci0gICAgaWYgKHdlYlByb2Nlc3MudXNlc05l
dHdvcmtQcm9jZXNzKCkpIHsKLSAgICAgICAgd2ViUHJvY2Vzcy5uZXR3b3JrQ29ubmVjdGlvbigp
LT5jb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzOjpTZXRDb29raWVzRnJvbURPTShTZXNzaW9uVHJhY2tlcjo6c2Vzc2lvbklEKHNlc3Npb24p
LCBmaXJzdFBhcnR5LCB1cmwsIGNvb2tpZVN0cmluZyksIDApOwotICAgICAgICByZXR1cm47Ci0g
ICAgfQotI2VuZGlmCi0KLSAgICBXZWJDb3JlOjpzZXRDb29raWVzRnJvbURPTShzZXNzaW9uLCBm
aXJzdFBhcnR5LCB1cmwsIGNvb2tpZVN0cmluZyk7CisgICAgd2ViUHJvY2Vzcy5uZXR3b3JrQ29u
bmVjdGlvbigpLT5jb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzOjpTZXRDb29raWVzRnJvbURPTShTZXNzaW9uVHJhY2tlcjo6c2Vzc2lvbklE
KHNlc3Npb24pLCBmaXJzdFBhcnR5LCB1cmwsIGNvb2tpZVN0cmluZyksIDApOwogfQogCiBib29s
IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y29va2llc0VuYWJsZWQoY29uc3QgTmV0d29ya1N0b3Jh
Z2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFVSTCYgdXJs
KQogewotI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCi0gICAgYXV0byYgd2ViUHJvY2VzcyA9
IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpOwotICAgIGlmICh3ZWJQcm9jZXNzLnVzZXNOZXR3b3Jr
UHJvY2VzcygpKSB7Ci0gICAgICAgIGJvb2wgcmVzdWx0OwotICAgICAgICBpZiAoIXdlYlByb2Nl
c3MubmV0d29ya0Nvbm5lY3Rpb24oKS0+Y29ubmVjdGlvbigpLT5zZW5kU3luYyhNZXNzYWdlczo6
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkNvb2tpZXNFbmFibGVkKFNlc3Npb25UcmFj
a2VyOjpzZXNzaW9uSUQoc2Vzc2lvbiksIGZpcnN0UGFydHksIHVybCksIE1lc3NhZ2VzOjpOZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Q29va2llc0VuYWJsZWQ6OlJlcGx5KHJlc3VsdCks
IDApKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICByZXR1cm4gcmVzdWx0Owot
ICAgIH0KLSNlbmRpZgotCi0gICAgcmV0dXJuIFdlYkNvcmU6OmNvb2tpZXNFbmFibGVkKHNlc3Np
b24sIGZpcnN0UGFydHksIHVybCk7CisgICAgYm9vbCByZXN1bHQ7CisgICAgaWYgKCFXZWJQcm9j
ZXNzOjpzaW5nbGV0b24oKS5uZXR3b3JrQ29ubmVjdGlvbigpLT5jb25uZWN0aW9uKCktPnNlbmRT
eW5jKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Q29va2llc0VuYWJs
ZWQoU2Vzc2lvblRyYWNrZXI6OnNlc3Npb25JRChzZXNzaW9uKSwgZmlyc3RQYXJ0eSwgdXJsKSwg
TWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpDb29raWVzRW5hYmxlZDo6
UmVwbHkocmVzdWx0KSwgMCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gcmVz
dWx0OwogfQogCiBTdHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjb29raWVSZXF1ZXN0SGVh
ZGVyRmllbGRWYWx1ZShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0
IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgVVJMJiB1cmwpCiB7Ci0jaWYgRU5BQkxFKE5FVFdPUktf
UFJPQ0VTUykKLSAgICBhdXRvJiB3ZWJQcm9jZXNzID0gV2ViUHJvY2Vzczo6c2luZ2xldG9uKCk7
Ci0gICAgaWYgKHdlYlByb2Nlc3MudXNlc05ldHdvcmtQcm9jZXNzKCkpIHsKLSAgICAgICAgU3Ry
aW5nIHJlc3VsdDsKLSAgICAgICAgaWYgKCF3ZWJQcm9jZXNzLm5ldHdvcmtDb25uZWN0aW9uKCkt
PmNvbm5lY3Rpb24oKS0+c2VuZFN5bmMoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzOjpDb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShTZXNzaW9uVHJhY2tlcjo6c2Vz
c2lvbklEKHNlc3Npb24pLCBmaXJzdFBhcnR5LCB1cmwpLCBNZXNzYWdlczo6TmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3M6OkNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlOjpSZXBseShy
ZXN1bHQpLCAwKSkKLSAgICAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKLSAgICAgICAgcmV0dXJu
IHJlc3VsdDsKLSAgICB9Ci0jZW5kaWYKLQotICAgIHJldHVybiBXZWJDb3JlOjpjb29raWVSZXF1
ZXN0SGVhZGVyRmllbGRWYWx1ZShzZXNzaW9uLCBmaXJzdFBhcnR5LCB1cmwpOworICAgIFN0cmlu
ZyByZXN1bHQ7CisgICAgaWYgKCFXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5uZXR3b3JrQ29ubmVj
dGlvbigpLT5jb25uZWN0aW9uKCktPnNlbmRTeW5jKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2Vzczo6Q29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoU2Vzc2lvblRyYWNr
ZXI6OnNlc3Npb25JRChzZXNzaW9uKSwgZmlyc3RQYXJ0eSwgdXJsKSwgTWVzc2FnZXM6Ok5ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpDb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZTo6
UmVwbHkocmVzdWx0KSwgMCkpCisgICAgICAgIHJldHVybiBTdHJpbmcoKTsKKyAgICByZXR1cm4g
cmVzdWx0OwogfQogCiBib29sIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Z2V0UmF3Q29va2llcyhj
b25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IFVSTCYgZmlyc3RQYXJ0
eSwgY29uc3QgVVJMJiB1cmwsIFZlY3RvcjxDb29raWU+JiByYXdDb29raWVzKQogewotI2lmIEVO
QUJMRShORVRXT1JLX1BST0NFU1MpCi0gICAgYXV0byYgd2ViUHJvY2VzcyA9IFdlYlByb2Nlc3M6
OnNpbmdsZXRvbigpOwotICAgIGlmICh3ZWJQcm9jZXNzLnVzZXNOZXR3b3JrUHJvY2VzcygpKSB7
Ci0gICAgICAgIGlmICghd2ViUHJvY2Vzcy5uZXR3b3JrQ29ubmVjdGlvbigpLT5jb25uZWN0aW9u
KCktPnNlbmRTeW5jKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6R2V0
UmF3Q29va2llcyhTZXNzaW9uVHJhY2tlcjo6c2Vzc2lvbklEKHNlc3Npb24pLCBmaXJzdFBhcnR5
LCB1cmwpLCBNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkdldFJhd0Nv
b2tpZXM6OlJlcGx5KHJhd0Nvb2tpZXMpLCAwKSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
LSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotI2VuZGlmCi0KLSAgICByZXR1cm4gV2ViQ29y
ZTo6Z2V0UmF3Q29va2llcyhzZXNzaW9uLCBmaXJzdFBhcnR5LCB1cmwsIHJhd0Nvb2tpZXMpOwor
ICAgIGlmICghV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkubmV0d29ya0Nvbm5lY3Rpb24oKS0+Y29u
bmVjdGlvbigpLT5zZW5kU3luYyhNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3M6OkdldFJhd0Nvb2tpZXMoU2Vzc2lvblRyYWNrZXI6OnNlc3Npb25JRChzZXNzaW9uKSwgZmly
c3RQYXJ0eSwgdXJsKSwgTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpH
ZXRSYXdDb29raWVzOjpSZXBseShyYXdDb29raWVzKSwgMCkpCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogdm9pZCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmRl
bGV0ZUNvb2tpZShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IFVS
TCYgdXJsLCBjb25zdCBTdHJpbmcmIGNvb2tpZU5hbWUpCiB7Ci0jaWYgRU5BQkxFKE5FVFdPUktf
UFJPQ0VTUykKLSAgICBhdXRvJiB3ZWJQcm9jZXNzID0gV2ViUHJvY2Vzczo6c2luZ2xldG9uKCk7
Ci0gICAgaWYgKHdlYlByb2Nlc3MudXNlc05ldHdvcmtQcm9jZXNzKCkpIHsKLSAgICAgICAgd2Vi
UHJvY2Vzcy5uZXR3b3JrQ29ubmVjdGlvbigpLT5jb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6
Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpEZWxldGVDb29raWUoU2Vzc2lvblRyYWNr
ZXI6OnNlc3Npb25JRChzZXNzaW9uKSwgdXJsLCBjb29raWVOYW1lKSwgMCk7Ci0gICAgICAgIHJl
dHVybjsKLSAgICB9Ci0jZW5kaWYKLQotICAgIFdlYkNvcmU6OmRlbGV0ZUNvb2tpZShzZXNzaW9u
LCB1cmwsIGNvb2tpZU5hbWUpOworICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLm5ldHdvcmtD
b25uZWN0aW9uKCktPmNvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3M6OkRlbGV0ZUNvb2tpZShTZXNzaW9uVHJhY2tlcjo6c2Vzc2lvbklEKHNl
c3Npb24pLCB1cmwsIGNvb2tpZU5hbWUpLCAwKTsKIH0KIAogLy8gTG9hZGVyU3RyYXRlZ3kKIAot
I2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCiBSZXNvdXJjZUxvYWRTY2hlZHVsZXIqIFdlYlBs
YXRmb3JtU3RyYXRlZ2llczo6cmVzb3VyY2VMb2FkU2NoZWR1bGVyKCkKIHsKLSAgICBzdGF0aWMg
UmVzb3VyY2VMb2FkU2NoZWR1bGVyKiBzY2hlZHVsZXI7Ci0gICAgaWYgKCFzY2hlZHVsZXIpIHsK
LSAgICAgICAgYXV0byYgd2ViUHJvY2VzcyA9IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpOwotICAg
ICAgICBpZiAod2ViUHJvY2Vzcy51c2VzTmV0d29ya1Byb2Nlc3MoKSkKLSAgICAgICAgICAgIHNj
aGVkdWxlciA9ICZ3ZWJQcm9jZXNzLndlYlJlc291cmNlTG9hZFNjaGVkdWxlcigpOwotICAgICAg
ICBlbHNlCi0gICAgICAgICAgICBzY2hlZHVsZXIgPSBXZWJDb3JlOjpyZXNvdXJjZUxvYWRTY2hl
ZHVsZXIoKTsKLSAgICB9Ci0gICAgCi0gICAgcmV0dXJuIHNjaGVkdWxlcjsKKyAgICByZXR1cm4g
JldlYlByb2Nlc3M6OnNpbmdsZXRvbigpLndlYlJlc291cmNlTG9hZFNjaGVkdWxlcigpOwogfQog
CiB2b2lkIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6bG9hZFJlc291cmNlU3luY2hyb25vdXNseShO
ZXR3b3JraW5nQ29udGV4dCogY29udGV4dCwgdW5zaWduZWQgbG9uZyByZXNvdXJjZUxvYWRJZGVu
dGlmaWVyLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIFN0b3JlZENyZWRlbnRpYWxz
IHN0b3JlZENyZWRlbnRpYWxzLCBDbGllbnRDcmVkZW50aWFsUG9saWN5IGNsaWVudENyZWRlbnRp
YWxQb2xpY3ksIFJlc291cmNlRXJyb3ImIGVycm9yLCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25z
ZSwgVmVjdG9yPGNoYXI+JiBkYXRhKQogewotICAgIGF1dG8mIHdlYlByb2Nlc3MgPSBXZWJQcm9j
ZXNzOjpzaW5nbGV0b24oKTsKLSAgICBpZiAoIXdlYlByb2Nlc3MudXNlc05ldHdvcmtQcm9jZXNz
KCkpIHsKLSAgICAgICAgTG9hZGVyU3RyYXRlZ3k6OmxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHko
Y29udGV4dCwgcmVzb3VyY2VMb2FkSWRlbnRpZmllciwgcmVxdWVzdCwgc3RvcmVkQ3JlZGVudGlh
bHMsIGNsaWVudENyZWRlbnRpYWxQb2xpY3ksIGVycm9yLCByZXNwb25zZSwgZGF0YSk7Ci0gICAg
ICAgIHJldHVybjsKLSAgICB9Ci0KICAgICBXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0KiB3ZWJD
b250ZXh0ID0gc3RhdGljX2Nhc3Q8V2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dCo+KGNvbnRleHQp
OwogICAgIC8vIEZJWE1FOiBTb21lIGVudGl0aWVzIGluIFdlYkNvcmUgdXNlIFdlYkNvcmUncyAi
RW1wdHlGcmFtZUxvYWRlckNsaWVudCIgaW5zdGVhZCBvZiBoYXZpbmcgYSBwcm9wZXIgV2ViRnJh
bWVMb2FkZXJDbGllbnQuCiAgICAgLy8gRW1wdHlGcmFtZUxvYWRlckNsaWVudCBzaG91bGRuJ3Qg
ZXhpc3QgYW5kIGV2ZXJ5dGhpbmcgc2hvdWxkIGJlIHVzaW5nIGEgV2ViRnJhbWVMb2FkZXJDbGll
bnQsCkBAIC0yNDMsNyArMTgyLDcgQEAgdm9pZCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmxvYWRS
ZXNvdXJjZQogCiAgICAgSGFuZ0RldGVjdGlvbkRpc2FibGVyIGhhbmdEZXRlY3Rpb25EaXNhYmxl
cjsKIAotICAgIGlmICghd2ViUHJvY2Vzcy5uZXR3b3JrQ29ubmVjdGlvbigpLT5jb25uZWN0aW9u
KCktPnNlbmRTeW5jKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6UGVy
Zm9ybVN5bmNocm9ub3VzTG9hZChsb2FkUGFyYW1ldGVycyksIE1lc3NhZ2VzOjpOZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2Vzczo6UGVyZm9ybVN5bmNocm9ub3VzTG9hZDo6UmVwbHkoZXJyb3Is
IHJlc3BvbnNlLCBkYXRhKSwgMCkpIHsKKyAgICBpZiAoIVdlYlByb2Nlc3M6OnNpbmdsZXRvbigp
Lm5ldHdvcmtDb25uZWN0aW9uKCktPmNvbm5lY3Rpb24oKS0+c2VuZFN5bmMoTWVzc2FnZXM6Ok5l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpQZXJmb3JtU3luY2hyb25vdXNMb2FkKGxvYWRQ
YXJhbWV0ZXJzKSwgTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpQZXJm
b3JtU3luY2hyb25vdXNMb2FkOjpSZXBseShlcnJvciwgcmVzcG9uc2UsIGRhdGEpLCAwKSkgewog
ICAgICAgICByZXNwb25zZSA9IFJlc291cmNlUmVzcG9uc2UoKTsKICAgICAgICAgZXJyb3IgPSBp
bnRlcm5hbEVycm9yKHJlcXVlc3QudXJsKCkpOwogICAgIH0KQEAgLTI1NiwxMiArMTk1LDYgQEAg
dm9pZCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNyZWF0ZVBpbmdIYQogICAgIGlmICghbmV0d29y
a2luZ0NvbnRleHQpCiAgICAgICAgIHJldHVybjsKIAotICAgIGF1dG8mIHdlYlByb2Nlc3MgPSBX
ZWJQcm9jZXNzOjpzaW5nbGV0b24oKTsKLSAgICBpZiAoIXdlYlByb2Nlc3MudXNlc05ldHdvcmtQ
cm9jZXNzKCkpIHsKLSAgICAgICAgTG9hZGVyU3RyYXRlZ3k6OmNyZWF0ZVBpbmdIYW5kbGUobmV0
d29ya2luZ0NvbnRleHQsIHJlcXVlc3QsIHNob3VsZFVzZUNyZWRlbnRpYWxTdG9yYWdlKTsKLSAg
ICAgICAgcmV0dXJuOwotICAgIH0KLQogICAgIFdlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQqIHdl
YkNvbnRleHQgPSBzdGF0aWNfY2FzdDxXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0Kj4obmV0d29y
a2luZ0NvbnRleHQpOwogICAgIFdlYkZyYW1lTG9hZGVyQ2xpZW50KiB3ZWJGcmFtZUxvYWRlckNs
aWVudCA9IHdlYkNvbnRleHQtPndlYkZyYW1lTG9hZGVyQ2xpZW50KCk7CiAgICAgV2ViRnJhbWUq
IHdlYkZyYW1lID0gd2ViRnJhbWVMb2FkZXJDbGllbnQgPyB3ZWJGcmFtZUxvYWRlckNsaWVudC0+
d2ViRnJhbWUoKSA6IG51bGxwdHI7CkBAIC0yNzMsMTYgKzIwNiwxMyBAQCB2b2lkIFdlYlBsYXRm
b3JtU3RyYXRlZ2llczo6Y3JlYXRlUGluZ0hhCiAgICAgbG9hZFBhcmFtZXRlcnMuYWxsb3dTdG9y
ZWRDcmVkZW50aWFscyA9IHNob3VsZFVzZUNyZWRlbnRpYWxTdG9yYWdlID8gQWxsb3dTdG9yZWRD
cmVkZW50aWFscyA6IERvTm90QWxsb3dTdG9yZWRDcmVkZW50aWFsczsKICAgICBsb2FkUGFyYW1l
dGVycy5zaG91bGRDbGVhclJlZmVycmVyT25IVFRQU1RvSFRUUFJlZGlyZWN0ID0gbmV0d29ya2lu
Z0NvbnRleHQtPnNob3VsZENsZWFyUmVmZXJyZXJPbkhUVFBTVG9IVFRQUmVkaXJlY3QoKTsKIAot
ICAgIHdlYlByb2Nlc3MubmV0d29ya0Nvbm5lY3Rpb24oKS0+Y29ubmVjdGlvbigpLT5zZW5kKE1l
c3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6TG9hZFBpbmcobG9hZFBhcmFt
ZXRlcnMpLCAwKTsKKyAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5uZXR3b3JrQ29ubmVjdGlv
bigpLT5jb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzOjpMb2FkUGluZyhsb2FkUGFyYW1ldGVycyksIDApOwogfQogCiBCbG9iUmVnaXN0cnkq
IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y3JlYXRlQmxvYlJlZ2lzdHJ5KCkKIHsKLSAgICBpZiAo
IVdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnVzZXNOZXR3b3JrUHJvY2VzcygpKQotICAgICAgICBy
ZXR1cm4gTG9hZGVyU3RyYXRlZ3k6OmNyZWF0ZUJsb2JSZWdpc3RyeSgpOwogICAgIHJldHVybiBu
ZXcgQmxvYlJlZ2lzdHJ5UHJveHk7ICAgIAogfQotI2VuZGlmCiAKIC8vIFBsdWdpblN0cmF0ZWd5
CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxh
dGZvcm1TdHJhdGVnaWVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaAkocmV2aXNpb24gMTkyNjAx
KQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9y
bVN0cmF0ZWdpZXMuaAkod29ya2luZyBjb3B5KQpAQCAtNTksMTIgKzU5LDEwIEBAIHByaXZhdGU6
CiAgICAgdmlydHVhbCB2b2lkIGRlbGV0ZUNvb2tpZShjb25zdCBXZWJDb3JlOjpOZXR3b3JrU3Rv
cmFnZVNlc3Npb24mLCBjb25zdCBXZWJDb3JlOjpVUkwmLCBjb25zdCBTdHJpbmcmKSBvdmVycmlk
ZTsKIAogICAgIC8vIFdlYkNvcmU6OkxvYWRlclN0cmF0ZWd5Ci0jaWYgRU5BQkxFKE5FVFdPUktf
UFJPQ0VTUykKICAgICB2aXJ0dWFsIFdlYkNvcmU6OlJlc291cmNlTG9hZFNjaGVkdWxlciogcmVz
b3VyY2VMb2FkU2NoZWR1bGVyKCkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIGxvYWRSZXNv
dXJjZVN5bmNocm9ub3VzbHkoV2ViQ29yZTo6TmV0d29ya2luZ0NvbnRleHQqLCB1bnNpZ25lZCBs
b25nIHJlc291cmNlTG9hZElkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVz
dCYsIFdlYkNvcmU6OlN0b3JlZENyZWRlbnRpYWxzLCBXZWJDb3JlOjpDbGllbnRDcmVkZW50aWFs
UG9saWN5LCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25z
ZSYsIFZlY3RvcjxjaGFyPiYgZGF0YSkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCBXZWJDb3JlOjpC
bG9iUmVnaXN0cnkqIGNyZWF0ZUJsb2JSZWdpc3RyeSgpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwg
dm9pZCBjcmVhdGVQaW5nSGFuZGxlKFdlYkNvcmU6Ok5ldHdvcmtpbmdDb250ZXh0KiwgV2ViQ29y
ZTo6UmVzb3VyY2VSZXF1ZXN0JiwgYm9vbCBzaG91bGRVc2VDcmVkZW50aWFsU3RvcmFnZSkgb3Zl
cnJpZGU7Ci0jZW5kaWYKIAogICAgIC8vIFdlYkNvcmU6OlBsdWdpblN0cmF0ZWd5CiAgICAgdmly
dHVhbCB2b2lkIHJlZnJlc2hQbHVnaW5zKCkgb3ZlcnJpZGU7CkluZGV4OiBTb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAJKHJldmlzaW9uIDE5MjYwMSkK
KysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTMzLDEwICszMywxMyBAQAogI2luY2x1ZGUgIkluamVjdGVkQnVuZGxlTm9k
ZUhhbmRsZS5oIgogI2luY2x1ZGUgIkluamVjdGVkQnVuZGxlUmFuZ2VIYW5kbGUuaCIKICNpbmNs
dWRlICJJbmplY3RlZEJ1bmRsZVNjcmlwdFdvcmxkLmgiCisjaW5jbHVkZSAiTmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3NNZXNzYWdlcy5oIgorI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzQ29u
bmVjdGlvbi5oIgogI2luY2x1ZGUgIlBsdWdpblZpZXcuaCIKICNpbmNsdWRlICJXS0FQSUNhc3Qu
aCIKICNpbmNsdWRlICJXS0J1bmRsZUFQSUNhc3QuaCIKICNpbmNsdWRlICJXZWJDaHJvbWVDbGll
bnQuaCIKKyNpbmNsdWRlICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIKICNpbmNsdWRlICJXZWJE
b2N1bWVudExvYWRlci5oIgogI2luY2x1ZGUgIldlYlBhZ2UuaCIKICNpbmNsdWRlICJXZWJQYWdl
UHJveHlNZXNzYWdlcy5oIgpAQCAtODEsMTIgKzg0LDYgQEAKICNpbmNsdWRlIDxXZWJDb3JlL0xl
Z2FjeVdlYkFyY2hpdmUuaD4KICNlbmRpZgogCi0jaWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykK
LSNpbmNsdWRlICJOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzc01lc3NhZ2VzLmgiCi0jaW5j
bHVkZSAiTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmgiCi0jaW5jbHVkZSAiV2ViQ29yZUFyZ3Vt
ZW50Q29kZXJzLmgiCi0jZW5kaWYKLQogI2lmbmRlZiBOREVCVUcKICNpbmNsdWRlIDx3dGYvUmVm
Q291bnRlZExlYWtDb3VudGVyLmg+CiAjZW5kaWYKQEAgLTI1NywyMyArMjU0LDkgQEAgdm9pZCBX
ZWJGcmFtZTo6c3RhcnREb3dubG9hZChjb25zdCBXZWJDbwogICAgIG1fcG9saWN5RG93bmxvYWRJ
RCA9IDA7CiAKICAgICBhdXRvJiB3ZWJQcm9jZXNzID0gV2ViUHJvY2Vzczo6c2luZ2xldG9uKCk7
Ci0jaWYgVVNFKE5FVFdPUktfU0VTU0lPTikKLSAgICBBU1NFUlQod2ViUHJvY2Vzcy51c2VzTmV0
d29ya1Byb2Nlc3MoKSk7Ci0jZW5kaWYKICAgICBTZXNzaW9uSUQgc2Vzc2lvbklEID0gcGFnZSgp
ID8gcGFnZSgpLT5zZXNzaW9uSUQoKSA6IFNlc3Npb25JRDo6ZGVmYXVsdFNlc3Npb25JRCgpOwot
I2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCi0gICAgaWYgKHdlYlByb2Nlc3MudXNlc05ldHdv
cmtQcm9jZXNzKCkpIHsKLSAgICAgICAgd2ViUHJvY2Vzcy5uZXR3b3JrQ29ubmVjdGlvbigpLT5j
b25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
OjpTdGFydERvd25sb2FkKHNlc3Npb25JRCwgcG9saWN5RG93bmxvYWRJRCwgcmVxdWVzdCksIDAp
OwotICAgICAgICByZXR1cm47Ci0gICAgfQotI2VuZGlmCi0KLSNpZiBVU0UoTkVUV09SS19TRVNT
SU9OKQotICAgIC8vIFVzaW5nIE5FVFdPUktfU0VTU0lPTiByZXF1aXJlcyB0aGUgdXNlIG9mIGEg
bmV0d29yayBwcm9jZXNzLgotICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0jZWxz
ZQotICAgIHdlYlByb2Nlc3MuZG93bmxvYWRNYW5hZ2VyKCkuc3RhcnREb3dubG9hZChzZXNzaW9u
SUQsIHBvbGljeURvd25sb2FkSUQsIHJlcXVlc3QpOwotI2VuZGlmCisgICAgd2ViUHJvY2Vzcy5u
ZXR3b3JrQ29ubmVjdGlvbigpLT5jb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtD
b25uZWN0aW9uVG9XZWJQcm9jZXNzOjpTdGFydERvd25sb2FkKHNlc3Npb25JRCwgcG9saWN5RG93
bmxvYWRJRCwgcmVxdWVzdCksIDApOworICAgIHJldHVybjsKIH0KIAogdm9pZCBXZWJGcmFtZTo6
Y29udmVydE1haW5SZXNvdXJjZUxvYWRUb0Rvd25sb2FkKERvY3VtZW50TG9hZGVyKiBkb2N1bWVu
dExvYWRlciwgU2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1
ZXN0LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKQEAgLTI4NiwzOSArMjY5LDEy
IEBAIHZvaWQgV2ViRnJhbWU6OmNvbnZlcnRNYWluUmVzb3VyY2VMb2FkVG8KICAgICBTdWJyZXNv
dXJjZUxvYWRlciogbWFpblJlc291cmNlTG9hZGVyID0gZG9jdW1lbnRMb2FkZXItPm1haW5SZXNv
dXJjZUxvYWRlcigpOwogCiAgICAgYXV0byYgd2ViUHJvY2VzcyA9IFdlYlByb2Nlc3M6OnNpbmds
ZXRvbigpOwotI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCi0jaWYgVVNFKE5FVFdPUktfU0VT
U0lPTikKLSAgICBBU1NFUlQod2ViUHJvY2Vzcy51c2VzTmV0d29ya1Byb2Nlc3MoKSk7Ci0jZW5k
aWYKLSAgICBpZiAod2ViUHJvY2Vzcy51c2VzTmV0d29ya1Byb2Nlc3MoKSkgewotICAgICAgICAv
LyBVc2UgMCB0byBpbmRpY2F0ZSB0aGF0IHRoZSByZXNvdXJjZSBsb2FkIGNhbid0IGJlIGNvbnZl
cnRlZCBhbmQgYSBuZXcgZG93bmxvYWQgbXVzdCBiZSBzdGFydGVkLgotICAgICAgICAvLyBUaGlz
IGNhbiBoYXBwZW4gaWYgdGhlcmUgaXMgbm8gbG9hZGVyIGJlY2F1c2UgdGhlIG1haW4gcmVzb3Vy
Y2UgaXMgaW4gdGhlIFdlYkNvcmUgbWVtb3J5IGNhY2hlLAotICAgICAgICAvLyBvciBiZWNhdXNl
IHRoZSBjb252ZXJzaW9uIHdhcyBhdHRlbXB0ZWQgd2hlbiBub3QgY2FsbGluZyBTdWJyZXNvdXJj
ZUxvYWRlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNlKCkuCi0gICAgICAgIHVpbnQ2NF90IG1haW5SZXNv
dXJjZUxvYWRJZGVudGlmaWVyOwotICAgICAgICBpZiAobWFpblJlc291cmNlTG9hZGVyKQotICAg
ICAgICAgICAgbWFpblJlc291cmNlTG9hZElkZW50aWZpZXIgPSBtYWluUmVzb3VyY2VMb2FkZXIt
PmlkZW50aWZpZXIoKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgbWFpblJlc291cmNlTG9h
ZElkZW50aWZpZXIgPSAwOwotCi0gICAgICAgIHdlYlByb2Nlc3MubmV0d29ya0Nvbm5lY3Rpb24o
KS0+Y29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzczo6Q29udmVydE1haW5SZXNvdXJjZUxvYWRUb0Rvd25sb2FkKHNlc3Npb25JRCwgbWFpblJl
c291cmNlTG9hZElkZW50aWZpZXIsIHBvbGljeURvd25sb2FkSUQsIHJlcXVlc3QsIHJlc3BvbnNl
KSwgMCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0jZW5kaWYKLQotICAgIGlmICghbWFpblJl
c291cmNlTG9hZGVyKSB7Ci0gICAgICAgIC8vIFRoZSBtYWluIHJlc291cmNlIGhhcyBhbHJlYWR5
IGJlZW4gbG9hZGVkLiBTdGFydCBhIG5ldyBkb3dubG9hZCBpbnN0ZWFkLgotI2lmICFVU0UoTkVU
V09SS19TRVNTSU9OKQotICAgICAgICB3ZWJQcm9jZXNzLmRvd25sb2FkTWFuYWdlcigpLnN0YXJ0
RG93bmxvYWQoc2Vzc2lvbklELCBwb2xpY3lEb3dubG9hZElELCByZXF1ZXN0KTsKLSNlbmRpZgot
ICAgICAgICByZXR1cm47Ci0gICAgfQorICAgIC8vIFVzZSAwIHRvIGluZGljYXRlIHRoYXQgdGhl
IHJlc291cmNlIGxvYWQgY2FuJ3QgYmUgY29udmVydGVkIGFuZCBhIG5ldyBkb3dubG9hZCBtdXN0
IGJlIHN0YXJ0ZWQuCisgICAgLy8gVGhpcyBjYW4gaGFwcGVuIGlmIHRoZXJlIGlzIG5vIGxvYWRl
ciBiZWNhdXNlIHRoZSBtYWluIHJlc291cmNlIGlzIGluIHRoZSBXZWJDb3JlIG1lbW9yeSBjYWNo
ZSwKKyAgICAvLyBvciBiZWNhdXNlIHRoZSBjb252ZXJzaW9uIHdhcyBhdHRlbXB0ZWQgd2hlbiBu
b3QgY2FsbGluZyBTdWJyZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNlKCkuCisgICAg
dWludDY0X3QgbWFpblJlc291cmNlTG9hZElkZW50aWZpZXIgPSBtYWluUmVzb3VyY2VMb2FkZXIg
PyBtYWluUmVzb3VyY2VMb2FkZXItPmlkZW50aWZpZXIoKSA6IDA7CiAKLSNpZiBVU0UoTkVUV09S
S19TRVNTSU9OKQotICAgIC8vIFVzaW5nIE5FVFdPUktfU0VTU0lPTiByZXF1aXJlcyB0aGUgdXNl
IG9mIGEgbmV0d29yayBwcm9jZXNzLgotICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7
Ci0jZWxzZQotICAgIHdlYlByb2Nlc3MuZG93bmxvYWRNYW5hZ2VyKCkuY29udmVydEhhbmRsZVRv
RG93bmxvYWQocG9saWN5RG93bmxvYWRJRCwgZG9jdW1lbnRMb2FkZXItPm1haW5SZXNvdXJjZUxv
YWRlcigpLT5oYW5kbGUoKSwgcmVxdWVzdCwgcmVzcG9uc2UpOwotI2VuZGlmCisgICAgd2ViUHJv
Y2Vzcy5uZXR3b3JrQ29ubmVjdGlvbigpLT5jb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6Ok5l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpDb252ZXJ0TWFpblJlc291cmNlTG9hZFRvRG93
bmxvYWQoc2Vzc2lvbklELCBtYWluUmVzb3VyY2VMb2FkSWRlbnRpZmllciwgcG9saWN5RG93bmxv
YWRJRCwgcmVxdWVzdCwgcmVzcG9uc2UpLCAwKTsKIH0KIAogU3RyaW5nIFdlYkZyYW1lOjpzb3Vy
Y2UoKSBjb25zdApJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9zb3VwL1dlYlByb2Nl
c3NTb3VwLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL3NvdXAv
V2ViUHJvY2Vzc1NvdXAuY3BwCShyZXZpc2lvbiAxOTI2MDEpCisrKyBTb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL3NvdXAvV2ViUHJvY2Vzc1NvdXAuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00OSwx
OCArNDksNiBAQAogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotc3RhdGljIHVpbnQ2NF90IGdldENh
Y2hlRGlza0ZyZWVTaXplKFNvdXBDYWNoZSogY2FjaGUpCi17Ci0gICAgQVNTRVJUKGNhY2hlKTsK
LQotICAgIEdVbmlxdWVPdXRQdHI8Y2hhcj4gY2FjaGVEaXI7Ci0gICAgZ19vYmplY3RfZ2V0KEdf
T0JKRUNUKGNhY2hlKSwgImNhY2hlLWRpciIsICZjYWNoZURpci5vdXRQdHIoKSwgTlVMTCk7Ci0g
ICAgaWYgKCFjYWNoZURpcikKLSAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICByZXR1cm4gV2ViQ29y
ZTo6Z2V0Vm9sdW1lRnJlZVNpemVGb3JQYXRoKGNhY2hlRGlyLmdldCgpKTsKLX0KLQogdm9pZCBX
ZWJQcm9jZXNzOjpwbGF0Zm9ybVNldENhY2hlTW9kZWwoQ2FjaGVNb2RlbCBjYWNoZU1vZGVsKQog
ewogICAgIHVuc2lnbmVkIGNhY2hlVG90YWxDYXBhY2l0eSA9IDA7CkBAIC03MywxMiArNjEsNiBA
QCB2b2lkIFdlYlByb2Nlc3M6OnBsYXRmb3JtU2V0Q2FjaGVNb2RlbChDCiAgICAgdW5zaWduZWQg
bG9uZyB1cmxDYWNoZURpc2tDYXBhY2l0eSA9IDA7CiAKICAgICB1aW50NjRfdCBkaXNrRnJlZVNp
emUgPSAwOwotICAgIFNvdXBDYWNoZSogY2FjaGUgPSBudWxscHRyOwotCi0gICAgaWYgKCF1c2Vz
TmV0d29ya1Byb2Nlc3MoKSkgewotICAgICAgICBjYWNoZSA9IFdlYkNvcmU6OlNvdXBOZXR3b3Jr
U2Vzc2lvbjo6ZGVmYXVsdFNlc3Npb24oKS5jYWNoZSgpOwotICAgICAgICBkaXNrRnJlZVNpemUg
PSBnZXRDYWNoZURpc2tGcmVlU2l6ZShjYWNoZSkgLyBXVEY6Ok1COwotICAgIH0KIAogICAgIHVp
bnQ2NF90IG1lbVNpemUgPSBXVEY6OnJhbVNpemUoKSAvIFdURjo6TUI7CiAgICAgY2FsY3VsYXRl
Q2FjaGVTaXplcyhjYWNoZU1vZGVsLCBtZW1TaXplLCBkaXNrRnJlZVNpemUsCkBAIC05NCwyMyAr
NzYsMTAgQEAgdm9pZCBXZWJQcm9jZXNzOjpwbGF0Zm9ybVNldENhY2hlTW9kZWwoQwogI2lmIFBM
QVRGT1JNKEdUSykKICAgICBXZWJDb3JlOjpQYWdlQ2FjaGU6OnNpbmdsZXRvbigpLnNldFNob3Vs
ZENsZWFyQmFja2luZ1N0b3Jlcyh0cnVlKTsKICNlbmRpZgotCi0gICAgaWYgKCF1c2VzTmV0d29y
a1Byb2Nlc3MoKSkgewotICAgICAgICBpZiAodXJsQ2FjaGVEaXNrQ2FwYWNpdHkgPiBzb3VwX2Nh
Y2hlX2dldF9tYXhfc2l6ZShjYWNoZSkpCi0gICAgICAgICAgICBzb3VwX2NhY2hlX3NldF9tYXhf
c2l6ZShjYWNoZSwgdXJsQ2FjaGVEaXNrQ2FwYWNpdHkpOwotICAgIH0KIH0KIAogdm9pZCBXZWJQ
cm9jZXNzOjpwbGF0Zm9ybUNsZWFyUmVzb3VyY2VDYWNoZXMoUmVzb3VyY2VDYWNoZXNUb0NsZWFy
IGNhY2hlc1RvQ2xlYXIpCiB7Ci0gICAgaWYgKGNhY2hlc1RvQ2xlYXIgPT0gSW5NZW1vcnlSZXNv
dXJjZUNhY2hlc09ubHkpCi0gICAgICAgIHJldHVybjsKLQotICAgIC8vIElmIHdlJ3JlIHVzaW5n
IHRoZSBuZXR3b3JrIHByb2Nlc3MgdGhlbiBpdCBpcyB0aGUgb25seSBvbmUgdGhhdCBuZWVkcyB0
byBjbGVhciB0aGUgZGlzayBjYWNoZS4KLSAgICBpZiAodXNlc05ldHdvcmtQcm9jZXNzKCkpCi0g
ICAgICAgIHJldHVybjsKLQotICAgIHNvdXBfY2FjaGVfY2xlYXIoV2ViQ29yZTo6U291cE5ldHdv
cmtTZXNzaW9uOjpkZWZhdWx0U2Vzc2lvbigpLmNhY2hlKCkpOwogfQogCiBzdGF0aWMgdm9pZCBz
ZXRTb3VwU2Vzc2lvbkFjY2VwdExhbmd1YWdlKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBsYW5ndWFn
ZXMpCkBAIC0xMTgsMTEgKzg3LDYgQEAgc3RhdGljIHZvaWQgc2V0U291cFNlc3Npb25BY2NlcHRM
YW5ndWFnZQogICAgIFdlYkNvcmU6OlNvdXBOZXR3b3JrU2Vzc2lvbjo6ZGVmYXVsdFNlc3Npb24o
KS5zZXRBY2NlcHRMYW5ndWFnZXMobGFuZ3VhZ2VzKTsKIH0KIAotc3RhdGljIHZvaWQgbGFuZ3Vh
Z2VDaGFuZ2VkKHZvaWQqKQotewotICAgIHNldFNvdXBTZXNzaW9uQWNjZXB0TGFuZ3VhZ2UoV2Vi
Q29yZTo6dXNlclByZWZlcnJlZExhbmd1YWdlcygpKTsKLX0KLQogdm9pZCBXZWJQcm9jZXNzOjpw
bGF0Zm9ybUluaXRpYWxpemVXZWJQcm9jZXNzKFdlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMm
JiBwYXJhbWV0ZXJzKQogewogI2lmIEVOQUJMRShTRUNDT01QX0ZJTFRFUlMpCkBAIC0xMzUsNjIg
Kzk5LDE4IEBAIHZvaWQgV2ViUHJvY2Vzczo6cGxhdGZvcm1Jbml0aWFsaXplV2ViUHIKICAgICAg
ICAgc2VjY29tcEZpbHRlcnMuaW5pdGlhbGl6ZSgpOwogICAgIH0KICNlbmRpZgotCi0gICAgaWYg
KHVzZXNOZXR3b3JrUHJvY2VzcygpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBBU1NFUlQoIXBh
cmFtZXRlcnMuZGlza0NhY2hlRGlyZWN0b3J5LmlzRW1wdHkoKSk7Ci0KLSAgICAvLyBXZSB1c2Vk
IHRvIHVzZSB0aGUgZ2l2ZW4gY2FjaGUgZGlyZWN0b3J5IGZvciB0aGUgc291cCBjYWNoZSwgYnV0
IG5vdyB3ZSB1c2UgYSBzdWJkaXJlY3RvcnkgdG8gYXZvaWQKLSAgICAvLyBjb25mbGljdHMgd2l0
aCBvdGhlciBjYWNoZSBmaWxlcyBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuIFJlbW92ZSB0aGUgb2xk
IGNhY2hlIGZpbGVzIGlmIHRoZXkgc3RpbGwgZXhpc3QuCi0gICAgV2ViQ29yZTo6U291cE5ldHdv
cmtTZXNzaW9uOjpkZWZhdWx0U2Vzc2lvbigpLmNsZWFyQ2FjaGUoV2ViQ29yZTo6ZGlyZWN0b3J5
TmFtZShwYXJhbWV0ZXJzLmRpc2tDYWNoZURpcmVjdG9yeSkpOwotCi0jaWYgRU5BQkxFKE5FVFdP
UktfQ0FDSEUpCi0gICAgLy8gV2hlbiBuZXR3b3JrIGNhY2hlIGlzIGVuYWJsZWQsIHRoZSBkaXNr
IGNhY2hlIGRpcmVjdG9yeSBpcyB0aGUgbmV0d29yayBwcm9jZXNzIG9uZS4KLSAgICBDU3RyaW5n
IGRpc2tDYWNoZVBhdGggPSBXZWJDb3JlOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoV2ViQ29y
ZTo6ZGlyZWN0b3J5TmFtZShwYXJhbWV0ZXJzLmRpc2tDYWNoZURpcmVjdG9yeSksICJ3ZWJraXQi
KS51dGY4KCk7Ci0jZWxzZQotICAgIENTdHJpbmcgZGlza0NhY2hlUGF0aCA9IHBhcmFtZXRlcnMu
ZGlza0NhY2hlRGlyZWN0b3J5LnV0ZjgoKTsKLSNlbmRpZgotCi0gICAgR1JlZlB0cjxTb3VwQ2Fj
aGU+IHNvdXBDYWNoZSA9IGFkb3B0R1JlZihzb3VwX2NhY2hlX25ldyhkaXNrQ2FjaGVQYXRoLmRh
dGEoKSwgU09VUF9DQUNIRV9TSU5HTEVfVVNFUikpOwotICAgIFdlYkNvcmU6OlNvdXBOZXR3b3Jr
U2Vzc2lvbjo6ZGVmYXVsdFNlc3Npb24oKS5zZXRDYWNoZShzb3VwQ2FjaGUuZ2V0KCkpOwotICAg
IC8vIFNldCBhbiBpbml0aWFsIGh1Z2UgbWF4X3NpemUgZm9yIHRoZSBTb3VwQ2FjaGUgc28gdGhl
IGNhbGwgdG8gc291cF9jYWNoZV9sb2FkKCkgd29uJ3QgZXZpY3QgYW55IGNhY2hlZAotICAgIC8v
IHJlc291cmNlLiBUaGUgZmluYWwgc2l6ZSBvZiB0aGUgY2FjaGUgd2lsbCBiZSBzZXQgYnkgTmV0
d29ya1Byb2Nlc3M6OnBsYXRmb3JtU2V0Q2FjaGVNb2RlbCgpLgotICAgIHVuc2lnbmVkIGluaXRp
YWxNYXhTaXplID0gc291cF9jYWNoZV9nZXRfbWF4X3NpemUoc291cENhY2hlLmdldCgpKTsKLSAg
ICBzb3VwX2NhY2hlX3NldF9tYXhfc2l6ZShzb3VwQ2FjaGUuZ2V0KCksIEdfTUFYVUlOVCk7Ci0g
ICAgc291cF9jYWNoZV9sb2FkKHNvdXBDYWNoZS5nZXQoKSk7Ci0gICAgc291cF9jYWNoZV9zZXRf
bWF4X3NpemUoc291cENhY2hlLmdldCgpLCBpbml0aWFsTWF4U2l6ZSk7Ci0KLSAgICBpZiAoIXBh
cmFtZXRlcnMuY29va2llUGVyc2lzdGVudFN0b3JhZ2VQYXRoLmlzRW1wdHkoKSkgewotICAgICAg
ICBzdXBwbGVtZW50PFdlYkNvb2tpZU1hbmFnZXI+KCktPnNldENvb2tpZVBlcnNpc3RlbnRTdG9y
YWdlKHBhcmFtZXRlcnMuY29va2llUGVyc2lzdGVudFN0b3JhZ2VQYXRoLAotICAgICAgICAgICAg
cGFyYW1ldGVycy5jb29raWVQZXJzaXN0ZW50U3RvcmFnZVR5cGUpOwotICAgIH0KLSAgICBzdXBw
bGVtZW50PFdlYkNvb2tpZU1hbmFnZXI+KCktPnNldEhUVFBDb29raWVBY2NlcHRQb2xpY3kocGFy
YW1ldGVycy5jb29raWVBY2NlcHRQb2xpY3kpOwotCi0gICAgaWYgKCFwYXJhbWV0ZXJzLmxhbmd1
YWdlcy5pc0VtcHR5KCkpCi0gICAgICAgIHNldFNvdXBTZXNzaW9uQWNjZXB0TGFuZ3VhZ2UocGFy
YW1ldGVycy5sYW5ndWFnZXMpOwotCi0gICAgc2V0SWdub3JlVExTRXJyb3JzKHBhcmFtZXRlcnMu
aWdub3JlVExTRXJyb3JzKTsKLQotICAgIFdlYkNvcmU6OmFkZExhbmd1YWdlQ2hhbmdlT2JzZXJ2
ZXIodGhpcywgbGFuZ3VhZ2VDaGFuZ2VkKTsKIH0KIAogdm9pZCBXZWJQcm9jZXNzOjpwbGF0Zm9y
bVRlcm1pbmF0ZSgpCiB7Ci0gICAgaWYgKCF1c2VzTmV0d29ya1Byb2Nlc3MoKSkKLSAgICAgICAg
V2ViQ29yZTo6cmVtb3ZlTGFuZ3VhZ2VDaGFuZ2VPYnNlcnZlcih0aGlzKTsKIH0KIAogdm9pZCBX
ZWJQcm9jZXNzOjpzZXRJZ25vcmVUTFNFcnJvcnMoYm9vbCBpZ25vcmVUTFNFcnJvcnMpCiB7Ci0g
ICAgQVNTRVJUKCF1c2VzTmV0d29ya1Byb2Nlc3MoKSk7Ci0gICAgV2ViQ29yZTo6UmVzb3VyY2VI
YW5kbGU6OnNldElnbm9yZVNTTEVycm9ycyhpZ25vcmVUTFNFcnJvcnMpOwogfQogCiB2b2lkIFdl
YlByb2Nlc3M6OmFsbG93U3BlY2lmaWNIVFRQU0NlcnRpZmljYXRlRm9ySG9zdChjb25zdCBXZWJD
b3JlOjpDZXJ0aWZpY2F0ZUluZm8mIGNlcnRpZmljYXRlSW5mbywgY29uc3QgU3RyaW5nJiBob3N0
KQogewotICAgIEFTU0VSVCghdXNlc05ldHdvcmtQcm9jZXNzKCkpOwotICAgIFdlYkNvcmU6OlJl
c291cmNlSGFuZGxlOjpzZXRDbGllbnRDZXJ0aWZpY2F0ZShob3N0LCBjZXJ0aWZpY2F0ZUluZm8u
Y2VydGlmaWNhdGUoKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApJbmRleDogU291cmNl
L2NtYWtlL09wdGlvbnNFZmwuY21ha2UKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL2NtYWtlL09wdGlv
bnNFZmwuY21ha2UJKHJldmlzaW9uIDE5MjYwMSkKKysrIFNvdXJjZS9jbWFrZS9PcHRpb25zRWZs
LmNtYWtlCSh3b3JraW5nIGNvcHkpCkBAIC0xMDYsNyArMTA2LDYgQEAgV0VCS0lUX09QVElPTl9E
RUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFXwogV0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFM
VUUoRU5BQkxFX05BVklHQVRPUl9DT05URU5UX1VUSUxTIFBVQkxJQyBPTikKIFdFQktJVF9PUFRJ
T05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9OQVZJR0FUT1JfSFdDT05DVVJSRU5DWSBQVUJM
SUMgT04pCiBXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfTkVUU0NBUEVf
UExVR0lOX0FQSSBQVUJMSUMgT04pCi1XRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShF
TkFCTEVfTkVUV09SS19QUk9DRVNTIFBVQkxJQyBPTikKIFdFQktJVF9PUFRJT05fREVGQVVMVF9Q
T1JUX1ZBTFVFKEVOQUJMRV9OT1NOSUZGIFBVQkxJQyBPTikKIFdFQktJVF9PUFRJT05fREVGQVVM
VF9QT1JUX1ZBTFVFKEVOQUJMRV9QT0lOVEVSX0xPQ0sgUFJJVkFURSBPRkYpCiBXRUJLSVRfT1BU
SU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfUFVCTElDX1NVRkZJWF9MSVNUIFBSSVZBVEUg
T04pCkluZGV4OiBTb3VyY2UvY21ha2UvT3B0aW9uc0dUSy5jbWFrZQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvY21ha2UvT3B0aW9uc0dUSy5jbWFrZQkocmV2aXNpb24gMTkyNjAxKQorKysgU291cmNl
L2NtYWtlL09wdGlvbnNHVEsuY21ha2UJKHdvcmtpbmcgY29weSkKQEAgLTE4Niw3ICsxODYsNiBA
QCBXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfCiBXRUJLSVRfT1BUSU9O
X0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfVklFV19NT0RFX0NTU19NRURJQSBQUklWQVRFIE9O
KQogV0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX1dFQl9USU1JTkcgUFJJ
VkFURSBPTikKIFdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9XRUJHTCBQ
UklWQVRFIE9OKQotV0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX05FVFdP
UktfUFJPQ0VTUyBQUklWQVRFIE9OKQogV0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUo
RU5BQkxFX1RIUkVBREVEX0NPTVBPU0lUT1IgUFJJVkFURSBPRkYpCiBXRUJLSVRfT1BUSU9OX0RF
RkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfU0hBRE9XX0RPTSBQUklWQVRFIE9GRikKIApJbmRleDog
U291cmNlL2NtYWtlL09wdGlvbnNNYWMuY21ha2UKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL2NtYWtl
L09wdGlvbnNNYWMuY21ha2UJKHJldmlzaW9uIDE5MjYwMSkKKysrIFNvdXJjZS9jbWFrZS9PcHRp
b25zTWFjLmNtYWtlCSh3b3JraW5nIGNvcHkpCkBAIC0yMjAsNyArMjIwLDYgQEAgV0VCS0lUX09Q
VElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFXwogCiBXRUJLSVRfT1BUSU9OX0RFRkFVTFRf
UE9SVF9WQUxVRShFTkFCTEVfU0FOREJPWF9FWFRFTlNJT05TIFBSSVZBVEUgT04pCiBXRUJLSVRf
T1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfV0VCX1BST0NFU1NfU0FOREJPWCBQUklW
QVRFIE9OKQotV0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX05FVFdPUktf
UFJPQ0VTUyBQUklWQVRFIE9OKQogV0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5B
QkxFX0RBVEFCQVNFX1BST0NFU1MgUFJJVkFURSBPTikKIFdFQktJVF9PUFRJT05fREVGQVVMVF9Q
T1JUX1ZBTFVFKEVOQUJMRV9QTFVHSU5fUFJPQ0VTUyBQUklWQVRFIE9OKQogV0VCS0lUX09QVElP
Tl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX01FTU9SWV9TQU1QTEVSIFBSSVZBVEUgT04pCklu
ZGV4OiBTb3VyY2UvY21ha2UvV2ViS2l0RmVhdHVyZXMuY21ha2UKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL2NtYWtlL1dlYktpdEZlYXR1cmVzLmNtYWtlCShyZXZpc2lvbiAxOTI2MDEpCisrKyBTb3Vy
Y2UvY21ha2UvV2ViS2l0RmVhdHVyZXMuY21ha2UJKHdvcmtpbmcgY29weSkKQEAgLTEyOCw3ICsx
MjgsNiBAQCBtYWNybyhXRUJLSVRfT1BUSU9OX0JFR0lOKQogICAgIFdFQktJVF9PUFRJT05fREVG
SU5FKEVOQUJMRV9OQVZJR0FUT1JfSFdDT05DVVJSRU5DWSAiVG9nZ2xlIE5hdmlnYXRvciBoYXJk
d2FyZSBjb25jdXJyZW5jeSBzdXBwb3J0IiBQUklWQVRFIE9OKQogICAgIFdFQktJVF9PUFRJT05f
REVGSU5FKEVOQUJMRV9OT1NOSUZGICJUb2dnbGUgc3VwcG9ydCBmb3IgJ1gtQ29udGVudC1UeXBl
LU9wdGlvbnM6IG5vc25pZmYnIiBQUklWQVRFIE9GRikKICAgICBXRUJLSVRfT1BUSU9OX0RFRklO
RShFTkFCTEVfTkVUU0NBUEVfUExVR0lOX0FQSSAiVG9nZ2xlIE5ldHNjYXBlIFBsdWdpbiBzdXBw
b3J0IiBQUklWQVRFIE9OKQotICAgIFdFQktJVF9PUFRJT05fREVGSU5FKEVOQUJMRV9ORVRXT1JL
X1BST0NFU1MgIlRvZ2dsZSBkZWRpY2F0ZWQgbmV0d29yayBwcm9jZXNzIHN1cHBvcnQgaW4gV2Vi
S2l0MiIgUFJJVkFURSBPRkYpCiAgICAgV0VCS0lUX09QVElPTl9ERUZJTkUoRU5BQkxFX05PVElG
SUNBVElPTlMgIlRvZ2dsZSBEZXNrdG9wIE5vdGlmaWNhdGlvbnMgU3VwcG9ydCIgUFJJVkFURSBP
RkYpCiAgICAgV0VCS0lUX09QVElPTl9ERUZJTkUoRU5BQkxFX09SSUVOVEFUSU9OX0VWRU5UUyAi
VG9nZ2xlIE9yaWVudGF0aW9uIEV2ZW50cyBzdXBwb3J0IiBQUklWQVRFIE9GRikKICAgICBXRUJL
SVRfT1BUSU9OX0RFRklORShFTkFCTEVfUERGS0lUX1BMVUdJTiAiVG9nZ2xlIFBERktpdCBwbHVn
aW4gc3VwcG9ydCIgUFJJVkFURSBPRkYpCkluZGV4OiBUb29scy9DaGFuZ2VMb2cKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gVG9vbHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAxOTI2NTMpCisrKyBUb29scy9DaGFuZ2VM
b2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNSBAQAorMjAxNS0xMS0xOSAgQWxleCBDaHJp
c3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgorCisgICAgICAgIFJlbW92ZSB0aGUg
bm9uLU5ldHdvcmtQcm9jZXNzIGNvbmZpZ3VyYXRpb25zCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTE0MTgKKworICAgICAgICBSZXZpZXdlZCBieSBH
ZW9mZiBHYXJlbi4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9tYWMv
R2V0UElEQWZ0ZXJBYm9ydGVkUHJvY2Vzc0xhdW5jaC5jcHA6CisgICAgICAgIChUZXN0V2ViS2l0
QVBJOjpURVNUKToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNw
cDoKKyAgICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6OmdlbmVyYXRlUGFnZUNvbmZpZ3VyYXRp
b24pOgorCiAyMDE1LTExLTE5ICBBbGV4ZXkgUHJvc2t1cnlha292ICA8YXBAYXBwbGUuY29tPgog
CiAgICAgICAgIExheW91dFRlc3RSZWxheSBwcm9jZXNzZXMgbGVhayBvbiBpT1MgdGVzdGVycwpJ
bmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL21hYy9HZXRQSURBZnRlckFi
b3J0ZWRQcm9jZXNzTGF1bmNoLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdDIvbWFjL0dldFBJREFmdGVyQWJvcnRlZFByb2Nlc3NMYXVuY2guY3BwCShy
ZXZpc2lvbiAxOTI2MDEpCisrKyBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvbWFj
L0dldFBJREFmdGVyQWJvcnRlZFByb2Nlc3NMYXVuY2guY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00
Miw3ICs0Miw2IEBAIHN0YXRpYyB2b2lkIGRpZEZpbmlzaExvYWRGb3JGcmFtZShXS1BhZ2UKIFRF
U1QoV2ViS2l0MiwgR2V0UElEQWZ0ZXJBYm9ydGVkUHJvY2Vzc0xhdW5jaCkKIHsKICAgICBXS1Jl
dGFpblB0cjxXS0NvbnRleHRSZWY+IGNvbnRleHQoQWRvcHRXSywgV0tDb250ZXh0Q3JlYXRlKCkp
OwotICAgIFdLQ29udGV4dFNldFVzZXNOZXR3b3JrUHJvY2Vzcyhjb250ZXh0LmdldCgpLCB0cnVl
KTsKIAogICAgIFBsYXRmb3JtV2ViVmlldyB3ZWJWaWV3KGNvbnRleHQuZ2V0KCkpOwogCkluZGV4
OiBUb29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBUb29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcAkocmV2aXNpb24gMTky
NjAxKQorKysgVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTQwMCwxMSArNDAwLDYgQEAgV0tSZXRhaW5QdHI8V0tQYWdlQ29uZmlndXJh
dGlvblJlZj4gVGVzdAogCiAgICAgbV9nZW9sb2NhdGlvblByb3ZpZGVyID0gc3RkOjptYWtlX3Vu
aXF1ZTxHZW9sb2NhdGlvblByb3ZpZGVyTW9jaz4obV9jb250ZXh0LmdldCgpKTsKIAotI2lmIFBM
QVRGT1JNKEVGTCkKLSAgICBXS0NvbnRleHRTZXRVc2VzTmV0d29ya1Byb2Nlc3MobV9jb250ZXh0
LmdldCgpLCBmYWxzZSk7Ci0gICAgV0tDb250ZXh0U2V0UHJvY2Vzc01vZGVsKG1fY29udGV4dC5n
ZXQoKSwga1dLUHJvY2Vzc01vZGVsU2hhcmVkU2Vjb25kYXJ5UHJvY2Vzcyk7Ci0jZW5kaWYKLQog
ICAgIGlmIChjb25zdCBjaGFyKiBkdW1wUmVuZGVyVHJlZVRlbXAgPSBsaWJyYXJ5UGF0aEZvclRl
c3RpbmcoKSkgewogICAgICAgICBTdHJpbmcgdGVtcG9yYXJ5Rm9sZGVyID0gU3RyaW5nOjpmcm9t
VVRGOChkdW1wUmVuZGVyVHJlZVRlbXApOwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>265914</attachid>
            <date>2015-11-19 15:50:51 -0800</date>
            <delta_ts>2015-11-19 16:01:12 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-151418-20151119155039.patch</filename>
            <type>text/plain</type>
            <size>169570</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IENoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBDaGFuZ2VMb2cJKHJldmlzaW9uIDE5MjYw
MSkKKysrIENoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE1IEBACisyMDE1LTEx
LTE5ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAg
ICAgUmVtb3ZlIHRoZSBub24tTmV0d29ya1Byb2Nlc3MgY29uZmlndXJhdGlvbnMKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MTQxOAorCisgICAgICAg
IFJldmlld2VkIGJ5IEdlb2ZmIEdhcmVuLgorCisgICAgICAgICogU291cmNlL2NtYWtlL09wdGlv
bnNFZmwuY21ha2U6CisgICAgICAgICogU291cmNlL2NtYWtlL09wdGlvbnNHVEsuY21ha2U6Cisg
ICAgICAgICogU291cmNlL2NtYWtlL09wdGlvbnNNYWMuY21ha2U6CisgICAgICAgICogU291cmNl
L2NtYWtlL1dlYktpdEZlYXR1cmVzLmNtYWtlOgorCiAyMDE1LTExLTE3ICBDYXJsb3MgR2FyY2lh
IENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KIAogICAgICAgICBSRUdSRVNTSU9OKHIxOTI0
NTkpOiBbR1RLXSBVc2VyIGFnZW50IHN0cmluZyBpcyBicm9rZW4gYWZ0ZXIgcjE5MjQ1OQpJbmRl
eDogU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQy
L0NoYW5nZUxvZwkocmV2aXNpb24gMTkyNjYwKQorKysgU291cmNlL1dlYktpdDIvQ2hhbmdlTG9n
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzEwIEBACisyMDE1LTExLTE5ICBBbGV4IENocmlz
dGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmVtb3ZlIHRoZSBu
b24tTmV0d29ya1Byb2Nlc3MgY29uZmlndXJhdGlvbnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MTQxOAorCisgICAgICAgIFJldmlld2VkIGJ5IEdl
b2ZmIEdhcmVuLgorCisgICAgICAgIFRoaXMgcGF0Y2ggYXNzdW1lcyBFTkFCTEUoTkVUV09SS19Q
Uk9DRVNTKSBpcyBhbHdheXMgMSwgdXNlc05ldHdvcmtQcm9jZXNzIGlzIGFsd2F5cyB0cnVlLCAK
KyAgICAgICAgYW5kIFByb2Nlc3NNb2RlbCBpcyBhbHdheXMgUHJvY2Vzc01vZGVsTXVsdGlwbGVT
ZWNvbmRhcnlQcm9jZXNzZXMuICBJdCBkb2VzIHRoaXMgYnkgcmVtb3ZpbmcKKyAgICAgICAgdGhl
IGNoZWNrcyBhbmQgdGhlIGNvZGUgdGhhdCB3b3VsZCBiZSBleGVjdXRlZCB3aXRoIG90aGVyIGNv
bmZpZ3VyYXRpb25zLgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogTmV0
d29ya1Byb2Nlc3MvRW50cnlQb2ludC9tYWMvTGVnYWN5UHJvY2Vzcy9OZXR3b3JrUHJvY2Vzc01h
aW4ubW06CisgICAgICAgIChOZXR3b3JrUHJvY2Vzc01haW4pOgorICAgICAgICAqIE5ldHdvcmtQ
cm9jZXNzL0VudHJ5UG9pbnQvbWFjL1hQQ1NlcnZpY2UvTmV0d29ya1NlcnZpY2VFbnRyeVBvaW50
Lm1tOgorICAgICAgICAoTmV0d29ya1NlcnZpY2VJbml0aWFsaXplcik6CisgICAgICAgICogTmV0
d29ya1Byb2Nlc3MvRmlsZUFQSS9OZXR3b3JrQmxvYlJlZ2lzdHJ5LmNwcDoKKyAgICAgICAgKFdl
YktpdDo6TmV0d29ya0Jsb2JSZWdpc3RyeTo6ZmlsZXNJbkJsb2IpOgorICAgICAgICAqIE5ldHdv
cmtQcm9jZXNzL0ZpbGVBUEkvTmV0d29ya0Jsb2JSZWdpc3RyeS5oOgorICAgICAgICAqIE5ldHdv
cmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmJsb2JTaXplKToKKyAgICAgICAg
KiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oOgorICAgICAg
ICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2Vz
LmluOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkLmNwcDoKKyAgICAgICAg
KiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZC5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNz
L05ldHdvcmtMb2FkQ2xpZW50Lmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xv
YWRQYXJhbWV0ZXJzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0xvYWRQYXJhbWV0ZXJz
OjpOZXR3b3JrTG9hZFBhcmFtZXRlcnMpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdv
cmtMb2FkUGFyYW1ldGVycy5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9j
ZXNzLmNwcDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oOgorICAg
ICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluOgorICAgICAg
ICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgICog
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmg6CisgICAgICAgICogTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLm1lc3NhZ2VzLmluOgorICAgICAgICAqIE5l
dHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtQcm9jZXNzQ29jb2EubW06CisgICAgICAgIChXZWJL
aXQ6Ok5ldHdvcmtQcm9jZXNzOjpjbGVhckRpc2tDYWNoZSk6CisgICAgICAgICogTmV0d29ya1By
b2Nlc3MvZWZsL05ldHdvcmtQcm9jZXNzTWFpbkVmbC5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5l
dHdvcmtQcm9jZXNzTWFpblVuaXgpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2d0ay9OZXR3
b3JrUHJvY2Vzc01haW5HdGsuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc01h
aW5Vbml4KToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9pb3MvTmV0d29ya1Byb2Nlc3NJT1Mu
bW06CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvbWFjL05ldHdvcmtMb2FkTWFjLm1tOgorICAg
ICAgICAqIE5ldHdvcmtQcm9jZXNzL21hYy9OZXR3b3JrUHJvY2Vzc01hYy5tbToKKyAgICAgICAg
KiBOZXR3b3JrUHJvY2Vzcy9tYWMvTmV0d29ya1Jlc291cmNlTG9hZGVyTWFjLm1tOgorICAgICAg
ICAqIE5ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya1Byb2Nlc3NTb3VwLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OnBsYXRmb3JtVGVybWluYXRlKToKKyAgICAgICAgKiBO
ZXR3b3JrUHJvY2Vzcy9zb3VwL1JlbW90ZU5ldHdvcmtpbmdDb250ZXh0U291cC5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OlJlbW90ZU5ldHdvcmtpbmdDb250ZXh0OjpzdG9yYWdlU2Vzc2lvbik6Cisg
ICAgICAgICogU2hhcmVkL0FQSS9jL1dLRGVwcmVjYXRlZEZ1bmN0aW9ucy5jcHA6CisgICAgICAg
IChXS0luc3BlY3RvclRvZ2dsZUphdmFTY3JpcHRQcm9maWxpbmcpOgorICAgICAgICAoV0tDb250
ZXh0U2V0UHJvY2Vzc01vZGVsKToKKyAgICAgICAgKFdLQ29udGV4dEdldFByb2Nlc3NNb2RlbCk6
CisgICAgICAgIChXS0NvbnRleHRTZXRVc2VzTmV0d29ya1Byb2Nlc3MpOgorICAgICAgICAoV0tH
cmFwaGljc0NvbnRleHRHZXRDR0NvbnRleHQpOgorICAgICAgICAqIFNoYXJlZC9BdXRoZW50aWNh
dGlvbi9BdXRoZW50aWNhdGlvbk1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpBdXRoZW50
aWNhdGlvbk1hbmFnZXI6OmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSk6CisgICAg
ICAgICogU2hhcmVkL05ldHdvcmsvQ3VzdG9tUHJvdG9jb2xzL0NvY29hL0N1c3RvbVByb3RvY29s
TWFuYWdlckNvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpDdXN0b21Qcm90b2NvbE1hbmFnZXI6
OmluaXRpYWxpemUpOgorICAgICAgICAoV2ViS2l0OjpDdXN0b21Qcm90b2NvbE1hbmFnZXI6OmFk
ZEN1c3RvbVByb3RvY29sKToKKyAgICAgICAgKiBTaGFyZWQvTmV0d29yay9DdXN0b21Qcm90b2Nv
bHMvQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyLmg6CisgICAgICAgICogU2hhcmVkL05ldHdvcmsvQ3Vz
dG9tUHJvdG9jb2xzL3NvdXAvQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyU291cC5jcHA6CisgICAgICAg
IChXZWJLaXQ6OkN1c3RvbVByb3RvY29sTWFuYWdlcjo6c3VwcGxlbWVudE5hbWUpOgorICAgICAg
ICAoV2ViS2l0OjpDdXN0b21Qcm90b2NvbE1hbmFnZXI6OmluaXRpYWxpemUpOgorICAgICAgICAo
V2ViS2l0OjpDdXN0b21Qcm90b2NvbE1hbmFnZXI6OnJlZ2lzdGVyU2NoZW1lKToKKyAgICAgICAg
KiBTaGFyZWQvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOjpkZWNvZGUp
OgorICAgICAgICAqIFNoYXJlZC9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0
ZXJzLmg6CisgICAgICAgICogU2hhcmVkL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NTdXBwbGVtZW50
Lmg6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzU3VwcGxlbWVudDo6aW5pdGlhbGl6
ZSk6CisgICAgICAgICogU2hhcmVkL05ldHdvcmsvTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRl
cnMuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVyczo6
ZGVjb2RlKToKKyAgICAgICAgKiBTaGFyZWQvTmV0d29yay9OZXR3b3JrUmVzb3VyY2VMb2FkUGFy
YW1ldGVycy5oOgorICAgICAgICAqIFNoYXJlZC9Qcm9jZXNzRXhlY3V0YWJsZVBhdGguaDoKKyAg
ICAgICAgKiBTaGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnM6OldlYlByb2Nlc3NDcmVhdGlv
blBhcmFtZXRlcnMpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0
ZXJzOjplbmNvZGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0
ZXJzOjpkZWNvZGUpOgorICAgICAgICAqIFNoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0
ZXJzLmg6CisgICAgICAgICogU2hhcmVkL2VmbC9Qcm9jZXNzRXhlY3V0YWJsZVBhdGhFZmwuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpleGVjdXRhYmxlUGF0aE9mUGx1Z2luUHJvY2Vzcyk6CisgICAg
ICAgIChXZWJLaXQ6OmV4ZWN1dGFibGVQYXRoT2ZOZXR3b3JrUHJvY2Vzcyk6CisgICAgICAgIChX
ZWJLaXQ6OmV4ZWN1dGFibGVQYXRoT2ZEYXRhYmFzZVByb2Nlc3MpOgorICAgICAgICAqIFNoYXJl
ZC9ndGsvUHJvY2Vzc0V4ZWN1dGFibGVQYXRoR3RrLmNwcDoKKyAgICAgICAgKFdlYktpdDo6ZXhl
Y3V0YWJsZVBhdGhPZlBsdWdpblByb2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpleGVjdXRhYmxl
UGF0aE9mTmV0d29ya1Byb2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpleGVjdXRhYmxlUGF0aE9m
RGF0YWJhc2VQcm9jZXNzKToKKyAgICAgICAgKiBTaGFyZWQvbWFjL0Nvb2tpZVN0b3JhZ2VTaGlt
Lmg6CisgICAgICAgICogU2hhcmVkL21hYy9Db29raWVTdG9yYWdlU2hpbS5tbToKKyAgICAgICAg
KC1bV0tOU1VSTFNlc3Npb25Mb2NhbCBfZ2V0Q29va2llSGVhZGVyc0ZvclRhc2s6Y29tcGxldGlv
bkhhbmRsZXI6XSk6CisgICAgICAgICogU2hhcmVkL21hYy9Db29raWVTdG9yYWdlU2hpbUxpYnJh
cnkuY3BwOgorICAgICAgICAqIFNoYXJlZC9tYWMvQ29va2llU3RvcmFnZVNoaW1MaWJyYXJ5Lmg6
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uY3Bw
OgorICAgICAgICAoQVBJOjpQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb246OmNyZWF0ZVdpdGhMZWdh
Y3lPcHRpb25zKToKKyAgICAgICAgKEFQSTo6UHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uOjpjb3B5
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSVByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5o
OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJU2Vzc2lvbi5jcHA6CisgICAgICAgIChBUEk6
OlNlc3Npb246On5TZXNzaW9uKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tBUElDYXN0
Lmg6CisgICAgICAgIChXZWJLaXQ6OnRvQVBJKToKKyAgICAgICAgKFdlYktpdDo6dG9Gb250U21v
b3RoaW5nTGV2ZWwpOgorICAgICAgICAoV2ViS2l0Ojp0b1Byb2Nlc3NNb2RlbCk6IERlbGV0ZWQu
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dC5jcHA6CisgICAgICAgIChXS0Nv
bnRleHRHZXRDYWNoZU1vZGVsKToKKyAgICAgICAgKFdLQ29udGV4dFNldE1heGltdW1OdW1iZXJP
ZlByb2Nlc3Nlcyk6CisgICAgICAgIChXS0NvbnRleHRTZXRKYXZhU2NyaXB0R2FyYmFnZUNvbGxl
Y3RvclRpbWVyRW5hYmxlZCk6CisgICAgICAgIChXS0NvbnRleHRVc2VUZXN0aW5nTmV0d29ya1Nl
c3Npb24pOgorICAgICAgICAoV0tDb250ZXh0U2V0UHJvY2Vzc01vZGVsKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdLQ29udGV4dEdldFByb2Nlc3NNb2RlbCk6IERlbGV0ZWQuCisgICAgICAgIChXS0Nv
bnRleHRTZXRVc2VzTmV0d29ya1Byb2Nlc3MpOiBEZWxldGVkLgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvQy9XS0NvbnRleHQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvbWFjL1dLQ29u
dGV4dFByaXZhdGVNYWMubW06CisgICAgICAgIChXS0NvbnRleHRHZXROZXR3b3JrUHJvY2Vzc0lk
ZW50aWZpZXIpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzR3JvdXAu
bW06CisgICAgICAgICgtW1dLUHJvY2Vzc0dyb3VwIGluaXRXaXRoSW5qZWN0ZWRCdW5kbGVVUkw6
XSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29sLm1tOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a19jb250ZXh0LmNwcDoKKyAgICAgICAgKGV3a19j
b250ZXh0X3Byb2Nlc3NfbW9kZWxfc2V0KToKKyAgICAgICAgKGV3a19jb250ZXh0X3Byb2Nlc3Nf
bW9kZWxfZ2V0KToKKyAgICAgICAgKGV3a19jb250ZXh0X3Rsc19lcnJvcl9wb2xpY3lfZ2V0KToK
KyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Bvb2xDb2NvYS5tbToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnVwZGF0ZVByb2Nlc3NTdXBwcmVzc2lvblN0YXRl
KToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnBsYXRmb3JtSW5pdGlhbGl6ZVdl
YlByb2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6cGxhdGZvcm1Jbml0
aWFsaXplTmV0d29ya1Byb2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6
cGxhdGZvcm1JbnZhbGlkYXRlQ29udGV4dCk6CisgICAgICAgICogVUlQcm9jZXNzL0Rvd25sb2Fk
cy9Eb3dubG9hZFByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6RG93bmxvYWRQcm94eTo6Y2Fu
Y2VsKToKKyAgICAgICAgKFdlYktpdDo6RG93bmxvYWRQcm94eTo6aW52YWxpZGF0ZSk6CisgICAg
ICAgICogVUlQcm9jZXNzL0xhdW5jaGVyL1Byb2Nlc3NMYXVuY2hlci5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OlByb2Nlc3NMYXVuY2hlcjo6cHJvY2Vzc1R5cGVBc1N0cmluZyk6CisgICAgICAgIChX
ZWJLaXQ6OlByb2Nlc3NMYXVuY2hlcjo6Z2V0UHJvY2Vzc1R5cGVGcm9tU3RyaW5nKToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvTGF1bmNoZXIvUHJvY2Vzc0xhdW5jaGVyLmg6CisgICAgICAgICogVUlQ
cm9jZXNzL0xhdW5jaGVyL2VmbC9Qcm9jZXNzTGF1bmNoZXJFZmwuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpQcm9jZXNzTGF1bmNoZXI6OmxhdW5jaFByb2Nlc3MpOgorICAgICAgICAqIFVJUHJvY2Vz
cy9MYXVuY2hlci9ndGsvUHJvY2Vzc0xhdW5jaGVyR3RrLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
UHJvY2Vzc0xhdW5jaGVyOjpsYXVuY2hQcm9jZXNzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvTGF1
bmNoZXIvbWFjL1Byb2Nlc3NMYXVuY2hlck1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6Y29tcHV0
ZVByb2Nlc3NTaGltUGF0aCk6CisgICAgICAgIChXZWJLaXQ6OnNlcnZpY2VOYW1lKToKKyAgICAg
ICAgKFdlYktpdDo6c2hvdWxkTGVha0Jvb3N0KToKKyAgICAgICAgKFdlYktpdDo6Y3JlYXRlUHJv
Y2Vzcyk6CisgICAgICAgICogVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5j
cHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OnNldElzSG9sZGluZ0xv
Y2tlZEZpbGVzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1By
b3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5t
ZXNzYWdlcy5pbjoKKyAgICAgICAgKiBVSVByb2Nlc3MvTmV0d29yay9tYWMvTmV0d29ya1Byb2Nl
c3NQcm94eU1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NQcm94eTo6cGxh
dGZvcm1HZXRMYXVuY2hPcHRpb25zKToKKyAgICAgICAgKiBVSVByb2Nlc3MvTmV0d29yay9zb3Vw
L05ldHdvcmtQcm9jZXNzUHJveHlTb3VwLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1By
b2Nlc3NQcm94eTo6cGxhdGZvcm1HZXRMYXVuY2hPcHRpb25zKToKKyAgICAgICAgKiBVSVByb2Nl
c3MvUHJvY2Vzc01vZGVsLmg6IFJlbW92ZWQuCisgICAgICAgICogVUlQcm9jZXNzL1dlYkNvb2tp
ZU1hbmFnZXJQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkNvb2tpZU1hbmFnZXJQcm94
eTo6c2hvdWxkVGVybWluYXRlKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29va2llTWFuYWdlclBy
b3h5OjpyZWZXZWJDb250ZXh0U3VwcGxlbWVudCk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvb2tp
ZU1hbmFnZXJQcm94eTo6c2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeSk6CisgICAgICAgIChXZWJL
aXQ6OldlYkNvb2tpZU1hbmFnZXJQcm94eTo6Z2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeSk6Cisg
ICAgICAgICogVUlQcm9jZXNzL1dlYkluc3BlY3RvclByb3h5LmNwcDoKKyAgICAgICAgKFdlYktp
dDo6V2ViSW5zcGVjdG9yUHJveHk6Omluc3BlY3RvclByb2Nlc3NQb29sKToKKyAgICAgICAgKiBV
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5
OjpXZWJQYWdlUHJveHkpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnJlYXR0YWNo
VG9XZWJQcm9jZXNzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpzZXRTZXNzaW9u
SUQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmluaXRpYWxpemVXZWJQYWdlKToK
KyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwOgorICAgICAgICAoV2ViS2l0
OjpXZWJQcm9jZXNzUG9vbDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bv
b2w6OldlYlByb2Nlc3NQb29sKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6On5X
ZWJQcm9jZXNzUG9vbCk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjppbml0aWFs
aXplQ2xpZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnNldERvd25sb2Fk
Q2xpZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnNldE1heGltdW1OdW1i
ZXJPZlByb2Nlc3Nlcyk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpuZXR3b3Jr
aW5nUHJvY2Vzc0Nvbm5lY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6
bGFuZ3VhZ2VDaGFuZ2VkKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnRleHRD
aGVja2VyU3RhdGVDaGFuZ2VkKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OmVu
c3VyZU5ldHdvcmtQcm9jZXNzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6Omdl
dE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQ
b29sOjplbnN1cmVEYXRhYmFzZVByb2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNz
UG9vbDo6c2V0QW55UGFnZUdyb3VwTWlnaHRIYXZlUHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpwcm9jZXNzRGlkQ2FjaGVQYWdlKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OmNyZWF0ZU5ld1dlYlByb2Nlc3MpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6ZGlzY29ubmVjdFByb2Nlc3MpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6Y3JlYXRlV2ViUGFnZSk6CisgICAgICAgIChXZWJL
aXQ6OldlYlByb2Nlc3NQb29sOjpkb3dubG9hZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nl
c3NQb29sOjpyZXN1bWVEb3dubG9hZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29s
Ojpwb3N0TWVzc2FnZVRvSW5qZWN0ZWRCdW5kbGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9j
ZXNzUG9vbDo6c2V0QWRkaXRpb25hbFBsdWdpbnNEaXJlY3RvcnkpOgorICAgICAgICAoV2ViS2l0
OjpXZWJQcm9jZXNzUG9vbDo6bmV0d29ya1Byb2Nlc3NJZGVudGlmaWVyKToKKyAgICAgICAgKFdl
YktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnNldEFsd2F5c1VzZXNDb21wbGV4VGV4dENvZGVQYXRoKToK
KyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnNldENhbkhhbmRsZUhUVFBTU2VydmVy
VHJ1c3RFdmFsdWF0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnJlZ2lz
dGVyVVJMU2NoZW1lQXNMb2NhbCk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpz
ZXRDYWNoZU1vZGVsKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnNldERlZmF1
bHRSZXF1ZXN0VGltZW91dEludGVydmFsKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bv
b2w6OmNyZWF0ZURvd25sb2FkUHJveHkpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9v
bDo6YWRkTWVzc2FnZVJlY2VpdmVyKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6
OnVzZVRlc3RpbmdOZXR3b3JrU2Vzc2lvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQ
b29sOjphbGxvd1NwZWNpZmljSFRUUFNDZXJ0aWZpY2F0ZUZvckhvc3QpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQcm9jZXNzUG9vbDo6cmVxdWVzdFdlYkNvbnRlbnRTdGF0aXN0aWNzKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnJlcXVlc3ROZXR3b3JraW5nU3RhdGlzdGljcyk6
CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpoYW5kbGVNZXNzYWdlKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnNldFByb2Nlc3NNb2RlbCk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpzZXRVc2VzTmV0d29ya1Byb2Nlc3MpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6dXNlc05ldHdvcmtQcm9j
ZXNzKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OmVuc3VyZVNo
YXJlZFdlYlByb2Nlc3MpOiBEZWxldGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNz
UG9vbC5oOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6c2VuZFRvTmV0d29ya2lu
Z1Byb2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6c2VuZFRvTmV0d29y
a2luZ1Byb2Nlc3NSZWxhdW5jaGluZ0lmTmVjZXNzYXJ5KToKKyAgICAgICAgKFdlYktpdDo6V2Vi
UHJvY2Vzc1Bvb2w6OnNlbmRUb0FsbFByb2Nlc3Nlc1JlbGF1bmNoaW5nVGhlbUlmTmVjZXNzYXJ5
KToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnNlbmRUb09uZVByb2Nlc3MpOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0
OjpXZWJQcm9jZXNzUHJveHk6OnJlbW92ZVdlYlBhZ2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
cm9jZXNzUHJveHk6OmdldFBsdWdpblByb2Nlc3NDb25uZWN0aW9uKToKKyAgICAgICAgKFdlYktp
dDo6V2ViUHJvY2Vzc1Byb3h5OjpnZXROZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24pOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OmdldERhdGFiYXNlUHJvY2Vzc0Nvbm5lY3Rpb24p
OgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OnVwZGF0ZVRleHRDaGVja2VyU3Rh
dGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OmRpZFNhdmVUb1BhZ2VDYWNo
ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6ZGlkQ2FuY2VsUHJvY2Vzc1N1
c3BlbnNpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OnJlaW5zdGF0ZU5l
dHdvcmtQcm9jZXNzQXNzZXJ0aW9uU3RhdGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNz
UHJveHk6OmRpZFNldEFzc2VydGlvblN0YXRlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vz
c1Byb3h5OjpjcmVhdGVEb3dubG9hZFByb3h5KTogRGVsZXRlZC4KKyAgICAgICAgKiBVSVByb2Nl
c3MvV2ViUHJvY2Vzc1Byb3h5Lmg6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6
dGhyb3R0bGVyKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5Lm1lc3NhZ2Vz
LmluOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6fldlYnNpdGVEYXRhU3RvcmUp
OgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpjbG9uZVNlc3Npb25EYXRhKToK
KyAgICAgICAgKiBVSVByb2Nlc3MvZ3RrL1dlYlByb2Nlc3NQb29sR3RrLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6aW5pdEluc3BlY3RvclNlcnZlcik6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nl
c3NQb29sOjpwbGF0Zm9ybUluaXRpYWxpemVXZWJQcm9jZXNzKToKKyAgICAgICAgKFdlYktpdDo6
V2ViUHJvY2Vzc1Bvb2w6OnNldElnbm9yZVRMU0Vycm9ycyk6CisgICAgICAgICogVUlQcm9jZXNz
L3NvdXAvV2ViUHJvY2Vzc1Bvb2xTb3VwLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vz
c1Bvb2w6OnBsYXRmb3JtSW5pdGlhbGl6ZU5ldHdvcmtQcm9jZXNzKToKKyAgICAgICAgKiBXZWJL
aXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogV2ViS2l0MlByZWZpeC5o
OgorICAgICAgICAqIFdlYlByb2Nlc3MvRmlsZUFQSS9CbG9iUmVnaXN0cnlQcm94eS5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OkJsb2JSZWdpc3RyeVByb3h5OjpyZWdpc3RlckZpbGVCbG9iVVJMKToK
KyAgICAgICAgKFdlYktpdDo6QmxvYlJlZ2lzdHJ5UHJveHk6OnJlZ2lzdGVyQmxvYlVSTCk6Cisg
ICAgICAgIChXZWJLaXQ6OkJsb2JSZWdpc3RyeVByb3h5Ojp1bnJlZ2lzdGVyQmxvYlVSTCk6Cisg
ICAgICAgIChXZWJLaXQ6OkJsb2JSZWdpc3RyeVByb3h5OjpyZWdpc3RlckJsb2JVUkxGb3JTbGlj
ZSk6CisgICAgICAgIChXZWJLaXQ6OkJsb2JSZWdpc3RyeVByb3h5OjpibG9iU2l6ZSk6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9GaWxlQVBJL0Jsb2JSZWdpc3RyeVByb3h5Lmg6CisgICAgICAgICog
V2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5jcHA6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5oOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24ubWVzc2FnZXMu
aW46CisgICAgICAgICogV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZFNjaGVkdWxl
ci5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZFNjaGVkdWxlcjo6bmV0d29y
a1Byb2Nlc3NDcmFzaGVkKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3Vy
Y2VMb2FkU2NoZWR1bGVyLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291
cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VM
b2FkZXIuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIu
bWVzc2FnZXMuaW46CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNj
YXBlQnJvd3NlckZ1bmNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6aW5pdGlhbGl6ZUJyb3dzZXJG
dW5jcyk6CisgICAgICAgIChXZWJLaXQ6Om5ldHNjYXBlQnJvd3NlckZ1bmNzKToKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4uY3BwOgorICAgICAg
ICAoV2ViS2l0OjpOZXRzY2FwZVBsdWdpbjo6cmVnaXN0ZXJSZWRpcmVjdCk6CisgICAgICAgIChX
ZWJLaXQ6Ok5ldHNjYXBlUGx1Z2luOjp1cmxSZWRpcmVjdFJlc3BvbnNlKToKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y29va2llc0ZvckRPTSk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBsYXRmb3JtU3RyYXRlZ2llczo6c2V0Q29va2llc0Zyb21ET00pOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNvb2tpZXNFbmFibGVkKToK
KyAgICAgICAgKFdlYktpdDo6V2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjb29raWVSZXF1ZXN0SGVh
ZGVyRmllbGRWYWx1ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBsYXRmb3JtU3RyYXRlZ2llczo6
Z2V0UmF3Q29va2llcyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBsYXRmb3JtU3RyYXRlZ2llczo6
ZGVsZXRlQ29va2llKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpy
ZXNvdXJjZUxvYWRTY2hlZHVsZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF0Zm9ybVN0cmF0
ZWdpZXM6OmxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkpOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
bGF0Zm9ybVN0cmF0ZWdpZXM6OmNyZWF0ZVBpbmdIYW5kbGUpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNyZWF0ZUJsb2JSZWdpc3RyeSk6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaDoKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJG
cmFtZTo6c3RhcnREb3dubG9hZCk6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lOjpjb252ZXJ0
TWFpblJlc291cmNlTG9hZFRvRG93bmxvYWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZTo6
c291cmNlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwOgorICAgICAgICAo
V2ViS2l0OjpXZWJQcm9jZXNzOjpXZWJQcm9jZXNzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJv
Y2Vzczo6aW5pdGlhbGl6ZUNvbm5lY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNz
Ojppbml0aWFsaXplV2ViUHJvY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OmVu
c3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nl
c3M6OnJlZ2lzdGVyVVJMU2NoZW1lQXNFbXB0eURvY3VtZW50KToKKyAgICAgICAgKFdlYktpdDo6
V2ViUHJvY2Vzczo6ZGVzdHJveVByaXZhdGVCcm93c2luZ1Nlc3Npb24pOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQcm9jZXNzOjpwbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbk1hbmFnZXIpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpzaG91bGRUZXJtaW5hdGUpOgorICAgICAgICAoV2ViS2l0
OjpXZWJQcm9jZXNzOjpzZXRJbmplY3RlZEJ1bmRsZVBhcmFtZXRlcnMpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQcm9jZXNzOjpuZXR3b3JrQ29ubmVjdGlvbik6CisgICAgICAgIChXZWJLaXQ6Oldl
YlByb2Nlc3M6OndlYlJlc291cmNlTG9hZFNjaGVkdWxlcik6CisgICAgICAgIChXZWJLaXQ6Oldl
YlByb2Nlc3M6OndlYlRvRGF0YWJhc2VQcm9jZXNzQ29ubmVjdGlvbkNsb3NlZCk6CisgICAgICAg
IChXZWJLaXQ6OldlYlByb2Nlc3M6OnNldEVuaGFuY2VkQWNjZXNzaWJpbGl0eSk6CisgICAgICAg
IChXZWJLaXQ6OldlYlByb2Nlc3M6OnByZWZldGNoRE5TKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
UHJvY2Vzczo6ZGlkQ3JlYXRlRG93bmxvYWQpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpX
ZWJQcm9jZXNzOjpkaWREZXN0cm95RG93bmxvYWQpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0
OjpXZWJQcm9jZXNzOjpkb3dubG9hZFByb3h5Q29ubmVjdGlvbik6IERlbGV0ZWQuCisgICAgICAg
IChXZWJLaXQ6OldlYlByb2Nlc3M6OmRvd25sb2Fkc0F1dGhlbnRpY2F0aW9uTWFuYWdlcik6IERl
bGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OmRvd25sb2FkTWFuYWdlcik6IERl
bGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OnVzZXNOZXR3b3JrUHJvY2Vzcyk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OmRvd25sb2FkUmVxdWVzdCk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OnJlc3VtZURvd25sb2FkKTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6Y2FuY2VsRG93bmxvYWQpOiBE
ZWxldGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQcm9jZXNzOjp0ZXh0Q2hlY2tlclN0YXRlKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
UHJvY2Vzczo6ZXZlbnREaXNwYXRjaGVyKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nl
c3MubWVzc2FnZXMuaW46CisgICAgICAgICogV2ViUHJvY2Vzcy9zb3VwL1dlYlByb2Nlc3NTb3Vw
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6cGxhdGZvcm1TZXRDYWNoZU1vZGVs
KToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6cGxhdGZvcm1DbGVhclJlc291cmNlQ2Fj
aGVzKToKKyAgICAgICAgKFdlYktpdDo6c2V0U291cFNlc3Npb25BY2NlcHRMYW5ndWFnZSk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OnBsYXRmb3JtSW5pdGlhbGl6ZVdlYlByb2Nlc3Mp
OgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpwbGF0Zm9ybVRlcm1pbmF0ZSk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OnNldElnbm9yZVRMU0Vycm9ycyk6CisgICAgICAgIChX
ZWJLaXQ6OldlYlByb2Nlc3M6OmFsbG93U3BlY2lmaWNIVFRQU0NlcnRpZmljYXRlRm9ySG9zdCk6
CisgICAgICAgICogY29uZmlnLmg6CisKIDIwMTUtMTEtMTkgIENzYWJhIE9zenRyb2dvbsOhYyAg
PG9zc3lAd2Via2l0Lm9yZz4KIAogICAgICAgICBbRUZMXSBGaXggV3JldHVybi10eXBlIGNsYW5n
IHdhcm5pbmcgaW4gRVdLMlVuaXRUZXN0QmFzZS5jcHAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NN
YWtlTGlzdHMudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL0NNYWtlTGlzdHMudHh0
CShyZXZpc2lvbiAxOTI2MDEpCisrKyBTb3VyY2UvV2ViS2l0Mi9DTWFrZUxpc3RzLnR4dAkod29y
a2luZyBjb3B5KQpAQCAtODAzLDE2ICs4MDMsMTMgQEAgaWYgKFdlYktpdDJfV2ViUHJvY2Vzc19P
VVRQVVRfTkFNRSkKICAgICBzZXRfdGFyZ2V0X3Byb3BlcnRpZXMoV2ViUHJvY2VzcyBQUk9QRVJU
SUVTIE9VVFBVVF9OQU1FICR7V2ViS2l0Ml9XZWJQcm9jZXNzX09VVFBVVF9OQU1FfSkKIGVuZGlm
ICgpCiAKLWlmIChFTkFCTEVfTkVUV09SS19QUk9DRVNTKQotICAgIGFkZF9leGVjdXRhYmxlKE5l
dHdvcmtQcm9jZXNzICR7TmV0d29ya1Byb2Nlc3NfU09VUkNFU30pCi0gICAgYWRkX3dlYmtpdDJf
cHJlZml4X2hlYWRlcihOZXR3b3JrUHJvY2VzcykKLSAgICB0YXJnZXRfbGlua19saWJyYXJpZXMo
TmV0d29ya1Byb2Nlc3MgJHtOZXR3b3JrUHJvY2Vzc19MSUJSQVJJRVN9KQotICAgIHNldF90YXJn
ZXRfcHJvcGVydGllcyhOZXR3b3JrUHJvY2VzcyBQUk9QRVJUSUVTIEZPTERFUiAiV2ViS2l0IikK
LSAgICBpbnN0YWxsKFRBUkdFVFMgTmV0d29ya1Byb2Nlc3MgREVTVElOQVRJT04gIiR7TElCRVhF
Q19JTlNUQUxMX0RJUn0iKQorYWRkX2V4ZWN1dGFibGUoTmV0d29ya1Byb2Nlc3MgJHtOZXR3b3Jr
UHJvY2Vzc19TT1VSQ0VTfSkKK2FkZF93ZWJraXQyX3ByZWZpeF9oZWFkZXIoTmV0d29ya1Byb2Nl
c3MpCit0YXJnZXRfbGlua19saWJyYXJpZXMoTmV0d29ya1Byb2Nlc3MgJHtOZXR3b3JrUHJvY2Vz
c19MSUJSQVJJRVN9KQorc2V0X3RhcmdldF9wcm9wZXJ0aWVzKE5ldHdvcmtQcm9jZXNzIFBST1BF
UlRJRVMgRk9MREVSICJXZWJLaXQiKQogCi0gICAgaWYgKFdlYktpdDJfTmV0d29ya1Byb2Nlc3Nf
T1VUUFVUX05BTUUpCi0gICAgICAgIHNldF90YXJnZXRfcHJvcGVydGllcyhOZXR3b3JrUHJvY2Vz
cyBQUk9QRVJUSUVTIE9VVFBVVF9OQU1FICR7V2ViS2l0Ml9OZXR3b3JrUHJvY2Vzc19PVVRQVVRf
TkFNRX0pCi0gICAgZW5kaWYgKCkKK2lmIChXZWJLaXQyX05ldHdvcmtQcm9jZXNzX09VVFBVVF9O
QU1FKQorICAgIHNldF90YXJnZXRfcHJvcGVydGllcyhOZXR3b3JrUHJvY2VzcyBQUk9QRVJUSUVT
IE9VVFBVVF9OQU1FICR7V2ViS2l0Ml9OZXR3b3JrUHJvY2Vzc19PVVRQVVRfTkFNRX0pCiBlbmRp
ZiAoKQogCiBpZiAoRU5BQkxFX1BMVUdJTl9QUk9DRVNTKQpAQCAtODQ3LDcgKzg0NCw3IEBAIHNl
dF90YXJnZXRfcHJvcGVydGllcyhXZWJLaXQyIFBST1BFUlRJRVMKIGlmIChBUFBMRSkKICAgICBX
RUJLSVRfRlJBTUVXT1JLKFdlYktpdDIpCiBlbHNlICgpCi0gICAgaW5zdGFsbChUQVJHRVRTIFdl
YktpdDIgV2ViUHJvY2VzcworICAgIGluc3RhbGwoVEFSR0VUUyBXZWJLaXQyIFdlYlByb2Nlc3Mg
TmV0d29ya1Byb2Nlc3MKICAgICAgICAgTElCUkFSWSBERVNUSU5BVElPTiAiJHtMSUJfSU5TVEFM
TF9ESVJ9IgogICAgICAgICBSVU5USU1FIERFU1RJTkFUSU9OICIke0xJQkVYRUNfSU5TVEFMTF9E
SVJ9IgogICAgICkKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYktpdDJQcmVmaXguaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJLaXQyUHJlZml4LmgJKHJldmlzaW9uIDE5MjYwMSkK
KysrIFNvdXJjZS9XZWJLaXQyL1dlYktpdDJQcmVmaXguaAkod29ya2luZyBjb3B5KQpAQCAtMzYs
OCArMzYsNiBAQAogCiAjZGVmaW5lIEVOQUJMRV9XRUJfUFJPQ0VTU19TQU5EQk9YIDEKIAotI2Rl
ZmluZSBFTkFCTEVfTkVUV09SS19QUk9DRVNTIDEKLQogI2RlZmluZSBFTkFCTEVfREFUQUJBU0Vf
UFJPQ0VTUyAxCiAKICNkZWZpbmUgRU5BQkxFX01FTU9SWV9TQU1QTEVSIDEKQEAgLTU5LDcgKzU3
LDYgQEAKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oR1RLKQotI2RlZmluZSBFTkFCTEVfTkVUV09S
S19QUk9DRVNTIDEKICNkZWZpbmUgRU5BQkxFX1NIQVJFQUJMRV9SRVNPVVJDRSAxCiAjZW5kaWYK
IApJbmRleDogU291cmNlL1dlYktpdDIvY29uZmlnLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdDIvY29uZmlnLmgJKHJldmlzaW9uIDE5MjYwMSkKKysrIFNvdXJjZS9XZWJLaXQyL2NvbmZp
Zy5oCSh3b3JraW5nIGNvcHkpCkBAIC05MSw3ICs5MSw3IEBACiAjZW5kaWYKIAogI2lmbmRlZiBF
TkFCTEVfTkVUV09SS19DQUNIRQotI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpICYmIChQTEFU
Rk9STShDT0NPQSkgfHwgUExBVEZPUk0oR1RLKSkKKyNpZiBQTEFURk9STShDT0NPQSkgfHwgUExB
VEZPUk0oR1RLKQogI2RlZmluZSBFTkFCTEVfTkVUV09SS19DQUNIRSAxCiAjZWxzZQogI2RlZmlu
ZSBFTkFCTEVfTkVUV09SS19DQUNIRSAwCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mu
Y3BwCShyZXZpc2lvbiAxOTI2MDEpCisrKyBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2LDgg
KzI2LDYgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJOZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2Vzcy5oIgogCi0jaWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKLQogI2luY2x1
ZGUgIk5ldHdvcmtCbG9iUmVnaXN0cnkuaCIKICNpbmNsdWRlICJOZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2Vzc01lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiTmV0d29ya0xvYWQuaCIKQEAgLTI3NCw1
ICsyNzIsMyBAQCB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpibG9iCiB9CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYktpdAotCi0jZW5kaWYgLy8gRU5BQkxFKE5FVFdPUktfUFJPQ0VT
UykKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaAkocmV2aXNpb24gMTkyNjAxKQorKysg
U291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MuaAkod29ya2luZyBjb3B5KQpAQCAtMjYsOCArMjYsNiBAQAogI2lmbmRlZiBOZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2Vzc19oCiAjZGVmaW5lIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzX2gKIAotI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCi0KICNpbmNsdWRlICJCbG9ja2lu
Z1Jlc3BvbnNlTWFwLmgiCiAjaW5jbHVkZSAiQ29ubmVjdGlvbi5oIgogI2luY2x1ZGUgIk5ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzTWVzc2FnZXMuaCIKQEAgLTEwMiw2ICsxMDAsNCBAQCBw
cml2YXRlOgogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAotI2VuZGlmIC8vIEVOQUJMRShORVRX
T1JLX1BST0NFU1MpCi0KICNlbmRpZiAvLyBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzc19o
CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgkocmV2
aXNpb24gMTkyNjAxKQorKysgU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4JKHdvcmtpbmcgY29weSkKQEAgLTIwLDgg
KzIwLDYgQEAKICMgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKICMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KIAotI2lmIEVO
QUJMRShORVRXT1JLX1BST0NFU1MpCi0KIG1lc3NhZ2VzIC0+IE5ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzIExlZ2FjeVJlY2VpdmVyIHsKIAogICAgIFNjaGVkdWxlUmVzb3VyY2VMb2FkKFdl
YktpdDo6TmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMgcmVzb3VyY2VMb2FkUGFyYW1ldGVy
cykKQEAgLTQ4LDUgKzQ2LDMgQEAgbWVzc2FnZXMgLT4gTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2NlcwogICAgIFVucmVnaXN0ZXJCbG9iVVJMKFdlYkNvcmU6OlVSTCB1cmwpCiAgICAgQmxvYlNp
emUoV2ViQ29yZTo6VVJMIHVybCkgLT4gKHVpbnQ2NF90IHJlc3VsdFNpemUpCiB9Ci0KLSNlbmRp
ZiAvLyBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQpJbmRleDogU291cmNlL1dlYktpdDIvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya0xvYWQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL05l
dHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkLmNwcAkocmV2aXNpb24gMTkyNjAxKQorKysgU291cmNl
L1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0yNCw4ICsyNCw2IEBACiAgKi8KIAogI2luY2x1ZGUgImNvbmZpZy5oIgotCi0jaWYgRU5BQkxF
KE5FVFdPUktfUFJPQ0VTUykKICNpbmNsdWRlICJOZXR3b3JrTG9hZC5oIgogCiAjaW5jbHVkZSAi
QXV0aGVudGljYXRpb25NYW5hZ2VyLmgiCkBAIC0zNzEsNSArMzY5LDMgQEAgdm9pZCBOZXR3b3Jr
TG9hZDo6cmVjZWl2ZWRDYW5jZWxsYXRpb24oUgogI2VuZGlmIC8vICFVU0UoTkVUV09SS19TRVNT
SU9OKQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQotI2VuZGlmIC8vIEVOQUJMRShORVRXT1JL
X1BST0NFU1MpCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9h
ZC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtM
b2FkLmgJKHJldmlzaW9uIDE5MjYwMSkKKysrIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNz
L05ldHdvcmtMb2FkLmgJKHdvcmtpbmcgY29weSkKQEAgLTI2LDggKzI2LDYgQEAKICNpZm5kZWYg
TmV0d29ya0xvYWRfaAogI2RlZmluZSBOZXR3b3JrTG9hZF9oCiAKLSNpZiBFTkFCTEUoTkVUV09S
S19QUk9DRVNTKQotCiAjaW5jbHVkZSAiTmV0d29ya0xvYWRDbGllbnQuaCIKICNpbmNsdWRlICJO
ZXR3b3JrTG9hZFBhcmFtZXRlcnMuaCIKICNpbmNsdWRlICJSZW1vdGVOZXR3b3JraW5nQ29udGV4
dC5oIgpAQCAtMTI2LDYgKzEyNCw0IEBAIHByaXZhdGU6CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktp
dAogCi0jZW5kaWYgLy8gRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKLQogI2VuZGlmIC8vIE5ldHdv
cmtMb2FkX2gKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2Fk
Q2xpZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya0xvYWRDbGllbnQuaAkocmV2aXNpb24gMTkyNjAxKQorKysgU291cmNlL1dlYktpdDIvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMjYsOCAr
MjYsNiBAQAogI2lmbmRlZiBOZXR3b3JrTG9hZENsaWVudF9oCiAjZGVmaW5lIE5ldHdvcmtMb2Fk
Q2xpZW50X2gKIAotI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCi0KICNpbmNsdWRlIDxXZWJD
b3JlL1Jlc291cmNlRXJyb3IuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlUmVxdWVzdC5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VSZXNwb25zZS5oPgpAQCAtNjYsNyArNjQsNSBA
QCBwdWJsaWM6CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCi0jZW5kaWYgLy8gRU5BQkxFKE5F
VFdPUktfUFJPQ0VTUykKLQogI2VuZGlmIC8vIE5ldHdvcmtMb2FkQ2xpZW50X2gKIApJbmRleDog
U291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRQYXJhbWV0ZXJzLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZFBh
cmFtZXRlcnMuY3BwCShyZXZpc2lvbiAxOTI2MDEpCisrKyBTb3VyY2UvV2ViS2l0Mi9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrTG9hZFBhcmFtZXRlcnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNCw4
ICsyNCw2IEBACiAgKi8KIAogI2luY2x1ZGUgImNvbmZpZy5oIgotCi0jaWYgRU5BQkxFKE5FVFdP
UktfUFJPQ0VTUykKICNpbmNsdWRlICJOZXR3b3JrTG9hZFBhcmFtZXRlcnMuaCIKIAogI2luY2x1
ZGUgIk5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmgiCkBAIC00Nyw1ICs0NSwzIEBAIE5l
dHdvcmtMb2FkUGFyYW1ldGVyczo6TmV0d29ya0xvYWRQYXJhbWUKIH0KIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViS2l0Ci0KLSNlbmRpZiAvLyBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQpJbmRleDogU291
cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRQYXJhbWV0ZXJzLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRQYXJhbWV0
ZXJzLmgJKHJldmlzaW9uIDE5MjYwMSkKKysrIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNz
L05ldHdvcmtMb2FkUGFyYW1ldGVycy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw4ICsyNiw2IEBA
CiAjaWZuZGVmIE5ldHdvcmtMb2FkUGFyYW1ldGVyc19oCiAjZGVmaW5lIE5ldHdvcmtMb2FkUGFy
YW1ldGVyc19oCiAKLSNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQotCiAjaW5jbHVkZSA8V2Vi
Q29yZS9SZXNvdXJjZUxvYWRlck9wdGlvbnMuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNl
UmVxdWVzdC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2Vzc2lvbklELmg+CkBAIC01NSw2ICs1Myw0
IEBAIHB1YmxpYzoKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKLSNlbmRpZiAvLyBFTkFCTEUo
TkVUV09SS19QUk9DRVNTKQotCiAjZW5kaWYgLy8gTmV0d29ya0xvYWRQYXJhbWV0ZXJzX2gKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5j
cHAJKHJldmlzaW9uIDE5MjYwMSkKKysrIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05l
dHdvcmtQcm9jZXNzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjYsOCArMjYsNiBAQAogI2luY2x1
ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzLmgiCiAKLSNpZiBFTkFCTEUo
TkVUV09SS19QUk9DRVNTKQotCiAjaW5jbHVkZSAiQXJndW1lbnRDb2RlcnMuaCIKICNpbmNsdWRl
ICJBdHRhY2htZW50LmgiCiAjaW5jbHVkZSAiQXV0aGVudGljYXRpb25NYW5hZ2VyLmgiCkBAIC01
NTQsNSArNTUyLDMgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6cGxhdGZvcm1Mb3dNZW1vcnlIYQog
I2VuZGlmCiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAotCi0jZW5kaWYgLy8gRU5BQkxFKE5FVFdP
UktfUFJPQ0VTUykKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtQ
cm9jZXNzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1Byb2Nlc3MuaAkocmV2aXNpb24gMTkyNjAxKQorKysgU291cmNlL1dlYktpdDIvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaAkod29ya2luZyBjb3B5KQpAQCAtMjYsOCArMjYsNiBA
QAogI2lmbmRlZiBOZXR3b3JrUHJvY2Vzc19oCiAjZGVmaW5lIE5ldHdvcmtQcm9jZXNzX2gKIAot
I2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCi0KICNpbmNsdWRlICJDYWNoZU1vZGVsLmgiCiAj
aW5jbHVkZSAiQ2hpbGRQcm9jZXNzLmgiCiAjaW5jbHVkZSAiRG93bmxvYWRNYW5hZ2VyLmgiCkBA
IC0xOTcsNiArMTk1LDQgQEAgcHJpdmF0ZToKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKLSNl
bmRpZiAvLyBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQotCiAjZW5kaWYgLy8gTmV0d29ya1Byb2Nl
c3NfaApJbmRleDogU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3Mu
bWVzc2FnZXMuaW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4JKHJldmlzaW9uIDE5MjYwMSkKKysrIFNvdXJjZS9X
ZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluCSh3b3JraW5n
IGNvcHkpCkBAIC0yMCw4ICsyMCw2IEBACiAjIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCiAjIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCiAKLSNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQotCiBtZXNzYWdlcyAtPiBOZXR3
b3JrUHJvY2VzcyBMZWdhY3lSZWNlaXZlciB7CiAgICAgIyBJbml0aWFsaXplcyB0aGUgbmV0d29y
ayBwcm9jZXNzLgogICAgIEluaXRpYWxpemVOZXR3b3JrUHJvY2VzcyhzdHJ1Y3QgV2ViS2l0OjpO
ZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycyBwcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJz
KQpAQCAtNjMsNSArNjEsMyBAQCBtZXNzYWdlcyAtPiBOZXR3b3JrUHJvY2VzcyBMZWdhY3lSZWNl
aXZlCiAgICAgQ2FuY2VsUHJlcGFyZVRvU3VzcGVuZCgpCiAgICAgUHJvY2Vzc0RpZFJlc3VtZSgp
CiB9Ci0KLSNlbmRpZiAvLyBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQpJbmRleDogU291cmNlL1dl
YktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIu
Y3BwCShyZXZpc2lvbiAxOTI2MDEpCisrKyBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw4ICsyNiw2IEBA
CiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiTmV0d29ya1Jlc291cmNlTG9hZGVyLmgi
CiAKLSNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQotCiAjaW5jbHVkZSAiRGF0YVJlZmVyZW5j
ZS5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJOZXR3b3JrQmxvYlJlZ2lzdHJ5
LmgiCkBAIC01ODEsNSArNTc5LDMgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmNvbnRp
bnVlQ2FuQQogI2VuZGlmCiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAotCi0jZW5kaWYgLy8gRU5B
QkxFKE5FVFdPUktfUFJPQ0VTUykKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNz
L05ldHdvcmtSZXNvdXJjZUxvYWRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL05l
dHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5oCShyZXZpc2lvbiAxOTI2MDEpCisr
KyBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuaAko
d29ya2luZyBjb3B5KQpAQCAtMjYsOCArMjYsNiBAQAogI2lmbmRlZiBOZXR3b3JrUmVzb3VyY2VM
b2FkZXJfaAogI2RlZmluZSBOZXR3b3JrUmVzb3VyY2VMb2FkZXJfaAogCi0jaWYgRU5BQkxFKE5F
VFdPUktfUFJPQ0VTUykKLQogI2luY2x1ZGUgIk1lc3NhZ2VTZW5kZXIuaCIKICNpbmNsdWRlICJO
ZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzc01lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiTmV0d29y
a0xvYWRDbGllbnQuaCIKQEAgLTE2OSw2ICsxNjcsNCBAQCBwcml2YXRlOgogCiB9IC8vIG5hbWVz
cGFjZSBXZWJLaXQKIAotI2VuZGlmIC8vIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCi0KICNlbmRp
ZiAvLyBOZXR3b3JrUmVzb3VyY2VMb2FkZXJfaApJbmRleDogU291cmNlL1dlYktpdDIvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLm1lc3NhZ2VzLmluCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5tZXNz
YWdlcy5pbgkocmV2aXNpb24gMTkyNjAxKQorKysgU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLm1lc3NhZ2VzLmluCSh3b3JraW5nIGNvcHkpCkBAIC0y
MCw4ICsyMCw2IEBACiAjIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCiAjIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAKLSNp
ZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQotCiBtZXNzYWdlcyAtPiBOZXR3b3JrUmVzb3VyY2VM
b2FkZXIgTGVnYWN5UmVjZWl2ZXIgewogCiAgICAgQ29udGludWVXaWxsU2VuZFJlcXVlc3QoV2Vi
Q29yZTo6UmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QpCkBAIC0zMCw1ICsyOCwzIEBAIG1lc3NhZ2Vz
IC0+IE5ldHdvcmtSZXNvdXJjZUxvYWRlciBMZWdhY3kKICAgICBDb250aW51ZUNhbkF1dGhlbnRp
Y2F0ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2UoYm9vbCBjYW5BdXRoZW50aWNhdGUpCiAjZW5kaWYK
IH0KLQotI2VuZGlmIC8vIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCkluZGV4OiBTb3VyY2UvV2Vi
S2l0Mi9OZXR3b3JrUHJvY2Vzcy9FbnRyeVBvaW50L21hYy9MZWdhY3lQcm9jZXNzL05ldHdvcmtQ
cm9jZXNzTWFpbi5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vz
cy9FbnRyeVBvaW50L21hYy9MZWdhY3lQcm9jZXNzL05ldHdvcmtQcm9jZXNzTWFpbi5tbQkocmV2
aXNpb24gMTkyNjAxKQorKysgU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvRW50cnlQb2lu
dC9tYWMvTGVnYWN5UHJvY2Vzcy9OZXR3b3JrUHJvY2Vzc01haW4ubW0JKHdvcmtpbmcgY29weSkK
QEAgLTI1LDggKzI1LDYgQEAKIAogI2ltcG9ydCAiY29uZmlnLmgiCiAKLSNpZiBFTkFCTEUoTkVU
V09SS19QUk9DRVNTKQotCiAjaW1wb3J0ICJDaGlsZFByb2Nlc3NFbnRyeVBvaW50LmgiCiAjaW1w
b3J0ICJOZXR3b3JrUHJvY2Vzcy5oIgogI2ltcG9ydCAiV0tCYXNlLmgiCkBAIC0zOSw1ICszNywz
IEBAIGludCBOZXR3b3JrUHJvY2Vzc01haW4oaW50IGFyZ2MsIGNoYXIqKiAKIHsKICAgICByZXR1
cm4gQ2hpbGRQcm9jZXNzTWFpbjxOZXR3b3JrUHJvY2VzcywgQ2hpbGRQcm9jZXNzTWFpbkRlbGVn
YXRlPihhcmdjLCBhcmd2KTsKIH0KLQotI2VuZGlmIC8vIEVOQUJMRShORVRXT1JLX1BST0NFU1Mp
CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9FbnRyeVBvaW50L21hYy9YUENT
ZXJ2aWNlL05ldHdvcmtTZXJ2aWNlRW50cnlQb2ludC5tbQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9FbnRyeVBvaW50L21hYy9YUENTZXJ2aWNlL05ldHdvcmtT
ZXJ2aWNlRW50cnlQb2ludC5tbQkocmV2aXNpb24gMTkyNjAxKQorKysgU291cmNlL1dlYktpdDIv
TmV0d29ya1Byb2Nlc3MvRW50cnlQb2ludC9tYWMvWFBDU2VydmljZS9OZXR3b3JrU2VydmljZUVu
dHJ5UG9pbnQubW0JKHdvcmtpbmcgY29weSkKQEAgLTUyLDcgKzUyLDYgQEAgZXh0ZXJuICJDIiBX
S19FWFBPUlQgdm9pZCBOZXR3b3JrU2VydmljZQogCiB2b2lkIE5ldHdvcmtTZXJ2aWNlSW5pdGlh
bGl6ZXIoeHBjX2Nvbm5lY3Rpb25fdCBjb25uZWN0aW9uLCB4cGNfb2JqZWN0X3QgaW5pdGlhbGl6
ZXJNZXNzYWdlKQogewotI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCiAgICAgLy8gUmVtb3Zl
IHRoZSBTZWNJdGVtU2hpbSBmcm9tIHRoZSBEWUxEX0lOU0VSVF9MSUJSQVJJRVMgZW52aXJvbm1l
bnQgdmFyaWFibGUgc28gYW55IHByb2Nlc3NlcyBzcGF3bmVkIGJ5CiAgICAgLy8gdGhlIHRoaXMg
cHJvY2VzcyBkb24ndCB0cnkgdG8gaW5zZXJ0IHRoZSBzaGltIGFuZCBjcmFzaC4KICAgICBFbnZp
cm9ubWVudFV0aWxpdGllczo6c3RyaXBWYWx1ZXNFbmRpbmdXaXRoU3RyaW5nKCJEWUxEX0lOU0VS
VF9MSUJSQVJJRVMiLCAiL1NlY0l0ZW1TaGltLmR5bGliIik7CkBAIC02OSw1ICs2OCw0IEBAIHZv
aWQgTmV0d29ya1NlcnZpY2VJbml0aWFsaXplcih4cGNfY29ubmUKICNpZiBIQVZFKE9TX0FDVElW
SVRZKQogICAgIG9zX2FjdGl2aXR5X2VuZChhY3Rpdml0eSk7CiAjZW5kaWYKLSNlbmRpZgogfQpJ
bmRleDogU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvRmlsZUFQSS9OZXR3b3JrQmxvYlJl
Z2lzdHJ5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9G
aWxlQVBJL05ldHdvcmtCbG9iUmVnaXN0cnkuY3BwCShyZXZpc2lvbiAxOTI2MDEpCisrKyBTb3Vy
Y2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9GaWxlQVBJL05ldHdvcmtCbG9iUmVnaXN0cnkuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0yNiw4ICsyNiw2IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAj
aW5jbHVkZSAiTmV0d29ya0Jsb2JSZWdpc3RyeS5oIgogCi0jaWYgRU5BQkxFKE5FVFdPUktfUFJP
Q0VTUykKLQogI2luY2x1ZGUgIkJsb2JEYXRhRmlsZVJlZmVyZW5jZVdpdGhTYW5kYm94RXh0ZW5z
aW9uLmgiCiAjaW5jbHVkZSAiU2FuZGJveEV4dGVuc2lvbi5oIgogI2luY2x1ZGUgPFdlYkNvcmUv
QmxvYlBhcnQuaD4KQEAgLTE1MSw1ICsxNDksMyBAQCBWZWN0b3I8UmVmUHRyPEJsb2JEYXRhRmls
ZVJlZmVyZW5jZT4+IE5lCiB9CiAKIH0KLQotI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9O
ZXR3b3JrUHJvY2Vzcy9GaWxlQVBJL05ldHdvcmtCbG9iUmVnaXN0cnkuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9GaWxlQVBJL05ldHdvcmtCbG9iUmVnaXN0
cnkuaAkocmV2aXNpb24gMTkyNjAxKQorKysgU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3Mv
RmlsZUFQSS9OZXR3b3JrQmxvYlJlZ2lzdHJ5LmgJKHdvcmtpbmcgY29weSkKQEAgLTI2LDggKzI2
LDYgQEAKICNpZm5kZWYgTmV0d29ya0Jsb2JSZWdpc3RyeV9oCiAjZGVmaW5lIE5ldHdvcmtCbG9i
UmVnaXN0cnlfaAogCi0jaWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKLQogI2luY2x1ZGUgPFdl
YkNvcmUvVVJMSGFzaC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3Rm
L0hhc2hTZXQuaD4KQEAgLTY4LDYgKzY2LDQgQEAgcHJpdmF0ZToKIAogfQogCi0jZW5kaWYgLy8g
RU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKLQogI2VuZGlmIC8vIE5ldHdvcmtCbG9iUmVnaXN0cnlf
aApJbmRleDogU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Byb2Nl
c3NDb2NvYS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9j
b2NvYS9OZXR3b3JrUHJvY2Vzc0NvY29hLm1tCShyZXZpc2lvbiAxOTI2MDEpCisrKyBTb3VyY2Uv
V2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrUHJvY2Vzc0NvY29hLm1tCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yNiw4ICsyNiw2IEBACiAjaW1wb3J0ICJjb25maWcuaCIKICNpbXBvcnQg
Ik5ldHdvcmtQcm9jZXNzLmgiCiAKLSNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQotCiAjaW1w
b3J0ICJOZXR3b3JrQ2FjaGUuaCIKICNpbXBvcnQgIk5ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJh
bWV0ZXJzLmgiCiAjaW1wb3J0ICJOZXR3b3JrUmVzb3VyY2VMb2FkZXIuaCIKQEAgLTI2Nyw1ICsy
NjUsMyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpjbGVhckRpc2tDYWNoZShzdGQ6CiB9CiAKIH0K
LQotI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9lZmwvTmV0d29y
a1Byb2Nlc3NNYWluRWZsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9OZXR3b3Jr
UHJvY2Vzcy9lZmwvTmV0d29ya1Byb2Nlc3NNYWluRWZsLmNwcAkocmV2aXNpb24gMTkyNjAxKQor
KysgU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvZWZsL05ldHdvcmtQcm9jZXNzTWFpbkVm
bC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI3LDggKzI3LDYgQEAKICNpbmNsdWRlICJjb25maWcu
aCIKICNpbmNsdWRlICJOZXR3b3JrUHJvY2Vzc01haW5Vbml4LmgiCiAKLSNpZiBFTkFCTEUoTkVU
V09SS19QUk9DRVNTKQotCiAjaW5jbHVkZSAiQ2hpbGRQcm9jZXNzTWFpbi5oIgogI2luY2x1ZGUg
Ik5ldHdvcmtQcm9jZXNzLmgiCiAjaW5jbHVkZSA8RWNvcmUuaD4KQEAgLTcwLDUgKzY4LDMgQEAg
aW50IE5ldHdvcmtQcm9jZXNzTWFpblVuaXgoaW50IGFyZ2MsIGNoYQogfQogCiB9IC8vIG5hbWVz
cGFjZSBXZWJLaXQKLQotI2VuZGlmIC8vIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCkluZGV4OiBT
b3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9ndGsvTmV0d29ya1Byb2Nlc3NNYWluR3RrLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9ndGsvTmV0d29y
a1Byb2Nlc3NNYWluR3RrLmNwcAkocmV2aXNpb24gMTkyNjAxKQorKysgU291cmNlL1dlYktpdDIv
TmV0d29ya1Byb2Nlc3MvZ3RrL05ldHdvcmtQcm9jZXNzTWFpbkd0ay5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTI3LDggKzI3LDYgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJOZXR3
b3JrUHJvY2Vzc01haW5Vbml4LmgiCiAKLSNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQotCiAj
aW5jbHVkZSAiQ2hpbGRQcm9jZXNzTWFpbi5oIgogI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzLmgi
CiAjaW5jbHVkZSA8V2ViQ29yZS9Tb3VwTmV0d29ya1Nlc3Npb24uaD4KQEAgLTYzLDUgKzYxLDMg
QEAgaW50IE5ldHdvcmtQcm9jZXNzTWFpblVuaXgoaW50IGFyZ2MsIGNoYQogfQogCiB9IC8vIG5h
bWVzcGFjZSBXZWJLaXQKLQotI2VuZGlmIC8vIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCkluZGV4
OiBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9pb3MvTmV0d29ya1Byb2Nlc3NJT1MubW0K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvaW9zL05ldHdvcmtQ
cm9jZXNzSU9TLm1tCShyZXZpc2lvbiAxOTI2MDEpCisrKyBTb3VyY2UvV2ViS2l0Mi9OZXR3b3Jr
UHJvY2Vzcy9pb3MvTmV0d29ya1Byb2Nlc3NJT1MubW0JKHdvcmtpbmcgY29weSkKQEAgLTI2LDcg
KzI2LDcgQEAKICNpbXBvcnQgImNvbmZpZy5oIgogI2ltcG9ydCAiTmV0d29ya1Byb2Nlc3MuaCIK
IAotI2lmIFBMQVRGT1JNKElPUykgJiYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKKyNpZiBQTEFU
Rk9STShJT1MpCiAKICNpbXBvcnQgIk5ldHdvcmtDYWNoZS5oIgogI2ltcG9ydCAiTmV0d29ya1By
b2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaCIKQEAgLTEwMSw0ICsxMDEsNCBAQCB2b2lkIE5ldHdv
cmtQcm9jZXNzOjpwbGF0Zm9ybVRlcm1pbmF0ZSgpCiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAog
Ci0jZW5kaWYgLy8gUExBVEZPUk0oSU9TKSAmJiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQorI2Vu
ZGlmIC8vIFBMQVRGT1JNKElPUykKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNz
L21hYy9OZXR3b3JrTG9hZE1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9OZXR3
b3JrUHJvY2Vzcy9tYWMvTmV0d29ya0xvYWRNYWMubW0JKHJldmlzaW9uIDE5MjYwMSkKKysrIFNv
dXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL21hYy9OZXR3b3JrTG9hZE1hYy5tbQkod29ya2lu
ZyBjb3B5KQpAQCAtMjQsOCArMjQsNiBAQAogICovCiAKICNpbXBvcnQgImNvbmZpZy5oIgotCi0j
aWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKICNpbXBvcnQgIk5ldHdvcmtMb2FkLmgiCiAKICNp
bXBvcnQgPFdlYkNvcmUvQ0ZOZXR3b3JrU1BJLmg+CkBAIC02MCw1ICs1OCwzIEBAIHZvaWQgTmV0
d29ya0xvYWQ6OndpbGxDYWNoZVJlc3BvbnNlQXN5bmMKICNlbmRpZiAvLyAhVVNFKENGTkVUV09S
SykKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KLSNlbmRpZiAvLyBFTkFCTEUoTkVUV09SS19Q
Uk9DRVNTKQpJbmRleDogU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvbWFjL05ldHdvcmtQ
cm9jZXNzTWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNz
L21hYy9OZXR3b3JrUHJvY2Vzc01hYy5tbQkocmV2aXNpb24gMTkyNjAxKQorKysgU291cmNlL1dl
YktpdDIvTmV0d29ya1Byb2Nlc3MvbWFjL05ldHdvcmtQcm9jZXNzTWFjLm1tCSh3b3JraW5nIGNv
cHkpCkBAIC0yNiw3ICsyNiw3IEBACiAjaW1wb3J0ICJjb25maWcuaCIKICNpbXBvcnQgIk5ldHdv
cmtQcm9jZXNzLmgiCiAKLSNpZiBQTEFURk9STShNQUMpICYmIEVOQUJMRShORVRXT1JLX1BST0NF
U1MpCisjaWYgUExBVEZPUk0oTUFDKQogCiAjaW1wb3J0ICJOZXR3b3JrQ2FjaGUuaCIKICNpbXBv
cnQgIk5ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmgiCkBAIC0xNDQsNCArMTQ0LDQg
QEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6cGxhdGZvcm1UZXJtaW5hdGUoKQogCiB9IC8vIG5hbWVz
cGFjZSBXZWJLaXQKIAotI2VuZGlmIC8vIFBMQVRGT1JNKE1BQykgJiYgRU5BQkxFKE5FVFdPUktf
UFJPQ0VTUykKKyNlbmRpZiAvLyBQTEFURk9STShNQUMpCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9O
ZXR3b3JrUHJvY2Vzcy9tYWMvTmV0d29ya1Jlc291cmNlTG9hZGVyTWFjLm1tCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL21hYy9OZXR3b3JrUmVzb3VyY2VMb2Fk
ZXJNYWMubW0JKHJldmlzaW9uIDE5MjYwMSkKKysrIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9j
ZXNzL21hYy9OZXR3b3JrUmVzb3VyY2VMb2FkZXJNYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTI2
LDggKzI2LDYgQEAKICNpbXBvcnQgImNvbmZpZy5oIgogI2ltcG9ydCAiTmV0d29ya1Jlc291cmNl
TG9hZGVyLmgiCiAKLSNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQotCiAjaW1wb3J0ICJOZXR3
b3JrRGlza0NhY2hlTW9uaXRvci5oIgogI2ltcG9ydCAiU2hhcmVhYmxlUmVzb3VyY2UuaCIKICNp
bXBvcnQgPFdlYkNvcmUvQ0ZOZXR3b3JrU1BJLmg+CkBAIC05MSw1ICs4OSwzIEBAIHZvaWQgTmV0
d29ya1Jlc291cmNlTG9hZGVyOjp3aWxsQ2FjaGVSZXMKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0
CiAKLSNlbmRpZiAvLyBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQotCkluZGV4OiBTb3VyY2UvV2Vi
S2l0Mi9OZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtQcm9jZXNzU291cC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrUHJvY2Vzc1Nv
dXAuY3BwCShyZXZpc2lvbiAxOTI2MDEpCisrKyBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vz
cy9zb3VwL05ldHdvcmtQcm9jZXNzU291cC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI1LDcgKzI1
LDYgQEAKICAqLwogCiAjaW5jbHVkZSAiY29uZmlnLmgiCi0jaWYgRU5BQkxFKE5FVFdPUktfUFJP
Q0VTUykKICNpbmNsdWRlICJOZXR3b3JrUHJvY2Vzcy5oIgogCiAjaW5jbHVkZSAiTmV0d29ya0Nh
Y2hlLmgiCkBAIC0xNzAsNSArMTY5LDMgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6cGxhdGZvcm1U
ZXJtaW5hdGUoKQogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQotI2VuZGlmCkluZGV4OiBT
b3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9zb3VwL1JlbW90ZU5ldHdvcmtpbmdDb250ZXh0
U291cC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3Mvc291
cC9SZW1vdGVOZXR3b3JraW5nQ29udGV4dFNvdXAuY3BwCShyZXZpc2lvbiAxOTI2MDEpCisrKyBT
b3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9zb3VwL1JlbW90ZU5ldHdvcmtpbmdDb250ZXh0
U291cC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2LDcgKzI2LDYgQEAKICAqLwogCiAjaW5jbHVk
ZSAiY29uZmlnLmgiCi0jaWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKICNpbmNsdWRlICJSZW1v
dGVOZXR3b3JraW5nQ29udGV4dC5oIgogCiAjaW5jbHVkZSA8V2ViQ29yZS9OZXR3b3JrU3RvcmFn
ZVNlc3Npb24uaD4KQEAgLTU3LDUgKzU2LDMgQEAgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBSZW1v
dGVOZXR3b3JraW5nQwogfQogCiB9Ci0KLSNlbmRpZiAvLyBFTkFCTEUoTkVUV09SS19QUk9DRVNT
KQpJbmRleDogU291cmNlL1dlYktpdDIvU2hhcmVkL1Byb2Nlc3NFeGVjdXRhYmxlUGF0aC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9Qcm9jZXNzRXhlY3V0YWJsZVBhdGgu
aAkocmV2aXNpb24gMTkyNjAxKQorKysgU291cmNlL1dlYktpdDIvU2hhcmVkL1Byb2Nlc3NFeGVj
dXRhYmxlUGF0aC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw5ICszMiw3IEBAIG5hbWVzcGFjZSBX
ZWJLaXQgewogCiBTdHJpbmcgZXhlY3V0YWJsZVBhdGhPZldlYlByb2Nlc3MoKTsKIFN0cmluZyBl
eGVjdXRhYmxlUGF0aE9mUGx1Z2luUHJvY2VzcygpOwotI2lmIEVOQUJMRShORVRXT1JLX1BST0NF
U1MpCiBTdHJpbmcgZXhlY3V0YWJsZVBhdGhPZk5ldHdvcmtQcm9jZXNzKCk7Ci0jZW5kaWYKICNp
ZiBFTkFCTEUoREFUQUJBU0VfUFJPQ0VTUykKIFN0cmluZyBleGVjdXRhYmxlUGF0aE9mRGF0YWJh
c2VQcm9jZXNzKCk7CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJQcm9j
ZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5jcHAJKHJldmlzaW9uIDE5MjYwMSkK
KysrIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNDMsOSArNDMsNiBAQCBXZWJQcm9jZXNzQ3JlYXRpb25QYXJh
bWV0ZXJzOjpXZWJQcm9jZXNzCiAgICAgLCBzaG91bGRFbmFibGVKSVQoZmFsc2UpCiAgICAgLCBz
aG91bGRFbmFibGVGVExKSVQoZmFsc2UpCiAjZW5kaWYKLSNpZiBFTkFCTEUoTkVUV09SS19QUk9D
RVNTKQotICAgICwgdXNlc05ldHdvcmtQcm9jZXNzKGZhbHNlKQotI2VuZGlmCiAgICAgLCBtZW1v
cnlDYWNoZURpc2FibGVkKGZhbHNlKQogI2lmIEVOQUJMRShTRVJWSUNFX0NPTlRST0xTKQogICAg
ICwgaGFzSW1hZ2VTZXJ2aWNlcyhmYWxzZSkKQEAgLTEzMywxMCArMTMwLDYgQEAgdm9pZCBXZWJQ
cm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOjplbmNvZAogICAgIGVuY29kZXIgPDwgbm90aWZpY2F0
aW9uUGVybWlzc2lvbnM7CiAjZW5kaWYKIAotI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCi0g
ICAgZW5jb2RlciA8PCB1c2VzTmV0d29ya1Byb2Nlc3M7Ci0jZW5kaWYKLQogICAgIGVuY29kZXIg
PDwgcGx1Z0luQXV0b1N0YXJ0T3JpZ2luSGFzaGVzOwogICAgIGVuY29kZXIgPDwgcGx1Z0luQXV0
b1N0YXJ0T3JpZ2luczsKICAgICBlbmNvZGVyIDw8IG1lbW9yeUNhY2hlRGlzYWJsZWQ7CkBAIC0y
OTEsMTEgKzI4NCw2IEBAIGJvb2wgV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyczo6ZGVjb2QK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogI2VuZGlmCiAKLSNpZiBFTkFCTEUoTkVUV09SS19QUk9D
RVNTKQotICAgIGlmICghZGVjb2Rlci5kZWNvZGUocGFyYW1ldGVycy51c2VzTmV0d29ya1Byb2Nl
c3MpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0jZW5kaWYKLQogICAgIGlmICghZGVjb2Rlci5k
ZWNvZGUocGFyYW1ldGVycy5wbHVnSW5BdXRvU3RhcnRPcmlnaW5IYXNoZXMpKQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShwYXJhbWV0ZXJzLnBsdWdJbkF1
dG9TdGFydE9yaWdpbnMpKQpJbmRleDogU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlByb2Nlc3ND
cmVhdGlvblBhcmFtZXRlcnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQv
V2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oCShyZXZpc2lvbiAxOTI2MDEpCisrKyBTb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oCSh3b3JraW5n
IGNvcHkpCkBAIC0xNTQsMTAgKzE1NCw2IEBAIHN0cnVjdCBXZWJQcm9jZXNzQ3JlYXRpb25QYXJh
bWV0ZXJzIHsKICAgICBIYXNoTWFwPFN0cmluZywgYm9vbD4gbm90aWZpY2F0aW9uUGVybWlzc2lv
bnM7CiAjZW5kaWYKIAotI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCi0gICAgYm9vbCB1c2Vz
TmV0d29ya1Byb2Nlc3M7Ci0jZW5kaWYKLQogICAgIEhhc2hNYXA8V2ViQ29yZTo6U2Vzc2lvbklE
LCBIYXNoTWFwPHVuc2lnbmVkLCBkb3VibGU+PiBwbHVnSW5BdXRvU3RhcnRPcmlnaW5IYXNoZXM7
CiAgICAgVmVjdG9yPFN0cmluZz4gcGx1Z0luQXV0b1N0YXJ0T3JpZ2luczsKIApJbmRleDogU291
cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9jL1dLRGVwcmVjYXRlZEZ1bmN0aW9ucy5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9jL1dLRGVwcmVjYXRlZEZ1bmN0aW9u
cy5jcHAJKHJldmlzaW9uIDE5MjYwMSkKKysrIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9X
S0RlcHJlY2F0ZWRGdW5jdGlvbnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw2ICsyNyw4IEBA
CiAKICNpbmNsdWRlICJBUElEaWN0aW9uYXJ5LmgiCiAjaW5jbHVkZSAiV0tBcnJheS5oIgorI2lu
Y2x1ZGUgIldLQ29udGV4dC5oIgorI2luY2x1ZGUgIldLQ29udGV4dFByaXZhdGUuaCIKICNpbmNs
dWRlICJXS011dGFibGVEaWN0aW9uYXJ5LmgiCiAjaW5jbHVkZSAiV0tQcmVmZXJlbmNlc1JlZlBy
aXZhdGUuaCIKICNpbmNsdWRlICJXS1NoYXJlZEFQSUNhc3QuaCIKQEAgLTEzNCw2ICsxMzYsMTkg
QEAgdm9pZCBXS0luc3BlY3RvclRvZ2dsZUphdmFTY3JpcHRQcm9maWxpbgogewogfQogCit2b2lk
IFdLQ29udGV4dFNldFByb2Nlc3NNb2RlbChXS0NvbnRleHRSZWYsIFdLUHJvY2Vzc01vZGVsKQor
eworfQorCitXS1Byb2Nlc3NNb2RlbCBXS0NvbnRleHRHZXRQcm9jZXNzTW9kZWwoV0tDb250ZXh0
UmVmKQoreworICAgIHJldHVybiBrV0tQcm9jZXNzTW9kZWxNdWx0aXBsZVNlY29uZGFyeVByb2Nl
c3NlczsKK30KKwordm9pZCBXS0NvbnRleHRTZXRVc2VzTmV0d29ya1Byb2Nlc3MoV0tDb250ZXh0
UmVmLCBib29sKQoreworfQorCiAjaWYgUExBVEZPUk0oTUFDKQogQ0dDb250ZXh0UmVmIFdLR3Jh
cGhpY3NDb250ZXh0R2V0Q0dDb250ZXh0KFdLR3JhcGhpY3NDb250ZXh0UmVmIGdyYXBoaWNzQ29u
dGV4dCkKIHsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9BdXRoZW50aWNhdGlvbi9BdXRo
ZW50aWNhdGlvbk1hbmFnZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1NoYXJl
ZC9BdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdGlvbk1hbmFnZXIuY3BwCShyZXZpc2lvbiAxOTI2
MDEpCisrKyBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQXV0aGVudGljYXRpb24vQXV0aGVudGljYXRp
b25NYW5hZ2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUg
IkNoaWxkUHJvY2Vzcy5oIgogI2luY2x1ZGUgIkRvd25sb2FkLmgiCiAjaW5jbHVkZSAiRG93bmxv
YWRQcm94eU1lc3NhZ2VzLmgiCisjaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3NQcm94eU1lc3NhZ2Vz
LmgiCiAjaW5jbHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCiAjaW5jbHVkZSAiV2ViRnJh
bWUuaCIKICNpbmNsdWRlICJXZWJQYWdlLmgiCkBAIC0zNywxMCArMzgsNiBAQAogI2luY2x1ZGUg
PFdlYkNvcmUvQXV0aGVudGljYXRpb25DaGFsbGVuZ2UuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0F1
dGhlbnRpY2F0aW9uQ2xpZW50Lmg+CiAKLSNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQotI2lu
Y2x1ZGUgIk5ldHdvcmtQcm9jZXNzUHJveHlNZXNzYWdlcy5oIgotI2VuZGlmCi0KIHVzaW5nIG5h
bWVzcGFjZSBXZWJDb3JlOwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTEyOCw3ICsxMjUsNiBA
QCB2b2lkIEF1dGhlbnRpY2F0aW9uTWFuYWdlcjo6ZGlkUmVjZWl2ZUF1CiAgICAgbV9wcm9jZXNz
LT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZShmcmFtZS0+ZnJhbWVJRCgpLCBhdXRoZW50aWNhdGlvbkNoYWxsZW5nZSwgY2hhbGxl
bmdlSUQpLCBmcmFtZS0+cGFnZSgpLT5wYWdlSUQoKSk7CiB9CiAKLSNpZiBFTkFCTEUoTkVUV09S
S19QUk9DRVNTKQogI2lmIFVTRShORVRXT1JLX1NFU1NJT04pCiB2b2lkIEF1dGhlbnRpY2F0aW9u
TWFuYWdlcjo6ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKHVpbnQ2NF90IHBhZ2VJ
RCwgdWludDY0X3QgZnJhbWVJRCwgY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmIGF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlLCBDaGFsbGVuZ2VDb21wbGV0aW9uSGFuZGxlciBjb21wbGV0aW9u
SGFuZGxlcikKIHsKQEAgLTE1Nyw3ICsxNTMsNiBAQCB2b2lkIEF1dGhlbnRpY2F0aW9uTWFuYWdl
cjo6ZGlkUmVjZWl2ZUF1CiAgICAgCiAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpOZXR3
b3JrUHJvY2Vzc1Byb3h5OjpEaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UocGFnZUlE
LCBmcmFtZUlELCBhdXRoZW50aWNhdGlvbkNoYWxsZW5nZSwgY2hhbGxlbmdlSUQpKTsKIH0KLSNl
bmRpZgogCiAjaWYgIVVTRShORVRXT1JLX1NFU1NJT04pCiB2b2lkIEF1dGhlbnRpY2F0aW9uTWFu
YWdlcjo6ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKERvd25sb2FkKiBkb3dubG9h
ZCwgY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmIGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
KQpJbmRleDogU291cmNlL1dlYktpdDIvU2hhcmVkL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDcmVh
dGlvblBhcmFtZXRlcnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9O
ZXR3b3JrL05ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcAkocmV2aXNpb24gMTky
NjAxKQorKysgU291cmNlL1dlYktpdDIvU2hhcmVkL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDcmVh
dGlvblBhcmFtZXRlcnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw4ICsyNiw2IEBACiAjaW5j
bHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRl
cnMuaCIKIAotI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCi0KICNpbmNsdWRlICJBcmd1bWVu
dENvZGVycy5oIgogCiAjaWYgUExBVEZPUk0oQ09DT0EpCkBAIC0xNjgsNSArMTY2LDMgQEAgYm9v
bCBOZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyczo6ZAogfQogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJLaXQKLQotI2VuZGlmIC8vIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCkluZGV4OiBTb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVy
cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9OZXR3b3JrL05ldHdvcmtQ
cm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmgJKHJldmlzaW9uIDE5MjYwMSkKKysrIFNvdXJjZS9X
ZWJLaXQyL1NoYXJlZC9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTI2LDggKzI2LDYgQEAKICNpZm5kZWYgTmV0d29ya1Byb2Nlc3ND
cmVhdGlvblBhcmFtZXRlcnNfaAogI2RlZmluZSBOZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1l
dGVyc19oCiAKLSNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQotCiAjaW5jbHVkZSAiQ2FjaGVN
b2RlbC5oIgogI2luY2x1ZGUgIlNhbmRib3hFeHRlbnNpb24uaCIKICNpbmNsdWRlIDx3dGYvVmVj
dG9yLmg+CkBAIC0xMDMsNiArMTAxLDQgQEAgc3RydWN0IE5ldHdvcmtQcm9jZXNzQ3JlYXRpb25Q
YXJhbWV0ZXJzIAogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAotI2VuZGlmIC8vIEVOQUJMRShO
RVRXT1JLX1BST0NFU1MpCi0KICNlbmRpZiAvLyBOZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1l
dGVyc19oCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvTmV0d29yay9OZXR3b3JrUHJvY2Vz
c1N1cHBsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvTmV0d29y
ay9OZXR3b3JrUHJvY2Vzc1N1cHBsZW1lbnQuaAkocmV2aXNpb24gMTkyNjAxKQorKysgU291cmNl
L1dlYktpdDIvU2hhcmVkL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NTdXBwbGVtZW50LmgJKHdvcmtp
bmcgY29weSkKQEAgLTMzLDEyICszMywxMCBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIHN0cnVjdCBO
ZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyczsKIAogY2xhc3MgTmV0d29ya1Byb2Nlc3NT
dXBwbGVtZW50IDogcHVibGljIENoaWxkUHJvY2Vzc1N1cHBsZW1lbnQgewotI2lmIEVOQUJMRShO
RVRXT1JLX1BST0NFU1MpCiBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGluaXRpYWxpemUoY29u
c3QgTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMmKQogICAgIHsKICAgICB9Ci0jZW5k
aWYKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApJbmRleDogU291cmNlL1dlYktpdDIvU2hh
cmVkL05ldHdvcmsvTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9OZXR3b3JrL05ldHdvcmtSZXNvdXJjZUxvYWRQYXJh
bWV0ZXJzLmNwcAkocmV2aXNpb24gMTkyNjAxKQorKysgU291cmNlL1dlYktpdDIvU2hhcmVkL05l
dHdvcmsvTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0zMCw4ICszMCw2IEBACiAjaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgIldl
YkNvcmVBcmd1bWVudENvZGVycy5oIgogCi0jaWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKLQog
dXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtMTYwLDUg
KzE1OCwzIEBAIGJvb2wgTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnM6OmRlY28KIH0KICAg
ICAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAotCi0jZW5kaWYgLy8gRU5BQkxFKE5FVFdPUktfUFJP
Q0VTUykKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9OZXR3b3JrL05ldHdvcmtSZXNvdXJj
ZUxvYWRQYXJhbWV0ZXJzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvU2hhcmVkL05l
dHdvcmsvTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMuaAkocmV2aXNpb24gMTkyNjAxKQor
KysgU291cmNlL1dlYktpdDIvU2hhcmVkL05ldHdvcmsvTmV0d29ya1Jlc291cmNlTG9hZFBhcmFt
ZXRlcnMuaAkod29ya2luZyBjb3B5KQpAQCAtMzIsOCArMzIsNiBAQAogI2luY2x1ZGUgPFdlYkNv
cmUvUmVzb3VyY2VSZXF1ZXN0Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZXNzaW9uSUQuaD4KIAot
I2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCi0KIG5hbWVzcGFjZSBJUEMgewogICAgIGNsYXNz
IEFyZ3VtZW50RGVjb2RlcjsKICAgICBjbGFzcyBBcmd1bWVudEVuY29kZXI7CkBAIC02OCw2ICs2
Niw0IEBAIHB1YmxpYzoKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKLSNlbmRpZiAvLyBFTkFC
TEUoTkVUV09SS19QUk9DRVNTKQotCiAjZW5kaWYgLy8gTmV0d29ya1Jlc291cmNlTG9hZFBhcmFt
ZXRlcnNfaApJbmRleDogU291cmNlL1dlYktpdDIvU2hhcmVkL05ldHdvcmsvQ3VzdG9tUHJvdG9j
b2xzL0N1c3RvbVByb3RvY29sTWFuYWdlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQy
L1NoYXJlZC9OZXR3b3JrL0N1c3RvbVByb3RvY29scy9DdXN0b21Qcm90b2NvbE1hbmFnZXIuaAko
cmV2aXNpb24gMTkyNjAxKQorKysgU291cmNlL1dlYktpdDIvU2hhcmVkL05ldHdvcmsvQ3VzdG9t
UHJvdG9jb2xzL0N1c3RvbVByb3RvY29sTWFuYWdlci5oCSh3b3JraW5nIGNvcHkpCkBAIC04Mywx
MCArODMsOCBAQCBwcml2YXRlOgogICAgIC8vIFdlYlByb2Nlc3NTdXBwbGVtZW50CiAgICAgdm9p
ZCBpbml0aWFsaXplKGNvbnN0IFdlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMmKSBvdmVycmlk
ZTsKIAotI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCiAgICAgLy8gTmV0d29ya1Byb2Nlc3NT
dXBwbGVtZW50CiAgICAgdm9pZCBpbml0aWFsaXplKGNvbnN0IE5ldHdvcmtQcm9jZXNzQ3JlYXRp
b25QYXJhbWV0ZXJzJikgb3ZlcnJpZGU7Ci0jZW5kaWYKIAogICAgIC8vIElQQzo6TWVzc2FnZVJl
Y2VpdmVyCiAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlv
biYsIElQQzo6TWVzc2FnZURlY29kZXImKSBvdmVycmlkZTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQy
L1NoYXJlZC9OZXR3b3JrL0N1c3RvbVByb3RvY29scy9Db2NvYS9DdXN0b21Qcm90b2NvbE1hbmFn
ZXJDb2NvYS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvTmV0d29yay9D
dXN0b21Qcm90b2NvbHMvQ29jb2EvQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ29jb2EubW0JKHJldmlz
aW9uIDE5MjYwMSkKKysrIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9OZXR3b3JrL0N1c3RvbVByb3Rv
Y29scy9Db2NvYS9DdXN0b21Qcm90b2NvbE1hbmFnZXJDb2NvYS5tbQkod29ya2luZyBjb3B5KQpA
QCAtMzAsNiArMzAsNyBAQAogI2ltcG9ydCAiQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyTWVzc2FnZXMu
aCIKICNpbXBvcnQgIkN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5TWVzc2FnZXMuaCIKICNpbXBv
cnQgIkRhdGFSZWZlcmVuY2UuaCIKKyNpbXBvcnQgIk5ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJh
bWV0ZXJzLmgiCiAjaW1wb3J0ICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIKICNpbXBvcnQgIldl
YlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaCIKICNpbXBvcnQgPFdlYkNvcmUvVVJMLmg+CkBA
IC0zNywxMCArMzgsNiBAQAogI2ltcG9ydCA8V2ViQ29yZS9SZXNvdXJjZVJlcXVlc3QuaD4KICNp
bXBvcnQgPFdlYkNvcmUvUmVzb3VyY2VSZXNwb25zZS5oPgogCi0jaWYgRU5BQkxFKE5FVFdPUktf
UFJPQ0VTUykKLSNpbXBvcnQgIk5ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmgiCi0j
ZW5kaWYKLQogI2lmZGVmIF9faGFzX2luY2x1ZGUKICNpZiBfX2hhc19pbmNsdWRlKDxGb3VuZGF0
aW9uL05TVVJMQ29ubmVjdGlvblByaXZhdGUuaD4pCiAjaW1wb3J0IDxGb3VuZGF0aW9uL05TVVJM
Q29ubmVjdGlvblByaXZhdGUuaD4KQEAgLTEzNywyMiArMTM0LDExIEBAIHZvaWQgQ3VzdG9tUHJv
dG9jb2xNYW5hZ2VyOjppbml0aWFsaXplQ28KIAogdm9pZCBDdXN0b21Qcm90b2NvbE1hbmFnZXI6
OmluaXRpYWxpemUoY29uc3QgV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycyYgcGFyYW1ldGVy
cykKIHsKLSNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQotICAgIEFTU0VSVChwYXJhbWV0ZXJz
LnVybFNjaGVtZXNSZWdpc3RlcmVkRm9yQ3VzdG9tUHJvdG9jb2xzLmlzRW1wdHkoKSB8fCAhcGFy
YW1ldGVycy51c2VzTmV0d29ya1Byb2Nlc3MpOwotICAgIGlmIChwYXJhbWV0ZXJzLnVzZXNOZXR3
b3JrUHJvY2VzcykgewotICAgICAgICBtX2NoaWxkUHJvY2Vzcy0+cGFyZW50UHJvY2Vzc0Nvbm5l
Y3Rpb24oKS0+cmVtb3ZlV29ya1F1ZXVlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpDdXN0b21Q
cm90b2NvbE1hbmFnZXI6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSk7Ci0gICAgICAgIG1fbWVzc2Fn
ZVF1ZXVlID0gbnVsbHB0cjsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSNlbmRpZgotCi0gICAg
W05TVVJMUHJvdG9jb2wgcmVnaXN0ZXJDbGFzczpbV0tDdXN0b21Qcm90b2NvbCBjbGFzc11dOwot
Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBwYXJhbWV0ZXJzLnVybFNjaGVtZXNSZWdpc3Rl
cmVkRm9yQ3VzdG9tUHJvdG9jb2xzLnNpemUoKTsgKytpKQotICAgICAgICByZWdpc3RlclNjaGVt
ZShwYXJhbWV0ZXJzLnVybFNjaGVtZXNSZWdpc3RlcmVkRm9yQ3VzdG9tUHJvdG9jb2xzW2ldKTsK
KyAgICBBU1NFUlQocGFyYW1ldGVycy51cmxTY2hlbWVzUmVnaXN0ZXJlZEZvckN1c3RvbVByb3Rv
Y29scy5pc0VtcHR5KCkpOworICAgIG1fY2hpbGRQcm9jZXNzLT5wYXJlbnRQcm9jZXNzQ29ubmVj
dGlvbigpLT5yZW1vdmVXb3JrUXVldWVNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OkN1c3RvbVBy
b3RvY29sTWFuYWdlcjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpKTsKKyAgICBtX21lc3NhZ2VRdWV1
ZSA9IG51bGxwdHI7CiB9CiAKLSNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQogdm9pZCBDdXN0
b21Qcm90b2NvbE1hbmFnZXI6OmluaXRpYWxpemUoY29uc3QgTmV0d29ya1Byb2Nlc3NDcmVhdGlv
blBhcmFtZXRlcnMmIHBhcmFtZXRlcnMpCiB7CiAgICAgW05TVVJMUHJvdG9jb2wgcmVnaXN0ZXJD
bGFzczpbV0tDdXN0b21Qcm90b2NvbCBjbGFzc11dOwpAQCAtMTYwLDcgKzE0Niw2IEBAIHZvaWQg
Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyOjppbml0aWFsaXplKGMKICAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IHBhcmFtZXRlcnMudXJsU2NoZW1lc1JlZ2lzdGVyZWRGb3JDdXN0b21Qcm90b2NvbHMu
c2l6ZSgpOyArK2kpCiAgICAgICAgIHJlZ2lzdGVyU2NoZW1lKHBhcmFtZXRlcnMudXJsU2NoZW1l
c1JlZ2lzdGVyZWRGb3JDdXN0b21Qcm90b2NvbHNbaV0pOwogfQotI2VuZGlmCiAKIHZvaWQgQ3Vz
dG9tUHJvdG9jb2xNYW5hZ2VyOjphZGRDdXN0b21Qcm90b2NvbChXS0N1c3RvbVByb3RvY29sICpj
dXN0b21Qcm90b2NvbCkKIHsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9OZXR3b3JrL0N1
c3RvbVByb3RvY29scy9zb3VwL0N1c3RvbVByb3RvY29sTWFuYWdlclNvdXAuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9OZXR3b3JrL0N1c3RvbVByb3RvY29scy9zb3Vw
L0N1c3RvbVByb3RvY29sTWFuYWdlclNvdXAuY3BwCShyZXZpc2lvbiAxOTI2MDEpCisrKyBTb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvTmV0d29yay9DdXN0b21Qcm90b2NvbHMvc291cC9DdXN0b21Qcm90
b2NvbE1hbmFnZXJTb3VwLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjMsMTMgKzIzLDEwIEBACiAj
aW5jbHVkZSAiQ2hpbGRQcm9jZXNzLmgiCiAjaW5jbHVkZSAiQ3VzdG9tUHJvdG9jb2xNYW5hZ2Vy
SW1wbC5oIgogI2luY2x1ZGUgIkN1c3RvbVByb3RvY29sTWFuYWdlck1lc3NhZ2VzLmgiCisjaW5j
bHVkZSAiTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaCIKICNpbmNsdWRlICJXZWJQ
cm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9Ob3RJbXBsZW1l
bnRlZC5oPgogCi0jaWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKLSNpbmNsdWRlICJOZXR3b3Jr
UHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oIgotI2VuZGlmCi0KIG5hbWVzcGFjZSBXZWJLaXQg
ewogCiBjb25zdCBjaGFyKiBDdXN0b21Qcm90b2NvbE1hbmFnZXI6OnN1cHBsZW1lbnROYW1lKCkK
QEAgLTUxLDI1ICs0OCwxNiBAQCB2b2lkIEN1c3RvbVByb3RvY29sTWFuYWdlcjo6aW5pdGlhbGl6
ZUNvCiAKIHZvaWQgQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyOjppbml0aWFsaXplKGNvbnN0IFdlYlBy
b2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMmIHBhcmFtZXRlcnMpCiB7Ci0jaWYgRU5BQkxFKE5FVFdP
UktfUFJPQ0VTUykKLSAgICBBU1NFUlQocGFyYW1ldGVycy51cmxTY2hlbWVzUmVnaXN0ZXJlZEZv
ckN1c3RvbVByb3RvY29scy5pc0VtcHR5KCkgfHwgIXBhcmFtZXRlcnMudXNlc05ldHdvcmtQcm9j
ZXNzKTsKLSAgICBpZiAocGFyYW1ldGVycy51c2VzTmV0d29ya1Byb2Nlc3MpIHsKLSAgICAgICAg
bV9jaGlsZFByb2Nlc3MtPnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnJlbW92ZVdvcmtRdWV1
ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyOjptZXNzYWdl
UmVjZWl2ZXJOYW1lKCkpOwotICAgICAgICBtX21lc3NhZ2VRdWV1ZSA9IG51bGxwdHI7Ci0gICAg
ICAgIHJldHVybjsKLSAgICB9Ci0jZW5kaWYKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHBh
cmFtZXRlcnMudXJsU2NoZW1lc1JlZ2lzdGVyZWRGb3JDdXN0b21Qcm90b2NvbHMuc2l6ZSgpOyAr
K2kpCi0gICAgICAgIHJlZ2lzdGVyU2NoZW1lKHBhcmFtZXRlcnMudXJsU2NoZW1lc1JlZ2lzdGVy
ZWRGb3JDdXN0b21Qcm90b2NvbHNbaV0pOworICAgIEFTU0VSVChwYXJhbWV0ZXJzLnVybFNjaGVt
ZXNSZWdpc3RlcmVkRm9yQ3VzdG9tUHJvdG9jb2xzLmlzRW1wdHkoKSk7CisgICAgbV9jaGlsZFBy
b2Nlc3MtPnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnJlbW92ZVdvcmtRdWV1ZU1lc3NhZ2VS
ZWNlaXZlcihNZXNzYWdlczo6Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyOjptZXNzYWdlUmVjZWl2ZXJO
YW1lKCkpOworICAgIG1fbWVzc2FnZVF1ZXVlID0gbnVsbHB0cjsKIH0KIAotI2lmIEVOQUJMRShO
RVRXT1JLX1BST0NFU1MpCiB2b2lkIEN1c3RvbVByb3RvY29sTWFuYWdlcjo6aW5pdGlhbGl6ZShj
b25zdCBOZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycyYgcGFyYW1ldGVycykKIHsKICAg
ICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHBhcmFtZXRlcnMudXJsU2NoZW1lc1JlZ2lzdGVyZWRG
b3JDdXN0b21Qcm90b2NvbHMuc2l6ZSgpOyArK2kpCiAgICAgICAgIHJlZ2lzdGVyU2NoZW1lKHBh
cmFtZXRlcnMudXJsU2NoZW1lc1JlZ2lzdGVyZWRGb3JDdXN0b21Qcm90b2NvbHNbaV0pOwogfQot
I2VuZGlmCiAKIHZvaWQgQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyOjpyZWdpc3RlclNjaGVtZShjb25z
dCBTdHJpbmcmIHNjaGVtZSkKIHsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9lZmwvUHJv
Y2Vzc0V4ZWN1dGFibGVQYXRoRWZsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvZWZsL1Byb2Nlc3NFeGVjdXRhYmxlUGF0aEVmbC5jcHAJKHJldmlzaW9uIDE5MjYwMSkK
KysrIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9lZmwvUHJvY2Vzc0V4ZWN1dGFibGVQYXRoRWZsLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtODEsMTQgKzgxLDEyIEBAIFN0cmluZyBleGVjdXRhYmxlUGF0
aE9mUGx1Z2luUHJvY2VzcygpCiAgICAgcmV0dXJuIHdlYktpdFBsdWdpblByb2Nlc3NOYW1lOwog
fQogCi0jaWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKIFN0cmluZyBleGVjdXRhYmxlUGF0aE9m
TmV0d29ya1Byb2Nlc3MoKQogewogICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxjb25zdCBTdHJp
bmc+IHdlYktpdE5ldHdvcmtQcm9jZXNzTmFtZShmaW5kUHJvY2Vzc1BhdGgoTkVUV09SS1BST0NF
U1NOQU1FKSk7CiAKICAgICByZXR1cm4gd2ViS2l0TmV0d29ya1Byb2Nlc3NOYW1lOwogfQotI2Vu
ZGlmCiAKICNpZiBFTkFCTEUoREFUQUJBU0VfUFJPQ0VTUykKIFN0cmluZyBleGVjdXRhYmxlUGF0
aE9mRGF0YWJhc2VQcm9jZXNzKCkKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9ndGsvUHJv
Y2Vzc0V4ZWN1dGFibGVQYXRoR3RrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvZ3RrL1Byb2Nlc3NFeGVjdXRhYmxlUGF0aEd0ay5jcHAJKHJldmlzaW9uIDE5MjYwMSkK
KysrIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9ndGsvUHJvY2Vzc0V4ZWN1dGFibGVQYXRoR3RrLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNzksMTIgKzc5LDEwIEBAIFN0cmluZyBleGVjdXRhYmxlUGF0
aE9mUGx1Z2luUHJvY2VzcygpCiAgICAgcmV0dXJuIGZpbmRXZWJLaXRQcm9jZXNzKCJXZWJLaXRQ
bHVnaW5Qcm9jZXNzIik7CiB9CiAKLSNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQogU3RyaW5n
IGV4ZWN1dGFibGVQYXRoT2ZOZXR3b3JrUHJvY2VzcygpCiB7CiAgICAgcmV0dXJuIGZpbmRXZWJL
aXRQcm9jZXNzKCJXZWJLaXROZXR3b3JrUHJvY2VzcyIpOwogfQotI2VuZGlmCiAKICNpZiBFTkFC
TEUoREFUQUJBU0VfUFJPQ0VTUykKIFN0cmluZyBleGVjdXRhYmxlUGF0aE9mRGF0YWJhc2VQcm9j
ZXNzKCkKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9tYWMvQ29va2llU3RvcmFnZVNoaW0u
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvbWFjL0Nvb2tpZVN0b3JhZ2VT
aGltLmgJKHJldmlzaW9uIDE5MjYwMSkKKysrIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9tYWMvQ29v
a2llU3RvcmFnZVNoaW0uaAkod29ya2luZyBjb3B5KQpAQCAtMjYsOCArMjYsNiBAQAogI2lmbmRl
ZiBDb29raWVTdG9yYWdlU2hpbV9oCiAjZGVmaW5lIENvb2tpZVN0b3JhZ2VTaGltX2gKIAotI2lm
IEVOQUJMRShORVRXT1JLX1BST0NFU1MpCi0KICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4K
ICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KIApAQCAtNDksNiArNDcsNCBAQCBwcml2
YXRlOgogCiB9CiAKLSNlbmRpZiAvLyBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQotCiAjZW5kaWYg
Ly8gQ29va2llU3RvcmFnZVNoaW1faApJbmRleDogU291cmNlL1dlYktpdDIvU2hhcmVkL21hYy9D
b29raWVTdG9yYWdlU2hpbS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQv
bWFjL0Nvb2tpZVN0b3JhZ2VTaGltLm1tCShyZXZpc2lvbiAxOTI2MDEpCisrKyBTb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvbWFjL0Nvb2tpZVN0b3JhZ2VTaGltLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0y
Niw4ICsyNiw2IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiQ29va2llU3RvcmFn
ZVNoaW0uaCIKIAotI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCi0KICNpbmNsdWRlICJDb29r
aWVTdG9yYWdlU2hpbUxpYnJhcnkuaCIKICNpbmNsdWRlICJOZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzcy5oIgogI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5oIgpAQCAtMTM1
LDUgKzEzMywzIEBAIC0gKHZvaWQpX2dldENvb2tpZUhlYWRlcnNGb3JUYXNrOihOU1VSTFMKIH0K
IAogQGVuZAotCi0jZW5kaWYgLy8gRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9tYWMvQ29va2llU3RvcmFnZVNoaW1MaWJyYXJ5LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvbWFjL0Nvb2tpZVN0b3JhZ2VTaGltTGlicmFy
eS5jcHAJKHJldmlzaW9uIDE5MjYwMSkKKysrIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9tYWMvQ29v
a2llU3RvcmFnZVNoaW1MaWJyYXJ5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjYsNyArMjYsNyBA
QAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkNvb2tpZVN0b3JhZ2VTaGltTGlicmFy
eS5oIgogCi0jaWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykgJiYgIVBMQVRGT1JNKElPUykKKyNp
ZiAhUExBVEZPUk0oSU9TKQogCiAjaW5jbHVkZSA8V2ViQ29yZS9EeW5hbWljTGlua2VySW50ZXJw
b3NpbmcuaD4KIApAQCAtOTAsNCArOTAsNCBAQCB2b2lkIFdlYktpdENvb2tpZVN0b3JhZ2VTaGlt
SW5pdGlhbGl6ZShjCiAgICAgCiB9CiAKLSNlbmRpZiAvLyBFTkFCTEUoTkVUV09SS19QUk9DRVNT
KSAmJiAhUExBVEZPUk0oSU9TKQorI2VuZGlmIC8vICFQTEFURk9STShJT1MpCkluZGV4OiBTb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvbWFjL0Nvb2tpZVN0b3JhZ2VTaGltTGlicmFyeS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9tYWMvQ29va2llU3RvcmFnZVNoaW1MaWJyYXJ5
LmgJKHJldmlzaW9uIDE5MjYwMSkKKysrIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9tYWMvQ29va2ll
U3RvcmFnZVNoaW1MaWJyYXJ5LmgJKHdvcmtpbmcgY29weSkKQEAgLTI2LDggKzI2LDYgQEAKICNp
Zm5kZWYgQ29va2llU3RvcmFnZVNoaW1MaWJyYXJ5X2gKICNkZWZpbmUgQ29va2llU3RvcmFnZVNo
aW1MaWJyYXJ5X2gKIAotI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCi0KIHR5cGVkZWYgc3Ry
dWN0IE9wYXF1ZUNGSFRUUENvb2tpZVN0b3JhZ2UqICBDRkhUVFBDb29raWVTdG9yYWdlUmVmOwog
CiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTQwLDYgKzM4LDQgQEAgdHlwZWRlZiB2b2lkICgqQ29v
a2llU3RvcmFnZVNoaW1Jbml0aWFsaQogCiB9CiAKLSNlbmRpZiAvLyBFTkFCTEUoTkVUV09SS19Q
Uk9DRVNTKQotCiAjZW5kaWYgLy8gQ29va2llU3RvcmFnZVNoaW1MaWJyYXJ5X2gKSW5kZXg6IFNv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Qcm9jZXNzTW9kZWwuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvUHJvY2Vzc01vZGVsLmgJKHJldmlzaW9uIDE5MjYwMSkKKysr
IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Qcm9jZXNzTW9kZWwuaAkod29ya2luZyBjb3B5KQpA
QCAtMSwzOCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJl
IG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBQcm9jZXNzTW9kZWxfaAotI2Rl
ZmluZSBQcm9jZXNzTW9kZWxfaAotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQotZW51bSBQcm9jZXNz
TW9kZWwgewotICAgIFByb2Nlc3NNb2RlbFNoYXJlZFNlY29uZGFyeVByb2Nlc3MsCi0gICAgUHJv
Y2Vzc01vZGVsTXVsdGlwbGVTZWNvbmRhcnlQcm9jZXNzZXMKLX07Ci0KLX0gLy8gbmFtZXNwYWNl
IFdlYktpdAotCi0jZW5kaWYgLy8gUHJvY2Vzc01vZGVsX2gKSW5kZXg6IFNvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9XZWJDb29raWVNYW5hZ2VyUHJveHkuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb29raWVNYW5hZ2VyUHJveHkuY3BwCShyZXZpc2lvbiAx
OTI2MDEpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29va2llTWFuYWdlclByb3h5
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtODUsOCArODUsOCBAQCB2b2lkIFdlYkNvb2tpZU1hbmFn
ZXJQcm94eTo6cHJvY2Vzc0RpZENsCiAKIGJvb2wgV2ViQ29va2llTWFuYWdlclByb3h5OjpzaG91
bGRUZXJtaW5hdGUoV2ViUHJvY2Vzc1Byb3h5KikgY29uc3QKIHsKLSAgICByZXR1cm4gcHJvY2Vz
c1Bvb2woKS0+cHJvY2Vzc01vZGVsKCkgIT0gUHJvY2Vzc01vZGVsU2hhcmVkU2Vjb25kYXJ5UHJv
Y2VzcwotICAgICAgICB8fCAobV9hcnJheUNhbGxiYWNrcy5pc0VtcHR5KCkgJiYgbV9odHRwQ29v
a2llQWNjZXB0UG9saWN5Q2FsbGJhY2tzLmlzRW1wdHkoKSk7CisgICAgLy8gRklYTUU6IFJlbW92
ZSB0aGlzLgorICAgIHJldHVybiB0cnVlOwogfQogCiB2b2lkIFdlYkNvb2tpZU1hbmFnZXJQcm94
eTo6cmVmV2ViQ29udGV4dFN1cHBsZW1lbnQoKQpAQCAtMTYzLDEwICsxNjMsNyBAQCB2b2lkIFdl
YkNvb2tpZU1hbmFnZXJQcm94eTo6c2V0SFRUUENvb2tpCiAgICAgLy8gLSBXaGVuIHRlc3Rpbmcs
IHdlIG9ubHkgaGF2ZSBvbmUgV2ViUHJvY2VzcyBhbmQgb25lIE5ldHdvcmtQcm9jZXNzLCBhbmQg
V2ViS2l0VGVzdFJ1bm5lciBuZXZlciByZXN0YXJ0cyB0aGVtOwogICAgIC8vIC0gV2hlbiBub3Qg
dGVzdGluZywgQ29jb2EgaGFzIHRoZSBwb2xpY3kgcGVyc2lzdGVkLCBhbmQgdGh1cyBuZXcgcHJv
Y2Vzc2VzIHVzZSBpdCAoZXZlbiBmb3IgZXBoZW1lcmFsIHNlc3Npb25zKS4KICAgICBwcm9jZXNz
UG9vbCgpLT5zZW5kVG9BbGxQcm9jZXNzZXMoTWVzc2FnZXM6OldlYkNvb2tpZU1hbmFnZXI6OlNl
dEhUVFBDb29raWVBY2NlcHRQb2xpY3kocG9saWN5KSk7Ci0jaWYgRU5BQkxFKE5FVFdPUktfUFJP
Q0VTUykKLSAgICBpZiAocHJvY2Vzc1Bvb2woKS0+dXNlc05ldHdvcmtQcm9jZXNzKCkpCi0gICAg
ICAgIHByb2Nlc3NQb29sKCktPnNlbmRUb05ldHdvcmtpbmdQcm9jZXNzKE1lc3NhZ2VzOjpXZWJD
b29raWVNYW5hZ2VyOjpTZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KHBvbGljeSkpOwotI2VuZGlm
CisgICAgcHJvY2Vzc1Bvb2woKS0+c2VuZFRvTmV0d29ya2luZ1Byb2Nlc3MoTWVzc2FnZXM6Oldl
YkNvb2tpZU1hbmFnZXI6OlNldEhUVFBDb29raWVBY2NlcHRQb2xpY3kocG9saWN5KSk7CiB9CiAK
IHZvaWQgV2ViQ29va2llTWFuYWdlclByb3h5OjpnZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KHN0
ZDo6ZnVuY3Rpb248dm9pZCAoSFRUUENvb2tpZUFjY2VwdFBvbGljeSwgQ2FsbGJhY2tCYXNlOjpF
cnJvcik+IGNhbGxiYWNrRnVuY3Rpb24pCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
V2ViSW5zcGVjdG9yUHJveHkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9XZWJJbnNwZWN0b3JQcm94eS5jcHAJKHJldmlzaW9uIDE5MjYwMSkKKysrIFNvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9XZWJJbnNwZWN0b3JQcm94eS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTMxMiw3ICszMTIsNiBAQCBXZWJQcm9jZXNzUG9vbCYgV2ViSW5zcGVjdG9yUHJveHk6Omluc3Bl
CiAgICAgLy8gZ3VhcmFudGVlcyBubyBwcm9jZXNzIHNoYXJpbmcgZm9yIG91ciB1c2VyIGludGVy
ZmFjZS4KICAgICBpZiAoIXNfcHJvY2Vzc1Bvb2wpIHsKICAgICAgICAgYXV0byBjb25maWd1cmF0
aW9uID0gQVBJOjpQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb246OmNyZWF0ZVdpdGhMZWdhY3lPcHRp
b25zKCk7Ci0gICAgICAgIGNvbmZpZ3VyYXRpb24tPnNldFByb2Nlc3NNb2RlbChQcm9jZXNzTW9k
ZWxNdWx0aXBsZVNlY29uZGFyeVByb2Nlc3Nlcyk7CiAgICAgICAgIHNfcHJvY2Vzc1Bvb2wgPSAm
V2ViUHJvY2Vzc1Bvb2w6OmNyZWF0ZShjb25maWd1cmF0aW9uLmdldCgpKS5sZWFrUmVmKCk7CiAg
ICAgfTsKIApJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAJ
KHJldmlzaW9uIDE5MjYwMSkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02MCw2ICs2MCw3IEBACiAjaW5jbHVkZSAiTmF0aXZl
V2ViTW91c2VFdmVudC5oIgogI2luY2x1ZGUgIk5hdGl2ZVdlYldoZWVsRXZlbnQuaCIKICNpbmNs
dWRlICJOYXZpZ2F0aW9uQWN0aW9uRGF0YS5oIgorI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzTWVz
c2FnZXMuaCIKICNpbmNsdWRlICJOb3RpZmljYXRpb25QZXJtaXNzaW9uUmVxdWVzdC5oIgogI2lu
Y2x1ZGUgIk5vdGlmaWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlci5oIgogI2luY2x1ZGUg
IlBhZ2VDbGllbnQuaCIKQEAgLTEzOCwxMCArMTM5LDYgQEAKICNpbmNsdWRlIDx3dGYvUmVmQ291
bnRlZExlYWtDb3VudGVyLmg+CiAjZW5kaWYKIAotI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1Mp
Ci0jaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3NNZXNzYWdlcy5oIgotI2VuZGlmCi0KICNpZiBQTEFU
Rk9STShDT0NPQSkKICNpbmNsdWRlICJSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5Lmgi
CiAjaW5jbHVkZSAiUmVtb3RlTGF5ZXJUcmVlU2Nyb2xsaW5nUGVyZm9ybWFuY2VEYXRhLmgiCkBA
IC00ODcsMTAgKzQ4NCw4IEBAIFdlYlBhZ2VQcm94eTo6V2ViUGFnZVByb3h5KFBhZ2VDbGllbnQm
IHAKIAogICAgIG1fcHJvY2Vzcy0+YWRkTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJQYWdl
UHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9wYWdlSUQsICp0aGlzKTsKIAotI2lmIEVO
QUJMRShORVRXT1JLX1BST0NFU1MpCiAgICAgaWYgKG1fc2Vzc2lvbklELmlzRXBoZW1lcmFsKCkp
CiAgICAgICAgIG1fcHJvY2Vzcy0+cHJvY2Vzc1Bvb2woKS5zZW5kVG9OZXR3b3JraW5nUHJvY2Vz
cyhNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OkVuc3VyZVByaXZhdGVCcm93c2luZ1Nlc3Npb24o
bV9zZXNzaW9uSUQpKTsKLSNlbmRpZgogCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgY29uc3Qg
Q0ZJbmRleCB2aWV3U3RhdGVDaGFuZ2VSdW5Mb29wT3JkZXIgPSAoQ0ZJbmRleClSdW5Mb29wT2Jz
ZXJ2ZXI6OldlbGxLbm93blJ1bkxvb3BPcmRlcnM6OkNvcmVBbmltYXRpb25Db21taXQgLSAxOwpA
QCAtNjk2LDEwICs2OTEsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cmVhdHRhY2hUb1dlYlByb2Nl
c3MoCiAgICAgbV9wcm9jZXNzLT5yZW1vdmVXZWJQYWdlKG1fcGFnZUlEKTsKICAgICBtX3Byb2Nl
c3MtPnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6V2ViUGFnZVByb3h5OjptZXNzYWdl
UmVjZWl2ZXJOYW1lKCksIG1fcGFnZUlEKTsKIAotICAgIGlmIChtX3Byb2Nlc3MtPnByb2Nlc3NQ
b29sKCkucHJvY2Vzc01vZGVsKCkgPT0gUHJvY2Vzc01vZGVsU2hhcmVkU2Vjb25kYXJ5UHJvY2Vz
cykKLSAgICAgICAgbV9wcm9jZXNzID0gbV9wcm9jZXNzLT5wcm9jZXNzUG9vbCgpLmVuc3VyZVNo
YXJlZFdlYlByb2Nlc3MoKTsKLSAgICBlbHNlCi0gICAgICAgIG1fcHJvY2VzcyA9IG1fcHJvY2Vz
cy0+cHJvY2Vzc1Bvb2woKS5jcmVhdGVOZXdXZWJQcm9jZXNzUmVzcGVjdGluZ1Byb2Nlc3NDb3Vu
dExpbWl0KCk7CisgICAgbV9wcm9jZXNzID0gbV9wcm9jZXNzLT5wcm9jZXNzUG9vbCgpLmNyZWF0
ZU5ld1dlYlByb2Nlc3NSZXNwZWN0aW5nUHJvY2Vzc0NvdW50TGltaXQoKTsKIAogICAgIEFTU0VS
VChtX3Byb2Nlc3MtPnN0YXRlKCkgIT0gQ2hpbGRQcm9jZXNzUHJveHk6OlN0YXRlOjpUZXJtaW5h
dGVkKTsKICAgICBpZiAobV9wcm9jZXNzLT5zdGF0ZSgpID09IENoaWxkUHJvY2Vzc1Byb3h5OjpT
dGF0ZTo6UnVubmluZykKQEAgLTc3NCwxMCArNzY2LDggQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNl
dFNlc3Npb25JRChTZXNzaW9uSQogICAgIG1fc2Vzc2lvbklEID0gc2Vzc2lvbklEOwogICAgIG1f
cHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0U2Vzc2lvbklEKHNlc3Npb25JRCks
IG1fcGFnZUlEKTsKIAotI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCiAgICAgaWYgKHNlc3Np
b25JRC5pc0VwaGVtZXJhbCgpKQogICAgICAgICBtX3Byb2Nlc3MtPnByb2Nlc3NQb29sKCkuc2Vu
ZFRvTmV0d29ya2luZ1Byb2Nlc3MoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpFbnN1cmVQcml2
YXRlQnJvd3NpbmdTZXNzaW9uKHNlc3Npb25JRCkpOwotI2VuZGlmCiB9CiAKIHZvaWQgV2ViUGFn
ZVByb3h5Ojppbml0aWFsaXplV2ViUGFnZSgpCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAJKHJldmlzaW9uIDE5MjYwMSkKKysrIFNvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM1LDYg
KzM1LDkgQEAKICNpbmNsdWRlICJEb3dubG9hZFByb3h5LmgiCiAjaW5jbHVkZSAiRG93bmxvYWRQ
cm94eU1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgorI2luY2x1ZGUgIk5ldHdvcmtQ
cm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmgiCisjaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3NNZXNz
YWdlcy5oIgorI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzUHJveHkuaCIKICNpbmNsdWRlICJTYW5k
Ym94RXh0ZW5zaW9uLmgiCiAjaW5jbHVkZSAiU3RhdGlzdGljc0RhdGEuaCIKICNpbmNsdWRlICJU
ZXh0Q2hlY2tlci5oIgpAQCAtNzgsMTEgKzgxLDYgQEAKICNpbmNsdWRlICJEYXRhYmFzZVByb2Nl
c3NNZXNzYWdlcy5oIgogI2VuZGlmCiAKLSNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQotI2lu
Y2x1ZGUgIk5ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmgiCi0jaW5jbHVkZSAiTmV0
d29ya1Byb2Nlc3NNZXNzYWdlcy5oIgotI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzUHJveHkuaCIK
LSNlbmRpZgogCiAjaWYgRU5BQkxFKFNFUlZJQ0VfQ09OVFJPTFMpCiAjaW5jbHVkZSAiU2Vydmlj
ZXNDb250cm9sbGVyLmgiCkBAIC0xMDUsOCArMTAzLDYgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYktp
dDsKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLXN0YXRpYyBjb25zdCBkb3VibGUgc2hhcmVkU2Vj
b25kYXJ5UHJvY2Vzc1NodXRkb3duVGltZW91dCA9IDYwOwotCiBERUZJTkVfREVCVUdfT05MWV9H
TE9CQUwoV1RGOjpSZWZDb3VudGVkTGVha0NvdW50ZXIsIHByb2Nlc3NQb29sQ291bnRlciwgKCJX
ZWJQcm9jZXNzUG9vbCIpKTsKIAogUmVmPFdlYlByb2Nlc3NQb29sPiBXZWJQcm9jZXNzUG9vbDo6
Y3JlYXRlKEFQSTo6UHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uJiBjb25maWd1cmF0aW9uKQpAQCAt
MTU5LDEwICsxNTUsOCBAQCBXZWJQcm9jZXNzUG9vbDo6V2ViUHJvY2Vzc1Bvb2woQVBJOjpQcm9j
CiAjZW5kaWYKICAgICAsIG1fc2hvdWxkVXNlVGVzdGluZ05ldHdvcmtTZXNzaW9uKGZhbHNlKQog
ICAgICwgbV9wcm9jZXNzVGVybWluYXRpb25FbmFibGVkKHRydWUpCi0jaWYgRU5BQkxFKE5FVFdP
UktfUFJPQ0VTUykKICAgICAsIG1fY2FuSGFuZGxlSFRUUFNTZXJ2ZXJUcnVzdEV2YWx1YXRpb24o
dHJ1ZSkKICAgICAsIG1fZGlkTmV0d29ya1Byb2Nlc3NDcmFzaChmYWxzZSkKLSNlbmRpZgogI2lm
IFVTRShTT1VQKQogICAgICwgbV9pZ25vcmVUTFNFcnJvcnModHJ1ZSkKICNlbmRpZgpAQCAtMjU0
LDEwICsyNDgsOCBAQCBXZWJQcm9jZXNzUG9vbDo6fldlYlByb2Nlc3NQb29sKCkKICAgICBwcm9j
ZXNzUG9vbENvdW50ZXIuZGVjcmVtZW50KCk7CiAjZW5kaWYKIAotI2lmIEVOQUJMRShORVRXT1JL
X1BST0NFU1MpCiAgICAgaWYgKG1fbmV0d29ya1Byb2Nlc3MpCiAgICAgICAgIG1fbmV0d29ya1By
b2Nlc3MtPnNodXREb3duUHJvY2VzcygpOwotI2VuZGlmCiB9CiAKIHZvaWQgV2ViUHJvY2Vzc1Bv
b2w6OmluaXRpYWxpemVDbGllbnQoY29uc3QgV0tDb250ZXh0Q2xpZW50QmFzZSogY2xpZW50KQpA
QCAtMjkxLDE3ICsyODMsNiBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpzZXREb3dubG9hZENsaWVu
dChzCiAgICAgICAgIG1fZG93bmxvYWRDbGllbnQgPSBXVEY6Om1vdmUoZG93bmxvYWRDbGllbnQp
OwogfQogCi12b2lkIFdlYlByb2Nlc3NQb29sOjpzZXRQcm9jZXNzTW9kZWwoUHJvY2Vzc01vZGVs
IHByb2Nlc3NNb2RlbCkKLXsKLSAgICAvLyBHdWFyZCBhZ2FpbnN0IEFQSSBtaXN1c2UuCi0gICAg
aWYgKCFtX3Byb2Nlc3Nlcy5pc0VtcHR5KCkpCi0gICAgICAgIENSQVNIKCk7Ci0gICAgaWYgKHBy
b2Nlc3NNb2RlbCAhPSBQcm9jZXNzTW9kZWxTaGFyZWRTZWNvbmRhcnlQcm9jZXNzICYmICFtX21l
c3NhZ2VzVG9JbmplY3RlZEJ1bmRsZVBvc3RlZFRvRW1wdHlDb250ZXh0LmlzRW1wdHkoKSkKLSAg
ICAgICAgQ1JBU0goKTsKLQotICAgIG1fY29uZmlndXJhdGlvbi0+c2V0UHJvY2Vzc01vZGVsKHBy
b2Nlc3NNb2RlbCk7Ci19Ci0KIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnNldE1heGltdW1OdW1iZXJP
ZlByb2Nlc3Nlcyh1bnNpZ25lZCBtYXhpbXVtTnVtYmVyT2ZQcm9jZXNzZXMpCiB7CiAgICAgLy8g
R3VhcmQgYWdhaW5zdCBBUEkgbWlzdXNlLgpAQCAtMzEzLDIzICsyOTQsNyBAQCB2b2lkIFdlYlBy
b2Nlc3NQb29sOjpzZXRNYXhpbXVtTnVtYmVyT2ZQCiAKIElQQzo6Q29ubmVjdGlvbiogV2ViUHJv
Y2Vzc1Bvb2w6Om5ldHdvcmtpbmdQcm9jZXNzQ29ubmVjdGlvbigpCiB7Ci0gICAgc3dpdGNoIChw
cm9jZXNzTW9kZWwoKSkgewotICAgIGNhc2UgUHJvY2Vzc01vZGVsU2hhcmVkU2Vjb25kYXJ5UHJv
Y2VzczoKLSNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQotICAgICAgICBpZiAodXNlc05ldHdv
cmtQcm9jZXNzKCkpCi0gICAgICAgICAgICByZXR1cm4gbV9uZXR3b3JrUHJvY2Vzcy0+Y29ubmVj
dGlvbigpOwotI2VuZGlmCi0gICAgICAgIHJldHVybiBtX3Byb2Nlc3Nlc1swXS0+Y29ubmVjdGlv
bigpOwotICAgIGNhc2UgUHJvY2Vzc01vZGVsTXVsdGlwbGVTZWNvbmRhcnlQcm9jZXNzZXM6Ci0j
aWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKLSAgICAgICAgQVNTRVJUKHVzZXNOZXR3b3JrUHJv
Y2VzcygpKTsKLSAgICAgICAgcmV0dXJuIG1fbmV0d29ya1Byb2Nlc3MtPmNvbm5lY3Rpb24oKTsK
LSNlbHNlCi0gICAgICAgIGJyZWFrOwotI2VuZGlmCi0gICAgfQotICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOwotICAgIHJldHVybiAwOworICAgIHJldHVybiBtX25ldHdvcmtQcm9jZXNzLT5jb25u
ZWN0aW9uKCk7CiB9CiAKIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6Omxhbmd1YWdlQ2hhbmdlZCh2b2lk
KiBjb250ZXh0KQpAQCAtMzQwLDggKzMwNSw4IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6Omxhbmd1
YWdlQ2hhbmdlZCh2b2kKIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6Omxhbmd1YWdlQ2hhbmdlZCgpCiB7
CiAgICAgc2VuZFRvQWxsUHJvY2Vzc2VzKE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpVc2VyUHJlZmVy
cmVkTGFuZ3VhZ2VzQ2hhbmdlZCh1c2VyUHJlZmVycmVkTGFuZ3VhZ2VzKCkpKTsKLSNpZiBVU0Uo
U09VUCkgJiYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKLSAgICBpZiAodXNlc05ldHdvcmtQcm9j
ZXNzKCkgJiYgbV9uZXR3b3JrUHJvY2VzcykKKyNpZiBVU0UoU09VUCkKKyAgICBpZiAobV9uZXR3
b3JrUHJvY2VzcykKICAgICAgICAgbV9uZXR3b3JrUHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6TmV0
d29ya1Byb2Nlc3M6OlVzZXJQcmVmZXJyZWRMYW5ndWFnZXNDaGFuZ2VkKHVzZXJQcmVmZXJyZWRM
YW5ndWFnZXMoKSksIDApOwogI2VuZGlmCiB9CkBAIC0zNTYsMjUgKzMyMSw2IEBAIHZvaWQgV2Vi
UHJvY2Vzc1Bvb2w6OnRleHRDaGVja2VyU3RhdGVDaGEKICAgICBzZW5kVG9BbGxQcm9jZXNzZXMo
TWVzc2FnZXM6OldlYlByb2Nlc3M6OlNldFRleHRDaGVja2VyU3RhdGUoVGV4dENoZWNrZXI6OnN0
YXRlKCkpKTsKIH0KIAotdm9pZCBXZWJQcm9jZXNzUG9vbDo6c2V0VXNlc05ldHdvcmtQcm9jZXNz
KGJvb2wgdXNlc05ldHdvcmtQcm9jZXNzKQotewotI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1Mp
Ci0gICAgbV9jb25maWd1cmF0aW9uLT5zZXRVc2VOZXR3b3JrUHJvY2Vzcyh1c2VzTmV0d29ya1By
b2Nlc3MpOwotI2Vsc2UKLSAgICBVTlVTRURfUEFSQU0odXNlc05ldHdvcmtQcm9jZXNzKTsKLSNl
bmRpZgotfQotCi1ib29sIFdlYlByb2Nlc3NQb29sOjp1c2VzTmV0d29ya1Byb2Nlc3MoKSBjb25z
dAotewotI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCi0gICAgcmV0dXJuIG1fY29uZmlndXJh
dGlvbi0+dXNlTmV0d29ya1Byb2Nlc3MoKTsKLSNlbHNlCi0gICAgcmV0dXJuIGZhbHNlOwotI2Vu
ZGlmCi19Ci0KLSNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQogTmV0d29ya1Byb2Nlc3NQcm94
eSYgV2ViUHJvY2Vzc1Bvb2w6OmVuc3VyZU5ldHdvcmtQcm9jZXNzKCkKIHsKICAgICBpZiAobV9u
ZXR3b3JrUHJvY2VzcykKQEAgLTQ1OSw3ICs0MDUsNiBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpn
ZXROZXR3b3JrUHJvY2Vzc0NvCiAKICAgICBtX25ldHdvcmtQcm9jZXNzLT5nZXROZXR3b3JrUHJv
Y2Vzc0Nvbm5lY3Rpb24ocmVwbHkpOwogfQotI2VuZGlmCiAKICNpZiBFTkFCTEUoREFUQUJBU0Vf
UFJPQ0VTUykKIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OmVuc3VyZURhdGFiYXNlUHJvY2VzcygpCkBA
IC01MjcsMTQgKzQ3MiwxMiBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpzZXRBbnlQYWdlR3JvdXBN
aWdoCiB7CiAgICAgbV9pY29uRGF0YWJhc2UtPnNldFByaXZhdGVCcm93c2luZ0VuYWJsZWQocHJp
dmF0ZUJyb3dzaW5nRW5hYmxlZCk7CiAKLSNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQotICAg
IGlmICh1c2VzTmV0d29ya1Byb2Nlc3MoKSAmJiBuZXR3b3JrUHJvY2VzcygpKSB7CisgICAgaWYg
KG5ldHdvcmtQcm9jZXNzKCkpIHsKICAgICAgICAgaWYgKHByaXZhdGVCcm93c2luZ0VuYWJsZWQp
CiAgICAgICAgICAgICBuZXR3b3JrUHJvY2VzcygpLT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJv
Y2Vzczo6RW5zdXJlUHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbihTZXNzaW9uSUQ6OmxlZ2FjeVByaXZh
dGVTZXNzaW9uSUQoKSksIDApOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBuZXR3b3JrUHJv
Y2VzcygpLT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6RGVzdHJveVByaXZhdGVCcm93
c2luZ1Nlc3Npb24oU2Vzc2lvbklEOjpsZWdhY3lQcml2YXRlU2Vzc2lvbklEKCkpLCAwKTsKICAg
ICB9Ci0jZW5kaWYgLy8gRU5BQkxFRChORVRXT1JLX1BST0NFU1MpCiAKICAgICBpZiAocHJpdmF0
ZUJyb3dzaW5nRW5hYmxlZCkKICAgICAgICAgc2VuZFRvQWxsUHJvY2Vzc2VzKE1lc3NhZ2VzOjpX
ZWJQcm9jZXNzOjpFbnN1cmVQcml2YXRlQnJvd3NpbmdTZXNzaW9uKFNlc3Npb25JRDo6bGVnYWN5
UHJpdmF0ZVNlc3Npb25JRCgpKSk7CkBAIC01NjksMjAgKzUxMiw5IEBAIHZvaWQgV2ViUHJvY2Vz
c1Bvb2w6OnByb2Nlc3NEaWRDYWNoZVBhZ2UKICAgICBtX3Byb2Nlc3NXaXRoUGFnZUNhY2hlID0g
cHJvY2VzczsKIH0KIAotV2ViUHJvY2Vzc1Byb3h5JiBXZWJQcm9jZXNzUG9vbDo6ZW5zdXJlU2hh
cmVkV2ViUHJvY2VzcygpCi17Ci0gICAgQVNTRVJUKHByb2Nlc3NNb2RlbCgpID09IFByb2Nlc3NN
b2RlbFNoYXJlZFNlY29uZGFyeVByb2Nlc3MpOwotICAgIGlmIChtX3Byb2Nlc3Nlcy5pc0VtcHR5
KCkpCi0gICAgICAgIGNyZWF0ZU5ld1dlYlByb2Nlc3MoKTsKLSAgICByZXR1cm4gKm1fcHJvY2Vz
c2VzWzBdOwotfQotCiBXZWJQcm9jZXNzUHJveHkmIFdlYlByb2Nlc3NQb29sOjpjcmVhdGVOZXdX
ZWJQcm9jZXNzKCkKIHsKLSNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQotICAgIGlmICh1c2Vz
TmV0d29ya1Byb2Nlc3MoKSkKLSAgICAgICAgZW5zdXJlTmV0d29ya1Byb2Nlc3MoKTsKLSNlbmRp
ZgorICAgIGVuc3VyZU5ldHdvcmtQcm9jZXNzKCk7CiAKICAgICBSZWY8V2ViUHJvY2Vzc1Byb3h5
PiBwcm9jZXNzID0gV2ViUHJvY2Vzc1Byb3h5OjpjcmVhdGUoKnRoaXMpOwogCkBAIC02NDYsNyAr
NTc4LDcgQEAgV2ViUHJvY2Vzc1Byb3h5JiBXZWJQcm9jZXNzUG9vbDo6Y3JlYXRlTgogICAgIC8v
IGljb25EYXRhYmFzZVBhdGggaXMgbm9uLWVtcHR5IGJ5IGRlZmF1bHQsIGJ1dCBtX2ljb25EYXRh
YmFzZSBpc24ndCBlbmFibGVkIGluIFVJIHByb2Nlc3MgdW5sZXNzIHNldERhdGFiYXNlUGF0aCBp
cyBjYWxsZWQgZXhwbGljaXRseS4KICAgICBwYXJhbWV0ZXJzLmljb25EYXRhYmFzZUVuYWJsZWQg
PSAhaWNvbkRhdGFiYXNlUGF0aCgpLmlzRW1wdHkoKTsKIAotICAgIHBhcmFtZXRlcnMudGVybWlu
YXRpb25UaW1lb3V0ID0gKHByb2Nlc3NNb2RlbCgpID09IFByb2Nlc3NNb2RlbFNoYXJlZFNlY29u
ZGFyeVByb2Nlc3MpID8gc2hhcmVkU2Vjb25kYXJ5UHJvY2Vzc1NodXRkb3duVGltZW91dCA6IDA7
CisgICAgcGFyYW1ldGVycy50ZXJtaW5hdGlvblRpbWVvdXQgPSAwOwogCiAgICAgcGFyYW1ldGVy
cy50ZXh0Q2hlY2tlclN0YXRlID0gVGV4dENoZWNrZXI6OnN0YXRlKCk7CiAKQEAgLTY1OSwxMCAr
NTkxLDYgQEAgV2ViUHJvY2Vzc1Byb3h5JiBXZWJQcm9jZXNzUG9vbDo6Y3JlYXRlTgogICAgIHN1
cHBsZW1lbnQ8V2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5PigpLT5wb3B1bGF0ZUNvcHlPZk5v
dGlmaWNhdGlvblBlcm1pc3Npb25zKHBhcmFtZXRlcnMubm90aWZpY2F0aW9uUGVybWlzc2lvbnMp
OwogI2VuZGlmCiAKLSNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQotICAgIHBhcmFtZXRlcnMu
dXNlc05ldHdvcmtQcm9jZXNzID0gdXNlc05ldHdvcmtQcm9jZXNzKCk7Ci0jZW5kaWYKLQogICAg
IHBhcmFtZXRlcnMucGx1Z0luQXV0b1N0YXJ0T3JpZ2luSGFzaGVzID0gbV9wbHVnSW5BdXRvU3Rh
cnRQcm92aWRlci5hdXRvU3RhcnRPcmlnaW5IYXNoZXNDb3B5KCk7CiAgICAgY29weVRvVmVjdG9y
KG1fcGx1Z0luQXV0b1N0YXJ0UHJvdmlkZXIuYXV0b1N0YXJ0T3JpZ2lucygpLCBwYXJhbWV0ZXJz
LnBsdWdJbkF1dG9TdGFydE9yaWdpbnMpOwogCkBAIC03MDYsMTUgKzYzNCw3IEBAIFdlYlByb2Nl
c3NQcm94eSYgV2ViUHJvY2Vzc1Bvb2w6OmNyZWF0ZU4KIAogICAgIG1fcHJvY2Vzc2VzLmFwcGVu
ZChwcm9jZXNzLnB0cigpKTsKIAotICAgIGlmIChwcm9jZXNzTW9kZWwoKSA9PSBQcm9jZXNzTW9k
ZWxTaGFyZWRTZWNvbmRhcnlQcm9jZXNzKSB7Ci0gICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
ICE9IG1fbWVzc2FnZXNUb0luamVjdGVkQnVuZGxlUG9zdGVkVG9FbXB0eUNvbnRleHQuc2l6ZSgp
OyArK2kpIHsKLSAgICAgICAgICAgIGF1dG8mIG1lc3NhZ2VOYW1lQW5kQm9keSA9IG1fbWVzc2Fn
ZXNUb0luamVjdGVkQnVuZGxlUG9zdGVkVG9FbXB0eUNvbnRleHRbaV07Ci0KLSAgICAgICAgICAg
IHByb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlByb2Nlc3M6OkhhbmRsZUluamVjdGVkQnVuZGxl
TWVzc2FnZShtZXNzYWdlTmFtZUFuZEJvZHkuZmlyc3QsIFVzZXJEYXRhKHByb2Nlc3MtPnRyYW5z
Zm9ybU9iamVjdHNUb0hhbmRsZXMobWVzc2FnZU5hbWVBbmRCb2R5LnNlY29uZC5nZXQoKSkuZ2V0
KCkpKSwgMCk7Ci0gICAgICAgIH0KLSAgICAgICAgbV9tZXNzYWdlc1RvSW5qZWN0ZWRCdW5kbGVQ
b3N0ZWRUb0VtcHR5Q29udGV4dC5jbGVhcigpOwotICAgIH0gZWxzZQotICAgICAgICBBU1NFUlQo
bV9tZXNzYWdlc1RvSW5qZWN0ZWRCdW5kbGVQb3N0ZWRUb0VtcHR5Q29udGV4dC5pc0VtcHR5KCkp
OworICAgIEFTU0VSVChtX21lc3NhZ2VzVG9JbmplY3RlZEJ1bmRsZVBvc3RlZFRvRW1wdHlDb250
ZXh0LmlzRW1wdHkoKSk7CiAKICNpZiBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKICAgICAvLyBJ
bml0aWFsaXplIHJlbW90ZSBpbnNwZWN0b3IgY29ubmVjdGlvbiBub3cgdGhhdCB3ZSBoYXZlIGEg
c3ViLXByb2Nlc3MgdGhhdCBpcyBob3N0aW5nIG9uZSBvZiBvdXIgd2ViIHZpZXdzLgpAQCAtNzk4
LDI4ICs3MTgsMTIgQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6ZGlzY29ubmVjdFByb2Nlc3MoVwog
CiAgICAgLy8gRklYTUUgKE11bHRpLVdlYlByb2Nlc3MpOiA8cmRhcjovL3Byb2JsZW0vMTIyMzk3
NjU+IFNvbWUgb2YgdGhlIGludmFsaWRhdGlvbiBjYWxscyBiZWxvdyBhcmUgc3RpbGwgbmVjZXNz
YXJ5IGluIG11bHRpLXByb2Nlc3MgbW9kZSwgYnV0IHRoZXkgc2hvdWxkIG9ubHkgYWZmZWN0IGRh
dGEgc3RydWN0dXJlcyBwZXJ0YWluaW5nIHRvIHRoZSBwcm9jZXNzIGJlaW5nIGRpc2Nvbm5lY3Rl
ZC4KICAgICAvLyBDbGVhcmluZyBldmVyeXRoaW5nIGNhdXNlcyBhc3NlcnRpb24gZmFpbHVyZXMs
IHNvIGl0J3MgbGVzcyB0cm91YmxlIHRvIHNraXAgdGhhdCBmb3Igbm93LgotICAgIGlmIChwcm9j
ZXNzTW9kZWwoKSAhPSBQcm9jZXNzTW9kZWxTaGFyZWRTZWNvbmRhcnlQcm9jZXNzKSB7Ci0gICAg
ICAgIFJlZlB0cjxXZWJQcm9jZXNzUHJveHk+IHByb3RlY3QocHJvY2Vzcyk7Ci0gICAgICAgIGlm
IChtX3Byb2Nlc3NXaXRoUGFnZUNhY2hlID09IHByb2Nlc3MpCi0gICAgICAgICAgICBtX3Byb2Nl
c3NXaXRoUGFnZUNhY2hlID0gMDsKLQotICAgICAgICBzdGF0aWNfY2FzdDxXZWJDb250ZXh0U3Vw
cGxlbWVudCo+KHN1cHBsZW1lbnQ8V2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk+KCkpLT5wcm9j
ZXNzRGlkQ2xvc2UocHJvY2Vzcyk7Ci0KLSAgICAgICAgbV9wcm9jZXNzZXMucmVtb3ZlRmlyc3Qo
cHJvY2Vzcyk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBXZWJDb250ZXh0U3VwcGxl
bWVudE1hcDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBtX3N1cHBsZW1lbnRzLmJlZ2luKCk7Ci0gICAg
V2ViQ29udGV4dFN1cHBsZW1lbnRNYXA6OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IG1fc3VwcGxlbWVu
dHMuZW5kKCk7Ci0gICAgZm9yICg7IGl0ICE9IGVuZDsgKytpdCkKLSAgICAgICAgaXQtPnZhbHVl
LT5wcm9jZXNzRGlkQ2xvc2UocHJvY2Vzcyk7Ci0KLSAgICAvLyBUaGUgdmVjdG9yIG1heSBoYXZl
IHRoZSBsYXN0IHJlZmVyZW5jZSB0byBwcm9jZXNzIHByb3h5LCB3aGljaCBpbiB0dXJuIG1heSBo
YXZlIHRoZSBsYXN0IHJlZmVyZW5jZSB0byB0aGUgY29udGV4dC4KLSAgICAvLyBTaW5jZSB2ZWN0
b3IgZWxlbWVudHMgYXJlIGRlc3Ryb3llZCBpbiBwbGFjZSwgd2Ugd291bGQgcmVjdXJzZSBpbnRv
IFdlYlByb2Nlc3NQcm94eSBkZXN0cnVjdG9yCi0gICAgLy8gaWYgaXQgd2VyZSBpbnZva2VkIGZy
b20gVmVjdG9yOjpyZW1vdmUoKS4gUmVmUHRyIGRlbGF5cyBkZXN0cnVjdGlvbiB1bnRpbCBpdCdz
IHNhZmUuCiAgICAgUmVmUHRyPFdlYlByb2Nlc3NQcm94eT4gcHJvdGVjdChwcm9jZXNzKTsKICAg
ICBpZiAobV9wcm9jZXNzV2l0aFBhZ2VDYWNoZSA9PSBwcm9jZXNzKQotICAgICAgICBtX3Byb2Nl
c3NXaXRoUGFnZUNhY2hlID0gbnVsbHB0cjsKKyAgICAgICAgbV9wcm9jZXNzV2l0aFBhZ2VDYWNo
ZSA9IDA7CisKKyAgICBzdGF0aWNfY2FzdDxXZWJDb250ZXh0U3VwcGxlbWVudCo+KHN1cHBsZW1l
bnQ8V2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk+KCkpLT5wcm9jZXNzRGlkQ2xvc2UocHJvY2Vz
cyk7CisKICAgICBtX3Byb2Nlc3Nlcy5yZW1vdmVGaXJzdChwcm9jZXNzKTsKIH0KIApAQCAtODUx
LDE4ICs3NTUsMTQgQEAgUmVmPFdlYlBhZ2VQcm94eT4gV2ViUHJvY2Vzc1Bvb2w6OmNyZWF0ZQog
ICAgIH0KIAogICAgIFJlZlB0cjxXZWJQcm9jZXNzUHJveHk+IHByb2Nlc3M7Ci0gICAgaWYgKHBy
b2Nlc3NNb2RlbCgpID09IFByb2Nlc3NNb2RlbFNoYXJlZFNlY29uZGFyeVByb2Nlc3MpIHsKLSAg
ICAgICAgcHJvY2VzcyA9ICZlbnN1cmVTaGFyZWRXZWJQcm9jZXNzKCk7Ci0gICAgfSBlbHNlIHsK
LSAgICAgICAgaWYgKG1faGF2ZUluaXRpYWxFbXB0eVByb2Nlc3MpIHsKLSAgICAgICAgICAgIHBy
b2Nlc3MgPSBtX3Byb2Nlc3Nlcy5sYXN0KCk7Ci0gICAgICAgICAgICBtX2hhdmVJbml0aWFsRW1w
dHlQcm9jZXNzID0gZmFsc2U7Ci0gICAgICAgIH0gZWxzZSBpZiAocGFnZUNvbmZpZ3VyYXRpb24t
PnJlbGF0ZWRQYWdlKCkpIHsKLSAgICAgICAgICAgIC8vIFNoYXJpbmcgcHJvY2Vzc2VzLCBlLmcu
IHdoZW4gY3JlYXRpbmcgdGhlIHBhZ2UgdmlhIHdpbmRvdy5vcGVuKCkuCi0gICAgICAgICAgICBw
cm9jZXNzID0gJnBhZ2VDb25maWd1cmF0aW9uLT5yZWxhdGVkUGFnZSgpLT5wcm9jZXNzKCk7Ci0g
ICAgICAgIH0gZWxzZQotICAgICAgICAgICAgcHJvY2VzcyA9ICZjcmVhdGVOZXdXZWJQcm9jZXNz
UmVzcGVjdGluZ1Byb2Nlc3NDb3VudExpbWl0KCk7Ci0gICAgfQorICAgIGlmIChtX2hhdmVJbml0
aWFsRW1wdHlQcm9jZXNzKSB7CisgICAgICAgIHByb2Nlc3MgPSBtX3Byb2Nlc3Nlcy5sYXN0KCk7
CisgICAgICAgIG1faGF2ZUluaXRpYWxFbXB0eVByb2Nlc3MgPSBmYWxzZTsKKyAgICB9IGVsc2Ug
aWYgKHBhZ2VDb25maWd1cmF0aW9uLT5yZWxhdGVkUGFnZSgpKSB7CisgICAgICAgIC8vIFNoYXJp
bmcgcHJvY2Vzc2VzLCBlLmcuIHdoZW4gY3JlYXRpbmcgdGhlIHBhZ2UgdmlhIHdpbmRvdy5vcGVu
KCkuCisgICAgICAgIHByb2Nlc3MgPSAmcGFnZUNvbmZpZ3VyYXRpb24tPnJlbGF0ZWRQYWdlKCkt
PnByb2Nlc3MoKTsKKyAgICB9IGVsc2UKKyAgICAgICAgcHJvY2VzcyA9ICZjcmVhdGVOZXdXZWJQ
cm9jZXNzUmVzcGVjdGluZ1Byb2Nlc3NDb3VudExpbWl0KCk7CiAKICAgICByZXR1cm4gcHJvY2Vz
cy0+Y3JlYXRlV2ViUGFnZShwYWdlQ2xpZW50LCBXVEY6Om1vdmUocGFnZUNvbmZpZ3VyYXRpb24p
KTsKIH0KQEAgLTg3MCwxOCArNzcwLDE2IEBAIFJlZjxXZWJQYWdlUHJveHk+IFdlYlByb2Nlc3NQ
b29sOjpjcmVhdGUKIERvd25sb2FkUHJveHkqIFdlYlByb2Nlc3NQb29sOjpkb3dubG9hZChXZWJQ
YWdlUHJveHkqIGluaXRpYXRpbmdQYWdlLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3Qp
CiB7CiAgICAgRG93bmxvYWRQcm94eSogZG93bmxvYWRQcm94eSA9IGNyZWF0ZURvd25sb2FkUHJv
eHkocmVxdWVzdCk7Ci0gICAgdWludDY0X3QgaW5pdGlhdGluZ1BhZ2VJRCA9IGluaXRpYXRpbmdQ
YWdlID8gaW5pdGlhdGluZ1BhZ2UtPnBhZ2VJRCgpIDogMDsKICAgICBTZXNzaW9uSUQgc2Vzc2lv
bklEID0gaW5pdGlhdGluZ1BhZ2UgPyBpbml0aWF0aW5nUGFnZS0+c2Vzc2lvbklEKCkgOiBTZXNz
aW9uSUQ6OmRlZmF1bHRTZXNzaW9uSUQoKTsKIAotI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1Mp
Ci0gICAgaWYgKHVzZXNOZXR3b3JrUHJvY2VzcygpICYmIG5ldHdvcmtQcm9jZXNzKCkpIHsKKyAg
ICBpZiAobmV0d29ya1Byb2Nlc3MoKSkgewogICAgICAgICAvLyBGSVhNRSAoTmV0d29ya1Byb2Nl
c3MpOiBSZXBsaWNhdGUgd2hhdGV2ZXIgRnJhbWVMb2FkZXI6OnNldE9yaWdpbmFsVVJMRm9yRG93
bmxvYWRSZXF1ZXN0IGRvZXMgd2l0aCB0aGUgcmVxdWVzdCBoZXJlLgogICAgICAgICBuZXR3b3Jr
UHJvY2VzcygpLT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6RG93bmxvYWRSZXF1ZXN0
KHNlc3Npb25JRCwgZG93bmxvYWRQcm94eS0+ZG93bmxvYWRJRCgpLCByZXF1ZXN0KSwgMCk7CiAg
ICAgICAgIHJldHVybiBkb3dubG9hZFByb3h5OwogICAgIH0KLSNlbmRpZgogCi0gICAgbV9wcm9j
ZXNzZXNbMF0tPnNlbmQoTWVzc2FnZXM6OldlYlByb2Nlc3M6OkRvd25sb2FkUmVxdWVzdChzZXNz
aW9uSUQsIGRvd25sb2FkUHJveHktPmRvd25sb2FkSUQoKSwgaW5pdGlhdGluZ1BhZ2VJRCwgcmVx
dWVzdCksIDApOworICAgIC8vIEZJWE1FOiBtYWtlIG5ldHdvcmtQcm9jZXNzKCkgcmV0dXJuIGEg
cmVmZXJlbmNlIHNvIHRoaXMgaXMgbm90IG5lY2Vzc2FyeS4KKyAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKICAgICByZXR1cm4gZG93bmxvYWRQcm94eTsKIH0KIApAQCAtODkzLDI1ICs3OTEsMTgg
QEAgRG93bmxvYWRQcm94eSogV2ViUHJvY2Vzc1Bvb2w6OnJlc3VtZURvdwogICAgIGlmICghcGF0
aC5pc0VtcHR5KCkpCiAgICAgICAgIFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZShwYXRo
LCBTYW5kYm94RXh0ZW5zaW9uOjpSZWFkV3JpdGUsIHNhbmRib3hFeHRlbnNpb25IYW5kbGUpOwog
Ci0jaWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKLSAgICBpZiAodXNlc05ldHdvcmtQcm9jZXNz
KCkgJiYgbmV0d29ya1Byb2Nlc3MoKSkgeworICAgIGlmIChuZXR3b3JrUHJvY2VzcygpKSB7CiAg
ICAgICAgIG5ldHdvcmtQcm9jZXNzKCktPnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpS
ZXN1bWVEb3dubG9hZChkb3dubG9hZFByb3h5LT5kb3dubG9hZElEKCksIHJlc3VtZURhdGEtPmRh
dGFSZWZlcmVuY2UoKSwgcGF0aCwgc2FuZGJveEV4dGVuc2lvbkhhbmRsZSksIDApOwogICAgICAg
ICByZXR1cm4gZG93bmxvYWRQcm94eTsKICAgICB9Ci0jZW5kaWYKIAotICAgIG1fcHJvY2Vzc2Vz
WzBdLT5zZW5kKE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpSZXN1bWVEb3dubG9hZChkb3dubG9hZFBy
b3h5LT5kb3dubG9hZElEKCksIHJlc3VtZURhdGEtPmRhdGFSZWZlcmVuY2UoKSwgcGF0aCwgc2Fu
ZGJveEV4dGVuc2lvbkhhbmRsZSksIDApOworICAgIC8vIEZJWE1FOiBtYWtlIG5ldHdvcmtQcm9j
ZXNzKCkgcmV0dXJuIGEgcmVmZXJlbmNlIHNvIHRoaXMgaXMgbm90IG5lY2Vzc2FyeS4KKyAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICByZXR1cm4gZG93bmxvYWRQcm94eTsKIH0KIAogdm9p
ZCBXZWJQcm9jZXNzUG9vbDo6cG9zdE1lc3NhZ2VUb0luamVjdGVkQnVuZGxlKGNvbnN0IFN0cmlu
ZyYgbWVzc2FnZU5hbWUsIEFQSTo6T2JqZWN0KiBtZXNzYWdlQm9keSkKIHsKLSAgICBpZiAobV9w
cm9jZXNzZXMuaXNFbXB0eSgpKSB7Ci0gICAgICAgIGlmIChwcm9jZXNzTW9kZWwoKSA9PSBQcm9j
ZXNzTW9kZWxTaGFyZWRTZWNvbmRhcnlQcm9jZXNzKQotICAgICAgICAgICAgbV9tZXNzYWdlc1Rv
SW5qZWN0ZWRCdW5kbGVQb3N0ZWRUb0VtcHR5Q29udGV4dC5hcHBlbmQoc3RkOjptYWtlX3BhaXIo
bWVzc2FnZU5hbWUsIG1lc3NhZ2VCb2R5KSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KICAg
ICBmb3IgKGF1dG8mIHByb2Nlc3MgOiBtX3Byb2Nlc3NlcykgewogICAgICAgICAvLyBGSVhNRTog
UmV0dXJuIGVhcmx5IGlmIHRoZSBtZXNzYWdlIGJvZHkgY29udGFpbnMgYW55IHJlZmVyZW5jZXMg
dG8gV0tQYWdlUmVmcy9XS0ZyYW1lUmVmcyBldGMuIHNpbmNlIHRoZXkncmUgbG9jYWwgdG8gYSBw
cm9jZXNzLgogICAgICAgICBwcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpIYW5k
bGVJbmplY3RlZEJ1bmRsZU1lc3NhZ2UobWVzc2FnZU5hbWUsIFVzZXJEYXRhKHByb2Nlc3MtPnRy
YW5zZm9ybU9iamVjdHNUb0hhbmRsZXMobWVzc2FnZUJvZHkpLmdldCgpKSksIDApOwpAQCAtOTQw
LDcgKzgzMSw2IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnNldEFkZGl0aW9uYWxQbHVnaW4KIH0K
ICNlbmRpZiAvLyBFTkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQSSkKIAotI2lmIEVOQUJMRShORVRX
T1JLX1BST0NFU1MpCiBQbGF0Zm9ybVByb2Nlc3NJZGVudGlmaWVyIFdlYlByb2Nlc3NQb29sOjpu
ZXR3b3JrUHJvY2Vzc0lkZW50aWZpZXIoKQogewogICAgIGlmICghbV9uZXR3b3JrUHJvY2VzcykK
QEAgLTk0OCw3ICs4MzgsNiBAQCBQbGF0Zm9ybVByb2Nlc3NJZGVudGlmaWVyIFdlYlByb2Nlc3NQ
b29sCiAKICAgICByZXR1cm4gbV9uZXR3b3JrUHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKTsK
IH0KLSNlbmRpZgogCiB2b2lkIFdlYlByb2Nlc3NQb29sOjpzZXRBbHdheXNVc2VzQ29tcGxleFRl
eHRDb2RlUGF0aChib29sIGFsd2F5c1VzZUNvbXBsZXhUZXh0KQogewpAQCAtOTg4LDE1ICs4Nzcs
OSBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpzZXREb21haW5SZWxheGF0aW9uCiAKIHZvaWQgV2Vi
UHJvY2Vzc1Bvb2w6OnNldENhbkhhbmRsZUhUVFBTU2VydmVyVHJ1c3RFdmFsdWF0aW9uKGJvb2wg
dmFsdWUpCiB7Ci0jaWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKICAgICBtX2NhbkhhbmRsZUhU
VFBTU2VydmVyVHJ1c3RFdmFsdWF0aW9uID0gdmFsdWU7Ci0gICAgaWYgKHVzZXNOZXR3b3JrUHJv
Y2VzcygpICYmIG1fbmV0d29ya1Byb2Nlc3MpIHsKKyAgICBpZiAobV9uZXR3b3JrUHJvY2VzcykK
ICAgICAgICAgbV9uZXR3b3JrUHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6
OlNldENhbkhhbmRsZUhUVFBTU2VydmVyVHJ1c3RFdmFsdWF0aW9uKHZhbHVlKSwgMCk7Ci0gICAg
ICAgIHJldHVybjsKLSAgICB9Ci0jZWxzZQotICAgIFVOVVNFRF9QQVJBTSh2YWx1ZSk7Ci0jZW5k
aWYKIH0KIAogdm9pZCBXZWJQcm9jZXNzUG9vbDo6cmVnaXN0ZXJVUkxTY2hlbWVBc0xvY2FsKGNv
bnN0IFN0cmluZyYgdXJsU2NoZW1lKQpAQCAtMTA2NCwxMCArOTQ3LDggQEAgdm9pZCBXZWJQcm9j
ZXNzUG9vbDo6c2V0Q2FjaGVNb2RlbChDYWNoZQogICAgIG1fY29uZmlndXJhdGlvbi0+c2V0Q2Fj
aGVNb2RlbChjYWNoZU1vZGVsKTsKICAgICBzZW5kVG9BbGxQcm9jZXNzZXMoTWVzc2FnZXM6Oldl
YlByb2Nlc3M6OlNldENhY2hlTW9kZWwoY2FjaGVNb2RlbCkpOwogCi0jaWYgRU5BQkxFKE5FVFdP
UktfUFJPQ0VTUykKLSAgICBpZiAodXNlc05ldHdvcmtQcm9jZXNzKCkgJiYgbV9uZXR3b3JrUHJv
Y2VzcykKKyAgICBpZiAobV9uZXR3b3JrUHJvY2VzcykKICAgICAgICAgbV9uZXR3b3JrUHJvY2Vz
cy0+c2VuZChNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OlNldENhY2hlTW9kZWwoY2FjaGVNb2Rl
bCksIDApOwotI2VuZGlmCiB9CiAKIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnNldERlZmF1bHRSZXF1
ZXN0VGltZW91dEludGVydmFsKGRvdWJsZSB0aW1lb3V0SW50ZXJ2YWwpCkBAIC0xMDc3LDE1ICs5
NTgsOSBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpzZXREZWZhdWx0UmVxdWVzdFRpCiAKIERvd25s
b2FkUHJveHkqIFdlYlByb2Nlc3NQb29sOjpjcmVhdGVEb3dubG9hZFByb3h5KGNvbnN0IFJlc291
cmNlUmVxdWVzdCYgcmVxdWVzdCkKIHsKLSNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQotICAg
IGlmICh1c2VzTmV0d29ya1Byb2Nlc3MoKSkgewotICAgICAgICBlbnN1cmVOZXR3b3JrUHJvY2Vz
cygpOwotICAgICAgICBBU1NFUlQobV9uZXR3b3JrUHJvY2Vzcyk7Ci0gICAgICAgIHJldHVybiBt
X25ldHdvcmtQcm9jZXNzLT5jcmVhdGVEb3dubG9hZFByb3h5KHJlcXVlc3QpOwotICAgIH0KLSNl
bmRpZgotCi0gICAgcmV0dXJuIGVuc3VyZVNoYXJlZFdlYlByb2Nlc3MoKS5jcmVhdGVEb3dubG9h
ZFByb3h5KHJlcXVlc3QpOworICAgIGVuc3VyZU5ldHdvcmtQcm9jZXNzKCk7CisgICAgQVNTRVJU
KG1fbmV0d29ya1Byb2Nlc3MpOworICAgIHJldHVybiBtX25ldHdvcmtQcm9jZXNzLT5jcmVhdGVE
b3dubG9hZFByb3h5KHJlcXVlc3QpOwogfQogCiB2b2lkIFdlYlByb2Nlc3NQb29sOjphZGRNZXNz
YWdlUmVjZWl2ZXIoSVBDOjpTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFtZSwgSVBD
OjpNZXNzYWdlUmVjZWl2ZXImIG1lc3NhZ2VSZWNlaXZlcikKQEAgLTExODIsMTIgKzEwNTcsMTAg
QEAgU3RyaW5nIFdlYlByb2Nlc3NQb29sOjpjb29raWVTdG9yYWdlRGlyZQogdm9pZCBXZWJQcm9j
ZXNzUG9vbDo6dXNlVGVzdGluZ05ldHdvcmtTZXNzaW9uKCkKIHsKICAgICBBU1NFUlQobV9wcm9j
ZXNzZXMuaXNFbXB0eSgpKTsKLSNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQogICAgIEFTU0VS
VCghbV9uZXR3b3JrUHJvY2Vzcyk7CiAKICAgICBpZiAobV9uZXR3b3JrUHJvY2VzcykKICAgICAg
ICAgcmV0dXJuOwotI2VuZGlmCiAKICAgICBpZiAoIW1fcHJvY2Vzc2VzLmlzRW1wdHkoKSkKICAg
ICAgICAgcmV0dXJuOwpAQCAtMTE5NywyMiArMTA3MCwxOCBAQCB2b2lkIFdlYlByb2Nlc3NQb29s
Ojp1c2VUZXN0aW5nTmV0d29ya1NlCiAKIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OmFsbG93U3BlY2lm
aWNIVFRQU0NlcnRpZmljYXRlRm9ySG9zdChjb25zdCBXZWJDZXJ0aWZpY2F0ZUluZm8qIGNlcnRp
ZmljYXRlLCBjb25zdCBTdHJpbmcmIGhvc3QpCiB7Ci0jaWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VT
UykKLSAgICBpZiAodXNlc05ldHdvcmtQcm9jZXNzKCkgJiYgbV9uZXR3b3JrUHJvY2Vzcykgewor
ICAgIGlmIChtX25ldHdvcmtQcm9jZXNzKSB7CiAgICAgICAgIG1fbmV0d29ya1Byb2Nlc3MtPnNl
bmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpBbGxvd1NwZWNpZmljSFRUUFNDZXJ0aWZpY2F0
ZUZvckhvc3QoY2VydGlmaWNhdGUtPmNlcnRpZmljYXRlSW5mbygpLCBob3N0KSwgMCk7CiAgICAg
ICAgIHJldHVybjsKICAgICB9Ci0jZW5kaWYKIAogI2lmIFVTRShTT1VQKQogICAgIG1fcHJvY2Vz
c2VzWzBdLT5zZW5kKE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpBbGxvd1NwZWNpZmljSFRUUFNDZXJ0
aWZpY2F0ZUZvckhvc3QoY2VydGlmaWNhdGUtPmNlcnRpZmljYXRlSW5mbygpLCBob3N0KSwgMCk7
CiAgICAgcmV0dXJuOwotI2Vsc2UKLSAgICBVTlVTRURfUEFSQU0oY2VydGlmaWNhdGUpOwotICAg
IFVOVVNFRF9QQVJBTShob3N0KTsKICNlbmRpZgogCiAjaWYgIVBMQVRGT1JNKElPUykKKyAgICAv
LyBGSVhNRTogV2h5IGlzIHRoaXMgb25seSBvbiBpT1M/IENhbiB3ZSByZW1vdmUgaXQ/CiAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7CiAjZW5kaWYKIH0KQEAgLTEyNTMsNDAgKzExMjIsMTkgQEAg
dm9pZCBXZWJQcm9jZXNzUG9vbDo6Z2V0U3RhdGlzdGljcyh1aW50MwogCiB2b2lkIFdlYlByb2Nl
c3NQb29sOjpyZXF1ZXN0V2ViQ29udGVudFN0YXRpc3RpY3MoU3RhdGlzdGljc1JlcXVlc3QqIHJl
cXVlc3QpCiB7Ci0gICAgaWYgKHByb2Nlc3NNb2RlbCgpID09IFByb2Nlc3NNb2RlbFNoYXJlZFNl
Y29uZGFyeVByb2Nlc3MpIHsKLSAgICAgICAgaWYgKG1fcHJvY2Vzc2VzLmlzRW1wdHkoKSkKLSAg
ICAgICAgICAgIHJldHVybjsKLSAgICAgICAgCi0gICAgICAgIHVpbnQ2NF90IHJlcXVlc3RJRCA9
IHJlcXVlc3QtPmFkZE91dHN0YW5kaW5nUmVxdWVzdCgpOwotICAgICAgICBtX3N0YXRpc3RpY3NS
ZXF1ZXN0cy5zZXQocmVxdWVzdElELCByZXF1ZXN0KTsKLSAgICAgICAgbV9wcm9jZXNzZXNbMF0t
PnNlbmQoTWVzc2FnZXM6OldlYlByb2Nlc3M6OkdldFdlYkNvcmVTdGF0aXN0aWNzKHJlcXVlc3RJ
RCksIDApOwotCi0gICAgfSBlbHNlIHsKLSAgICAgICAgLy8gRklYTUUgKE11bHRpLVdlYlByb2Nl
c3MpIDxyZGFyOi8vcHJvYmxlbS8xMzIwMDA1OT46IE1ha2UgZ2V0dGluZyBzdGF0aXN0aWNzIGZy
b20gbXVsdGlwbGUgV2ViUHJvY2Vzc2VzIHdvcmsuCi0gICAgfQorICAgIC8vIEZJWE1FIChNdWx0
aS1XZWJQcm9jZXNzKSA8cmRhcjovL3Byb2JsZW0vMTMyMDAwNTk+OiBNYWtlIGdldHRpbmcgc3Rh
dGlzdGljcyBmcm9tIG11bHRpcGxlIFdlYlByb2Nlc3NlcyB3b3JrLgogfQogCiB2b2lkIFdlYlBy
b2Nlc3NQb29sOjpyZXF1ZXN0TmV0d29ya2luZ1N0YXRpc3RpY3MoU3RhdGlzdGljc1JlcXVlc3Qq
IHJlcXVlc3QpCiB7Ci0gICAgYm9vbCBuZXR3b3JrUHJvY2Vzc1VuYXZhaWxhYmxlOwotI2lmIEVO
QUJMRShORVRXT1JLX1BST0NFU1MpCi0gICAgbmV0d29ya1Byb2Nlc3NVbmF2YWlsYWJsZSA9ICF1
c2VzTmV0d29ya1Byb2Nlc3MoKSB8fCAhbV9uZXR3b3JrUHJvY2VzczsKLSNlbHNlCi0gICAgbmV0
d29ya1Byb2Nlc3NVbmF2YWlsYWJsZSA9IHRydWU7Ci0jZW5kaWYKLQotICAgIGlmIChuZXR3b3Jr
UHJvY2Vzc1VuYXZhaWxhYmxlKSB7CisgICAgaWYgKCFtX25ldHdvcmtQcm9jZXNzKSB7CiAgICAg
ICAgIExPR19FUlJPUigiQXR0ZW1wdCB0byBnZXQgTmV0d29ya1Byb2Nlc3Mgc3RhdGlzdGljcyBi
dXQgdGhlIE5ldHdvcmtQcm9jZXNzIGlzIHVuYXZhaWxhYmxlIik7CiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAKLSNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQogICAgIHVpbnQ2NF90IHJlcXVl
c3RJRCA9IHJlcXVlc3QtPmFkZE91dHN0YW5kaW5nUmVxdWVzdCgpOwogICAgIG1fc3RhdGlzdGlj
c1JlcXVlc3RzLnNldChyZXF1ZXN0SUQsIHJlcXVlc3QpOwogICAgIG1fbmV0d29ya1Byb2Nlc3Mt
PnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpHZXROZXR3b3JrUHJvY2Vzc1N0YXRpc3Rp
Y3MocmVxdWVzdElEKSwgMCk7Ci0jZWxzZQotICAgIFVOVVNFRF9QQVJBTShyZXF1ZXN0KTsKLSNl
bmRpZgogfQogCiB2b2lkIFdlYlByb2Nlc3NQb29sOjpoYW5kbGVNZXNzYWdlKElQQzo6Q29ubmVj
dGlvbiYgY29ubmVjdGlvbiwgY29uc3QgU3RyaW5nJiBtZXNzYWdlTmFtZSwgY29uc3QgV2ViS2l0
OjpVc2VyRGF0YSYgbWVzc2FnZUJvZHkpCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
V2ViUHJvY2Vzc1Bvb2wuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
V2ViUHJvY2Vzc1Bvb2wuaAkocmV2aXNpb24gMTkyNjAxKQorKysgU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1dlYlByb2Nlc3NQb29sLmgJKHdvcmtpbmcgY29weSkKQEAgLTM0LDkgKzM0LDkgQEAK
ICNpbmNsdWRlICJHZW5lcmljQ2FsbGJhY2suaCIKICNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIu
aCIKICNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXJNYXAuaCIKKyNpbmNsdWRlICJOZXR3b3JrUHJv
Y2Vzc1Byb3h5LmgiCiAjaW5jbHVkZSAiUGx1Z0luQXV0b1N0YXJ0UHJvdmlkZXIuaCIKICNpbmNs
dWRlICJQbHVnaW5JbmZvU3RvcmUuaCIKLSNpbmNsdWRlICJQcm9jZXNzTW9kZWwuaCIKICNpbmNs
dWRlICJQcm9jZXNzVGhyb3R0bGVyLmgiCiAjaW5jbHVkZSAiU3RhdGlzdGljc1JlcXVlc3QuaCIK
ICNpbmNsdWRlICJWaXNpdGVkTGlua1N0b3JlLmgiCkBAIC01OSwxMCArNTksNiBAQAogI2luY2x1
ZGUgIkRhdGFiYXNlUHJvY2Vzc1Byb3h5LmgiCiAjZW5kaWYKIAotI2lmIEVOQUJMRShORVRXT1JL
X1BST0NFU1MpCi0jaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3NQcm94eS5oIgotI2VuZGlmCi0KICNp
ZiBFTkFCTEUoTUVESUFfU0VTU0lPTikKICNpbmNsdWRlICJXZWJNZWRpYVNlc3Npb25Gb2N1c01h
bmFnZXIuaCIKICNlbmRpZgpAQCAtODYsMTQgKzgyLDEyIEBAIGNsYXNzIFdlYkNvbnRleHRTdXBw
bGVtZW50OwogY2xhc3MgV2ViSWNvbkRhdGFiYXNlOwogY2xhc3MgV2ViUGFnZUdyb3VwOwogY2xh
c3MgV2ViUGFnZVByb3h5Oworc3RydWN0IE5ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJz
Owogc3RydWN0IFN0YXRpc3RpY3NEYXRhOwogc3RydWN0IFdlYlByb2Nlc3NDcmVhdGlvblBhcmFt
ZXRlcnM7CiAgICAgCiB0eXBlZGVmIEdlbmVyaWNDYWxsYmFjazxBUEk6OkRpY3Rpb25hcnkqPiBE
aWN0aW9uYXJ5Q2FsbGJhY2s7CiAKLSNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQotc3RydWN0
IE5ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOwotI2VuZGlmCiAKICNpZiBQTEFURk9S
TShDT0NPQSkKIGludCBuZXR3b3JrUHJvY2Vzc0xhdGVuY3lRT1MoKTsKQEAgLTE0Miw5ICsxMzYs
NiBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRIaXN0b3J5Q2xpZW50KHN0ZDo6dW5pcXVlX3B0cjxB
UEk6OkxlZ2FjeUNvbnRleHRIaXN0b3J5Q2xpZW50Pik7CiAgICAgdm9pZCBzZXREb3dubG9hZENs
aWVudChzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpEb3dubG9hZENsaWVudD4pOwogCi0gICAgdm9pZCBz
ZXRQcm9jZXNzTW9kZWwoUHJvY2Vzc01vZGVsKTsgLy8gQ2FuIG9ubHkgYmUgY2FsbGVkIHdoZW4g
dGhlcmUgYXJlIG5vIHByb2Nlc3NlcyBydW5uaW5nLgotICAgIFByb2Nlc3NNb2RlbCBwcm9jZXNz
TW9kZWwoKSBjb25zdCB7IHJldHVybiBtX2NvbmZpZ3VyYXRpb24tPnByb2Nlc3NNb2RlbCgpOyB9
Ci0KICAgICB2b2lkIHNldE1heGltdW1OdW1iZXJPZlByb2Nlc3Nlcyh1bnNpZ25lZCk7IC8vIENh
biBvbmx5IGJlIGNhbGxlZCB3aGVuIHRoZXJlIGFyZSBubyBwcm9jZXNzZXMgcnVubmluZy4KICAg
ICB1bnNpZ25lZCBtYXhpbXVtTnVtYmVyT2ZQcm9jZXNzZXMoKSBjb25zdCB7IHJldHVybiAhbV9j
b25maWd1cmF0aW9uLT5tYXhpbXVtUHJvY2Vzc0NvdW50KCkgPyBVSU5UX01BWCA6IG1fY29uZmln
dXJhdGlvbi0+bWF4aW11bVByb2Nlc3NDb3VudCgpOyB9CiAKQEAgLTE5Myw5ICsxODQsNyBAQCBw
dWJsaWM6CiAgICAgdm9pZCBjbGVhclBsdWdpbkNsaWVudFBvbGljaWVzKCk7CiAjZW5kaWYKIAot
I2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCiAgICAgUGxhdGZvcm1Qcm9jZXNzSWRlbnRpZmll
ciBuZXR3b3JrUHJvY2Vzc0lkZW50aWZpZXIoKTsKLSNlbmRpZgogCiAgICAgdm9pZCBzZXRBbHdh
eXNVc2VzQ29tcGxleFRleHRDb2RlUGF0aChib29sKTsKICAgICB2b2lkIHNldFNob3VsZFVzZUZv
bnRTbW9vdGhpbmcoYm9vbCk7CkBAIC0yODYsMTYgKzI3NSwxMSBAQCBwdWJsaWM6CiAKICAgICAv
LyBOZXR3b3JrIFByb2Nlc3MgTWFuYWdlbWVudAogCi0gICAgdm9pZCBzZXRVc2VzTmV0d29ya1By
b2Nlc3MoYm9vbCk7Ci0gICAgYm9vbCB1c2VzTmV0d29ya1Byb2Nlc3MoKSBjb25zdDsKLQotI2lm
IEVOQUJMRShORVRXT1JLX1BST0NFU1MpCiAgICAgTmV0d29ya1Byb2Nlc3NQcm94eSYgZW5zdXJl
TmV0d29ya1Byb2Nlc3MoKTsKICAgICBOZXR3b3JrUHJvY2Vzc1Byb3h5KiBuZXR3b3JrUHJvY2Vz
cygpIHsgcmV0dXJuIG1fbmV0d29ya1Byb2Nlc3MuZ2V0KCk7IH0KICAgICB2b2lkIG5ldHdvcmtQ
cm9jZXNzQ3Jhc2hlZChOZXR3b3JrUHJvY2Vzc1Byb3h5Kik7CiAKICAgICB2b2lkIGdldE5ldHdv
cmtQcm9jZXNzQ29ubmVjdGlvbihQYXNzUmVmUHRyPE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6
OkdldE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbjo6RGVsYXllZFJlcGx5Pik7Ci0jZW5kaWYKIAog
I2lmIEVOQUJMRShEQVRBQkFTRV9QUk9DRVNTKQogICAgIHZvaWQgZW5zdXJlRGF0YWJhc2VQcm9j
ZXNzKCk7CkBAIC0zNzgsOSArMzYyLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHJlcXVlc3RXZWJD
b250ZW50U3RhdGlzdGljcyhTdGF0aXN0aWNzUmVxdWVzdCopOwogICAgIHZvaWQgcmVxdWVzdE5l
dHdvcmtpbmdTdGF0aXN0aWNzKFN0YXRpc3RpY3NSZXF1ZXN0Kik7CiAKLSNpZiBFTkFCTEUoTkVU
V09SS19QUk9DRVNTKQogICAgIHZvaWQgcGxhdGZvcm1Jbml0aWFsaXplTmV0d29ya1Byb2Nlc3Mo
TmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMmKTsKLSNlbmRpZgogCiAgICAgdm9pZCBo
YW5kbGVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIGNvbnN0IFN0cmluZyYgbWVzc2FnZU5hbWUs
IGNvbnN0IFVzZXJEYXRhJiBtZXNzYWdlQm9keSk7CiAgICAgdm9pZCBoYW5kbGVTeW5jaHJvbm91
c01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgY29uc3QgU3RyaW5nJiBtZXNzYWdlTmFtZSwgY29u
c3QgVXNlckRhdGEmIG1lc3NhZ2VCb2R5LCBVc2VyRGF0YSYgcmV0dXJuVXNlckRhdGEpOwpAQCAt
NTAwLDExICs0ODIsOSBAQCBwcml2YXRlOgogCiAgICAgYm9vbCBtX3Byb2Nlc3NUZXJtaW5hdGlv
bkVuYWJsZWQ7CiAKLSNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQogICAgIGJvb2wgbV9jYW5I
YW5kbGVIVFRQU1NlcnZlclRydXN0RXZhbHVhdGlvbjsKICAgICBib29sIG1fZGlkTmV0d29ya1By
b2Nlc3NDcmFzaDsKICAgICBSZWZQdHI8TmV0d29ya1Byb2Nlc3NQcm94eT4gbV9uZXR3b3JrUHJv
Y2VzczsKLSNlbmRpZgogCiAjaWYgRU5BQkxFKERBVEFCQVNFX1BST0NFU1MpCiAgICAgUmVmUHRy
PERhdGFiYXNlUHJvY2Vzc1Byb3h5PiBtX2RhdGFiYXNlUHJvY2VzczsKQEAgLTUzOSw1NSArNTE5
LDE1IEBAIHByaXZhdGU6CiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgogdm9pZCBXZWJQcm9jZXNzUG9v
bDo6c2VuZFRvTmV0d29ya2luZ1Byb2Nlc3MoVCYmIG1lc3NhZ2UpCiB7Ci0gICAgc3dpdGNoIChw
cm9jZXNzTW9kZWwoKSkgewotICAgIGNhc2UgUHJvY2Vzc01vZGVsU2hhcmVkU2Vjb25kYXJ5UHJv
Y2VzczoKLSNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQotICAgICAgICBpZiAodXNlc05ldHdv
cmtQcm9jZXNzKCkpIHsKLSAgICAgICAgICAgIGlmIChtX25ldHdvcmtQcm9jZXNzICYmIG1fbmV0
d29ya1Byb2Nlc3MtPmNhblNlbmRNZXNzYWdlKCkpCi0gICAgICAgICAgICAgICAgbV9uZXR3b3Jr
UHJvY2Vzcy0+c2VuZChzdGQ6OmZvcndhcmQ8VD4obWVzc2FnZSksIDApOwotICAgICAgICAgICAg
cmV0dXJuOwotICAgICAgICB9Ci0jZW5kaWYKLSAgICAgICAgaWYgKCFtX3Byb2Nlc3Nlcy5pc0Vt
cHR5KCkgJiYgbV9wcm9jZXNzZXNbMF0tPmNhblNlbmRNZXNzYWdlKCkpCi0gICAgICAgICAgICBt
X3Byb2Nlc3Nlc1swXS0+c2VuZChzdGQ6OmZvcndhcmQ8VD4obWVzc2FnZSksIDApOwotICAgICAg
ICByZXR1cm47Ci0gICAgY2FzZSBQcm9jZXNzTW9kZWxNdWx0aXBsZVNlY29uZGFyeVByb2Nlc3Nl
czoKLSNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQotICAgICAgICBpZiAobV9uZXR3b3JrUHJv
Y2VzcyAmJiBtX25ldHdvcmtQcm9jZXNzLT5jYW5TZW5kTWVzc2FnZSgpKQotICAgICAgICAgICAg
bV9uZXR3b3JrUHJvY2Vzcy0+c2VuZChzdGQ6OmZvcndhcmQ8VD4obWVzc2FnZSksIDApOwotICAg
ICAgICByZXR1cm47Ci0jZWxzZQotICAgICAgICBicmVhazsKLSNlbmRpZgotICAgIH0KLSAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICBpZiAobV9uZXR3b3JrUHJvY2VzcyAmJiBtX25ldHdv
cmtQcm9jZXNzLT5jYW5TZW5kTWVzc2FnZSgpKQorICAgICAgICBtX25ldHdvcmtQcm9jZXNzLT5z
ZW5kKHN0ZDo6Zm9yd2FyZDxUPihtZXNzYWdlKSwgMCk7CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1l
IFQ+CiB2b2lkIFdlYlByb2Nlc3NQb29sOjpzZW5kVG9OZXR3b3JraW5nUHJvY2Vzc1JlbGF1bmNo
aW5nSWZOZWNlc3NhcnkoVCYmIG1lc3NhZ2UpCiB7Ci0gICAgc3dpdGNoIChwcm9jZXNzTW9kZWwo
KSkgewotICAgIGNhc2UgUHJvY2Vzc01vZGVsU2hhcmVkU2Vjb25kYXJ5UHJvY2VzczoKLSNpZiBF
TkFCTEUoTkVUV09SS19QUk9DRVNTKQotICAgICAgICBpZiAodXNlc05ldHdvcmtQcm9jZXNzKCkp
IHsKLSAgICAgICAgICAgIGVuc3VyZU5ldHdvcmtQcm9jZXNzKCk7Ci0gICAgICAgICAgICBtX25l
dHdvcmtQcm9jZXNzLT5zZW5kKHN0ZDo6Zm9yd2FyZDxUPihtZXNzYWdlKSwgMCk7Ci0gICAgICAg
ICAgICByZXR1cm47Ci0gICAgICAgIH0KLSNlbmRpZgotICAgICAgICBlbnN1cmVTaGFyZWRXZWJQ
cm9jZXNzKCk7Ci0gICAgICAgIG1fcHJvY2Vzc2VzWzBdLT5zZW5kKHN0ZDo6Zm9yd2FyZDxUPiht
ZXNzYWdlKSwgMCk7Ci0gICAgICAgIHJldHVybjsKLSAgICBjYXNlIFByb2Nlc3NNb2RlbE11bHRp
cGxlU2Vjb25kYXJ5UHJvY2Vzc2VzOgotI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCi0gICAg
ICAgIGVuc3VyZU5ldHdvcmtQcm9jZXNzKCk7Ci0gICAgICAgIG1fbmV0d29ya1Byb2Nlc3MtPnNl
bmQoc3RkOjpmb3J3YXJkPFQ+KG1lc3NhZ2UpLCAwKTsKLSAgICAgICAgcmV0dXJuOwotI2Vsc2UK
LSAgICAgICAgYnJlYWs7Ci0jZW5kaWYKLSAgICB9Ci0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
CisgICAgZW5zdXJlTmV0d29ya1Byb2Nlc3MoKTsKKyAgICBtX25ldHdvcmtQcm9jZXNzLT5zZW5k
KHN0ZDo6Zm9yd2FyZDxUPihtZXNzYWdlKSwgMCk7CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+
CkBAIC02MTYsMTcgKzU1NiwxMiBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgogdm9pZCBXZWJQcm9j
ZXNzUG9vbDo6c2VuZFRvQWxsUHJvY2Vzc2VzUmVsYXVuY2hpbmdUaGVtSWZOZWNlc3NhcnkoY29u
c3QgVCYgbWVzc2FnZSkKIHsKICAgICAvLyBGSVhNRSAoTXVsdGktV2ViUHJvY2Vzcyk6IFdlYlBy
b2Nlc3NQb29sIGRvZXNuJ3QgdHJhY2sgcHJvY2Vzc2VzIHRoYXQgaGF2ZSBleGl0ZWQsIHNvIGl0
IGNhbm5vdCByZWxhdW5jaCB0aGVzZS4gUGVyaGFwcyB0aGlzIGZ1bmN0aW9uYWxpdHkgd29uJ3Qg
YmUgbmVlZGVkIGluIHRoaXMgbW9kZS4KLSAgICBpZiAocHJvY2Vzc01vZGVsKCkgPT0gUHJvY2Vz
c01vZGVsU2hhcmVkU2Vjb25kYXJ5UHJvY2VzcykKLSAgICAgICAgZW5zdXJlU2hhcmVkV2ViUHJv
Y2VzcygpOwogICAgIHNlbmRUb0FsbFByb2Nlc3NlcyhtZXNzYWdlKTsKIH0KIAogdGVtcGxhdGU8
dHlwZW5hbWUgVD4KIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnNlbmRUb09uZVByb2Nlc3MoVCYmIG1l
c3NhZ2UpCiB7Ci0gICAgaWYgKHByb2Nlc3NNb2RlbCgpID09IFByb2Nlc3NNb2RlbFNoYXJlZFNl
Y29uZGFyeVByb2Nlc3MpCi0gICAgICAgIGVuc3VyZVNoYXJlZFdlYlByb2Nlc3MoKTsKLQogICAg
IGJvb2wgbWVzc2FnZVNlbnQgPSBmYWxzZTsKICAgICBzaXplX3QgcHJvY2Vzc0NvdW50ID0gbV9w
cm9jZXNzZXMuc2l6ZSgpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcHJvY2Vzc0NvdW50
OyArK2kpIHsKQEAgLTYzOCw3ICs1NzMsNyBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpzZW5kVG9P
bmVQcm9jZXNzKFQmCiAgICAgICAgIH0KICAgICB9CiAKLSAgICBpZiAoIW1lc3NhZ2VTZW50ICYm
IHByb2Nlc3NNb2RlbCgpID09IFByb2Nlc3NNb2RlbE11bHRpcGxlU2Vjb25kYXJ5UHJvY2Vzc2Vz
KSB7CisgICAgaWYgKCFtZXNzYWdlU2VudCkgewogICAgICAgICB3YXJtSW5pdGlhbFByb2Nlc3Mo
KTsKICAgICAgICAgUmVmUHRyPFdlYlByb2Nlc3NQcm94eT4gcHJvY2VzcyA9IG1fcHJvY2Vzc2Vz
Lmxhc3QoKTsKICAgICAgICAgaWYgKHByb2Nlc3MtPmNhblNlbmRNZXNzYWdlKCkpCkluZGV4OiBT
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcAkocmV2aXNpb24g
MTkyNjAxKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTI1Niw3ICsyNTYsNyBAQCB2b2lkIFdlYlByb2Nlc3NQcm94eTo6
cmVtb3ZlV2ViUGFnZSh1aW50CiAKICAgICAvLyBJZiB0aGlzIHdhcyB0aGUgbGFzdCBXZWJQYWdl
IG9wZW4gaW4gdGhhdCB3ZWIgcHJvY2VzcywgYW5kIHdlIGhhdmUgbm8gb3RoZXIgcmVhc29uIHRv
IGtlZXAgaXQgYWxpdmUsIGxldCBpdCBnby4KICAgICAvLyBXZSBvbmx5IGFsbG93IHRoaXMgd2hl
biB1c2luZyBhIG5ldHdvcmsgcHJvY2VzcywgYXMgb3RoZXJ3aXNlIHRoZSBXZWJQcm9jZXNzIG5l
ZWRzIHRvIHByZXNlcnZlIGl0cyBzZXNzaW9uIHN0YXRlLgotICAgIGlmICghbV9wcm9jZXNzUG9v
bC0+dXNlc05ldHdvcmtQcm9jZXNzKCkgfHwgc3RhdGUoKSA9PSBTdGF0ZTo6VGVybWluYXRlZCB8
fCAhY2FuVGVybWluYXRlQ2hpbGRQcm9jZXNzKCkpCisgICAgaWYgKHN0YXRlKCkgPT0gU3RhdGU6
OlRlcm1pbmF0ZWQgfHwgIWNhblRlcm1pbmF0ZUNoaWxkUHJvY2VzcygpKQogICAgICAgICByZXR1
cm47CiAKICAgICBzaHV0RG93bigpOwpAQCAtNDI3LDEyICs0MjcsMTAgQEAgdm9pZCBXZWJQcm9j
ZXNzUHJveHk6OmdldFBsdWdpblByb2Nlc3NDbwogfQogI2VuZGlmCiAKLSNpZiBFTkFCTEUoTkVU
V09SS19QUk9DRVNTKQogdm9pZCBXZWJQcm9jZXNzUHJveHk6OmdldE5ldHdvcmtQcm9jZXNzQ29u
bmVjdGlvbihQYXNzUmVmUHRyPE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6OkdldE5ldHdvcmtQ
cm9jZXNzQ29ubmVjdGlvbjo6RGVsYXllZFJlcGx5PiByZXBseSkKIHsKICAgICBtX3Byb2Nlc3NQ
b29sLT5nZXROZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24ocmVwbHkpOwogfQotI2VuZGlmIC8vIEVO
QUJMRShORVRXT1JLX1BST0NFU1MpCiAKICNpZiBFTkFCTEUoREFUQUJBU0VfUFJPQ0VTUykKIHZv
aWQgV2ViUHJvY2Vzc1Byb3h5OjpnZXREYXRhYmFzZVByb2Nlc3NDb25uZWN0aW9uKFBhc3NSZWZQ
dHI8TWVzc2FnZXM6OldlYlByb2Nlc3NQcm94eTo6R2V0RGF0YWJhc2VQcm9jZXNzQ29ubmVjdGlv
bjo6RGVsYXllZFJlcGx5PiByZXBseSkKQEAgLTcwMiwxOCArNzAwLDYgQEAgdm9pZCBXZWJQcm9j
ZXNzUHJveHk6OnVwZGF0ZVRleHRDaGVja2VyUwogICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQ
cm9jZXNzOjpTZXRUZXh0Q2hlY2tlclN0YXRlKFRleHRDaGVja2VyOjpzdGF0ZSgpKSwgMCk7CiB9
CiAKLURvd25sb2FkUHJveHkqIFdlYlByb2Nlc3NQcm94eTo6Y3JlYXRlRG93bmxvYWRQcm94eShj
b25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCi17Ci0jaWYgRU5BQkxFKE5FVFdPUktfUFJP
Q0VTUykKLSAgICBBU1NFUlQoIW1fcHJvY2Vzc1Bvb2wtPnVzZXNOZXR3b3JrUHJvY2VzcygpKTsK
LSNlbmRpZgotCi0gICAgaWYgKCFtX2Rvd25sb2FkUHJveHlNYXApCi0gICAgICAgIG1fZG93bmxv
YWRQcm94eU1hcCA9IHN0ZDo6bWFrZV91bmlxdWU8RG93bmxvYWRQcm94eU1hcD4odGhpcyk7Ci0K
LSAgICByZXR1cm4gbV9kb3dubG9hZFByb3h5TWFwLT5jcmVhdGVEb3dubG9hZFByb3h5KG1fcHJv
Y2Vzc1Bvb2wsIHJlcXVlc3QpOwotfQotCiB2b2lkIFdlYlByb2Nlc3NQcm94eTo6ZGlkU2F2ZVRv
UGFnZUNhY2hlKCkKIHsKICAgICBtX3Byb2Nlc3NQb29sLT5wcm9jZXNzRGlkQ2FjaGVQYWdlKHRo
aXMpOwpAQCAtOTQ3LDcgKzkzMyw2IEBAIHZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpkaWRDYW5jZWxQ
cm9jZXNzU3UKICAgICBtX3Rocm90dGxlci5kaWRDYW5jZWxQcm9jZXNzU3VzcGVuc2lvbigpOwog
fQogCi0jaWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKIHZvaWQgV2ViUHJvY2Vzc1Byb3h5Ojpy
ZWluc3RhdGVOZXR3b3JrUHJvY2Vzc0Fzc2VydGlvblN0YXRlKE5ldHdvcmtQcm9jZXNzUHJveHkm
IG5ld05ldHdvcmtQcm9jZXNzUHJveHkpCiB7CiAjaWYgUExBVEZPUk0oSU9TKQpAQCAtOTYyLDEx
ICs5NDcsMTAgQEAgdm9pZCBXZWJQcm9jZXNzUHJveHk6OnJlaW5zdGF0ZU5ldHdvcmtQcgogICAg
IFVOVVNFRF9QQVJBTShuZXdOZXR3b3JrUHJvY2Vzc1Byb3h5KTsKICNlbmRpZgogfQotI2VuZGlm
CiAKIHZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpkaWRTZXRBc3NlcnRpb25TdGF0ZShBc3NlcnRpb25T
dGF0ZSBzdGF0ZSkKIHsKLSNpZiBQTEFURk9STShJT1MpICYmIEVOQUJMRShORVRXT1JLX1BST0NF
U1MpCisjaWYgUExBVEZPUk0oSU9TKQogICAgIEFTU0VSVCghbV9iYWNrZ3JvdW5kVG9rZW5Gb3JO
ZXR3b3JrUHJvY2VzcyB8fCAhbV9mb3JlZ3JvdW5kVG9rZW5Gb3JOZXR3b3JrUHJvY2Vzcyk7CiAK
ICAgICBzd2l0Y2ggKHN0YXRlKSB7CkBAIC05NzgsMTQgKzk2MiwxMiBAQCB2b2lkIFdlYlByb2Nl
c3NQcm94eTo6ZGlkU2V0QXNzZXJ0aW9uU3RhCiAgICAgICAgIGJyZWFrOwogCiAgICAgY2FzZSBB
c3NlcnRpb25TdGF0ZTo6QmFja2dyb3VuZDoKLSAgICAgICAgaWYgKHByb2Nlc3NQb29sKCkudXNl
c05ldHdvcmtQcm9jZXNzKCkpCi0gICAgICAgICAgICBtX2JhY2tncm91bmRUb2tlbkZvck5ldHdv
cmtQcm9jZXNzID0gcHJvY2Vzc1Bvb2woKS5lbnN1cmVOZXR3b3JrUHJvY2VzcygpLnRocm90dGxl
cigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCk7CisgICAgICAgIG1fYmFja2dyb3VuZFRva2Vu
Rm9yTmV0d29ya1Byb2Nlc3MgPSBwcm9jZXNzUG9vbCgpLmVuc3VyZU5ldHdvcmtQcm9jZXNzKCku
dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKTsKICAgICAgICAgbV9mb3JlZ3Jv
dW5kVG9rZW5Gb3JOZXR3b3JrUHJvY2VzcyA9IG51bGxwdHI7CiAgICAgICAgIGJyZWFrOwogICAg
IAogICAgIGNhc2UgQXNzZXJ0aW9uU3RhdGU6OkZvcmVncm91bmQ6Ci0gICAgICAgIGlmIChwcm9j
ZXNzUG9vbCgpLnVzZXNOZXR3b3JrUHJvY2VzcygpKQotICAgICAgICAgICAgbV9mb3JlZ3JvdW5k
VG9rZW5Gb3JOZXR3b3JrUHJvY2VzcyA9IHByb2Nlc3NQb29sKCkuZW5zdXJlTmV0d29ya1Byb2Nl
c3MoKS50aHJvdHRsZXIoKS5mb3JlZ3JvdW5kQWN0aXZpdHlUb2tlbigpOworICAgICAgICBtX2Zv
cmVncm91bmRUb2tlbkZvck5ldHdvcmtQcm9jZXNzID0gcHJvY2Vzc1Bvb2woKS5lbnN1cmVOZXR3
b3JrUHJvY2VzcygpLnRocm90dGxlcigpLmZvcmVncm91bmRBY3Rpdml0eVRva2VuKCk7CiAgICAg
ICAgIG1fYmFja2dyb3VuZFRva2VuRm9yTmV0d29ya1Byb2Nlc3MgPSBudWxscHRyOwogICAgICAg
ICBmb3IgKGF1dG8mIHBhZ2UgOiBtX3BhZ2VNYXAudmFsdWVzKCkpCiAgICAgICAgICAgICBwYWdl
LT5wcm9jZXNzV2lsbEJlY29tZUZvcmVncm91bmQoKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmgJKHJldmlzaW9uIDE5MjYwMSkKKysrIFNvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaAkod29ya2luZyBjb3B5KQpAQCAtMTUy
LDkgKzE1Miw3IEBAIHB1YmxpYzoKIAogICAgIFByb2Nlc3NUaHJvdHRsZXImIHRocm90dGxlcigp
IHsgcmV0dXJuIG1fdGhyb3R0bGVyOyB9CiAKLSNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQog
ICAgIHZvaWQgcmVpbnN0YXRlTmV0d29ya1Byb2Nlc3NBc3NlcnRpb25TdGF0ZShOZXR3b3JrUHJv
Y2Vzc1Byb3h5Jik7Ci0jZW5kaWYKIAogcHJpdmF0ZToKICAgICBleHBsaWNpdCBXZWJQcm9jZXNz
UHJveHkoV2ViUHJvY2Vzc1Bvb2wmKTsKQEAgLTE4Niw5ICsxODQsNyBAQCBwcml2YXRlOgogI2lm
IEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJKQogICAgIHZvaWQgZ2V0UGx1Z2luUHJvY2Vzc0Nv
bm5lY3Rpb24odWludDY0X3QgcGx1Z2luUHJvY2Vzc1Rva2VuLCBQYXNzUmVmUHRyPE1lc3NhZ2Vz
OjpXZWJQcm9jZXNzUHJveHk6OkdldFBsdWdpblByb2Nlc3NDb25uZWN0aW9uOjpEZWxheWVkUmVw
bHk+KTsKICNlbmRpZgotI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCiAgICAgdm9pZCBnZXRO
ZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oUGFzc1JlZlB0cjxNZXNzYWdlczo6V2ViUHJvY2Vzc1By
b3h5OjpHZXROZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb246OkRlbGF5ZWRSZXBseT4pOwotI2VuZGlm
CiAjaWYgRU5BQkxFKERBVEFCQVNFX1BST0NFU1MpCiAgICAgdm9pZCBnZXREYXRhYmFzZVByb2Nl
c3NDb25uZWN0aW9uKFBhc3NSZWZQdHI8TWVzc2FnZXM6OldlYlByb2Nlc3NQcm94eTo6R2V0RGF0
YWJhc2VQcm9jZXNzQ29ubmVjdGlvbjo6RGVsYXllZFJlcGx5Pik7CiAjZW5kaWYKQEAgLTI1Myw3
ICsyNDksNyBAQCBwcml2YXRlOgogICAgIGludCBtX251bWJlck9mVGltZXNTdWRkZW5UZXJtaW5h
dGlvbldhc0Rpc2FibGVkOwogICAgIFByb2Nlc3NUaHJvdHRsZXIgbV90aHJvdHRsZXI7CiAgICAg
UHJvY2Vzc1Rocm90dGxlcjo6QmFja2dyb3VuZEFjdGl2aXR5VG9rZW4gbV90b2tlbkZvckhvbGRp
bmdMb2NrZWRGaWxlczsKLSNpZiBQTEFURk9STShJT1MpICYmIEVOQUJMRShORVRXT1JLX1BST0NF
U1MpCisjaWYgUExBVEZPUk0oSU9TKQogICAgIFByb2Nlc3NUaHJvdHRsZXI6OkZvcmVncm91bmRB
Y3Rpdml0eVRva2VuIG1fZm9yZWdyb3VuZFRva2VuRm9yTmV0d29ya1Byb2Nlc3M7CiAgICAgUHJv
Y2Vzc1Rocm90dGxlcjo6QmFja2dyb3VuZEFjdGl2aXR5VG9rZW4gbV9iYWNrZ3JvdW5kVG9rZW5G
b3JOZXR3b3JrUHJvY2VzczsKICNlbmRpZgpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1dlYlByb2Nlc3NQcm94eS5tZXNzYWdlcy5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluCShyZXZpc2lvbiAxOTI2MDEp
CisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmlu
CSh3b3JraW5nIGNvcHkpCkBAIC0zOCw5ICszOCw3IEBAIG1lc3NhZ2VzIC0+IFdlYlByb2Nlc3NQ
cm94eSBMZWdhY3lSZWNlaXYKICAgICBHZXRQbHVnaW5zKGJvb2wgcmVmcmVzaCkgLT4gKFZlY3Rv
cjxXZWJDb3JlOjpQbHVnaW5JbmZvPiBwbHVnaW5zLCBWZWN0b3I8V2ViQ29yZTo6UGx1Z2luSW5m
bz4gYXBwbGljYXRpb25QbHVnaW5zKQogICAgIEdldFBsdWdpblByb2Nlc3NDb25uZWN0aW9uKHVp
bnQ2NF90IHBsdWdpblByb2Nlc3NUb2tlbikgLT4gKElQQzo6QXR0YWNobWVudCBjb25uZWN0aW9u
SGFuZGxlLCBib29sIHN1cHBvcnRzQXN5bmNocm9ub3VzSW5pdGlhbGl6YXRpb24pIERlbGF5ZWQK
ICNlbmRpZgotI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCiAgICAgR2V0TmV0d29ya1Byb2Nl
c3NDb25uZWN0aW9uKCkgLT4gKElQQzo6QXR0YWNobWVudCBjb25uZWN0aW9uSGFuZGxlKSBEZWxh
eWVkCi0jZW5kaWYKICNpZiBFTkFCTEUoREFUQUJBU0VfUFJPQ0VTUykKICAgICBHZXREYXRhYmFz
ZVByb2Nlc3NDb25uZWN0aW9uKCkgLT4gKElQQzo6QXR0YWNobWVudCBjb25uZWN0aW9uSGFuZGxl
KSBEZWxheWVkCiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQVBJ
UHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL0FQSVByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5jcHAJKHJldmlzaW9u
IDE5MjYwMSkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQVBJUHJvY2Vzc1Bvb2xD
b25maWd1cmF0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDEsNyArNDEsNiBAQCBSZWY8UHJv
Y2Vzc1Bvb2xDb25maWd1cmF0aW9uPiBQcm9jZXNzUG9vCiAgICAgYXV0byBjb25maWd1cmF0aW9u
ID0gUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uOjpjcmVhdGUoKTsKIAogICAgIGNvbmZpZ3VyYXRp
b24tPm1fc2hvdWxkSGF2ZUxlZ2FjeURhdGFTdG9yZSA9IHRydWU7Ci0gICAgY29uZmlndXJhdGlv
bi0+bV9wcm9jZXNzTW9kZWwgPSBXZWJLaXQ6OlByb2Nlc3NNb2RlbFNoYXJlZFNlY29uZGFyeVBy
b2Nlc3M7CiAgICAgY29uZmlndXJhdGlvbi0+bV91c2VOZXR3b3JrUHJvY2VzcyA9IGZhbHNlOwog
ICAgIGNvbmZpZ3VyYXRpb24tPm1fY2FjaGVNb2RlbCA9IFdlYktpdDo6Q2FjaGVNb2RlbERvY3Vt
ZW50Vmlld2VyOwogCkBAIC03NCw3ICs3Myw2IEBAIFJlZjxQcm9jZXNzUG9vbENvbmZpZ3VyYXRp
b24+IFByb2Nlc3NQb28KICAgICBhdXRvIGNvcHkgPSB0aGlzLT5jcmVhdGUoKTsKIAogICAgIGNv
cHktPm1fc2hvdWxkSGF2ZUxlZ2FjeURhdGFTdG9yZSA9IHRoaXMtPm1fc2hvdWxkSGF2ZUxlZ2Fj
eURhdGFTdG9yZTsKLSAgICBjb3B5LT5tX3Byb2Nlc3NNb2RlbCA9IHRoaXMtPm1fcHJvY2Vzc01v
ZGVsOwogICAgIGNvcHktPm1fdXNlTmV0d29ya1Byb2Nlc3MgPSB0aGlzLT5tX3VzZU5ldHdvcmtQ
cm9jZXNzOwogICAgIGNvcHktPm1fbWF4aW11bVByb2Nlc3NDb3VudCA9IHRoaXMtPm1fbWF4aW11
bVByb2Nlc3NDb3VudDsKICAgICBjb3B5LT5tX2NhY2hlTW9kZWwgPSB0aGlzLT5tX2NhY2hlTW9k
ZWw7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0FQSVByb2Nlc3NQb29sQ29u
ZmlndXJhdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
QVBJUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmgJKHJldmlzaW9uIDE5MjYwMSkKKysrIFNvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQVBJUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmgJKHdv
cmtpbmcgY29weSkKQEAgLTI4LDcgKzI4LDYgQEAKIAogI2luY2x1ZGUgIkFQSU9iamVjdC5oIgog
I2luY2x1ZGUgIkNhY2hlTW9kZWwuaCIKLSNpbmNsdWRlICJQcm9jZXNzTW9kZWwuaCIKICNpbmNs
dWRlIDx3dGYvUmVmLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogI2luY2x1ZGUgPHd0Zi90
ZXh0L1dURlN0cmluZy5oPgpAQCAtNDgsOSArNDcsNiBAQCBwdWJsaWM6CiAgICAgYm9vbCBzaG91
bGRIYXZlTGVnYWN5RGF0YVN0b3JlKCkgY29uc3QgeyByZXR1cm4gbV9zaG91bGRIYXZlTGVnYWN5
RGF0YVN0b3JlOyB9CiAgICAgdm9pZCBzZXRTaG91bGRIYXZlTGVnYWN5RGF0YVN0b3JlKGJvb2wg
c2hvdWxkSGF2ZUxlZ2FjeURhdGFTdG9yZSkgeyBtX3Nob3VsZEhhdmVMZWdhY3lEYXRhU3RvcmUg
PSBzaG91bGRIYXZlTGVnYWN5RGF0YVN0b3JlOyB9CiAKLSAgICBXZWJLaXQ6OlByb2Nlc3NNb2Rl
bCBwcm9jZXNzTW9kZWwoKSBjb25zdCB7IHJldHVybiBtX3Byb2Nlc3NNb2RlbDsgfQotICAgIHZv
aWQgc2V0UHJvY2Vzc01vZGVsKFdlYktpdDo6UHJvY2Vzc01vZGVsIHByb2Nlc3NNb2RlbCkgeyBt
X3Byb2Nlc3NNb2RlbCA9IHByb2Nlc3NNb2RlbDsgfSAKLQogICAgIGJvb2wgdXNlTmV0d29ya1By
b2Nlc3MoKSBjb25zdCB7IHJldHVybiBtX3VzZU5ldHdvcmtQcm9jZXNzOyB9CiAgICAgdm9pZCBz
ZXRVc2VOZXR3b3JrUHJvY2Vzcyhib29sIHVzZU5ldHdvcmtQcm9jZXNzKSB7IG1fdXNlTmV0d29y
a1Byb2Nlc3MgPSB1c2VOZXR3b3JrUHJvY2VzczsgfSAKIApAQCAtOTYsNyArOTIsNiBAQCBwdWJs
aWM6CiBwcml2YXRlOgogICAgIGJvb2wgbV9zaG91bGRIYXZlTGVnYWN5RGF0YVN0b3JlIHsgZmFs
c2UgfTsKIAotICAgIFdlYktpdDo6UHJvY2Vzc01vZGVsIG1fcHJvY2Vzc01vZGVsIHsgV2ViS2l0
OjpQcm9jZXNzTW9kZWxNdWx0aXBsZVNlY29uZGFyeVByb2Nlc3NlcyB9OwogICAgIGJvb2wgbV91
c2VOZXR3b3JrUHJvY2VzcyB7IHRydWUgfTsKICAgICB1bnNpZ25lZCBtX21heGltdW1Qcm9jZXNz
Q291bnQgeyAwIH07CiAgICAgV2ViS2l0OjpDYWNoZU1vZGVsIG1fY2FjaGVNb2RlbCB7IFdlYktp
dDo6Q2FjaGVNb2RlbFByaW1hcnlXZWJCcm93c2VyIH07CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL0FQSVNlc3Npb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvQVBJU2Vzc2lvbi5jcHAJKHJldmlzaW9uIDE5MjYwMSkKKysrIFNvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQVBJU2Vzc2lvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTI4LDEwICsyOCw4IEBACiAKICNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgogCi0jaWYgRU5BQkxF
KE5FVFdPUktfUFJPQ0VTUykKICNpbmNsdWRlICJOZXR3b3JrUHJvY2Vzc01lc3NhZ2VzLmgiCiAj
aW5jbHVkZSAiV2ViUHJvY2Vzc1Bvb2wuaCIKLSNlbmRpZgogCiBuYW1lc3BhY2UgQVBJIHsKIApA
QCAtODAsMTIgKzc4LDEwIEBAIFdlYkNvcmU6OlNlc3Npb25JRCBTZXNzaW9uOjpnZXRJRCgpIGNv
bnMKIAogU2Vzc2lvbjo6flNlc3Npb24oKQogewotI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1Mp
CiAgICAgaWYgKG1fc2Vzc2lvbklELmlzRXBoZW1lcmFsKCkpIHsKICAgICAgICAgZm9yIChhdXRv
JiBwcm9jZXNzUG9vbCA6IFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OmFsbFByb2Nlc3NQb29scygp
KQogICAgICAgICAgICAgcHJvY2Vzc1Bvb2wtPnNlbmRUb05ldHdvcmtpbmdQcm9jZXNzKE1lc3Nh
Z2VzOjpOZXR3b3JrUHJvY2Vzczo6RGVzdHJveVByaXZhdGVCcm93c2luZ1Nlc3Npb24obV9zZXNz
aW9uSUQpKTsKICAgICB9Ci0jZW5kaWYKIH0KIAogfSAvLyBuYW1lc3BhY2UgQVBJCkluZGV4OiBT
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tBUElDYXN0LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLQVBJQ2FzdC5oCShyZXZpc2lvbiAxOTI2
MDEpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tBUElDYXN0LmgJKHdvcmtp
bmcgY29weSkKQEAgLTMyLDcgKzMyLDYgQEAKICNpbmNsdWRlICJIVFRQQ29va2llQWNjZXB0UG9s
aWN5LmgiCiAjaW5jbHVkZSAiSW5qZWN0ZWRCdW5kbGVIaXRUZXN0UmVzdWx0TWVkaWFUeXBlLmgi
CiAjaW5jbHVkZSAiUGx1Z2luTW9kdWxlSW5mby5oIgotI2luY2x1ZGUgIlByb2Nlc3NNb2RlbC5o
IgogI2luY2x1ZGUgIlJlc291cmNlQ2FjaGVzVG9DbGVhci5oIgogI2luY2x1ZGUgIldLQnVuZGxl
SGl0VGVzdFJlc3VsdC5oIgogI2luY2x1ZGUgIldLQ29udGV4dC5oIgpAQCAtMjMwLDMxICsyMjks
NiBAQCBpbmxpbmUgV0tDYWNoZU1vZGVsIHRvQVBJKENhY2hlTW9kZWwgY2FjCiAgICAgcmV0dXJu
IGtXS0NhY2hlTW9kZWxEb2N1bWVudFZpZXdlcjsKIH0KIAotaW5saW5lIFByb2Nlc3NNb2RlbCB0
b1Byb2Nlc3NNb2RlbChXS1Byb2Nlc3NNb2RlbCB3a1Byb2Nlc3NNb2RlbCkKLXsKLSAgICBzd2l0
Y2ggKHdrUHJvY2Vzc01vZGVsKSB7Ci0gICAgY2FzZSBrV0tQcm9jZXNzTW9kZWxTaGFyZWRTZWNv
bmRhcnlQcm9jZXNzOgotICAgICAgICByZXR1cm4gUHJvY2Vzc01vZGVsU2hhcmVkU2Vjb25kYXJ5
UHJvY2VzczsKLSAgICBjYXNlIGtXS1Byb2Nlc3NNb2RlbE11bHRpcGxlU2Vjb25kYXJ5UHJvY2Vz
c2VzOgotICAgICAgICByZXR1cm4gUHJvY2Vzc01vZGVsTXVsdGlwbGVTZWNvbmRhcnlQcm9jZXNz
ZXM7Ci0gICAgfQotCi0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIFByb2Nl
c3NNb2RlbFNoYXJlZFNlY29uZGFyeVByb2Nlc3M7Ci19Ci0KLWlubGluZSBXS1Byb2Nlc3NNb2Rl
bCB0b0FQSShQcm9jZXNzTW9kZWwgcHJvY2Vzc01vZGVsKQotewotICAgIHN3aXRjaCAocHJvY2Vz
c01vZGVsKSB7Ci0gICAgY2FzZSBQcm9jZXNzTW9kZWxTaGFyZWRTZWNvbmRhcnlQcm9jZXNzOgot
ICAgICAgICByZXR1cm4ga1dLUHJvY2Vzc01vZGVsU2hhcmVkU2Vjb25kYXJ5UHJvY2VzczsKLSAg
ICBjYXNlIFByb2Nlc3NNb2RlbE11bHRpcGxlU2Vjb25kYXJ5UHJvY2Vzc2VzOgotICAgICAgICBy
ZXR1cm4ga1dLUHJvY2Vzc01vZGVsTXVsdGlwbGVTZWNvbmRhcnlQcm9jZXNzZXM7Ci0gICAgfQot
ICAgIAotICAgIHJldHVybiBrV0tQcm9jZXNzTW9kZWxTaGFyZWRTZWNvbmRhcnlQcm9jZXNzOwot
fQotCiBpbmxpbmUgRm9udFNtb290aGluZ0xldmVsIHRvRm9udFNtb290aGluZ0xldmVsKFdLRm9u
dFNtb290aGluZ0xldmVsIHdrTGV2ZWwpCiB7CiAgICAgc3dpdGNoICh3a0xldmVsKSB7CkluZGV4
OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0LmNwcAkocmV2aXNp
b24gMTkyNjAxKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTMyOSwxNiArMzI5LDYgQEAgV0tDYWNoZU1vZGVsIFdLQ29u
dGV4dEdldENhY2hlTW9kZWwoV0tDbwogICAgIHJldHVybiB0b0FQSSh0b0ltcGwoY29udGV4dFJl
ZiktPmNhY2hlTW9kZWwoKSk7CiB9CiAKLXZvaWQgV0tDb250ZXh0U2V0UHJvY2Vzc01vZGVsKFdL
Q29udGV4dFJlZiBjb250ZXh0UmVmLCBXS1Byb2Nlc3NNb2RlbCBwcm9jZXNzTW9kZWwpCi17Ci0g
ICAgdG9JbXBsKGNvbnRleHRSZWYpLT5zZXRQcm9jZXNzTW9kZWwodG9Qcm9jZXNzTW9kZWwocHJv
Y2Vzc01vZGVsKSk7Ci19Ci0KLVdLUHJvY2Vzc01vZGVsIFdLQ29udGV4dEdldFByb2Nlc3NNb2Rl
bChXS0NvbnRleHRSZWYgY29udGV4dFJlZikKLXsKLSAgICByZXR1cm4gdG9BUEkodG9JbXBsKGNv
bnRleHRSZWYpLT5wcm9jZXNzTW9kZWwoKSk7Ci19Ci0KIHZvaWQgV0tDb250ZXh0U2V0TWF4aW11
bU51bWJlck9mUHJvY2Vzc2VzKFdLQ29udGV4dFJlZiBjb250ZXh0UmVmLCB1bnNpZ25lZCBudW1i
ZXJPZlByb2Nlc3NlcykKIHsKICAgICB0b0ltcGwoY29udGV4dFJlZiktPnNldE1heGltdW1OdW1i
ZXJPZlByb2Nlc3NlcyhudW1iZXJPZlByb2Nlc3Nlcyk7CkBAIC01NTQsMTEgKzU0NCw2IEBAIHZv
aWQgV0tDb250ZXh0U2V0SmF2YVNjcmlwdEdhcmJhZ2VDb2xsZWMKICAgICB0b0ltcGwoY29udGV4
dFJlZiktPnNldEphdmFTY3JpcHRHYXJiYWdlQ29sbGVjdG9yVGltZXJFbmFibGVkKGVuYWJsZSk7
CiB9CiAKLXZvaWQgV0tDb250ZXh0U2V0VXNlc05ldHdvcmtQcm9jZXNzKFdLQ29udGV4dFJlZiBj
b250ZXh0UmVmLCBib29sIHVzZXNOZXR3b3JrUHJvY2VzcykKLXsKLSAgICB0b0ltcGwoY29udGV4
dFJlZiktPnNldFVzZXNOZXR3b3JrUHJvY2Vzcyh1c2VzTmV0d29ya1Byb2Nlc3MpOwotfQotCiB2
b2lkIFdLQ29udGV4dFVzZVRlc3RpbmdOZXR3b3JrU2Vzc2lvbihXS0NvbnRleHRSZWYgY29udGV4
dCkKIHsKICAgICB0b0ltcGwoY29udGV4dCktPnVzZVRlc3RpbmdOZXR3b3JrU2Vzc2lvbigpOwpJ
bmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHQuaAkocmV2aXNp
b24gMTkyNjAxKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dC5o
CSh3b3JraW5nIGNvcHkpCkBAIC03NSw2ICs3NSw3IEBAIHR5cGVkZWYgc3RydWN0IFdLQ29udGV4
dENsaWVudFYxIHsKICAgICBXS0NvbnRleHRDb3B5V2ViQ3J5cHRvTWFzdGVyS2V5Q2FsbGJhY2sg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvcHlXZWJDcnlwdG9NYXN0ZXJLZXk7CiB9IFdL
Q29udGV4dENsaWVudFYxOwogCisvLyBGSVhNRTogVGhlc2UgY2FuIGJlIHJlbW92ZWQgb25jZSB3
ZSBhcmUgbm8gbG9uZ2VyIHN1cHBvcnRpbmcgTWF2ZXJpY2tzLgogZW51bSB7CiAgICAga1dLUHJv
Y2Vzc01vZGVsU2hhcmVkU2Vjb25kYXJ5UHJvY2VzcyA9IDAsCiAgICAga1dLUHJvY2Vzc01vZGVs
TXVsdGlwbGVTZWNvbmRhcnlQcm9jZXNzZXMgPSAxCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL0MvbWFjL1dLQ29udGV4dFByaXZhdGVNYWMubW0KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL21hYy9XS0NvbnRleHRQcml2YXRlTWFjLm1tCShy
ZXZpc2lvbiAxOTI2MDEpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvbWFjL1dL
Q29udGV4dFByaXZhdGVNYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTE2NiwxMCArMTY2LDUgQEAg
Ym9vbCBXS0NvbnRleHRTaG91bGRTdWdnZXN0QmxvY2tXZWJHTCgpCiAKIHBpZF90IFdLQ29udGV4
dEdldE5ldHdvcmtQcm9jZXNzSWRlbnRpZmllcihXS0NvbnRleHRSZWYgY29udGV4dFJlZikKIHsK
LSNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQogICAgIHJldHVybiB0b0ltcGwoY29udGV4dFJl
ZiktPm5ldHdvcmtQcm9jZXNzSWRlbnRpZmllcigpOwotI2Vsc2UKLSAgICBVTlVTRURfUEFSQU0o
Y29udGV4dFJlZik7Ci0gICAgcmV0dXJuIDA7Ci0jZW5kaWYKIH0KSW5kZXg6IFNvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzR3JvdXAubW0KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NHcm91cC5tbQkocmV2
aXNpb24gMTkyNjAxKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1By
b2Nlc3NHcm91cC5tbQkod29ya2luZyBjb3B5KQpAQCAtMTkyLDEwICsxOTIsNiBAQCAtIChpZClp
bml0V2l0aEluamVjdGVkQnVuZGxlVVJMOihOU1VSTCAqCiAKICAgICBhdXRvIGNvbmZpZ3VyYXRp
b24gPSBBUEk6OlByb2Nlc3NQb29sQ29uZmlndXJhdGlvbjo6Y3JlYXRlV2l0aExlZ2FjeU9wdGlv
bnMoKTsKICAgICBjb25maWd1cmF0aW9uLT5zZXRJbmplY3RlZEJ1bmRsZVBhdGgoYnVuZGxlVVJM
ID8gU3RyaW5nKGJ1bmRsZVVSTC5wYXRoKSA6IFN0cmluZygpKTsKLSNpZiBQTEFURk9STShJT1Mp
Ci0gICAgY29uZmlndXJhdGlvbi0+c2V0VXNlTmV0d29ya1Byb2Nlc3ModHJ1ZSk7Ci0gICAgY29u
ZmlndXJhdGlvbi0+c2V0UHJvY2Vzc01vZGVsKFByb2Nlc3NNb2RlbE11bHRpcGxlU2Vjb25kYXJ5
UHJvY2Vzc2VzKTsKLSNlbmRpZgogCiAgICAgX3Byb2Nlc3NQb29sID0gV2ViUHJvY2Vzc1Bvb2w6
OmNyZWF0ZShjb25maWd1cmF0aW9uKTsKIApJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29sLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9vbC5tbQkocmV2aXNpb24gMTkyNjAxKQor
KysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29sLm1tCSh3
b3JraW5nIGNvcHkpCkBAIC0zMCw3ICszMCw2IEBACiAKICNpbXBvcnQgIkNhY2hlTW9kZWwuaCIK
ICNpbXBvcnQgIkRvd25sb2FkQ2xpZW50LmgiCi0jaW1wb3J0ICJQcm9jZXNzTW9kZWwuaCIKICNp
bXBvcnQgIlNhbmRib3hVdGlsaXRpZXMuaCIKICNpbXBvcnQgIldLT2JqZWN0LmgiCiAjaW1wb3J0
ICJXZWFrT2JqQ1B0ci5oIgpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwv
ZXdrX2NvbnRleHQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvZWZsL2V3a19jb250ZXh0LmNwcAkocmV2aXNpb24gMTkyNjAxKQorKysgU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2NvbnRleHQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01
NzAsMjkgKzU3MCwxOCBAQCB2b2lkIGV3a19jb250ZXh0X21lc3NhZ2VfZnJvbV9leHRlbnNpb25z
CiAKIEVpbmFfQm9vbCBld2tfY29udGV4dF9wcm9jZXNzX21vZGVsX3NldChFd2tfQ29udGV4dCog
ZXdrQ29udGV4dCwgRXdrX1Byb2Nlc3NfTW9kZWwgcHJvY2Vzc01vZGVsKQogewotI2lmIEVOQUJM
RShORVRXT1JLX1BST0NFU1MpCiAgICAgRVdLX09CSl9HRVRfSU1QTF9PUl9SRVRVUk4oRXdrQ29u
dGV4dCwgZXdrQ29udGV4dCwgaW1wbCwgZmFsc2UpOwogCiAgICAgaW1wbC0+c2V0UHJvY2Vzc01v
ZGVsKHByb2Nlc3NNb2RlbCk7CiAKICAgICByZXR1cm4gdHJ1ZTsKLSNlbHNlCi0gICAgVU5VU0VE
X1BBUkFNKGV3a0NvbnRleHQpOwotICAgIFVOVVNFRF9QQVJBTShwcm9jZXNzTW9kZWwpOwotICAg
IHJldHVybiBmYWxzZTsKLSNlbmRpZgogfQogCiBFd2tfUHJvY2Vzc19Nb2RlbCBld2tfY29udGV4
dF9wcm9jZXNzX21vZGVsX2dldChjb25zdCBFd2tfQ29udGV4dCogZXdrQ29udGV4dCkKIHsKLSNp
ZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQogICAgIEVXS19PQkpfR0VUX0lNUExfT1JfUkVUVVJO
KGNvbnN0IEV3a0NvbnRleHQsIGV3a0NvbnRleHQsIGltcGwsIEVXS19QUk9DRVNTX01PREVMX1NI
QVJFRF9TRUNPTkRBUlkpOwogCiAgICAgcmV0dXJuIGltcGwtPnByb2Nlc3NNb2RlbCgpOwotI2Vs
c2UKLSAgICBVTlVTRURfUEFSQU0oZXdrQ29udGV4dCk7Ci0gICAgcmV0dXJuIEVXS19QUk9DRVNT
X01PREVMX1NIQVJFRF9TRUNPTkRBUlk7Ci0jZW5kaWYKIH0KIAogRXdrX1RMU19FcnJvcl9Qb2xp
Y3kgZXdrX2NvbnRleHRfdGxzX2Vycm9yX3BvbGljeV9nZXQoY29uc3QgRXdrX0NvbnRleHQqIGNv
bnRleHQpCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Bv
b2xDb2NvYS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2Ev
V2ViUHJvY2Vzc1Bvb2xDb2NvYS5tbQkocmV2aXNpb24gMTkyNjAxKQorKysgU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQb29sQ29jb2EubW0JKHdvcmtpbmcgY29weSkK
QEAgLTI2LDYgKzI2LDggQEAKICNpbXBvcnQgImNvbmZpZy5oIgogI2ltcG9ydCAiV2ViUHJvY2Vz
c1Bvb2wuaCIKIAorI2ltcG9ydCAiTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaCIK
KyNpbXBvcnQgIk5ldHdvcmtQcm9jZXNzUHJveHkuaCIKICNpbXBvcnQgIlBsdWdpblByb2Nlc3NN
YW5hZ2VyLmgiCiAjaW1wb3J0ICJTYW5kYm94VXRpbGl0aWVzLmgiCiAjaW1wb3J0ICJUZXh0Q2hl
Y2tlci5oIgpAQCAtNDcsMTEgKzQ5LDYgQEAKICNpbXBvcnQgPFdlYkNvcmUvUnVudGltZUFwcGxp
Y2F0aW9uQ2hlY2tzLmg+CiAjaW1wb3J0IDxzeXMvcGFyYW0uaD4KIAotI2lmIEVOQUJMRShORVRX
T1JLX1BST0NFU1MpCi0jaW1wb3J0ICJOZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5o
IgotI2ltcG9ydCAiTmV0d29ya1Byb2Nlc3NQcm94eS5oIgotI2VuZGlmCi0KICNpZiBQTEFURk9S
TShJT1MpCiAjaW1wb3J0ICJBcmd1bWVudENvZGVyc0NGLmgiCiAjaW1wb3J0ICJXZWJNZW1vcnlQ
cmVzc3VyZUhhbmRsZXJJT1MuaCIKQEAgLTc2LDEwICs3Myw4IEBAIHN0YXRpYyBOU1N0cmluZyAq
V2ViS2l0QXBwbGljYXRpb25EaWRDaGEKIC8vIEZJWE1FOiA8cmRhcjovL3Byb2JsZW0vOTEzODgx
Nz4gLSBBZnRlciB0aGlzICJiYWNrd2FyZHMgY29tcGF0aWJpbGl0eSIgcmFkYXIgaXMgcmVtb3Zl
ZCwgdGhpcyBjb2RlIHNob3VsZCBiZSByZW1vdmVkIHRvIG9ubHkgcmV0dXJuIGFuIGVtcHR5IFN0
cmluZy4KIE5TU3RyaW5nICpXZWJJY29uRGF0YWJhc2VEaXJlY3RvcnlEZWZhdWx0c0tleSA9IEAi
V2ViSWNvbkRhdGFiYXNlRGlyZWN0b3J5RGVmYXVsdHNLZXkiOwogCi0jaWYgRU5BQkxFKE5FVFdP
UktfUFJPQ0VTUykKIHN0YXRpYyBOU1N0cmluZyAqIGNvbnN0IFdlYktpdDJIVFRQUHJveHlEZWZh
dWx0c0tleSA9IEAiV2ViS2l0MkhUVFBQcm94eSI7CiBzdGF0aWMgTlNTdHJpbmcgKiBjb25zdCBX
ZWJLaXQySFRUUFNQcm94eURlZmF1bHRzS2V5ID0gQCJXZWJLaXQySFRUUFNQcm94eSI7Ci0jZW5k
aWYKIAogI2lmIEVOQUJMRShORVRXT1JLX0NBQ0hFKQogc3RhdGljIE5TU3RyaW5nICogY29uc3Qg
V2ViS2l0TmV0d29ya0NhY2hlRW5hYmxlZERlZmF1bHRzS2V5ID0gQCJXZWJLaXROZXR3b3JrQ2Fj
aGVFbmFibGVkIjsKQEAgLTExOSwxMCArMTE0LDggQEAgc3RhdGljIHZvaWQgcmVnaXN0ZXJVc2Vy
RGVmYXVsdHNJZk5lZWRlZAogCiB2b2lkIFdlYlByb2Nlc3NQb29sOjp1cGRhdGVQcm9jZXNzU3Vw
cHJlc3Npb25TdGF0ZSgpCiB7Ci0jaWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKLSAgICBpZiAo
dXNlc05ldHdvcmtQcm9jZXNzKCkgJiYgbV9uZXR3b3JrUHJvY2VzcykKKyAgICBpZiAobV9uZXR3
b3JrUHJvY2VzcykKICAgICAgICAgbV9uZXR3b3JrUHJvY2Vzcy0+c2V0UHJvY2Vzc1N1cHByZXNz
aW9uRW5hYmxlZChwcm9jZXNzU3VwcHJlc3Npb25FbmFibGVkKCkpOwotI2VuZGlmCiAKICNpZiBF
TkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQSSkKICAgICBpZiAoIW1fcHJvY2Vzc1N1cHByZXNzaW9u
RGlzYWJsZWRGb3JQYWdlQ291bnRlci52YWx1ZSgpKQpAQCAtMTk3LDE1ICsxOTAsNiBAQCB2b2lk
IFdlYlByb2Nlc3NQb29sOjpwbGF0Zm9ybUluaXRpYWxpemVXCiAKICAgICBwYXJhbWV0ZXJzLnVp
UHJvY2Vzc0J1bmRsZUlkZW50aWZpZXIgPSBTdHJpbmcoW1tOU0J1bmRsZSBtYWluQnVuZGxlXSBi
dW5kbGVJZGVudGlmaWVyXSk7CiAKLSNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQotICAgIGlm
ICghdXNlc05ldHdvcmtQcm9jZXNzKCkpIHsKLSNlbmRpZgotICAgICAgICBmb3IgKGNvbnN0IGF1
dG8mIHNjaGVtZSA6IGdsb2JhbFVSTFNjaGVtZXNXaXRoQ3VzdG9tUHJvdG9jb2xIYW5kbGVycygp
KQotICAgICAgICAgICAgcGFyYW1ldGVycy51cmxTY2hlbWVzUmVnaXN0ZXJlZEZvckN1c3RvbVBy
b3RvY29scy5hcHBlbmQoc2NoZW1lKTsKLSNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQotICAg
IH0KLSNlbmRpZgotCiAgICAgcGFyYW1ldGVycy5mb250V2hpdGVsaXN0ID0gbV9mb250V2hpdGVs
aXN0OwogCiAgICAgaWYgKG1fYnVuZGxlUGFyYW1ldGVycykgewpAQCAtMjM2LDcgKzIyMCw2IEBA
IHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnBsYXRmb3JtSW5pdGlhbGl6ZVcKICNlbmRpZgogfQogCi0j
aWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnBsYXRmb3Jt
SW5pdGlhbGl6ZU5ldHdvcmtQcm9jZXNzKE5ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJz
JiBwYXJhbWV0ZXJzKQogewogICAgIE5TVVJMQ2FjaGUgKnVybENhY2hlID0gW05TVVJMQ2FjaGUg
c2hhcmVkVVJMQ2FjaGVdOwpAQCAtMjcxLDcgKzI1NCw2IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6
OnBsYXRmb3JtSW5pdGlhbGl6ZU4KICAgICBwYXJhbWV0ZXJzLnVpUHJvY2Vzc0Nvb2tpZVN0b3Jh
Z2VJZGVudGlmaWVyLmFwcGVuZChDRkRhdGFHZXRCeXRlUHRyKGNvb2tpZVN0b3JhZ2VEYXRhLmdl
dCgpKSwgQ0ZEYXRhR2V0TGVuZ3RoKGNvb2tpZVN0b3JhZ2VEYXRhLmdldCgpKSk7CiAjZW5kaWYK
IH0KLSNlbmRpZgogCiB2b2lkIFdlYlByb2Nlc3NQb29sOjpwbGF0Zm9ybUludmFsaWRhdGVDb250
ZXh0KCkKIHsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxv
YWRQcm94eS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Rvd25s
b2Fkcy9Eb3dubG9hZFByb3h5LmNwcAkocmV2aXNpb24gMTkyNjAxKQorKysgU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZFByb3h5LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMzEsMTYgKzMxLDEzIEBACiAjaW5jbHVkZSAiQXV0aGVudGljYXRpb25DaGFsbGVuZ2VQcm94
eS5oIgogI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlICJEb3dubG9hZFByb3h5
TWFwLmgiCisjaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3NNZXNzYWdlcy5oIgorI2luY2x1ZGUgIk5l
dHdvcmtQcm9jZXNzUHJveHkuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzTWVzc2FnZXMuaCIKICNp
bmNsdWRlICJXZWJQcm9jZXNzUG9vbC5oIgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4K
ICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAotI2lmIEVOQUJMRShORVRXT1JLX1BS
T0NFU1MpCi0jaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3NNZXNzYWdlcy5oIgotI2luY2x1ZGUgIk5l
dHdvcmtQcm9jZXNzUHJveHkuaCIKLSNlbmRpZgotCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsK
IAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC03NCwxNSArNzEsOCBAQCB2b2lkIERvd25sb2FkUHJv
eHk6OmNhbmNlbCgpCiAgICAgaWYgKCFtX3Byb2Nlc3NQb29sKQogICAgICAgICByZXR1cm47CiAK
LSNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQotICAgIGlmIChtX3Byb2Nlc3NQb29sLT51c2Vz
TmV0d29ya1Byb2Nlc3MoKSkgewotICAgICAgICBpZiAoTmV0d29ya1Byb2Nlc3NQcm94eSogbmV0
d29ya1Byb2Nlc3MgPSBtX3Byb2Nlc3NQb29sLT5uZXR3b3JrUHJvY2VzcygpKQotICAgICAgICAg
ICAgbmV0d29ya1Byb2Nlc3MtPmNvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6TmV0d29ya1By
b2Nlc3M6OkNhbmNlbERvd25sb2FkKG1fZG93bmxvYWRJRCksIDApOwotICAgICAgICByZXR1cm47
Ci0gICAgfQotI2VuZGlmCi0KLSAgICBtX3Byb2Nlc3NQb29sLT5zZW5kVG9BbGxQcm9jZXNzZXMo
TWVzc2FnZXM6OldlYlByb2Nlc3M6OkNhbmNlbERvd25sb2FkKG1fZG93bmxvYWRJRCkpOworICAg
IGlmIChOZXR3b3JrUHJvY2Vzc1Byb3h5KiBuZXR3b3JrUHJvY2VzcyA9IG1fcHJvY2Vzc1Bvb2wt
Pm5ldHdvcmtQcm9jZXNzKCkpCisgICAgICAgIG5ldHdvcmtQcm9jZXNzLT5jb25uZWN0aW9uKCkt
PnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpDYW5jZWxEb3dubG9hZChtX2Rvd25sb2Fk
SUQpLCAwKTsKIH0KIAogdm9pZCBEb3dubG9hZFByb3h5OjppbnZhbGlkYXRlKCkKSW5kZXg6IFNv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9MYXVuY2hlci9Qcm9jZXNzTGF1bmNoZXIuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9MYXVuY2hlci9Qcm9jZXNzTGF1bmNo
ZXIuY3BwCShyZXZpc2lvbiAxOTI2MDEpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTGF1
bmNoZXIvUHJvY2Vzc0xhdW5jaGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODQsMTAgKzg0LDgg
QEAgY29uc3QgY2hhciogUHJvY2Vzc0xhdW5jaGVyOjpwcm9jZXNzVHlwZQogICAgIGNhc2UgUGx1
Z2luUHJvY2VzczoKICAgICAgICAgcmV0dXJuICJwbHVnaW5wcm9jZXNzIjsKICNlbmRpZgotI2lm
IEVOQUJMRShORVRXT1JLX1BST0NFU1MpCiAgICAgY2FzZSBOZXR3b3JrUHJvY2VzczoKICAgICAg
ICAgcmV0dXJuICJuZXR3b3JrcHJvY2VzcyI7Ci0jZW5kaWYKICNpZiBFTkFCTEUoREFUQUJBU0Vf
UFJPQ0VTUykKICAgICBjYXNlIERhdGFiYXNlUHJvY2VzczoKICAgICAgICAgcmV0dXJuICJkYXRh
YmFzZXByb2Nlc3MiOwpAQCAtMTEyLDEyICsxMTAsMTAgQEAgYm9vbCBQcm9jZXNzTGF1bmNoZXI6
OmdldFByb2Nlc3NUeXBlRnJvbQogICAgIH0KICNlbmRpZgogCi0jaWYgRU5BQkxFKE5FVFdPUktf
UFJPQ0VTUykKICAgICBpZiAoIXN0cmNtcChzdHJpbmcsICJuZXR3b3JrcHJvY2VzcyIpKSB7CiAg
ICAgICAgIHByb2Nlc3NUeXBlID0gTmV0d29ya1Byb2Nlc3M7CiAgICAgICAgIHJldHVybiB0cnVl
OwogICAgIH0KLSNlbmRpZgogCiAjaWYgRU5BQkxFKERBVEFCQVNFX1BST0NFU1MpCiAgICAgaWYg
KCFzdHJjbXAoc3RyaW5nLCAiZGF0YWJhc2Vwcm9jZXNzIikpIHsKSW5kZXg6IFNvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9MYXVuY2hlci9Qcm9jZXNzTGF1bmNoZXIuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTGF1bmNoZXIvUHJvY2Vzc0xhdW5jaGVyLmgJKHJldmlz
aW9uIDE5MjYwMSkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9MYXVuY2hlci9Qcm9jZXNz
TGF1bmNoZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNTAsOSArNTAsNyBAQCBwdWJsaWM6CiAjaWYg
RU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpCiAgICAgICAgIFBsdWdpblByb2Nlc3MsCiAjZW5k
aWYKLSNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQogICAgICAgICBOZXR3b3JrUHJvY2VzcywK
LSNlbmRpZgogI2lmIEVOQUJMRShEQVRBQkFTRV9QUk9DRVNTKQogICAgICAgICBEYXRhYmFzZVBy
b2Nlc3MsCiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9MYXVuY2hlci9l
ZmwvUHJvY2Vzc0xhdW5jaGVyRWZsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvTGF1bmNoZXIvZWZsL1Byb2Nlc3NMYXVuY2hlckVmbC5jcHAJKHJldmlzaW9uIDE5
MjYwMSkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9MYXVuY2hlci9lZmwvUHJvY2Vzc0xh
dW5jaGVyRWZsLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTE0LDExICsxMTQsOSBAQCB2b2lkIFBy
b2Nlc3NMYXVuY2hlcjo6bGF1bmNoUHJvY2VzcygpCiAgICAgICAgIHBsdWdpblBhdGggPSBtX2xh
dW5jaE9wdGlvbnMuZXh0cmFJbml0aWFsaXphdGlvbkRhdGEuZ2V0KCJwbHVnaW4tcGF0aCIpOwog
ICAgICAgICBicmVhazsKICNlbmRpZgotI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCiAgICAg
Y2FzZSBOZXR3b3JrUHJvY2VzczoKICAgICAgICAgZXhlY3V0YWJsZVBhdGggPSBleGVjdXRhYmxl
UGF0aE9mTmV0d29ya1Byb2Nlc3MoKTsKICAgICAgICAgYnJlYWs7Ci0jZW5kaWYKICNpZiBFTkFC
TEUoREFUQUJBU0VfUFJPQ0VTUykKICAgICBjYXNlIERhdGFiYXNlUHJvY2VzczoKICAgICAgICAg
ZXhlY3V0YWJsZVBhdGggPSBleGVjdXRhYmxlUGF0aE9mRGF0YWJhc2VQcm9jZXNzKCk7CkluZGV4
OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTGF1bmNoZXIvZ3RrL1Byb2Nlc3NMYXVuY2hlckd0
ay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0xhdW5jaGVyL2d0
ay9Qcm9jZXNzTGF1bmNoZXJHdGsuY3BwCShyZXZpc2lvbiAxOTI2MDEpCisrKyBTb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvTGF1bmNoZXIvZ3RrL1Byb2Nlc3NMYXVuY2hlckd0ay5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTc2LDExICs3Niw5IEBAIHZvaWQgUHJvY2Vzc0xhdW5jaGVyOjpsYXVuY2hQ
cm9jZXNzKCkKICAgICAgICAgcmVhbFBsdWdpblBhdGggPSBmaWxlU3lzdGVtUmVwcmVzZW50YXRp
b24ocGx1Z2luUGF0aCk7CiAgICAgICAgIGJyZWFrOwogI2VuZGlmCi0jaWYgRU5BQkxFKE5FVFdP
UktfUFJPQ0VTUykKICAgICBjYXNlIE5ldHdvcmtQcm9jZXNzOgogICAgICAgICBleGVjdXRhYmxl
UGF0aCA9IGV4ZWN1dGFibGVQYXRoT2ZOZXR3b3JrUHJvY2VzcygpOwogICAgICAgICBicmVhazsK
LSNlbmRpZgogI2lmIEVOQUJMRShEQVRBQkFTRV9QUk9DRVNTKQogICAgIGNhc2UgRGF0YWJhc2VQ
cm9jZXNzOgogICAgICAgICBleGVjdXRhYmxlUGF0aCA9IGV4ZWN1dGFibGVQYXRoT2ZEYXRhYmFz
ZVByb2Nlc3MoKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9MYXVuY2hlci9tYWMv
UHJvY2Vzc0xhdW5jaGVyTWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9MYXVuY2hlci9tYWMvUHJvY2Vzc0xhdW5jaGVyTWFjLm1tCShyZXZpc2lvbiAxOTI2MDEp
CisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTGF1bmNoZXIvbWFjL1Byb2Nlc3NMYXVuY2hl
ck1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtMTA1LDE0ICsxMDUsMTIgQEAgc3RhdGljIFJldGFp
blB0cjxOU1N0cmluZz4gY29tcHV0ZVByb2NlcwogICAgIH0KICNlbmRpZgogCi0jaWYgRU5BQkxF
KE5FVFdPUktfUFJPQ0VTUykKICAgICBpZiAobGF1bmNoT3B0aW9ucy5wcm9jZXNzVHlwZSA9PSBQ
cm9jZXNzTGF1bmNoZXI6Ok5ldHdvcmtQcm9jZXNzKSB7CiAgICAgICAgIE5TU3RyaW5nICpwcm9j
ZXNzUGF0aCA9IFt3ZWJLaXRCdW5kbGUgcGF0aEZvckF1eGlsaWFyeUV4ZWN1dGFibGU6QCJOZXR3
b3JrUHJvY2Vzcy5hcHAiXTsKICAgICAgICAgTlNTdHJpbmcgKnByb2Nlc3NBcHBFeGVjdXRhYmxl
UGF0aCA9IFtbTlNCdW5kbGUgYnVuZGxlV2l0aFBhdGg6cHJvY2Vzc1BhdGhdIGV4ZWN1dGFibGVQ
YXRoXTsKIAogICAgICAgICByZXR1cm4gW1twcm9jZXNzQXBwRXhlY3V0YWJsZVBhdGggc3RyaW5n
QnlEZWxldGluZ0xhc3RQYXRoQ29tcG9uZW50XSBzdHJpbmdCeUFwcGVuZGluZ1BhdGhDb21wb25l
bnQ6QCJTZWNJdGVtU2hpbS5keWxpYiJdOwogICAgIH0KLSNlbmRpZgogCiAgICAgaWYgKGxhdW5j
aE9wdGlvbnMucHJvY2Vzc1R5cGUgPT0gUHJvY2Vzc0xhdW5jaGVyOjpXZWJQcm9jZXNzKSB7CiAg
ICAgICAgIE5TU3RyaW5nICpwcm9jZXNzUGF0aCA9IFt3ZWJLaXRCdW5kbGUgcGF0aEZvckF1eGls
aWFyeUV4ZWN1dGFibGU6QCJXZWJQcm9jZXNzLmFwcCJdOwpAQCAtMTY3LDEyICsxNjUsMTAgQEAg
c3RhdGljIGNvbnN0IGNoYXIqIHNlcnZpY2VOYW1lKGNvbnN0IFBybwogICAgICAgICBpZiAoZm9y
RGV2ZWxvcG1lbnQpCiAgICAgICAgICAgICByZXR1cm4gImNvbS5hcHBsZS5XZWJLaXQuV2ViQ29u
dGVudC5EZXZlbG9wbWVudCI7CiAgICAgICAgIHJldHVybiAiY29tLmFwcGxlLldlYktpdC5XZWJD
b250ZW50IjsKLSNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQogICAgIGNhc2UgUHJvY2Vzc0xh
dW5jaGVyOjpOZXR3b3JrUHJvY2VzczoKICAgICAgICAgaWYgKGZvckRldmVsb3BtZW50KQogICAg
ICAgICAgICAgcmV0dXJuICJjb20uYXBwbGUuV2ViS2l0Lk5ldHdvcmtpbmcuRGV2ZWxvcG1lbnQi
OwogICAgICAgICByZXR1cm4gImNvbS5hcHBsZS5XZWJLaXQuTmV0d29ya2luZyI7Ci0jZW5kaWYK
ICNpZiBFTkFCTEUoREFUQUJBU0VfUFJPQ0VTUykKICAgICBjYXNlIFByb2Nlc3NMYXVuY2hlcjo6
RGF0YWJhc2VQcm9jZXNzOgogICAgICAgICBpZiAoZm9yRGV2ZWxvcG1lbnQpCkBAIC0yMDYsMTIg
KzIwMiw5IEBAIHN0YXRpYyBib29sIHNob3VsZExlYWtCb29zdChjb25zdCBQcm9jZXMKICAgICAv
LyBPbiBpT1MsIGxlYWsgYSBib29zdCBvbnRvIGFsbCBjaGlsZCBwcm9jZXNzZXMKICAgICBVTlVT
RURfUEFSQU0obGF1bmNoT3B0aW9ucyk7CiAgICAgcmV0dXJuIHRydWU7Ci0jZWxpZiBFTkFCTEUo
TkVUV09SS19QUk9DRVNTKQorI2Vsc2UKICAgICAvLyBPbiBNYWMsIGxlYWsgYSBib29zdCBvbnRv
IHRoZSBOZXR3b3JrUHJvY2Vzcy4KICAgICByZXR1cm4gbGF1bmNoT3B0aW9ucy5wcm9jZXNzVHlw
ZSA9PSBQcm9jZXNzTGF1bmNoZXI6Ok5ldHdvcmtQcm9jZXNzOwotI2Vsc2UKLSAgICBVTlVTRURf
UEFSQU0obGF1bmNoT3B0aW9ucyk7Ci0gICAgcmV0dXJuIGZhbHNlOwogI2VuZGlmCiB9CiAgICAg
CkBAIC00ODMsMTEgKzQ3Niw5IEBAIHN0YXRpYyB2b2lkIGNyZWF0ZVByb2Nlc3MoY29uc3QgUHJv
Y2Vzc0wKICAgICAgICAgcHJvY2Vzc1BhdGggPSBbd2ViS2l0QnVuZGxlIHBhdGhGb3JBdXhpbGlh
cnlFeGVjdXRhYmxlOkAiUGx1Z2luUHJvY2Vzcy5hcHAiXTsKICAgICAgICAgYnJlYWs7CiAjZW5k
aWYKLSNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQogICAgIGNhc2UgUHJvY2Vzc0xhdW5jaGVy
OjpOZXR3b3JrUHJvY2VzczoKICAgICAgICAgcHJvY2Vzc1BhdGggPSBbd2ViS2l0QnVuZGxlIHBh
dGhGb3JBdXhpbGlhcnlFeGVjdXRhYmxlOkAiTmV0d29ya1Byb2Nlc3MuYXBwIl07CiAgICAgICAg
IGJyZWFrOwotI2VuZGlmCiAjaWYgRU5BQkxFKERBVEFCQVNFX1BST0NFU1MpCiAgICAgY2FzZSBQ
cm9jZXNzTGF1bmNoZXI6OkRhdGFiYXNlUHJvY2VzczoKICAgICAgICAgcHJvY2Vzc1BhdGggPSBb
d2ViS2l0QnVuZGxlIHBhdGhGb3JBdXhpbGlhcnlFeGVjdXRhYmxlOkAiRGF0YWJhc2VQcm9jZXNz
LmFwcCJdOwpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1By
b2Nlc3NQcm94eS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL05l
dHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAJKHJldmlzaW9uIDE5MjYwMSkKKysrIFNvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yNiw4ICsyNiw2IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVk
ZSAiTmV0d29ya1Byb2Nlc3NQcm94eS5oIgogCi0jaWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykK
LQogI2luY2x1ZGUgIkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHkuaCIKICNpbmNsdWRlICJD
dXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eU1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiRG93bmxvYWRQ
cm94eU1lc3NhZ2VzLmgiCkBAIC0zNzcsNSArMzc1LDMgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzc1By
b3h5OjpzZXRJc0hvbGRpbmdMbwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQotI2VuZGlm
IC8vIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oCShyZXZpc2lvbiAx
OTI2MDEpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vz
c1Byb3h5LmgJKHdvcmtpbmcgY29weSkKQEAgLTI2LDggKzI2LDYgQEAKICNpZm5kZWYgTmV0d29y
a1Byb2Nlc3NQcm94eV9oCiAjZGVmaW5lIE5ldHdvcmtQcm9jZXNzUHJveHlfaAogCi0jaWYgRU5B
QkxFKE5FVFdPUktfUFJPQ0VTUykKLQogI2luY2x1ZGUgIkNoaWxkUHJvY2Vzc1Byb3h5LmgiCiAj
aW5jbHVkZSAiQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHkuaCIKICNpbmNsdWRlICJQcm9jZXNz
TGF1bmNoZXIuaCIKQEAgLTEzMiw2ICsxMzAsNCBAQCBwcml2YXRlOgogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJLaXQKIAotI2VuZGlmIC8vIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCi0KICNlbmRpZiAv
LyBOZXR3b3JrUHJvY2Vzc1Byb3h5X2gKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9O
ZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkubWVzc2FnZXMuaW4KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5tZXNzYWdl
cy5pbgkocmV2aXNpb24gMTkyNjAxKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL05ldHdv
cmsvTmV0d29ya1Byb2Nlc3NQcm94eS5tZXNzYWdlcy5pbgkod29ya2luZyBjb3B5KQpAQCAtMjAs
OCArMjAsNiBAQAogIyBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQogIyBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogCi0jaWYg
RU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKLQogbWVzc2FnZXMgLT4gTmV0d29ya1Byb2Nlc3NQcm94
eSBMZWdhY3lSZWNlaXZlciB7CiAgICAgRGlkQ3JlYXRlTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MoSVBDOjpBdHRhY2htZW50IGNvbm5lY3Rpb25JZGVudGlmaWVyKQogCkBAIC0zOSw1ICsz
NywzIEBAIG1lc3NhZ2VzIC0+IE5ldHdvcmtQcm9jZXNzUHJveHkgTGVnYWN5UmUKICAgICBMb2dT
YW1wbGVkRGlhZ25vc3RpY01lc3NhZ2VXaXRoUmVzdWx0KHVpbnQ2NF90IHBhZ2VJRCwgU3RyaW5n
IG1lc3NhZ2UsIFN0cmluZyBkZXNjcmlwdGlvbiwgdWludDMyX3QgcmVzdWx0KQogICAgIExvZ1Nh
bXBsZWREaWFnbm9zdGljTWVzc2FnZVdpdGhWYWx1ZSh1aW50NjRfdCBwYWdlSUQsIFN0cmluZyBt
ZXNzYWdlLCBTdHJpbmcgZGVzY3JpcHRpb24sIFN0cmluZyB2YWx1ZSkKIH0KLQotI2VuZGlmIC8v
IEVOQUJMRShORVRXT1JLX1BST0NFU1MpCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
TmV0d29yay9tYWMvTmV0d29ya1Byb2Nlc3NQcm94eU1hYy5tbQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvTmV0d29yay9tYWMvTmV0d29ya1Byb2Nlc3NQcm94eU1hYy5t
bQkocmV2aXNpb24gMTkyNjAxKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL05ldHdvcmsv
bWFjL05ldHdvcmtQcm9jZXNzUHJveHlNYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTI4LDggKzI4
LDYgQEAKIAogI2ltcG9ydCAiTmV0d29ya1Byb2Nlc3NNZXNzYWdlcy5oIgogCi0jaWYgRU5BQkxF
KE5FVFdPUktfUFJPQ0VTUykKLQogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIG5hbWVzcGFj
ZSBXZWJLaXQgewpAQCAtNTksNSArNTcsMyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OnBs
YXRmb3JtR2V0TGF1CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAotCi0jZW5kaWYgLy8gRU5B
QkxFKE5FVFdPUktfUFJPQ0VTUykKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9OZXR3
b3JrL3NvdXAvTmV0d29ya1Byb2Nlc3NQcm94eVNvdXAuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9OZXR3b3JrL3NvdXAvTmV0d29ya1Byb2Nlc3NQcm94eVNvdXAu
Y3BwCShyZXZpc2lvbiAxOTI2MDEpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTmV0d29y
ay9zb3VwL05ldHdvcmtQcm9jZXNzUHJveHlTb3VwLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjQs
OSArMjQsOCBAQAogICovCiAKICNpbmNsdWRlICJjb25maWcuaCIKLSNpZiBFTkFCTEUoTkVUV09S
S19QUk9DRVNTKQotCiAjaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3NQcm94eS5oIgorCiAjaW5jbHVk
ZSA8Z2xpYi5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTQzLDUgKzQyLDMgQEAgdm9pZCBO
ZXR3b3JrUHJvY2Vzc1Byb3h5OjpwbGF0Zm9ybUdldExhdQogfQogCiB9Ci0KLSNlbmRpZiAvLyBF
TkFCTEUoTkVUV09SS19QUk9DRVNTKQpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dl
YnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcAkocmV2aXNpb24g
MTkyNjAxKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVE
YXRhU3RvcmUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05NCwxMiArOTQsMTAgQEAgV2Vic2l0ZURh
dGFTdG9yZTo6fldlYnNpdGVEYXRhU3RvcmUoKQogewogICAgIHBsYXRmb3JtRGVzdHJveSgpOwog
Ci0jaWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKICAgICBpZiAobV9zZXNzaW9uSUQuaXNFcGhl
bWVyYWwoKSkgewogICAgICAgICBmb3IgKGF1dG8mIHByb2Nlc3NQb29sIDogV2ViUHJvY2Vzc1Bv
b2w6OmFsbFByb2Nlc3NQb29scygpKQogICAgICAgICAgICAgcHJvY2Vzc1Bvb2wtPnNlbmRUb05l
dHdvcmtpbmdQcm9jZXNzKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6RGVzdHJveVByaXZhdGVC
cm93c2luZ1Nlc3Npb24obV9zZXNzaW9uSUQpKTsKICAgICB9Ci0jZW5kaWYKIH0KIAogdm9pZCBX
ZWJzaXRlRGF0YVN0b3JlOjpjbG9uZVNlc3Npb25EYXRhKFdlYlBhZ2VQcm94eSYgc291cmNlUGFn
ZSwgV2ViUGFnZVByb3h5JiBuZXdQYWdlKQpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L2d0ay9XZWJQcm9jZXNzUG9vbEd0ay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL2d0ay9XZWJQcm9jZXNzUG9vbEd0ay5jcHAJKHJldmlzaW9uIDE5MjYwMSkKKysr
IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsvV2ViUHJvY2Vzc1Bvb2xHdGsuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zMCw2ICszMCw3IEBACiAKICNpbmNsdWRlICJBUElQcm9jZXNzUG9vbENv
bmZpZ3VyYXRpb24uaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCisjaW5jbHVkZSAiTmV0d29ya1By
b2Nlc3NNZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYkNvb2tpZU1hbmFnZXJQcm94eS5oIgogI2lu
Y2x1ZGUgIldlYkluc3BlY3RvclNlcnZlci5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NDcmVhdGlv
blBhcmFtZXRlcnMuaCIKQEAgLTQxLDEwICs0Miw2IEBACiAjaW5jbHVkZSA8d3RmL2dsaWIvR1Vu
aXF1ZVB0ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KIAotI2lmIEVOQUJMRShO
RVRXT1JLX1BST0NFU1MpCi0jaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3NNZXNzYWdlcy5oIgotI2Vu
ZGlmCi0KIG5hbWVzcGFjZSBXZWJLaXQgewogCiBzdGF0aWMgdm9pZCBpbml0SW5zcGVjdG9yU2Vy
dmVyKCkKQEAgLTk4LDE2ICs5NSw2IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnBsYXRmb3JtSW5p
dGlhbGl6ZVcKICAgICAgICAgcGFyYW1ldGVycy51cmxTY2hlbWVzUmVnaXN0ZXJlZEFzTG9jYWwu
YXBwZW5kKCJyZXNvdXJjZSIpOwogICAgIH0KIAotICAgIGlmICghdXNlc05ldHdvcmtQcm9jZXNz
KCkpIHsKLSAgICAgICAgcGFyYW1ldGVycy51cmxTY2hlbWVzUmVnaXN0ZXJlZEZvckN1c3RvbVBy
b3RvY29scyA9IHN1cHBsZW1lbnQ8V2ViU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXI+
KCktPnJlZ2lzdGVyZWRTY2hlbWVzRm9yQ3VzdG9tUHJvdG9jb2xzKCk7Ci0KLSAgICAgICAgc3Vw
cGxlbWVudDxXZWJDb29raWVNYW5hZ2VyUHJveHk+KCktPmdldENvb2tpZVBlcnNpc3RlbnRTdG9y
YWdlKHBhcmFtZXRlcnMuY29va2llUGVyc2lzdGVudFN0b3JhZ2VQYXRoLCBwYXJhbWV0ZXJzLmNv
b2tpZVBlcnNpc3RlbnRTdG9yYWdlVHlwZSk7Ci0gICAgICAgIHBhcmFtZXRlcnMuY29va2llQWNj
ZXB0UG9saWN5ID0gbV9pbml0aWFsSFRUUENvb2tpZUFjY2VwdFBvbGljeTsKLQotICAgICAgICBw
YXJhbWV0ZXJzLmlnbm9yZVRMU0Vycm9ycyA9IG1faWdub3JlVExTRXJyb3JzOwotICAgICAgICBw
YXJhbWV0ZXJzLmRpc2tDYWNoZURpcmVjdG9yeSA9IG1fY29uZmlndXJhdGlvbi0+ZGlza0NhY2hl
RGlyZWN0b3J5KCk7Ci0gICAgfQotCiAgICAgcGFyYW1ldGVycy5tZW1vcnlDYWNoZURpc2FibGVk
ID0gbV9tZW1vcnlDYWNoZURpc2FibGVkIHx8IGNhY2hlTW9kZWwoKSA9PSBDYWNoZU1vZGVsRG9j
dW1lbnRWaWV3ZXI7CiB9CiAKQEAgLTE0OSwxMyArMTM2LDggQEAgU3RyaW5nIFdlYlByb2Nlc3NQ
b29sOjpsZWdhY3lQbGF0Zm9ybURlZgogdm9pZCBXZWJQcm9jZXNzUG9vbDo6c2V0SWdub3JlVExT
RXJyb3JzKGJvb2wgaWdub3JlVExTRXJyb3JzKQogewogICAgIG1faWdub3JlVExTRXJyb3JzID0g
aWdub3JlVExTRXJyb3JzOwotI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCi0gICAgaWYgKHVz
ZXNOZXR3b3JrUHJvY2VzcygpICYmIG5ldHdvcmtQcm9jZXNzKCkpIHsKKyAgICBpZiAobmV0d29y
a1Byb2Nlc3MoKSkKICAgICAgICAgbmV0d29ya1Byb2Nlc3MoKS0+c2VuZChNZXNzYWdlczo6TmV0
d29ya1Byb2Nlc3M6OlNldElnbm9yZVRMU0Vycm9ycyhtX2lnbm9yZVRMU0Vycm9ycyksIDApOwot
ICAgICAgICByZXR1cm47Ci0gICAgfQotI2VuZGlmCi0gICAgc2VuZFRvQWxsUHJvY2Vzc2VzKE1l
c3NhZ2VzOjpXZWJQcm9jZXNzOjpTZXRJZ25vcmVUTFNFcnJvcnMobV9pZ25vcmVUTFNFcnJvcnMp
KTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3Mvc291cC9XZWJQcm9jZXNzUG9vbFNvdXAuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9zb3VwL1dlYlByb2Nlc3NQb29sU291cC5jcHAJKHJldmlzaW9uIDE5
MjYwMSkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9zb3VwL1dlYlByb2Nlc3NQb29sU291
cC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI0LDcgKzI0LDYgQEAKICAqLwogCiAjaW5jbHVkZSAi
Y29uZmlnLmgiCi0jaWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKICNpbmNsdWRlICJXZWJQcm9j
ZXNzUG9vbC5oIgogCiAjaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMu
aCIKQEAgLTQ3LDUgKzQ2LDMgQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6cGxhdGZvcm1Jbml0aWFs
aXplTgogfQogCiB9Ci0KLSNlbmRpZgpJbmRleDogU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYktp
dDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMTkyNjAxKQorKysgU291cmNl
L1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkp
CkBAIC0xNDYwLDcgKzE0NjAsNiBAQAogCQlCQzU3NTA5ODEyNjhGM0M2MDA2RjBGMTIgLyogV2Vi
UG9wdXBNZW51UHJveHlNYWMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBCQzU3NTA5NjEyNjhGM0M2MDA2RjBGMTIgLyogV2ViUG9wdXBNZW51UHJveHlN
YWMubW0gKi87IH07CiAJCUJDNTc1NjEzMTI2RTAxMzgwMDZGMEYxMiAvKiBBUElFcnJvci5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzU3NTYxMjEy
NkUwMTM4MDA2RjBGMTIgLyogQVBJRXJyb3IuY3BwICovOyB9OwogCQlCQzU5NTQ4OTE1Qzc4Njg1
MDBGRDFFM0UgLyogV2ViS2l0Mi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQkM1OTU0ODgxNUM3ODY4NTAwRkQxRTNFIC8qIFdlYktpdDIuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQlCQzU5NzA3NTExNjU5
MUQwMDA1NTFGQ0EgLyogUHJvY2Vzc01vZGVsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBCQzU5NzA3NDExNjU5MUQwMDA1NTFGQ0EgLyogUHJvY2Vzc01v
ZGVsLmggKi87IH07CiAJCUJDNUM3NUM4MTQ5NTREQTYwMEJDNDc3NSAvKiBXS0Nvbm5lY3Rpb25J
bnRlcm5hbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QkM1Qzc1QzYxNDk1NERBNjAwQkM0Nzc1IC8qIFdLQ29ubmVjdGlvbkludGVybmFsLmggKi87IH07
CiAJCUJDNUQyNEExMTZDQzNCOUUwMDdENTQ2MSAvKiBDaGlsZFByb2Nlc3NNYWluLm1tIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkM1RDI0OUYxNkNDM0I5
RTAwN0Q1NDYxIC8qIENoaWxkUHJvY2Vzc01haW4ubW0gKi87IH07CiAJCUJDNUQyNEEyMTZDQzNC
OUUwMDdENTQ2MSAvKiBDaGlsZFByb2Nlc3NNYWluLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkM1RDI0OUYxNkNDM0I5RTAwN0Q1NDYxIC8qIENoaWxk
UHJvY2Vzc01haW4ubW0gKi87IH07CkBAIC0zNzMyLDcgKzM3MzEsNiBAQAogCQlCQzU3NTA5NjEy
NjhGM0M2MDA2RjBGMTIgLyogV2ViUG9wdXBNZW51UHJveHlNYWMubW0gKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXZWJQb3B1cE1lbnVQcm94eU1hYy5tbTsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkM1NzU2MTIxMjZFMDEzODAwNkYwRjEyIC8qIEFQSUVy
cm9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEFQSUVycm9yLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkM1OTU0ODgxNUM3ODY4NTAwRkQxRTNF
IC8qIFdlYktpdDIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViS2l0Mi5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlCQzU5NzA3NDExNjU5MUQwMDA1NTFGQ0Eg
LyogUHJvY2Vzc01vZGVsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFByb2Nl
c3NNb2RlbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQzVDNzVDNjE0OTU0REE2
MDBCQzQ3NzUgLyogV0tDb25uZWN0aW9uSW50ZXJuYWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gV0tDb25uZWN0aW9uSW50ZXJuYWwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJQkM1RDI0OUYxNkNDM0I5RTAwN0Q1NDYxIC8qIENoaWxkUHJvY2Vzc01haW4ubW0g
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBDaGlsZFByb2Nlc3NNYWlu
Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQzVEMjRCODE2Q0M0MEJCMDA3RDU0
NjEgLyogQmFzZUxlZ2FjeVByb2Nlc3MueGNjb25maWcgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnhjY29uZmlnOyBwYXRoID0gQmFzZUxlZ2Fj
eVByb2Nlc3MueGNjb25maWc7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC02MjM4LDcg
KzYyMzYsNiBAQAogCQkJCTFBQzc1MzdBMTgzQTlGREIwMDcyQ0IxNSAvKiBQYWdlTG9hZFN0YXRl
LmggKi8sCiAJCQkJMzc3MTZBNTkxOTVCOTEwNTAwRUU4QjFCIC8qIFByb2Nlc3NBc3NlcnRpb24u
Y3BwICovLAogCQkJCTg2Rjk1MzYwMThGRjRGRDQwMDFEQjJFRiAvKiBQcm9jZXNzQXNzZXJ0aW9u
LmggKi8sCi0JCQkJQkM1OTcwNzQxMTY1OTFEMDAwNTUxRkNBIC8qIFByb2Nlc3NNb2RlbC5oICov
LAogCQkJCTg2RTY3QTIyMTkwRjQxMTgwMDAwNEFCNyAvKiBQcm9jZXNzVGhyb3R0bGVyLmNwcCAq
LywKIAkJCQk4NkU2N0EyMTE5MEY0MTE4MDAwMDRBQjcgLyogUHJvY2Vzc1Rocm90dGxlci5oICov
LAogCQkJCTgzMDQ4QUU1MUFDQTQ1REMwMDgyQzgzMiAvKiBQcm9jZXNzVGhyb3R0bGVyQ2xpZW50
LmggKi8sCkBAIC03OTg5LDcgKzc5ODYsNiBAQAogCQkJCUUxQ0MxQjkwMTJEN0VBREYwMDYyNTgz
OCAvKiBQcmludEluZm8uaCBpbiBIZWFkZXJzICovLAogCQkJCTg2Rjk1MzY1MThGRjU4RjUwMDFE
QjJFRiAvKiBQcm9jZXNzQXNzZXJ0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzFBN0M1ODEx
MzZFMTlDMDBGQjcxNjcgLyogUHJvY2Vzc0xhdW5jaGVyLmggaW4gSGVhZGVycyAqLywKLQkJCQlC
QzU5NzA3NTExNjU5MUQwMDA1NTFGQ0EgLyogUHJvY2Vzc01vZGVsLmggaW4gSGVhZGVycyAqLywK
IAkJCQk4NkU2N0EyNTE5MTBCOUQxMDAwMDRBQjcgLyogUHJvY2Vzc1Rocm90dGxlci5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJODMwNDhBRTYxQUNBNDVEQzAwODJDODMyIC8qIFByb2Nlc3NUaHJvdHRs
ZXJDbGllbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTJEN0YxMzEwMUE3MDJGQkEwMDlBNkZCRCAv
KiBQcm9jZXNzVHlwZS5oIGluIEhlYWRlcnMgKi8sCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlByb2Nlc3MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUHJvY2Vzcy5jcHAJKHJldmlzaW9uIDE5MjYwMSkKKysrIFNvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM3LDYgKzM3LDcg
QEAKICNpbmNsdWRlICJJbmplY3RlZEJ1bmRsZS5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNp
bmNsdWRlICJOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzc01lc3NhZ2VzLmgiCisjaW5jbHVk
ZSAiTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmgiCiAjaW5jbHVkZSAiUGx1Z2luUHJvY2Vzc0Nv
bm5lY3Rpb25NYW5hZ2VyLmgiCiAjaW5jbHVkZSAiU2Vzc2lvblRyYWNrZXIuaCIKICNpbmNsdWRl
ICJTdGF0aXN0aWNzRGF0YS5oIgpAQCAtNjAsNiArNjEsNyBAQAogI2luY2x1ZGUgIldlYlByb2Nl
c3NNZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NQb29sTWVzc2FnZXMuaCIKICNpbmNs
dWRlICJXZWJQcm9jZXNzUHJveHlNZXNzYWdlcy5oIgorI2luY2x1ZGUgIldlYlJlc291cmNlTG9h
ZFNjaGVkdWxlci5oIgogI2luY2x1ZGUgIldlYnNpdGVEYXRhLmgiCiAjaW5jbHVkZSAiV2Vic2l0
ZURhdGFUeXBlcy5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTTG9jay5oPgpAQCAtMTAx
LDEyICsxMDMsOSBAQAogI2luY2x1ZGUgIk9iakNPYmplY3RHcmFwaC5oIgogI2VuZGlmCiAKLSNp
ZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQogI2lmIFBMQVRGT1JNKENPQ09BKQogI2luY2x1ZGUg
IkNvb2tpZVN0b3JhZ2VTaGltLmgiCiAjZW5kaWYKLSNpbmNsdWRlICJOZXR3b3JrUHJvY2Vzc0Nv
bm5lY3Rpb24uaCIKLSNlbmRpZgogCiAjaWYgRU5BQkxFKFNFQ19JVEVNX1NISU0pCiAjaW5jbHVk
ZSAiU2VjSXRlbVNoaW0uaCIKQEAgLTEyNCwxMCArMTIzLDYgQEAKICNpbmNsdWRlICJXZWJCYXR0
ZXJ5TWFuYWdlci5oIgogI2VuZGlmCiAKLSNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQotI2lu
Y2x1ZGUgIldlYlJlc291cmNlTG9hZFNjaGVkdWxlci5oIgotI2VuZGlmCi0KICNpZiBFTkFCTEUo
UkVNT1RFX0lOU1BFQ1RPUikKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9SZW1vdGVJbnNwZWN0
b3IuaD4KICNlbmRpZgpAQCAtMTYxLDExICsxNTYsOCBAQCBXZWJQcm9jZXNzOjpXZWJQcm9jZXNz
KCkKICAgICAsIG1fZnVsbEtleWJvYXJkQWNjZXNzRW5hYmxlZChmYWxzZSkKICAgICAsIG1fdGV4
dENoZWNrZXJTdGF0ZSgpCiAgICAgLCBtX2ljb25EYXRhYmFzZVByb3h5KG5ldyBXZWJJY29uRGF0
YWJhc2VQcm94eSh0aGlzKSkKLSNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQotICAgICwgbV91
c2VzTmV0d29ya1Byb2Nlc3MoZmFsc2UpCiAgICAgLCBtX3dlYlJlc291cmNlTG9hZFNjaGVkdWxl
cihuZXcgV2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVyKQogICAgICwgbV9kbnNQcmVmZXRjaEh5c3Rl
cmVyaXMoW3RoaXNdKEh5c3RlcmVzaXNTdGF0ZSBzdGF0ZSkgeyBpZiAoc3RhdGUgPT0gSHlzdGVy
ZXNpc1N0YXRlOjpTdG9wcGVkKSBtX2Ruc1ByZWZldGNoZWRIb3N0cy5jbGVhcigpOyB9KQotI2Vu
ZGlmCiAjaWYgRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpCiAgICAgLCBtX3BsdWdpblByb2Nl
c3NDb25uZWN0aW9uTWFuYWdlcihQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbk1hbmFnZXI6OmNyZWF0
ZSgpKQogI2VuZGlmCkBAIC0yNTIsMzQgKzI0NCwxMCBAQCB2b2lkIFdlYlByb2Nlc3M6OmluaXRp
YWxpemVDb25uZWN0aW9uKElQCiAgICAgY29ubmVjdGlvbi0+c2V0T25seVNlbmRNZXNzYWdlc0Fz
RGlzcGF0Y2hXaGVuV2FpdGluZ0ZvclN5bmNSZXBseVdoZW5Qcm9jZXNzaW5nU3VjaEFNZXNzYWdl
KHRydWUpOwogfQogCi12b2lkIFdlYlByb2Nlc3M6OmRpZENyZWF0ZURvd25sb2FkKCkKLXsKLSAg
ICBkaXNhYmxlVGVybWluYXRpb24oKTsKLX0KLQotdm9pZCBXZWJQcm9jZXNzOjpkaWREZXN0cm95
RG93bmxvYWQoKQotewotICAgIGVuYWJsZVRlcm1pbmF0aW9uKCk7Ci19Ci0KLUlQQzo6Q29ubmVj
dGlvbiogV2ViUHJvY2Vzczo6ZG93bmxvYWRQcm94eUNvbm5lY3Rpb24oKQotewotICAgIHJldHVy
biBwYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpOwotfQotCi1BdXRoZW50aWNhdGlvbk1hbmFnZXIm
IFdlYlByb2Nlc3M6OmRvd25sb2Fkc0F1dGhlbnRpY2F0aW9uTWFuYWdlcigpCi17Ci0gICAgcmV0
dXJuICpzdXBwbGVtZW50PEF1dGhlbnRpY2F0aW9uTWFuYWdlcj4oKTsKLX0KLQogdm9pZCBXZWJQ
cm9jZXNzOjppbml0aWFsaXplV2ViUHJvY2VzcyhXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJz
JiYgcGFyYW1ldGVycykKIHsKICAgICBBU1NFUlQobV9wYWdlTWFwLmlzRW1wdHkoKSk7CiAKLSNp
ZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQotICAgIG1fdXNlc05ldHdvcmtQcm9jZXNzID0gcGFy
YW1ldGVycy51c2VzTmV0d29ya1Byb2Nlc3M7Ci0jZW5kaWYKLQogI2lmIE9TKExJTlVYKQogICAg
IFdlYkNvcmU6Ok1lbW9yeVByZXNzdXJlSGFuZGxlcjo6UmVsaWVmTG9nZ2VyOjpzZXRMb2dnaW5n
RW5hYmxlZChwYXJhbWV0ZXJzLnNob3VsZEVuYWJsZU1lbW9yeVByZXNzdXJlUmVsaWVmTG9nZ2lu
Zyk7CiAjZW5kaWYKQEAgLTM1OCwxMyArMzI2LDEwIEBAIHZvaWQgV2ViUHJvY2Vzczo6aW5pdGlh
bGl6ZVdlYlByb2Nlc3MoV2UKICAgICBpZiAocGFyYW1ldGVycy5zaG91bGRVc2VUZXN0aW5nTmV0
d29ya1Nlc3Npb24pCiAgICAgICAgIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c3dpdGNoVG9OZXdU
ZXN0aW5nU2Vzc2lvbigpOwogCi0jaWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKICAgICBlbnN1
cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKTsKIAogI2lmIFBMQVRGT1JNKENPQ09BKQotICAg
IGlmICh1c2VzTmV0d29ya1Byb2Nlc3MoKSkKLSAgICAgICAgQ29va2llU3RvcmFnZVNoaW06OnNp
bmdsZXRvbigpLmluaXRpYWxpemUoKTsKLSNlbmRpZgorICAgIENvb2tpZVN0b3JhZ2VTaGltOjpz
aW5nbGV0b24oKS5pbml0aWFsaXplKCk7CiAjZW5kaWYKICAgICBzZXRUZXJtaW5hdGlvblRpbWVv
dXQocGFyYW1ldGVycy50ZXJtaW5hdGlvblRpbWVvdXQpOwogCkBAIC0zOTYsMTIgKzM2MSw4IEBA
IHZvaWQgV2ViUHJvY2Vzczo6aW5pdGlhbGl6ZVdlYlByb2Nlc3MoV2UKICNlbmRpZgogfQogCi0j
aWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKIHZvaWQgV2ViUHJvY2Vzczo6ZW5zdXJlTmV0d29y
a1Byb2Nlc3NDb25uZWN0aW9uKCkKIHsKLSAgICBpZiAoIW1fdXNlc05ldHdvcmtQcm9jZXNzKQot
ICAgICAgICByZXR1cm47Ci0KICAgICBpZiAobV9uZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24pCiAg
ICAgICAgIHJldHVybjsKIApAQCAtNDIyLDcgKzM4Myw2IEBAIHZvaWQgV2ViUHJvY2Vzczo6ZW5z
dXJlTmV0d29ya1Byb2Nlc3NDb24KICAgICAgICAgcmV0dXJuOwogICAgIG1fbmV0d29ya1Byb2Nl
c3NDb25uZWN0aW9uID0gTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uOjpjcmVhdGUoY29ubmVjdGlv
bklkZW50aWZpZXIpOwogfQotI2VuZGlmIC8vIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCiAKIHZv
aWQgV2ViUHJvY2Vzczo6cmVnaXN0ZXJVUkxTY2hlbWVBc0VtcHR5RG9jdW1lbnQoY29uc3QgU3Ry
aW5nJiB1cmxTY2hlbWUpCiB7CkBAIC01MTEsMTQgKzQ3MSw2IEBAIHZvaWQgV2ViUHJvY2Vzczo6
ZGVzdHJveVByaXZhdGVCcm93c2luZ1MKICNlbmRpZgogfQogCi1Eb3dubG9hZE1hbmFnZXImIFdl
YlByb2Nlc3M6OmRvd25sb2FkTWFuYWdlcigpCi17Ci0gICAgQVNTRVJUKCF1c2VzTmV0d29ya1By
b2Nlc3MoKSk7Ci0KLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8RG93bmxvYWRNYW5hZ2VyPiBk
b3dubG9hZE1hbmFnZXIodGhpcyk7Ci0gICAgcmV0dXJuIGRvd25sb2FkTWFuYWdlcjsKLX0KLQog
I2lmIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJKQogUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25N
YW5hZ2VyJiBXZWJQcm9jZXNzOjpwbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbk1hbmFnZXIoKQogewpA
QCAtNTgxLDcgKzUzMyw2IEBAIHZvaWQgV2ViUHJvY2Vzczo6cmVtb3ZlV2ViUGFnZSh1aW50NjRf
dCAKIGJvb2wgV2ViUHJvY2Vzczo6c2hvdWxkVGVybWluYXRlKCkKIHsKICAgICBBU1NFUlQobV9w
YWdlTWFwLmlzRW1wdHkoKSk7Ci0gICAgQVNTRVJUKHVzZXNOZXR3b3JrUHJvY2VzcygpIHx8ICFk
b3dubG9hZE1hbmFnZXIoKS5pc0Rvd25sb2FkaW5nKCkpOwogCiAgICAgLy8gRklYTUU6IHRoZSBT
aG91bGRUZXJtaW5hdGUgbWVzc2FnZSBzaG91bGQgYWxzbyBzZW5kIHRlcm1pbmF0aW9uIHBhcmFt
ZXRlcnMsIHN1Y2ggYXMgYW55IHNlc3Npb24gY29va2llcyB0aGF0IG5lZWQgdG8gYmUgcHJlc2Vy
dmVkLgogICAgIGJvb2wgc2hvdWxkVGVybWluYXRlID0gZmFsc2U7CkBAIC0xMDI1LDIwICs5NzYs
OCBAQCB2b2lkIFdlYlByb2Nlc3M6OnNldEluamVjdGVkQnVuZGxlUGFyYW1lCiAgICAgaW5qZWN0
ZWRCdW5kbGUtPnNldEJ1bmRsZVBhcmFtZXRlcnModmFsdWUpOwogfQogCi1ib29sIFdlYlByb2Nl
c3M6OnVzZXNOZXR3b3JrUHJvY2VzcygpIGNvbnN0Ci17Ci0jaWYgRU5BQkxFKE5FVFdPUktfUFJP
Q0VTUykKLSAgICByZXR1cm4gbV91c2VzTmV0d29ya1Byb2Nlc3M7Ci0jZWxzZQotICAgIHJldHVy
biBmYWxzZTsKLSNlbmRpZgotfQotCi0jaWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKIE5ldHdv
cmtQcm9jZXNzQ29ubmVjdGlvbiogV2ViUHJvY2Vzczo6bmV0d29ya0Nvbm5lY3Rpb24oKQogewot
ICAgIEFTU0VSVChtX3VzZXNOZXR3b3JrUHJvY2Vzcyk7Ci0KICAgICAvLyBJZiB3ZSd2ZSBsb3N0
IG91ciBjb25uZWN0aW9uIHRvIHRoZSBuZXR3b3JrIHByb2Nlc3MgKGUuZy4gaXQgY3Jhc2hlZCkg
dHJ5IHRvIHJlLWVzdGFibGlzaCBpdC4KICAgICBpZiAoIW1fbmV0d29ya1Byb2Nlc3NDb25uZWN0
aW9uKQogICAgICAgICBlbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKTsKQEAgLTEwNjQs
NyArMTAwMyw2IEBAIFdlYlJlc291cmNlTG9hZFNjaGVkdWxlciYgV2ViUHJvY2Vzczo6d2UKIHsK
ICAgICByZXR1cm4gKm1fd2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVyOwogfQotI2VuZGlmIC8vIEVO
QUJMRUQoTkVUV09SS19QUk9DRVNTKQogCiAjaWYgRU5BQkxFKERBVEFCQVNFX1BST0NFU1MpCiB2
b2lkIFdlYlByb2Nlc3M6OndlYlRvRGF0YWJhc2VQcm9jZXNzQ29ubmVjdGlvbkNsb3NlZChXZWJU
b0RhdGFiYXNlUHJvY2Vzc0Nvbm5lY3Rpb24qIGNvbm5lY3Rpb24pCkBAIC0xMTA4LDI3ICsxMDQ2
LDYgQEAgdm9pZCBXZWJQcm9jZXNzOjplbnN1cmVXZWJUb0RhdGFiYXNlUHJvYwogCiAjZW5kaWYg
Ly8gRU5BQkxFRChEQVRBQkFTRV9QUk9DRVNTKQogCi12b2lkIFdlYlByb2Nlc3M6OmRvd25sb2Fk
UmVxdWVzdChTZXNzaW9uSUQgc2Vzc2lvbklELCB1aW50NjRfdCBkb3dubG9hZElELCB1aW50NjRf
dCBpbml0aWF0aW5nUGFnZUlELCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCi17Ci0g
ICAgV2ViUGFnZSogaW5pdGlhdGluZ1BhZ2UgPSBpbml0aWF0aW5nUGFnZUlEID8gd2ViUGFnZShp
bml0aWF0aW5nUGFnZUlEKSA6IDA7Ci0KLSAgICBSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdFdpdGhP
cmlnaW5hbFVSTCA9IHJlcXVlc3Q7Ci0gICAgaWYgKGluaXRpYXRpbmdQYWdlKQotICAgICAgICBp
bml0aWF0aW5nUGFnZS0+bWFpbkZyYW1lKCktPmxvYWRlcigpLnNldE9yaWdpbmFsVVJMRm9yRG93
bmxvYWRSZXF1ZXN0KHJlcXVlc3RXaXRoT3JpZ2luYWxVUkwpOwotCi0gICAgZG93bmxvYWRNYW5h
Z2VyKCkuc3RhcnREb3dubG9hZChzZXNzaW9uSUQsIGRvd25sb2FkSUQsIHJlcXVlc3RXaXRoT3Jp
Z2luYWxVUkwpOwotfQotCi12b2lkIFdlYlByb2Nlc3M6OnJlc3VtZURvd25sb2FkKHVpbnQ2NF90
IGRvd25sb2FkSUQsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgcmVzdW1lRGF0YSwgY29uc3Qg
U3RyaW5nJiBwYXRoLCBjb25zdCBXZWJLaXQ6OlNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYgc2Fu
ZGJveEV4dGVuc2lvbkhhbmRsZSkKLXsKLSAgICBkb3dubG9hZE1hbmFnZXIoKS5yZXN1bWVEb3du
bG9hZChkb3dubG9hZElELCByZXN1bWVEYXRhLCBwYXRoLCBzYW5kYm94RXh0ZW5zaW9uSGFuZGxl
KTsKLX0KLQotdm9pZCBXZWJQcm9jZXNzOjpjYW5jZWxEb3dubG9hZCh1aW50NjRfdCBkb3dubG9h
ZElEKQotewotICAgIGRvd25sb2FkTWFuYWdlcigpLmNhbmNlbERvd25sb2FkKGRvd25sb2FkSUQp
OwotfQotCiB2b2lkIFdlYlByb2Nlc3M6OnNldEVuaGFuY2VkQWNjZXNzaWJpbGl0eShib29sIGZs
YWcpCiB7CiAgICAgV2ViQ29yZTo6QVhPYmplY3RDYWNoZTo6c2V0RW5oYW5jZWRVc2VySW50ZXJm
YWNlQWNjZXNzaWJpbGl0eShmbGFnKTsKQEAgLTE0NzAsMTggKzEzODcsMTIgQEAgdm9pZCBXZWJQ
cm9jZXNzOjpwcmVmZXRjaEROUyhjb25zdCBTdHJpbgogICAgIGlmIChob3N0bmFtZS5pc0VtcHR5
KCkpCiAgICAgICAgIHJldHVybjsKIAotI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCi0gICAg
aWYgKHVzZXNOZXR3b3JrUHJvY2VzcygpKSB7Ci0gICAgICAgIGlmIChtX2Ruc1ByZWZldGNoZWRI
b3N0cy5hZGQoaG9zdG5hbWUpLmlzTmV3RW50cnkpCi0gICAgICAgICAgICBuZXR3b3JrQ29ubmVj
dGlvbigpLT5jb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzOjpQcmVmZXRjaEROUyhob3N0bmFtZSksIDApOwotICAgICAgICAvLyBUaGUgRE5T
IHByZWZldGNoZWQgaG9zdHMgY2FjaGUgaXMgb25seSB0byBhdm9pZCBhc2tpbmcgZm9yIHRoZSBz
YW1lIGhvc3RzIHRvbyBtYW55IHRpbWVzCi0gICAgICAgIC8vIGluIGEgdmVyeSBzaG9ydCBwZXJp
b2Qgb2YgdGltZSwgcHJvZHVjaW5nIGEgbG90IG9mIElQQyB0cmFmZmljLiBTbyB3ZSBjbGVhciB0
aGlzIGNhY2hlIGFmdGVyCi0gICAgICAgIC8vIHNvbWUgdGltZSBvZiBubyBETlMgcmVxdWVzdHMu
Ci0gICAgICAgIG1fZG5zUHJlZmV0Y2hIeXN0ZXJlcmlzLmltcHVsc2UoKTsKLSAgICAgICAgcmV0
dXJuOwotICAgIH0KLSNlbmRpZgotICAgIFdlYkNvcmU6OnByZWZldGNoRE5TKGhvc3RuYW1lKTsK
KyAgICBpZiAobV9kbnNQcmVmZXRjaGVkSG9zdHMuYWRkKGhvc3RuYW1lKS5pc05ld0VudHJ5KQor
ICAgICAgICBuZXR3b3JrQ29ubmVjdGlvbigpLT5jb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6
Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpQcmVmZXRjaEROUyhob3N0bmFtZSksIDAp
OworICAgIC8vIFRoZSBETlMgcHJlZmV0Y2hlZCBob3N0cyBjYWNoZSBpcyBvbmx5IHRvIGF2b2lk
IGFza2luZyBmb3IgdGhlIHNhbWUgaG9zdHMgdG9vIG1hbnkgdGltZXMKKyAgICAvLyBpbiBhIHZl
cnkgc2hvcnQgcGVyaW9kIG9mIHRpbWUsIHByb2R1Y2luZyBhIGxvdCBvZiBJUEMgdHJhZmZpYy4g
U28gd2UgY2xlYXIgdGhpcyBjYWNoZSBhZnRlcgorICAgIC8vIHNvbWUgdGltZSBvZiBubyBETlMg
cmVxdWVzdHMuCisgICAgbV9kbnNQcmVmZXRjaEh5c3RlcmVyaXMuaW1wdWxzZSgpOwogfQogCiB9
IC8vIG5hbWVzcGFjZSBXZWJLaXQKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UHJvY2Vzcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJv
Y2Vzcy5oCShyZXZpc2lvbiAxOTI2MDEpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlByb2Nlc3MuaAkod29ya2luZyBjb3B5KQpAQCAtMjgsNyArMjgsNiBAQAogCiAjaW5jbHVkZSAi
Q2FjaGVNb2RlbC5oIgogI2luY2x1ZGUgIkNoaWxkUHJvY2Vzcy5oIgotI2luY2x1ZGUgIkRvd25s
b2FkTWFuYWdlci5oIgogI2luY2x1ZGUgIkRyYXdpbmdBcmVhLmgiCiAjaW5jbHVkZSAiUGx1Z2lu
UHJvY2Vzc0Nvbm5lY3Rpb25NYW5hZ2VyLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VDYWNoZXNUb0Ns
ZWFyLmgiCkBAIC03MSw5ICs3MCw5IEBAIHN0cnVjdCBTZWN1cml0eU9yaWdpbkRhdGE7CiAKIG5h
bWVzcGFjZSBXZWJLaXQgewogCi1jbGFzcyBEb3dubG9hZE1hbmFnZXI7CiBjbGFzcyBFdmVudERp
c3BhdGNoZXI7CiBjbGFzcyBJbmplY3RlZEJ1bmRsZTsKK2NsYXNzIE5ldHdvcmtQcm9jZXNzQ29u
bmVjdGlvbjsKIGNsYXNzIE9iakNPYmplY3RHcmFwaDsKIGNsYXNzIFVzZXJEYXRhOwogY2xhc3Mg
V2ViQ29ubmVjdGlvblRvVUlQcm9jZXNzOwpAQCAtODIsMjIgKzgxLDE3IEBAIGNsYXNzIFdlYklj
b25EYXRhYmFzZVByb3h5OwogY2xhc3MgV2ViUGFnZTsKIGNsYXNzIFdlYlBhZ2VHcm91cFByb3h5
OwogY2xhc3MgV2ViUHJvY2Vzc1N1cHBsZW1lbnQ7CitjbGFzcyBXZWJSZXNvdXJjZUxvYWRTY2hl
ZHVsZXI7CiBzdHJ1Y3QgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVyczsKIHN0cnVjdCBXZWJQYWdl
R3JvdXBEYXRhOwogc3RydWN0IFdlYlByZWZlcmVuY2VzU3RvcmU7CiBzdHJ1Y3QgV2ViUHJvY2Vz
c0NyZWF0aW9uUGFyYW1ldGVyczsKIAotI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCi1jbGFz
cyBOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb247Ci1jbGFzcyBXZWJSZXNvdXJjZUxvYWRTY2hlZHVs
ZXI7Ci0jZW5kaWYKLQogI2lmIEVOQUJMRShEQVRBQkFTRV9QUk9DRVNTKQogY2xhc3MgV2ViVG9E
YXRhYmFzZVByb2Nlc3NDb25uZWN0aW9uOwogI2VuZGlmCiAKLWNsYXNzIFdlYlByb2Nlc3MgOiBw
dWJsaWMgQ2hpbGRQcm9jZXNzLCBwcml2YXRlIERvd25sb2FkTWFuYWdlcjo6Q2xpZW50IHsKLSAg
ICBmcmllbmQgY2xhc3MgTmV2ZXJEZXN0cm95ZWQ8RG93bmxvYWRNYW5hZ2VyPjsKK2NsYXNzIFdl
YlByb2Nlc3MgOiBwdWJsaWMgQ2hpbGRQcm9jZXNzIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgV2Vi
UHJvY2VzcyYgc2luZ2xldG9uKCk7CiAKQEAgLTE0Nyw3ICsxNDEsNiBAQCBwdWJsaWM6CiAjZW5k
aWYKICAgICAKICAgICBjb25zdCBUZXh0Q2hlY2tlclN0YXRlJiB0ZXh0Q2hlY2tlclN0YXRlKCkg
Y29uc3QgeyByZXR1cm4gbV90ZXh0Q2hlY2tlclN0YXRlOyB9Ci0gICAgRG93bmxvYWRNYW5hZ2Vy
JiBkb3dubG9hZE1hbmFnZXIoKTsKIAogICAgIHZvaWQgY2xlYXJSZXNvdXJjZUNhY2hlcyhSZXNv
dXJjZUNhY2hlc1RvQ2xlYXIgPSBBbGxSZXNvdXJjZUNhY2hlcyk7CiAgICAgCkBAIC0xNTcsMTMg
KzE1MCw5IEBAIHB1YmxpYzoKIAogICAgIEV2ZW50RGlzcGF0Y2hlciYgZXZlbnREaXNwYXRjaGVy
KCkgeyByZXR1cm4gKm1fZXZlbnREaXNwYXRjaGVyOyB9CiAKLSAgICBib29sIHVzZXNOZXR3b3Jr
UHJvY2VzcygpIGNvbnN0OwotCi0jaWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKICAgICBOZXR3
b3JrUHJvY2Vzc0Nvbm5lY3Rpb24qIG5ldHdvcmtDb25uZWN0aW9uKCk7CiAgICAgdm9pZCBuZXR3
b3JrUHJvY2Vzc0Nvbm5lY3Rpb25DbG9zZWQoTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKik7CiAg
ICAgV2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVyJiB3ZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXIoKTsK
LSNlbmRpZgogCiAjaWYgRU5BQkxFKERBVEFCQVNFX1BST0NFU1MpCiAgICAgdm9pZCB3ZWJUb0Rh
dGFiYXNlUHJvY2Vzc0Nvbm5lY3Rpb25DbG9zZWQoV2ViVG9EYXRhYmFzZVByb2Nlc3NDb25uZWN0
aW9uKik7CkBAIC0yMjIsMTIgKzIxMSw2IEBAIHByaXZhdGU6CiAgICAgV2ViUHJvY2VzcygpOwog
ICAgIH5XZWJQcm9jZXNzKCk7CiAKLSAgICAvLyBEb3dubG9hZE1hbmFnZXI6OkNsaWVudC4KLSAg
ICB2aXJ0dWFsIHZvaWQgZGlkQ3JlYXRlRG93bmxvYWQoKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFs
IHZvaWQgZGlkRGVzdHJveURvd25sb2FkKCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBJUEM6OkNv
bm5lY3Rpb24qIGRvd25sb2FkUHJveHlDb25uZWN0aW9uKCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVh
bCBBdXRoZW50aWNhdGlvbk1hbmFnZXImIGRvd25sb2Fkc0F1dGhlbnRpY2F0aW9uTWFuYWdlcigp
IG92ZXJyaWRlOwotCiAgICAgdm9pZCBpbml0aWFsaXplV2ViUHJvY2VzcyhXZWJQcm9jZXNzQ3Jl
YXRpb25QYXJhbWV0ZXJzJiYpOwogICAgIHZvaWQgcGxhdGZvcm1Jbml0aWFsaXplV2ViUHJvY2Vz
cyhXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzJiYpOwogCkBAIC0zNTksMTQgKzM0MiwxMSBA
QCBwcml2YXRlOgogCiAgICAgV2ViSWNvbkRhdGFiYXNlUHJveHkqIG1faWNvbkRhdGFiYXNlUHJv
eHk7CiAKLSNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQogICAgIHZvaWQgZW5zdXJlTmV0d29y
a1Byb2Nlc3NDb25uZWN0aW9uKCk7CiAgICAgUmVmUHRyPE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlv
bj4gbV9uZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb247Ci0gICAgYm9vbCBtX3VzZXNOZXR3b3JrUHJv
Y2VzczsKICAgICBXZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXIqIG1fd2ViUmVzb3VyY2VMb2FkU2No
ZWR1bGVyOwogICAgIEhhc2hTZXQ8U3RyaW5nPiBtX2Ruc1ByZWZldGNoZWRIb3N0czsKICAgICBX
ZWJDb3JlOjpIeXN0ZXJlc2lzQWN0aXZpdHkgbV9kbnNQcmVmZXRjaEh5c3RlcmVyaXM7Ci0jZW5k
aWYKIAogI2lmIEVOQUJMRShEQVRBQkFTRV9QUk9DRVNTKQogICAgIHZvaWQgZW5zdXJlV2ViVG9E
YXRhYmFzZVByb2Nlc3NDb25uZWN0aW9uKCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCShyZXZpc2lvbiAxOTI2MDEpCisrKyBT
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMuaW4JKHdvcmtpbmcg
Y29weSkKQEAgLTYyLDEyICs2Miw2IEBAIG1lc3NhZ2VzIC0+IFdlYlByb2Nlc3MgTGVnYWN5UmVj
ZWl2ZXIgewogICAgIHZvaWQgU3RhcnRNZW1vcnlTYW1wbGVyKFdlYktpdDo6U2FuZGJveEV4dGVu
c2lvbjo6SGFuZGxlIHNhbXBsZUxvZ0ZpbGVIYW5kbGUsIFN0cmluZyBzYW1wbGVMb2dGaWxlUGF0
aCwgZG91YmxlIGludGVydmFsKTsKICAgICB2b2lkIFN0b3BNZW1vcnlTYW1wbGVyKCk7CiAKLSAg
ICAjIERvd25sb2Fkcy4gVGhpcyBzaG91bGQgcmVhbGx5IGJlIGluIGEgRG93bmxvYWQubWVzc2Fn
ZXMuaW4sIGJ1dCBpdCBzZWVtZWQgdW5uZWNlc3NhcnkgdG8gY3JlYXRlIGEgbmV3IGZpbGUganVz
dCBmb3IKLSAgICAjIHRocmVlIG1lc3NhZ2VzLgotICAgIERvd25sb2FkUmVxdWVzdChXZWJDb3Jl
OjpTZXNzaW9uSUQgc2Vzc2lvbklELCB1aW50NjRfdCBkb3dubG9hZElELCB1aW50NjRfdCBpbml0
aWF0aW5nUGFnZUlELCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdCkKLSAgICBSZXN1
bWVEb3dubG9hZCh1aW50NjRfdCBkb3dubG9hZElELCBJUEM6OkRhdGFSZWZlcmVuY2UgcmVzdW1l
RGF0YSwgU3RyaW5nIHBhdGgsIFdlYktpdDo6U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlIHNhbmRi
b3hFeHRlbnNpb25IYW5kbGUpCi0gICAgQ2FuY2VsRG93bmxvYWQodWludDY0X3QgZG93bmxvYWRJ
RCkKLQogICAgIFNldFRleHRDaGVja2VyU3RhdGUoc3RydWN0IFdlYktpdDo6VGV4dENoZWNrZXJT
dGF0ZSB0ZXh0Q2hlY2tlclN0YXRlKQogCiAgICAgU2V0RW5oYW5jZWRBY2Nlc3NpYmlsaXR5KGJv
b2wgZmxhZykKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvRmlsZUFQSS9CbG9iUmVn
aXN0cnlQcm94eS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9G
aWxlQVBJL0Jsb2JSZWdpc3RyeVByb3h5LmNwcAkocmV2aXNpb24gMTkyNjAxKQorKysgU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9GaWxlQVBJL0Jsb2JSZWdpc3RyeVByb3h5LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMjYsOCArMjYsNiBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUg
IkJsb2JSZWdpc3RyeVByb3h5LmgiCiAKLSNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQotCiAj
aW5jbHVkZSAiTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3NNZXNzYWdlcy5oIgogI2luY2x1
ZGUgIk5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5oIgogI2luY2x1ZGUgIldlYkNvcmVBcmd1bWVu
dENvZGVycy5oIgpAQCAtNDAsOCArMzgsNiBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogdm9pZCBC
bG9iUmVnaXN0cnlQcm94eTo6cmVnaXN0ZXJGaWxlQmxvYlVSTChjb25zdCBXZWJDb3JlOjpVUkwm
IHVybCwgUGFzc1JlZlB0cjxCbG9iRGF0YUZpbGVSZWZlcmVuY2U+IGZpbGUsIGNvbnN0IFN0cmlu
ZyYgY29udGVudFR5cGUpCiB7Ci0gICAgQVNTRVJUKFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnVz
ZXNOZXR3b3JrUHJvY2VzcygpKTsKLQogICAgIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSBleHRl
bnNpb25IYW5kbGU7CiAKICAgICAvLyBGaWxlIHBhdGggY2FuIGJlIGVtcHR5IHdoZW4gc3VibWl0
dGluZyBhIGZvcm0gZmlsZSBpbnB1dCB3aXRob3V0IGEgZmlsZSwgc2VlIGJ1ZyAxMTE3NzguCkBA
IC01MywzNiArNDksMjYgQEAgdm9pZCBCbG9iUmVnaXN0cnlQcm94eTo6cmVnaXN0ZXJGaWxlQmxv
YgogCiB2b2lkIEJsb2JSZWdpc3RyeVByb3h5OjpyZWdpc3RlckJsb2JVUkwoY29uc3QgVVJMJiB1
cmwsIFZlY3RvcjxCbG9iUGFydD4gYmxvYlBhcnRzLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBl
KQogewotICAgIEFTU0VSVChXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS51c2VzTmV0d29ya1Byb2Nl
c3MoKSk7Ci0KICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5uZXR3b3JrQ29ubmVjdGlvbigp
LT5jb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzOjpSZWdpc3RlckJsb2JVUkwodXJsLCBibG9iUGFydHMsIGNvbnRlbnRUeXBlKSwgMCk7CiB9
CiAKIHZvaWQgQmxvYlJlZ2lzdHJ5UHJveHk6OnJlZ2lzdGVyQmxvYlVSTChjb25zdCBVUkwmIHVy
bCwgY29uc3QgVVJMJiBzcmNVUkwpCiB7Ci0gICAgQVNTRVJUKFdlYlByb2Nlc3M6OnNpbmdsZXRv
bigpLnVzZXNOZXR3b3JrUHJvY2VzcygpKTsKLQogICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigp
Lm5ldHdvcmtDb25uZWN0aW9uKCktPmNvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6TmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OlJlZ2lzdGVyQmxvYlVSTEZyb21VUkwodXJsLCBzcmNV
UkwpLCAwKTsKIH0KIAogdm9pZCBCbG9iUmVnaXN0cnlQcm94eTo6dW5yZWdpc3RlckJsb2JVUkwo
Y29uc3QgVVJMJiB1cmwpCiB7Ci0gICAgQVNTRVJUKFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnVz
ZXNOZXR3b3JrUHJvY2VzcygpKTsKLQogICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLm5ldHdv
cmtDb25uZWN0aW9uKCktPmNvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6TmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3M6OlVucmVnaXN0ZXJCbG9iVVJMKHVybCksIDApOwogfQogCiB2b2lk
IEJsb2JSZWdpc3RyeVByb3h5OjpyZWdpc3RlckJsb2JVUkxGb3JTbGljZShjb25zdCBVUkwmIHVy
bCwgY29uc3QgVVJMJiBzcmNVUkwsIGxvbmcgbG9uZyBzdGFydCwgbG9uZyBsb25nIGVuZCkKIHsK
LSAgICBBU1NFUlQoV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkudXNlc05ldHdvcmtQcm9jZXNzKCkp
OwotCiAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkubmV0d29ya0Nvbm5lY3Rpb24oKS0+Y29u
bmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6
UmVnaXN0ZXJCbG9iVVJMRm9yU2xpY2UodXJsLCBzcmNVUkwsIHN0YXJ0LCBlbmQpLCAwKTsKIH0K
IAogdW5zaWduZWQgbG9uZyBsb25nIEJsb2JSZWdpc3RyeVByb3h5OjpibG9iU2l6ZShjb25zdCBV
UkwmIHVybCkKIHsKLSAgICBBU1NFUlQoV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkudXNlc05ldHdv
cmtQcm9jZXNzKCkpOwotCiAgICAgdWludDY0X3QgcmVzdWx0U2l6ZTsKICAgICBpZiAoIVdlYlBy
b2Nlc3M6OnNpbmdsZXRvbigpLm5ldHdvcmtDb25uZWN0aW9uKCktPmNvbm5lY3Rpb24oKS0+c2Vu
ZFN5bmMoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpCbG9iU2l6ZSh1
cmwpLCBNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkJsb2JTaXplOjpS
ZXBseShyZXN1bHRTaXplKSwgMCkpCiAgICAgICAgIHJldHVybiAwOwpAQCAtOTAsNSArNzYsMyBA
QCB1bnNpZ25lZCBsb25nIGxvbmcgQmxvYlJlZ2lzdHJ5UHJveHk6OmJsCiB9CiAKIH0KLQotI2Vu
ZGlmIC8vIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL0ZpbGVBUEkvQmxvYlJlZ2lzdHJ5UHJveHkuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL0ZpbGVBUEkvQmxvYlJlZ2lzdHJ5UHJveHkuaAkocmV2aXNpb24g
MTkyNjAxKQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9GaWxlQVBJL0Jsb2JSZWdpc3Ry
eVByb3h5LmgJKHdvcmtpbmcgY29weSkKQEAgLTI2LDggKzI2LDYgQEAKICNpZm5kZWYgQmxvYlJl
Z2lzdHJ5UHJveHlfaAogI2RlZmluZSBCbG9iUmVnaXN0cnlQcm94eV9oCiAKLSNpZiBFTkFCTEUo
TkVUV09SS19QUk9DRVNTKQotCiAjaW5jbHVkZSA8V2ViQ29yZS9CbG9iUmVnaXN0cnkuaD4KIAog
bmFtZXNwYWNlIFdlYktpdCB7CkBAIC00NCw2ICs0Miw0IEBAIHB1YmxpYzoKIAogfQogCi0jZW5k
aWYgLy8gRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKLQogI2VuZGlmIC8vIEJsb2JSZWdpc3RyeVBy
b3h5X2gKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJv
Y2Vzc0Nvbm5lY3Rpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCShyZXZpc2lvbiAxOTI2MDEp
CisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25u
ZWN0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzcsOCArMzcsNiBAQAogI2luY2x1ZGUgPFdl
YkNvcmUvU2Vzc2lvbklELmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TaGFyZWRCdWZmZXIuaD4KIAot
I2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCi0KIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwog
CiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTk4LDUgKzk2LDMgQEAgdm9pZCBOZXR3b3JrUHJvY2Vz
c0Nvbm5lY3Rpb246OmRpZENhY2hlUgogI2VuZGlmCiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAot
Ci0jZW5kaWYgLy8gRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKSW5kZXg6IFNvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25u
ZWN0aW9uLmgJKHJldmlzaW9uIDE5MjYwMSkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
TmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uaAkod29ya2luZyBjb3B5KQpAQCAtMzEs
OCArMzEsNiBAQAogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL3Rl
eHQvV1RGU3RyaW5nLmg+CiAKLSNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQotCiBuYW1lc3Bh
Y2UgSVBDIHsKIGNsYXNzIERhdGFSZWZlcmVuY2U7CiB9CkBAIC04Miw3ICs4MCw0IEBAIHByaXZh
dGU6CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCi0jZW5kaWYgLy8gRU5BQkxFKE5FVFdPUktf
UFJPQ0VTUykKLQotCiAjZW5kaWYgLy8gTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uX2gKSW5kZXg6
IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rp
b24ubWVzc2FnZXMuaW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9O
ZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5tZXNzYWdlcy5pbgkocmV2aXNpb24gMTky
NjAxKQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNz
Q29ubmVjdGlvbi5tZXNzYWdlcy5pbgkod29ya2luZyBjb3B5KQpAQCAtMjAsOCArMjAsNiBAQAog
IyBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQogIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogCi0jaWYgRU5BQkxFKE5FVFdP
UktfUFJPQ0VTUykKLQogbWVzc2FnZXMgLT4gTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uIExlZ2Fj
eVJlY2VpdmVyIHsKIAogI2lmIEVOQUJMRShTSEFSRUFCTEVfUkVTT1VSQ0UpCkBAIC0yOSw1ICsy
NywzIEBAIG1lc3NhZ2VzIC0+IE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbiBMZWcKICNlbmRpZgog
CiB9Ci0KLSNlbmRpZiAvLyBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQpJbmRleDogU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZFNjaGVkdWxlci5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNl
TG9hZFNjaGVkdWxlci5jcHAJKHJldmlzaW9uIDE5MjYwMSkKKysrIFNvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXIuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC01Miw4ICs1Miw2IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9TdWJyZXNvdXJjZUxvYWRl
ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KIAotI2lmIEVOQUJMRShORVRXT1JL
X1BST0NFU1MpCi0KIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBuYW1lc3BhY2UgV2ViS2l0
IHsKQEAgLTI4Niw1ICsyODQsMyBAQCB2b2lkIFdlYlJlc291cmNlTG9hZFNjaGVkdWxlcjo6bmV0
d29ya1ByCiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAotCi0jZW5kaWYgLy8gRU5BQkxFKE5F
VFdPUktfUFJPQ0VTUykKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvTmV0d29yay9X
ZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVyLmgJKHJldmlzaW9uIDE5
MjYwMSkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxv
YWRTY2hlZHVsZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzIsOCArMzIsNiBAQAogI2luY2x1ZGUg
PFdlYkNvcmUvUmVzb3VyY2VMb2FkZXIuaD4KICNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgogCi0j
aWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKLQogbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNz
IE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbjsKQEAgLTc3LDYgKzc1LDQgQEAgcHJpdmF0ZToKIAog
fSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKLSNlbmRpZiAvLyBFTkFCTEUoTkVUV09SS19QUk9DRVNT
KQotCiAjZW5kaWYgLy8gV2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVyX2gKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVy
LmNwcAkocmV2aXNpb24gMTkyNjAxKQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9OZXR3
b3JrL1dlYlJlc291cmNlTG9hZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjYsOCArMjYsNiBA
QAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIldlYlJlc291cmNlTG9hZGVyLmgiCiAK
LSNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQotCiAjaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5o
IgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rp
b24uaCIKQEAgLTIyMSw1ICsyMTksMyBAQCB2b2lkIFdlYlJlc291cmNlTG9hZGVyOjpjYW5BdXRo
ZW50aWNhdGVBCiAjZW5kaWYKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KLSNlbmRpZiAvLyBF
TkFCTEUoTkVUV09SS19QUk9DRVNTKQpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9O
ZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmgJKHJldmlzaW9uIDE5MjYwMSkK
KysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5o
CSh3b3JraW5nIGNvcHkpCkBAIC0yNiw4ICsyNiw2IEBACiAjaWZuZGVmIFdlYlJlc291cmNlTG9h
ZGVyX2gKICNkZWZpbmUgV2ViUmVzb3VyY2VMb2FkZXJfaAogCi0jaWYgRU5BQkxFKE5FVFdPUktf
UFJPQ0VTUykKLQogI2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIKICNpbmNsdWRlICJNZXNzYWdlU2Vu
ZGVyLmgiCiAjaW5jbHVkZSAiU2hhcmVhYmxlUmVzb3VyY2UuaCIKQEAgLTk0LDYgKzkyLDQgQEAg
cHJpdmF0ZToKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKLSNlbmRpZiAvLyBFTkFCTEUoTkVU
V09SS19QUk9DRVNTKQotCiAjZW5kaWYgLy8gV2ViUmVzb3VyY2VMb2FkZXJfaApJbmRleDogU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLm1lc3NhZ2Vz
LmluCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvTmV0d29yay9XZWJS
ZXNvdXJjZUxvYWRlci5tZXNzYWdlcy5pbgkocmV2aXNpb24gMTkyNjAxKQorKysgU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLm1lc3NhZ2VzLmluCSh3
b3JraW5nIGNvcHkpCkBAIC0yMCw4ICsyMCw2IEBACiAjIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCiAj
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCiAKLSNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQotCiBtZXNzYWdlcyAt
PiBXZWJSZXNvdXJjZUxvYWRlciBMZWdhY3lSZWNlaXZlciB7CiAgICAgV2lsbFNlbmRSZXF1ZXN0
KFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCByZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJlc3Bv
bnNlIHJlZGlyZWN0UmVzcG9uc2UpCiAgICAgRGlkU2VuZERhdGEodWludDY0X3QgYnl0ZXNTZW50
LCB1aW50NjRfdCB0b3RhbEJ5dGVzVG9CZVNlbnQpCkBAIC0zOSw1ICszNywzIEBAIG1lc3NhZ2Vz
IC0+IFdlYlJlc291cmNlTG9hZGVyIExlZ2FjeVJlY2UKICAgICBEaWRSZWNlaXZlUmVzb3VyY2Uo
V2ViS2l0OjpTaGFyZWFibGVSZXNvdXJjZTo6SGFuZGxlIHJlc291cmNlLCBkb3VibGUgZmluaXNo
VGltZSkKICNlbmRpZgogfQotCi0jZW5kaWYgLy8gRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZUJy
b3dzZXJGdW5jcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Q
bHVnaW5zL05ldHNjYXBlL05ldHNjYXBlQnJvd3NlckZ1bmNzLmNwcAkocmV2aXNpb24gMTkyNjAx
KQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBl
QnJvd3NlckZ1bmNzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTA1MywxMSArMTA1Myw3IEBAIHN0
YXRpYyB2b2lkIGluaXRpYWxpemVCcm93c2VyRnVuY3MoTlBOZXQKICAgICBuZXRzY2FwZUZ1bmNz
LnBvcHVwY29udGV4dG1lbnUgPSAwOwogICAgIG5ldHNjYXBlRnVuY3MuY29udmVydHBvaW50ID0g
MDsKICNlbmRpZgotI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCiAgICAgbmV0c2NhcGVGdW5j
cy51cmxyZWRpcmVjdHJlc3BvbnNlID0gTlBOX1VSTFJlZGlyZWN0UmVzcG9uc2U7Ci0jZWxzZQot
ICAgIG5ldHNjYXBlRnVuY3MudXJscmVkaXJlY3RyZXNwb25zZSA9IDA7Ci0jZW5kaWYKIH0KICAg
ICAKIE5QTmV0c2NhcGVGdW5jcyogbmV0c2NhcGVCcm93c2VyRnVuY3MoKQpJbmRleDogU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUv
TmV0c2NhcGVQbHVnaW4uY3BwCShyZXZpc2lvbiAxOTI2MDEpCisrKyBTb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4uY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC00MDAsMTYgKzQwMCwxMiBAQCBib29sIE5ldHNjYXBlUGx1Z2luOjpnZXRBdXRoZW50
aWNhdGlvbkluCiAKIHZvaWQgTmV0c2NhcGVQbHVnaW46OnJlZ2lzdGVyUmVkaXJlY3QoTmV0c2Nh
cGVQbHVnaW5TdHJlYW0qIHN0cmVhbSwgY29uc3QgVVJMJiByZXF1ZXN0VVJMLCBpbnQgcmVkaXJl
Y3RSZXNwb25zZVN0YXR1cywgdm9pZCogbm90aWZpY2F0aW9uRGF0YSkKIHsKLSNpZiBFTkFCTEUo
TkVUV09SS19QUk9DRVNTKQogICAgIC8vIE5QUF9VUkxSZWRpcmVjdE5vdGlmeSBtYXkgc3luY2hy
b25vdXNseSByZXF1ZXN0IHRoaXMgc3RyZWFtIGJhY2sgb3V0LCBzbyBzZXQgaXQgZmlyc3QKICAg
ICBtX3JlZGlyZWN0cy5zZXQobm90aWZpY2F0aW9uRGF0YSwgc3RkOjptYWtlX3BhaXIoc3RyZWFt
LCByZXF1ZXN0VVJMLnN0cmluZygpKSk7CiAgICAgaWYgKCFOUFBfVVJMUmVkaXJlY3ROb3RpZnko
cmVxdWVzdFVSTC5zdHJpbmcoKS51dGY4KCkuZGF0YSgpLCByZWRpcmVjdFJlc3BvbnNlU3RhdHVz
LCBub3RpZmljYXRpb25EYXRhKSkgewogICAgICAgICBtX3JlZGlyZWN0cy50YWtlKG5vdGlmaWNh
dGlvbkRhdGEpOwogICAgICAgICBjb250cm9sbGVyKCktPmNvbnRpbnVlU3RyZWFtTG9hZChzdHJl
YW0tPnN0cmVhbUlEKCkpOwogICAgIH0KLSNlbHNlCi0gICAgY29udHJvbGxlcigpLT5jb250aW51
ZVN0cmVhbUxvYWQoc3RyZWFtLT5zdHJlYW1JRCgpKTsKLSNlbmRpZgogfQogCiB2b2lkIE5ldHNj
YXBlUGx1Z2luOjp1cmxSZWRpcmVjdFJlc3BvbnNlKHZvaWQqIG5vdGlmeURhdGEsIGJvb2wgYWxs
b3cpCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBs
YXRmb3JtU3RyYXRlZ2llcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwCShyZXZpc2lvbiAx
OTI2MDEpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBs
YXRmb3JtU3RyYXRlZ2llcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2LDkgKzI2LDEyIEBACiAj
aW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgiCiAK
KyNpbmNsdWRlICJCbG9iUmVnaXN0cnlQcm94eS5oIgogI2luY2x1ZGUgIkJsb2NraW5nUmVzcG9u
c2VNYXAuaCIKICNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiSGFuZ0RldGVj
dGlvbkRpc2FibGVyLmgiCisjaW5jbHVkZSAiTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3NN
ZXNzYWdlcy5oIgorI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5oIgogI2luY2x1
ZGUgIk5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmgiCiAjaW5jbHVkZSAiUGx1Z2luSW5m
b1N0b3JlLmgiCiAjaW5jbHVkZSAiU2Vzc2lvblRyYWNrZXIuaCIKQEAgLTQ0LDYgKzQ3LDcgQEAK
ICNpbmNsdWRlICJXZWJQYXN0ZWJvYXJkUHJveHlNZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYlBy
b2Nlc3MuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzUHJveHlNZXNzYWdlcy5oIgorI2luY2x1ZGUg
IldlYlJlc291cmNlTG9hZFNjaGVkdWxlci5oIgogI2luY2x1ZGUgPFdlYkNvcmUvQ29sb3IuaD4K
ICNpbmNsdWRlIDxXZWJDb3JlL0RvY3VtZW50TG9hZGVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9J
REJGYWN0b3J5QmFja2VuZEludGVyZmFjZS5oPgpAQCAtNjMsMTMgKzY3LDYgQEAKICNpbmNsdWRl
IDxXZWJDb3JlL1VSTC5oPgogI2luY2x1ZGUgPHd0Zi9BdG9taWNzLmg+CiAKLSNpZiBFTkFCTEUo
TkVUV09SS19QUk9DRVNTKQotI2luY2x1ZGUgIkJsb2JSZWdpc3RyeVByb3h5LmgiCi0jaW5jbHVk
ZSAiTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3NNZXNzYWdlcy5oIgotI2luY2x1ZGUgIk5l
dHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5oIgotI2luY2x1ZGUgIldlYlJlc291cmNlTG9hZFNjaGVk
dWxlci5oIgotI2VuZGlmCi0KIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBuYW1lc3BhY2Ug
V2ViS2l0IHsKQEAgLTExMiwxMTQgKzEwOSw1NiBAQCBQbHVnaW5TdHJhdGVneSogV2ViUGxhdGZv
cm1TdHJhdGVnaWVzOjpjCiAKIFN0cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNvb2tpZXNG
b3JET00oY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBVUkwmIGZp
cnN0UGFydHksIGNvbnN0IFVSTCYgdXJsKQogewotI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1Mp
CiAgICAgYXV0byYgd2ViUHJvY2VzcyA9IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpOwotICAgIGlm
ICh3ZWJQcm9jZXNzLnVzZXNOZXR3b3JrUHJvY2VzcygpKSB7Ci0gICAgICAgIFN0cmluZyByZXN1
bHQ7Ci0gICAgICAgIGlmICghd2ViUHJvY2Vzcy5uZXR3b3JrQ29ubmVjdGlvbigpLT5jb25uZWN0
aW9uKCktPnNlbmRTeW5jKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6
Q29va2llc0ZvckRPTShTZXNzaW9uVHJhY2tlcjo6c2Vzc2lvbklEKHNlc3Npb24pLCBmaXJzdFBh
cnR5LCB1cmwpLCBNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkNvb2tp
ZXNGb3JET006OlJlcGx5KHJlc3VsdCksIDApKQotICAgICAgICAgICAgcmV0dXJuIFN0cmluZygp
OwotICAgICAgICByZXR1cm4gcmVzdWx0OwotICAgIH0KLSNlbmRpZgotCi0gICAgcmV0dXJuIFdl
YkNvcmU6OmNvb2tpZXNGb3JET00oc2Vzc2lvbiwgZmlyc3RQYXJ0eSwgdXJsKTsKKyAgICBTdHJp
bmcgcmVzdWx0OworICAgIGlmICghd2ViUHJvY2Vzcy5uZXR3b3JrQ29ubmVjdGlvbigpLT5jb25u
ZWN0aW9uKCktPnNlbmRTeW5jKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vz
czo6Q29va2llc0ZvckRPTShTZXNzaW9uVHJhY2tlcjo6c2Vzc2lvbklEKHNlc3Npb24pLCBmaXJz
dFBhcnR5LCB1cmwpLCBNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkNv
b2tpZXNGb3JET006OlJlcGx5KHJlc3VsdCksIDApKQorICAgICAgICByZXR1cm4gU3RyaW5nKCk7
CisgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAogdm9pZCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnNl
dENvb2tpZXNGcm9tRE9NKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29u
c3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBjb29raWVT
dHJpbmcpCiB7Ci0jaWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKICAgICBhdXRvJiB3ZWJQcm9j
ZXNzID0gV2ViUHJvY2Vzczo6c2luZ2xldG9uKCk7Ci0gICAgaWYgKHdlYlByb2Nlc3MudXNlc05l
dHdvcmtQcm9jZXNzKCkpIHsKLSAgICAgICAgd2ViUHJvY2Vzcy5uZXR3b3JrQ29ubmVjdGlvbigp
LT5jb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzOjpTZXRDb29raWVzRnJvbURPTShTZXNzaW9uVHJhY2tlcjo6c2Vzc2lvbklEKHNlc3Npb24p
LCBmaXJzdFBhcnR5LCB1cmwsIGNvb2tpZVN0cmluZyksIDApOwotICAgICAgICByZXR1cm47Ci0g
ICAgfQotI2VuZGlmCi0KLSAgICBXZWJDb3JlOjpzZXRDb29raWVzRnJvbURPTShzZXNzaW9uLCBm
aXJzdFBhcnR5LCB1cmwsIGNvb2tpZVN0cmluZyk7CisgICAgd2ViUHJvY2Vzcy5uZXR3b3JrQ29u
bmVjdGlvbigpLT5jb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzOjpTZXRDb29raWVzRnJvbURPTShTZXNzaW9uVHJhY2tlcjo6c2Vzc2lvbklE
KHNlc3Npb24pLCBmaXJzdFBhcnR5LCB1cmwsIGNvb2tpZVN0cmluZyksIDApOwogfQogCiBib29s
IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y29va2llc0VuYWJsZWQoY29uc3QgTmV0d29ya1N0b3Jh
Z2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFVSTCYgdXJs
KQogewotI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCi0gICAgYXV0byYgd2ViUHJvY2VzcyA9
IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpOwotICAgIGlmICh3ZWJQcm9jZXNzLnVzZXNOZXR3b3Jr
UHJvY2VzcygpKSB7Ci0gICAgICAgIGJvb2wgcmVzdWx0OwotICAgICAgICBpZiAoIXdlYlByb2Nl
c3MubmV0d29ya0Nvbm5lY3Rpb24oKS0+Y29ubmVjdGlvbigpLT5zZW5kU3luYyhNZXNzYWdlczo6
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkNvb2tpZXNFbmFibGVkKFNlc3Npb25UcmFj
a2VyOjpzZXNzaW9uSUQoc2Vzc2lvbiksIGZpcnN0UGFydHksIHVybCksIE1lc3NhZ2VzOjpOZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Q29va2llc0VuYWJsZWQ6OlJlcGx5KHJlc3VsdCks
IDApKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICByZXR1cm4gcmVzdWx0Owot
ICAgIH0KLSNlbmRpZgotCi0gICAgcmV0dXJuIFdlYkNvcmU6OmNvb2tpZXNFbmFibGVkKHNlc3Np
b24sIGZpcnN0UGFydHksIHVybCk7CisgICAgYm9vbCByZXN1bHQ7CisgICAgaWYgKCFXZWJQcm9j
ZXNzOjpzaW5nbGV0b24oKS5uZXR3b3JrQ29ubmVjdGlvbigpLT5jb25uZWN0aW9uKCktPnNlbmRT
eW5jKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Q29va2llc0VuYWJs
ZWQoU2Vzc2lvblRyYWNrZXI6OnNlc3Npb25JRChzZXNzaW9uKSwgZmlyc3RQYXJ0eSwgdXJsKSwg
TWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpDb29raWVzRW5hYmxlZDo6
UmVwbHkocmVzdWx0KSwgMCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gcmVz
dWx0OwogfQogCiBTdHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjb29raWVSZXF1ZXN0SGVh
ZGVyRmllbGRWYWx1ZShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0
IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgVVJMJiB1cmwpCiB7Ci0jaWYgRU5BQkxFKE5FVFdPUktf
UFJPQ0VTUykKLSAgICBhdXRvJiB3ZWJQcm9jZXNzID0gV2ViUHJvY2Vzczo6c2luZ2xldG9uKCk7
Ci0gICAgaWYgKHdlYlByb2Nlc3MudXNlc05ldHdvcmtQcm9jZXNzKCkpIHsKLSAgICAgICAgU3Ry
aW5nIHJlc3VsdDsKLSAgICAgICAgaWYgKCF3ZWJQcm9jZXNzLm5ldHdvcmtDb25uZWN0aW9uKCkt
PmNvbm5lY3Rpb24oKS0+c2VuZFN5bmMoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzOjpDb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShTZXNzaW9uVHJhY2tlcjo6c2Vz
c2lvbklEKHNlc3Npb24pLCBmaXJzdFBhcnR5LCB1cmwpLCBNZXNzYWdlczo6TmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3M6OkNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlOjpSZXBseShy
ZXN1bHQpLCAwKSkKLSAgICAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKLSAgICAgICAgcmV0dXJu
IHJlc3VsdDsKLSAgICB9Ci0jZW5kaWYKLQotICAgIHJldHVybiBXZWJDb3JlOjpjb29raWVSZXF1
ZXN0SGVhZGVyRmllbGRWYWx1ZShzZXNzaW9uLCBmaXJzdFBhcnR5LCB1cmwpOworICAgIFN0cmlu
ZyByZXN1bHQ7CisgICAgaWYgKCFXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5uZXR3b3JrQ29ubmVj
dGlvbigpLT5jb25uZWN0aW9uKCktPnNlbmRTeW5jKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2Vzczo6Q29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoU2Vzc2lvblRyYWNr
ZXI6OnNlc3Npb25JRChzZXNzaW9uKSwgZmlyc3RQYXJ0eSwgdXJsKSwgTWVzc2FnZXM6Ok5ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpDb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZTo6
UmVwbHkocmVzdWx0KSwgMCkpCisgICAgICAgIHJldHVybiBTdHJpbmcoKTsKKyAgICByZXR1cm4g
cmVzdWx0OwogfQogCiBib29sIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Z2V0UmF3Q29va2llcyhj
b25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IFVSTCYgZmlyc3RQYXJ0
eSwgY29uc3QgVVJMJiB1cmwsIFZlY3RvcjxDb29raWU+JiByYXdDb29raWVzKQogewotI2lmIEVO
QUJMRShORVRXT1JLX1BST0NFU1MpCi0gICAgYXV0byYgd2ViUHJvY2VzcyA9IFdlYlByb2Nlc3M6
OnNpbmdsZXRvbigpOwotICAgIGlmICh3ZWJQcm9jZXNzLnVzZXNOZXR3b3JrUHJvY2VzcygpKSB7
Ci0gICAgICAgIGlmICghd2ViUHJvY2Vzcy5uZXR3b3JrQ29ubmVjdGlvbigpLT5jb25uZWN0aW9u
KCktPnNlbmRTeW5jKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6R2V0
UmF3Q29va2llcyhTZXNzaW9uVHJhY2tlcjo6c2Vzc2lvbklEKHNlc3Npb24pLCBmaXJzdFBhcnR5
LCB1cmwpLCBNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkdldFJhd0Nv
b2tpZXM6OlJlcGx5KHJhd0Nvb2tpZXMpLCAwKSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
LSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotI2VuZGlmCi0KLSAgICByZXR1cm4gV2ViQ29y
ZTo6Z2V0UmF3Q29va2llcyhzZXNzaW9uLCBmaXJzdFBhcnR5LCB1cmwsIHJhd0Nvb2tpZXMpOwor
ICAgIGlmICghV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkubmV0d29ya0Nvbm5lY3Rpb24oKS0+Y29u
bmVjdGlvbigpLT5zZW5kU3luYyhNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3M6OkdldFJhd0Nvb2tpZXMoU2Vzc2lvblRyYWNrZXI6OnNlc3Npb25JRChzZXNzaW9uKSwgZmly
c3RQYXJ0eSwgdXJsKSwgTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpH
ZXRSYXdDb29raWVzOjpSZXBseShyYXdDb29raWVzKSwgMCkpCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogdm9pZCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmRl
bGV0ZUNvb2tpZShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IFVS
TCYgdXJsLCBjb25zdCBTdHJpbmcmIGNvb2tpZU5hbWUpCiB7Ci0jaWYgRU5BQkxFKE5FVFdPUktf
UFJPQ0VTUykKLSAgICBhdXRvJiB3ZWJQcm9jZXNzID0gV2ViUHJvY2Vzczo6c2luZ2xldG9uKCk7
Ci0gICAgaWYgKHdlYlByb2Nlc3MudXNlc05ldHdvcmtQcm9jZXNzKCkpIHsKLSAgICAgICAgd2Vi
UHJvY2Vzcy5uZXR3b3JrQ29ubmVjdGlvbigpLT5jb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6
Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpEZWxldGVDb29raWUoU2Vzc2lvblRyYWNr
ZXI6OnNlc3Npb25JRChzZXNzaW9uKSwgdXJsLCBjb29raWVOYW1lKSwgMCk7Ci0gICAgICAgIHJl
dHVybjsKLSAgICB9Ci0jZW5kaWYKLQotICAgIFdlYkNvcmU6OmRlbGV0ZUNvb2tpZShzZXNzaW9u
LCB1cmwsIGNvb2tpZU5hbWUpOworICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLm5ldHdvcmtD
b25uZWN0aW9uKCktPmNvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3M6OkRlbGV0ZUNvb2tpZShTZXNzaW9uVHJhY2tlcjo6c2Vzc2lvbklEKHNl
c3Npb24pLCB1cmwsIGNvb2tpZU5hbWUpLCAwKTsKIH0KIAogLy8gTG9hZGVyU3RyYXRlZ3kKIAot
I2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCiBSZXNvdXJjZUxvYWRTY2hlZHVsZXIqIFdlYlBs
YXRmb3JtU3RyYXRlZ2llczo6cmVzb3VyY2VMb2FkU2NoZWR1bGVyKCkKIHsKLSAgICBzdGF0aWMg
UmVzb3VyY2VMb2FkU2NoZWR1bGVyKiBzY2hlZHVsZXI7Ci0gICAgaWYgKCFzY2hlZHVsZXIpIHsK
LSAgICAgICAgYXV0byYgd2ViUHJvY2VzcyA9IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpOwotICAg
ICAgICBpZiAod2ViUHJvY2Vzcy51c2VzTmV0d29ya1Byb2Nlc3MoKSkKLSAgICAgICAgICAgIHNj
aGVkdWxlciA9ICZ3ZWJQcm9jZXNzLndlYlJlc291cmNlTG9hZFNjaGVkdWxlcigpOwotICAgICAg
ICBlbHNlCi0gICAgICAgICAgICBzY2hlZHVsZXIgPSBXZWJDb3JlOjpyZXNvdXJjZUxvYWRTY2hl
ZHVsZXIoKTsKLSAgICB9Ci0gICAgCi0gICAgcmV0dXJuIHNjaGVkdWxlcjsKKyAgICByZXR1cm4g
JldlYlByb2Nlc3M6OnNpbmdsZXRvbigpLndlYlJlc291cmNlTG9hZFNjaGVkdWxlcigpOwogfQog
CiB2b2lkIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6bG9hZFJlc291cmNlU3luY2hyb25vdXNseShO
ZXR3b3JraW5nQ29udGV4dCogY29udGV4dCwgdW5zaWduZWQgbG9uZyByZXNvdXJjZUxvYWRJZGVu
dGlmaWVyLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIFN0b3JlZENyZWRlbnRpYWxz
IHN0b3JlZENyZWRlbnRpYWxzLCBDbGllbnRDcmVkZW50aWFsUG9saWN5IGNsaWVudENyZWRlbnRp
YWxQb2xpY3ksIFJlc291cmNlRXJyb3ImIGVycm9yLCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25z
ZSwgVmVjdG9yPGNoYXI+JiBkYXRhKQogewotICAgIGF1dG8mIHdlYlByb2Nlc3MgPSBXZWJQcm9j
ZXNzOjpzaW5nbGV0b24oKTsKLSAgICBpZiAoIXdlYlByb2Nlc3MudXNlc05ldHdvcmtQcm9jZXNz
KCkpIHsKLSAgICAgICAgTG9hZGVyU3RyYXRlZ3k6OmxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHko
Y29udGV4dCwgcmVzb3VyY2VMb2FkSWRlbnRpZmllciwgcmVxdWVzdCwgc3RvcmVkQ3JlZGVudGlh
bHMsIGNsaWVudENyZWRlbnRpYWxQb2xpY3ksIGVycm9yLCByZXNwb25zZSwgZGF0YSk7Ci0gICAg
ICAgIHJldHVybjsKLSAgICB9Ci0KICAgICBXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0KiB3ZWJD
b250ZXh0ID0gc3RhdGljX2Nhc3Q8V2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dCo+KGNvbnRleHQp
OwogICAgIC8vIEZJWE1FOiBTb21lIGVudGl0aWVzIGluIFdlYkNvcmUgdXNlIFdlYkNvcmUncyAi
RW1wdHlGcmFtZUxvYWRlckNsaWVudCIgaW5zdGVhZCBvZiBoYXZpbmcgYSBwcm9wZXIgV2ViRnJh
bWVMb2FkZXJDbGllbnQuCiAgICAgLy8gRW1wdHlGcmFtZUxvYWRlckNsaWVudCBzaG91bGRuJ3Qg
ZXhpc3QgYW5kIGV2ZXJ5dGhpbmcgc2hvdWxkIGJlIHVzaW5nIGEgV2ViRnJhbWVMb2FkZXJDbGll
bnQsCkBAIC0yNDMsNyArMTgyLDcgQEAgdm9pZCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmxvYWRS
ZXNvdXJjZQogCiAgICAgSGFuZ0RldGVjdGlvbkRpc2FibGVyIGhhbmdEZXRlY3Rpb25EaXNhYmxl
cjsKIAotICAgIGlmICghd2ViUHJvY2Vzcy5uZXR3b3JrQ29ubmVjdGlvbigpLT5jb25uZWN0aW9u
KCktPnNlbmRTeW5jKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6UGVy
Zm9ybVN5bmNocm9ub3VzTG9hZChsb2FkUGFyYW1ldGVycyksIE1lc3NhZ2VzOjpOZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2Vzczo6UGVyZm9ybVN5bmNocm9ub3VzTG9hZDo6UmVwbHkoZXJyb3Is
IHJlc3BvbnNlLCBkYXRhKSwgMCkpIHsKKyAgICBpZiAoIVdlYlByb2Nlc3M6OnNpbmdsZXRvbigp
Lm5ldHdvcmtDb25uZWN0aW9uKCktPmNvbm5lY3Rpb24oKS0+c2VuZFN5bmMoTWVzc2FnZXM6Ok5l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpQZXJmb3JtU3luY2hyb25vdXNMb2FkKGxvYWRQ
YXJhbWV0ZXJzKSwgTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpQZXJm
b3JtU3luY2hyb25vdXNMb2FkOjpSZXBseShlcnJvciwgcmVzcG9uc2UsIGRhdGEpLCAwKSkgewog
ICAgICAgICByZXNwb25zZSA9IFJlc291cmNlUmVzcG9uc2UoKTsKICAgICAgICAgZXJyb3IgPSBp
bnRlcm5hbEVycm9yKHJlcXVlc3QudXJsKCkpOwogICAgIH0KQEAgLTI1NiwxMiArMTk1LDYgQEAg
dm9pZCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNyZWF0ZVBpbmdIYQogICAgIGlmICghbmV0d29y
a2luZ0NvbnRleHQpCiAgICAgICAgIHJldHVybjsKIAotICAgIGF1dG8mIHdlYlByb2Nlc3MgPSBX
ZWJQcm9jZXNzOjpzaW5nbGV0b24oKTsKLSAgICBpZiAoIXdlYlByb2Nlc3MudXNlc05ldHdvcmtQ
cm9jZXNzKCkpIHsKLSAgICAgICAgTG9hZGVyU3RyYXRlZ3k6OmNyZWF0ZVBpbmdIYW5kbGUobmV0
d29ya2luZ0NvbnRleHQsIHJlcXVlc3QsIHNob3VsZFVzZUNyZWRlbnRpYWxTdG9yYWdlKTsKLSAg
ICAgICAgcmV0dXJuOwotICAgIH0KLQogICAgIFdlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQqIHdl
YkNvbnRleHQgPSBzdGF0aWNfY2FzdDxXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0Kj4obmV0d29y
a2luZ0NvbnRleHQpOwogICAgIFdlYkZyYW1lTG9hZGVyQ2xpZW50KiB3ZWJGcmFtZUxvYWRlckNs
aWVudCA9IHdlYkNvbnRleHQtPndlYkZyYW1lTG9hZGVyQ2xpZW50KCk7CiAgICAgV2ViRnJhbWUq
IHdlYkZyYW1lID0gd2ViRnJhbWVMb2FkZXJDbGllbnQgPyB3ZWJGcmFtZUxvYWRlckNsaWVudC0+
d2ViRnJhbWUoKSA6IG51bGxwdHI7CkBAIC0yNzMsMTYgKzIwNiwxMyBAQCB2b2lkIFdlYlBsYXRm
b3JtU3RyYXRlZ2llczo6Y3JlYXRlUGluZ0hhCiAgICAgbG9hZFBhcmFtZXRlcnMuYWxsb3dTdG9y
ZWRDcmVkZW50aWFscyA9IHNob3VsZFVzZUNyZWRlbnRpYWxTdG9yYWdlID8gQWxsb3dTdG9yZWRD
cmVkZW50aWFscyA6IERvTm90QWxsb3dTdG9yZWRDcmVkZW50aWFsczsKICAgICBsb2FkUGFyYW1l
dGVycy5zaG91bGRDbGVhclJlZmVycmVyT25IVFRQU1RvSFRUUFJlZGlyZWN0ID0gbmV0d29ya2lu
Z0NvbnRleHQtPnNob3VsZENsZWFyUmVmZXJyZXJPbkhUVFBTVG9IVFRQUmVkaXJlY3QoKTsKIAot
ICAgIHdlYlByb2Nlc3MubmV0d29ya0Nvbm5lY3Rpb24oKS0+Y29ubmVjdGlvbigpLT5zZW5kKE1l
c3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6TG9hZFBpbmcobG9hZFBhcmFt
ZXRlcnMpLCAwKTsKKyAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5uZXR3b3JrQ29ubmVjdGlv
bigpLT5jb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzOjpMb2FkUGluZyhsb2FkUGFyYW1ldGVycyksIDApOwogfQogCiBCbG9iUmVnaXN0cnkq
IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y3JlYXRlQmxvYlJlZ2lzdHJ5KCkKIHsKLSAgICBpZiAo
IVdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnVzZXNOZXR3b3JrUHJvY2VzcygpKQotICAgICAgICBy
ZXR1cm4gTG9hZGVyU3RyYXRlZ3k6OmNyZWF0ZUJsb2JSZWdpc3RyeSgpOwogICAgIHJldHVybiBu
ZXcgQmxvYlJlZ2lzdHJ5UHJveHk7ICAgIAogfQotI2VuZGlmCiAKIC8vIFBsdWdpblN0cmF0ZWd5
CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxh
dGZvcm1TdHJhdGVnaWVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaAkocmV2aXNpb24gMTkyNjAx
KQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9y
bVN0cmF0ZWdpZXMuaAkod29ya2luZyBjb3B5KQpAQCAtNTksMTIgKzU5LDEwIEBAIHByaXZhdGU6
CiAgICAgdmlydHVhbCB2b2lkIGRlbGV0ZUNvb2tpZShjb25zdCBXZWJDb3JlOjpOZXR3b3JrU3Rv
cmFnZVNlc3Npb24mLCBjb25zdCBXZWJDb3JlOjpVUkwmLCBjb25zdCBTdHJpbmcmKSBvdmVycmlk
ZTsKIAogICAgIC8vIFdlYkNvcmU6OkxvYWRlclN0cmF0ZWd5Ci0jaWYgRU5BQkxFKE5FVFdPUktf
UFJPQ0VTUykKICAgICB2aXJ0dWFsIFdlYkNvcmU6OlJlc291cmNlTG9hZFNjaGVkdWxlciogcmVz
b3VyY2VMb2FkU2NoZWR1bGVyKCkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIGxvYWRSZXNv
dXJjZVN5bmNocm9ub3VzbHkoV2ViQ29yZTo6TmV0d29ya2luZ0NvbnRleHQqLCB1bnNpZ25lZCBs
b25nIHJlc291cmNlTG9hZElkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVz
dCYsIFdlYkNvcmU6OlN0b3JlZENyZWRlbnRpYWxzLCBXZWJDb3JlOjpDbGllbnRDcmVkZW50aWFs
UG9saWN5LCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25z
ZSYsIFZlY3RvcjxjaGFyPiYgZGF0YSkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCBXZWJDb3JlOjpC
bG9iUmVnaXN0cnkqIGNyZWF0ZUJsb2JSZWdpc3RyeSgpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwg
dm9pZCBjcmVhdGVQaW5nSGFuZGxlKFdlYkNvcmU6Ok5ldHdvcmtpbmdDb250ZXh0KiwgV2ViQ29y
ZTo6UmVzb3VyY2VSZXF1ZXN0JiwgYm9vbCBzaG91bGRVc2VDcmVkZW50aWFsU3RvcmFnZSkgb3Zl
cnJpZGU7Ci0jZW5kaWYKIAogICAgIC8vIFdlYkNvcmU6OlBsdWdpblN0cmF0ZWd5CiAgICAgdmly
dHVhbCB2b2lkIHJlZnJlc2hQbHVnaW5zKCkgb3ZlcnJpZGU7CkluZGV4OiBTb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAJKHJldmlzaW9uIDE5MjYwMSkK
KysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTMzLDEwICszMywxMyBAQAogI2luY2x1ZGUgIkluamVjdGVkQnVuZGxlTm9k
ZUhhbmRsZS5oIgogI2luY2x1ZGUgIkluamVjdGVkQnVuZGxlUmFuZ2VIYW5kbGUuaCIKICNpbmNs
dWRlICJJbmplY3RlZEJ1bmRsZVNjcmlwdFdvcmxkLmgiCisjaW5jbHVkZSAiTmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3NNZXNzYWdlcy5oIgorI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzQ29u
bmVjdGlvbi5oIgogI2luY2x1ZGUgIlBsdWdpblZpZXcuaCIKICNpbmNsdWRlICJXS0FQSUNhc3Qu
aCIKICNpbmNsdWRlICJXS0J1bmRsZUFQSUNhc3QuaCIKICNpbmNsdWRlICJXZWJDaHJvbWVDbGll
bnQuaCIKKyNpbmNsdWRlICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIKICNpbmNsdWRlICJXZWJE
b2N1bWVudExvYWRlci5oIgogI2luY2x1ZGUgIldlYlBhZ2UuaCIKICNpbmNsdWRlICJXZWJQYWdl
UHJveHlNZXNzYWdlcy5oIgpAQCAtODEsMTIgKzg0LDYgQEAKICNpbmNsdWRlIDxXZWJDb3JlL0xl
Z2FjeVdlYkFyY2hpdmUuaD4KICNlbmRpZgogCi0jaWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykK
LSNpbmNsdWRlICJOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzc01lc3NhZ2VzLmgiCi0jaW5j
bHVkZSAiTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmgiCi0jaW5jbHVkZSAiV2ViQ29yZUFyZ3Vt
ZW50Q29kZXJzLmgiCi0jZW5kaWYKLQogI2lmbmRlZiBOREVCVUcKICNpbmNsdWRlIDx3dGYvUmVm
Q291bnRlZExlYWtDb3VudGVyLmg+CiAjZW5kaWYKQEAgLTI1NywyMyArMjU0LDkgQEAgdm9pZCBX
ZWJGcmFtZTo6c3RhcnREb3dubG9hZChjb25zdCBXZWJDbwogICAgIG1fcG9saWN5RG93bmxvYWRJ
RCA9IDA7CiAKICAgICBhdXRvJiB3ZWJQcm9jZXNzID0gV2ViUHJvY2Vzczo6c2luZ2xldG9uKCk7
Ci0jaWYgVVNFKE5FVFdPUktfU0VTU0lPTikKLSAgICBBU1NFUlQod2ViUHJvY2Vzcy51c2VzTmV0
d29ya1Byb2Nlc3MoKSk7Ci0jZW5kaWYKICAgICBTZXNzaW9uSUQgc2Vzc2lvbklEID0gcGFnZSgp
ID8gcGFnZSgpLT5zZXNzaW9uSUQoKSA6IFNlc3Npb25JRDo6ZGVmYXVsdFNlc3Npb25JRCgpOwot
I2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCi0gICAgaWYgKHdlYlByb2Nlc3MudXNlc05ldHdv
cmtQcm9jZXNzKCkpIHsKLSAgICAgICAgd2ViUHJvY2Vzcy5uZXR3b3JrQ29ubmVjdGlvbigpLT5j
b25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
OjpTdGFydERvd25sb2FkKHNlc3Npb25JRCwgcG9saWN5RG93bmxvYWRJRCwgcmVxdWVzdCksIDAp
OwotICAgICAgICByZXR1cm47Ci0gICAgfQotI2VuZGlmCi0KLSNpZiBVU0UoTkVUV09SS19TRVNT
SU9OKQotICAgIC8vIFVzaW5nIE5FVFdPUktfU0VTU0lPTiByZXF1aXJlcyB0aGUgdXNlIG9mIGEg
bmV0d29yayBwcm9jZXNzLgotICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0jZWxz
ZQotICAgIHdlYlByb2Nlc3MuZG93bmxvYWRNYW5hZ2VyKCkuc3RhcnREb3dubG9hZChzZXNzaW9u
SUQsIHBvbGljeURvd25sb2FkSUQsIHJlcXVlc3QpOwotI2VuZGlmCisgICAgd2ViUHJvY2Vzcy5u
ZXR3b3JrQ29ubmVjdGlvbigpLT5jb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtD
b25uZWN0aW9uVG9XZWJQcm9jZXNzOjpTdGFydERvd25sb2FkKHNlc3Npb25JRCwgcG9saWN5RG93
bmxvYWRJRCwgcmVxdWVzdCksIDApOworICAgIHJldHVybjsKIH0KIAogdm9pZCBXZWJGcmFtZTo6
Y29udmVydE1haW5SZXNvdXJjZUxvYWRUb0Rvd25sb2FkKERvY3VtZW50TG9hZGVyKiBkb2N1bWVu
dExvYWRlciwgU2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1
ZXN0LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKQEAgLTI4NiwzOSArMjY5LDEy
IEBAIHZvaWQgV2ViRnJhbWU6OmNvbnZlcnRNYWluUmVzb3VyY2VMb2FkVG8KICAgICBTdWJyZXNv
dXJjZUxvYWRlciogbWFpblJlc291cmNlTG9hZGVyID0gZG9jdW1lbnRMb2FkZXItPm1haW5SZXNv
dXJjZUxvYWRlcigpOwogCiAgICAgYXV0byYgd2ViUHJvY2VzcyA9IFdlYlByb2Nlc3M6OnNpbmds
ZXRvbigpOwotI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCi0jaWYgVVNFKE5FVFdPUktfU0VT
U0lPTikKLSAgICBBU1NFUlQod2ViUHJvY2Vzcy51c2VzTmV0d29ya1Byb2Nlc3MoKSk7Ci0jZW5k
aWYKLSAgICBpZiAod2ViUHJvY2Vzcy51c2VzTmV0d29ya1Byb2Nlc3MoKSkgewotICAgICAgICAv
LyBVc2UgMCB0byBpbmRpY2F0ZSB0aGF0IHRoZSByZXNvdXJjZSBsb2FkIGNhbid0IGJlIGNvbnZl
cnRlZCBhbmQgYSBuZXcgZG93bmxvYWQgbXVzdCBiZSBzdGFydGVkLgotICAgICAgICAvLyBUaGlz
IGNhbiBoYXBwZW4gaWYgdGhlcmUgaXMgbm8gbG9hZGVyIGJlY2F1c2UgdGhlIG1haW4gcmVzb3Vy
Y2UgaXMgaW4gdGhlIFdlYkNvcmUgbWVtb3J5IGNhY2hlLAotICAgICAgICAvLyBvciBiZWNhdXNl
IHRoZSBjb252ZXJzaW9uIHdhcyBhdHRlbXB0ZWQgd2hlbiBub3QgY2FsbGluZyBTdWJyZXNvdXJj
ZUxvYWRlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNlKCkuCi0gICAgICAgIHVpbnQ2NF90IG1haW5SZXNv
dXJjZUxvYWRJZGVudGlmaWVyOwotICAgICAgICBpZiAobWFpblJlc291cmNlTG9hZGVyKQotICAg
ICAgICAgICAgbWFpblJlc291cmNlTG9hZElkZW50aWZpZXIgPSBtYWluUmVzb3VyY2VMb2FkZXIt
PmlkZW50aWZpZXIoKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgbWFpblJlc291cmNlTG9h
ZElkZW50aWZpZXIgPSAwOwotCi0gICAgICAgIHdlYlByb2Nlc3MubmV0d29ya0Nvbm5lY3Rpb24o
KS0+Y29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzczo6Q29udmVydE1haW5SZXNvdXJjZUxvYWRUb0Rvd25sb2FkKHNlc3Npb25JRCwgbWFpblJl
c291cmNlTG9hZElkZW50aWZpZXIsIHBvbGljeURvd25sb2FkSUQsIHJlcXVlc3QsIHJlc3BvbnNl
KSwgMCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0jZW5kaWYKLQotICAgIGlmICghbWFpblJl
c291cmNlTG9hZGVyKSB7Ci0gICAgICAgIC8vIFRoZSBtYWluIHJlc291cmNlIGhhcyBhbHJlYWR5
IGJlZW4gbG9hZGVkLiBTdGFydCBhIG5ldyBkb3dubG9hZCBpbnN0ZWFkLgotI2lmICFVU0UoTkVU
V09SS19TRVNTSU9OKQotICAgICAgICB3ZWJQcm9jZXNzLmRvd25sb2FkTWFuYWdlcigpLnN0YXJ0
RG93bmxvYWQoc2Vzc2lvbklELCBwb2xpY3lEb3dubG9hZElELCByZXF1ZXN0KTsKLSNlbmRpZgot
ICAgICAgICByZXR1cm47Ci0gICAgfQorICAgIC8vIFVzZSAwIHRvIGluZGljYXRlIHRoYXQgdGhl
IHJlc291cmNlIGxvYWQgY2FuJ3QgYmUgY29udmVydGVkIGFuZCBhIG5ldyBkb3dubG9hZCBtdXN0
IGJlIHN0YXJ0ZWQuCisgICAgLy8gVGhpcyBjYW4gaGFwcGVuIGlmIHRoZXJlIGlzIG5vIGxvYWRl
ciBiZWNhdXNlIHRoZSBtYWluIHJlc291cmNlIGlzIGluIHRoZSBXZWJDb3JlIG1lbW9yeSBjYWNo
ZSwKKyAgICAvLyBvciBiZWNhdXNlIHRoZSBjb252ZXJzaW9uIHdhcyBhdHRlbXB0ZWQgd2hlbiBu
b3QgY2FsbGluZyBTdWJyZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNlKCkuCisgICAg
dWludDY0X3QgbWFpblJlc291cmNlTG9hZElkZW50aWZpZXIgPSBtYWluUmVzb3VyY2VMb2FkZXIg
PyBtYWluUmVzb3VyY2VMb2FkZXItPmlkZW50aWZpZXIoKSA6IDA7CiAKLSNpZiBVU0UoTkVUV09S
S19TRVNTSU9OKQotICAgIC8vIFVzaW5nIE5FVFdPUktfU0VTU0lPTiByZXF1aXJlcyB0aGUgdXNl
IG9mIGEgbmV0d29yayBwcm9jZXNzLgotICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7
Ci0jZWxzZQotICAgIHdlYlByb2Nlc3MuZG93bmxvYWRNYW5hZ2VyKCkuY29udmVydEhhbmRsZVRv
RG93bmxvYWQocG9saWN5RG93bmxvYWRJRCwgZG9jdW1lbnRMb2FkZXItPm1haW5SZXNvdXJjZUxv
YWRlcigpLT5oYW5kbGUoKSwgcmVxdWVzdCwgcmVzcG9uc2UpOwotI2VuZGlmCisgICAgd2ViUHJv
Y2Vzcy5uZXR3b3JrQ29ubmVjdGlvbigpLT5jb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6Ok5l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpDb252ZXJ0TWFpblJlc291cmNlTG9hZFRvRG93
bmxvYWQoc2Vzc2lvbklELCBtYWluUmVzb3VyY2VMb2FkSWRlbnRpZmllciwgcG9saWN5RG93bmxv
YWRJRCwgcmVxdWVzdCwgcmVzcG9uc2UpLCAwKTsKIH0KIAogU3RyaW5nIFdlYkZyYW1lOjpzb3Vy
Y2UoKSBjb25zdApJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9zb3VwL1dlYlByb2Nl
c3NTb3VwLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL3NvdXAv
V2ViUHJvY2Vzc1NvdXAuY3BwCShyZXZpc2lvbiAxOTI2MDEpCisrKyBTb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL3NvdXAvV2ViUHJvY2Vzc1NvdXAuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00OSwx
OCArNDksNiBAQAogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotc3RhdGljIHVpbnQ2NF90IGdldENh
Y2hlRGlza0ZyZWVTaXplKFNvdXBDYWNoZSogY2FjaGUpCi17Ci0gICAgQVNTRVJUKGNhY2hlKTsK
LQotICAgIEdVbmlxdWVPdXRQdHI8Y2hhcj4gY2FjaGVEaXI7Ci0gICAgZ19vYmplY3RfZ2V0KEdf
T0JKRUNUKGNhY2hlKSwgImNhY2hlLWRpciIsICZjYWNoZURpci5vdXRQdHIoKSwgTlVMTCk7Ci0g
ICAgaWYgKCFjYWNoZURpcikKLSAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICByZXR1cm4gV2ViQ29y
ZTo6Z2V0Vm9sdW1lRnJlZVNpemVGb3JQYXRoKGNhY2hlRGlyLmdldCgpKTsKLX0KLQogdm9pZCBX
ZWJQcm9jZXNzOjpwbGF0Zm9ybVNldENhY2hlTW9kZWwoQ2FjaGVNb2RlbCBjYWNoZU1vZGVsKQog
ewogICAgIHVuc2lnbmVkIGNhY2hlVG90YWxDYXBhY2l0eSA9IDA7CkBAIC03MywxMiArNjEsNiBA
QCB2b2lkIFdlYlByb2Nlc3M6OnBsYXRmb3JtU2V0Q2FjaGVNb2RlbChDCiAgICAgdW5zaWduZWQg
bG9uZyB1cmxDYWNoZURpc2tDYXBhY2l0eSA9IDA7CiAKICAgICB1aW50NjRfdCBkaXNrRnJlZVNp
emUgPSAwOwotICAgIFNvdXBDYWNoZSogY2FjaGUgPSBudWxscHRyOwotCi0gICAgaWYgKCF1c2Vz
TmV0d29ya1Byb2Nlc3MoKSkgewotICAgICAgICBjYWNoZSA9IFdlYkNvcmU6OlNvdXBOZXR3b3Jr
U2Vzc2lvbjo6ZGVmYXVsdFNlc3Npb24oKS5jYWNoZSgpOwotICAgICAgICBkaXNrRnJlZVNpemUg
PSBnZXRDYWNoZURpc2tGcmVlU2l6ZShjYWNoZSkgLyBXVEY6Ok1COwotICAgIH0KIAogICAgIHVp
bnQ2NF90IG1lbVNpemUgPSBXVEY6OnJhbVNpemUoKSAvIFdURjo6TUI7CiAgICAgY2FsY3VsYXRl
Q2FjaGVTaXplcyhjYWNoZU1vZGVsLCBtZW1TaXplLCBkaXNrRnJlZVNpemUsCkBAIC05NCwzMyAr
NzYsMTAgQEAgdm9pZCBXZWJQcm9jZXNzOjpwbGF0Zm9ybVNldENhY2hlTW9kZWwoQwogI2lmIFBM
QVRGT1JNKEdUSykKICAgICBXZWJDb3JlOjpQYWdlQ2FjaGU6OnNpbmdsZXRvbigpLnNldFNob3Vs
ZENsZWFyQmFja2luZ1N0b3Jlcyh0cnVlKTsKICNlbmRpZgotCi0gICAgaWYgKCF1c2VzTmV0d29y
a1Byb2Nlc3MoKSkgewotICAgICAgICBpZiAodXJsQ2FjaGVEaXNrQ2FwYWNpdHkgPiBzb3VwX2Nh
Y2hlX2dldF9tYXhfc2l6ZShjYWNoZSkpCi0gICAgICAgICAgICBzb3VwX2NhY2hlX3NldF9tYXhf
c2l6ZShjYWNoZSwgdXJsQ2FjaGVEaXNrQ2FwYWNpdHkpOwotICAgIH0KIH0KIAogdm9pZCBXZWJQ
cm9jZXNzOjpwbGF0Zm9ybUNsZWFyUmVzb3VyY2VDYWNoZXMoUmVzb3VyY2VDYWNoZXNUb0NsZWFy
IGNhY2hlc1RvQ2xlYXIpCiB7Ci0gICAgaWYgKGNhY2hlc1RvQ2xlYXIgPT0gSW5NZW1vcnlSZXNv
dXJjZUNhY2hlc09ubHkpCi0gICAgICAgIHJldHVybjsKLQotICAgIC8vIElmIHdlJ3JlIHVzaW5n
IHRoZSBuZXR3b3JrIHByb2Nlc3MgdGhlbiBpdCBpcyB0aGUgb25seSBvbmUgdGhhdCBuZWVkcyB0
byBjbGVhciB0aGUgZGlzayBjYWNoZS4KLSAgICBpZiAodXNlc05ldHdvcmtQcm9jZXNzKCkpCi0g
ICAgICAgIHJldHVybjsKLQotICAgIHNvdXBfY2FjaGVfY2xlYXIoV2ViQ29yZTo6U291cE5ldHdv
cmtTZXNzaW9uOjpkZWZhdWx0U2Vzc2lvbigpLmNhY2hlKCkpOwotfQotCi1zdGF0aWMgdm9pZCBz
ZXRTb3VwU2Vzc2lvbkFjY2VwdExhbmd1YWdlKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBsYW5ndWFn
ZXMpCi17Ci0gICAgV2ViQ29yZTo6U291cE5ldHdvcmtTZXNzaW9uOjpkZWZhdWx0U2Vzc2lvbigp
LnNldEFjY2VwdExhbmd1YWdlcyhsYW5ndWFnZXMpOwotfQotCi1zdGF0aWMgdm9pZCBsYW5ndWFn
ZUNoYW5nZWQodm9pZCopCi17Ci0gICAgc2V0U291cFNlc3Npb25BY2NlcHRMYW5ndWFnZShXZWJD
b3JlOjp1c2VyUHJlZmVycmVkTGFuZ3VhZ2VzKCkpOwogfQogCiB2b2lkIFdlYlByb2Nlc3M6OnBs
YXRmb3JtSW5pdGlhbGl6ZVdlYlByb2Nlc3MoV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycyYm
IHBhcmFtZXRlcnMpCkBAIC0xMzUsNjIgKzk0LDE4IEBAIHZvaWQgV2ViUHJvY2Vzczo6cGxhdGZv
cm1Jbml0aWFsaXplV2ViUHIKICAgICAgICAgc2VjY29tcEZpbHRlcnMuaW5pdGlhbGl6ZSgpOwog
ICAgIH0KICNlbmRpZgotCi0gICAgaWYgKHVzZXNOZXR3b3JrUHJvY2VzcygpKQotICAgICAgICBy
ZXR1cm47Ci0KLSAgICBBU1NFUlQoIXBhcmFtZXRlcnMuZGlza0NhY2hlRGlyZWN0b3J5LmlzRW1w
dHkoKSk7Ci0KLSAgICAvLyBXZSB1c2VkIHRvIHVzZSB0aGUgZ2l2ZW4gY2FjaGUgZGlyZWN0b3J5
IGZvciB0aGUgc291cCBjYWNoZSwgYnV0IG5vdyB3ZSB1c2UgYSBzdWJkaXJlY3RvcnkgdG8gYXZv
aWQKLSAgICAvLyBjb25mbGljdHMgd2l0aCBvdGhlciBjYWNoZSBmaWxlcyBpbiB0aGUgc2FtZSBk
aXJlY3RvcnkuIFJlbW92ZSB0aGUgb2xkIGNhY2hlIGZpbGVzIGlmIHRoZXkgc3RpbGwgZXhpc3Qu
Ci0gICAgV2ViQ29yZTo6U291cE5ldHdvcmtTZXNzaW9uOjpkZWZhdWx0U2Vzc2lvbigpLmNsZWFy
Q2FjaGUoV2ViQ29yZTo6ZGlyZWN0b3J5TmFtZShwYXJhbWV0ZXJzLmRpc2tDYWNoZURpcmVjdG9y
eSkpOwotCi0jaWYgRU5BQkxFKE5FVFdPUktfQ0FDSEUpCi0gICAgLy8gV2hlbiBuZXR3b3JrIGNh
Y2hlIGlzIGVuYWJsZWQsIHRoZSBkaXNrIGNhY2hlIGRpcmVjdG9yeSBpcyB0aGUgbmV0d29yayBw
cm9jZXNzIG9uZS4KLSAgICBDU3RyaW5nIGRpc2tDYWNoZVBhdGggPSBXZWJDb3JlOjpwYXRoQnlB
cHBlbmRpbmdDb21wb25lbnQoV2ViQ29yZTo6ZGlyZWN0b3J5TmFtZShwYXJhbWV0ZXJzLmRpc2tD
YWNoZURpcmVjdG9yeSksICJ3ZWJraXQiKS51dGY4KCk7Ci0jZWxzZQotICAgIENTdHJpbmcgZGlz
a0NhY2hlUGF0aCA9IHBhcmFtZXRlcnMuZGlza0NhY2hlRGlyZWN0b3J5LnV0ZjgoKTsKLSNlbmRp
ZgotCi0gICAgR1JlZlB0cjxTb3VwQ2FjaGU+IHNvdXBDYWNoZSA9IGFkb3B0R1JlZihzb3VwX2Nh
Y2hlX25ldyhkaXNrQ2FjaGVQYXRoLmRhdGEoKSwgU09VUF9DQUNIRV9TSU5HTEVfVVNFUikpOwot
ICAgIFdlYkNvcmU6OlNvdXBOZXR3b3JrU2Vzc2lvbjo6ZGVmYXVsdFNlc3Npb24oKS5zZXRDYWNo
ZShzb3VwQ2FjaGUuZ2V0KCkpOwotICAgIC8vIFNldCBhbiBpbml0aWFsIGh1Z2UgbWF4X3NpemUg
Zm9yIHRoZSBTb3VwQ2FjaGUgc28gdGhlIGNhbGwgdG8gc291cF9jYWNoZV9sb2FkKCkgd29uJ3Qg
ZXZpY3QgYW55IGNhY2hlZAotICAgIC8vIHJlc291cmNlLiBUaGUgZmluYWwgc2l6ZSBvZiB0aGUg
Y2FjaGUgd2lsbCBiZSBzZXQgYnkgTmV0d29ya1Byb2Nlc3M6OnBsYXRmb3JtU2V0Q2FjaGVNb2Rl
bCgpLgotICAgIHVuc2lnbmVkIGluaXRpYWxNYXhTaXplID0gc291cF9jYWNoZV9nZXRfbWF4X3Np
emUoc291cENhY2hlLmdldCgpKTsKLSAgICBzb3VwX2NhY2hlX3NldF9tYXhfc2l6ZShzb3VwQ2Fj
aGUuZ2V0KCksIEdfTUFYVUlOVCk7Ci0gICAgc291cF9jYWNoZV9sb2FkKHNvdXBDYWNoZS5nZXQo
KSk7Ci0gICAgc291cF9jYWNoZV9zZXRfbWF4X3NpemUoc291cENhY2hlLmdldCgpLCBpbml0aWFs
TWF4U2l6ZSk7Ci0KLSAgICBpZiAoIXBhcmFtZXRlcnMuY29va2llUGVyc2lzdGVudFN0b3JhZ2VQ
YXRoLmlzRW1wdHkoKSkgewotICAgICAgICBzdXBwbGVtZW50PFdlYkNvb2tpZU1hbmFnZXI+KCkt
PnNldENvb2tpZVBlcnNpc3RlbnRTdG9yYWdlKHBhcmFtZXRlcnMuY29va2llUGVyc2lzdGVudFN0
b3JhZ2VQYXRoLAotICAgICAgICAgICAgcGFyYW1ldGVycy5jb29raWVQZXJzaXN0ZW50U3RvcmFn
ZVR5cGUpOwotICAgIH0KLSAgICBzdXBwbGVtZW50PFdlYkNvb2tpZU1hbmFnZXI+KCktPnNldEhU
VFBDb29raWVBY2NlcHRQb2xpY3kocGFyYW1ldGVycy5jb29raWVBY2NlcHRQb2xpY3kpOwotCi0g
ICAgaWYgKCFwYXJhbWV0ZXJzLmxhbmd1YWdlcy5pc0VtcHR5KCkpCi0gICAgICAgIHNldFNvdXBT
ZXNzaW9uQWNjZXB0TGFuZ3VhZ2UocGFyYW1ldGVycy5sYW5ndWFnZXMpOwotCi0gICAgc2V0SWdu
b3JlVExTRXJyb3JzKHBhcmFtZXRlcnMuaWdub3JlVExTRXJyb3JzKTsKLQotICAgIFdlYkNvcmU6
OmFkZExhbmd1YWdlQ2hhbmdlT2JzZXJ2ZXIodGhpcywgbGFuZ3VhZ2VDaGFuZ2VkKTsKIH0KIAog
dm9pZCBXZWJQcm9jZXNzOjpwbGF0Zm9ybVRlcm1pbmF0ZSgpCiB7Ci0gICAgaWYgKCF1c2VzTmV0
d29ya1Byb2Nlc3MoKSkKLSAgICAgICAgV2ViQ29yZTo6cmVtb3ZlTGFuZ3VhZ2VDaGFuZ2VPYnNl
cnZlcih0aGlzKTsKIH0KIAogdm9pZCBXZWJQcm9jZXNzOjpzZXRJZ25vcmVUTFNFcnJvcnMoYm9v
bCBpZ25vcmVUTFNFcnJvcnMpCiB7Ci0gICAgQVNTRVJUKCF1c2VzTmV0d29ya1Byb2Nlc3MoKSk7
Ci0gICAgV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGU6OnNldElnbm9yZVNTTEVycm9ycyhpZ25vcmVU
TFNFcnJvcnMpOwogfQogCiB2b2lkIFdlYlByb2Nlc3M6OmFsbG93U3BlY2lmaWNIVFRQU0NlcnRp
ZmljYXRlRm9ySG9zdChjb25zdCBXZWJDb3JlOjpDZXJ0aWZpY2F0ZUluZm8mIGNlcnRpZmljYXRl
SW5mbywgY29uc3QgU3RyaW5nJiBob3N0KQogewotICAgIEFTU0VSVCghdXNlc05ldHdvcmtQcm9j
ZXNzKCkpOwotICAgIFdlYkNvcmU6OlJlc291cmNlSGFuZGxlOjpzZXRDbGllbnRDZXJ0aWZpY2F0
ZShob3N0LCBjZXJ0aWZpY2F0ZUluZm8uY2VydGlmaWNhdGUoKSk7CiB9CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYktpdApJbmRleDogU291cmNlL2NtYWtlL09wdGlvbnNFZmwuY21ha2UKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL2NtYWtlL09wdGlvbnNFZmwuY21ha2UJKHJldmlzaW9uIDE5MjYwMSkKKysr
IFNvdXJjZS9jbWFrZS9PcHRpb25zRWZsLmNtYWtlCSh3b3JraW5nIGNvcHkpCkBAIC0xMDYsNyAr
MTA2LDYgQEAgV0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFXwogV0VCS0lU
X09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX05BVklHQVRPUl9DT05URU5UX1VUSUxT
IFBVQkxJQyBPTikKIFdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9OQVZJ
R0FUT1JfSFdDT05DVVJSRU5DWSBQVUJMSUMgT04pCiBXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9S
VF9WQUxVRShFTkFCTEVfTkVUU0NBUEVfUExVR0lOX0FQSSBQVUJMSUMgT04pCi1XRUJLSVRfT1BU
SU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfTkVUV09SS19QUk9DRVNTIFBVQkxJQyBPTikK
IFdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9OT1NOSUZGIFBVQkxJQyBP
TikKIFdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9QT0lOVEVSX0xPQ0sg
UFJJVkFURSBPRkYpCiBXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfUFVC
TElDX1NVRkZJWF9MSVNUIFBSSVZBVEUgT04pCkluZGV4OiBTb3VyY2UvY21ha2UvT3B0aW9uc0dU
Sy5jbWFrZQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvY21ha2UvT3B0aW9uc0dUSy5jbWFrZQkocmV2
aXNpb24gMTkyNjAxKQorKysgU291cmNlL2NtYWtlL09wdGlvbnNHVEsuY21ha2UJKHdvcmtpbmcg
Y29weSkKQEAgLTE4Niw3ICsxODYsNiBAQCBXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxV
RShFTkFCTEVfCiBXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfVklFV19N
T0RFX0NTU19NRURJQSBQUklWQVRFIE9OKQogV0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFM
VUUoRU5BQkxFX1dFQl9USU1JTkcgUFJJVkFURSBPTikKIFdFQktJVF9PUFRJT05fREVGQVVMVF9Q
T1JUX1ZBTFVFKEVOQUJMRV9XRUJHTCBQUklWQVRFIE9OKQotV0VCS0lUX09QVElPTl9ERUZBVUxU
X1BPUlRfVkFMVUUoRU5BQkxFX05FVFdPUktfUFJPQ0VTUyBQUklWQVRFIE9OKQogV0VCS0lUX09Q
VElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX1RIUkVBREVEX0NPTVBPU0lUT1IgUFJJVkFU
RSBPRkYpCiBXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfU0hBRE9XX0RP
TSBQUklWQVRFIE9GRikKIApJbmRleDogU291cmNlL2NtYWtlL09wdGlvbnNNYWMuY21ha2UKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL2NtYWtlL09wdGlvbnNNYWMuY21ha2UJKHJldmlzaW9uIDE5MjYw
MSkKKysrIFNvdXJjZS9jbWFrZS9PcHRpb25zTWFjLmNtYWtlCSh3b3JraW5nIGNvcHkpCkBAIC0y
MjAsNyArMjIwLDYgQEAgV0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFXwog
CiBXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfU0FOREJPWF9FWFRFTlNJ
T05TIFBSSVZBVEUgT04pCiBXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVf
V0VCX1BST0NFU1NfU0FOREJPWCBQUklWQVRFIE9OKQotV0VCS0lUX09QVElPTl9ERUZBVUxUX1BP
UlRfVkFMVUUoRU5BQkxFX05FVFdPUktfUFJPQ0VTUyBQUklWQVRFIE9OKQogV0VCS0lUX09QVElP
Tl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX0RBVEFCQVNFX1BST0NFU1MgUFJJVkFURSBPTikK
IFdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9QTFVHSU5fUFJPQ0VTUyBQ
UklWQVRFIE9OKQogV0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX01FTU9S
WV9TQU1QTEVSIFBSSVZBVEUgT04pCkluZGV4OiBTb3VyY2UvY21ha2UvV2ViS2l0RmVhdHVyZXMu
Y21ha2UKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL2NtYWtlL1dlYktpdEZlYXR1cmVzLmNtYWtlCShy
ZXZpc2lvbiAxOTI2MDEpCisrKyBTb3VyY2UvY21ha2UvV2ViS2l0RmVhdHVyZXMuY21ha2UJKHdv
cmtpbmcgY29weSkKQEAgLTEyOCw3ICsxMjgsNiBAQCBtYWNybyhXRUJLSVRfT1BUSU9OX0JFR0lO
KQogICAgIFdFQktJVF9PUFRJT05fREVGSU5FKEVOQUJMRV9OQVZJR0FUT1JfSFdDT05DVVJSRU5D
WSAiVG9nZ2xlIE5hdmlnYXRvciBoYXJkd2FyZSBjb25jdXJyZW5jeSBzdXBwb3J0IiBQUklWQVRF
IE9OKQogICAgIFdFQktJVF9PUFRJT05fREVGSU5FKEVOQUJMRV9OT1NOSUZGICJUb2dnbGUgc3Vw
cG9ydCBmb3IgJ1gtQ29udGVudC1UeXBlLU9wdGlvbnM6IG5vc25pZmYnIiBQUklWQVRFIE9GRikK
ICAgICBXRUJLSVRfT1BUSU9OX0RFRklORShFTkFCTEVfTkVUU0NBUEVfUExVR0lOX0FQSSAiVG9n
Z2xlIE5ldHNjYXBlIFBsdWdpbiBzdXBwb3J0IiBQUklWQVRFIE9OKQotICAgIFdFQktJVF9PUFRJ
T05fREVGSU5FKEVOQUJMRV9ORVRXT1JLX1BST0NFU1MgIlRvZ2dsZSBkZWRpY2F0ZWQgbmV0d29y
ayBwcm9jZXNzIHN1cHBvcnQgaW4gV2ViS2l0MiIgUFJJVkFURSBPRkYpCiAgICAgV0VCS0lUX09Q
VElPTl9ERUZJTkUoRU5BQkxFX05PVElGSUNBVElPTlMgIlRvZ2dsZSBEZXNrdG9wIE5vdGlmaWNh
dGlvbnMgU3VwcG9ydCIgUFJJVkFURSBPRkYpCiAgICAgV0VCS0lUX09QVElPTl9ERUZJTkUoRU5B
QkxFX09SSUVOVEFUSU9OX0VWRU5UUyAiVG9nZ2xlIE9yaWVudGF0aW9uIEV2ZW50cyBzdXBwb3J0
IiBQUklWQVRFIE9GRikKICAgICBXRUJLSVRfT1BUSU9OX0RFRklORShFTkFCTEVfUERGS0lUX1BM
VUdJTiAiVG9nZ2xlIFBERktpdCBwbHVnaW4gc3VwcG9ydCIgUFJJVkFURSBPRkYpCkluZGV4OiBU
b29scy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAx
OTI2NTMpCisrKyBUb29scy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNSBA
QAorMjAxNS0xMS0xOSAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3Jn
PgorCisgICAgICAgIFJlbW92ZSB0aGUgbm9uLU5ldHdvcmtQcm9jZXNzIGNvbmZpZ3VyYXRpb25z
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTE0MTgK
KworICAgICAgICBSZXZpZXdlZCBieSBHZW9mZiBHYXJlbi4KKworICAgICAgICAqIFRlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0Mi9tYWMvR2V0UElEQWZ0ZXJBYm9ydGVkUHJvY2Vzc0xhdW5jaC5j
cHA6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKToKKyAgICAgICAgKiBXZWJLaXRUZXN0
UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6
OmdlbmVyYXRlUGFnZUNvbmZpZ3VyYXRpb24pOgorCiAyMDE1LTExLTE5ICBBbGV4ZXkgUHJvc2t1
cnlha292ICA8YXBAYXBwbGUuY29tPgogCiAgICAgICAgIExheW91dFRlc3RSZWxheSBwcm9jZXNz
ZXMgbGVhayBvbiBpT1MgdGVzdGVycwpJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXQyL21hYy9HZXRQSURBZnRlckFib3J0ZWRQcm9jZXNzTGF1bmNoLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvbWFjL0dldFBJREFmdGVyQWJv
cnRlZFByb2Nlc3NMYXVuY2guY3BwCShyZXZpc2lvbiAxOTI2MDEpCisrKyBUb29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdDIvbWFjL0dldFBJREFmdGVyQWJvcnRlZFByb2Nlc3NMYXVuY2gu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Miw3ICs0Miw2IEBAIHN0YXRpYyB2b2lkIGRpZEZpbmlz
aExvYWRGb3JGcmFtZShXS1BhZ2UKIFRFU1QoV2ViS2l0MiwgR2V0UElEQWZ0ZXJBYm9ydGVkUHJv
Y2Vzc0xhdW5jaCkKIHsKICAgICBXS1JldGFpblB0cjxXS0NvbnRleHRSZWY+IGNvbnRleHQoQWRv
cHRXSywgV0tDb250ZXh0Q3JlYXRlKCkpOwotICAgIFdLQ29udGV4dFNldFVzZXNOZXR3b3JrUHJv
Y2Vzcyhjb250ZXh0LmdldCgpLCB0cnVlKTsKIAogICAgIFBsYXRmb3JtV2ViVmlldyB3ZWJWaWV3
KGNvbnRleHQuZ2V0KCkpOwogCkluZGV4OiBUb29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250
cm9sbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250
cm9sbGVyLmNwcAkocmV2aXNpb24gMTkyNjAxKQorKysgVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9U
ZXN0Q29udHJvbGxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQwMCwxMSArNDAwLDYgQEAgV0tS
ZXRhaW5QdHI8V0tQYWdlQ29uZmlndXJhdGlvblJlZj4gVGVzdAogCiAgICAgbV9nZW9sb2NhdGlv
blByb3ZpZGVyID0gc3RkOjptYWtlX3VuaXF1ZTxHZW9sb2NhdGlvblByb3ZpZGVyTW9jaz4obV9j
b250ZXh0LmdldCgpKTsKIAotI2lmIFBMQVRGT1JNKEVGTCkKLSAgICBXS0NvbnRleHRTZXRVc2Vz
TmV0d29ya1Byb2Nlc3MobV9jb250ZXh0LmdldCgpLCBmYWxzZSk7Ci0gICAgV0tDb250ZXh0U2V0
UHJvY2Vzc01vZGVsKG1fY29udGV4dC5nZXQoKSwga1dLUHJvY2Vzc01vZGVsU2hhcmVkU2Vjb25k
YXJ5UHJvY2Vzcyk7Ci0jZW5kaWYKLQogICAgIGlmIChjb25zdCBjaGFyKiBkdW1wUmVuZGVyVHJl
ZVRlbXAgPSBsaWJyYXJ5UGF0aEZvclRlc3RpbmcoKSkgewogICAgICAgICBTdHJpbmcgdGVtcG9y
YXJ5Rm9sZGVyID0gU3RyaW5nOjpmcm9tVVRGOChkdW1wUmVuZGVyVHJlZVRlbXApOwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>265915</attachid>
            <date>2015-11-19 16:01:16 -0800</date>
            <delta_ts>2015-11-20 04:51:01 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-151418-20151119160103.patch</filename>
            <type>text/plain</type>
            <size>169683</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IENoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBDaGFuZ2VMb2cJKHJldmlzaW9uIDE5MjYw
MSkKKysrIENoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE1IEBACisyMDE1LTEx
LTE5ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAg
ICAgUmVtb3ZlIHRoZSBub24tTmV0d29ya1Byb2Nlc3MgY29uZmlndXJhdGlvbnMKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MTQxOAorCisgICAgICAg
IFJldmlld2VkIGJ5IEdlb2ZmcmV5IEdhcmVuLgorCisgICAgICAgICogU291cmNlL2NtYWtlL09w
dGlvbnNFZmwuY21ha2U6CisgICAgICAgICogU291cmNlL2NtYWtlL09wdGlvbnNHVEsuY21ha2U6
CisgICAgICAgICogU291cmNlL2NtYWtlL09wdGlvbnNNYWMuY21ha2U6CisgICAgICAgICogU291
cmNlL2NtYWtlL1dlYktpdEZlYXR1cmVzLmNtYWtlOgorCiAyMDE1LTExLTE3ICBDYXJsb3MgR2Fy
Y2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KIAogICAgICAgICBSRUdSRVNTSU9OKHIx
OTI0NTkpOiBbR1RLXSBVc2VyIGFnZW50IHN0cmluZyBpcyBicm9rZW4gYWZ0ZXIgcjE5MjQ1OQpJ
bmRleDogU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQyL0NoYW5nZUxvZwkocmV2aXNpb24gMTkyNjY1KQorKysgU291cmNlL1dlYktpdDIvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzEyIEBACisyMDE1LTExLTE5ICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmVtb3ZlIHRo
ZSBub24tTmV0d29ya1Byb2Nlc3MgY29uZmlndXJhdGlvbnMKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MTQxOAorCisgICAgICAgIFJldmlld2VkIGJ5
IEdlb2ZmcmV5IEdhcmVuLgorCisgICAgICAgIFRoaXMgcGF0Y2ggYXNzdW1lcyBFTkFCTEUoTkVU
V09SS19QUk9DRVNTKSBpcyBhbHdheXMgMSwgdXNlc05ldHdvcmtQcm9jZXNzIGlzIGFsd2F5cyB0
cnVlLCAKKyAgICAgICAgYW5kIFByb2Nlc3NNb2RlbCBpcyBhbHdheXMgUHJvY2Vzc01vZGVsTXVs
dGlwbGVTZWNvbmRhcnlQcm9jZXNzZXMuICBJdCBkb2VzIHRoaXMgYnkgcmVtb3ZpbmcKKyAgICAg
ICAgdGhlIGNoZWNrcyBhbmQgdGhlIGNvZGUgdGhhdCB3b3VsZCBiZSBleGVjdXRlZCB3aXRoIG90
aGVyIGNvbmZpZ3VyYXRpb25zLgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAg
ICogTmV0d29ya1Byb2Nlc3MvRW50cnlQb2ludC9tYWMvTGVnYWN5UHJvY2Vzcy9OZXR3b3JrUHJv
Y2Vzc01haW4ubW06CisgICAgICAgIChOZXR3b3JrUHJvY2Vzc01haW4pOgorICAgICAgICAqIE5l
dHdvcmtQcm9jZXNzL0VudHJ5UG9pbnQvbWFjL1hQQ1NlcnZpY2UvTmV0d29ya1NlcnZpY2VFbnRy
eVBvaW50Lm1tOgorICAgICAgICAoTmV0d29ya1NlcnZpY2VJbml0aWFsaXplcik6CisgICAgICAg
ICogTmV0d29ya1Byb2Nlc3MvRmlsZUFQSS9OZXR3b3JrQmxvYlJlZ2lzdHJ5LmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6TmV0d29ya0Jsb2JSZWdpc3RyeTo6ZmlsZXNJbkJsb2IpOgorICAgICAgICAq
IE5ldHdvcmtQcm9jZXNzL0ZpbGVBUEkvTmV0d29ya0Jsb2JSZWdpc3RyeS5oOgorICAgICAgICAq
IE5ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmJsb2JTaXplKToKKyAg
ICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oOgor
ICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1l
c3NhZ2VzLmluOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkLmNwcDoKKyAg
ICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZC5oOgorICAgICAgICAqIE5ldHdvcmtQ
cm9jZXNzL05ldHdvcmtMb2FkQ2xpZW50Lmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0
d29ya0xvYWRQYXJhbWV0ZXJzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0xvYWRQYXJh
bWV0ZXJzOjpOZXR3b3JrTG9hZFBhcmFtZXRlcnMpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNz
L05ldHdvcmtMb2FkUGFyYW1ldGVycy5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdv
cmtQcm9jZXNzLmNwcDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5o
OgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluOgor
ICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHA6CisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmg6CisgICAgICAgICog
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLm1lc3NhZ2VzLmluOgorICAgICAg
ICAqIE5ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtQcm9jZXNzQ29jb2EubW06CisgICAgICAg
IChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpjbGVhckRpc2tDYWNoZSk6CisgICAgICAgICogTmV0
d29ya1Byb2Nlc3MvZWZsL05ldHdvcmtQcm9jZXNzTWFpbkVmbC5jcHA6CisgICAgICAgIChXZWJL
aXQ6Ok5ldHdvcmtQcm9jZXNzTWFpblVuaXgpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2d0
ay9OZXR3b3JrUHJvY2Vzc01haW5HdGsuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJv
Y2Vzc01haW5Vbml4KToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9pb3MvTmV0d29ya1Byb2Nl
c3NJT1MubW06CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvbWFjL05ldHdvcmtMb2FkTWFjLm1t
OgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL21hYy9OZXR3b3JrUHJvY2Vzc01hYy5tbToKKyAg
ICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9tYWMvTmV0d29ya1Jlc291cmNlTG9hZGVyTWFjLm1tOgor
ICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya1Byb2Nlc3NTb3VwLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OnBsYXRmb3JtVGVybWluYXRlKToKKyAgICAg
ICAgKiBOZXR3b3JrUHJvY2Vzcy9zb3VwL1JlbW90ZU5ldHdvcmtpbmdDb250ZXh0U291cC5jcHA6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU5ldHdvcmtpbmdDb250ZXh0OjpzdG9yYWdlU2Vzc2lv
bik6CisgICAgICAgICogU2hhcmVkL0FQSS9jL1dLRGVwcmVjYXRlZEZ1bmN0aW9ucy5jcHA6Cisg
ICAgICAgIChXS0luc3BlY3RvclRvZ2dsZUphdmFTY3JpcHRQcm9maWxpbmcpOgorICAgICAgICAo
V0tDb250ZXh0U2V0UHJvY2Vzc01vZGVsKToKKyAgICAgICAgKFdLQ29udGV4dEdldFByb2Nlc3NN
b2RlbCk6CisgICAgICAgIChXS0NvbnRleHRTZXRVc2VzTmV0d29ya1Byb2Nlc3MpOgorICAgICAg
ICAoV0tHcmFwaGljc0NvbnRleHRHZXRDR0NvbnRleHQpOgorICAgICAgICAqIFNoYXJlZC9BdXRo
ZW50aWNhdGlvbi9BdXRoZW50aWNhdGlvbk1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpB
dXRoZW50aWNhdGlvbk1hbmFnZXI6OmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSk6
CisgICAgICAgICogU2hhcmVkL05ldHdvcmsvQ3VzdG9tUHJvdG9jb2xzL0NvY29hL0N1c3RvbVBy
b3RvY29sTWFuYWdlckNvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpDdXN0b21Qcm90b2NvbE1h
bmFnZXI6OmluaXRpYWxpemUpOgorICAgICAgICAoV2ViS2l0OjpDdXN0b21Qcm90b2NvbE1hbmFn
ZXI6OmFkZEN1c3RvbVByb3RvY29sKToKKyAgICAgICAgKiBTaGFyZWQvTmV0d29yay9DdXN0b21Q
cm90b2NvbHMvQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyLmg6CisgICAgICAgICogU2hhcmVkL05ldHdv
cmsvQ3VzdG9tUHJvdG9jb2xzL3NvdXAvQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyU291cC5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OkN1c3RvbVByb3RvY29sTWFuYWdlcjo6c3VwcGxlbWVudE5hbWUpOgor
ICAgICAgICAoV2ViS2l0OjpDdXN0b21Qcm90b2NvbE1hbmFnZXI6OmluaXRpYWxpemUpOgorICAg
ICAgICAoV2ViS2l0OjpDdXN0b21Qcm90b2NvbE1hbmFnZXI6OnJlZ2lzdGVyU2NoZW1lKToKKyAg
ICAgICAgKiBTaGFyZWQvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5j
cHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOjpk
ZWNvZGUpOgorICAgICAgICAqIFNoYXJlZC9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ3JlYXRpb25Q
YXJhbWV0ZXJzLmg6CisgICAgICAgICogU2hhcmVkL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NTdXBw
bGVtZW50Lmg6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzU3VwcGxlbWVudDo6aW5p
dGlhbGl6ZSk6CisgICAgICAgICogU2hhcmVkL05ldHdvcmsvTmV0d29ya1Jlc291cmNlTG9hZFBh
cmFtZXRlcnMuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1l
dGVyczo6ZGVjb2RlKToKKyAgICAgICAgKiBTaGFyZWQvTmV0d29yay9OZXR3b3JrUmVzb3VyY2VM
b2FkUGFyYW1ldGVycy5oOgorICAgICAgICAqIFNoYXJlZC9Qcm9jZXNzRXhlY3V0YWJsZVBhdGgu
aDoKKyAgICAgICAgKiBTaGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnM6OldlYlByb2Nlc3ND
cmVhdGlvblBhcmFtZXRlcnMpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzQ3JlYXRpb25Q
YXJhbWV0ZXJzOjplbmNvZGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzQ3JlYXRpb25Q
YXJhbWV0ZXJzOjpkZWNvZGUpOgorICAgICAgICAqIFNoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25Q
YXJhbWV0ZXJzLmg6CisgICAgICAgICogU2hhcmVkL2VmbC9Qcm9jZXNzRXhlY3V0YWJsZVBhdGhF
ZmwuY3BwOgorICAgICAgICAoV2ViS2l0OjpleGVjdXRhYmxlUGF0aE9mUGx1Z2luUHJvY2Vzcyk6
CisgICAgICAgIChXZWJLaXQ6OmV4ZWN1dGFibGVQYXRoT2ZOZXR3b3JrUHJvY2Vzcyk6CisgICAg
ICAgIChXZWJLaXQ6OmV4ZWN1dGFibGVQYXRoT2ZEYXRhYmFzZVByb2Nlc3MpOgorICAgICAgICAq
IFNoYXJlZC9ndGsvUHJvY2Vzc0V4ZWN1dGFibGVQYXRoR3RrLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6ZXhlY3V0YWJsZVBhdGhPZlBsdWdpblByb2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpleGVj
dXRhYmxlUGF0aE9mTmV0d29ya1Byb2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpleGVjdXRhYmxl
UGF0aE9mRGF0YWJhc2VQcm9jZXNzKToKKyAgICAgICAgKiBTaGFyZWQvbWFjL0Nvb2tpZVN0b3Jh
Z2VTaGltLmg6CisgICAgICAgICogU2hhcmVkL21hYy9Db29raWVTdG9yYWdlU2hpbS5tbToKKyAg
ICAgICAgKC1bV0tOU1VSTFNlc3Npb25Mb2NhbCBfZ2V0Q29va2llSGVhZGVyc0ZvclRhc2s6Y29t
cGxldGlvbkhhbmRsZXI6XSk6CisgICAgICAgICogU2hhcmVkL21hYy9Db29raWVTdG9yYWdlU2hp
bUxpYnJhcnkuY3BwOgorICAgICAgICAqIFNoYXJlZC9tYWMvQ29va2llU3RvcmFnZVNoaW1MaWJy
YXJ5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElQcm9jZXNzUG9vbENvbmZpZ3VyYXRp
b24uY3BwOgorICAgICAgICAoQVBJOjpQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb246OmNyZWF0ZVdp
dGhMZWdhY3lPcHRpb25zKToKKyAgICAgICAgKEFQSTo6UHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9u
Ojpjb3B5KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSVByb2Nlc3NQb29sQ29uZmlndXJh
dGlvbi5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJU2Vzc2lvbi5jcHA6CisgICAgICAg
IChBUEk6OlNlc3Npb246On5TZXNzaW9uKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tB
UElDYXN0Lmg6CisgICAgICAgIChXZWJLaXQ6OnRvQVBJKToKKyAgICAgICAgKFdlYktpdDo6dG9G
b250U21vb3RoaW5nTGV2ZWwpOgorICAgICAgICAoV2ViS2l0Ojp0b1Byb2Nlc3NNb2RlbCk6IERl
bGV0ZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dC5jcHA6CisgICAgICAg
IChXS0NvbnRleHRHZXRDYWNoZU1vZGVsKToKKyAgICAgICAgKFdLQ29udGV4dFNldE1heGltdW1O
dW1iZXJPZlByb2Nlc3Nlcyk6CisgICAgICAgIChXS0NvbnRleHRTZXRKYXZhU2NyaXB0R2FyYmFn
ZUNvbGxlY3RvclRpbWVyRW5hYmxlZCk6CisgICAgICAgIChXS0NvbnRleHRVc2VUZXN0aW5nTmV0
d29ya1Nlc3Npb24pOgorICAgICAgICAoV0tDb250ZXh0U2V0UHJvY2Vzc01vZGVsKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdLQ29udGV4dEdldFByb2Nlc3NNb2RlbCk6IERlbGV0ZWQuCisgICAgICAg
IChXS0NvbnRleHRTZXRVc2VzTmV0d29ya1Byb2Nlc3MpOiBEZWxldGVkLgorICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvQy9XS0NvbnRleHQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvbWFj
L1dLQ29udGV4dFByaXZhdGVNYWMubW06CisgICAgICAgIChXS0NvbnRleHRHZXROZXR3b3JrUHJv
Y2Vzc0lkZW50aWZpZXIpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNz
R3JvdXAubW06CisgICAgICAgICgtW1dLUHJvY2Vzc0dyb3VwIGluaXRXaXRoSW5qZWN0ZWRCdW5k
bGVVUkw6XSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29sLm1t
OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a19jb250ZXh0LmNwcDoKKyAgICAgICAg
KGV3a19jb250ZXh0X3Byb2Nlc3NfbW9kZWxfc2V0KToKKyAgICAgICAgKGV3a19jb250ZXh0X3By
b2Nlc3NfbW9kZWxfZ2V0KToKKyAgICAgICAgKGV3a19jb250ZXh0X3Rsc19lcnJvcl9wb2xpY3lf
Z2V0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Bvb2xDb2NvYS5tbToK
KyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnVwZGF0ZVByb2Nlc3NTdXBwcmVzc2lv
blN0YXRlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnBsYXRmb3JtSW5pdGlh
bGl6ZVdlYlByb2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6cGxhdGZv
cm1Jbml0aWFsaXplTmV0d29ya1Byb2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNz
UG9vbDo6cGxhdGZvcm1JbnZhbGlkYXRlQ29udGV4dCk6CisgICAgICAgICogVUlQcm9jZXNzL0Rv
d25sb2Fkcy9Eb3dubG9hZFByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6RG93bmxvYWRQcm94
eTo6Y2FuY2VsKToKKyAgICAgICAgKFdlYktpdDo6RG93bmxvYWRQcm94eTo6aW52YWxpZGF0ZSk6
CisgICAgICAgICogVUlQcm9jZXNzL0xhdW5jaGVyL1Byb2Nlc3NMYXVuY2hlci5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OlByb2Nlc3NMYXVuY2hlcjo6cHJvY2Vzc1R5cGVBc1N0cmluZyk6CisgICAg
ICAgIChXZWJLaXQ6OlByb2Nlc3NMYXVuY2hlcjo6Z2V0UHJvY2Vzc1R5cGVGcm9tU3RyaW5nKToK
KyAgICAgICAgKiBVSVByb2Nlc3MvTGF1bmNoZXIvUHJvY2Vzc0xhdW5jaGVyLmg6CisgICAgICAg
ICogVUlQcm9jZXNzL0xhdW5jaGVyL2VmbC9Qcm9jZXNzTGF1bmNoZXJFZmwuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpQcm9jZXNzTGF1bmNoZXI6OmxhdW5jaFByb2Nlc3MpOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9MYXVuY2hlci9ndGsvUHJvY2Vzc0xhdW5jaGVyR3RrLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6UHJvY2Vzc0xhdW5jaGVyOjpsYXVuY2hQcm9jZXNzKToKKyAgICAgICAgKiBVSVByb2Nl
c3MvTGF1bmNoZXIvbWFjL1Byb2Nlc3NMYXVuY2hlck1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6
Y29tcHV0ZVByb2Nlc3NTaGltUGF0aCk6CisgICAgICAgIChXZWJLaXQ6OnNlcnZpY2VOYW1lKToK
KyAgICAgICAgKFdlYktpdDo6c2hvdWxkTGVha0Jvb3N0KToKKyAgICAgICAgKFdlYktpdDo6Y3Jl
YXRlUHJvY2Vzcyk6CisgICAgICAgICogVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQ
cm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OnNldElzSG9s
ZGluZ0xvY2tlZEZpbGVzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJv
Y2Vzc1Byb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQ
cm94eS5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBVSVByb2Nlc3MvTmV0d29yay9tYWMvTmV0d29y
a1Byb2Nlc3NQcm94eU1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NQcm94
eTo6cGxhdGZvcm1HZXRMYXVuY2hPcHRpb25zKToKKyAgICAgICAgKiBVSVByb2Nlc3MvTmV0d29y
ay9zb3VwL05ldHdvcmtQcm9jZXNzUHJveHlTb3VwLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0
d29ya1Byb2Nlc3NQcm94eTo6cGxhdGZvcm1HZXRMYXVuY2hPcHRpb25zKToKKyAgICAgICAgKiBV
SVByb2Nlc3MvUHJvY2Vzc01vZGVsLmg6IFJlbW92ZWQuCisgICAgICAgICogVUlQcm9jZXNzL1dl
YkNvb2tpZU1hbmFnZXJQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkNvb2tpZU1hbmFn
ZXJQcm94eTo6c2hvdWxkVGVybWluYXRlKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29va2llTWFu
YWdlclByb3h5OjpyZWZXZWJDb250ZXh0U3VwcGxlbWVudCk6CisgICAgICAgIChXZWJLaXQ6Oldl
YkNvb2tpZU1hbmFnZXJQcm94eTo6c2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeSk6CisgICAgICAg
IChXZWJLaXQ6OldlYkNvb2tpZU1hbmFnZXJQcm94eTo6Z2V0SFRUUENvb2tpZUFjY2VwdFBvbGlj
eSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkluc3BlY3RvclByb3h5LmNwcDoKKyAgICAgICAg
KFdlYktpdDo6V2ViSW5zcGVjdG9yUHJveHk6Omluc3BlY3RvclByb2Nlc3NQb29sKToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFn
ZVByb3h5OjpXZWJQYWdlUHJveHkpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnJl
YXR0YWNoVG9XZWJQcm9jZXNzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpzZXRT
ZXNzaW9uSUQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmluaXRpYWxpemVXZWJQ
YWdlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwOgorICAgICAgICAo
V2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJv
Y2Vzc1Bvb2w6OldlYlByb2Nlc3NQb29sKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bv
b2w6On5XZWJQcm9jZXNzUG9vbCk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpp
bml0aWFsaXplQ2xpZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnNldERv
d25sb2FkQ2xpZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnNldE1heGlt
dW1OdW1iZXJPZlByb2Nlc3Nlcyk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpu
ZXR3b3JraW5nUHJvY2Vzc0Nvbm5lY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNz
UG9vbDo6bGFuZ3VhZ2VDaGFuZ2VkKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6
OnRleHRDaGVja2VyU3RhdGVDaGFuZ2VkKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bv
b2w6OmVuc3VyZU5ldHdvcmtQcm9jZXNzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bv
b2w6OmdldE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlBy
b2Nlc3NQb29sOjplbnN1cmVEYXRhYmFzZVByb2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
cm9jZXNzUG9vbDo6c2V0QW55UGFnZUdyb3VwTWlnaHRIYXZlUHJpdmF0ZUJyb3dzaW5nRW5hYmxl
ZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpwcm9jZXNzRGlkQ2FjaGVQYWdl
KToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OmNyZWF0ZU5ld1dlYlByb2Nlc3Mp
OgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6ZGlzY29ubmVjdFByb2Nlc3MpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6Y3JlYXRlV2ViUGFnZSk6CisgICAgICAg
IChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpkb3dubG9hZCk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlByb2Nlc3NQb29sOjpyZXN1bWVEb3dubG9hZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nl
c3NQb29sOjpwb3N0TWVzc2FnZVRvSW5qZWN0ZWRCdW5kbGUpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQcm9jZXNzUG9vbDo6c2V0QWRkaXRpb25hbFBsdWdpbnNEaXJlY3RvcnkpOgorICAgICAgICAo
V2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6bmV0d29ya1Byb2Nlc3NJZGVudGlmaWVyKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnNldEFsd2F5c1VzZXNDb21wbGV4VGV4dENvZGVQ
YXRoKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnNldENhbkhhbmRsZUhUVFBT
U2VydmVyVHJ1c3RFdmFsdWF0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6
OnJlZ2lzdGVyVVJMU2NoZW1lQXNMb2NhbCk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQ
b29sOjpzZXRDYWNoZU1vZGVsKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnNl
dERlZmF1bHRSZXF1ZXN0VGltZW91dEludGVydmFsKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJv
Y2Vzc1Bvb2w6OmNyZWF0ZURvd25sb2FkUHJveHkpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9j
ZXNzUG9vbDo6YWRkTWVzc2FnZVJlY2VpdmVyKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vz
c1Bvb2w6OnVzZVRlc3RpbmdOZXR3b3JrU2Vzc2lvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlBy
b2Nlc3NQb29sOjphbGxvd1NwZWNpZmljSFRUUFNDZXJ0aWZpY2F0ZUZvckhvc3QpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6cmVxdWVzdFdlYkNvbnRlbnRTdGF0aXN0aWNzKToK
KyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnJlcXVlc3ROZXR3b3JraW5nU3RhdGlz
dGljcyk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpoYW5kbGVNZXNzYWdlKToK
KyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnNldFByb2Nlc3NNb2RlbCk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpzZXRVc2VzTmV0d29ya1Byb2Nl
c3MpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6dXNlc05ldHdv
cmtQcm9jZXNzKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OmVu
c3VyZVNoYXJlZFdlYlByb2Nlc3MpOiBEZWxldGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQ
cm9jZXNzUG9vbC5oOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6c2VuZFRvTmV0
d29ya2luZ1Byb2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6c2VuZFRv
TmV0d29ya2luZ1Byb2Nlc3NSZWxhdW5jaGluZ0lmTmVjZXNzYXJ5KToKKyAgICAgICAgKFdlYktp
dDo6V2ViUHJvY2Vzc1Bvb2w6OnNlbmRUb0FsbFByb2Nlc3Nlc1JlbGF1bmNoaW5nVGhlbUlmTmVj
ZXNzYXJ5KToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnNlbmRUb09uZVByb2Nl
c3MpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwOgorICAgICAgICAo
V2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OnJlbW92ZVdlYlBhZ2UpOgorICAgICAgICAoV2ViS2l0
OjpXZWJQcm9jZXNzUHJveHk6OmdldFBsdWdpblByb2Nlc3NDb25uZWN0aW9uKToKKyAgICAgICAg
KFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5OjpnZXROZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24pOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OmdldERhdGFiYXNlUHJvY2Vzc0Nvbm5l
Y3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OnVwZGF0ZVRleHRDaGVj
a2VyU3RhdGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OmRpZFNhdmVUb1Bh
Z2VDYWNoZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6ZGlkQ2FuY2VsUHJv
Y2Vzc1N1c3BlbnNpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OnJlaW5z
dGF0ZU5ldHdvcmtQcm9jZXNzQXNzZXJ0aW9uU3RhdGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
cm9jZXNzUHJveHk6OmRpZFNldEFzc2VydGlvblN0YXRlKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
UHJvY2Vzc1Byb3h5OjpjcmVhdGVEb3dubG9hZFByb3h5KTogRGVsZXRlZC4KKyAgICAgICAgKiBV
SVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5Lmg6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQ
cm94eTo6dGhyb3R0bGVyKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5Lm1l
c3NhZ2VzLmluOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0
b3JlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6fldlYnNpdGVEYXRh
U3RvcmUpOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpjbG9uZVNlc3Npb25E
YXRhKToKKyAgICAgICAgKiBVSVByb2Nlc3MvZ3RrL1dlYlByb2Nlc3NQb29sR3RrLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6aW5pdEluc3BlY3RvclNlcnZlcik6CisgICAgICAgIChXZWJLaXQ6Oldl
YlByb2Nlc3NQb29sOjpwbGF0Zm9ybUluaXRpYWxpemVXZWJQcm9jZXNzKToKKyAgICAgICAgKFdl
YktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnNldElnbm9yZVRMU0Vycm9ycyk6CisgICAgICAgICogVUlQ
cm9jZXNzL3NvdXAvV2ViUHJvY2Vzc1Bvb2xTb3VwLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vi
UHJvY2Vzc1Bvb2w6OnBsYXRmb3JtSW5pdGlhbGl6ZU5ldHdvcmtQcm9jZXNzKToKKyAgICAgICAg
KiBXZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogV2ViS2l0MlBy
ZWZpeC5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvRmlsZUFQSS9CbG9iUmVnaXN0cnlQcm94eS5j
cHA6CisgICAgICAgIChXZWJLaXQ6OkJsb2JSZWdpc3RyeVByb3h5OjpyZWdpc3RlckZpbGVCbG9i
VVJMKToKKyAgICAgICAgKFdlYktpdDo6QmxvYlJlZ2lzdHJ5UHJveHk6OnJlZ2lzdGVyQmxvYlVS
TCk6CisgICAgICAgIChXZWJLaXQ6OkJsb2JSZWdpc3RyeVByb3h5Ojp1bnJlZ2lzdGVyQmxvYlVS
TCk6CisgICAgICAgIChXZWJLaXQ6OkJsb2JSZWdpc3RyeVByb3h5OjpyZWdpc3RlckJsb2JVUkxG
b3JTbGljZSk6CisgICAgICAgIChXZWJLaXQ6OkJsb2JSZWdpc3RyeVByb3h5OjpibG9iU2l6ZSk6
CisgICAgICAgICogV2ViUHJvY2Vzcy9GaWxlQVBJL0Jsb2JSZWdpc3RyeVByb3h5Lmg6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5jcHA6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5oOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24ubWVz
c2FnZXMuaW46CisgICAgICAgICogV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZFNj
aGVkdWxlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZFNjaGVkdWxlcjo6
bmV0d29ya1Byb2Nlc3NDcmFzaGVkKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvV2Vi
UmVzb3VyY2VMb2FkU2NoZWR1bGVyLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9OZXR3b3JrL1dl
YlJlc291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVz
b3VyY2VMb2FkZXIuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VM
b2FkZXIubWVzc2FnZXMuaW46CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBl
L05ldHNjYXBlQnJvd3NlckZ1bmNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6aW5pdGlhbGl6ZUJy
b3dzZXJGdW5jcyk6CisgICAgICAgIChXZWJLaXQ6Om5ldHNjYXBlQnJvd3NlckZ1bmNzKToKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4uY3BwOgor
ICAgICAgICAoV2ViS2l0OjpOZXRzY2FwZVBsdWdpbjo6cmVnaXN0ZXJSZWRpcmVjdCk6CisgICAg
ICAgIChXZWJLaXQ6Ok5ldHNjYXBlUGx1Z2luOjp1cmxSZWRpcmVjdFJlc3BvbnNlKToKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHA6
CisgICAgICAgIChXZWJLaXQ6OldlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y29va2llc0ZvckRPTSk6
CisgICAgICAgIChXZWJLaXQ6OldlYlBsYXRmb3JtU3RyYXRlZ2llczo6c2V0Q29va2llc0Zyb21E
T00pOgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNvb2tpZXNFbmFi
bGVkKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjb29raWVSZXF1
ZXN0SGVhZGVyRmllbGRWYWx1ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBsYXRmb3JtU3RyYXRl
Z2llczo6Z2V0UmF3Q29va2llcyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBsYXRmb3JtU3RyYXRl
Z2llczo6ZGVsZXRlQ29va2llKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGxhdGZvcm1TdHJhdGVn
aWVzOjpyZXNvdXJjZUxvYWRTY2hlZHVsZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF0Zm9y
bVN0cmF0ZWdpZXM6OmxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkpOgorICAgICAgICAoV2ViS2l0
OjpXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNyZWF0ZVBpbmdIYW5kbGUpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNyZWF0ZUJsb2JSZWdpc3RyeSk6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaDoKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwOgorICAgICAgICAoV2ViS2l0
OjpXZWJGcmFtZTo6c3RhcnREb3dubG9hZCk6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lOjpj
b252ZXJ0TWFpblJlc291cmNlTG9hZFRvRG93bmxvYWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJG
cmFtZTo6c291cmNlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpXZWJQcm9jZXNzKToKKyAgICAgICAgKFdlYktpdDo6
V2ViUHJvY2Vzczo6aW5pdGlhbGl6ZUNvbm5lY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
cm9jZXNzOjppbml0aWFsaXplV2ViUHJvY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nl
c3M6OmVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbik6CisgICAgICAgIChXZWJLaXQ6Oldl
YlByb2Nlc3M6OnJlZ2lzdGVyVVJMU2NoZW1lQXNFbXB0eURvY3VtZW50KToKKyAgICAgICAgKFdl
YktpdDo6V2ViUHJvY2Vzczo6ZGVzdHJveVByaXZhdGVCcm93c2luZ1Nlc3Npb24pOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpwbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbk1hbmFnZXIpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpzaG91bGRUZXJtaW5hdGUpOgorICAgICAgICAo
V2ViS2l0OjpXZWJQcm9jZXNzOjpzZXRJbmplY3RlZEJ1bmRsZVBhcmFtZXRlcnMpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpuZXR3b3JrQ29ubmVjdGlvbik6CisgICAgICAgIChXZWJL
aXQ6OldlYlByb2Nlc3M6OndlYlJlc291cmNlTG9hZFNjaGVkdWxlcik6CisgICAgICAgIChXZWJL
aXQ6OldlYlByb2Nlc3M6OndlYlRvRGF0YWJhc2VQcm9jZXNzQ29ubmVjdGlvbkNsb3NlZCk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OnNldEVuaGFuY2VkQWNjZXNzaWJpbGl0eSk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OnByZWZldGNoRE5TKToKKyAgICAgICAgKFdlYktp
dDo6V2ViUHJvY2Vzczo6ZGlkQ3JlYXRlRG93bmxvYWQpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
S2l0OjpXZWJQcm9jZXNzOjpkaWREZXN0cm95RG93bmxvYWQpOiBEZWxldGVkLgorICAgICAgICAo
V2ViS2l0OjpXZWJQcm9jZXNzOjpkb3dubG9hZFByb3h5Q29ubmVjdGlvbik6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OmRvd25sb2Fkc0F1dGhlbnRpY2F0aW9uTWFuYWdl
cik6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OmRvd25sb2FkTWFuYWdl
cik6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OnVzZXNOZXR3b3JrUHJv
Y2Vzcyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OmRvd25sb2FkUmVx
dWVzdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OnJlc3VtZURvd25s
b2FkKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6Y2FuY2VsRG93bmxv
YWQpOiBEZWxldGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQcm9jZXNzOjp0ZXh0Q2hlY2tlclN0YXRlKToKKyAgICAgICAgKFdlYktp
dDo6V2ViUHJvY2Vzczo6ZXZlbnREaXNwYXRjaGVyKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dl
YlByb2Nlc3MubWVzc2FnZXMuaW46CisgICAgICAgICogV2ViUHJvY2Vzcy9zb3VwL1dlYlByb2Nl
c3NTb3VwLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6cGxhdGZvcm1TZXRDYWNo
ZU1vZGVsKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6cGxhdGZvcm1DbGVhclJlc291
cmNlQ2FjaGVzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6cGxhdGZvcm1Jbml0aWFs
aXplV2ViUHJvY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OnBsYXRmb3JtVGVy
bWluYXRlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6c2V0SWdub3JlVExTRXJyb3Jz
KToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6YWxsb3dTcGVjaWZpY0hUVFBTQ2VydGlm
aWNhdGVGb3JIb3N0KToKKyAgICAgICAgKFdlYktpdDo6Z2V0Q2FjaGVEaXNrRnJlZVNpemUpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpzZXRTb3VwU2Vzc2lvbkFjY2VwdExhbmd1YWdlKTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6bGFuZ3VhZ2VDaGFuZ2VkKTogRGVsZXRlZC4KKyAg
ICAgICAgKiBjb25maWcuaDoKKwogMjAxNS0xMS0xOSAgQ3NhYmEgT3N6dHJvZ29uw6FjICA8b3Nz
eUB3ZWJraXQub3JnPgogCiAgICAgICAgIFtFRkxdIEZpeCBXcmV0dXJuLXR5cGUgY2xhbmcgd2Fy
bmluZyBpbiBFV0syVW5pdFRlc3RCYXNlLmNwcApJbmRleDogU291cmNlL1dlYktpdDIvQ01ha2VM
aXN0cy50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvQ01ha2VMaXN0cy50eHQJKHJl
dmlzaW9uIDE5MjYwMSkKKysrIFNvdXJjZS9XZWJLaXQyL0NNYWtlTGlzdHMudHh0CSh3b3JraW5n
IGNvcHkpCkBAIC04MDMsMTYgKzgwMywxMyBAQCBpZiAoV2ViS2l0Ml9XZWJQcm9jZXNzX09VVFBV
VF9OQU1FKQogICAgIHNldF90YXJnZXRfcHJvcGVydGllcyhXZWJQcm9jZXNzIFBST1BFUlRJRVMg
T1VUUFVUX05BTUUgJHtXZWJLaXQyX1dlYlByb2Nlc3NfT1VUUFVUX05BTUV9KQogZW5kaWYgKCkK
IAotaWYgKEVOQUJMRV9ORVRXT1JLX1BST0NFU1MpCi0gICAgYWRkX2V4ZWN1dGFibGUoTmV0d29y
a1Byb2Nlc3MgJHtOZXR3b3JrUHJvY2Vzc19TT1VSQ0VTfSkKLSAgICBhZGRfd2Via2l0Ml9wcmVm
aXhfaGVhZGVyKE5ldHdvcmtQcm9jZXNzKQotICAgIHRhcmdldF9saW5rX2xpYnJhcmllcyhOZXR3
b3JrUHJvY2VzcyAke05ldHdvcmtQcm9jZXNzX0xJQlJBUklFU30pCi0gICAgc2V0X3RhcmdldF9w
cm9wZXJ0aWVzKE5ldHdvcmtQcm9jZXNzIFBST1BFUlRJRVMgRk9MREVSICJXZWJLaXQiKQotICAg
IGluc3RhbGwoVEFSR0VUUyBOZXR3b3JrUHJvY2VzcyBERVNUSU5BVElPTiAiJHtMSUJFWEVDX0lO
U1RBTExfRElSfSIpCithZGRfZXhlY3V0YWJsZShOZXR3b3JrUHJvY2VzcyAke05ldHdvcmtQcm9j
ZXNzX1NPVVJDRVN9KQorYWRkX3dlYmtpdDJfcHJlZml4X2hlYWRlcihOZXR3b3JrUHJvY2VzcykK
K3RhcmdldF9saW5rX2xpYnJhcmllcyhOZXR3b3JrUHJvY2VzcyAke05ldHdvcmtQcm9jZXNzX0xJ
QlJBUklFU30pCitzZXRfdGFyZ2V0X3Byb3BlcnRpZXMoTmV0d29ya1Byb2Nlc3MgUFJPUEVSVElF
UyBGT0xERVIgIldlYktpdCIpCiAKLSAgICBpZiAoV2ViS2l0Ml9OZXR3b3JrUHJvY2Vzc19PVVRQ
VVRfTkFNRSkKLSAgICAgICAgc2V0X3RhcmdldF9wcm9wZXJ0aWVzKE5ldHdvcmtQcm9jZXNzIFBS
T1BFUlRJRVMgT1VUUFVUX05BTUUgJHtXZWJLaXQyX05ldHdvcmtQcm9jZXNzX09VVFBVVF9OQU1F
fSkKLSAgICBlbmRpZiAoKQoraWYgKFdlYktpdDJfTmV0d29ya1Byb2Nlc3NfT1VUUFVUX05BTUUp
CisgICAgc2V0X3RhcmdldF9wcm9wZXJ0aWVzKE5ldHdvcmtQcm9jZXNzIFBST1BFUlRJRVMgT1VU
UFVUX05BTUUgJHtXZWJLaXQyX05ldHdvcmtQcm9jZXNzX09VVFBVVF9OQU1FfSkKIGVuZGlmICgp
CiAKIGlmIChFTkFCTEVfUExVR0lOX1BST0NFU1MpCkBAIC04NDcsNyArODQ0LDcgQEAgc2V0X3Rh
cmdldF9wcm9wZXJ0aWVzKFdlYktpdDIgUFJPUEVSVElFUwogaWYgKEFQUExFKQogICAgIFdFQktJ
VF9GUkFNRVdPUksoV2ViS2l0MikKIGVsc2UgKCkKLSAgICBpbnN0YWxsKFRBUkdFVFMgV2ViS2l0
MiBXZWJQcm9jZXNzCisgICAgaW5zdGFsbChUQVJHRVRTIFdlYktpdDIgV2ViUHJvY2VzcyBOZXR3
b3JrUHJvY2VzcwogICAgICAgICBMSUJSQVJZIERFU1RJTkFUSU9OICIke0xJQl9JTlNUQUxMX0RJ
Un0iCiAgICAgICAgIFJVTlRJTUUgREVTVElOQVRJT04gIiR7TElCRVhFQ19JTlNUQUxMX0RJUn0i
CiAgICAgKQpJbmRleDogU291cmNlL1dlYktpdDIvV2ViS2l0MlByZWZpeC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQyL1dlYktpdDJQcmVmaXguaAkocmV2aXNpb24gMTkyNjAxKQorKysg
U291cmNlL1dlYktpdDIvV2ViS2l0MlByZWZpeC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNiw4ICsz
Niw2IEBACiAKICNkZWZpbmUgRU5BQkxFX1dFQl9QUk9DRVNTX1NBTkRCT1ggMQogCi0jZGVmaW5l
IEVOQUJMRV9ORVRXT1JLX1BST0NFU1MgMQotCiAjZGVmaW5lIEVOQUJMRV9EQVRBQkFTRV9QUk9D
RVNTIDEKIAogI2RlZmluZSBFTkFCTEVfTUVNT1JZX1NBTVBMRVIgMQpAQCAtNTksNyArNTcsNiBA
QAogI2VuZGlmCiAKICNpZiBQTEFURk9STShHVEspCi0jZGVmaW5lIEVOQUJMRV9ORVRXT1JLX1BS
T0NFU1MgMQogI2RlZmluZSBFTkFCTEVfU0hBUkVBQkxFX1JFU09VUkNFIDEKICNlbmRpZgogCklu
ZGV4OiBTb3VyY2UvV2ViS2l0Mi9jb25maWcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
Mi9jb25maWcuaAkocmV2aXNpb24gMTkyNjAxKQorKysgU291cmNlL1dlYktpdDIvY29uZmlnLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTkxLDcgKzkxLDcgQEAKICNlbmRpZgogCiAjaWZuZGVmIEVOQUJM
RV9ORVRXT1JLX0NBQ0hFCi0jaWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykgJiYgKFBMQVRGT1JN
KENPQ09BKSB8fCBQTEFURk9STShHVEspKQorI2lmIFBMQVRGT1JNKENPQ09BKSB8fCBQTEFURk9S
TShHVEspCiAjZGVmaW5lIEVOQUJMRV9ORVRXT1JLX0NBQ0hFIDEKICNlbHNlCiAjZGVmaW5lIEVO
QUJMRV9ORVRXT1JLX0NBQ0hFIDAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNz
L05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAJ
KHJldmlzaW9uIDE5MjYwMSkKKysrIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjYsOCArMjYs
NiBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIk5ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzLmgiCiAKLSNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQotCiAjaW5jbHVkZSAi
TmV0d29ya0Jsb2JSZWdpc3RyeS5oIgogI2luY2x1ZGUgIk5ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzTWVzc2FnZXMuaCIKICNpbmNsdWRlICJOZXR3b3JrTG9hZC5oIgpAQCAtMjc0LDUgKzI3
MiwzIEBAIHZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmJsb2IKIH0KIAogfSAv
LyBuYW1lc3BhY2UgV2ViS2l0Ci0KLSNlbmRpZiAvLyBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQpJ
bmRleDogU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCShyZXZpc2lvbiAxOTI2MDEpCisrKyBTb3Vy
Y2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5o
CSh3b3JraW5nIGNvcHkpCkBAIC0yNiw4ICsyNiw2IEBACiAjaWZuZGVmIE5ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzX2gKICNkZWZpbmUgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3Nf
aAogCi0jaWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKLQogI2luY2x1ZGUgIkJsb2NraW5nUmVz
cG9uc2VNYXAuaCIKICNpbmNsdWRlICJDb25uZWN0aW9uLmgiCiAjaW5jbHVkZSAiTmV0d29ya0Nv
bm5lY3Rpb25Ub1dlYlByb2Nlc3NNZXNzYWdlcy5oIgpAQCAtMTAyLDYgKzEwMCw0IEBAIHByaXZh
dGU6CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCi0jZW5kaWYgLy8gRU5BQkxFKE5FVFdPUktf
UFJPQ0VTUykKLQogI2VuZGlmIC8vIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzX2gKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzLm1lc3NhZ2VzLmluCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCShyZXZpc2lv
biAxOTI2MDEpCisrKyBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgkod29ya2luZyBjb3B5KQpAQCAtMjAsOCArMjAs
NiBAQAogIyBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQogIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogCi0jaWYgRU5BQkxF
KE5FVFdPUktfUFJPQ0VTUykKLQogbWVzc2FnZXMgLT4gTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MgTGVnYWN5UmVjZWl2ZXIgewogCiAgICAgU2NoZWR1bGVSZXNvdXJjZUxvYWQoV2ViS2l0
OjpOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycyByZXNvdXJjZUxvYWRQYXJhbWV0ZXJzKQpA
QCAtNDgsNSArNDYsMyBAQCBtZXNzYWdlcyAtPiBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vz
CiAgICAgVW5yZWdpc3RlckJsb2JVUkwoV2ViQ29yZTo6VVJMIHVybCkKICAgICBCbG9iU2l6ZShX
ZWJDb3JlOjpVUkwgdXJsKSAtPiAodWludDY0X3QgcmVzdWx0U2l6ZSkKIH0KLQotI2VuZGlmIC8v
IEVOQUJMRShORVRXT1JLX1BST0NFU1MpCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrTG9hZC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya0xvYWQuY3BwCShyZXZpc2lvbiAxOTI2MDEpCisrKyBTb3VyY2UvV2Vi
S2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI0
LDggKzI0LDYgQEAKICAqLwogCiAjaW5jbHVkZSAiY29uZmlnLmgiCi0KLSNpZiBFTkFCTEUoTkVU
V09SS19QUk9DRVNTKQogI2luY2x1ZGUgIk5ldHdvcmtMb2FkLmgiCiAKICNpbmNsdWRlICJBdXRo
ZW50aWNhdGlvbk1hbmFnZXIuaCIKQEAgLTM3MSw1ICszNjksMyBAQCB2b2lkIE5ldHdvcmtMb2Fk
OjpyZWNlaXZlZENhbmNlbGxhdGlvbihSCiAjZW5kaWYgLy8gIVVTRShORVRXT1JLX1NFU1NJT04p
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAotCi0jZW5kaWYgLy8gRU5BQkxFKE5FVFdPUktfUFJP
Q0VTUykKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQu
aAkocmV2aXNpb24gMTkyNjAxKQorKysgU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya0xvYWQuaAkod29ya2luZyBjb3B5KQpAQCAtMjYsOCArMjYsNiBAQAogI2lmbmRlZiBOZXR3
b3JrTG9hZF9oCiAjZGVmaW5lIE5ldHdvcmtMb2FkX2gKIAotI2lmIEVOQUJMRShORVRXT1JLX1BS
T0NFU1MpCi0KICNpbmNsdWRlICJOZXR3b3JrTG9hZENsaWVudC5oIgogI2luY2x1ZGUgIk5ldHdv
cmtMb2FkUGFyYW1ldGVycy5oIgogI2luY2x1ZGUgIlJlbW90ZU5ldHdvcmtpbmdDb250ZXh0Lmgi
CkBAIC0xMjYsNiArMTI0LDQgQEAgcHJpdmF0ZToKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAK
LSNlbmRpZiAvLyBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQotCiAjZW5kaWYgLy8gTmV0d29ya0xv
YWRfaApJbmRleDogU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRDbGll
bnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
TG9hZENsaWVudC5oCShyZXZpc2lvbiAxOTI2MDEpCisrKyBTb3VyY2UvV2ViS2l0Mi9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrTG9hZENsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw4ICsyNiw2
IEBACiAjaWZuZGVmIE5ldHdvcmtMb2FkQ2xpZW50X2gKICNkZWZpbmUgTmV0d29ya0xvYWRDbGll
bnRfaAogCi0jaWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKLQogI2luY2x1ZGUgPFdlYkNvcmUv
UmVzb3VyY2VFcnJvci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VSZXF1ZXN0Lmg+CiAj
aW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZVJlc3BvbnNlLmg+CkBAIC02Niw3ICs2NCw1IEBAIHB1
YmxpYzoKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKLSNlbmRpZiAvLyBFTkFCTEUoTkVUV09S
S19QUk9DRVNTKQotCiAjZW5kaWYgLy8gTmV0d29ya0xvYWRDbGllbnRfaAogCkluZGV4OiBTb3Vy
Y2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZFBhcmFtZXRlcnMuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkUGFyYW1l
dGVycy5jcHAJKHJldmlzaW9uIDE5MjYwMSkKKysrIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtMb2FkUGFyYW1ldGVycy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI0LDggKzI0
LDYgQEAKICAqLwogCiAjaW5jbHVkZSAiY29uZmlnLmgiCi0KLSNpZiBFTkFCTEUoTkVUV09SS19Q
Uk9DRVNTKQogI2luY2x1ZGUgIk5ldHdvcmtMb2FkUGFyYW1ldGVycy5oIgogCiAjaW5jbHVkZSAi
TmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMuaCIKQEAgLTQ3LDUgKzQ1LDMgQEAgTmV0d29y
a0xvYWRQYXJhbWV0ZXJzOjpOZXR3b3JrTG9hZFBhcmFtZQogfQogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJLaXQKLQotI2VuZGlmIC8vIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCkluZGV4OiBTb3VyY2Uv
V2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZFBhcmFtZXRlcnMuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZFBhcmFtZXRlcnMu
aAkocmV2aXNpb24gMTkyNjAxKQorKysgU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya0xvYWRQYXJhbWV0ZXJzLmgJKHdvcmtpbmcgY29weSkKQEAgLTI2LDggKzI2LDYgQEAKICNp
Zm5kZWYgTmV0d29ya0xvYWRQYXJhbWV0ZXJzX2gKICNkZWZpbmUgTmV0d29ya0xvYWRQYXJhbWV0
ZXJzX2gKIAotI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCi0KICNpbmNsdWRlIDxXZWJDb3Jl
L1Jlc291cmNlTG9hZGVyT3B0aW9ucy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VSZXF1
ZXN0Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZXNzaW9uSUQuaD4KQEAgLTU1LDYgKzUzLDQgQEAg
cHVibGljOgogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAotI2VuZGlmIC8vIEVOQUJMRShORVRX
T1JLX1BST0NFU1MpCi0KICNlbmRpZiAvLyBOZXR3b3JrTG9hZFBhcmFtZXRlcnNfaApJbmRleDog
U291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAko
cmV2aXNpb24gMTkyNjAxKQorKysgU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Byb2Nlc3MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw4ICsyNiw2IEBACiAjaW5jbHVkZSAi
Y29uZmlnLmgiCiAjaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3MuaCIKIAotI2lmIEVOQUJMRShORVRX
T1JLX1BST0NFU1MpCi0KICNpbmNsdWRlICJBcmd1bWVudENvZGVycy5oIgogI2luY2x1ZGUgIkF0
dGFjaG1lbnQuaCIKICNpbmNsdWRlICJBdXRoZW50aWNhdGlvbk1hbmFnZXIuaCIKQEAgLTU1NCw1
ICs1NTIsMyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpwbGF0Zm9ybUxvd01lbW9yeUhhCiAjZW5k
aWYKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KLSNlbmRpZiAvLyBFTkFCTEUoTkVUV09SS19Q
Uk9DRVNTKQpJbmRleDogU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nl
c3MuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
UHJvY2Vzcy5oCShyZXZpc2lvbiAxOTI2MDEpCisrKyBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw4ICsyNiw2IEBACiAj
aWZuZGVmIE5ldHdvcmtQcm9jZXNzX2gKICNkZWZpbmUgTmV0d29ya1Byb2Nlc3NfaAogCi0jaWYg
RU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKLQogI2luY2x1ZGUgIkNhY2hlTW9kZWwuaCIKICNpbmNs
dWRlICJDaGlsZFByb2Nlc3MuaCIKICNpbmNsdWRlICJEb3dubG9hZE1hbmFnZXIuaCIKQEAgLTE5
Nyw2ICsxOTUsNCBAQCBwcml2YXRlOgogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAotI2VuZGlm
IC8vIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCi0KICNlbmRpZiAvLyBOZXR3b3JrUHJvY2Vzc19o
CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNz
YWdlcy5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbgkocmV2aXNpb24gMTkyNjAxKQorKysgU291cmNlL1dlYktp
dDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4JKHdvcmtpbmcgY29w
eSkKQEAgLTIwLDggKzIwLDYgQEAKICMgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKICMgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KIAotI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCi0KIG1lc3NhZ2VzIC0+IE5ldHdvcmtQ
cm9jZXNzIExlZ2FjeVJlY2VpdmVyIHsKICAgICAjIEluaXRpYWxpemVzIHRoZSBuZXR3b3JrIHBy
b2Nlc3MuCiAgICAgSW5pdGlhbGl6ZU5ldHdvcmtQcm9jZXNzKHN0cnVjdCBXZWJLaXQ6Ok5ldHdv
cmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzIHByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMpCkBA
IC02Myw1ICs2MSwzIEBAIG1lc3NhZ2VzIC0+IE5ldHdvcmtQcm9jZXNzIExlZ2FjeVJlY2VpdmUK
ICAgICBDYW5jZWxQcmVwYXJlVG9TdXNwZW5kKCkKICAgICBQcm9jZXNzRGlkUmVzdW1lKCkKIH0K
LQotI2VuZGlmIC8vIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCkluZGV4OiBTb3VyY2UvV2ViS2l0
Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAJ
KHJldmlzaW9uIDE5MjYwMSkKKysrIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdv
cmtSZXNvdXJjZUxvYWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2LDggKzI2LDYgQEAKICNp
bmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJOZXR3b3JrUmVzb3VyY2VMb2FkZXIuaCIKIAot
I2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCi0KICNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgi
CiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIk5ldHdvcmtCbG9iUmVnaXN0cnkuaCIK
QEAgLTU4MSw1ICs1NzksMyBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6Y29udGludWVD
YW5BCiAjZW5kaWYKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KLSNlbmRpZiAvLyBFTkFCTEUo
TkVUV09SS19QUk9DRVNTKQpJbmRleDogU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1Jlc291cmNlTG9hZGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmgJKHJldmlzaW9uIDE5MjYwMSkKKysrIFNv
dXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yNiw4ICsyNiw2IEBACiAjaWZuZGVmIE5ldHdvcmtSZXNvdXJjZUxvYWRl
cl9oCiAjZGVmaW5lIE5ldHdvcmtSZXNvdXJjZUxvYWRlcl9oCiAKLSNpZiBFTkFCTEUoTkVUV09S
S19QUk9DRVNTKQotCiAjaW5jbHVkZSAiTWVzc2FnZVNlbmRlci5oIgogI2luY2x1ZGUgIk5ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzTWVzc2FnZXMuaCIKICNpbmNsdWRlICJOZXR3b3JrTG9h
ZENsaWVudC5oIgpAQCAtMTY5LDYgKzE2Nyw0IEBAIHByaXZhdGU6CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYktpdAogCi0jZW5kaWYgLy8gRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKLQogI2VuZGlmIC8v
IE5ldHdvcmtSZXNvdXJjZUxvYWRlcl9oCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIubWVzc2FnZXMuaW4KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLm1lc3NhZ2Vz
LmluCShyZXZpc2lvbiAxOTI2MDEpCisrKyBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrUmVzb3VyY2VMb2FkZXIubWVzc2FnZXMuaW4JKHdvcmtpbmcgY29weSkKQEAgLTIwLDgg
KzIwLDYgQEAKICMgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKICMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KIAotI2lmIEVO
QUJMRShORVRXT1JLX1BST0NFU1MpCi0KIG1lc3NhZ2VzIC0+IE5ldHdvcmtSZXNvdXJjZUxvYWRl
ciBMZWdhY3lSZWNlaXZlciB7CiAKICAgICBDb250aW51ZVdpbGxTZW5kUmVxdWVzdChXZWJDb3Jl
OjpSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdCkKQEAgLTMwLDUgKzI4LDMgQEAgbWVzc2FnZXMgLT4g
TmV0d29ya1Jlc291cmNlTG9hZGVyIExlZ2FjeQogICAgIENvbnRpbnVlQ2FuQXV0aGVudGljYXRl
QWdhaW5zdFByb3RlY3Rpb25TcGFjZShib29sIGNhbkF1dGhlbnRpY2F0ZSkKICNlbmRpZgogfQot
Ci0jZW5kaWYgLy8gRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKSW5kZXg6IFNvdXJjZS9XZWJLaXQy
L05ldHdvcmtQcm9jZXNzL0VudHJ5UG9pbnQvbWFjL0xlZ2FjeVByb2Nlc3MvTmV0d29ya1Byb2Nl
c3NNYWluLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL0Vu
dHJ5UG9pbnQvbWFjL0xlZ2FjeVByb2Nlc3MvTmV0d29ya1Byb2Nlc3NNYWluLm1tCShyZXZpc2lv
biAxOTI2MDEpCisrKyBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9FbnRyeVBvaW50L21h
Yy9MZWdhY3lQcm9jZXNzL05ldHdvcmtQcm9jZXNzTWFpbi5tbQkod29ya2luZyBjb3B5KQpAQCAt
MjUsOCArMjUsNiBAQAogCiAjaW1wb3J0ICJjb25maWcuaCIKIAotI2lmIEVOQUJMRShORVRXT1JL
X1BST0NFU1MpCi0KICNpbXBvcnQgIkNoaWxkUHJvY2Vzc0VudHJ5UG9pbnQuaCIKICNpbXBvcnQg
Ik5ldHdvcmtQcm9jZXNzLmgiCiAjaW1wb3J0ICJXS0Jhc2UuaCIKQEAgLTM5LDUgKzM3LDMgQEAg
aW50IE5ldHdvcmtQcm9jZXNzTWFpbihpbnQgYXJnYywgY2hhcioqIAogewogICAgIHJldHVybiBD
aGlsZFByb2Nlc3NNYWluPE5ldHdvcmtQcm9jZXNzLCBDaGlsZFByb2Nlc3NNYWluRGVsZWdhdGU+
KGFyZ2MsIGFyZ3YpOwogfQotCi0jZW5kaWYgLy8gRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL0VudHJ5UG9pbnQvbWFjL1hQQ1NlcnZp
Y2UvTmV0d29ya1NlcnZpY2VFbnRyeVBvaW50Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQyL05ldHdvcmtQcm9jZXNzL0VudHJ5UG9pbnQvbWFjL1hQQ1NlcnZpY2UvTmV0d29ya1NlcnZp
Y2VFbnRyeVBvaW50Lm1tCShyZXZpc2lvbiAxOTI2MDEpCisrKyBTb3VyY2UvV2ViS2l0Mi9OZXR3
b3JrUHJvY2Vzcy9FbnRyeVBvaW50L21hYy9YUENTZXJ2aWNlL05ldHdvcmtTZXJ2aWNlRW50cnlQ
b2ludC5tbQkod29ya2luZyBjb3B5KQpAQCAtNTIsNyArNTIsNiBAQCBleHRlcm4gIkMiIFdLX0VY
UE9SVCB2b2lkIE5ldHdvcmtTZXJ2aWNlCiAKIHZvaWQgTmV0d29ya1NlcnZpY2VJbml0aWFsaXpl
cih4cGNfY29ubmVjdGlvbl90IGNvbm5lY3Rpb24sIHhwY19vYmplY3RfdCBpbml0aWFsaXplck1l
c3NhZ2UpCiB7Ci0jaWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKICAgICAvLyBSZW1vdmUgdGhl
IFNlY0l0ZW1TaGltIGZyb20gdGhlIERZTERfSU5TRVJUX0xJQlJBUklFUyBlbnZpcm9ubWVudCB2
YXJpYWJsZSBzbyBhbnkgcHJvY2Vzc2VzIHNwYXduZWQgYnkKICAgICAvLyB0aGUgdGhpcyBwcm9j
ZXNzIGRvbid0IHRyeSB0byBpbnNlcnQgdGhlIHNoaW0gYW5kIGNyYXNoLgogICAgIEVudmlyb25t
ZW50VXRpbGl0aWVzOjpzdHJpcFZhbHVlc0VuZGluZ1dpdGhTdHJpbmcoIkRZTERfSU5TRVJUX0xJ
QlJBUklFUyIsICIvU2VjSXRlbVNoaW0uZHlsaWIiKTsKQEAgLTY5LDUgKzY4LDQgQEAgdm9pZCBO
ZXR3b3JrU2VydmljZUluaXRpYWxpemVyKHhwY19jb25uZQogI2lmIEhBVkUoT1NfQUNUSVZJVFkp
CiAgICAgb3NfYWN0aXZpdHlfZW5kKGFjdGl2aXR5KTsKICNlbmRpZgotI2VuZGlmCiB9CkluZGV4
OiBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9GaWxlQVBJL05ldHdvcmtCbG9iUmVnaXN0
cnkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL0ZpbGVB
UEkvTmV0d29ya0Jsb2JSZWdpc3RyeS5jcHAJKHJldmlzaW9uIDE5MjYwMSkKKysrIFNvdXJjZS9X
ZWJLaXQyL05ldHdvcmtQcm9jZXNzL0ZpbGVBUEkvTmV0d29ya0Jsb2JSZWdpc3RyeS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTI2LDggKzI2LDYgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNs
dWRlICJOZXR3b3JrQmxvYlJlZ2lzdHJ5LmgiCiAKLSNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNT
KQotCiAjaW5jbHVkZSAiQmxvYkRhdGFGaWxlUmVmZXJlbmNlV2l0aFNhbmRib3hFeHRlbnNpb24u
aCIKICNpbmNsdWRlICJTYW5kYm94RXh0ZW5zaW9uLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9CbG9i
UGFydC5oPgpAQCAtMTUxLDUgKzE0OSwzIEBAIFZlY3RvcjxSZWZQdHI8QmxvYkRhdGFGaWxlUmVm
ZXJlbmNlPj4gTmUKIH0KIAogfQotCi0jZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL05ldHdv
cmtQcm9jZXNzL0ZpbGVBUEkvTmV0d29ya0Jsb2JSZWdpc3RyeS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL0ZpbGVBUEkvTmV0d29ya0Jsb2JSZWdpc3RyeS5o
CShyZXZpc2lvbiAxOTI2MDEpCisrKyBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9GaWxl
QVBJL05ldHdvcmtCbG9iUmVnaXN0cnkuaAkod29ya2luZyBjb3B5KQpAQCAtMjYsOCArMjYsNiBA
QAogI2lmbmRlZiBOZXR3b3JrQmxvYlJlZ2lzdHJ5X2gKICNkZWZpbmUgTmV0d29ya0Jsb2JSZWdp
c3RyeV9oCiAKLSNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQotCiAjaW5jbHVkZSA8V2ViQ29y
ZS9VUkxIYXNoLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvSGFz
aFNldC5oPgpAQCAtNjgsNiArNjYsNCBAQCBwcml2YXRlOgogCiB9CiAKLSNlbmRpZiAvLyBFTkFC
TEUoTkVUV09SS19QUk9DRVNTKQotCiAjZW5kaWYgLy8gTmV0d29ya0Jsb2JSZWdpc3RyeV9oCklu
ZGV4OiBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrUHJvY2Vzc0Nv
Y29hLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL2NvY29h
L05ldHdvcmtQcm9jZXNzQ29jb2EubW0JKHJldmlzaW9uIDE5MjYwMSkKKysrIFNvdXJjZS9XZWJL
aXQyL05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtQcm9jZXNzQ29jb2EubW0JKHdvcmtpbmcg
Y29weSkKQEAgLTI2LDggKzI2LDYgQEAKICNpbXBvcnQgImNvbmZpZy5oIgogI2ltcG9ydCAiTmV0
d29ya1Byb2Nlc3MuaCIKIAotI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCi0KICNpbXBvcnQg
Ik5ldHdvcmtDYWNoZS5oIgogI2ltcG9ydCAiTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRl
cnMuaCIKICNpbXBvcnQgIk5ldHdvcmtSZXNvdXJjZUxvYWRlci5oIgpAQCAtMjY3LDUgKzI2NSwz
IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmNsZWFyRGlza0NhY2hlKHN0ZDoKIH0KIAogfQotCi0j
ZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL2VmbC9OZXR3b3JrUHJv
Y2Vzc01haW5FZmwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9j
ZXNzL2VmbC9OZXR3b3JrUHJvY2Vzc01haW5FZmwuY3BwCShyZXZpc2lvbiAxOTI2MDEpCisrKyBT
b3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9lZmwvTmV0d29ya1Byb2Nlc3NNYWluRWZsLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMjcsOCArMjcsNiBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgog
I2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzTWFpblVuaXguaCIKIAotI2lmIEVOQUJMRShORVRXT1JL
X1BST0NFU1MpCi0KICNpbmNsdWRlICJDaGlsZFByb2Nlc3NNYWluLmgiCiAjaW5jbHVkZSAiTmV0
d29ya1Byb2Nlc3MuaCIKICNpbmNsdWRlIDxFY29yZS5oPgpAQCAtNzAsNSArNjgsMyBAQCBpbnQg
TmV0d29ya1Byb2Nlc3NNYWluVW5peChpbnQgYXJnYywgY2hhCiB9CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYktpdAotCi0jZW5kaWYgLy8gRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL2d0ay9OZXR3b3JrUHJvY2Vzc01haW5HdGsuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL2d0ay9OZXR3b3JrUHJv
Y2Vzc01haW5HdGsuY3BwCShyZXZpc2lvbiAxOTI2MDEpCisrKyBTb3VyY2UvV2ViS2l0Mi9OZXR3
b3JrUHJvY2Vzcy9ndGsvTmV0d29ya1Byb2Nlc3NNYWluR3RrLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMjcsOCArMjcsNiBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIk5ldHdvcmtQ
cm9jZXNzTWFpblVuaXguaCIKIAotI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCi0KICNpbmNs
dWRlICJDaGlsZFByb2Nlc3NNYWluLmgiCiAjaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3MuaCIKICNp
bmNsdWRlIDxXZWJDb3JlL1NvdXBOZXR3b3JrU2Vzc2lvbi5oPgpAQCAtNjMsNSArNjEsMyBAQCBp
bnQgTmV0d29ya1Byb2Nlc3NNYWluVW5peChpbnQgYXJnYywgY2hhCiB9CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYktpdAotCi0jZW5kaWYgLy8gRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKSW5kZXg6IFNv
dXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL2lvcy9OZXR3b3JrUHJvY2Vzc0lPUy5tbQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9pb3MvTmV0d29ya1Byb2Nl
c3NJT1MubW0JKHJldmlzaW9uIDE5MjYwMSkKKysrIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9j
ZXNzL2lvcy9OZXR3b3JrUHJvY2Vzc0lPUy5tbQkod29ya2luZyBjb3B5KQpAQCAtMjYsNyArMjYs
NyBAQAogI2ltcG9ydCAiY29uZmlnLmgiCiAjaW1wb3J0ICJOZXR3b3JrUHJvY2Vzcy5oIgogCi0j
aWYgUExBVEZPUk0oSU9TKSAmJiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQorI2lmIFBMQVRGT1JN
KElPUykKIAogI2ltcG9ydCAiTmV0d29ya0NhY2hlLmgiCiAjaW1wb3J0ICJOZXR3b3JrUHJvY2Vz
c0NyZWF0aW9uUGFyYW1ldGVycy5oIgpAQCAtMTAxLDQgKzEwMSw0IEBAIHZvaWQgTmV0d29ya1By
b2Nlc3M6OnBsYXRmb3JtVGVybWluYXRlKCkKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKLSNl
bmRpZiAvLyBQTEFURk9STShJT1MpICYmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCisjZW5kaWYg
Ly8gUExBVEZPUk0oSU9TKQpJbmRleDogU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvbWFj
L05ldHdvcmtMb2FkTWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQ
cm9jZXNzL21hYy9OZXR3b3JrTG9hZE1hYy5tbQkocmV2aXNpb24gMTkyNjAxKQorKysgU291cmNl
L1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvbWFjL05ldHdvcmtMb2FkTWFjLm1tCSh3b3JraW5nIGNv
cHkpCkBAIC0yNCw4ICsyNCw2IEBACiAgKi8KIAogI2ltcG9ydCAiY29uZmlnLmgiCi0KLSNpZiBF
TkFCTEUoTkVUV09SS19QUk9DRVNTKQogI2ltcG9ydCAiTmV0d29ya0xvYWQuaCIKIAogI2ltcG9y
dCA8V2ViQ29yZS9DRk5ldHdvcmtTUEkuaD4KQEAgLTYwLDUgKzU4LDMgQEAgdm9pZCBOZXR3b3Jr
TG9hZDo6d2lsbENhY2hlUmVzcG9uc2VBc3luYwogI2VuZGlmIC8vICFVU0UoQ0ZORVRXT1JLKQog
CiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQotI2VuZGlmIC8vIEVOQUJMRShORVRXT1JLX1BST0NF
U1MpCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9tYWMvTmV0d29ya1Byb2Nl
c3NNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvbWFj
L05ldHdvcmtQcm9jZXNzTWFjLm1tCShyZXZpc2lvbiAxOTI2MDEpCisrKyBTb3VyY2UvV2ViS2l0
Mi9OZXR3b3JrUHJvY2Vzcy9tYWMvTmV0d29ya1Byb2Nlc3NNYWMubW0JKHdvcmtpbmcgY29weSkK
QEAgLTI2LDcgKzI2LDcgQEAKICNpbXBvcnQgImNvbmZpZy5oIgogI2ltcG9ydCAiTmV0d29ya1By
b2Nlc3MuaCIKIAotI2lmIFBMQVRGT1JNKE1BQykgJiYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykK
KyNpZiBQTEFURk9STShNQUMpCiAKICNpbXBvcnQgIk5ldHdvcmtDYWNoZS5oIgogI2ltcG9ydCAi
TmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaCIKQEAgLTE0NCw0ICsxNDQsNCBAQCB2
b2lkIE5ldHdvcmtQcm9jZXNzOjpwbGF0Zm9ybVRlcm1pbmF0ZSgpCiAKIH0gLy8gbmFtZXNwYWNl
IFdlYktpdAogCi0jZW5kaWYgLy8gUExBVEZPUk0oTUFDKSAmJiBFTkFCTEUoTkVUV09SS19QUk9D
RVNTKQorI2VuZGlmIC8vIFBMQVRGT1JNKE1BQykKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL05ldHdv
cmtQcm9jZXNzL21hYy9OZXR3b3JrUmVzb3VyY2VMb2FkZXJNYWMubW0KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvbWFjL05ldHdvcmtSZXNvdXJjZUxvYWRlck1h
Yy5tbQkocmV2aXNpb24gMTkyNjAxKQorKysgU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3Mv
bWFjL05ldHdvcmtSZXNvdXJjZUxvYWRlck1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtMjYsOCAr
MjYsNiBAQAogI2ltcG9ydCAiY29uZmlnLmgiCiAjaW1wb3J0ICJOZXR3b3JrUmVzb3VyY2VMb2Fk
ZXIuaCIKIAotI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCi0KICNpbXBvcnQgIk5ldHdvcmtE
aXNrQ2FjaGVNb25pdG9yLmgiCiAjaW1wb3J0ICJTaGFyZWFibGVSZXNvdXJjZS5oIgogI2ltcG9y
dCA8V2ViQ29yZS9DRk5ldHdvcmtTUEkuaD4KQEAgLTkxLDUgKzg5LDMgQEAgdm9pZCBOZXR3b3Jr
UmVzb3VyY2VMb2FkZXI6OndpbGxDYWNoZVJlcwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAot
I2VuZGlmIC8vIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCi0KSW5kZXg6IFNvdXJjZS9XZWJLaXQy
L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya1Byb2Nlc3NTb3VwLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtQcm9jZXNzU291cC5j
cHAJKHJldmlzaW9uIDE5MjYwMSkKKysrIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL3Nv
dXAvTmV0d29ya1Byb2Nlc3NTb3VwLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjUsNyArMjUsNiBA
QAogICovCiAKICNpbmNsdWRlICJjb25maWcuaCIKLSNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNT
KQogI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzLmgiCiAKICNpbmNsdWRlICJOZXR3b3JrQ2FjaGUu
aCIKQEAgLTE3MCw1ICsxNjksMyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpwbGF0Zm9ybVRlcm1p
bmF0ZSgpCiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAotCi0jZW5kaWYKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL3NvdXAvUmVtb3RlTmV0d29ya2luZ0NvbnRleHRTb3Vw
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9zb3VwL1Jl
bW90ZU5ldHdvcmtpbmdDb250ZXh0U291cC5jcHAJKHJldmlzaW9uIDE5MjYwMSkKKysrIFNvdXJj
ZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL3NvdXAvUmVtb3RlTmV0d29ya2luZ0NvbnRleHRTb3Vw
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjYsNyArMjYsNiBAQAogICovCiAKICNpbmNsdWRlICJj
b25maWcuaCIKLSNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQogI2luY2x1ZGUgIlJlbW90ZU5l
dHdvcmtpbmdDb250ZXh0LmgiCiAKICNpbmNsdWRlIDxXZWJDb3JlL05ldHdvcmtTdG9yYWdlU2Vz
c2lvbi5oPgpAQCAtNTcsNSArNTYsMyBAQCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIFJlbW90ZU5l
dHdvcmtpbmdDCiB9CiAKIH0KLQotI2VuZGlmIC8vIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCklu
ZGV4OiBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvUHJvY2Vzc0V4ZWN1dGFibGVQYXRoLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdDIvU2hhcmVkL1Byb2Nlc3NFeGVjdXRhYmxlUGF0aC5oCShy
ZXZpc2lvbiAxOTI2MDEpCisrKyBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvUHJvY2Vzc0V4ZWN1dGFi
bGVQYXRoLmgJKHdvcmtpbmcgY29weSkKQEAgLTMyLDkgKzMyLDcgQEAgbmFtZXNwYWNlIFdlYktp
dCB7CiAKIFN0cmluZyBleGVjdXRhYmxlUGF0aE9mV2ViUHJvY2VzcygpOwogU3RyaW5nIGV4ZWN1
dGFibGVQYXRoT2ZQbHVnaW5Qcm9jZXNzKCk7Ci0jaWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykK
IFN0cmluZyBleGVjdXRhYmxlUGF0aE9mTmV0d29ya1Byb2Nlc3MoKTsKLSNlbmRpZgogI2lmIEVO
QUJMRShEQVRBQkFTRV9QUk9DRVNTKQogU3RyaW5nIGV4ZWN1dGFibGVQYXRoT2ZEYXRhYmFzZVBy
b2Nlc3MoKTsKICNlbmRpZgpJbmRleDogU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlByb2Nlc3ND
cmVhdGlvblBhcmFtZXRlcnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1NoYXJl
ZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcAkocmV2aXNpb24gMTkyNjAxKQorKysg
U291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC00Myw5ICs0Myw2IEBAIFdlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRl
cnM6OldlYlByb2Nlc3MKICAgICAsIHNob3VsZEVuYWJsZUpJVChmYWxzZSkKICAgICAsIHNob3Vs
ZEVuYWJsZUZUTEpJVChmYWxzZSkKICNlbmRpZgotI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1Mp
Ci0gICAgLCB1c2VzTmV0d29ya1Byb2Nlc3MoZmFsc2UpCi0jZW5kaWYKICAgICAsIG1lbW9yeUNh
Y2hlRGlzYWJsZWQoZmFsc2UpCiAjaWYgRU5BQkxFKFNFUlZJQ0VfQ09OVFJPTFMpCiAgICAgLCBo
YXNJbWFnZVNlcnZpY2VzKGZhbHNlKQpAQCAtMTMzLDEwICsxMzAsNiBAQCB2b2lkIFdlYlByb2Nl
c3NDcmVhdGlvblBhcmFtZXRlcnM6OmVuY29kCiAgICAgZW5jb2RlciA8PCBub3RpZmljYXRpb25Q
ZXJtaXNzaW9uczsKICNlbmRpZgogCi0jaWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKLSAgICBl
bmNvZGVyIDw8IHVzZXNOZXR3b3JrUHJvY2VzczsKLSNlbmRpZgotCiAgICAgZW5jb2RlciA8PCBw
bHVnSW5BdXRvU3RhcnRPcmlnaW5IYXNoZXM7CiAgICAgZW5jb2RlciA8PCBwbHVnSW5BdXRvU3Rh
cnRPcmlnaW5zOwogICAgIGVuY29kZXIgPDwgbWVtb3J5Q2FjaGVEaXNhYmxlZDsKQEAgLTI5MSwx
MSArMjg0LDYgQEAgYm9vbCBXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOjpkZWNvZAogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAjZW5kaWYKIAotI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1Mp
Ci0gICAgaWYgKCFkZWNvZGVyLmRlY29kZShwYXJhbWV0ZXJzLnVzZXNOZXR3b3JrUHJvY2Vzcykp
Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSNlbmRpZgotCiAgICAgaWYgKCFkZWNvZGVyLmRlY29k
ZShwYXJhbWV0ZXJzLnBsdWdJbkF1dG9TdGFydE9yaWdpbkhhc2hlcykpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFtZXRlcnMucGx1Z0luQXV0b1N0
YXJ0T3JpZ2lucykpCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViUHJvY2Vzc0NyZWF0
aW9uUGFyYW1ldGVycy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJQ
cm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmgJKHJldmlzaW9uIDE5MjYwMSkKKysrIFNvdXJjZS9X
ZWJLaXQyL1NoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTE1NCwxMCArMTU0LDYgQEAgc3RydWN0IFdlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRl
cnMgewogICAgIEhhc2hNYXA8U3RyaW5nLCBib29sPiBub3RpZmljYXRpb25QZXJtaXNzaW9uczsK
ICNlbmRpZgogCi0jaWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKLSAgICBib29sIHVzZXNOZXR3
b3JrUHJvY2VzczsKLSNlbmRpZgotCiAgICAgSGFzaE1hcDxXZWJDb3JlOjpTZXNzaW9uSUQsIEhh
c2hNYXA8dW5zaWduZWQsIGRvdWJsZT4+IHBsdWdJbkF1dG9TdGFydE9yaWdpbkhhc2hlczsKICAg
ICBWZWN0b3I8U3RyaW5nPiBwbHVnSW5BdXRvU3RhcnRPcmlnaW5zOwogCkluZGV4OiBTb3VyY2Uv
V2ViS2l0Mi9TaGFyZWQvQVBJL2MvV0tEZXByZWNhdGVkRnVuY3Rpb25zLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvV0tEZXByZWNhdGVkRnVuY3Rpb25zLmNw
cAkocmV2aXNpb24gMTkyNjAxKQorKysgU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9jL1dLRGVw
cmVjYXRlZEZ1bmN0aW9ucy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI3LDYgKzI3LDggQEAKIAog
I2luY2x1ZGUgIkFQSURpY3Rpb25hcnkuaCIKICNpbmNsdWRlICJXS0FycmF5LmgiCisjaW5jbHVk
ZSAiV0tDb250ZXh0LmgiCisjaW5jbHVkZSAiV0tDb250ZXh0UHJpdmF0ZS5oIgogI2luY2x1ZGUg
IldLTXV0YWJsZURpY3Rpb25hcnkuaCIKICNpbmNsdWRlICJXS1ByZWZlcmVuY2VzUmVmUHJpdmF0
ZS5oIgogI2luY2x1ZGUgIldLU2hhcmVkQVBJQ2FzdC5oIgpAQCAtMTM0LDYgKzEzNiwxOSBAQCB2
b2lkIFdLSW5zcGVjdG9yVG9nZ2xlSmF2YVNjcmlwdFByb2ZpbGluCiB7CiB9CiAKK3ZvaWQgV0tD
b250ZXh0U2V0UHJvY2Vzc01vZGVsKFdLQ29udGV4dFJlZiwgV0tQcm9jZXNzTW9kZWwpCit7Cit9
CisKK1dLUHJvY2Vzc01vZGVsIFdLQ29udGV4dEdldFByb2Nlc3NNb2RlbChXS0NvbnRleHRSZWYp
Cit7CisgICAgcmV0dXJuIGtXS1Byb2Nlc3NNb2RlbE11bHRpcGxlU2Vjb25kYXJ5UHJvY2Vzc2Vz
OworfQorCit2b2lkIFdLQ29udGV4dFNldFVzZXNOZXR3b3JrUHJvY2VzcyhXS0NvbnRleHRSZWYs
IGJvb2wpCit7Cit9CisKICNpZiBQTEFURk9STShNQUMpCiBDR0NvbnRleHRSZWYgV0tHcmFwaGlj
c0NvbnRleHRHZXRDR0NvbnRleHQoV0tHcmFwaGljc0NvbnRleHRSZWYgZ3JhcGhpY3NDb250ZXh0
KQogewpJbmRleDogU291cmNlL1dlYktpdDIvU2hhcmVkL0F1dGhlbnRpY2F0aW9uL0F1dGhlbnRp
Y2F0aW9uTWFuYWdlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvU2hhcmVkL0F1
dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0aW9uTWFuYWdlci5jcHAJKHJldmlzaW9uIDE5MjYwMSkK
KysrIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9BdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdGlvbk1h
bmFnZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSAiQ2hp
bGRQcm9jZXNzLmgiCiAjaW5jbHVkZSAiRG93bmxvYWQuaCIKICNpbmNsdWRlICJEb3dubG9hZFBy
b3h5TWVzc2FnZXMuaCIKKyNpbmNsdWRlICJOZXR3b3JrUHJvY2Vzc1Byb3h5TWVzc2FnZXMuaCIK
ICNpbmNsdWRlICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIKICNpbmNsdWRlICJXZWJGcmFtZS5o
IgogI2luY2x1ZGUgIldlYlBhZ2UuaCIKQEAgLTM3LDEwICszOCw2IEBACiAjaW5jbHVkZSA8V2Vi
Q29yZS9BdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvQXV0aGVu
dGljYXRpb25DbGllbnQuaD4KIAotI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCi0jaW5jbHVk
ZSAiTmV0d29ya1Byb2Nlc3NQcm94eU1lc3NhZ2VzLmgiCi0jZW5kaWYKLQogdXNpbmcgbmFtZXNw
YWNlIFdlYkNvcmU7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtMTI4LDcgKzEyNSw2IEBAIHZv
aWQgQXV0aGVudGljYXRpb25NYW5hZ2VyOjpkaWRSZWNlaXZlQXUKICAgICBtX3Byb2Nlc3MtPnNl
bmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlKGZyYW1lLT5mcmFtZUlEKCksIGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLCBjaGFsbGVuZ2VJ
RCksIGZyYW1lLT5wYWdlKCktPnBhZ2VJRCgpKTsKIH0KIAotI2lmIEVOQUJMRShORVRXT1JLX1BS
T0NFU1MpCiAjaWYgVVNFKE5FVFdPUktfU0VTU0lPTikKIHZvaWQgQXV0aGVudGljYXRpb25NYW5h
Z2VyOjpkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UodWludDY0X3QgcGFnZUlELCB1
aW50NjRfdCBmcmFtZUlELCBjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYgYXV0aGVudGlj
YXRpb25DaGFsbGVuZ2UsIENoYWxsZW5nZUNvbXBsZXRpb25IYW5kbGVyIGNvbXBsZXRpb25IYW5k
bGVyKQogewpAQCAtMTU3LDcgKzE1Myw2IEBAIHZvaWQgQXV0aGVudGljYXRpb25NYW5hZ2VyOjpk
aWRSZWNlaXZlQXUKICAgICAKICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQ
cm9jZXNzUHJveHk6OkRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShwYWdlSUQsIGZy
YW1lSUQsIGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLCBjaGFsbGVuZ2VJRCkpOwogfQotI2VuZGlm
CiAKICNpZiAhVVNFKE5FVFdPUktfU0VTU0lPTikKIHZvaWQgQXV0aGVudGljYXRpb25NYW5hZ2Vy
OjpkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoRG93bmxvYWQqIGRvd25sb2FkLCBj
b25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYgYXV0aGVudGljYXRpb25DaGFsbGVuZ2UpCklu
ZGV4OiBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0NyZWF0aW9u
UGFyYW1ldGVycy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvU2hhcmVkL05ldHdv
cmsvTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuY3BwCShyZXZpc2lvbiAxOTI2MDEp
CisrKyBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0NyZWF0aW9u
UGFyYW1ldGVycy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2LDggKzI2LDYgQEAKICNpbmNsdWRl
ICJjb25maWcuaCIKICNpbmNsdWRlICJOZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5o
IgogCi0jaWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKLQogI2luY2x1ZGUgIkFyZ3VtZW50Q29k
ZXJzLmgiCiAKICNpZiBQTEFURk9STShDT0NPQSkKQEAgLTE2OCw1ICsxNjYsMyBAQCBib29sIE5l
dHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOjpkCiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YktpdAotCi0jZW5kaWYgLy8gRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQyL1NoYXJlZC9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvU2hhcmVkL05ldHdvcmsvTmV0d29ya1Byb2Nl
c3NDcmVhdGlvblBhcmFtZXRlcnMuaAkocmV2aXNpb24gMTkyNjAxKQorKysgU291cmNlL1dlYktp
dDIvU2hhcmVkL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaAkod29y
a2luZyBjb3B5KQpAQCAtMjYsOCArMjYsNiBAQAogI2lmbmRlZiBOZXR3b3JrUHJvY2Vzc0NyZWF0
aW9uUGFyYW1ldGVyc19oCiAjZGVmaW5lIE5ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJz
X2gKIAotI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCi0KICNpbmNsdWRlICJDYWNoZU1vZGVs
LmgiCiAjaW5jbHVkZSAiU2FuZGJveEV4dGVuc2lvbi5oIgogI2luY2x1ZGUgPHd0Zi9WZWN0b3Iu
aD4KQEAgLTEwMyw2ICsxMDEsNCBAQCBzdHJ1Y3QgTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFt
ZXRlcnMgCiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCi0jZW5kaWYgLy8gRU5BQkxFKE5FVFdP
UktfUFJPQ0VTUykKLQogI2VuZGlmIC8vIE5ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJz
X2gKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9OZXR3b3JrL05ldHdvcmtQcm9jZXNzU3Vw
cGxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9OZXR3b3JrL05l
dHdvcmtQcm9jZXNzU3VwcGxlbWVudC5oCShyZXZpc2lvbiAxOTI2MDEpCisrKyBTb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1N1cHBsZW1lbnQuaAkod29ya2luZyBj
b3B5KQpAQCAtMzMsMTIgKzMzLDEwIEBAIG5hbWVzcGFjZSBXZWJLaXQgewogc3RydWN0IE5ldHdv
cmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOwogCiBjbGFzcyBOZXR3b3JrUHJvY2Vzc1N1cHBs
ZW1lbnQgOiBwdWJsaWMgQ2hpbGRQcm9jZXNzU3VwcGxlbWVudCB7Ci0jaWYgRU5BQkxFKE5FVFdP
UktfUFJPQ0VTUykKIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgaW5pdGlhbGl6ZShjb25zdCBO
ZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycyYpCiAgICAgewogICAgIH0KLSNlbmRpZgog
fTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQv
TmV0d29yay9OZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycy5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdDIvU2hhcmVkL05ldHdvcmsvTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRl
cnMuY3BwCShyZXZpc2lvbiAxOTI2MDEpCisrKyBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvTmV0d29y
ay9OZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMw
LDggKzMwLDYgQEAKICNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiV2ViQ29y
ZUFyZ3VtZW50Q29kZXJzLmgiCiAKLSNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQotCiB1c2lu
ZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC0xNjAsNSArMTU4
LDMgQEAgYm9vbCBOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVyczo6ZGVjbwogfQogICAgIAog
fSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KLSNlbmRpZiAvLyBFTkFCTEUoTkVUV09SS19QUk9DRVNT
KQpJbmRleDogU291cmNlL1dlYktpdDIvU2hhcmVkL05ldHdvcmsvTmV0d29ya1Jlc291cmNlTG9h
ZFBhcmFtZXRlcnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvTmV0d29y
ay9OZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycy5oCShyZXZpc2lvbiAxOTI2MDEpCisrKyBT
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvTmV0d29yay9OZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVy
cy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw4ICszMiw2IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9S
ZXNvdXJjZVJlcXVlc3QuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Nlc3Npb25JRC5oPgogCi0jaWYg
RU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKLQogbmFtZXNwYWNlIElQQyB7CiAgICAgY2xhc3MgQXJn
dW1lbnREZWNvZGVyOwogICAgIGNsYXNzIEFyZ3VtZW50RW5jb2RlcjsKQEAgLTY4LDYgKzY2LDQg
QEAgcHVibGljOgogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAotI2VuZGlmIC8vIEVOQUJMRShO
RVRXT1JLX1BST0NFU1MpCi0KICNlbmRpZiAvLyBOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVy
c19oCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvTmV0d29yay9DdXN0b21Qcm90b2NvbHMv
Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvU2hh
cmVkL05ldHdvcmsvQ3VzdG9tUHJvdG9jb2xzL0N1c3RvbVByb3RvY29sTWFuYWdlci5oCShyZXZp
c2lvbiAxOTI2MDEpCisrKyBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvTmV0d29yay9DdXN0b21Qcm90
b2NvbHMvQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyLmgJKHdvcmtpbmcgY29weSkKQEAgLTgzLDEwICs4
Myw4IEBAIHByaXZhdGU6CiAgICAgLy8gV2ViUHJvY2Vzc1N1cHBsZW1lbnQKICAgICB2b2lkIGlu
aXRpYWxpemUoY29uc3QgV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycyYpIG92ZXJyaWRlOwog
Ci0jaWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKICAgICAvLyBOZXR3b3JrUHJvY2Vzc1N1cHBs
ZW1lbnQKICAgICB2b2lkIGluaXRpYWxpemUoY29uc3QgTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBh
cmFtZXRlcnMmKSBvdmVycmlkZTsKLSNlbmRpZgogCiAgICAgLy8gSVBDOjpNZXNzYWdlUmVjZWl2
ZXIKICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwg
SVBDOjpNZXNzYWdlRGVjb2RlciYpIG92ZXJyaWRlOwpJbmRleDogU291cmNlL1dlYktpdDIvU2hh
cmVkL05ldHdvcmsvQ3VzdG9tUHJvdG9jb2xzL0NvY29hL0N1c3RvbVByb3RvY29sTWFuYWdlckNv
Y29hLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9OZXR3b3JrL0N1c3Rv
bVByb3RvY29scy9Db2NvYS9DdXN0b21Qcm90b2NvbE1hbmFnZXJDb2NvYS5tbQkocmV2aXNpb24g
MTkyNjAxKQorKysgU291cmNlL1dlYktpdDIvU2hhcmVkL05ldHdvcmsvQ3VzdG9tUHJvdG9jb2xz
L0NvY29hL0N1c3RvbVByb3RvY29sTWFuYWdlckNvY29hLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0z
MCw2ICszMCw3IEBACiAjaW1wb3J0ICJDdXN0b21Qcm90b2NvbE1hbmFnZXJNZXNzYWdlcy5oIgog
I2ltcG9ydCAiQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHlNZXNzYWdlcy5oIgogI2ltcG9ydCAi
RGF0YVJlZmVyZW5jZS5oIgorI2ltcG9ydCAiTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRl
cnMuaCIKICNpbXBvcnQgIldlYkNvcmVBcmd1bWVudENvZGVycy5oIgogI2ltcG9ydCAiV2ViUHJv
Y2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oIgogI2ltcG9ydCA8V2ViQ29yZS9VUkwuaD4KQEAgLTM3
LDEwICszOCw2IEBACiAjaW1wb3J0IDxXZWJDb3JlL1Jlc291cmNlUmVxdWVzdC5oPgogI2ltcG9y
dCA8V2ViQ29yZS9SZXNvdXJjZVJlc3BvbnNlLmg+CiAKLSNpZiBFTkFCTEUoTkVUV09SS19QUk9D
RVNTKQotI2ltcG9ydCAiTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaCIKLSNlbmRp
ZgotCiAjaWZkZWYgX19oYXNfaW5jbHVkZQogI2lmIF9faGFzX2luY2x1ZGUoPEZvdW5kYXRpb24v
TlNVUkxDb25uZWN0aW9uUHJpdmF0ZS5oPikKICNpbXBvcnQgPEZvdW5kYXRpb24vTlNVUkxDb25u
ZWN0aW9uUHJpdmF0ZS5oPgpAQCAtMTM3LDIyICsxMzQsMTEgQEAgdm9pZCBDdXN0b21Qcm90b2Nv
bE1hbmFnZXI6OmluaXRpYWxpemVDbwogCiB2b2lkIEN1c3RvbVByb3RvY29sTWFuYWdlcjo6aW5p
dGlhbGl6ZShjb25zdCBXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQog
ewotI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCi0gICAgQVNTRVJUKHBhcmFtZXRlcnMudXJs
U2NoZW1lc1JlZ2lzdGVyZWRGb3JDdXN0b21Qcm90b2NvbHMuaXNFbXB0eSgpIHx8ICFwYXJhbWV0
ZXJzLnVzZXNOZXR3b3JrUHJvY2Vzcyk7Ci0gICAgaWYgKHBhcmFtZXRlcnMudXNlc05ldHdvcmtQ
cm9jZXNzKSB7Ci0gICAgICAgIG1fY2hpbGRQcm9jZXNzLT5wYXJlbnRQcm9jZXNzQ29ubmVjdGlv
bigpLT5yZW1vdmVXb3JrUXVldWVNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OkN1c3RvbVByb3Rv
Y29sTWFuYWdlcjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpKTsKLSAgICAgICAgbV9tZXNzYWdlUXVl
dWUgPSBudWxscHRyOwotICAgICAgICByZXR1cm47Ci0gICAgfQotI2VuZGlmCi0KLSAgICBbTlNV
UkxQcm90b2NvbCByZWdpc3RlckNsYXNzOltXS0N1c3RvbVByb3RvY29sIGNsYXNzXV07Ci0KLSAg
ICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHBhcmFtZXRlcnMudXJsU2NoZW1lc1JlZ2lzdGVyZWRG
b3JDdXN0b21Qcm90b2NvbHMuc2l6ZSgpOyArK2kpCi0gICAgICAgIHJlZ2lzdGVyU2NoZW1lKHBh
cmFtZXRlcnMudXJsU2NoZW1lc1JlZ2lzdGVyZWRGb3JDdXN0b21Qcm90b2NvbHNbaV0pOworICAg
IEFTU0VSVChwYXJhbWV0ZXJzLnVybFNjaGVtZXNSZWdpc3RlcmVkRm9yQ3VzdG9tUHJvdG9jb2xz
LmlzRW1wdHkoKSk7CisgICAgbV9jaGlsZFByb2Nlc3MtPnBhcmVudFByb2Nlc3NDb25uZWN0aW9u
KCktPnJlbW92ZVdvcmtRdWV1ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6Q3VzdG9tUHJvdG9j
b2xNYW5hZ2VyOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCkpOworICAgIG1fbWVzc2FnZVF1ZXVlID0g
bnVsbHB0cjsKIH0KIAotI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCiB2b2lkIEN1c3RvbVBy
b3RvY29sTWFuYWdlcjo6aW5pdGlhbGl6ZShjb25zdCBOZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFy
YW1ldGVycyYgcGFyYW1ldGVycykKIHsKICAgICBbTlNVUkxQcm90b2NvbCByZWdpc3RlckNsYXNz
OltXS0N1c3RvbVByb3RvY29sIGNsYXNzXV07CkBAIC0xNjAsNyArMTQ2LDYgQEAgdm9pZCBDdXN0
b21Qcm90b2NvbE1hbmFnZXI6OmluaXRpYWxpemUoYwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgcGFyYW1ldGVycy51cmxTY2hlbWVzUmVnaXN0ZXJlZEZvckN1c3RvbVByb3RvY29scy5zaXpl
KCk7ICsraSkKICAgICAgICAgcmVnaXN0ZXJTY2hlbWUocGFyYW1ldGVycy51cmxTY2hlbWVzUmVn
aXN0ZXJlZEZvckN1c3RvbVByb3RvY29sc1tpXSk7CiB9Ci0jZW5kaWYKIAogdm9pZCBDdXN0b21Q
cm90b2NvbE1hbmFnZXI6OmFkZEN1c3RvbVByb3RvY29sKFdLQ3VzdG9tUHJvdG9jb2wgKmN1c3Rv
bVByb3RvY29sKQogewpJbmRleDogU291cmNlL1dlYktpdDIvU2hhcmVkL05ldHdvcmsvQ3VzdG9t
UHJvdG9jb2xzL3NvdXAvQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyU291cC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdDIvU2hhcmVkL05ldHdvcmsvQ3VzdG9tUHJvdG9jb2xzL3NvdXAvQ3Vz
dG9tUHJvdG9jb2xNYW5hZ2VyU291cC5jcHAJKHJldmlzaW9uIDE5MjYwMSkKKysrIFNvdXJjZS9X
ZWJLaXQyL1NoYXJlZC9OZXR3b3JrL0N1c3RvbVByb3RvY29scy9zb3VwL0N1c3RvbVByb3RvY29s
TWFuYWdlclNvdXAuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMywxMyArMjMsMTAgQEAKICNpbmNs
dWRlICJDaGlsZFByb2Nlc3MuaCIKICNpbmNsdWRlICJDdXN0b21Qcm90b2NvbE1hbmFnZXJJbXBs
LmgiCiAjaW5jbHVkZSAiQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyTWVzc2FnZXMuaCIKKyNpbmNsdWRl
ICJOZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oIgogI2luY2x1ZGUgIldlYlByb2Nl
c3NDcmVhdGlvblBhcmFtZXRlcnMuaCIKICNpbmNsdWRlIDxXZWJDb3JlL05vdEltcGxlbWVudGVk
Lmg+CiAKLSNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQotI2luY2x1ZGUgIk5ldHdvcmtQcm9j
ZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmgiCi0jZW5kaWYKLQogbmFtZXNwYWNlIFdlYktpdCB7CiAK
IGNvbnN0IGNoYXIqIEN1c3RvbVByb3RvY29sTWFuYWdlcjo6c3VwcGxlbWVudE5hbWUoKQpAQCAt
NTEsMjUgKzQ4LDE2IEBAIHZvaWQgQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyOjppbml0aWFsaXplQ28K
IAogdm9pZCBDdXN0b21Qcm90b2NvbE1hbmFnZXI6OmluaXRpYWxpemUoY29uc3QgV2ViUHJvY2Vz
c0NyZWF0aW9uUGFyYW1ldGVycyYgcGFyYW1ldGVycykKIHsKLSNpZiBFTkFCTEUoTkVUV09SS19Q
Uk9DRVNTKQotICAgIEFTU0VSVChwYXJhbWV0ZXJzLnVybFNjaGVtZXNSZWdpc3RlcmVkRm9yQ3Vz
dG9tUHJvdG9jb2xzLmlzRW1wdHkoKSB8fCAhcGFyYW1ldGVycy51c2VzTmV0d29ya1Byb2Nlc3Mp
OwotICAgIGlmIChwYXJhbWV0ZXJzLnVzZXNOZXR3b3JrUHJvY2VzcykgewotICAgICAgICBtX2No
aWxkUHJvY2Vzcy0+cGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+cmVtb3ZlV29ya1F1ZXVlTWVz
c2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpDdXN0b21Qcm90b2NvbE1hbmFnZXI6Om1lc3NhZ2VSZWNl
aXZlck5hbWUoKSk7Ci0gICAgICAgIG1fbWVzc2FnZVF1ZXVlID0gbnVsbHB0cjsKLSAgICAgICAg
cmV0dXJuOwotICAgIH0KLSNlbmRpZgotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcGFyYW1l
dGVycy51cmxTY2hlbWVzUmVnaXN0ZXJlZEZvckN1c3RvbVByb3RvY29scy5zaXplKCk7ICsraSkK
LSAgICAgICAgcmVnaXN0ZXJTY2hlbWUocGFyYW1ldGVycy51cmxTY2hlbWVzUmVnaXN0ZXJlZEZv
ckN1c3RvbVByb3RvY29sc1tpXSk7CisgICAgQVNTRVJUKHBhcmFtZXRlcnMudXJsU2NoZW1lc1Jl
Z2lzdGVyZWRGb3JDdXN0b21Qcm90b2NvbHMuaXNFbXB0eSgpKTsKKyAgICBtX2NoaWxkUHJvY2Vz
cy0+cGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+cmVtb3ZlV29ya1F1ZXVlTWVzc2FnZVJlY2Vp
dmVyKE1lc3NhZ2VzOjpDdXN0b21Qcm90b2NvbE1hbmFnZXI6Om1lc3NhZ2VSZWNlaXZlck5hbWUo
KSk7CisgICAgbV9tZXNzYWdlUXVldWUgPSBudWxscHRyOwogfQogCi0jaWYgRU5BQkxFKE5FVFdP
UktfUFJPQ0VTUykKIHZvaWQgQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyOjppbml0aWFsaXplKGNvbnN0
IE5ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQogewogICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgcGFyYW1ldGVycy51cmxTY2hlbWVzUmVnaXN0ZXJlZEZvckN1
c3RvbVByb3RvY29scy5zaXplKCk7ICsraSkKICAgICAgICAgcmVnaXN0ZXJTY2hlbWUocGFyYW1l
dGVycy51cmxTY2hlbWVzUmVnaXN0ZXJlZEZvckN1c3RvbVByb3RvY29sc1tpXSk7CiB9Ci0jZW5k
aWYKIAogdm9pZCBDdXN0b21Qcm90b2NvbE1hbmFnZXI6OnJlZ2lzdGVyU2NoZW1lKGNvbnN0IFN0
cmluZyYgc2NoZW1lKQogewpJbmRleDogU291cmNlL1dlYktpdDIvU2hhcmVkL2VmbC9Qcm9jZXNz
RXhlY3V0YWJsZVBhdGhFZmwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1NoYXJl
ZC9lZmwvUHJvY2Vzc0V4ZWN1dGFibGVQYXRoRWZsLmNwcAkocmV2aXNpb24gMTkyNjAxKQorKysg
U291cmNlL1dlYktpdDIvU2hhcmVkL2VmbC9Qcm9jZXNzRXhlY3V0YWJsZVBhdGhFZmwuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC04MSwxNCArODEsMTIgQEAgU3RyaW5nIGV4ZWN1dGFibGVQYXRoT2ZQ
bHVnaW5Qcm9jZXNzKCkKICAgICByZXR1cm4gd2ViS2l0UGx1Z2luUHJvY2Vzc05hbWU7CiB9CiAK
LSNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQogU3RyaW5nIGV4ZWN1dGFibGVQYXRoT2ZOZXR3
b3JrUHJvY2VzcygpCiB7CiAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPGNvbnN0IFN0cmluZz4g
d2ViS2l0TmV0d29ya1Byb2Nlc3NOYW1lKGZpbmRQcm9jZXNzUGF0aChORVRXT1JLUFJPQ0VTU05B
TUUpKTsKIAogICAgIHJldHVybiB3ZWJLaXROZXR3b3JrUHJvY2Vzc05hbWU7CiB9Ci0jZW5kaWYK
IAogI2lmIEVOQUJMRShEQVRBQkFTRV9QUk9DRVNTKQogU3RyaW5nIGV4ZWN1dGFibGVQYXRoT2ZE
YXRhYmFzZVByb2Nlc3MoKQpJbmRleDogU291cmNlL1dlYktpdDIvU2hhcmVkL2d0ay9Qcm9jZXNz
RXhlY3V0YWJsZVBhdGhHdGsuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1NoYXJl
ZC9ndGsvUHJvY2Vzc0V4ZWN1dGFibGVQYXRoR3RrLmNwcAkocmV2aXNpb24gMTkyNjAxKQorKysg
U291cmNlL1dlYktpdDIvU2hhcmVkL2d0ay9Qcm9jZXNzRXhlY3V0YWJsZVBhdGhHdGsuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC03OSwxMiArNzksMTAgQEAgU3RyaW5nIGV4ZWN1dGFibGVQYXRoT2ZQ
bHVnaW5Qcm9jZXNzKCkKICAgICByZXR1cm4gZmluZFdlYktpdFByb2Nlc3MoIldlYktpdFBsdWdp
blByb2Nlc3MiKTsKIH0KIAotI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCiBTdHJpbmcgZXhl
Y3V0YWJsZVBhdGhPZk5ldHdvcmtQcm9jZXNzKCkKIHsKICAgICByZXR1cm4gZmluZFdlYktpdFBy
b2Nlc3MoIldlYktpdE5ldHdvcmtQcm9jZXNzIik7CiB9Ci0jZW5kaWYKIAogI2lmIEVOQUJMRShE
QVRBQkFTRV9QUk9DRVNTKQogU3RyaW5nIGV4ZWN1dGFibGVQYXRoT2ZEYXRhYmFzZVByb2Nlc3Mo
KQpJbmRleDogU291cmNlL1dlYktpdDIvU2hhcmVkL21hYy9Db29raWVTdG9yYWdlU2hpbS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9tYWMvQ29va2llU3RvcmFnZVNoaW0u
aAkocmV2aXNpb24gMTkyNjAxKQorKysgU291cmNlL1dlYktpdDIvU2hhcmVkL21hYy9Db29raWVT
dG9yYWdlU2hpbS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw4ICsyNiw2IEBACiAjaWZuZGVmIENv
b2tpZVN0b3JhZ2VTaGltX2gKICNkZWZpbmUgQ29va2llU3RvcmFnZVNoaW1faAogCi0jaWYgRU5B
QkxFKE5FVFdPUktfUFJPQ0VTUykKLQogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgogI2lu
Y2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogCkBAIC00OSw2ICs0Nyw0IEBAIHByaXZhdGU6
CiAKIH0KIAotI2VuZGlmIC8vIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCi0KICNlbmRpZiAvLyBD
b29raWVTdG9yYWdlU2hpbV9oCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvbWFjL0Nvb2tp
ZVN0b3JhZ2VTaGltLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9tYWMv
Q29va2llU3RvcmFnZVNoaW0ubW0JKHJldmlzaW9uIDE5MjYwMSkKKysrIFNvdXJjZS9XZWJLaXQy
L1NoYXJlZC9tYWMvQ29va2llU3RvcmFnZVNoaW0ubW0JKHdvcmtpbmcgY29weSkKQEAgLTI2LDgg
KzI2LDYgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJDb29raWVTdG9yYWdlU2hp
bS5oIgogCi0jaWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKLQogI2luY2x1ZGUgIkNvb2tpZVN0
b3JhZ2VTaGltTGlicmFyeS5oIgogI2luY2x1ZGUgIk5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzLmgiCiAjaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmgiCkBAIC0xMzUsNSAr
MTMzLDMgQEAgLSAodm9pZClfZ2V0Q29va2llSGVhZGVyc0ZvclRhc2s6KE5TVVJMUwogfQogCiBA
ZW5kCi0KLSNlbmRpZiAvLyBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQpJbmRleDogU291cmNlL1dl
YktpdDIvU2hhcmVkL21hYy9Db29raWVTdG9yYWdlU2hpbUxpYnJhcnkuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9tYWMvQ29va2llU3RvcmFnZVNoaW1MaWJyYXJ5LmNw
cAkocmV2aXNpb24gMTkyNjAxKQorKysgU291cmNlL1dlYktpdDIvU2hhcmVkL21hYy9Db29raWVT
dG9yYWdlU2hpbUxpYnJhcnkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw3ICsyNiw3IEBACiAj
aW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiQ29va2llU3RvcmFnZVNoaW1MaWJyYXJ5Lmgi
CiAKLSNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKSAmJiAhUExBVEZPUk0oSU9TKQorI2lmICFQ
TEFURk9STShJT1MpCiAKICNpbmNsdWRlIDxXZWJDb3JlL0R5bmFtaWNMaW5rZXJJbnRlcnBvc2lu
Zy5oPgogCkBAIC05MCw0ICs5MCw0IEBAIHZvaWQgV2ViS2l0Q29va2llU3RvcmFnZVNoaW1Jbml0
aWFsaXplKGMKICAgICAKIH0KIAotI2VuZGlmIC8vIEVOQUJMRShORVRXT1JLX1BST0NFU1MpICYm
ICFQTEFURk9STShJT1MpCisjZW5kaWYgLy8gIVBMQVRGT1JNKElPUykKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQyL1NoYXJlZC9tYWMvQ29va2llU3RvcmFnZVNoaW1MaWJyYXJ5LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdDIvU2hhcmVkL21hYy9Db29raWVTdG9yYWdlU2hpbUxpYnJhcnkuaAko
cmV2aXNpb24gMTkyNjAxKQorKysgU291cmNlL1dlYktpdDIvU2hhcmVkL21hYy9Db29raWVTdG9y
YWdlU2hpbUxpYnJhcnkuaAkod29ya2luZyBjb3B5KQpAQCAtMjYsOCArMjYsNiBAQAogI2lmbmRl
ZiBDb29raWVTdG9yYWdlU2hpbUxpYnJhcnlfaAogI2RlZmluZSBDb29raWVTdG9yYWdlU2hpbUxp
YnJhcnlfaAogCi0jaWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKLQogdHlwZWRlZiBzdHJ1Y3Qg
T3BhcXVlQ0ZIVFRQQ29va2llU3RvcmFnZSogIENGSFRUUENvb2tpZVN0b3JhZ2VSZWY7CiAKIG5h
bWVzcGFjZSBXZWJLaXQgewpAQCAtNDAsNiArMzgsNCBAQCB0eXBlZGVmIHZvaWQgKCpDb29raWVT
dG9yYWdlU2hpbUluaXRpYWxpCiAKIH0KIAotI2VuZGlmIC8vIEVOQUJMRShORVRXT1JLX1BST0NF
U1MpCi0KICNlbmRpZiAvLyBDb29raWVTdG9yYWdlU2hpbUxpYnJhcnlfaApJbmRleDogU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1Byb2Nlc3NNb2RlbC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9Qcm9jZXNzTW9kZWwuaAkocmV2aXNpb24gMTkyNjAxKQorKysgU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1Byb2Nlc3NNb2RlbC5oCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDM4ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0
OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIFByb2Nlc3NNb2RlbF9oCi0jZGVmaW5l
IFByb2Nlc3NNb2RlbF9oCi0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi1lbnVtIFByb2Nlc3NNb2Rl
bCB7Ci0gICAgUHJvY2Vzc01vZGVsU2hhcmVkU2Vjb25kYXJ5UHJvY2VzcywKLSAgICBQcm9jZXNz
TW9kZWxNdWx0aXBsZVNlY29uZGFyeVByb2Nlc3NlcwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2Vi
S2l0Ci0KLSNlbmRpZiAvLyBQcm9jZXNzTW9kZWxfaApJbmRleDogU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1dlYkNvb2tpZU1hbmFnZXJQcm94eS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL1dlYkNvb2tpZU1hbmFnZXJQcm94eS5jcHAJKHJldmlzaW9uIDE5MjYw
MSkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb29raWVNYW5hZ2VyUHJveHkuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC04NSw4ICs4NSw4IEBAIHZvaWQgV2ViQ29va2llTWFuYWdlclBy
b3h5Ojpwcm9jZXNzRGlkQ2wKIAogYm9vbCBXZWJDb29raWVNYW5hZ2VyUHJveHk6OnNob3VsZFRl
cm1pbmF0ZShXZWJQcm9jZXNzUHJveHkqKSBjb25zdAogewotICAgIHJldHVybiBwcm9jZXNzUG9v
bCgpLT5wcm9jZXNzTW9kZWwoKSAhPSBQcm9jZXNzTW9kZWxTaGFyZWRTZWNvbmRhcnlQcm9jZXNz
Ci0gICAgICAgIHx8IChtX2FycmF5Q2FsbGJhY2tzLmlzRW1wdHkoKSAmJiBtX2h0dHBDb29raWVB
Y2NlcHRQb2xpY3lDYWxsYmFja3MuaXNFbXB0eSgpKTsKKyAgICAvLyBGSVhNRTogUmVtb3ZlIHRo
aXMuCisgICAgcmV0dXJuIHRydWU7CiB9CiAKIHZvaWQgV2ViQ29va2llTWFuYWdlclByb3h5Ojpy
ZWZXZWJDb250ZXh0U3VwcGxlbWVudCgpCkBAIC0xNjMsMTAgKzE2Myw3IEBAIHZvaWQgV2ViQ29v
a2llTWFuYWdlclByb3h5OjpzZXRIVFRQQ29va2kKICAgICAvLyAtIFdoZW4gdGVzdGluZywgd2Ug
b25seSBoYXZlIG9uZSBXZWJQcm9jZXNzIGFuZCBvbmUgTmV0d29ya1Byb2Nlc3MsIGFuZCBXZWJL
aXRUZXN0UnVubmVyIG5ldmVyIHJlc3RhcnRzIHRoZW07CiAgICAgLy8gLSBXaGVuIG5vdCB0ZXN0
aW5nLCBDb2NvYSBoYXMgdGhlIHBvbGljeSBwZXJzaXN0ZWQsIGFuZCB0aHVzIG5ldyBwcm9jZXNz
ZXMgdXNlIGl0IChldmVuIGZvciBlcGhlbWVyYWwgc2Vzc2lvbnMpLgogICAgIHByb2Nlc3NQb29s
KCktPnNlbmRUb0FsbFByb2Nlc3NlcyhNZXNzYWdlczo6V2ViQ29va2llTWFuYWdlcjo6U2V0SFRU
UENvb2tpZUFjY2VwdFBvbGljeShwb2xpY3kpKTsKLSNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNT
KQotICAgIGlmIChwcm9jZXNzUG9vbCgpLT51c2VzTmV0d29ya1Byb2Nlc3MoKSkKLSAgICAgICAg
cHJvY2Vzc1Bvb2woKS0+c2VuZFRvTmV0d29ya2luZ1Byb2Nlc3MoTWVzc2FnZXM6OldlYkNvb2tp
ZU1hbmFnZXI6OlNldEhUVFBDb29raWVBY2NlcHRQb2xpY3kocG9saWN5KSk7Ci0jZW5kaWYKKyAg
ICBwcm9jZXNzUG9vbCgpLT5zZW5kVG9OZXR3b3JraW5nUHJvY2VzcyhNZXNzYWdlczo6V2ViQ29v
a2llTWFuYWdlcjo6U2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeShwb2xpY3kpKTsKIH0KIAogdm9p
ZCBXZWJDb29raWVNYW5hZ2VyUHJveHk6OmdldEhUVFBDb29raWVBY2NlcHRQb2xpY3koc3RkOjpm
dW5jdGlvbjx2b2lkIChIVFRQQ29va2llQWNjZXB0UG9saWN5LCBDYWxsYmFja0Jhc2U6OkVycm9y
KT4gY2FsbGJhY2tGdW5jdGlvbikKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJJ
bnNwZWN0b3JQcm94eS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1dlYkluc3BlY3RvclByb3h5LmNwcAkocmV2aXNpb24gMTkyNjAxKQorKysgU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1dlYkluc3BlY3RvclByb3h5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzEy
LDcgKzMxMiw2IEBAIFdlYlByb2Nlc3NQb29sJiBXZWJJbnNwZWN0b3JQcm94eTo6aW5zcGUKICAg
ICAvLyBndWFyYW50ZWVzIG5vIHByb2Nlc3Mgc2hhcmluZyBmb3Igb3VyIHVzZXIgaW50ZXJmYWNl
LgogICAgIGlmICghc19wcm9jZXNzUG9vbCkgewogICAgICAgICBhdXRvIGNvbmZpZ3VyYXRpb24g
PSBBUEk6OlByb2Nlc3NQb29sQ29uZmlndXJhdGlvbjo6Y3JlYXRlV2l0aExlZ2FjeU9wdGlvbnMo
KTsKLSAgICAgICAgY29uZmlndXJhdGlvbi0+c2V0UHJvY2Vzc01vZGVsKFByb2Nlc3NNb2RlbE11
bHRpcGxlU2Vjb25kYXJ5UHJvY2Vzc2VzKTsKICAgICAgICAgc19wcm9jZXNzUG9vbCA9ICZXZWJQ
cm9jZXNzUG9vbDo6Y3JlYXRlKGNvbmZpZ3VyYXRpb24uZ2V0KCkpLmxlYWtSZWYoKTsKICAgICB9
OwogCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAkocmV2
aXNpb24gMTkyNjAxKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTYwLDYgKzYwLDcgQEAKICNpbmNsdWRlICJOYXRpdmVXZWJN
b3VzZUV2ZW50LmgiCiAjaW5jbHVkZSAiTmF0aXZlV2ViV2hlZWxFdmVudC5oIgogI2luY2x1ZGUg
Ik5hdmlnYXRpb25BY3Rpb25EYXRhLmgiCisjaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3NNZXNzYWdl
cy5oIgogI2luY2x1ZGUgIk5vdGlmaWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0LmgiCiAjaW5jbHVk
ZSAiTm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyLmgiCiAjaW5jbHVkZSAiUGFn
ZUNsaWVudC5oIgpAQCAtMTM4LDEwICsxMzksNiBAQAogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVk
TGVha0NvdW50ZXIuaD4KICNlbmRpZgogCi0jaWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKLSNp
bmNsdWRlICJOZXR3b3JrUHJvY2Vzc01lc3NhZ2VzLmgiCi0jZW5kaWYKLQogI2lmIFBMQVRGT1JN
KENPQ09BKQogI2luY2x1ZGUgIlJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHkuaCIKICNp
bmNsdWRlICJSZW1vdGVMYXllclRyZWVTY3JvbGxpbmdQZXJmb3JtYW5jZURhdGEuaCIKQEAgLTQ4
NywxMCArNDg0LDggQEAgV2ViUGFnZVByb3h5OjpXZWJQYWdlUHJveHkoUGFnZUNsaWVudCYgcAog
CiAgICAgbV9wcm9jZXNzLT5hZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OldlYlBhZ2VQcm94
eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX3BhZ2VJRCwgKnRoaXMpOwogCi0jaWYgRU5BQkxF
KE5FVFdPUktfUFJPQ0VTUykKICAgICBpZiAobV9zZXNzaW9uSUQuaXNFcGhlbWVyYWwoKSkKICAg
ICAgICAgbV9wcm9jZXNzLT5wcm9jZXNzUG9vbCgpLnNlbmRUb05ldHdvcmtpbmdQcm9jZXNzKE1l
c3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6RW5zdXJlUHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbihtX3Nl
c3Npb25JRCkpOwotI2VuZGlmCiAKICNpZiBQTEFURk9STShDT0NPQSkKICAgICBjb25zdCBDRklu
ZGV4IHZpZXdTdGF0ZUNoYW5nZVJ1bkxvb3BPcmRlciA9IChDRkluZGV4KVJ1bkxvb3BPYnNlcnZl
cjo6V2VsbEtub3duUnVuTG9vcE9yZGVyczo6Q29yZUFuaW1hdGlvbkNvbW1pdCAtIDE7CkBAIC02
OTYsMTAgKzY5MSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpyZWF0dGFjaFRvV2ViUHJvY2VzcygK
ICAgICBtX3Byb2Nlc3MtPnJlbW92ZVdlYlBhZ2UobV9wYWdlSUQpOwogICAgIG1fcHJvY2Vzcy0+
cmVtb3ZlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6Om1lc3NhZ2VSZWNl
aXZlck5hbWUoKSwgbV9wYWdlSUQpOwogCi0gICAgaWYgKG1fcHJvY2Vzcy0+cHJvY2Vzc1Bvb2wo
KS5wcm9jZXNzTW9kZWwoKSA9PSBQcm9jZXNzTW9kZWxTaGFyZWRTZWNvbmRhcnlQcm9jZXNzKQot
ICAgICAgICBtX3Byb2Nlc3MgPSBtX3Byb2Nlc3MtPnByb2Nlc3NQb29sKCkuZW5zdXJlU2hhcmVk
V2ViUHJvY2VzcygpOwotICAgIGVsc2UKLSAgICAgICAgbV9wcm9jZXNzID0gbV9wcm9jZXNzLT5w
cm9jZXNzUG9vbCgpLmNyZWF0ZU5ld1dlYlByb2Nlc3NSZXNwZWN0aW5nUHJvY2Vzc0NvdW50TGlt
aXQoKTsKKyAgICBtX3Byb2Nlc3MgPSBtX3Byb2Nlc3MtPnByb2Nlc3NQb29sKCkuY3JlYXRlTmV3
V2ViUHJvY2Vzc1Jlc3BlY3RpbmdQcm9jZXNzQ291bnRMaW1pdCgpOwogCiAgICAgQVNTRVJUKG1f
cHJvY2Vzcy0+c3RhdGUoKSAhPSBDaGlsZFByb2Nlc3NQcm94eTo6U3RhdGU6OlRlcm1pbmF0ZWQp
OwogICAgIGlmIChtX3Byb2Nlc3MtPnN0YXRlKCkgPT0gQ2hpbGRQcm9jZXNzUHJveHk6OlN0YXRl
OjpSdW5uaW5nKQpAQCAtNzc0LDEwICs3NjYsOCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0U2Vz
c2lvbklEKFNlc3Npb25JCiAgICAgbV9zZXNzaW9uSUQgPSBzZXNzaW9uSUQ7CiAgICAgbV9wcm9j
ZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRTZXNzaW9uSUQoc2Vzc2lvbklEKSwgbV9w
YWdlSUQpOwogCi0jaWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKICAgICBpZiAoc2Vzc2lvbklE
LmlzRXBoZW1lcmFsKCkpCiAgICAgICAgIG1fcHJvY2Vzcy0+cHJvY2Vzc1Bvb2woKS5zZW5kVG9O
ZXR3b3JraW5nUHJvY2VzcyhNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OkVuc3VyZVByaXZhdGVC
cm93c2luZ1Nlc3Npb24oc2Vzc2lvbklEKSk7Ci0jZW5kaWYKIH0KIAogdm9pZCBXZWJQYWdlUHJv
eHk6OmluaXRpYWxpemVXZWJQYWdlKCkKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9X
ZWJQcm9jZXNzUG9vbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1dlYlByb2Nlc3NQb29sLmNwcAkocmV2aXNpb24gMTkyNjAxKQorKysgU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzUsNiArMzUs
OSBAQAogI2luY2x1ZGUgIkRvd25sb2FkUHJveHkuaCIKICNpbmNsdWRlICJEb3dubG9hZFByb3h5
TWVzc2FnZXMuaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCisjaW5jbHVkZSAiTmV0d29ya1Byb2Nl
c3NDcmVhdGlvblBhcmFtZXRlcnMuaCIKKyNpbmNsdWRlICJOZXR3b3JrUHJvY2Vzc01lc3NhZ2Vz
LmgiCisjaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3NQcm94eS5oIgogI2luY2x1ZGUgIlNhbmRib3hF
eHRlbnNpb24uaCIKICNpbmNsdWRlICJTdGF0aXN0aWNzRGF0YS5oIgogI2luY2x1ZGUgIlRleHRD
aGVja2VyLmgiCkBAIC03OCwxMSArODEsNiBAQAogI2luY2x1ZGUgIkRhdGFiYXNlUHJvY2Vzc01l
c3NhZ2VzLmgiCiAjZW5kaWYKIAotI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCi0jaW5jbHVk
ZSAiTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaCIKLSNpbmNsdWRlICJOZXR3b3Jr
UHJvY2Vzc01lc3NhZ2VzLmgiCi0jaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3NQcm94eS5oIgotI2Vu
ZGlmCiAKICNpZiBFTkFCTEUoU0VSVklDRV9DT05UUk9MUykKICNpbmNsdWRlICJTZXJ2aWNlc0Nv
bnRyb2xsZXIuaCIKQEAgLTEwNSw4ICsxMDMsNiBAQCB1c2luZyBuYW1lc3BhY2UgV2ViS2l0Owog
CiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotc3RhdGljIGNvbnN0IGRvdWJsZSBzaGFyZWRTZWNvbmRh
cnlQcm9jZXNzU2h1dGRvd25UaW1lb3V0ID0gNjA7Ci0KIERFRklORV9ERUJVR19PTkxZX0dMT0JB
TChXVEY6OlJlZkNvdW50ZWRMZWFrQ291bnRlciwgcHJvY2Vzc1Bvb2xDb3VudGVyLCAoIldlYlBy
b2Nlc3NQb29sIikpOwogCiBSZWY8V2ViUHJvY2Vzc1Bvb2w+IFdlYlByb2Nlc3NQb29sOjpjcmVh
dGUoQVBJOjpQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24mIGNvbmZpZ3VyYXRpb24pCkBAIC0xNTks
MTAgKzE1NSw4IEBAIFdlYlByb2Nlc3NQb29sOjpXZWJQcm9jZXNzUG9vbChBUEk6OlByb2MKICNl
bmRpZgogICAgICwgbV9zaG91bGRVc2VUZXN0aW5nTmV0d29ya1Nlc3Npb24oZmFsc2UpCiAgICAg
LCBtX3Byb2Nlc3NUZXJtaW5hdGlvbkVuYWJsZWQodHJ1ZSkKLSNpZiBFTkFCTEUoTkVUV09SS19Q
Uk9DRVNTKQogICAgICwgbV9jYW5IYW5kbGVIVFRQU1NlcnZlclRydXN0RXZhbHVhdGlvbih0cnVl
KQogICAgICwgbV9kaWROZXR3b3JrUHJvY2Vzc0NyYXNoKGZhbHNlKQotI2VuZGlmCiAjaWYgVVNF
KFNPVVApCiAgICAgLCBtX2lnbm9yZVRMU0Vycm9ycyh0cnVlKQogI2VuZGlmCkBAIC0yNTQsMTAg
KzI0OCw4IEBAIFdlYlByb2Nlc3NQb29sOjp+V2ViUHJvY2Vzc1Bvb2woKQogICAgIHByb2Nlc3NQ
b29sQ291bnRlci5kZWNyZW1lbnQoKTsKICNlbmRpZgogCi0jaWYgRU5BQkxFKE5FVFdPUktfUFJP
Q0VTUykKICAgICBpZiAobV9uZXR3b3JrUHJvY2VzcykKICAgICAgICAgbV9uZXR3b3JrUHJvY2Vz
cy0+c2h1dERvd25Qcm9jZXNzKCk7Ci0jZW5kaWYKIH0KIAogdm9pZCBXZWJQcm9jZXNzUG9vbDo6
aW5pdGlhbGl6ZUNsaWVudChjb25zdCBXS0NvbnRleHRDbGllbnRCYXNlKiBjbGllbnQpCkBAIC0y
OTEsMTcgKzI4Myw2IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnNldERvd25sb2FkQ2xpZW50KHMK
ICAgICAgICAgbV9kb3dubG9hZENsaWVudCA9IFdURjo6bW92ZShkb3dubG9hZENsaWVudCk7CiB9
CiAKLXZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnNldFByb2Nlc3NNb2RlbChQcm9jZXNzTW9kZWwgcHJv
Y2Vzc01vZGVsKQotewotICAgIC8vIEd1YXJkIGFnYWluc3QgQVBJIG1pc3VzZS4KLSAgICBpZiAo
IW1fcHJvY2Vzc2VzLmlzRW1wdHkoKSkKLSAgICAgICAgQ1JBU0goKTsKLSAgICBpZiAocHJvY2Vz
c01vZGVsICE9IFByb2Nlc3NNb2RlbFNoYXJlZFNlY29uZGFyeVByb2Nlc3MgJiYgIW1fbWVzc2Fn
ZXNUb0luamVjdGVkQnVuZGxlUG9zdGVkVG9FbXB0eUNvbnRleHQuaXNFbXB0eSgpKQotICAgICAg
ICBDUkFTSCgpOwotCi0gICAgbV9jb25maWd1cmF0aW9uLT5zZXRQcm9jZXNzTW9kZWwocHJvY2Vz
c01vZGVsKTsKLX0KLQogdm9pZCBXZWJQcm9jZXNzUG9vbDo6c2V0TWF4aW11bU51bWJlck9mUHJv
Y2Vzc2VzKHVuc2lnbmVkIG1heGltdW1OdW1iZXJPZlByb2Nlc3NlcykKIHsKICAgICAvLyBHdWFy
ZCBhZ2FpbnN0IEFQSSBtaXN1c2UuCkBAIC0zMTMsMjMgKzI5NCw3IEBAIHZvaWQgV2ViUHJvY2Vz
c1Bvb2w6OnNldE1heGltdW1OdW1iZXJPZlAKIAogSVBDOjpDb25uZWN0aW9uKiBXZWJQcm9jZXNz
UG9vbDo6bmV0d29ya2luZ1Byb2Nlc3NDb25uZWN0aW9uKCkKIHsKLSAgICBzd2l0Y2ggKHByb2Nl
c3NNb2RlbCgpKSB7Ci0gICAgY2FzZSBQcm9jZXNzTW9kZWxTaGFyZWRTZWNvbmRhcnlQcm9jZXNz
OgotI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCi0gICAgICAgIGlmICh1c2VzTmV0d29ya1By
b2Nlc3MoKSkKLSAgICAgICAgICAgIHJldHVybiBtX25ldHdvcmtQcm9jZXNzLT5jb25uZWN0aW9u
KCk7Ci0jZW5kaWYKLSAgICAgICAgcmV0dXJuIG1fcHJvY2Vzc2VzWzBdLT5jb25uZWN0aW9uKCk7
Ci0gICAgY2FzZSBQcm9jZXNzTW9kZWxNdWx0aXBsZVNlY29uZGFyeVByb2Nlc3NlczoKLSNpZiBF
TkFCTEUoTkVUV09SS19QUk9DRVNTKQotICAgICAgICBBU1NFUlQodXNlc05ldHdvcmtQcm9jZXNz
KCkpOwotICAgICAgICByZXR1cm4gbV9uZXR3b3JrUHJvY2Vzcy0+Y29ubmVjdGlvbigpOwotI2Vs
c2UKLSAgICAgICAgYnJlYWs7Ci0jZW5kaWYKLSAgICB9Ci0gICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7Ci0gICAgcmV0dXJuIDA7CisgICAgcmV0dXJuIG1fbmV0d29ya1Byb2Nlc3MtPmNvbm5lY3Rp
b24oKTsKIH0KIAogdm9pZCBXZWJQcm9jZXNzUG9vbDo6bGFuZ3VhZ2VDaGFuZ2VkKHZvaWQqIGNv
bnRleHQpCkBAIC0zNDAsOCArMzA1LDggQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6bGFuZ3VhZ2VD
aGFuZ2VkKHZvaQogdm9pZCBXZWJQcm9jZXNzUG9vbDo6bGFuZ3VhZ2VDaGFuZ2VkKCkKIHsKICAg
ICBzZW5kVG9BbGxQcm9jZXNzZXMoTWVzc2FnZXM6OldlYlByb2Nlc3M6OlVzZXJQcmVmZXJyZWRM
YW5ndWFnZXNDaGFuZ2VkKHVzZXJQcmVmZXJyZWRMYW5ndWFnZXMoKSkpOwotI2lmIFVTRShTT1VQ
KSAmJiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQotICAgIGlmICh1c2VzTmV0d29ya1Byb2Nlc3Mo
KSAmJiBtX25ldHdvcmtQcm9jZXNzKQorI2lmIFVTRShTT1VQKQorICAgIGlmIChtX25ldHdvcmtQ
cm9jZXNzKQogICAgICAgICBtX25ldHdvcmtQcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3Jr
UHJvY2Vzczo6VXNlclByZWZlcnJlZExhbmd1YWdlc0NoYW5nZWQodXNlclByZWZlcnJlZExhbmd1
YWdlcygpKSwgMCk7CiAjZW5kaWYKIH0KQEAgLTM1NiwyNSArMzIxLDYgQEAgdm9pZCBXZWJQcm9j
ZXNzUG9vbDo6dGV4dENoZWNrZXJTdGF0ZUNoYQogICAgIHNlbmRUb0FsbFByb2Nlc3NlcyhNZXNz
YWdlczo6V2ViUHJvY2Vzczo6U2V0VGV4dENoZWNrZXJTdGF0ZShUZXh0Q2hlY2tlcjo6c3RhdGUo
KSkpOwogfQogCi12b2lkIFdlYlByb2Nlc3NQb29sOjpzZXRVc2VzTmV0d29ya1Byb2Nlc3MoYm9v
bCB1c2VzTmV0d29ya1Byb2Nlc3MpCi17Ci0jaWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKLSAg
ICBtX2NvbmZpZ3VyYXRpb24tPnNldFVzZU5ldHdvcmtQcm9jZXNzKHVzZXNOZXR3b3JrUHJvY2Vz
cyk7Ci0jZWxzZQotICAgIFVOVVNFRF9QQVJBTSh1c2VzTmV0d29ya1Byb2Nlc3MpOwotI2VuZGlm
Ci19Ci0KLWJvb2wgV2ViUHJvY2Vzc1Bvb2w6OnVzZXNOZXR3b3JrUHJvY2VzcygpIGNvbnN0Ci17
Ci0jaWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKLSAgICByZXR1cm4gbV9jb25maWd1cmF0aW9u
LT51c2VOZXR3b3JrUHJvY2VzcygpOwotI2Vsc2UKLSAgICByZXR1cm4gZmFsc2U7Ci0jZW5kaWYK
LX0KLQotI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCiBOZXR3b3JrUHJvY2Vzc1Byb3h5JiBX
ZWJQcm9jZXNzUG9vbDo6ZW5zdXJlTmV0d29ya1Byb2Nlc3MoKQogewogICAgIGlmIChtX25ldHdv
cmtQcm9jZXNzKQpAQCAtNDU5LDcgKzQwNSw2IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OmdldE5l
dHdvcmtQcm9jZXNzQ28KIAogICAgIG1fbmV0d29ya1Byb2Nlc3MtPmdldE5ldHdvcmtQcm9jZXNz
Q29ubmVjdGlvbihyZXBseSk7CiB9Ci0jZW5kaWYKIAogI2lmIEVOQUJMRShEQVRBQkFTRV9QUk9D
RVNTKQogdm9pZCBXZWJQcm9jZXNzUG9vbDo6ZW5zdXJlRGF0YWJhc2VQcm9jZXNzKCkKQEAgLTUy
NywxNCArNDcyLDEyIEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnNldEFueVBhZ2VHcm91cE1pZ2gK
IHsKICAgICBtX2ljb25EYXRhYmFzZS0+c2V0UHJpdmF0ZUJyb3dzaW5nRW5hYmxlZChwcml2YXRl
QnJvd3NpbmdFbmFibGVkKTsKIAotI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCi0gICAgaWYg
KHVzZXNOZXR3b3JrUHJvY2VzcygpICYmIG5ldHdvcmtQcm9jZXNzKCkpIHsKKyAgICBpZiAobmV0
d29ya1Byb2Nlc3MoKSkgewogICAgICAgICBpZiAocHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCkKICAg
ICAgICAgICAgIG5ldHdvcmtQcm9jZXNzKCktPnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNz
OjpFbnN1cmVQcml2YXRlQnJvd3NpbmdTZXNzaW9uKFNlc3Npb25JRDo6bGVnYWN5UHJpdmF0ZVNl
c3Npb25JRCgpKSwgMCk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIG5ldHdvcmtQcm9jZXNz
KCktPnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpEZXN0cm95UHJpdmF0ZUJyb3dzaW5n
U2Vzc2lvbihTZXNzaW9uSUQ6OmxlZ2FjeVByaXZhdGVTZXNzaW9uSUQoKSksIDApOwogICAgIH0K
LSNlbmRpZiAvLyBFTkFCTEVEKE5FVFdPUktfUFJPQ0VTUykKIAogICAgIGlmIChwcml2YXRlQnJv
d3NpbmdFbmFibGVkKQogICAgICAgICBzZW5kVG9BbGxQcm9jZXNzZXMoTWVzc2FnZXM6OldlYlBy
b2Nlc3M6OkVuc3VyZVByaXZhdGVCcm93c2luZ1Nlc3Npb24oU2Vzc2lvbklEOjpsZWdhY3lQcml2
YXRlU2Vzc2lvbklEKCkpKTsKQEAgLTU2OSwyMCArNTEyLDkgQEAgdm9pZCBXZWJQcm9jZXNzUG9v
bDo6cHJvY2Vzc0RpZENhY2hlUGFnZQogICAgIG1fcHJvY2Vzc1dpdGhQYWdlQ2FjaGUgPSBwcm9j
ZXNzOwogfQogCi1XZWJQcm9jZXNzUHJveHkmIFdlYlByb2Nlc3NQb29sOjplbnN1cmVTaGFyZWRX
ZWJQcm9jZXNzKCkKLXsKLSAgICBBU1NFUlQocHJvY2Vzc01vZGVsKCkgPT0gUHJvY2Vzc01vZGVs
U2hhcmVkU2Vjb25kYXJ5UHJvY2Vzcyk7Ci0gICAgaWYgKG1fcHJvY2Vzc2VzLmlzRW1wdHkoKSkK
LSAgICAgICAgY3JlYXRlTmV3V2ViUHJvY2VzcygpOwotICAgIHJldHVybiAqbV9wcm9jZXNzZXNb
MF07Ci19Ci0KIFdlYlByb2Nlc3NQcm94eSYgV2ViUHJvY2Vzc1Bvb2w6OmNyZWF0ZU5ld1dlYlBy
b2Nlc3MoKQogewotI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCi0gICAgaWYgKHVzZXNOZXR3
b3JrUHJvY2VzcygpKQotICAgICAgICBlbnN1cmVOZXR3b3JrUHJvY2VzcygpOwotI2VuZGlmCisg
ICAgZW5zdXJlTmV0d29ya1Byb2Nlc3MoKTsKIAogICAgIFJlZjxXZWJQcm9jZXNzUHJveHk+IHBy
b2Nlc3MgPSBXZWJQcm9jZXNzUHJveHk6OmNyZWF0ZSgqdGhpcyk7CiAKQEAgLTY0Niw3ICs1Nzgs
NyBAQCBXZWJQcm9jZXNzUHJveHkmIFdlYlByb2Nlc3NQb29sOjpjcmVhdGVOCiAgICAgLy8gaWNv
bkRhdGFiYXNlUGF0aCBpcyBub24tZW1wdHkgYnkgZGVmYXVsdCwgYnV0IG1faWNvbkRhdGFiYXNl
IGlzbid0IGVuYWJsZWQgaW4gVUkgcHJvY2VzcyB1bmxlc3Mgc2V0RGF0YWJhc2VQYXRoIGlzIGNh
bGxlZCBleHBsaWNpdGx5LgogICAgIHBhcmFtZXRlcnMuaWNvbkRhdGFiYXNlRW5hYmxlZCA9ICFp
Y29uRGF0YWJhc2VQYXRoKCkuaXNFbXB0eSgpOwogCi0gICAgcGFyYW1ldGVycy50ZXJtaW5hdGlv
blRpbWVvdXQgPSAocHJvY2Vzc01vZGVsKCkgPT0gUHJvY2Vzc01vZGVsU2hhcmVkU2Vjb25kYXJ5
UHJvY2VzcykgPyBzaGFyZWRTZWNvbmRhcnlQcm9jZXNzU2h1dGRvd25UaW1lb3V0IDogMDsKKyAg
ICBwYXJhbWV0ZXJzLnRlcm1pbmF0aW9uVGltZW91dCA9IDA7CiAKICAgICBwYXJhbWV0ZXJzLnRl
eHRDaGVja2VyU3RhdGUgPSBUZXh0Q2hlY2tlcjo6c3RhdGUoKTsKIApAQCAtNjU5LDEwICs1OTEs
NiBAQCBXZWJQcm9jZXNzUHJveHkmIFdlYlByb2Nlc3NQb29sOjpjcmVhdGVOCiAgICAgc3VwcGxl
bWVudDxXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHk+KCktPnBvcHVsYXRlQ29weU9mTm90aWZp
Y2F0aW9uUGVybWlzc2lvbnMocGFyYW1ldGVycy5ub3RpZmljYXRpb25QZXJtaXNzaW9ucyk7CiAj
ZW5kaWYKIAotI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCi0gICAgcGFyYW1ldGVycy51c2Vz
TmV0d29ya1Byb2Nlc3MgPSB1c2VzTmV0d29ya1Byb2Nlc3MoKTsKLSNlbmRpZgotCiAgICAgcGFy
YW1ldGVycy5wbHVnSW5BdXRvU3RhcnRPcmlnaW5IYXNoZXMgPSBtX3BsdWdJbkF1dG9TdGFydFBy
b3ZpZGVyLmF1dG9TdGFydE9yaWdpbkhhc2hlc0NvcHkoKTsKICAgICBjb3B5VG9WZWN0b3IobV9w
bHVnSW5BdXRvU3RhcnRQcm92aWRlci5hdXRvU3RhcnRPcmlnaW5zKCksIHBhcmFtZXRlcnMucGx1
Z0luQXV0b1N0YXJ0T3JpZ2lucyk7CiAKQEAgLTcwNiwxNSArNjM0LDcgQEAgV2ViUHJvY2Vzc1By
b3h5JiBXZWJQcm9jZXNzUG9vbDo6Y3JlYXRlTgogCiAgICAgbV9wcm9jZXNzZXMuYXBwZW5kKHBy
b2Nlc3MucHRyKCkpOwogCi0gICAgaWYgKHByb2Nlc3NNb2RlbCgpID09IFByb2Nlc3NNb2RlbFNo
YXJlZFNlY29uZGFyeVByb2Nlc3MpIHsKLSAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgIT0g
bV9tZXNzYWdlc1RvSW5qZWN0ZWRCdW5kbGVQb3N0ZWRUb0VtcHR5Q29udGV4dC5zaXplKCk7ICsr
aSkgewotICAgICAgICAgICAgYXV0byYgbWVzc2FnZU5hbWVBbmRCb2R5ID0gbV9tZXNzYWdlc1Rv
SW5qZWN0ZWRCdW5kbGVQb3N0ZWRUb0VtcHR5Q29udGV4dFtpXTsKLQotICAgICAgICAgICAgcHJv
Y2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUHJvY2Vzczo6SGFuZGxlSW5qZWN0ZWRCdW5kbGVNZXNz
YWdlKG1lc3NhZ2VOYW1lQW5kQm9keS5maXJzdCwgVXNlckRhdGEocHJvY2Vzcy0+dHJhbnNmb3Jt
T2JqZWN0c1RvSGFuZGxlcyhtZXNzYWdlTmFtZUFuZEJvZHkuc2Vjb25kLmdldCgpKS5nZXQoKSkp
LCAwKTsKLSAgICAgICAgfQotICAgICAgICBtX21lc3NhZ2VzVG9JbmplY3RlZEJ1bmRsZVBvc3Rl
ZFRvRW1wdHlDb250ZXh0LmNsZWFyKCk7Ci0gICAgfSBlbHNlCi0gICAgICAgIEFTU0VSVChtX21l
c3NhZ2VzVG9JbmplY3RlZEJ1bmRsZVBvc3RlZFRvRW1wdHlDb250ZXh0LmlzRW1wdHkoKSk7Cisg
ICAgQVNTRVJUKG1fbWVzc2FnZXNUb0luamVjdGVkQnVuZGxlUG9zdGVkVG9FbXB0eUNvbnRleHQu
aXNFbXB0eSgpKTsKIAogI2lmIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQogICAgIC8vIEluaXRp
YWxpemUgcmVtb3RlIGluc3BlY3RvciBjb25uZWN0aW9uIG5vdyB0aGF0IHdlIGhhdmUgYSBzdWIt
cHJvY2VzcyB0aGF0IGlzIGhvc3Rpbmcgb25lIG9mIG91ciB3ZWIgdmlld3MuCkBAIC03OTgsMjgg
KzcxOCwxMiBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpkaXNjb25uZWN0UHJvY2VzcyhXCiAKICAg
ICAvLyBGSVhNRSAoTXVsdGktV2ViUHJvY2Vzcyk6IDxyZGFyOi8vcHJvYmxlbS8xMjIzOTc2NT4g
U29tZSBvZiB0aGUgaW52YWxpZGF0aW9uIGNhbGxzIGJlbG93IGFyZSBzdGlsbCBuZWNlc3Nhcnkg
aW4gbXVsdGktcHJvY2VzcyBtb2RlLCBidXQgdGhleSBzaG91bGQgb25seSBhZmZlY3QgZGF0YSBz
dHJ1Y3R1cmVzIHBlcnRhaW5pbmcgdG8gdGhlIHByb2Nlc3MgYmVpbmcgZGlzY29ubmVjdGVkLgog
ICAgIC8vIENsZWFyaW5nIGV2ZXJ5dGhpbmcgY2F1c2VzIGFzc2VydGlvbiBmYWlsdXJlcywgc28g
aXQncyBsZXNzIHRyb3VibGUgdG8gc2tpcCB0aGF0IGZvciBub3cuCi0gICAgaWYgKHByb2Nlc3NN
b2RlbCgpICE9IFByb2Nlc3NNb2RlbFNoYXJlZFNlY29uZGFyeVByb2Nlc3MpIHsKLSAgICAgICAg
UmVmUHRyPFdlYlByb2Nlc3NQcm94eT4gcHJvdGVjdChwcm9jZXNzKTsKLSAgICAgICAgaWYgKG1f
cHJvY2Vzc1dpdGhQYWdlQ2FjaGUgPT0gcHJvY2VzcykKLSAgICAgICAgICAgIG1fcHJvY2Vzc1dp
dGhQYWdlQ2FjaGUgPSAwOwotCi0gICAgICAgIHN0YXRpY19jYXN0PFdlYkNvbnRleHRTdXBwbGVt
ZW50Kj4oc3VwcGxlbWVudDxXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eT4oKSktPnByb2Nlc3NE
aWRDbG9zZShwcm9jZXNzKTsKLQotICAgICAgICBtX3Byb2Nlc3Nlcy5yZW1vdmVGaXJzdChwcm9j
ZXNzKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIFdlYkNvbnRleHRTdXBwbGVtZW50
TWFwOjpjb25zdF9pdGVyYXRvciBpdCA9IG1fc3VwcGxlbWVudHMuYmVnaW4oKTsKLSAgICBXZWJD
b250ZXh0U3VwcGxlbWVudE1hcDo6Y29uc3RfaXRlcmF0b3IgZW5kID0gbV9zdXBwbGVtZW50cy5l
bmQoKTsKLSAgICBmb3IgKDsgaXQgIT0gZW5kOyArK2l0KQotICAgICAgICBpdC0+dmFsdWUtPnBy
b2Nlc3NEaWRDbG9zZShwcm9jZXNzKTsKLQotICAgIC8vIFRoZSB2ZWN0b3IgbWF5IGhhdmUgdGhl
IGxhc3QgcmVmZXJlbmNlIHRvIHByb2Nlc3MgcHJveHksIHdoaWNoIGluIHR1cm4gbWF5IGhhdmUg
dGhlIGxhc3QgcmVmZXJlbmNlIHRvIHRoZSBjb250ZXh0LgotICAgIC8vIFNpbmNlIHZlY3RvciBl
bGVtZW50cyBhcmUgZGVzdHJveWVkIGluIHBsYWNlLCB3ZSB3b3VsZCByZWN1cnNlIGludG8gV2Vi
UHJvY2Vzc1Byb3h5IGRlc3RydWN0b3IKLSAgICAvLyBpZiBpdCB3ZXJlIGludm9rZWQgZnJvbSBW
ZWN0b3I6OnJlbW92ZSgpLiBSZWZQdHIgZGVsYXlzIGRlc3RydWN0aW9uIHVudGlsIGl0J3Mgc2Fm
ZS4KICAgICBSZWZQdHI8V2ViUHJvY2Vzc1Byb3h5PiBwcm90ZWN0KHByb2Nlc3MpOwogICAgIGlm
IChtX3Byb2Nlc3NXaXRoUGFnZUNhY2hlID09IHByb2Nlc3MpCi0gICAgICAgIG1fcHJvY2Vzc1dp
dGhQYWdlQ2FjaGUgPSBudWxscHRyOworICAgICAgICBtX3Byb2Nlc3NXaXRoUGFnZUNhY2hlID0g
MDsKKworICAgIHN0YXRpY19jYXN0PFdlYkNvbnRleHRTdXBwbGVtZW50Kj4oc3VwcGxlbWVudDxX
ZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eT4oKSktPnByb2Nlc3NEaWRDbG9zZShwcm9jZXNzKTsK
KwogICAgIG1fcHJvY2Vzc2VzLnJlbW92ZUZpcnN0KHByb2Nlc3MpOwogfQogCkBAIC04NTEsMTgg
Kzc1NSwxNCBAQCBSZWY8V2ViUGFnZVByb3h5PiBXZWJQcm9jZXNzUG9vbDo6Y3JlYXRlCiAgICAg
fQogCiAgICAgUmVmUHRyPFdlYlByb2Nlc3NQcm94eT4gcHJvY2VzczsKLSAgICBpZiAocHJvY2Vz
c01vZGVsKCkgPT0gUHJvY2Vzc01vZGVsU2hhcmVkU2Vjb25kYXJ5UHJvY2VzcykgewotICAgICAg
ICBwcm9jZXNzID0gJmVuc3VyZVNoYXJlZFdlYlByb2Nlc3MoKTsKLSAgICB9IGVsc2UgewotICAg
ICAgICBpZiAobV9oYXZlSW5pdGlhbEVtcHR5UHJvY2VzcykgewotICAgICAgICAgICAgcHJvY2Vz
cyA9IG1fcHJvY2Vzc2VzLmxhc3QoKTsKLSAgICAgICAgICAgIG1faGF2ZUluaXRpYWxFbXB0eVBy
b2Nlc3MgPSBmYWxzZTsKLSAgICAgICAgfSBlbHNlIGlmIChwYWdlQ29uZmlndXJhdGlvbi0+cmVs
YXRlZFBhZ2UoKSkgewotICAgICAgICAgICAgLy8gU2hhcmluZyBwcm9jZXNzZXMsIGUuZy4gd2hl
biBjcmVhdGluZyB0aGUgcGFnZSB2aWEgd2luZG93Lm9wZW4oKS4KLSAgICAgICAgICAgIHByb2Nl
c3MgPSAmcGFnZUNvbmZpZ3VyYXRpb24tPnJlbGF0ZWRQYWdlKCktPnByb2Nlc3MoKTsKLSAgICAg
ICAgfSBlbHNlCi0gICAgICAgICAgICBwcm9jZXNzID0gJmNyZWF0ZU5ld1dlYlByb2Nlc3NSZXNw
ZWN0aW5nUHJvY2Vzc0NvdW50TGltaXQoKTsKLSAgICB9CisgICAgaWYgKG1faGF2ZUluaXRpYWxF
bXB0eVByb2Nlc3MpIHsKKyAgICAgICAgcHJvY2VzcyA9IG1fcHJvY2Vzc2VzLmxhc3QoKTsKKyAg
ICAgICAgbV9oYXZlSW5pdGlhbEVtcHR5UHJvY2VzcyA9IGZhbHNlOworICAgIH0gZWxzZSBpZiAo
cGFnZUNvbmZpZ3VyYXRpb24tPnJlbGF0ZWRQYWdlKCkpIHsKKyAgICAgICAgLy8gU2hhcmluZyBw
cm9jZXNzZXMsIGUuZy4gd2hlbiBjcmVhdGluZyB0aGUgcGFnZSB2aWEgd2luZG93Lm9wZW4oKS4K
KyAgICAgICAgcHJvY2VzcyA9ICZwYWdlQ29uZmlndXJhdGlvbi0+cmVsYXRlZFBhZ2UoKS0+cHJv
Y2VzcygpOworICAgIH0gZWxzZQorICAgICAgICBwcm9jZXNzID0gJmNyZWF0ZU5ld1dlYlByb2Nl
c3NSZXNwZWN0aW5nUHJvY2Vzc0NvdW50TGltaXQoKTsKIAogICAgIHJldHVybiBwcm9jZXNzLT5j
cmVhdGVXZWJQYWdlKHBhZ2VDbGllbnQsIFdURjo6bW92ZShwYWdlQ29uZmlndXJhdGlvbikpOwog
fQpAQCAtODcwLDE4ICs3NzAsMTYgQEAgUmVmPFdlYlBhZ2VQcm94eT4gV2ViUHJvY2Vzc1Bvb2w6
OmNyZWF0ZQogRG93bmxvYWRQcm94eSogV2ViUHJvY2Vzc1Bvb2w6OmRvd25sb2FkKFdlYlBhZ2VQ
cm94eSogaW5pdGlhdGluZ1BhZ2UsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKIHsK
ICAgICBEb3dubG9hZFByb3h5KiBkb3dubG9hZFByb3h5ID0gY3JlYXRlRG93bmxvYWRQcm94eShy
ZXF1ZXN0KTsKLSAgICB1aW50NjRfdCBpbml0aWF0aW5nUGFnZUlEID0gaW5pdGlhdGluZ1BhZ2Ug
PyBpbml0aWF0aW5nUGFnZS0+cGFnZUlEKCkgOiAwOwogICAgIFNlc3Npb25JRCBzZXNzaW9uSUQg
PSBpbml0aWF0aW5nUGFnZSA/IGluaXRpYXRpbmdQYWdlLT5zZXNzaW9uSUQoKSA6IFNlc3Npb25J
RDo6ZGVmYXVsdFNlc3Npb25JRCgpOwogCi0jaWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKLSAg
ICBpZiAodXNlc05ldHdvcmtQcm9jZXNzKCkgJiYgbmV0d29ya1Byb2Nlc3MoKSkgeworICAgIGlm
IChuZXR3b3JrUHJvY2VzcygpKSB7CiAgICAgICAgIC8vIEZJWE1FIChOZXR3b3JrUHJvY2Vzcyk6
IFJlcGxpY2F0ZSB3aGF0ZXZlciBGcmFtZUxvYWRlcjo6c2V0T3JpZ2luYWxVUkxGb3JEb3dubG9h
ZFJlcXVlc3QgZG9lcyB3aXRoIHRoZSByZXF1ZXN0IGhlcmUuCiAgICAgICAgIG5ldHdvcmtQcm9j
ZXNzKCktPnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpEb3dubG9hZFJlcXVlc3Qoc2Vz
c2lvbklELCBkb3dubG9hZFByb3h5LT5kb3dubG9hZElEKCksIHJlcXVlc3QpLCAwKTsKICAgICAg
ICAgcmV0dXJuIGRvd25sb2FkUHJveHk7CiAgICAgfQotI2VuZGlmCiAKLSAgICBtX3Byb2Nlc3Nl
c1swXS0+c2VuZChNZXNzYWdlczo6V2ViUHJvY2Vzczo6RG93bmxvYWRSZXF1ZXN0KHNlc3Npb25J
RCwgZG93bmxvYWRQcm94eS0+ZG93bmxvYWRJRCgpLCBpbml0aWF0aW5nUGFnZUlELCByZXF1ZXN0
KSwgMCk7CisgICAgLy8gRklYTUU6IG1ha2UgbmV0d29ya1Byb2Nlc3MoKSByZXR1cm4gYSByZWZl
cmVuY2Ugc28gdGhpcyBpcyBub3QgbmVjZXNzYXJ5LgorICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OwogICAgIHJldHVybiBkb3dubG9hZFByb3h5OwogfQogCkBAIC04OTMsMjUgKzc5MSwxOCBAQCBE
b3dubG9hZFByb3h5KiBXZWJQcm9jZXNzUG9vbDo6cmVzdW1lRG93CiAgICAgaWYgKCFwYXRoLmlz
RW1wdHkoKSkKICAgICAgICAgU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlKHBhdGgsIFNh
bmRib3hFeHRlbnNpb246OlJlYWRXcml0ZSwgc2FuZGJveEV4dGVuc2lvbkhhbmRsZSk7CiAKLSNp
ZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQotICAgIGlmICh1c2VzTmV0d29ya1Byb2Nlc3MoKSAm
JiBuZXR3b3JrUHJvY2VzcygpKSB7CisgICAgaWYgKG5ldHdvcmtQcm9jZXNzKCkpIHsKICAgICAg
ICAgbmV0d29ya1Byb2Nlc3MoKS0+c2VuZChNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OlJlc3Vt
ZURvd25sb2FkKGRvd25sb2FkUHJveHktPmRvd25sb2FkSUQoKSwgcmVzdW1lRGF0YS0+ZGF0YVJl
ZmVyZW5jZSgpLCBwYXRoLCBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlKSwgMCk7CiAgICAgICAgIHJl
dHVybiBkb3dubG9hZFByb3h5OwogICAgIH0KLSNlbmRpZgogCi0gICAgbV9wcm9jZXNzZXNbMF0t
PnNlbmQoTWVzc2FnZXM6OldlYlByb2Nlc3M6OlJlc3VtZURvd25sb2FkKGRvd25sb2FkUHJveHkt
PmRvd25sb2FkSUQoKSwgcmVzdW1lRGF0YS0+ZGF0YVJlZmVyZW5jZSgpLCBwYXRoLCBzYW5kYm94
RXh0ZW5zaW9uSGFuZGxlKSwgMCk7CisgICAgLy8gRklYTUU6IG1ha2UgbmV0d29ya1Byb2Nlc3Mo
KSByZXR1cm4gYSByZWZlcmVuY2Ugc28gdGhpcyBpcyBub3QgbmVjZXNzYXJ5LgorICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOwogICAgIHJldHVybiBkb3dubG9hZFByb3h5OwogfQogCiB2b2lkIFdl
YlByb2Nlc3NQb29sOjpwb3N0TWVzc2FnZVRvSW5qZWN0ZWRCdW5kbGUoY29uc3QgU3RyaW5nJiBt
ZXNzYWdlTmFtZSwgQVBJOjpPYmplY3QqIG1lc3NhZ2VCb2R5KQogewotICAgIGlmIChtX3Byb2Nl
c3Nlcy5pc0VtcHR5KCkpIHsKLSAgICAgICAgaWYgKHByb2Nlc3NNb2RlbCgpID09IFByb2Nlc3NN
b2RlbFNoYXJlZFNlY29uZGFyeVByb2Nlc3MpCi0gICAgICAgICAgICBtX21lc3NhZ2VzVG9Jbmpl
Y3RlZEJ1bmRsZVBvc3RlZFRvRW1wdHlDb250ZXh0LmFwcGVuZChzdGQ6Om1ha2VfcGFpcihtZXNz
YWdlTmFtZSwgbWVzc2FnZUJvZHkpKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQogICAgIGZv
ciAoYXV0byYgcHJvY2VzcyA6IG1fcHJvY2Vzc2VzKSB7CiAgICAgICAgIC8vIEZJWE1FOiBSZXR1
cm4gZWFybHkgaWYgdGhlIG1lc3NhZ2UgYm9keSBjb250YWlucyBhbnkgcmVmZXJlbmNlcyB0byBX
S1BhZ2VSZWZzL1dLRnJhbWVSZWZzIGV0Yy4gc2luY2UgdGhleSdyZSBsb2NhbCB0byBhIHByb2Nl
c3MuCiAgICAgICAgIHByb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlByb2Nlc3M6OkhhbmRsZUlu
amVjdGVkQnVuZGxlTWVzc2FnZShtZXNzYWdlTmFtZSwgVXNlckRhdGEocHJvY2Vzcy0+dHJhbnNm
b3JtT2JqZWN0c1RvSGFuZGxlcyhtZXNzYWdlQm9keSkuZ2V0KCkpKSwgMCk7CkBAIC05NDAsNyAr
ODMxLDYgQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6c2V0QWRkaXRpb25hbFBsdWdpbgogfQogI2Vu
ZGlmIC8vIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJKQogCi0jaWYgRU5BQkxFKE5FVFdPUktf
UFJPQ0VTUykKIFBsYXRmb3JtUHJvY2Vzc0lkZW50aWZpZXIgV2ViUHJvY2Vzc1Bvb2w6Om5ldHdv
cmtQcm9jZXNzSWRlbnRpZmllcigpCiB7CiAgICAgaWYgKCFtX25ldHdvcmtQcm9jZXNzKQpAQCAt
OTQ4LDcgKzgzOCw2IEBAIFBsYXRmb3JtUHJvY2Vzc0lkZW50aWZpZXIgV2ViUHJvY2Vzc1Bvb2wK
IAogICAgIHJldHVybiBtX25ldHdvcmtQcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpOwogfQot
I2VuZGlmCiAKIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnNldEFsd2F5c1VzZXNDb21wbGV4VGV4dENv
ZGVQYXRoKGJvb2wgYWx3YXlzVXNlQ29tcGxleFRleHQpCiB7CkBAIC05ODgsMTUgKzg3Nyw5IEBA
IHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnNldERvbWFpblJlbGF4YXRpb24KIAogdm9pZCBXZWJQcm9j
ZXNzUG9vbDo6c2V0Q2FuSGFuZGxlSFRUUFNTZXJ2ZXJUcnVzdEV2YWx1YXRpb24oYm9vbCB2YWx1
ZSkKIHsKLSNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQogICAgIG1fY2FuSGFuZGxlSFRUUFNT
ZXJ2ZXJUcnVzdEV2YWx1YXRpb24gPSB2YWx1ZTsKLSAgICBpZiAodXNlc05ldHdvcmtQcm9jZXNz
KCkgJiYgbV9uZXR3b3JrUHJvY2VzcykgeworICAgIGlmIChtX25ldHdvcmtQcm9jZXNzKQogICAg
ICAgICBtX25ldHdvcmtQcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6U2V0
Q2FuSGFuZGxlSFRUUFNTZXJ2ZXJUcnVzdEV2YWx1YXRpb24odmFsdWUpLCAwKTsKLSAgICAgICAg
cmV0dXJuOwotICAgIH0KLSNlbHNlCi0gICAgVU5VU0VEX1BBUkFNKHZhbHVlKTsKLSNlbmRpZgog
fQogCiB2b2lkIFdlYlByb2Nlc3NQb29sOjpyZWdpc3RlclVSTFNjaGVtZUFzTG9jYWwoY29uc3Qg
U3RyaW5nJiB1cmxTY2hlbWUpCkBAIC0xMDY0LDEwICs5NDcsOCBAQCB2b2lkIFdlYlByb2Nlc3NQ
b29sOjpzZXRDYWNoZU1vZGVsKENhY2hlCiAgICAgbV9jb25maWd1cmF0aW9uLT5zZXRDYWNoZU1v
ZGVsKGNhY2hlTW9kZWwpOwogICAgIHNlbmRUb0FsbFByb2Nlc3NlcyhNZXNzYWdlczo6V2ViUHJv
Y2Vzczo6U2V0Q2FjaGVNb2RlbChjYWNoZU1vZGVsKSk7CiAKLSNpZiBFTkFCTEUoTkVUV09SS19Q
Uk9DRVNTKQotICAgIGlmICh1c2VzTmV0d29ya1Byb2Nlc3MoKSAmJiBtX25ldHdvcmtQcm9jZXNz
KQorICAgIGlmIChtX25ldHdvcmtQcm9jZXNzKQogICAgICAgICBtX25ldHdvcmtQcm9jZXNzLT5z
ZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6U2V0Q2FjaGVNb2RlbChjYWNoZU1vZGVsKSwg
MCk7Ci0jZW5kaWYKIH0KIAogdm9pZCBXZWJQcm9jZXNzUG9vbDo6c2V0RGVmYXVsdFJlcXVlc3RU
aW1lb3V0SW50ZXJ2YWwoZG91YmxlIHRpbWVvdXRJbnRlcnZhbCkKQEAgLTEwNzcsMTUgKzk1OCw5
IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnNldERlZmF1bHRSZXF1ZXN0VGkKIAogRG93bmxvYWRQ
cm94eSogV2ViUHJvY2Vzc1Bvb2w6OmNyZWF0ZURvd25sb2FkUHJveHkoY29uc3QgUmVzb3VyY2VS
ZXF1ZXN0JiByZXF1ZXN0KQogewotI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCi0gICAgaWYg
KHVzZXNOZXR3b3JrUHJvY2VzcygpKSB7Ci0gICAgICAgIGVuc3VyZU5ldHdvcmtQcm9jZXNzKCk7
Ci0gICAgICAgIEFTU0VSVChtX25ldHdvcmtQcm9jZXNzKTsKLSAgICAgICAgcmV0dXJuIG1fbmV0
d29ya1Byb2Nlc3MtPmNyZWF0ZURvd25sb2FkUHJveHkocmVxdWVzdCk7Ci0gICAgfQotI2VuZGlm
Ci0KLSAgICByZXR1cm4gZW5zdXJlU2hhcmVkV2ViUHJvY2VzcygpLmNyZWF0ZURvd25sb2FkUHJv
eHkocmVxdWVzdCk7CisgICAgZW5zdXJlTmV0d29ya1Byb2Nlc3MoKTsKKyAgICBBU1NFUlQobV9u
ZXR3b3JrUHJvY2Vzcyk7CisgICAgcmV0dXJuIG1fbmV0d29ya1Byb2Nlc3MtPmNyZWF0ZURvd25s
b2FkUHJveHkocmVxdWVzdCk7CiB9CiAKIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OmFkZE1lc3NhZ2VS
ZWNlaXZlcihJUEM6OlN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlUmVjZWl2ZXJOYW1lLCBJUEM6Ok1l
c3NhZ2VSZWNlaXZlciYgbWVzc2FnZVJlY2VpdmVyKQpAQCAtMTE4MiwxMiArMTA1NywxMCBAQCBT
dHJpbmcgV2ViUHJvY2Vzc1Bvb2w6OmNvb2tpZVN0b3JhZ2VEaXJlCiB2b2lkIFdlYlByb2Nlc3NQ
b29sOjp1c2VUZXN0aW5nTmV0d29ya1Nlc3Npb24oKQogewogICAgIEFTU0VSVChtX3Byb2Nlc3Nl
cy5pc0VtcHR5KCkpOwotI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCiAgICAgQVNTRVJUKCFt
X25ldHdvcmtQcm9jZXNzKTsKIAogICAgIGlmIChtX25ldHdvcmtQcm9jZXNzKQogICAgICAgICBy
ZXR1cm47Ci0jZW5kaWYKIAogICAgIGlmICghbV9wcm9jZXNzZXMuaXNFbXB0eSgpKQogICAgICAg
ICByZXR1cm47CkBAIC0xMTk3LDIyICsxMDcwLDE4IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnVz
ZVRlc3RpbmdOZXR3b3JrU2UKIAogdm9pZCBXZWJQcm9jZXNzUG9vbDo6YWxsb3dTcGVjaWZpY0hU
VFBTQ2VydGlmaWNhdGVGb3JIb3N0KGNvbnN0IFdlYkNlcnRpZmljYXRlSW5mbyogY2VydGlmaWNh
dGUsIGNvbnN0IFN0cmluZyYgaG9zdCkKIHsKLSNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQot
ICAgIGlmICh1c2VzTmV0d29ya1Byb2Nlc3MoKSAmJiBtX25ldHdvcmtQcm9jZXNzKSB7CisgICAg
aWYgKG1fbmV0d29ya1Byb2Nlc3MpIHsKICAgICAgICAgbV9uZXR3b3JrUHJvY2Vzcy0+c2VuZChN
ZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OkFsbG93U3BlY2lmaWNIVFRQU0NlcnRpZmljYXRlRm9y
SG9zdChjZXJ0aWZpY2F0ZS0+Y2VydGlmaWNhdGVJbmZvKCksIGhvc3QpLCAwKTsKICAgICAgICAg
cmV0dXJuOwogICAgIH0KLSNlbmRpZgogCiAjaWYgVVNFKFNPVVApCiAgICAgbV9wcm9jZXNzZXNb
MF0tPnNlbmQoTWVzc2FnZXM6OldlYlByb2Nlc3M6OkFsbG93U3BlY2lmaWNIVFRQU0NlcnRpZmlj
YXRlRm9ySG9zdChjZXJ0aWZpY2F0ZS0+Y2VydGlmaWNhdGVJbmZvKCksIGhvc3QpLCAwKTsKICAg
ICByZXR1cm47Ci0jZWxzZQotICAgIFVOVVNFRF9QQVJBTShjZXJ0aWZpY2F0ZSk7Ci0gICAgVU5V
U0VEX1BBUkFNKGhvc3QpOwogI2VuZGlmCiAKICNpZiAhUExBVEZPUk0oSU9TKQorICAgIC8vIEZJ
WE1FOiBXaHkgaXMgdGhpcyBvbmx5IG9uIGlPUz8gQ2FuIHdlIHJlbW92ZSBpdD8KICAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKICNlbmRpZgogfQpAQCAtMTI1Myw0MCArMTEyMiwxOSBAQCB2b2lk
IFdlYlByb2Nlc3NQb29sOjpnZXRTdGF0aXN0aWNzKHVpbnQzCiAKIHZvaWQgV2ViUHJvY2Vzc1Bv
b2w6OnJlcXVlc3RXZWJDb250ZW50U3RhdGlzdGljcyhTdGF0aXN0aWNzUmVxdWVzdCogcmVxdWVz
dCkKIHsKLSAgICBpZiAocHJvY2Vzc01vZGVsKCkgPT0gUHJvY2Vzc01vZGVsU2hhcmVkU2Vjb25k
YXJ5UHJvY2VzcykgewotICAgICAgICBpZiAobV9wcm9jZXNzZXMuaXNFbXB0eSgpKQotICAgICAg
ICAgICAgcmV0dXJuOwotICAgICAgICAKLSAgICAgICAgdWludDY0X3QgcmVxdWVzdElEID0gcmVx
dWVzdC0+YWRkT3V0c3RhbmRpbmdSZXF1ZXN0KCk7Ci0gICAgICAgIG1fc3RhdGlzdGljc1JlcXVl
c3RzLnNldChyZXF1ZXN0SUQsIHJlcXVlc3QpOwotICAgICAgICBtX3Byb2Nlc3Nlc1swXS0+c2Vu
ZChNZXNzYWdlczo6V2ViUHJvY2Vzczo6R2V0V2ViQ29yZVN0YXRpc3RpY3MocmVxdWVzdElEKSwg
MCk7Ci0KLSAgICB9IGVsc2UgewotICAgICAgICAvLyBGSVhNRSAoTXVsdGktV2ViUHJvY2Vzcykg
PHJkYXI6Ly9wcm9ibGVtLzEzMjAwMDU5PjogTWFrZSBnZXR0aW5nIHN0YXRpc3RpY3MgZnJvbSBt
dWx0aXBsZSBXZWJQcm9jZXNzZXMgd29yay4KLSAgICB9CisgICAgLy8gRklYTUUgKE11bHRpLVdl
YlByb2Nlc3MpIDxyZGFyOi8vcHJvYmxlbS8xMzIwMDA1OT46IE1ha2UgZ2V0dGluZyBzdGF0aXN0
aWNzIGZyb20gbXVsdGlwbGUgV2ViUHJvY2Vzc2VzIHdvcmsuCiB9CiAKIHZvaWQgV2ViUHJvY2Vz
c1Bvb2w6OnJlcXVlc3ROZXR3b3JraW5nU3RhdGlzdGljcyhTdGF0aXN0aWNzUmVxdWVzdCogcmVx
dWVzdCkKIHsKLSAgICBib29sIG5ldHdvcmtQcm9jZXNzVW5hdmFpbGFibGU7Ci0jaWYgRU5BQkxF
KE5FVFdPUktfUFJPQ0VTUykKLSAgICBuZXR3b3JrUHJvY2Vzc1VuYXZhaWxhYmxlID0gIXVzZXNO
ZXR3b3JrUHJvY2VzcygpIHx8ICFtX25ldHdvcmtQcm9jZXNzOwotI2Vsc2UKLSAgICBuZXR3b3Jr
UHJvY2Vzc1VuYXZhaWxhYmxlID0gdHJ1ZTsKLSNlbmRpZgotCi0gICAgaWYgKG5ldHdvcmtQcm9j
ZXNzVW5hdmFpbGFibGUpIHsKKyAgICBpZiAoIW1fbmV0d29ya1Byb2Nlc3MpIHsKICAgICAgICAg
TE9HX0VSUk9SKCJBdHRlbXB0IHRvIGdldCBOZXR3b3JrUHJvY2VzcyBzdGF0aXN0aWNzIGJ1dCB0
aGUgTmV0d29ya1Byb2Nlc3MgaXMgdW5hdmFpbGFibGUiKTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KIAotI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCiAgICAgdWludDY0X3QgcmVxdWVzdElE
ID0gcmVxdWVzdC0+YWRkT3V0c3RhbmRpbmdSZXF1ZXN0KCk7CiAgICAgbV9zdGF0aXN0aWNzUmVx
dWVzdHMuc2V0KHJlcXVlc3RJRCwgcmVxdWVzdCk7CiAgICAgbV9uZXR3b3JrUHJvY2Vzcy0+c2Vu
ZChNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OkdldE5ldHdvcmtQcm9jZXNzU3RhdGlzdGljcyhy
ZXF1ZXN0SUQpLCAwKTsKLSNlbHNlCi0gICAgVU5VU0VEX1BBUkFNKHJlcXVlc3QpOwotI2VuZGlm
CiB9CiAKIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OmhhbmRsZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9u
JiBjb25uZWN0aW9uLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2VOYW1lLCBjb25zdCBXZWJLaXQ6OlVz
ZXJEYXRhJiBtZXNzYWdlQm9keSkKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQ
cm9jZXNzUG9vbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQ
cm9jZXNzUG9vbC5oCShyZXZpc2lvbiAxOTI2MDEpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvV2ViUHJvY2Vzc1Bvb2wuaAkod29ya2luZyBjb3B5KQpAQCAtMzQsOSArMzQsOSBAQAogI2lu
Y2x1ZGUgIkdlbmVyaWNDYWxsYmFjay5oIgogI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgog
I2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlck1hcC5oIgorI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNz
UHJveHkuaCIKICNpbmNsdWRlICJQbHVnSW5BdXRvU3RhcnRQcm92aWRlci5oIgogI2luY2x1ZGUg
IlBsdWdpbkluZm9TdG9yZS5oIgotI2luY2x1ZGUgIlByb2Nlc3NNb2RlbC5oIgogI2luY2x1ZGUg
IlByb2Nlc3NUaHJvdHRsZXIuaCIKICNpbmNsdWRlICJTdGF0aXN0aWNzUmVxdWVzdC5oIgogI2lu
Y2x1ZGUgIlZpc2l0ZWRMaW5rU3RvcmUuaCIKQEAgLTU5LDEwICs1OSw2IEBACiAjaW5jbHVkZSAi
RGF0YWJhc2VQcm9jZXNzUHJveHkuaCIKICNlbmRpZgogCi0jaWYgRU5BQkxFKE5FVFdPUktfUFJP
Q0VTUykKLSNpbmNsdWRlICJOZXR3b3JrUHJvY2Vzc1Byb3h5LmgiCi0jZW5kaWYKLQogI2lmIEVO
QUJMRShNRURJQV9TRVNTSU9OKQogI2luY2x1ZGUgIldlYk1lZGlhU2Vzc2lvbkZvY3VzTWFuYWdl
ci5oIgogI2VuZGlmCkBAIC04NiwxNCArODIsMTIgQEAgY2xhc3MgV2ViQ29udGV4dFN1cHBsZW1l
bnQ7CiBjbGFzcyBXZWJJY29uRGF0YWJhc2U7CiBjbGFzcyBXZWJQYWdlR3JvdXA7CiBjbGFzcyBX
ZWJQYWdlUHJveHk7CitzdHJ1Y3QgTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnM7CiBz
dHJ1Y3QgU3RhdGlzdGljc0RhdGE7CiBzdHJ1Y3QgV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVy
czsKICAgICAKIHR5cGVkZWYgR2VuZXJpY0NhbGxiYWNrPEFQSTo6RGljdGlvbmFyeSo+IERpY3Rp
b25hcnlDYWxsYmFjazsKIAotI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCi1zdHJ1Y3QgTmV0
d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnM7Ci0jZW5kaWYKIAogI2lmIFBMQVRGT1JNKENP
Q09BKQogaW50IG5ldHdvcmtQcm9jZXNzTGF0ZW5jeVFPUygpOwpAQCAtMTQyLDkgKzEzNiw2IEBA
IHB1YmxpYzoKICAgICB2b2lkIHNldEhpc3RvcnlDbGllbnQoc3RkOjp1bmlxdWVfcHRyPEFQSTo6
TGVnYWN5Q29udGV4dEhpc3RvcnlDbGllbnQ+KTsKICAgICB2b2lkIHNldERvd25sb2FkQ2xpZW50
KHN0ZDo6dW5pcXVlX3B0cjxBUEk6OkRvd25sb2FkQ2xpZW50Pik7CiAKLSAgICB2b2lkIHNldFBy
b2Nlc3NNb2RlbChQcm9jZXNzTW9kZWwpOyAvLyBDYW4gb25seSBiZSBjYWxsZWQgd2hlbiB0aGVy
ZSBhcmUgbm8gcHJvY2Vzc2VzIHJ1bm5pbmcuCi0gICAgUHJvY2Vzc01vZGVsIHByb2Nlc3NNb2Rl
bCgpIGNvbnN0IHsgcmV0dXJuIG1fY29uZmlndXJhdGlvbi0+cHJvY2Vzc01vZGVsKCk7IH0KLQog
ICAgIHZvaWQgc2V0TWF4aW11bU51bWJlck9mUHJvY2Vzc2VzKHVuc2lnbmVkKTsgLy8gQ2FuIG9u
bHkgYmUgY2FsbGVkIHdoZW4gdGhlcmUgYXJlIG5vIHByb2Nlc3NlcyBydW5uaW5nLgogICAgIHVu
c2lnbmVkIG1heGltdW1OdW1iZXJPZlByb2Nlc3NlcygpIGNvbnN0IHsgcmV0dXJuICFtX2NvbmZp
Z3VyYXRpb24tPm1heGltdW1Qcm9jZXNzQ291bnQoKSA/IFVJTlRfTUFYIDogbV9jb25maWd1cmF0
aW9uLT5tYXhpbXVtUHJvY2Vzc0NvdW50KCk7IH0KIApAQCAtMTkzLDkgKzE4NCw3IEBAIHB1Ymxp
YzoKICAgICB2b2lkIGNsZWFyUGx1Z2luQ2xpZW50UG9saWNpZXMoKTsKICNlbmRpZgogCi0jaWYg
RU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKICAgICBQbGF0Zm9ybVByb2Nlc3NJZGVudGlmaWVyIG5l
dHdvcmtQcm9jZXNzSWRlbnRpZmllcigpOwotI2VuZGlmCiAKICAgICB2b2lkIHNldEFsd2F5c1Vz
ZXNDb21wbGV4VGV4dENvZGVQYXRoKGJvb2wpOwogICAgIHZvaWQgc2V0U2hvdWxkVXNlRm9udFNt
b290aGluZyhib29sKTsKQEAgLTI4NiwxNiArMjc1LDExIEBAIHB1YmxpYzoKIAogICAgIC8vIE5l
dHdvcmsgUHJvY2VzcyBNYW5hZ2VtZW50CiAKLSAgICB2b2lkIHNldFVzZXNOZXR3b3JrUHJvY2Vz
cyhib29sKTsKLSAgICBib29sIHVzZXNOZXR3b3JrUHJvY2VzcygpIGNvbnN0OwotCi0jaWYgRU5B
QkxFKE5FVFdPUktfUFJPQ0VTUykKICAgICBOZXR3b3JrUHJvY2Vzc1Byb3h5JiBlbnN1cmVOZXR3
b3JrUHJvY2VzcygpOwogICAgIE5ldHdvcmtQcm9jZXNzUHJveHkqIG5ldHdvcmtQcm9jZXNzKCkg
eyByZXR1cm4gbV9uZXR3b3JrUHJvY2Vzcy5nZXQoKTsgfQogICAgIHZvaWQgbmV0d29ya1Byb2Nl
c3NDcmFzaGVkKE5ldHdvcmtQcm9jZXNzUHJveHkqKTsKIAogICAgIHZvaWQgZ2V0TmV0d29ya1By
b2Nlc3NDb25uZWN0aW9uKFBhc3NSZWZQdHI8TWVzc2FnZXM6OldlYlByb2Nlc3NQcm94eTo6R2V0
TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uOjpEZWxheWVkUmVwbHk+KTsKLSNlbmRpZgogCiAjaWYg
RU5BQkxFKERBVEFCQVNFX1BST0NFU1MpCiAgICAgdm9pZCBlbnN1cmVEYXRhYmFzZVByb2Nlc3Mo
KTsKQEAgLTM3OCw5ICszNjIsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgcmVxdWVzdFdlYkNvbnRl
bnRTdGF0aXN0aWNzKFN0YXRpc3RpY3NSZXF1ZXN0Kik7CiAgICAgdm9pZCByZXF1ZXN0TmV0d29y
a2luZ1N0YXRpc3RpY3MoU3RhdGlzdGljc1JlcXVlc3QqKTsKIAotI2lmIEVOQUJMRShORVRXT1JL
X1BST0NFU1MpCiAgICAgdm9pZCBwbGF0Zm9ybUluaXRpYWxpemVOZXR3b3JrUHJvY2VzcyhOZXR3
b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycyYpOwotI2VuZGlmCiAKICAgICB2b2lkIGhhbmRs
ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgY29uc3QgU3RyaW5nJiBtZXNzYWdlTmFtZSwgY29u
c3QgVXNlckRhdGEmIG1lc3NhZ2VCb2R5KTsKICAgICB2b2lkIGhhbmRsZVN5bmNocm9ub3VzTWVz
c2FnZShJUEM6OkNvbm5lY3Rpb24mLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2VOYW1lLCBjb25zdCBV
c2VyRGF0YSYgbWVzc2FnZUJvZHksIFVzZXJEYXRhJiByZXR1cm5Vc2VyRGF0YSk7CkBAIC01MDAs
MTEgKzQ4Miw5IEBAIHByaXZhdGU6CiAKICAgICBib29sIG1fcHJvY2Vzc1Rlcm1pbmF0aW9uRW5h
YmxlZDsKIAotI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCiAgICAgYm9vbCBtX2NhbkhhbmRs
ZUhUVFBTU2VydmVyVHJ1c3RFdmFsdWF0aW9uOwogICAgIGJvb2wgbV9kaWROZXR3b3JrUHJvY2Vz
c0NyYXNoOwogICAgIFJlZlB0cjxOZXR3b3JrUHJvY2Vzc1Byb3h5PiBtX25ldHdvcmtQcm9jZXNz
OwotI2VuZGlmCiAKICNpZiBFTkFCTEUoREFUQUJBU0VfUFJPQ0VTUykKICAgICBSZWZQdHI8RGF0
YWJhc2VQcm9jZXNzUHJveHk+IG1fZGF0YWJhc2VQcm9jZXNzOwpAQCAtNTM5LDU1ICs1MTksMTUg
QEAgcHJpdmF0ZToKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CiB2b2lkIFdlYlByb2Nlc3NQb29sOjpz
ZW5kVG9OZXR3b3JraW5nUHJvY2VzcyhUJiYgbWVzc2FnZSkKIHsKLSAgICBzd2l0Y2ggKHByb2Nl
c3NNb2RlbCgpKSB7Ci0gICAgY2FzZSBQcm9jZXNzTW9kZWxTaGFyZWRTZWNvbmRhcnlQcm9jZXNz
OgotI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCi0gICAgICAgIGlmICh1c2VzTmV0d29ya1By
b2Nlc3MoKSkgewotICAgICAgICAgICAgaWYgKG1fbmV0d29ya1Byb2Nlc3MgJiYgbV9uZXR3b3Jr
UHJvY2Vzcy0+Y2FuU2VuZE1lc3NhZ2UoKSkKLSAgICAgICAgICAgICAgICBtX25ldHdvcmtQcm9j
ZXNzLT5zZW5kKHN0ZDo6Zm9yd2FyZDxUPihtZXNzYWdlKSwgMCk7Ci0gICAgICAgICAgICByZXR1
cm47Ci0gICAgICAgIH0KLSNlbmRpZgotICAgICAgICBpZiAoIW1fcHJvY2Vzc2VzLmlzRW1wdHko
KSAmJiBtX3Byb2Nlc3Nlc1swXS0+Y2FuU2VuZE1lc3NhZ2UoKSkKLSAgICAgICAgICAgIG1fcHJv
Y2Vzc2VzWzBdLT5zZW5kKHN0ZDo6Zm9yd2FyZDxUPihtZXNzYWdlKSwgMCk7Ci0gICAgICAgIHJl
dHVybjsKLSAgICBjYXNlIFByb2Nlc3NNb2RlbE11bHRpcGxlU2Vjb25kYXJ5UHJvY2Vzc2VzOgot
I2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCi0gICAgICAgIGlmIChtX25ldHdvcmtQcm9jZXNz
ICYmIG1fbmV0d29ya1Byb2Nlc3MtPmNhblNlbmRNZXNzYWdlKCkpCi0gICAgICAgICAgICBtX25l
dHdvcmtQcm9jZXNzLT5zZW5kKHN0ZDo6Zm9yd2FyZDxUPihtZXNzYWdlKSwgMCk7Ci0gICAgICAg
IHJldHVybjsKLSNlbHNlCi0gICAgICAgIGJyZWFrOwotI2VuZGlmCi0gICAgfQotICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOworICAgIGlmIChtX25ldHdvcmtQcm9jZXNzICYmIG1fbmV0d29ya1By
b2Nlc3MtPmNhblNlbmRNZXNzYWdlKCkpCisgICAgICAgIG1fbmV0d29ya1Byb2Nlc3MtPnNlbmQo
c3RkOjpmb3J3YXJkPFQ+KG1lc3NhZ2UpLCAwKTsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgVD4K
IHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnNlbmRUb05ldHdvcmtpbmdQcm9jZXNzUmVsYXVuY2hpbmdJ
Zk5lY2Vzc2FyeShUJiYgbWVzc2FnZSkKIHsKLSAgICBzd2l0Y2ggKHByb2Nlc3NNb2RlbCgpKSB7
Ci0gICAgY2FzZSBQcm9jZXNzTW9kZWxTaGFyZWRTZWNvbmRhcnlQcm9jZXNzOgotI2lmIEVOQUJM
RShORVRXT1JLX1BST0NFU1MpCi0gICAgICAgIGlmICh1c2VzTmV0d29ya1Byb2Nlc3MoKSkgewot
ICAgICAgICAgICAgZW5zdXJlTmV0d29ya1Byb2Nlc3MoKTsKLSAgICAgICAgICAgIG1fbmV0d29y
a1Byb2Nlc3MtPnNlbmQoc3RkOjpmb3J3YXJkPFQ+KG1lc3NhZ2UpLCAwKTsKLSAgICAgICAgICAg
IHJldHVybjsKLSAgICAgICAgfQotI2VuZGlmCi0gICAgICAgIGVuc3VyZVNoYXJlZFdlYlByb2Nl
c3MoKTsKLSAgICAgICAgbV9wcm9jZXNzZXNbMF0tPnNlbmQoc3RkOjpmb3J3YXJkPFQ+KG1lc3Nh
Z2UpLCAwKTsKLSAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgUHJvY2Vzc01vZGVsTXVsdGlwbGVT
ZWNvbmRhcnlQcm9jZXNzZXM6Ci0jaWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKLSAgICAgICAg
ZW5zdXJlTmV0d29ya1Byb2Nlc3MoKTsKLSAgICAgICAgbV9uZXR3b3JrUHJvY2Vzcy0+c2VuZChz
dGQ6OmZvcndhcmQ8VD4obWVzc2FnZSksIDApOwotICAgICAgICByZXR1cm47Ci0jZWxzZQotICAg
ICAgICBicmVhazsKLSNlbmRpZgotICAgIH0KLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAg
ICBlbnN1cmVOZXR3b3JrUHJvY2VzcygpOworICAgIG1fbmV0d29ya1Byb2Nlc3MtPnNlbmQoc3Rk
Ojpmb3J3YXJkPFQ+KG1lc3NhZ2UpLCAwKTsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgVD4KQEAg
LTYxNiwxNyArNTU2LDEyIEBAIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CiB2b2lkIFdlYlByb2Nlc3NQ
b29sOjpzZW5kVG9BbGxQcm9jZXNzZXNSZWxhdW5jaGluZ1RoZW1JZk5lY2Vzc2FyeShjb25zdCBU
JiBtZXNzYWdlKQogewogICAgIC8vIEZJWE1FIChNdWx0aS1XZWJQcm9jZXNzKTogV2ViUHJvY2Vz
c1Bvb2wgZG9lc24ndCB0cmFjayBwcm9jZXNzZXMgdGhhdCBoYXZlIGV4aXRlZCwgc28gaXQgY2Fu
bm90IHJlbGF1bmNoIHRoZXNlLiBQZXJoYXBzIHRoaXMgZnVuY3Rpb25hbGl0eSB3b24ndCBiZSBu
ZWVkZWQgaW4gdGhpcyBtb2RlLgotICAgIGlmIChwcm9jZXNzTW9kZWwoKSA9PSBQcm9jZXNzTW9k
ZWxTaGFyZWRTZWNvbmRhcnlQcm9jZXNzKQotICAgICAgICBlbnN1cmVTaGFyZWRXZWJQcm9jZXNz
KCk7CiAgICAgc2VuZFRvQWxsUHJvY2Vzc2VzKG1lc3NhZ2UpOwogfQogCiB0ZW1wbGF0ZTx0eXBl
bmFtZSBUPgogdm9pZCBXZWJQcm9jZXNzUG9vbDo6c2VuZFRvT25lUHJvY2VzcyhUJiYgbWVzc2Fn
ZSkKIHsKLSAgICBpZiAocHJvY2Vzc01vZGVsKCkgPT0gUHJvY2Vzc01vZGVsU2hhcmVkU2Vjb25k
YXJ5UHJvY2VzcykKLSAgICAgICAgZW5zdXJlU2hhcmVkV2ViUHJvY2VzcygpOwotCiAgICAgYm9v
bCBtZXNzYWdlU2VudCA9IGZhbHNlOwogICAgIHNpemVfdCBwcm9jZXNzQ291bnQgPSBtX3Byb2Nl
c3Nlcy5zaXplKCk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBwcm9jZXNzQ291bnQ7ICsr
aSkgewpAQCAtNjM4LDcgKzU3Myw3IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnNlbmRUb09uZVBy
b2Nlc3MoVCYKICAgICAgICAgfQogICAgIH0KIAotICAgIGlmICghbWVzc2FnZVNlbnQgJiYgcHJv
Y2Vzc01vZGVsKCkgPT0gUHJvY2Vzc01vZGVsTXVsdGlwbGVTZWNvbmRhcnlQcm9jZXNzZXMpIHsK
KyAgICBpZiAoIW1lc3NhZ2VTZW50KSB7CiAgICAgICAgIHdhcm1Jbml0aWFsUHJvY2VzcygpOwog
ICAgICAgICBSZWZQdHI8V2ViUHJvY2Vzc1Byb3h5PiBwcm9jZXNzID0gbV9wcm9jZXNzZXMubGFz
dCgpOwogICAgICAgICBpZiAocHJvY2Vzcy0+Y2FuU2VuZE1lc3NhZ2UoKSkKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCShyZXZpc2lvbiAxOTI2
MDEpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMjU2LDcgKzI1Niw3IEBAIHZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpyZW1v
dmVXZWJQYWdlKHVpbnQKIAogICAgIC8vIElmIHRoaXMgd2FzIHRoZSBsYXN0IFdlYlBhZ2Ugb3Bl
biBpbiB0aGF0IHdlYiBwcm9jZXNzLCBhbmQgd2UgaGF2ZSBubyBvdGhlciByZWFzb24gdG8ga2Vl
cCBpdCBhbGl2ZSwgbGV0IGl0IGdvLgogICAgIC8vIFdlIG9ubHkgYWxsb3cgdGhpcyB3aGVuIHVz
aW5nIGEgbmV0d29yayBwcm9jZXNzLCBhcyBvdGhlcndpc2UgdGhlIFdlYlByb2Nlc3MgbmVlZHMg
dG8gcHJlc2VydmUgaXRzIHNlc3Npb24gc3RhdGUuCi0gICAgaWYgKCFtX3Byb2Nlc3NQb29sLT51
c2VzTmV0d29ya1Byb2Nlc3MoKSB8fCBzdGF0ZSgpID09IFN0YXRlOjpUZXJtaW5hdGVkIHx8ICFj
YW5UZXJtaW5hdGVDaGlsZFByb2Nlc3MoKSkKKyAgICBpZiAoc3RhdGUoKSA9PSBTdGF0ZTo6VGVy
bWluYXRlZCB8fCAhY2FuVGVybWluYXRlQ2hpbGRQcm9jZXNzKCkpCiAgICAgICAgIHJldHVybjsK
IAogICAgIHNodXREb3duKCk7CkBAIC00MjcsMTIgKzQyNywxMCBAQCB2b2lkIFdlYlByb2Nlc3NQ
cm94eTo6Z2V0UGx1Z2luUHJvY2Vzc0NvCiB9CiAjZW5kaWYKIAotI2lmIEVOQUJMRShORVRXT1JL
X1BST0NFU1MpCiB2b2lkIFdlYlByb2Nlc3NQcm94eTo6Z2V0TmV0d29ya1Byb2Nlc3NDb25uZWN0
aW9uKFBhc3NSZWZQdHI8TWVzc2FnZXM6OldlYlByb2Nlc3NQcm94eTo6R2V0TmV0d29ya1Byb2Nl
c3NDb25uZWN0aW9uOjpEZWxheWVkUmVwbHk+IHJlcGx5KQogewogICAgIG1fcHJvY2Vzc1Bvb2wt
PmdldE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbihyZXBseSk7CiB9Ci0jZW5kaWYgLy8gRU5BQkxF
KE5FVFdPUktfUFJPQ0VTUykKIAogI2lmIEVOQUJMRShEQVRBQkFTRV9QUk9DRVNTKQogdm9pZCBX
ZWJQcm9jZXNzUHJveHk6OmdldERhdGFiYXNlUHJvY2Vzc0Nvbm5lY3Rpb24oUGFzc1JlZlB0cjxN
ZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpHZXREYXRhYmFzZVByb2Nlc3NDb25uZWN0aW9uOjpE
ZWxheWVkUmVwbHk+IHJlcGx5KQpAQCAtNzAyLDE4ICs3MDAsNiBAQCB2b2lkIFdlYlByb2Nlc3NQ
cm94eTo6dXBkYXRlVGV4dENoZWNrZXJTCiAgICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlByb2Nl
c3M6OlNldFRleHRDaGVja2VyU3RhdGUoVGV4dENoZWNrZXI6OnN0YXRlKCkpLCAwKTsKIH0KIAot
RG93bmxvYWRQcm94eSogV2ViUHJvY2Vzc1Byb3h5OjpjcmVhdGVEb3dubG9hZFByb3h5KGNvbnN0
IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKLXsKLSNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNT
KQotICAgIEFTU0VSVCghbV9wcm9jZXNzUG9vbC0+dXNlc05ldHdvcmtQcm9jZXNzKCkpOwotI2Vu
ZGlmCi0KLSAgICBpZiAoIW1fZG93bmxvYWRQcm94eU1hcCkKLSAgICAgICAgbV9kb3dubG9hZFBy
b3h5TWFwID0gc3RkOjptYWtlX3VuaXF1ZTxEb3dubG9hZFByb3h5TWFwPih0aGlzKTsKLQotICAg
IHJldHVybiBtX2Rvd25sb2FkUHJveHlNYXAtPmNyZWF0ZURvd25sb2FkUHJveHkobV9wcm9jZXNz
UG9vbCwgcmVxdWVzdCk7Ci19Ci0KIHZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpkaWRTYXZlVG9QYWdl
Q2FjaGUoKQogewogICAgIG1fcHJvY2Vzc1Bvb2wtPnByb2Nlc3NEaWRDYWNoZVBhZ2UodGhpcyk7
CkBAIC05NDcsNyArOTMzLDYgQEAgdm9pZCBXZWJQcm9jZXNzUHJveHk6OmRpZENhbmNlbFByb2Nl
c3NTdQogICAgIG1fdGhyb3R0bGVyLmRpZENhbmNlbFByb2Nlc3NTdXNwZW5zaW9uKCk7CiB9CiAK
LSNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQogdm9pZCBXZWJQcm9jZXNzUHJveHk6OnJlaW5z
dGF0ZU5ldHdvcmtQcm9jZXNzQXNzZXJ0aW9uU3RhdGUoTmV0d29ya1Byb2Nlc3NQcm94eSYgbmV3
TmV0d29ya1Byb2Nlc3NQcm94eSkKIHsKICNpZiBQTEFURk9STShJT1MpCkBAIC05NjIsMTEgKzk0
NywxMCBAQCB2b2lkIFdlYlByb2Nlc3NQcm94eTo6cmVpbnN0YXRlTmV0d29ya1ByCiAgICAgVU5V
U0VEX1BBUkFNKG5ld05ldHdvcmtQcm9jZXNzUHJveHkpOwogI2VuZGlmCiB9Ci0jZW5kaWYKIAog
dm9pZCBXZWJQcm9jZXNzUHJveHk6OmRpZFNldEFzc2VydGlvblN0YXRlKEFzc2VydGlvblN0YXRl
IHN0YXRlKQogewotI2lmIFBMQVRGT1JNKElPUykgJiYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykK
KyNpZiBQTEFURk9STShJT1MpCiAgICAgQVNTRVJUKCFtX2JhY2tncm91bmRUb2tlbkZvck5ldHdv
cmtQcm9jZXNzIHx8ICFtX2ZvcmVncm91bmRUb2tlbkZvck5ldHdvcmtQcm9jZXNzKTsKIAogICAg
IHN3aXRjaCAoc3RhdGUpIHsKQEAgLTk3OCwxNCArOTYyLDEyIEBAIHZvaWQgV2ViUHJvY2Vzc1By
b3h5OjpkaWRTZXRBc3NlcnRpb25TdGEKICAgICAgICAgYnJlYWs7CiAKICAgICBjYXNlIEFzc2Vy
dGlvblN0YXRlOjpCYWNrZ3JvdW5kOgotICAgICAgICBpZiAocHJvY2Vzc1Bvb2woKS51c2VzTmV0
d29ya1Byb2Nlc3MoKSkKLSAgICAgICAgICAgIG1fYmFja2dyb3VuZFRva2VuRm9yTmV0d29ya1By
b2Nlc3MgPSBwcm9jZXNzUG9vbCgpLmVuc3VyZU5ldHdvcmtQcm9jZXNzKCkudGhyb3R0bGVyKCku
YmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKTsKKyAgICAgICAgbV9iYWNrZ3JvdW5kVG9rZW5Gb3JO
ZXR3b3JrUHJvY2VzcyA9IHByb2Nlc3NQb29sKCkuZW5zdXJlTmV0d29ya1Byb2Nlc3MoKS50aHJv
dHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpOwogICAgICAgICBtX2ZvcmVncm91bmRU
b2tlbkZvck5ldHdvcmtQcm9jZXNzID0gbnVsbHB0cjsKICAgICAgICAgYnJlYWs7CiAgICAgCiAg
ICAgY2FzZSBBc3NlcnRpb25TdGF0ZTo6Rm9yZWdyb3VuZDoKLSAgICAgICAgaWYgKHByb2Nlc3NQ
b29sKCkudXNlc05ldHdvcmtQcm9jZXNzKCkpCi0gICAgICAgICAgICBtX2ZvcmVncm91bmRUb2tl
bkZvck5ldHdvcmtQcm9jZXNzID0gcHJvY2Vzc1Bvb2woKS5lbnN1cmVOZXR3b3JrUHJvY2Vzcygp
LnRocm90dGxlcigpLmZvcmVncm91bmRBY3Rpdml0eVRva2VuKCk7CisgICAgICAgIG1fZm9yZWdy
b3VuZFRva2VuRm9yTmV0d29ya1Byb2Nlc3MgPSBwcm9jZXNzUG9vbCgpLmVuc3VyZU5ldHdvcmtQ
cm9jZXNzKCkudGhyb3R0bGVyKCkuZm9yZWdyb3VuZEFjdGl2aXR5VG9rZW4oKTsKICAgICAgICAg
bV9iYWNrZ3JvdW5kVG9rZW5Gb3JOZXR3b3JrUHJvY2VzcyA9IG51bGxwdHI7CiAgICAgICAgIGZv
ciAoYXV0byYgcGFnZSA6IG1fcGFnZU1hcC52YWx1ZXMoKSkKICAgICAgICAgICAgIHBhZ2UtPnBy
b2Nlc3NXaWxsQmVjb21lRm9yZWdyb3VuZCgpOwpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1dlYlByb2Nlc3NQcm94eS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9XZWJQcm9jZXNzUHJveHkuaAkocmV2aXNpb24gMTkyNjAxKQorKysgU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNTIsOSAr
MTUyLDcgQEAgcHVibGljOgogCiAgICAgUHJvY2Vzc1Rocm90dGxlciYgdGhyb3R0bGVyKCkgeyBy
ZXR1cm4gbV90aHJvdHRsZXI7IH0KIAotI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCiAgICAg
dm9pZCByZWluc3RhdGVOZXR3b3JrUHJvY2Vzc0Fzc2VydGlvblN0YXRlKE5ldHdvcmtQcm9jZXNz
UHJveHkmKTsKLSNlbmRpZgogCiBwcml2YXRlOgogICAgIGV4cGxpY2l0IFdlYlByb2Nlc3NQcm94
eShXZWJQcm9jZXNzUG9vbCYpOwpAQCAtMTg2LDkgKzE4NCw3IEBAIHByaXZhdGU6CiAjaWYgRU5B
QkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpCiAgICAgdm9pZCBnZXRQbHVnaW5Qcm9jZXNzQ29ubmVj
dGlvbih1aW50NjRfdCBwbHVnaW5Qcm9jZXNzVG9rZW4sIFBhc3NSZWZQdHI8TWVzc2FnZXM6Oldl
YlByb2Nlc3NQcm94eTo6R2V0UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb246OkRlbGF5ZWRSZXBseT4p
OwogI2VuZGlmCi0jaWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKICAgICB2b2lkIGdldE5ldHdv
cmtQcm9jZXNzQ29ubmVjdGlvbihQYXNzUmVmUHRyPE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6
OkdldE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbjo6RGVsYXllZFJlcGx5Pik7Ci0jZW5kaWYKICNp
ZiBFTkFCTEUoREFUQUJBU0VfUFJPQ0VTUykKICAgICB2b2lkIGdldERhdGFiYXNlUHJvY2Vzc0Nv
bm5lY3Rpb24oUGFzc1JlZlB0cjxNZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpHZXREYXRhYmFz
ZVByb2Nlc3NDb25uZWN0aW9uOjpEZWxheWVkUmVwbHk+KTsKICNlbmRpZgpAQCAtMjUzLDcgKzI0
OSw3IEBAIHByaXZhdGU6CiAgICAgaW50IG1fbnVtYmVyT2ZUaW1lc1N1ZGRlblRlcm1pbmF0aW9u
V2FzRGlzYWJsZWQ7CiAgICAgUHJvY2Vzc1Rocm90dGxlciBtX3Rocm90dGxlcjsKICAgICBQcm9j
ZXNzVGhyb3R0bGVyOjpCYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbiBtX3Rva2VuRm9ySG9sZGluZ0xv
Y2tlZEZpbGVzOwotI2lmIFBMQVRGT1JNKElPUykgJiYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykK
KyNpZiBQTEFURk9STShJT1MpCiAgICAgUHJvY2Vzc1Rocm90dGxlcjo6Rm9yZWdyb3VuZEFjdGl2
aXR5VG9rZW4gbV9mb3JlZ3JvdW5kVG9rZW5Gb3JOZXR3b3JrUHJvY2VzczsKICAgICBQcm9jZXNz
VGhyb3R0bGVyOjpCYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbiBtX2JhY2tncm91bmRUb2tlbkZvck5l
dHdvcmtQcm9jZXNzOwogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vi
UHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkubWVzc2FnZXMuaW4JKHJldmlzaW9uIDE5MjYwMSkKKysr
IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkubWVzc2FnZXMuaW4JKHdv
cmtpbmcgY29weSkKQEAgLTM4LDkgKzM4LDcgQEAgbWVzc2FnZXMgLT4gV2ViUHJvY2Vzc1Byb3h5
IExlZ2FjeVJlY2VpdgogICAgIEdldFBsdWdpbnMoYm9vbCByZWZyZXNoKSAtPiAoVmVjdG9yPFdl
YkNvcmU6OlBsdWdpbkluZm8+IHBsdWdpbnMsIFZlY3RvcjxXZWJDb3JlOjpQbHVnaW5JbmZvPiBh
cHBsaWNhdGlvblBsdWdpbnMpCiAgICAgR2V0UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24odWludDY0
X3QgcGx1Z2luUHJvY2Vzc1Rva2VuKSAtPiAoSVBDOjpBdHRhY2htZW50IGNvbm5lY3Rpb25IYW5k
bGUsIGJvb2wgc3VwcG9ydHNBc3luY2hyb25vdXNJbml0aWFsaXphdGlvbikgRGVsYXllZAogI2Vu
ZGlmCi0jaWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKICAgICBHZXROZXR3b3JrUHJvY2Vzc0Nv
bm5lY3Rpb24oKSAtPiAoSVBDOjpBdHRhY2htZW50IGNvbm5lY3Rpb25IYW5kbGUpIERlbGF5ZWQK
LSNlbmRpZgogI2lmIEVOQUJMRShEQVRBQkFTRV9QUk9DRVNTKQogICAgIEdldERhdGFiYXNlUHJv
Y2Vzc0Nvbm5lY3Rpb24oKSAtPiAoSVBDOjpBdHRhY2htZW50IGNvbm5lY3Rpb25IYW5kbGUpIERl
bGF5ZWQKICNlbmRpZgpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9BUElQcm9j
ZXNzUG9vbENvbmZpZ3VyYXRpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvQVBJUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmNwcAkocmV2aXNpb24gMTky
NjAxKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9BUElQcm9jZXNzUG9vbENvbmZp
Z3VyYXRpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MSw3ICs0MSw2IEBAIFJlZjxQcm9jZXNz
UG9vbENvbmZpZ3VyYXRpb24+IFByb2Nlc3NQb28KICAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBQ
cm9jZXNzUG9vbENvbmZpZ3VyYXRpb246OmNyZWF0ZSgpOwogCiAgICAgY29uZmlndXJhdGlvbi0+
bV9zaG91bGRIYXZlTGVnYWN5RGF0YVN0b3JlID0gdHJ1ZTsKLSAgICBjb25maWd1cmF0aW9uLT5t
X3Byb2Nlc3NNb2RlbCA9IFdlYktpdDo6UHJvY2Vzc01vZGVsU2hhcmVkU2Vjb25kYXJ5UHJvY2Vz
czsKICAgICBjb25maWd1cmF0aW9uLT5tX3VzZU5ldHdvcmtQcm9jZXNzID0gZmFsc2U7CiAgICAg
Y29uZmlndXJhdGlvbi0+bV9jYWNoZU1vZGVsID0gV2ViS2l0OjpDYWNoZU1vZGVsRG9jdW1lbnRW
aWV3ZXI7CiAKQEAgLTc0LDcgKzczLDYgQEAgUmVmPFByb2Nlc3NQb29sQ29uZmlndXJhdGlvbj4g
UHJvY2Vzc1BvbwogICAgIGF1dG8gY29weSA9IHRoaXMtPmNyZWF0ZSgpOwogCiAgICAgY29weS0+
bV9zaG91bGRIYXZlTGVnYWN5RGF0YVN0b3JlID0gdGhpcy0+bV9zaG91bGRIYXZlTGVnYWN5RGF0
YVN0b3JlOwotICAgIGNvcHktPm1fcHJvY2Vzc01vZGVsID0gdGhpcy0+bV9wcm9jZXNzTW9kZWw7
CiAgICAgY29weS0+bV91c2VOZXR3b3JrUHJvY2VzcyA9IHRoaXMtPm1fdXNlTmV0d29ya1Byb2Nl
c3M7CiAgICAgY29weS0+bV9tYXhpbXVtUHJvY2Vzc0NvdW50ID0gdGhpcy0+bV9tYXhpbXVtUHJv
Y2Vzc0NvdW50OwogICAgIGNvcHktPm1fY2FjaGVNb2RlbCA9IHRoaXMtPm1fY2FjaGVNb2RlbDsK
SW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQVBJUHJvY2Vzc1Bvb2xDb25maWd1
cmF0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9BUElQ
cm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uaAkocmV2aXNpb24gMTkyNjAxKQorKysgU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9BUElQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uaAkod29ya2lu
ZyBjb3B5KQpAQCAtMjgsNyArMjgsNiBAQAogCiAjaW5jbHVkZSAiQVBJT2JqZWN0LmgiCiAjaW5j
bHVkZSAiQ2FjaGVNb2RlbC5oIgotI2luY2x1ZGUgIlByb2Nlc3NNb2RlbC5oIgogI2luY2x1ZGUg
PHd0Zi9SZWYuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQv
V1RGU3RyaW5nLmg+CkBAIC00OCw5ICs0Nyw2IEBAIHB1YmxpYzoKICAgICBib29sIHNob3VsZEhh
dmVMZWdhY3lEYXRhU3RvcmUoKSBjb25zdCB7IHJldHVybiBtX3Nob3VsZEhhdmVMZWdhY3lEYXRh
U3RvcmU7IH0KICAgICB2b2lkIHNldFNob3VsZEhhdmVMZWdhY3lEYXRhU3RvcmUoYm9vbCBzaG91
bGRIYXZlTGVnYWN5RGF0YVN0b3JlKSB7IG1fc2hvdWxkSGF2ZUxlZ2FjeURhdGFTdG9yZSA9IHNo
b3VsZEhhdmVMZWdhY3lEYXRhU3RvcmU7IH0KIAotICAgIFdlYktpdDo6UHJvY2Vzc01vZGVsIHBy
b2Nlc3NNb2RlbCgpIGNvbnN0IHsgcmV0dXJuIG1fcHJvY2Vzc01vZGVsOyB9Ci0gICAgdm9pZCBz
ZXRQcm9jZXNzTW9kZWwoV2ViS2l0OjpQcm9jZXNzTW9kZWwgcHJvY2Vzc01vZGVsKSB7IG1fcHJv
Y2Vzc01vZGVsID0gcHJvY2Vzc01vZGVsOyB9IAotCiAgICAgYm9vbCB1c2VOZXR3b3JrUHJvY2Vz
cygpIGNvbnN0IHsgcmV0dXJuIG1fdXNlTmV0d29ya1Byb2Nlc3M7IH0KICAgICB2b2lkIHNldFVz
ZU5ldHdvcmtQcm9jZXNzKGJvb2wgdXNlTmV0d29ya1Byb2Nlc3MpIHsgbV91c2VOZXR3b3JrUHJv
Y2VzcyA9IHVzZU5ldHdvcmtQcm9jZXNzOyB9IAogCkBAIC05Niw3ICs5Miw2IEBAIHB1YmxpYzoK
IHByaXZhdGU6CiAgICAgYm9vbCBtX3Nob3VsZEhhdmVMZWdhY3lEYXRhU3RvcmUgeyBmYWxzZSB9
OwogCi0gICAgV2ViS2l0OjpQcm9jZXNzTW9kZWwgbV9wcm9jZXNzTW9kZWwgeyBXZWJLaXQ6OlBy
b2Nlc3NNb2RlbE11bHRpcGxlU2Vjb25kYXJ5UHJvY2Vzc2VzIH07CiAgICAgYm9vbCBtX3VzZU5l
dHdvcmtQcm9jZXNzIHsgdHJ1ZSB9OwogICAgIHVuc2lnbmVkIG1fbWF4aW11bVByb2Nlc3NDb3Vu
dCB7IDAgfTsKICAgICBXZWJLaXQ6OkNhY2hlTW9kZWwgbV9jYWNoZU1vZGVsIHsgV2ViS2l0OjpD
YWNoZU1vZGVsUHJpbWFyeVdlYkJyb3dzZXIgfTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvQVBJU2Vzc2lvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9BUElTZXNzaW9uLmNwcAkocmV2aXNpb24gMTkyNjAxKQorKysgU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9BUElTZXNzaW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjgs
MTAgKzI4LDggQEAKIAogI2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+CiAKLSNpZiBFTkFCTEUoTkVU
V09SS19QUk9DRVNTKQogI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzTWVzc2FnZXMuaCIKICNpbmNs
dWRlICJXZWJQcm9jZXNzUG9vbC5oIgotI2VuZGlmCiAKIG5hbWVzcGFjZSBBUEkgewogCkBAIC04
MCwxMiArNzgsMTAgQEAgV2ViQ29yZTo6U2Vzc2lvbklEIFNlc3Npb246OmdldElEKCkgY29ucwog
CiBTZXNzaW9uOjp+U2Vzc2lvbigpCiB7Ci0jaWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKICAg
ICBpZiAobV9zZXNzaW9uSUQuaXNFcGhlbWVyYWwoKSkgewogICAgICAgICBmb3IgKGF1dG8mIHBy
b2Nlc3NQb29sIDogV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6YWxsUHJvY2Vzc1Bvb2xzKCkpCiAg
ICAgICAgICAgICBwcm9jZXNzUG9vbC0+c2VuZFRvTmV0d29ya2luZ1Byb2Nlc3MoTWVzc2FnZXM6
Ok5ldHdvcmtQcm9jZXNzOjpEZXN0cm95UHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbihtX3Nlc3Npb25J
RCkpOwogICAgIH0KLSNlbmRpZgogfQogCiB9IC8vIG5hbWVzcGFjZSBBUEkKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0FQSUNhc3QuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tBUElDYXN0LmgJKHJldmlzaW9uIDE5MjYwMSkK
KysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0FQSUNhc3QuaAkod29ya2luZyBj
b3B5KQpAQCAtMzIsNyArMzIsNiBAQAogI2luY2x1ZGUgIkhUVFBDb29raWVBY2NlcHRQb2xpY3ku
aCIKICNpbmNsdWRlICJJbmplY3RlZEJ1bmRsZUhpdFRlc3RSZXN1bHRNZWRpYVR5cGUuaCIKICNp
bmNsdWRlICJQbHVnaW5Nb2R1bGVJbmZvLmgiCi0jaW5jbHVkZSAiUHJvY2Vzc01vZGVsLmgiCiAj
aW5jbHVkZSAiUmVzb3VyY2VDYWNoZXNUb0NsZWFyLmgiCiAjaW5jbHVkZSAiV0tCdW5kbGVIaXRU
ZXN0UmVzdWx0LmgiCiAjaW5jbHVkZSAiV0tDb250ZXh0LmgiCkBAIC0yMzAsMzEgKzIyOSw2IEBA
IGlubGluZSBXS0NhY2hlTW9kZWwgdG9BUEkoQ2FjaGVNb2RlbCBjYWMKICAgICByZXR1cm4ga1dL
Q2FjaGVNb2RlbERvY3VtZW50Vmlld2VyOwogfQogCi1pbmxpbmUgUHJvY2Vzc01vZGVsIHRvUHJv
Y2Vzc01vZGVsKFdLUHJvY2Vzc01vZGVsIHdrUHJvY2Vzc01vZGVsKQotewotICAgIHN3aXRjaCAo
d2tQcm9jZXNzTW9kZWwpIHsKLSAgICBjYXNlIGtXS1Byb2Nlc3NNb2RlbFNoYXJlZFNlY29uZGFy
eVByb2Nlc3M6Ci0gICAgICAgIHJldHVybiBQcm9jZXNzTW9kZWxTaGFyZWRTZWNvbmRhcnlQcm9j
ZXNzOwotICAgIGNhc2Uga1dLUHJvY2Vzc01vZGVsTXVsdGlwbGVTZWNvbmRhcnlQcm9jZXNzZXM6
Ci0gICAgICAgIHJldHVybiBQcm9jZXNzTW9kZWxNdWx0aXBsZVNlY29uZGFyeVByb2Nlc3NlczsK
LSAgICB9Ci0KLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gUHJvY2Vzc01v
ZGVsU2hhcmVkU2Vjb25kYXJ5UHJvY2VzczsKLX0KLQotaW5saW5lIFdLUHJvY2Vzc01vZGVsIHRv
QVBJKFByb2Nlc3NNb2RlbCBwcm9jZXNzTW9kZWwpCi17Ci0gICAgc3dpdGNoIChwcm9jZXNzTW9k
ZWwpIHsKLSAgICBjYXNlIFByb2Nlc3NNb2RlbFNoYXJlZFNlY29uZGFyeVByb2Nlc3M6Ci0gICAg
ICAgIHJldHVybiBrV0tQcm9jZXNzTW9kZWxTaGFyZWRTZWNvbmRhcnlQcm9jZXNzOwotICAgIGNh
c2UgUHJvY2Vzc01vZGVsTXVsdGlwbGVTZWNvbmRhcnlQcm9jZXNzZXM6Ci0gICAgICAgIHJldHVy
biBrV0tQcm9jZXNzTW9kZWxNdWx0aXBsZVNlY29uZGFyeVByb2Nlc3NlczsKLSAgICB9Ci0gICAg
Ci0gICAgcmV0dXJuIGtXS1Byb2Nlc3NNb2RlbFNoYXJlZFNlY29uZGFyeVByb2Nlc3M7Ci19Ci0K
IGlubGluZSBGb250U21vb3RoaW5nTGV2ZWwgdG9Gb250U21vb3RoaW5nTGV2ZWwoV0tGb250U21v
b3RoaW5nTGV2ZWwgd2tMZXZlbCkKIHsKICAgICBzd2l0Y2ggKHdrTGV2ZWwpIHsKSW5kZXg6IFNv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHQuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHQuY3BwCShyZXZpc2lvbiAx
OTI2MDEpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMzI5LDE2ICszMjksNiBAQCBXS0NhY2hlTW9kZWwgV0tDb250ZXh0
R2V0Q2FjaGVNb2RlbChXS0NvCiAgICAgcmV0dXJuIHRvQVBJKHRvSW1wbChjb250ZXh0UmVmKS0+
Y2FjaGVNb2RlbCgpKTsKIH0KIAotdm9pZCBXS0NvbnRleHRTZXRQcm9jZXNzTW9kZWwoV0tDb250
ZXh0UmVmIGNvbnRleHRSZWYsIFdLUHJvY2Vzc01vZGVsIHByb2Nlc3NNb2RlbCkKLXsKLSAgICB0
b0ltcGwoY29udGV4dFJlZiktPnNldFByb2Nlc3NNb2RlbCh0b1Byb2Nlc3NNb2RlbChwcm9jZXNz
TW9kZWwpKTsKLX0KLQotV0tQcm9jZXNzTW9kZWwgV0tDb250ZXh0R2V0UHJvY2Vzc01vZGVsKFdL
Q29udGV4dFJlZiBjb250ZXh0UmVmKQotewotICAgIHJldHVybiB0b0FQSSh0b0ltcGwoY29udGV4
dFJlZiktPnByb2Nlc3NNb2RlbCgpKTsKLX0KLQogdm9pZCBXS0NvbnRleHRTZXRNYXhpbXVtTnVt
YmVyT2ZQcm9jZXNzZXMoV0tDb250ZXh0UmVmIGNvbnRleHRSZWYsIHVuc2lnbmVkIG51bWJlck9m
UHJvY2Vzc2VzKQogewogICAgIHRvSW1wbChjb250ZXh0UmVmKS0+c2V0TWF4aW11bU51bWJlck9m
UHJvY2Vzc2VzKG51bWJlck9mUHJvY2Vzc2VzKTsKQEAgLTU1NCwxMSArNTQ0LDYgQEAgdm9pZCBX
S0NvbnRleHRTZXRKYXZhU2NyaXB0R2FyYmFnZUNvbGxlYwogICAgIHRvSW1wbChjb250ZXh0UmVm
KS0+c2V0SmF2YVNjcmlwdEdhcmJhZ2VDb2xsZWN0b3JUaW1lckVuYWJsZWQoZW5hYmxlKTsKIH0K
IAotdm9pZCBXS0NvbnRleHRTZXRVc2VzTmV0d29ya1Byb2Nlc3MoV0tDb250ZXh0UmVmIGNvbnRl
eHRSZWYsIGJvb2wgdXNlc05ldHdvcmtQcm9jZXNzKQotewotICAgIHRvSW1wbChjb250ZXh0UmVm
KS0+c2V0VXNlc05ldHdvcmtQcm9jZXNzKHVzZXNOZXR3b3JrUHJvY2Vzcyk7Ci19Ci0KIHZvaWQg
V0tDb250ZXh0VXNlVGVzdGluZ05ldHdvcmtTZXNzaW9uKFdLQ29udGV4dFJlZiBjb250ZXh0KQog
ewogICAgIHRvSW1wbChjb250ZXh0KS0+dXNlVGVzdGluZ05ldHdvcmtTZXNzaW9uKCk7CkluZGV4
OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dC5oCShyZXZpc2lvbiAx
OTI2MDEpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0LmgJKHdv
cmtpbmcgY29weSkKQEAgLTc1LDYgKzc1LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgV0tDb250ZXh0Q2xp
ZW50VjEgewogICAgIFdLQ29udGV4dENvcHlXZWJDcnlwdG9NYXN0ZXJLZXlDYWxsYmFjayAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29weVdlYkNyeXB0b01hc3RlcktleTsKIH0gV0tDb250
ZXh0Q2xpZW50VjE7CiAKKy8vIEZJWE1FOiBUaGVzZSBjYW4gYmUgcmVtb3ZlZCBvbmNlIHdlIGFy
ZSBubyBsb25nZXIgc3VwcG9ydGluZyBNYXZlcmlja3MuCiBlbnVtIHsKICAgICBrV0tQcm9jZXNz
TW9kZWxTaGFyZWRTZWNvbmRhcnlQcm9jZXNzID0gMCwKICAgICBrV0tQcm9jZXNzTW9kZWxNdWx0
aXBsZVNlY29uZGFyeVByb2Nlc3NlcyA9IDEKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvQy9tYWMvV0tDb250ZXh0UHJpdmF0ZU1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvbWFjL1dLQ29udGV4dFByaXZhdGVNYWMubW0JKHJldmlz
aW9uIDE5MjYwMSkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9tYWMvV0tDb250
ZXh0UHJpdmF0ZU1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtMTY2LDEwICsxNjYsNSBAQCBib29s
IFdLQ29udGV4dFNob3VsZFN1Z2dlc3RCbG9ja1dlYkdMKCkKIAogcGlkX3QgV0tDb250ZXh0R2V0
TmV0d29ya1Byb2Nlc3NJZGVudGlmaWVyKFdLQ29udGV4dFJlZiBjb250ZXh0UmVmKQogewotI2lm
IEVOQUJMRShORVRXT1JLX1BST0NFU1MpCiAgICAgcmV0dXJuIHRvSW1wbChjb250ZXh0UmVmKS0+
bmV0d29ya1Byb2Nlc3NJZGVudGlmaWVyKCk7Ci0jZWxzZQotICAgIFVOVVNFRF9QQVJBTShjb250
ZXh0UmVmKTsKLSAgICByZXR1cm4gMDsKLSNlbmRpZgogfQpJbmRleDogU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NHcm91cC5tbQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc0dyb3VwLm1tCShyZXZpc2lv
biAxOTI2MDEpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vz
c0dyb3VwLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xOTIsMTAgKzE5Miw2IEBAIC0gKGlkKWluaXRX
aXRoSW5qZWN0ZWRCdW5kbGVVUkw6KE5TVVJMICoKIAogICAgIGF1dG8gY29uZmlndXJhdGlvbiA9
IEFQSTo6UHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uOjpjcmVhdGVXaXRoTGVnYWN5T3B0aW9ucygp
OwogICAgIGNvbmZpZ3VyYXRpb24tPnNldEluamVjdGVkQnVuZGxlUGF0aChidW5kbGVVUkwgPyBT
dHJpbmcoYnVuZGxlVVJMLnBhdGgpIDogU3RyaW5nKCkpOwotI2lmIFBMQVRGT1JNKElPUykKLSAg
ICBjb25maWd1cmF0aW9uLT5zZXRVc2VOZXR3b3JrUHJvY2Vzcyh0cnVlKTsKLSAgICBjb25maWd1
cmF0aW9uLT5zZXRQcm9jZXNzTW9kZWwoUHJvY2Vzc01vZGVsTXVsdGlwbGVTZWNvbmRhcnlQcm9j
ZXNzZXMpOwotI2VuZGlmCiAKICAgICBfcHJvY2Vzc1Bvb2wgPSBXZWJQcm9jZXNzUG9vbDo6Y3Jl
YXRlKGNvbmZpZ3VyYXRpb24pOwogCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L0NvY29hL1dLUHJvY2Vzc1Bvb2wubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29sLm1tCShyZXZpc2lvbiAxOTI2MDEpCisrKyBT
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc1Bvb2wubW0JKHdvcmtp
bmcgY29weSkKQEAgLTMwLDcgKzMwLDYgQEAKIAogI2ltcG9ydCAiQ2FjaGVNb2RlbC5oIgogI2lt
cG9ydCAiRG93bmxvYWRDbGllbnQuaCIKLSNpbXBvcnQgIlByb2Nlc3NNb2RlbC5oIgogI2ltcG9y
dCAiU2FuZGJveFV0aWxpdGllcy5oIgogI2ltcG9ydCAiV0tPYmplY3QuaCIKICNpbXBvcnQgIldl
YWtPYmpDUHRyLmgiCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tf
Y29udGV4dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9l
ZmwvZXdrX2NvbnRleHQuY3BwCShyZXZpc2lvbiAxOTI2MDEpCisrKyBTb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL2VmbC9ld2tfY29udGV4dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU3MCwy
OSArNTcwLDE4IEBAIHZvaWQgZXdrX2NvbnRleHRfbWVzc2FnZV9mcm9tX2V4dGVuc2lvbnMKIAog
RWluYV9Cb29sIGV3a19jb250ZXh0X3Byb2Nlc3NfbW9kZWxfc2V0KEV3a19Db250ZXh0KiBld2tD
b250ZXh0LCBFd2tfUHJvY2Vzc19Nb2RlbCBwcm9jZXNzTW9kZWwpCiB7Ci0jaWYgRU5BQkxFKE5F
VFdPUktfUFJPQ0VTUykKICAgICBFV0tfT0JKX0dFVF9JTVBMX09SX1JFVFVSTihFd2tDb250ZXh0
LCBld2tDb250ZXh0LCBpbXBsLCBmYWxzZSk7CiAKICAgICBpbXBsLT5zZXRQcm9jZXNzTW9kZWwo
cHJvY2Vzc01vZGVsKTsKIAogICAgIHJldHVybiB0cnVlOwotI2Vsc2UKLSAgICBVTlVTRURfUEFS
QU0oZXdrQ29udGV4dCk7Ci0gICAgVU5VU0VEX1BBUkFNKHByb2Nlc3NNb2RlbCk7Ci0gICAgcmV0
dXJuIGZhbHNlOwotI2VuZGlmCiB9CiAKIEV3a19Qcm9jZXNzX01vZGVsIGV3a19jb250ZXh0X3By
b2Nlc3NfbW9kZWxfZ2V0KGNvbnN0IEV3a19Db250ZXh0KiBld2tDb250ZXh0KQogewotI2lmIEVO
QUJMRShORVRXT1JLX1BST0NFU1MpCiAgICAgRVdLX09CSl9HRVRfSU1QTF9PUl9SRVRVUk4oY29u
c3QgRXdrQ29udGV4dCwgZXdrQ29udGV4dCwgaW1wbCwgRVdLX1BST0NFU1NfTU9ERUxfU0hBUkVE
X1NFQ09OREFSWSk7CiAKICAgICByZXR1cm4gaW1wbC0+cHJvY2Vzc01vZGVsKCk7Ci0jZWxzZQot
ICAgIFVOVVNFRF9QQVJBTShld2tDb250ZXh0KTsKLSAgICByZXR1cm4gRVdLX1BST0NFU1NfTU9E
RUxfU0hBUkVEX1NFQ09OREFSWTsKLSNlbmRpZgogfQogCiBFd2tfVExTX0Vycm9yX1BvbGljeSBl
d2tfY29udGV4dF90bHNfZXJyb3JfcG9saWN5X2dldChjb25zdCBFd2tfQ29udGV4dCogY29udGV4
dCkKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUG9vbENv
Y29hLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9XZWJQ
cm9jZXNzUG9vbENvY29hLm1tCShyZXZpc2lvbiAxOTI2MDEpCisrKyBTb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Bvb2xDb2NvYS5tbQkod29ya2luZyBjb3B5KQpAQCAt
MjYsNiArMjYsOCBAQAogI2ltcG9ydCAiY29uZmlnLmgiCiAjaW1wb3J0ICJXZWJQcm9jZXNzUG9v
bC5oIgogCisjaW1wb3J0ICJOZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oIgorI2lt
cG9ydCAiTmV0d29ya1Byb2Nlc3NQcm94eS5oIgogI2ltcG9ydCAiUGx1Z2luUHJvY2Vzc01hbmFn
ZXIuaCIKICNpbXBvcnQgIlNhbmRib3hVdGlsaXRpZXMuaCIKICNpbXBvcnQgIlRleHRDaGVja2Vy
LmgiCkBAIC00NywxMSArNDksNiBAQAogI2ltcG9ydCA8V2ViQ29yZS9SdW50aW1lQXBwbGljYXRp
b25DaGVja3MuaD4KICNpbXBvcnQgPHN5cy9wYXJhbS5oPgogCi0jaWYgRU5BQkxFKE5FVFdPUktf
UFJPQ0VTUykKLSNpbXBvcnQgIk5ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmgiCi0j
aW1wb3J0ICJOZXR3b3JrUHJvY2Vzc1Byb3h5LmgiCi0jZW5kaWYKLQogI2lmIFBMQVRGT1JNKElP
UykKICNpbXBvcnQgIkFyZ3VtZW50Q29kZXJzQ0YuaCIKICNpbXBvcnQgIldlYk1lbW9yeVByZXNz
dXJlSGFuZGxlcklPUy5oIgpAQCAtNzYsMTAgKzczLDggQEAgc3RhdGljIE5TU3RyaW5nICpXZWJL
aXRBcHBsaWNhdGlvbkRpZENoYQogLy8gRklYTUU6IDxyZGFyOi8vcHJvYmxlbS85MTM4ODE3PiAt
IEFmdGVyIHRoaXMgImJhY2t3YXJkcyBjb21wYXRpYmlsaXR5IiByYWRhciBpcyByZW1vdmVkLCB0
aGlzIGNvZGUgc2hvdWxkIGJlIHJlbW92ZWQgdG8gb25seSByZXR1cm4gYW4gZW1wdHkgU3RyaW5n
LgogTlNTdHJpbmcgKldlYkljb25EYXRhYmFzZURpcmVjdG9yeURlZmF1bHRzS2V5ID0gQCJXZWJJ
Y29uRGF0YWJhc2VEaXJlY3RvcnlEZWZhdWx0c0tleSI7CiAKLSNpZiBFTkFCTEUoTkVUV09SS19Q
Uk9DRVNTKQogc3RhdGljIE5TU3RyaW5nICogY29uc3QgV2ViS2l0MkhUVFBQcm94eURlZmF1bHRz
S2V5ID0gQCJXZWJLaXQySFRUUFByb3h5IjsKIHN0YXRpYyBOU1N0cmluZyAqIGNvbnN0IFdlYktp
dDJIVFRQU1Byb3h5RGVmYXVsdHNLZXkgPSBAIldlYktpdDJIVFRQU1Byb3h5IjsKLSNlbmRpZgog
CiAjaWYgRU5BQkxFKE5FVFdPUktfQ0FDSEUpCiBzdGF0aWMgTlNTdHJpbmcgKiBjb25zdCBXZWJL
aXROZXR3b3JrQ2FjaGVFbmFibGVkRGVmYXVsdHNLZXkgPSBAIldlYktpdE5ldHdvcmtDYWNoZUVu
YWJsZWQiOwpAQCAtMTE5LDEwICsxMTQsOCBAQCBzdGF0aWMgdm9pZCByZWdpc3RlclVzZXJEZWZh
dWx0c0lmTmVlZGVkCiAKIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnVwZGF0ZVByb2Nlc3NTdXBwcmVz
c2lvblN0YXRlKCkKIHsKLSNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQotICAgIGlmICh1c2Vz
TmV0d29ya1Byb2Nlc3MoKSAmJiBtX25ldHdvcmtQcm9jZXNzKQorICAgIGlmIChtX25ldHdvcmtQ
cm9jZXNzKQogICAgICAgICBtX25ldHdvcmtQcm9jZXNzLT5zZXRQcm9jZXNzU3VwcHJlc3Npb25F
bmFibGVkKHByb2Nlc3NTdXBwcmVzc2lvbkVuYWJsZWQoKSk7Ci0jZW5kaWYKIAogI2lmIEVOQUJM
RShORVRTQ0FQRV9QTFVHSU5fQVBJKQogICAgIGlmICghbV9wcm9jZXNzU3VwcHJlc3Npb25EaXNh
YmxlZEZvclBhZ2VDb3VudGVyLnZhbHVlKCkpCkBAIC0xOTcsMTUgKzE5MCw2IEBAIHZvaWQgV2Vi
UHJvY2Vzc1Bvb2w6OnBsYXRmb3JtSW5pdGlhbGl6ZVcKIAogICAgIHBhcmFtZXRlcnMudWlQcm9j
ZXNzQnVuZGxlSWRlbnRpZmllciA9IFN0cmluZyhbW05TQnVuZGxlIG1haW5CdW5kbGVdIGJ1bmRs
ZUlkZW50aWZpZXJdKTsKIAotI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCi0gICAgaWYgKCF1
c2VzTmV0d29ya1Byb2Nlc3MoKSkgewotI2VuZGlmCi0gICAgICAgIGZvciAoY29uc3QgYXV0byYg
c2NoZW1lIDogZ2xvYmFsVVJMU2NoZW1lc1dpdGhDdXN0b21Qcm90b2NvbEhhbmRsZXJzKCkpCi0g
ICAgICAgICAgICBwYXJhbWV0ZXJzLnVybFNjaGVtZXNSZWdpc3RlcmVkRm9yQ3VzdG9tUHJvdG9j
b2xzLmFwcGVuZChzY2hlbWUpOwotI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCi0gICAgfQot
I2VuZGlmCi0KICAgICBwYXJhbWV0ZXJzLmZvbnRXaGl0ZWxpc3QgPSBtX2ZvbnRXaGl0ZWxpc3Q7
CiAKICAgICBpZiAobV9idW5kbGVQYXJhbWV0ZXJzKSB7CkBAIC0yMzYsNyArMjIwLDYgQEAgdm9p
ZCBXZWJQcm9jZXNzUG9vbDo6cGxhdGZvcm1Jbml0aWFsaXplVwogI2VuZGlmCiB9CiAKLSNpZiBF
TkFCTEUoTkVUV09SS19QUk9DRVNTKQogdm9pZCBXZWJQcm9jZXNzUG9vbDo6cGxhdGZvcm1Jbml0
aWFsaXplTmV0d29ya1Byb2Nlc3MoTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMmIHBh
cmFtZXRlcnMpCiB7CiAgICAgTlNVUkxDYWNoZSAqdXJsQ2FjaGUgPSBbTlNVUkxDYWNoZSBzaGFy
ZWRVUkxDYWNoZV07CkBAIC0yNzEsNyArMjU0LDYgQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6cGxh
dGZvcm1Jbml0aWFsaXplTgogICAgIHBhcmFtZXRlcnMudWlQcm9jZXNzQ29va2llU3RvcmFnZUlk
ZW50aWZpZXIuYXBwZW5kKENGRGF0YUdldEJ5dGVQdHIoY29va2llU3RvcmFnZURhdGEuZ2V0KCkp
LCBDRkRhdGFHZXRMZW5ndGgoY29va2llU3RvcmFnZURhdGEuZ2V0KCkpKTsKICNlbmRpZgogfQot
I2VuZGlmCiAKIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnBsYXRmb3JtSW52YWxpZGF0ZUNvbnRleHQo
KQogewpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZFBy
b3h5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvRG93bmxvYWRz
L0Rvd25sb2FkUHJveHkuY3BwCShyZXZpc2lvbiAxOTI2MDEpCisrKyBTb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkUHJveHkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0z
MSwxNiArMzEsMTMgQEAKICNpbmNsdWRlICJBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5Lmgi
CiAjaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgIkRvd25sb2FkUHJveHlNYXAu
aCIKKyNpbmNsdWRlICJOZXR3b3JrUHJvY2Vzc01lc3NhZ2VzLmgiCisjaW5jbHVkZSAiTmV0d29y
a1Byb2Nlc3NQcm94eS5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NNZXNzYWdlcy5oIgogI2luY2x1
ZGUgIldlYlByb2Nlc3NQb29sLmgiCiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogI2lu
Y2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCi0jaWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VT
UykKLSNpbmNsdWRlICJOZXR3b3JrUHJvY2Vzc01lc3NhZ2VzLmgiCi0jaW5jbHVkZSAiTmV0d29y
a1Byb2Nlc3NQcm94eS5oIgotI2VuZGlmCi0KIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBu
YW1lc3BhY2UgV2ViS2l0IHsKQEAgLTc0LDE1ICs3MSw4IEBAIHZvaWQgRG93bmxvYWRQcm94eTo6
Y2FuY2VsKCkKICAgICBpZiAoIW1fcHJvY2Vzc1Bvb2wpCiAgICAgICAgIHJldHVybjsKIAotI2lm
IEVOQUJMRShORVRXT1JLX1BST0NFU1MpCi0gICAgaWYgKG1fcHJvY2Vzc1Bvb2wtPnVzZXNOZXR3
b3JrUHJvY2VzcygpKSB7Ci0gICAgICAgIGlmIChOZXR3b3JrUHJvY2Vzc1Byb3h5KiBuZXR3b3Jr
UHJvY2VzcyA9IG1fcHJvY2Vzc1Bvb2wtPm5ldHdvcmtQcm9jZXNzKCkpCi0gICAgICAgICAgICBu
ZXR3b3JrUHJvY2Vzcy0+Y29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vz
czo6Q2FuY2VsRG93bmxvYWQobV9kb3dubG9hZElEKSwgMCk7Ci0gICAgICAgIHJldHVybjsKLSAg
ICB9Ci0jZW5kaWYKLQotICAgIG1fcHJvY2Vzc1Bvb2wtPnNlbmRUb0FsbFByb2Nlc3NlcyhNZXNz
YWdlczo6V2ViUHJvY2Vzczo6Q2FuY2VsRG93bmxvYWQobV9kb3dubG9hZElEKSk7CisgICAgaWYg
KE5ldHdvcmtQcm9jZXNzUHJveHkqIG5ldHdvcmtQcm9jZXNzID0gbV9wcm9jZXNzUG9vbC0+bmV0
d29ya1Byb2Nlc3MoKSkKKyAgICAgICAgbmV0d29ya1Byb2Nlc3MtPmNvbm5lY3Rpb24oKS0+c2Vu
ZChNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OkNhbmNlbERvd25sb2FkKG1fZG93bmxvYWRJRCks
IDApOwogfQogCiB2b2lkIERvd25sb2FkUHJveHk6OmludmFsaWRhdGUoKQpJbmRleDogU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0xhdW5jaGVyL1Byb2Nlc3NMYXVuY2hlci5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0xhdW5jaGVyL1Byb2Nlc3NMYXVuY2hlci5j
cHAJKHJldmlzaW9uIDE5MjYwMSkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9MYXVuY2hl
ci9Qcm9jZXNzTGF1bmNoZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04NCwxMCArODQsOCBAQCBj
b25zdCBjaGFyKiBQcm9jZXNzTGF1bmNoZXI6OnByb2Nlc3NUeXBlCiAgICAgY2FzZSBQbHVnaW5Q
cm9jZXNzOgogICAgICAgICByZXR1cm4gInBsdWdpbnByb2Nlc3MiOwogI2VuZGlmCi0jaWYgRU5B
QkxFKE5FVFdPUktfUFJPQ0VTUykKICAgICBjYXNlIE5ldHdvcmtQcm9jZXNzOgogICAgICAgICBy
ZXR1cm4gIm5ldHdvcmtwcm9jZXNzIjsKLSNlbmRpZgogI2lmIEVOQUJMRShEQVRBQkFTRV9QUk9D
RVNTKQogICAgIGNhc2UgRGF0YWJhc2VQcm9jZXNzOgogICAgICAgICByZXR1cm4gImRhdGFiYXNl
cHJvY2VzcyI7CkBAIC0xMTIsMTIgKzExMCwxMCBAQCBib29sIFByb2Nlc3NMYXVuY2hlcjo6Z2V0
UHJvY2Vzc1R5cGVGcm9tCiAgICAgfQogI2VuZGlmCiAKLSNpZiBFTkFCTEUoTkVUV09SS19QUk9D
RVNTKQogICAgIGlmICghc3RyY21wKHN0cmluZywgIm5ldHdvcmtwcm9jZXNzIikpIHsKICAgICAg
ICAgcHJvY2Vzc1R5cGUgPSBOZXR3b3JrUHJvY2VzczsKICAgICAgICAgcmV0dXJuIHRydWU7CiAg
ICAgfQotI2VuZGlmCiAKICNpZiBFTkFCTEUoREFUQUJBU0VfUFJPQ0VTUykKICAgICBpZiAoIXN0
cmNtcChzdHJpbmcsICJkYXRhYmFzZXByb2Nlc3MiKSkgewpJbmRleDogU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0xhdW5jaGVyL1Byb2Nlc3NMYXVuY2hlci5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9MYXVuY2hlci9Qcm9jZXNzTGF1bmNoZXIuaAkocmV2aXNpb24g
MTkyNjAxKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0xhdW5jaGVyL1Byb2Nlc3NMYXVu
Y2hlci5oCSh3b3JraW5nIGNvcHkpCkBAIC01MCw5ICs1MCw3IEBAIHB1YmxpYzoKICNpZiBFTkFC
TEUoTkVUU0NBUEVfUExVR0lOX0FQSSkKICAgICAgICAgUGx1Z2luUHJvY2VzcywKICNlbmRpZgot
I2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCiAgICAgICAgIE5ldHdvcmtQcm9jZXNzLAotI2Vu
ZGlmCiAjaWYgRU5BQkxFKERBVEFCQVNFX1BST0NFU1MpCiAgICAgICAgIERhdGFiYXNlUHJvY2Vz
cywKICNlbmRpZgpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0xhdW5jaGVyL2VmbC9Q
cm9jZXNzTGF1bmNoZXJFZmwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9MYXVuY2hlci9lZmwvUHJvY2Vzc0xhdW5jaGVyRWZsLmNwcAkocmV2aXNpb24gMTkyNjAx
KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0xhdW5jaGVyL2VmbC9Qcm9jZXNzTGF1bmNo
ZXJFZmwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTQsMTEgKzExNCw5IEBAIHZvaWQgUHJvY2Vz
c0xhdW5jaGVyOjpsYXVuY2hQcm9jZXNzKCkKICAgICAgICAgcGx1Z2luUGF0aCA9IG1fbGF1bmNo
T3B0aW9ucy5leHRyYUluaXRpYWxpemF0aW9uRGF0YS5nZXQoInBsdWdpbi1wYXRoIik7CiAgICAg
ICAgIGJyZWFrOwogI2VuZGlmCi0jaWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKICAgICBjYXNl
IE5ldHdvcmtQcm9jZXNzOgogICAgICAgICBleGVjdXRhYmxlUGF0aCA9IGV4ZWN1dGFibGVQYXRo
T2ZOZXR3b3JrUHJvY2VzcygpOwogICAgICAgICBicmVhazsKLSNlbmRpZgogI2lmIEVOQUJMRShE
QVRBQkFTRV9QUk9DRVNTKQogICAgIGNhc2UgRGF0YWJhc2VQcm9jZXNzOgogICAgICAgICBleGVj
dXRhYmxlUGF0aCA9IGV4ZWN1dGFibGVQYXRoT2ZEYXRhYmFzZVByb2Nlc3MoKTsKSW5kZXg6IFNv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9MYXVuY2hlci9ndGsvUHJvY2Vzc0xhdW5jaGVyR3RrLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTGF1bmNoZXIvZ3RrL1By
b2Nlc3NMYXVuY2hlckd0ay5jcHAJKHJldmlzaW9uIDE5MjYwMSkKKysrIFNvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9MYXVuY2hlci9ndGsvUHJvY2Vzc0xhdW5jaGVyR3RrLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNzYsMTEgKzc2LDkgQEAgdm9pZCBQcm9jZXNzTGF1bmNoZXI6OmxhdW5jaFByb2Nl
c3MoKQogICAgICAgICByZWFsUGx1Z2luUGF0aCA9IGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihw
bHVnaW5QYXRoKTsKICAgICAgICAgYnJlYWs7CiAjZW5kaWYKLSNpZiBFTkFCTEUoTkVUV09SS19Q
Uk9DRVNTKQogICAgIGNhc2UgTmV0d29ya1Byb2Nlc3M6CiAgICAgICAgIGV4ZWN1dGFibGVQYXRo
ID0gZXhlY3V0YWJsZVBhdGhPZk5ldHdvcmtQcm9jZXNzKCk7CiAgICAgICAgIGJyZWFrOwotI2Vu
ZGlmCiAjaWYgRU5BQkxFKERBVEFCQVNFX1BST0NFU1MpCiAgICAgY2FzZSBEYXRhYmFzZVByb2Nl
c3M6CiAgICAgICAgIGV4ZWN1dGFibGVQYXRoID0gZXhlY3V0YWJsZVBhdGhPZkRhdGFiYXNlUHJv
Y2VzcygpOwpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0xhdW5jaGVyL21hYy9Qcm9j
ZXNzTGF1bmNoZXJNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0xhdW5jaGVyL21hYy9Qcm9jZXNzTGF1bmNoZXJNYWMubW0JKHJldmlzaW9uIDE5MjYwMSkKKysr
IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9MYXVuY2hlci9tYWMvUHJvY2Vzc0xhdW5jaGVyTWFj
Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xMDUsMTQgKzEwNSwxMiBAQCBzdGF0aWMgUmV0YWluUHRy
PE5TU3RyaW5nPiBjb21wdXRlUHJvY2VzCiAgICAgfQogI2VuZGlmCiAKLSNpZiBFTkFCTEUoTkVU
V09SS19QUk9DRVNTKQogICAgIGlmIChsYXVuY2hPcHRpb25zLnByb2Nlc3NUeXBlID09IFByb2Nl
c3NMYXVuY2hlcjo6TmV0d29ya1Byb2Nlc3MpIHsKICAgICAgICAgTlNTdHJpbmcgKnByb2Nlc3NQ
YXRoID0gW3dlYktpdEJ1bmRsZSBwYXRoRm9yQXV4aWxpYXJ5RXhlY3V0YWJsZTpAIk5ldHdvcmtQ
cm9jZXNzLmFwcCJdOwogICAgICAgICBOU1N0cmluZyAqcHJvY2Vzc0FwcEV4ZWN1dGFibGVQYXRo
ID0gW1tOU0J1bmRsZSBidW5kbGVXaXRoUGF0aDpwcm9jZXNzUGF0aF0gZXhlY3V0YWJsZVBhdGhd
OwogCiAgICAgICAgIHJldHVybiBbW3Byb2Nlc3NBcHBFeGVjdXRhYmxlUGF0aCBzdHJpbmdCeURl
bGV0aW5nTGFzdFBhdGhDb21wb25lbnRdIHN0cmluZ0J5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpA
IlNlY0l0ZW1TaGltLmR5bGliIl07CiAgICAgfQotI2VuZGlmCiAKICAgICBpZiAobGF1bmNoT3B0
aW9ucy5wcm9jZXNzVHlwZSA9PSBQcm9jZXNzTGF1bmNoZXI6OldlYlByb2Nlc3MpIHsKICAgICAg
ICAgTlNTdHJpbmcgKnByb2Nlc3NQYXRoID0gW3dlYktpdEJ1bmRsZSBwYXRoRm9yQXV4aWxpYXJ5
RXhlY3V0YWJsZTpAIldlYlByb2Nlc3MuYXBwIl07CkBAIC0xNjcsMTIgKzE2NSwxMCBAQCBzdGF0
aWMgY29uc3QgY2hhciogc2VydmljZU5hbWUoY29uc3QgUHJvCiAgICAgICAgIGlmIChmb3JEZXZl
bG9wbWVudCkKICAgICAgICAgICAgIHJldHVybiAiY29tLmFwcGxlLldlYktpdC5XZWJDb250ZW50
LkRldmVsb3BtZW50IjsKICAgICAgICAgcmV0dXJuICJjb20uYXBwbGUuV2ViS2l0LldlYkNvbnRl
bnQiOwotI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCiAgICAgY2FzZSBQcm9jZXNzTGF1bmNo
ZXI6Ok5ldHdvcmtQcm9jZXNzOgogICAgICAgICBpZiAoZm9yRGV2ZWxvcG1lbnQpCiAgICAgICAg
ICAgICByZXR1cm4gImNvbS5hcHBsZS5XZWJLaXQuTmV0d29ya2luZy5EZXZlbG9wbWVudCI7CiAg
ICAgICAgIHJldHVybiAiY29tLmFwcGxlLldlYktpdC5OZXR3b3JraW5nIjsKLSNlbmRpZgogI2lm
IEVOQUJMRShEQVRBQkFTRV9QUk9DRVNTKQogICAgIGNhc2UgUHJvY2Vzc0xhdW5jaGVyOjpEYXRh
YmFzZVByb2Nlc3M6CiAgICAgICAgIGlmIChmb3JEZXZlbG9wbWVudCkKQEAgLTIwNiwxMiArMjAy
LDkgQEAgc3RhdGljIGJvb2wgc2hvdWxkTGVha0Jvb3N0KGNvbnN0IFByb2NlcwogICAgIC8vIE9u
IGlPUywgbGVhayBhIGJvb3N0IG9udG8gYWxsIGNoaWxkIHByb2Nlc3NlcwogICAgIFVOVVNFRF9Q
QVJBTShsYXVuY2hPcHRpb25zKTsKICAgICByZXR1cm4gdHJ1ZTsKLSNlbGlmIEVOQUJMRShORVRX
T1JLX1BST0NFU1MpCisjZWxzZQogICAgIC8vIE9uIE1hYywgbGVhayBhIGJvb3N0IG9udG8gdGhl
IE5ldHdvcmtQcm9jZXNzLgogICAgIHJldHVybiBsYXVuY2hPcHRpb25zLnByb2Nlc3NUeXBlID09
IFByb2Nlc3NMYXVuY2hlcjo6TmV0d29ya1Byb2Nlc3M7Ci0jZWxzZQotICAgIFVOVVNFRF9QQVJB
TShsYXVuY2hPcHRpb25zKTsKLSAgICByZXR1cm4gZmFsc2U7CiAjZW5kaWYKIH0KICAgICAKQEAg
LTQ4MywxMSArNDc2LDkgQEAgc3RhdGljIHZvaWQgY3JlYXRlUHJvY2Vzcyhjb25zdCBQcm9jZXNz
TAogICAgICAgICBwcm9jZXNzUGF0aCA9IFt3ZWJLaXRCdW5kbGUgcGF0aEZvckF1eGlsaWFyeUV4
ZWN1dGFibGU6QCJQbHVnaW5Qcm9jZXNzLmFwcCJdOwogICAgICAgICBicmVhazsKICNlbmRpZgot
I2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCiAgICAgY2FzZSBQcm9jZXNzTGF1bmNoZXI6Ok5l
dHdvcmtQcm9jZXNzOgogICAgICAgICBwcm9jZXNzUGF0aCA9IFt3ZWJLaXRCdW5kbGUgcGF0aEZv
ckF1eGlsaWFyeUV4ZWN1dGFibGU6QCJOZXR3b3JrUHJvY2Vzcy5hcHAiXTsKICAgICAgICAgYnJl
YWs7Ci0jZW5kaWYKICNpZiBFTkFCTEUoREFUQUJBU0VfUFJPQ0VTUykKICAgICBjYXNlIFByb2Nl
c3NMYXVuY2hlcjo6RGF0YWJhc2VQcm9jZXNzOgogICAgICAgICBwcm9jZXNzUGF0aCA9IFt3ZWJL
aXRCdW5kbGUgcGF0aEZvckF1eGlsaWFyeUV4ZWN1dGFibGU6QCJEYXRhYmFzZVByb2Nlc3MuYXBw
Il07CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vz
c1Byb3h5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTmV0d29y
ay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcAkocmV2aXNpb24gMTkyNjAxKQorKysgU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTI2LDggKzI2LDYgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJO
ZXR3b3JrUHJvY2Vzc1Byb3h5LmgiCiAKLSNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQotCiAj
aW5jbHVkZSAiQXV0aGVudGljYXRpb25DaGFsbGVuZ2VQcm94eS5oIgogI2luY2x1ZGUgIkN1c3Rv
bVByb3RvY29sTWFuYWdlclByb3h5TWVzc2FnZXMuaCIKICNpbmNsdWRlICJEb3dubG9hZFByb3h5
TWVzc2FnZXMuaCIKQEAgLTM3Nyw1ICszNzUsMyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6
OnNldElzSG9sZGluZ0xvCiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAotCi0jZW5kaWYgLy8g
RU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9O
ZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgJKHJldmlzaW9uIDE5MjYw
MSkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJv
eHkuaAkod29ya2luZyBjb3B5KQpAQCAtMjYsOCArMjYsNiBAQAogI2lmbmRlZiBOZXR3b3JrUHJv
Y2Vzc1Byb3h5X2gKICNkZWZpbmUgTmV0d29ya1Byb2Nlc3NQcm94eV9oCiAKLSNpZiBFTkFCTEUo
TkVUV09SS19QUk9DRVNTKQotCiAjaW5jbHVkZSAiQ2hpbGRQcm9jZXNzUHJveHkuaCIKICNpbmNs
dWRlICJDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eS5oIgogI2luY2x1ZGUgIlByb2Nlc3NMYXVu
Y2hlci5oIgpAQCAtMTMyLDYgKzEzMCw0IEBAIHByaXZhdGU6CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YktpdAogCi0jZW5kaWYgLy8gRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKLQogI2VuZGlmIC8vIE5l
dHdvcmtQcm9jZXNzUHJveHlfaApJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL05ldHdv
cmsvTmV0d29ya1Byb2Nlc3NQcm94eS5tZXNzYWdlcy5pbgo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmlu
CShyZXZpc2lvbiAxOTI2MDEpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTmV0d29yay9O
ZXR3b3JrUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluCSh3b3JraW5nIGNvcHkpCkBAIC0yMCw4ICsy
MCw2IEBACiAjIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCiAjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAKLSNpZiBFTkFC
TEUoTkVUV09SS19QUk9DRVNTKQotCiBtZXNzYWdlcyAtPiBOZXR3b3JrUHJvY2Vzc1Byb3h5IExl
Z2FjeVJlY2VpdmVyIHsKICAgICBEaWRDcmVhdGVOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vz
cyhJUEM6OkF0dGFjaG1lbnQgY29ubmVjdGlvbklkZW50aWZpZXIpCiAKQEAgLTM5LDUgKzM3LDMg
QEAgbWVzc2FnZXMgLT4gTmV0d29ya1Byb2Nlc3NQcm94eSBMZWdhY3lSZQogICAgIExvZ1NhbXBs
ZWREaWFnbm9zdGljTWVzc2FnZVdpdGhSZXN1bHQodWludDY0X3QgcGFnZUlELCBTdHJpbmcgbWVz
c2FnZSwgU3RyaW5nIGRlc2NyaXB0aW9uLCB1aW50MzJfdCByZXN1bHQpCiAgICAgTG9nU2FtcGxl
ZERpYWdub3N0aWNNZXNzYWdlV2l0aFZhbHVlKHVpbnQ2NF90IHBhZ2VJRCwgU3RyaW5nIG1lc3Nh
Z2UsIFN0cmluZyBkZXNjcmlwdGlvbiwgU3RyaW5nIHZhbHVlKQogfQotCi0jZW5kaWYgLy8gRU5B
QkxFKE5FVFdPUktfUFJPQ0VTUykKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9OZXR3
b3JrL21hYy9OZXR3b3JrUHJvY2Vzc1Byb3h5TWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9OZXR3b3JrL21hYy9OZXR3b3JrUHJvY2Vzc1Byb3h5TWFjLm1tCShy
ZXZpc2lvbiAxOTI2MDEpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTmV0d29yay9tYWMv
TmV0d29ya1Byb2Nlc3NQcm94eU1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtMjgsOCArMjgsNiBA
QAogCiAjaW1wb3J0ICJOZXR3b3JrUHJvY2Vzc01lc3NhZ2VzLmgiCiAKLSNpZiBFTkFCTEUoTkVU
V09SS19QUk9DRVNTKQotCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogbmFtZXNwYWNlIFdl
YktpdCB7CkBAIC01OSw1ICs1NywzIEBAIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6cGxhdGZv
cm1HZXRMYXUKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KLSNlbmRpZiAvLyBFTkFCTEUo
TkVUV09SS19QUk9DRVNTKQpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL05ldHdvcmsv
c291cC9OZXR3b3JrUHJvY2Vzc1Byb3h5U291cC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL05ldHdvcmsvc291cC9OZXR3b3JrUHJvY2Vzc1Byb3h5U291cC5jcHAJ
KHJldmlzaW9uIDE5MjYwMSkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9OZXR3b3JrL3Nv
dXAvTmV0d29ya1Byb2Nlc3NQcm94eVNvdXAuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNCw5ICsy
NCw4IEBACiAgKi8KIAogI2luY2x1ZGUgImNvbmZpZy5oIgotI2lmIEVOQUJMRShORVRXT1JLX1BS
T0NFU1MpCi0KICNpbmNsdWRlICJOZXR3b3JrUHJvY2Vzc1Byb3h5LmgiCisKICNpbmNsdWRlIDxn
bGliLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtNDMsNSArNDIsMyBAQCB2b2lkIE5ldHdv
cmtQcm9jZXNzUHJveHk6OnBsYXRmb3JtR2V0TGF1CiB9CiAKIH0KLQotI2VuZGlmIC8vIEVOQUJM
RShORVRXT1JLX1BST0NFU1MpCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vic2l0
ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwCShyZXZpc2lvbiAxOTI2
MDEpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFT
dG9yZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk0LDEyICs5NCwxMCBAQCBXZWJzaXRlRGF0YVN0
b3JlOjp+V2Vic2l0ZURhdGFTdG9yZSgpCiB7CiAgICAgcGxhdGZvcm1EZXN0cm95KCk7CiAKLSNp
ZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQogICAgIGlmIChtX3Nlc3Npb25JRC5pc0VwaGVtZXJh
bCgpKSB7CiAgICAgICAgIGZvciAoYXV0byYgcHJvY2Vzc1Bvb2wgOiBXZWJQcm9jZXNzUG9vbDo6
YWxsUHJvY2Vzc1Bvb2xzKCkpCiAgICAgICAgICAgICBwcm9jZXNzUG9vbC0+c2VuZFRvTmV0d29y
a2luZ1Byb2Nlc3MoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpEZXN0cm95UHJpdmF0ZUJyb3dz
aW5nU2Vzc2lvbihtX3Nlc3Npb25JRCkpOwogICAgIH0KLSNlbmRpZgogfQogCiB2b2lkIFdlYnNp
dGVEYXRhU3RvcmU6OmNsb25lU2Vzc2lvbkRhdGEoV2ViUGFnZVByb3h5JiBzb3VyY2VQYWdlLCBX
ZWJQYWdlUHJveHkmIG5ld1BhZ2UpCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3Rr
L1dlYlByb2Nlc3NQb29sR3RrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvZ3RrL1dlYlByb2Nlc3NQb29sR3RrLmNwcAkocmV2aXNpb24gMTkyNjAxKQorKysgU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL2d0ay9XZWJQcm9jZXNzUG9vbEd0ay5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTMwLDYgKzMwLDcgQEAKIAogI2luY2x1ZGUgIkFQSVByb2Nlc3NQb29sQ29uZmln
dXJhdGlvbi5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKKyNpbmNsdWRlICJOZXR3b3JrUHJvY2Vz
c01lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViQ29va2llTWFuYWdlclByb3h5LmgiCiAjaW5jbHVk
ZSAiV2ViSW5zcGVjdG9yU2VydmVyLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc0NyZWF0aW9uUGFy
YW1ldGVycy5oIgpAQCAtNDEsMTAgKzQyLDYgQEAKICNpbmNsdWRlIDx3dGYvZ2xpYi9HVW5pcXVl
UHRyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogCi0jaWYgRU5BQkxFKE5FVFdP
UktfUFJPQ0VTUykKLSNpbmNsdWRlICJOZXR3b3JrUHJvY2Vzc01lc3NhZ2VzLmgiCi0jZW5kaWYK
LQogbmFtZXNwYWNlIFdlYktpdCB7CiAKIHN0YXRpYyB2b2lkIGluaXRJbnNwZWN0b3JTZXJ2ZXIo
KQpAQCAtOTgsMTYgKzk1LDYgQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6cGxhdGZvcm1Jbml0aWFs
aXplVwogICAgICAgICBwYXJhbWV0ZXJzLnVybFNjaGVtZXNSZWdpc3RlcmVkQXNMb2NhbC5hcHBl
bmQoInJlc291cmNlIik7CiAgICAgfQogCi0gICAgaWYgKCF1c2VzTmV0d29ya1Byb2Nlc3MoKSkg
ewotICAgICAgICBwYXJhbWV0ZXJzLnVybFNjaGVtZXNSZWdpc3RlcmVkRm9yQ3VzdG9tUHJvdG9j
b2xzID0gc3VwcGxlbWVudDxXZWJTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlcj4oKS0+
cmVnaXN0ZXJlZFNjaGVtZXNGb3JDdXN0b21Qcm90b2NvbHMoKTsKLQotICAgICAgICBzdXBwbGVt
ZW50PFdlYkNvb2tpZU1hbmFnZXJQcm94eT4oKS0+Z2V0Q29va2llUGVyc2lzdGVudFN0b3JhZ2Uo
cGFyYW1ldGVycy5jb29raWVQZXJzaXN0ZW50U3RvcmFnZVBhdGgsIHBhcmFtZXRlcnMuY29va2ll
UGVyc2lzdGVudFN0b3JhZ2VUeXBlKTsKLSAgICAgICAgcGFyYW1ldGVycy5jb29raWVBY2NlcHRQ
b2xpY3kgPSBtX2luaXRpYWxIVFRQQ29va2llQWNjZXB0UG9saWN5OwotCi0gICAgICAgIHBhcmFt
ZXRlcnMuaWdub3JlVExTRXJyb3JzID0gbV9pZ25vcmVUTFNFcnJvcnM7Ci0gICAgICAgIHBhcmFt
ZXRlcnMuZGlza0NhY2hlRGlyZWN0b3J5ID0gbV9jb25maWd1cmF0aW9uLT5kaXNrQ2FjaGVEaXJl
Y3RvcnkoKTsKLSAgICB9Ci0KICAgICBwYXJhbWV0ZXJzLm1lbW9yeUNhY2hlRGlzYWJsZWQgPSBt
X21lbW9yeUNhY2hlRGlzYWJsZWQgfHwgY2FjaGVNb2RlbCgpID09IENhY2hlTW9kZWxEb2N1bWVu
dFZpZXdlcjsKIH0KIApAQCAtMTQ5LDEzICsxMzYsOCBAQCBTdHJpbmcgV2ViUHJvY2Vzc1Bvb2w6
OmxlZ2FjeVBsYXRmb3JtRGVmCiB2b2lkIFdlYlByb2Nlc3NQb29sOjpzZXRJZ25vcmVUTFNFcnJv
cnMoYm9vbCBpZ25vcmVUTFNFcnJvcnMpCiB7CiAgICAgbV9pZ25vcmVUTFNFcnJvcnMgPSBpZ25v
cmVUTFNFcnJvcnM7Ci0jaWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKLSAgICBpZiAodXNlc05l
dHdvcmtQcm9jZXNzKCkgJiYgbmV0d29ya1Byb2Nlc3MoKSkgeworICAgIGlmIChuZXR3b3JrUHJv
Y2VzcygpKQogICAgICAgICBuZXR3b3JrUHJvY2VzcygpLT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3Jr
UHJvY2Vzczo6U2V0SWdub3JlVExTRXJyb3JzKG1faWdub3JlVExTRXJyb3JzKSwgMCk7Ci0gICAg
ICAgIHJldHVybjsKLSAgICB9Ci0jZW5kaWYKLSAgICBzZW5kVG9BbGxQcm9jZXNzZXMoTWVzc2Fn
ZXM6OldlYlByb2Nlc3M6OlNldElnbm9yZVRMU0Vycm9ycyhtX2lnbm9yZVRMU0Vycm9ycykpOwog
fQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9zb3VwL1dlYlByb2Nlc3NQb29sU291cC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL3NvdXAvV2ViUHJvY2Vzc1Bvb2xTb3VwLmNwcAkocmV2aXNpb24gMTkyNjAx
KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3NvdXAvV2ViUHJvY2Vzc1Bvb2xTb3VwLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMjQsNyArMjQsNiBAQAogICovCiAKICNpbmNsdWRlICJjb25m
aWcuaCIKLSNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQogI2luY2x1ZGUgIldlYlByb2Nlc3NQ
b29sLmgiCiAKICNpbmNsdWRlICJOZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oIgpA
QCAtNDcsNSArNDYsMyBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpwbGF0Zm9ybUluaXRpYWxpemVO
CiB9CiAKIH0KLQotI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViS2l0Mi54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAxOTI2MDEpCisrKyBTb3VyY2UvV2Vi
S2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAg
LTE0NjAsNyArMTQ2MCw2IEBACiAJCUJDNTc1MDk4MTI2OEYzQzYwMDZGMEYxMiAvKiBXZWJQb3B1
cE1lbnVQcm94eU1hYy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEJDNTc1MDk2MTI2OEYzQzYwMDZGMEYxMiAvKiBXZWJQb3B1cE1lbnVQcm94eU1hYy5t
bSAqLzsgfTsKIAkJQkM1NzU2MTMxMjZFMDEzODAwNkYwRjEyIC8qIEFQSUVycm9yLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDNTc1NjEyMTI2RTAx
MzgwMDZGMEYxMiAvKiBBUElFcnJvci5jcHAgKi87IH07CiAJCUJDNTk1NDg5MTVDNzg2ODUwMEZE
MUUzRSAvKiBXZWJLaXQyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBCQzU5NTQ4ODE1Qzc4Njg1MDBGRDFFM0UgLyogV2ViS2l0Mi5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCUJDNTk3MDc1MTE2NTkxRDAw
MDU1MUZDQSAvKiBQcm9jZXNzTW9kZWwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEJDNTk3MDc0MTE2NTkxRDAwMDU1MUZDQSAvKiBQcm9jZXNzTW9kZWwu
aCAqLzsgfTsKIAkJQkM1Qzc1QzgxNDk1NERBNjAwQkM0Nzc1IC8qIFdLQ29ubmVjdGlvbkludGVy
bmFsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzVD
NzVDNjE0OTU0REE2MDBCQzQ3NzUgLyogV0tDb25uZWN0aW9uSW50ZXJuYWwuaCAqLzsgfTsKIAkJ
QkM1RDI0QTExNkNDM0I5RTAwN0Q1NDYxIC8qIENoaWxkUHJvY2Vzc01haW4ubW0gaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzVEMjQ5RjE2Q0MzQjlFMDA3
RDU0NjEgLyogQ2hpbGRQcm9jZXNzTWFpbi5tbSAqLzsgfTsKIAkJQkM1RDI0QTIxNkNDM0I5RTAw
N0Q1NDYxIC8qIENoaWxkUHJvY2Vzc01haW4ubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBCQzVEMjQ5RjE2Q0MzQjlFMDA3RDU0NjEgLyogQ2hpbGRQcm9j
ZXNzTWFpbi5tbSAqLzsgfTsKQEAgLTM3MzIsNyArMzczMSw2IEBACiAJCUJDNTc1MDk2MTI2OEYz
QzYwMDZGMEYxMiAvKiBXZWJQb3B1cE1lbnVQcm94eU1hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdlYlBvcHVwTWVudVByb3h5TWFjLm1tOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlCQzU3NTYxMjEyNkUwMTM4MDA2RjBGMTIgLyogQVBJRXJyb3Iu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQVBJRXJyb3IuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQzU5NTQ4ODE1Qzc4Njg1MDBGRDFFM0UgLyog
V2ViS2l0Mi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJLaXQyLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUJDNTk3MDc0MTE2NTkxRDAwMDU1MUZDQSAvKiBQ
cm9jZXNzTW9kZWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUHJvY2Vzc01v
ZGVsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDNUM3NUM2MTQ5NTREQTYwMEJD
NDc3NSAvKiBXS0Nvbm5lY3Rpb25JbnRlcm5hbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBXS0Nvbm5lY3Rpb25JbnRlcm5hbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlCQzVEMjQ5RjE2Q0MzQjlFMDA3RDU0NjEgLyogQ2hpbGRQcm9jZXNzTWFpbi5tbSAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IENoaWxkUHJvY2Vzc01haW4ubW07
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDNUQyNEI4MTZDQzQwQkIwMDdENTQ2MSAv
KiBCYXNlTGVnYWN5UHJvY2Vzcy54Y2NvbmZpZyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQueGNjb25maWc7IHBhdGggPSBCYXNlTGVnYWN5UHJv
Y2Vzcy54Y2NvbmZpZzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTYyMzgsNyArNjIz
Niw2IEBACiAJCQkJMUFDNzUzN0ExODNBOUZEQjAwNzJDQjE1IC8qIFBhZ2VMb2FkU3RhdGUuaCAq
LywKIAkJCQkzNzcxNkE1OTE5NUI5MTA1MDBFRThCMUIgLyogUHJvY2Vzc0Fzc2VydGlvbi5jcHAg
Ki8sCiAJCQkJODZGOTUzNjAxOEZGNEZENDAwMURCMkVGIC8qIFByb2Nlc3NBc3NlcnRpb24uaCAq
LywKLQkJCQlCQzU5NzA3NDExNjU5MUQwMDA1NTFGQ0EgLyogUHJvY2Vzc01vZGVsLmggKi8sCiAJ
CQkJODZFNjdBMjIxOTBGNDExODAwMDA0QUI3IC8qIFByb2Nlc3NUaHJvdHRsZXIuY3BwICovLAog
CQkJCTg2RTY3QTIxMTkwRjQxMTgwMDAwNEFCNyAvKiBQcm9jZXNzVGhyb3R0bGVyLmggKi8sCiAJ
CQkJODMwNDhBRTUxQUNBNDVEQzAwODJDODMyIC8qIFByb2Nlc3NUaHJvdHRsZXJDbGllbnQuaCAq
LywKQEAgLTc5ODksNyArNzk4Niw2IEBACiAJCQkJRTFDQzFCOTAxMkQ3RUFERjAwNjI1ODM4IC8q
IFByaW50SW5mby5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODZGOTUzNjUxOEZGNThGNTAwMURCMkVG
IC8qIFByb2Nlc3NBc3NlcnRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMUE3QzU4MTEzNkUx
OUMwMEZCNzE2NyAvKiBQcm9jZXNzTGF1bmNoZXIuaCBpbiBIZWFkZXJzICovLAotCQkJCUJDNTk3
MDc1MTE2NTkxRDAwMDU1MUZDQSAvKiBQcm9jZXNzTW9kZWwuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTg2RTY3QTI1MTkxMEI5RDEwMDAwNEFCNyAvKiBQcm9jZXNzVGhyb3R0bGVyLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk4MzA0OEFFNjFBQ0E0NURDMDA4MkM4MzIgLyogUHJvY2Vzc1Rocm90dGxlckNs
aWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkQ3RjEzMTAxQTcwMkZCQTAwOUE2RkJEIC8qIFBy
b2Nlc3NUeXBlLmggaW4gSGVhZGVycyAqLywKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUHJvY2Vzcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQcm9jZXNzLmNwcAkocmV2aXNpb24gMTkyNjAxKQorKysgU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzcsNiArMzcsNyBAQAog
I2luY2x1ZGUgIkluamVjdGVkQnVuZGxlLmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1
ZGUgIk5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzTWVzc2FnZXMuaCIKKyNpbmNsdWRlICJO
ZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uaCIKICNpbmNsdWRlICJQbHVnaW5Qcm9jZXNzQ29ubmVj
dGlvbk1hbmFnZXIuaCIKICNpbmNsdWRlICJTZXNzaW9uVHJhY2tlci5oIgogI2luY2x1ZGUgIlN0
YXRpc3RpY3NEYXRhLmgiCkBAIC02MCw2ICs2MSw3IEBACiAjaW5jbHVkZSAiV2ViUHJvY2Vzc01l
c3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc1Bvb2xNZXNzYWdlcy5oIgogI2luY2x1ZGUg
IldlYlByb2Nlc3NQcm94eU1lc3NhZ2VzLmgiCisjaW5jbHVkZSAiV2ViUmVzb3VyY2VMb2FkU2No
ZWR1bGVyLmgiCiAjaW5jbHVkZSAiV2Vic2l0ZURhdGEuaCIKICNpbmNsdWRlICJXZWJzaXRlRGF0
YVR5cGVzLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNMb2NrLmg+CkBAIC0xMDEsMTIg
KzEwMyw5IEBACiAjaW5jbHVkZSAiT2JqQ09iamVjdEdyYXBoLmgiCiAjZW5kaWYKIAotI2lmIEVO
QUJMRShORVRXT1JLX1BST0NFU1MpCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAjaW5jbHVkZSAiQ29v
a2llU3RvcmFnZVNoaW0uaCIKICNlbmRpZgotI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzQ29ubmVj
dGlvbi5oIgotI2VuZGlmCiAKICNpZiBFTkFCTEUoU0VDX0lURU1fU0hJTSkKICNpbmNsdWRlICJT
ZWNJdGVtU2hpbS5oIgpAQCAtMTI0LDEwICsxMjMsNiBAQAogI2luY2x1ZGUgIldlYkJhdHRlcnlN
YW5hZ2VyLmgiCiAjZW5kaWYKIAotI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCi0jaW5jbHVk
ZSAiV2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVyLmgiCi0jZW5kaWYKLQogI2lmIEVOQUJMRShSRU1P
VEVfSU5TUEVDVE9SKQogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1JlbW90ZUluc3BlY3Rvci5o
PgogI2VuZGlmCkBAIC0xNjEsMTEgKzE1Niw4IEBAIFdlYlByb2Nlc3M6OldlYlByb2Nlc3MoKQog
ICAgICwgbV9mdWxsS2V5Ym9hcmRBY2Nlc3NFbmFibGVkKGZhbHNlKQogICAgICwgbV90ZXh0Q2hl
Y2tlclN0YXRlKCkKICAgICAsIG1faWNvbkRhdGFiYXNlUHJveHkobmV3IFdlYkljb25EYXRhYmFz
ZVByb3h5KHRoaXMpKQotI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCi0gICAgLCBtX3VzZXNO
ZXR3b3JrUHJvY2VzcyhmYWxzZSkKICAgICAsIG1fd2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVyKG5l
dyBXZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXIpCiAgICAgLCBtX2Ruc1ByZWZldGNoSHlzdGVyZXJp
cyhbdGhpc10oSHlzdGVyZXNpc1N0YXRlIHN0YXRlKSB7IGlmIChzdGF0ZSA9PSBIeXN0ZXJlc2lz
U3RhdGU6OlN0b3BwZWQpIG1fZG5zUHJlZmV0Y2hlZEhvc3RzLmNsZWFyKCk7IH0pCi0jZW5kaWYK
ICNpZiBFTkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQSSkKICAgICAsIG1fcGx1Z2luUHJvY2Vzc0Nv
bm5lY3Rpb25NYW5hZ2VyKFBsdWdpblByb2Nlc3NDb25uZWN0aW9uTWFuYWdlcjo6Y3JlYXRlKCkp
CiAjZW5kaWYKQEAgLTI1MiwzNCArMjQ0LDEwIEBAIHZvaWQgV2ViUHJvY2Vzczo6aW5pdGlhbGl6
ZUNvbm5lY3Rpb24oSVAKICAgICBjb25uZWN0aW9uLT5zZXRPbmx5U2VuZE1lc3NhZ2VzQXNEaXNw
YXRjaFdoZW5XYWl0aW5nRm9yU3luY1JlcGx5V2hlblByb2Nlc3NpbmdTdWNoQU1lc3NhZ2UodHJ1
ZSk7CiB9CiAKLXZvaWQgV2ViUHJvY2Vzczo6ZGlkQ3JlYXRlRG93bmxvYWQoKQotewotICAgIGRp
c2FibGVUZXJtaW5hdGlvbigpOwotfQotCi12b2lkIFdlYlByb2Nlc3M6OmRpZERlc3Ryb3lEb3du
bG9hZCgpCi17Ci0gICAgZW5hYmxlVGVybWluYXRpb24oKTsKLX0KLQotSVBDOjpDb25uZWN0aW9u
KiBXZWJQcm9jZXNzOjpkb3dubG9hZFByb3h5Q29ubmVjdGlvbigpCi17Ci0gICAgcmV0dXJuIHBh
cmVudFByb2Nlc3NDb25uZWN0aW9uKCk7Ci19Ci0KLUF1dGhlbnRpY2F0aW9uTWFuYWdlciYgV2Vi
UHJvY2Vzczo6ZG93bmxvYWRzQXV0aGVudGljYXRpb25NYW5hZ2VyKCkKLXsKLSAgICByZXR1cm4g
KnN1cHBsZW1lbnQ8QXV0aGVudGljYXRpb25NYW5hZ2VyPigpOwotfQotCiB2b2lkIFdlYlByb2Nl
c3M6OmluaXRpYWxpemVXZWJQcm9jZXNzKFdlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMmJiBw
YXJhbWV0ZXJzKQogewogICAgIEFTU0VSVChtX3BhZ2VNYXAuaXNFbXB0eSgpKTsKIAotI2lmIEVO
QUJMRShORVRXT1JLX1BST0NFU1MpCi0gICAgbV91c2VzTmV0d29ya1Byb2Nlc3MgPSBwYXJhbWV0
ZXJzLnVzZXNOZXR3b3JrUHJvY2VzczsKLSNlbmRpZgotCiAjaWYgT1MoTElOVVgpCiAgICAgV2Vi
Q29yZTo6TWVtb3J5UHJlc3N1cmVIYW5kbGVyOjpSZWxpZWZMb2dnZXI6OnNldExvZ2dpbmdFbmFi
bGVkKHBhcmFtZXRlcnMuc2hvdWxkRW5hYmxlTWVtb3J5UHJlc3N1cmVSZWxpZWZMb2dnaW5nKTsK
ICNlbmRpZgpAQCAtMzU4LDEzICszMjYsMTAgQEAgdm9pZCBXZWJQcm9jZXNzOjppbml0aWFsaXpl
V2ViUHJvY2VzcyhXZQogICAgIGlmIChwYXJhbWV0ZXJzLnNob3VsZFVzZVRlc3RpbmdOZXR3b3Jr
U2Vzc2lvbikKICAgICAgICAgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzd2l0Y2hUb05ld1Rlc3Rp
bmdTZXNzaW9uKCk7CiAKLSNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQogICAgIGVuc3VyZU5l
dHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpOwogCiAjaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgaWYg
KHVzZXNOZXR3b3JrUHJvY2VzcygpKQotICAgICAgICBDb29raWVTdG9yYWdlU2hpbTo6c2luZ2xl
dG9uKCkuaW5pdGlhbGl6ZSgpOwotI2VuZGlmCisgICAgQ29va2llU3RvcmFnZVNoaW06OnNpbmds
ZXRvbigpLmluaXRpYWxpemUoKTsKICNlbmRpZgogICAgIHNldFRlcm1pbmF0aW9uVGltZW91dChw
YXJhbWV0ZXJzLnRlcm1pbmF0aW9uVGltZW91dCk7CiAKQEAgLTM5NiwxMiArMzYxLDggQEAgdm9p
ZCBXZWJQcm9jZXNzOjppbml0aWFsaXplV2ViUHJvY2VzcyhXZQogI2VuZGlmCiB9CiAKLSNpZiBF
TkFCTEUoTkVUV09SS19QUk9DRVNTKQogdm9pZCBXZWJQcm9jZXNzOjplbnN1cmVOZXR3b3JrUHJv
Y2Vzc0Nvbm5lY3Rpb24oKQogewotICAgIGlmICghbV91c2VzTmV0d29ya1Byb2Nlc3MpCi0gICAg
ICAgIHJldHVybjsKLQogICAgIGlmIChtX25ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbikKICAgICAg
ICAgcmV0dXJuOwogCkBAIC00MjIsNyArMzgzLDYgQEAgdm9pZCBXZWJQcm9jZXNzOjplbnN1cmVO
ZXR3b3JrUHJvY2Vzc0NvbgogICAgICAgICByZXR1cm47CiAgICAgbV9uZXR3b3JrUHJvY2Vzc0Nv
bm5lY3Rpb24gPSBOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb246OmNyZWF0ZShjb25uZWN0aW9uSWRl
bnRpZmllcik7CiB9Ci0jZW5kaWYgLy8gRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKIAogdm9pZCBX
ZWJQcm9jZXNzOjpyZWdpc3RlclVSTFNjaGVtZUFzRW1wdHlEb2N1bWVudChjb25zdCBTdHJpbmcm
IHVybFNjaGVtZSkKIHsKQEAgLTUxMSwxNCArNDcxLDYgQEAgdm9pZCBXZWJQcm9jZXNzOjpkZXN0
cm95UHJpdmF0ZUJyb3dzaW5nUwogI2VuZGlmCiB9CiAKLURvd25sb2FkTWFuYWdlciYgV2ViUHJv
Y2Vzczo6ZG93bmxvYWRNYW5hZ2VyKCkKLXsKLSAgICBBU1NFUlQoIXVzZXNOZXR3b3JrUHJvY2Vz
cygpKTsKLQotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxEb3dubG9hZE1hbmFnZXI+IGRvd25s
b2FkTWFuYWdlcih0aGlzKTsKLSAgICByZXR1cm4gZG93bmxvYWRNYW5hZ2VyOwotfQotCiAjaWYg
RU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpCiBQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbk1hbmFn
ZXImIFdlYlByb2Nlc3M6OnBsdWdpblByb2Nlc3NDb25uZWN0aW9uTWFuYWdlcigpCiB7CkBAIC01
ODEsNyArNTMzLDYgQEAgdm9pZCBXZWJQcm9jZXNzOjpyZW1vdmVXZWJQYWdlKHVpbnQ2NF90IAog
Ym9vbCBXZWJQcm9jZXNzOjpzaG91bGRUZXJtaW5hdGUoKQogewogICAgIEFTU0VSVChtX3BhZ2VN
YXAuaXNFbXB0eSgpKTsKLSAgICBBU1NFUlQodXNlc05ldHdvcmtQcm9jZXNzKCkgfHwgIWRvd25s
b2FkTWFuYWdlcigpLmlzRG93bmxvYWRpbmcoKSk7CiAKICAgICAvLyBGSVhNRTogdGhlIFNob3Vs
ZFRlcm1pbmF0ZSBtZXNzYWdlIHNob3VsZCBhbHNvIHNlbmQgdGVybWluYXRpb24gcGFyYW1ldGVy
cywgc3VjaCBhcyBhbnkgc2Vzc2lvbiBjb29raWVzIHRoYXQgbmVlZCB0byBiZSBwcmVzZXJ2ZWQu
CiAgICAgYm9vbCBzaG91bGRUZXJtaW5hdGUgPSBmYWxzZTsKQEAgLTEwMjUsMjAgKzk3Niw4IEBA
IHZvaWQgV2ViUHJvY2Vzczo6c2V0SW5qZWN0ZWRCdW5kbGVQYXJhbWUKICAgICBpbmplY3RlZEJ1
bmRsZS0+c2V0QnVuZGxlUGFyYW1ldGVycyh2YWx1ZSk7CiB9CiAKLWJvb2wgV2ViUHJvY2Vzczo6
dXNlc05ldHdvcmtQcm9jZXNzKCkgY29uc3QKLXsKLSNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNT
KQotICAgIHJldHVybiBtX3VzZXNOZXR3b3JrUHJvY2VzczsKLSNlbHNlCi0gICAgcmV0dXJuIGZh
bHNlOwotI2VuZGlmCi19Ci0KLSNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQogTmV0d29ya1By
b2Nlc3NDb25uZWN0aW9uKiBXZWJQcm9jZXNzOjpuZXR3b3JrQ29ubmVjdGlvbigpCiB7Ci0gICAg
QVNTRVJUKG1fdXNlc05ldHdvcmtQcm9jZXNzKTsKLQogICAgIC8vIElmIHdlJ3ZlIGxvc3Qgb3Vy
IGNvbm5lY3Rpb24gdG8gdGhlIG5ldHdvcmsgcHJvY2VzcyAoZS5nLiBpdCBjcmFzaGVkKSB0cnkg
dG8gcmUtZXN0YWJsaXNoIGl0LgogICAgIGlmICghbV9uZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24p
CiAgICAgICAgIGVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpOwpAQCAtMTA2NCw3ICsx
MDAzLDYgQEAgV2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVyJiBXZWJQcm9jZXNzOjp3ZQogewogICAg
IHJldHVybiAqbV93ZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXI7CiB9Ci0jZW5kaWYgLy8gRU5BQkxF
RChORVRXT1JLX1BST0NFU1MpCiAKICNpZiBFTkFCTEUoREFUQUJBU0VfUFJPQ0VTUykKIHZvaWQg
V2ViUHJvY2Vzczo6d2ViVG9EYXRhYmFzZVByb2Nlc3NDb25uZWN0aW9uQ2xvc2VkKFdlYlRvRGF0
YWJhc2VQcm9jZXNzQ29ubmVjdGlvbiogY29ubmVjdGlvbikKQEAgLTExMDgsMjcgKzEwNDYsNiBA
QCB2b2lkIFdlYlByb2Nlc3M6OmVuc3VyZVdlYlRvRGF0YWJhc2VQcm9jCiAKICNlbmRpZiAvLyBF
TkFCTEVEKERBVEFCQVNFX1BST0NFU1MpCiAKLXZvaWQgV2ViUHJvY2Vzczo6ZG93bmxvYWRSZXF1
ZXN0KFNlc3Npb25JRCBzZXNzaW9uSUQsIHVpbnQ2NF90IGRvd25sb2FkSUQsIHVpbnQ2NF90IGlu
aXRpYXRpbmdQYWdlSUQsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKLXsKLSAgICBX
ZWJQYWdlKiBpbml0aWF0aW5nUGFnZSA9IGluaXRpYXRpbmdQYWdlSUQgPyB3ZWJQYWdlKGluaXRp
YXRpbmdQYWdlSUQpIDogMDsKLQotICAgIFJlc291cmNlUmVxdWVzdCByZXF1ZXN0V2l0aE9yaWdp
bmFsVVJMID0gcmVxdWVzdDsKLSAgICBpZiAoaW5pdGlhdGluZ1BhZ2UpCi0gICAgICAgIGluaXRp
YXRpbmdQYWdlLT5tYWluRnJhbWUoKS0+bG9hZGVyKCkuc2V0T3JpZ2luYWxVUkxGb3JEb3dubG9h
ZFJlcXVlc3QocmVxdWVzdFdpdGhPcmlnaW5hbFVSTCk7Ci0KLSAgICBkb3dubG9hZE1hbmFnZXIo
KS5zdGFydERvd25sb2FkKHNlc3Npb25JRCwgZG93bmxvYWRJRCwgcmVxdWVzdFdpdGhPcmlnaW5h
bFVSTCk7Ci19Ci0KLXZvaWQgV2ViUHJvY2Vzczo6cmVzdW1lRG93bmxvYWQodWludDY0X3QgZG93
bmxvYWRJRCwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiByZXN1bWVEYXRhLCBjb25zdCBTdHJp
bmcmIHBhdGgsIGNvbnN0IFdlYktpdDo6U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiBzYW5kYm94
RXh0ZW5zaW9uSGFuZGxlKQotewotICAgIGRvd25sb2FkTWFuYWdlcigpLnJlc3VtZURvd25sb2Fk
KGRvd25sb2FkSUQsIHJlc3VtZURhdGEsIHBhdGgsIHNhbmRib3hFeHRlbnNpb25IYW5kbGUpOwot
fQotCi12b2lkIFdlYlByb2Nlc3M6OmNhbmNlbERvd25sb2FkKHVpbnQ2NF90IGRvd25sb2FkSUQp
Ci17Ci0gICAgZG93bmxvYWRNYW5hZ2VyKCkuY2FuY2VsRG93bmxvYWQoZG93bmxvYWRJRCk7Ci19
Ci0KIHZvaWQgV2ViUHJvY2Vzczo6c2V0RW5oYW5jZWRBY2Nlc3NpYmlsaXR5KGJvb2wgZmxhZykK
IHsKICAgICBXZWJDb3JlOjpBWE9iamVjdENhY2hlOjpzZXRFbmhhbmNlZFVzZXJJbnRlcmZhY2VB
Y2Nlc3NpYmlsaXR5KGZsYWcpOwpAQCAtMTQ3MCwxOCArMTM4NywxMiBAQCB2b2lkIFdlYlByb2Nl
c3M6OnByZWZldGNoRE5TKGNvbnN0IFN0cmluCiAgICAgaWYgKGhvc3RuYW1lLmlzRW1wdHkoKSkK
ICAgICAgICAgcmV0dXJuOwogCi0jaWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKLSAgICBpZiAo
dXNlc05ldHdvcmtQcm9jZXNzKCkpIHsKLSAgICAgICAgaWYgKG1fZG5zUHJlZmV0Y2hlZEhvc3Rz
LmFkZChob3N0bmFtZSkuaXNOZXdFbnRyeSkKLSAgICAgICAgICAgIG5ldHdvcmtDb25uZWN0aW9u
KCktPmNvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3M6OlByZWZldGNoRE5TKGhvc3RuYW1lKSwgMCk7Ci0gICAgICAgIC8vIFRoZSBETlMgcHJl
ZmV0Y2hlZCBob3N0cyBjYWNoZSBpcyBvbmx5IHRvIGF2b2lkIGFza2luZyBmb3IgdGhlIHNhbWUg
aG9zdHMgdG9vIG1hbnkgdGltZXMKLSAgICAgICAgLy8gaW4gYSB2ZXJ5IHNob3J0IHBlcmlvZCBv
ZiB0aW1lLCBwcm9kdWNpbmcgYSBsb3Qgb2YgSVBDIHRyYWZmaWMuIFNvIHdlIGNsZWFyIHRoaXMg
Y2FjaGUgYWZ0ZXIKLSAgICAgICAgLy8gc29tZSB0aW1lIG9mIG5vIEROUyByZXF1ZXN0cy4KLSAg
ICAgICAgbV9kbnNQcmVmZXRjaEh5c3RlcmVyaXMuaW1wdWxzZSgpOwotICAgICAgICByZXR1cm47
Ci0gICAgfQotI2VuZGlmCi0gICAgV2ViQ29yZTo6cHJlZmV0Y2hETlMoaG9zdG5hbWUpOworICAg
IGlmIChtX2Ruc1ByZWZldGNoZWRIb3N0cy5hZGQoaG9zdG5hbWUpLmlzTmV3RW50cnkpCisgICAg
ICAgIG5ldHdvcmtDb25uZWN0aW9uKCktPmNvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6TmV0
d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OlByZWZldGNoRE5TKGhvc3RuYW1lKSwgMCk7Cisg
ICAgLy8gVGhlIEROUyBwcmVmZXRjaGVkIGhvc3RzIGNhY2hlIGlzIG9ubHkgdG8gYXZvaWQgYXNr
aW5nIGZvciB0aGUgc2FtZSBob3N0cyB0b28gbWFueSB0aW1lcworICAgIC8vIGluIGEgdmVyeSBz
aG9ydCBwZXJpb2Qgb2YgdGltZSwgcHJvZHVjaW5nIGEgbG90IG9mIElQQyB0cmFmZmljLiBTbyB3
ZSBjbGVhciB0aGlzIGNhY2hlIGFmdGVyCisgICAgLy8gc29tZSB0aW1lIG9mIG5vIEROUyByZXF1
ZXN0cy4KKyAgICBtX2Ruc1ByZWZldGNoSHlzdGVyZXJpcy5pbXB1bHNlKCk7CiB9CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYktpdApJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9j
ZXNzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNz
LmgJKHJldmlzaW9uIDE5MjYwMSkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJv
Y2Vzcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw3ICsyOCw2IEBACiAKICNpbmNsdWRlICJDYWNo
ZU1vZGVsLmgiCiAjaW5jbHVkZSAiQ2hpbGRQcm9jZXNzLmgiCi0jaW5jbHVkZSAiRG93bmxvYWRN
YW5hZ2VyLmgiCiAjaW5jbHVkZSAiRHJhd2luZ0FyZWEuaCIKICNpbmNsdWRlICJQbHVnaW5Qcm9j
ZXNzQ29ubmVjdGlvbk1hbmFnZXIuaCIKICNpbmNsdWRlICJSZXNvdXJjZUNhY2hlc1RvQ2xlYXIu
aCIKQEAgLTcxLDkgKzcwLDkgQEAgc3RydWN0IFNlY3VyaXR5T3JpZ2luRGF0YTsKIAogbmFtZXNw
YWNlIFdlYktpdCB7CiAKLWNsYXNzIERvd25sb2FkTWFuYWdlcjsKIGNsYXNzIEV2ZW50RGlzcGF0
Y2hlcjsKIGNsYXNzIEluamVjdGVkQnVuZGxlOworY2xhc3MgTmV0d29ya1Byb2Nlc3NDb25uZWN0
aW9uOwogY2xhc3MgT2JqQ09iamVjdEdyYXBoOwogY2xhc3MgVXNlckRhdGE7CiBjbGFzcyBXZWJD
b25uZWN0aW9uVG9VSVByb2Nlc3M7CkBAIC04MiwyMiArODEsMTcgQEAgY2xhc3MgV2ViSWNvbkRh
dGFiYXNlUHJveHk7CiBjbGFzcyBXZWJQYWdlOwogY2xhc3MgV2ViUGFnZUdyb3VwUHJveHk7CiBj
bGFzcyBXZWJQcm9jZXNzU3VwcGxlbWVudDsKK2NsYXNzIFdlYlJlc291cmNlTG9hZFNjaGVkdWxl
cjsKIHN0cnVjdCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzOwogc3RydWN0IFdlYlBhZ2VHcm91
cERhdGE7CiBzdHJ1Y3QgV2ViUHJlZmVyZW5jZXNTdG9yZTsKIHN0cnVjdCBXZWJQcm9jZXNzQ3Jl
YXRpb25QYXJhbWV0ZXJzOwogCi0jaWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKLWNsYXNzIE5l
dHdvcmtQcm9jZXNzQ29ubmVjdGlvbjsKLWNsYXNzIFdlYlJlc291cmNlTG9hZFNjaGVkdWxlcjsK
LSNlbmRpZgotCiAjaWYgRU5BQkxFKERBVEFCQVNFX1BST0NFU1MpCiBjbGFzcyBXZWJUb0RhdGFi
YXNlUHJvY2Vzc0Nvbm5lY3Rpb247CiAjZW5kaWYKIAotY2xhc3MgV2ViUHJvY2VzcyA6IHB1Ymxp
YyBDaGlsZFByb2Nlc3MsIHByaXZhdGUgRG93bmxvYWRNYW5hZ2VyOjpDbGllbnQgewotICAgIGZy
aWVuZCBjbGFzcyBOZXZlckRlc3Ryb3llZDxEb3dubG9hZE1hbmFnZXI+OworY2xhc3MgV2ViUHJv
Y2VzcyA6IHB1YmxpYyBDaGlsZFByb2Nlc3MgewogcHVibGljOgogICAgIHN0YXRpYyBXZWJQcm9j
ZXNzJiBzaW5nbGV0b24oKTsKIApAQCAtMTQ3LDcgKzE0MSw2IEBAIHB1YmxpYzoKICNlbmRpZgog
ICAgIAogICAgIGNvbnN0IFRleHRDaGVja2VyU3RhdGUmIHRleHRDaGVja2VyU3RhdGUoKSBjb25z
dCB7IHJldHVybiBtX3RleHRDaGVja2VyU3RhdGU7IH0KLSAgICBEb3dubG9hZE1hbmFnZXImIGRv
d25sb2FkTWFuYWdlcigpOwogCiAgICAgdm9pZCBjbGVhclJlc291cmNlQ2FjaGVzKFJlc291cmNl
Q2FjaGVzVG9DbGVhciA9IEFsbFJlc291cmNlQ2FjaGVzKTsKICAgICAKQEAgLTE1NywxMyArMTUw
LDkgQEAgcHVibGljOgogCiAgICAgRXZlbnREaXNwYXRjaGVyJiBldmVudERpc3BhdGNoZXIoKSB7
IHJldHVybiAqbV9ldmVudERpc3BhdGNoZXI7IH0KIAotICAgIGJvb2wgdXNlc05ldHdvcmtQcm9j
ZXNzKCkgY29uc3Q7Ci0KLSNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQogICAgIE5ldHdvcmtQ
cm9jZXNzQ29ubmVjdGlvbiogbmV0d29ya0Nvbm5lY3Rpb24oKTsKICAgICB2b2lkIG5ldHdvcmtQ
cm9jZXNzQ29ubmVjdGlvbkNsb3NlZChOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24qKTsKICAgICBX
ZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXImIHdlYlJlc291cmNlTG9hZFNjaGVkdWxlcigpOwotI2Vu
ZGlmCiAKICNpZiBFTkFCTEUoREFUQUJBU0VfUFJPQ0VTUykKICAgICB2b2lkIHdlYlRvRGF0YWJh
c2VQcm9jZXNzQ29ubmVjdGlvbkNsb3NlZChXZWJUb0RhdGFiYXNlUHJvY2Vzc0Nvbm5lY3Rpb24q
KTsKQEAgLTIyMiwxMiArMjExLDYgQEAgcHJpdmF0ZToKICAgICBXZWJQcm9jZXNzKCk7CiAgICAg
fldlYlByb2Nlc3MoKTsKIAotICAgIC8vIERvd25sb2FkTWFuYWdlcjo6Q2xpZW50LgotICAgIHZp
cnR1YWwgdm9pZCBkaWRDcmVhdGVEb3dubG9hZCgpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9p
ZCBkaWREZXN0cm95RG93bmxvYWQoKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIElQQzo6Q29ubmVj
dGlvbiogZG93bmxvYWRQcm94eUNvbm5lY3Rpb24oKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIEF1
dGhlbnRpY2F0aW9uTWFuYWdlciYgZG93bmxvYWRzQXV0aGVudGljYXRpb25NYW5hZ2VyKCkgb3Zl
cnJpZGU7Ci0KICAgICB2b2lkIGluaXRpYWxpemVXZWJQcm9jZXNzKFdlYlByb2Nlc3NDcmVhdGlv
blBhcmFtZXRlcnMmJik7CiAgICAgdm9pZCBwbGF0Zm9ybUluaXRpYWxpemVXZWJQcm9jZXNzKFdl
YlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMmJik7CiAKQEAgLTM1OSwxNCArMzQyLDExIEBAIHBy
aXZhdGU6CiAKICAgICBXZWJJY29uRGF0YWJhc2VQcm94eSogbV9pY29uRGF0YWJhc2VQcm94eTsK
IAotI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCiAgICAgdm9pZCBlbnN1cmVOZXR3b3JrUHJv
Y2Vzc0Nvbm5lY3Rpb24oKTsKICAgICBSZWZQdHI8TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uPiBt
X25ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbjsKLSAgICBib29sIG1fdXNlc05ldHdvcmtQcm9jZXNz
OwogICAgIFdlYlJlc291cmNlTG9hZFNjaGVkdWxlciogbV93ZWJSZXNvdXJjZUxvYWRTY2hlZHVs
ZXI7CiAgICAgSGFzaFNldDxTdHJpbmc+IG1fZG5zUHJlZmV0Y2hlZEhvc3RzOwogICAgIFdlYkNv
cmU6Okh5c3RlcmVzaXNBY3Rpdml0eSBtX2Ruc1ByZWZldGNoSHlzdGVyZXJpczsKLSNlbmRpZgog
CiAjaWYgRU5BQkxFKERBVEFCQVNFX1BST0NFU1MpCiAgICAgdm9pZCBlbnN1cmVXZWJUb0RhdGFi
YXNlUHJvY2Vzc0Nvbm5lY3Rpb24oKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMuaW4JKHJldmlzaW9uIDE5MjYwMSkKKysrIFNvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgkod29ya2luZyBjb3B5
KQpAQCAtNjIsMTIgKzYyLDYgQEAgbWVzc2FnZXMgLT4gV2ViUHJvY2VzcyBMZWdhY3lSZWNlaXZl
ciB7CiAgICAgdm9pZCBTdGFydE1lbW9yeVNhbXBsZXIoV2ViS2l0OjpTYW5kYm94RXh0ZW5zaW9u
OjpIYW5kbGUgc2FtcGxlTG9nRmlsZUhhbmRsZSwgU3RyaW5nIHNhbXBsZUxvZ0ZpbGVQYXRoLCBk
b3VibGUgaW50ZXJ2YWwpOwogICAgIHZvaWQgU3RvcE1lbW9yeVNhbXBsZXIoKTsKIAotICAgICMg
RG93bmxvYWRzLiBUaGlzIHNob3VsZCByZWFsbHkgYmUgaW4gYSBEb3dubG9hZC5tZXNzYWdlcy5p
biwgYnV0IGl0IHNlZW1lZCB1bm5lY2Vzc2FyeSB0byBjcmVhdGUgYSBuZXcgZmlsZSBqdXN0IGZv
cgotICAgICMgdGhyZWUgbWVzc2FnZXMuCi0gICAgRG93bmxvYWRSZXF1ZXN0KFdlYkNvcmU6OlNl
c3Npb25JRCBzZXNzaW9uSUQsIHVpbnQ2NF90IGRvd25sb2FkSUQsIHVpbnQ2NF90IGluaXRpYXRp
bmdQYWdlSUQsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCByZXF1ZXN0KQotICAgIFJlc3VtZURv
d25sb2FkKHVpbnQ2NF90IGRvd25sb2FkSUQsIElQQzo6RGF0YVJlZmVyZW5jZSByZXN1bWVEYXRh
LCBTdHJpbmcgcGF0aCwgV2ViS2l0OjpTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUgc2FuZGJveEV4
dGVuc2lvbkhhbmRsZSkKLSAgICBDYW5jZWxEb3dubG9hZCh1aW50NjRfdCBkb3dubG9hZElEKQot
CiAgICAgU2V0VGV4dENoZWNrZXJTdGF0ZShzdHJ1Y3QgV2ViS2l0OjpUZXh0Q2hlY2tlclN0YXRl
IHRleHRDaGVja2VyU3RhdGUpCiAKICAgICBTZXRFbmhhbmNlZEFjY2Vzc2liaWxpdHkoYm9vbCBm
bGFnKQpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9GaWxlQVBJL0Jsb2JSZWdpc3Ry
eVByb3h5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0ZpbGVB
UEkvQmxvYlJlZ2lzdHJ5UHJveHkuY3BwCShyZXZpc2lvbiAxOTI2MDEpCisrKyBTb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL0ZpbGVBUEkvQmxvYlJlZ2lzdHJ5UHJveHkuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0yNiw4ICsyNiw2IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiQmxv
YlJlZ2lzdHJ5UHJveHkuaCIKIAotI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCi0KICNpbmNs
dWRlICJOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzc01lc3NhZ2VzLmgiCiAjaW5jbHVkZSAi
TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmgiCiAjaW5jbHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29k
ZXJzLmgiCkBAIC00MCw4ICszOCw2IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiB2b2lkIEJsb2JS
ZWdpc3RyeVByb3h5OjpyZWdpc3RlckZpbGVCbG9iVVJMKGNvbnN0IFdlYkNvcmU6OlVSTCYgdXJs
LCBQYXNzUmVmUHRyPEJsb2JEYXRhRmlsZVJlZmVyZW5jZT4gZmlsZSwgY29uc3QgU3RyaW5nJiBj
b250ZW50VHlwZSkKIHsKLSAgICBBU1NFUlQoV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkudXNlc05l
dHdvcmtQcm9jZXNzKCkpOwotCiAgICAgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlIGV4dGVuc2lv
bkhhbmRsZTsKIAogICAgIC8vIEZpbGUgcGF0aCBjYW4gYmUgZW1wdHkgd2hlbiBzdWJtaXR0aW5n
IGEgZm9ybSBmaWxlIGlucHV0IHdpdGhvdXQgYSBmaWxlLCBzZWUgYnVnIDExMTc3OC4KQEAgLTUz
LDM2ICs0OSwyNiBAQCB2b2lkIEJsb2JSZWdpc3RyeVByb3h5OjpyZWdpc3RlckZpbGVCbG9iCiAK
IHZvaWQgQmxvYlJlZ2lzdHJ5UHJveHk6OnJlZ2lzdGVyQmxvYlVSTChjb25zdCBVUkwmIHVybCwg
VmVjdG9yPEJsb2JQYXJ0PiBibG9iUGFydHMsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpCiB7
Ci0gICAgQVNTRVJUKFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnVzZXNOZXR3b3JrUHJvY2Vzcygp
KTsKLQogICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLm5ldHdvcmtDb25uZWN0aW9uKCktPmNv
bm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6
OlJlZ2lzdGVyQmxvYlVSTCh1cmwsIGJsb2JQYXJ0cywgY29udGVudFR5cGUpLCAwKTsKIH0KIAog
dm9pZCBCbG9iUmVnaXN0cnlQcm94eTo6cmVnaXN0ZXJCbG9iVVJMKGNvbnN0IFVSTCYgdXJsLCBj
b25zdCBVUkwmIHNyY1VSTCkKIHsKLSAgICBBU1NFUlQoV2ViUHJvY2Vzczo6c2luZ2xldG9uKCku
dXNlc05ldHdvcmtQcm9jZXNzKCkpOwotCiAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkubmV0
d29ya0Nvbm5lY3Rpb24oKS0+Y29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2Vzczo6UmVnaXN0ZXJCbG9iVVJMRnJvbVVSTCh1cmwsIHNyY1VSTCks
IDApOwogfQogCiB2b2lkIEJsb2JSZWdpc3RyeVByb3h5Ojp1bnJlZ2lzdGVyQmxvYlVSTChjb25z
dCBVUkwmIHVybCkKIHsKLSAgICBBU1NFUlQoV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkudXNlc05l
dHdvcmtQcm9jZXNzKCkpOwotCiAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkubmV0d29ya0Nv
bm5lY3Rpb24oKS0+Y29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2Vzczo6VW5yZWdpc3RlckJsb2JVUkwodXJsKSwgMCk7CiB9CiAKIHZvaWQgQmxv
YlJlZ2lzdHJ5UHJveHk6OnJlZ2lzdGVyQmxvYlVSTEZvclNsaWNlKGNvbnN0IFVSTCYgdXJsLCBj
b25zdCBVUkwmIHNyY1VSTCwgbG9uZyBsb25nIHN0YXJ0LCBsb25nIGxvbmcgZW5kKQogewotICAg
IEFTU0VSVChXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS51c2VzTmV0d29ya1Byb2Nlc3MoKSk7Ci0K
ICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5uZXR3b3JrQ29ubmVjdGlvbigpLT5jb25uZWN0
aW9uKCktPnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpSZWdp
c3RlckJsb2JVUkxGb3JTbGljZSh1cmwsIHNyY1VSTCwgc3RhcnQsIGVuZCksIDApOwogfQogCiB1
bnNpZ25lZCBsb25nIGxvbmcgQmxvYlJlZ2lzdHJ5UHJveHk6OmJsb2JTaXplKGNvbnN0IFVSTCYg
dXJsKQogewotICAgIEFTU0VSVChXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS51c2VzTmV0d29ya1By
b2Nlc3MoKSk7Ci0KICAgICB1aW50NjRfdCByZXN1bHRTaXplOwogICAgIGlmICghV2ViUHJvY2Vz
czo6c2luZ2xldG9uKCkubmV0d29ya0Nvbm5lY3Rpb24oKS0+Y29ubmVjdGlvbigpLT5zZW5kU3lu
YyhNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkJsb2JTaXplKHVybCks
IE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6QmxvYlNpemU6OlJlcGx5
KHJlc3VsdFNpemUpLCAwKSkKICAgICAgICAgcmV0dXJuIDA7CkBAIC05MCw1ICs3NiwzIEBAIHVu
c2lnbmVkIGxvbmcgbG9uZyBCbG9iUmVnaXN0cnlQcm94eTo6YmwKIH0KIAogfQotCi0jZW5kaWYg
Ly8gRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvRmlsZUFQSS9CbG9iUmVnaXN0cnlQcm94eS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvRmlsZUFQSS9CbG9iUmVnaXN0cnlQcm94eS5oCShyZXZpc2lvbiAxOTI2
MDEpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0ZpbGVBUEkvQmxvYlJlZ2lzdHJ5UHJv
eHkuaAkod29ya2luZyBjb3B5KQpAQCAtMjYsOCArMjYsNiBAQAogI2lmbmRlZiBCbG9iUmVnaXN0
cnlQcm94eV9oCiAjZGVmaW5lIEJsb2JSZWdpc3RyeVByb3h5X2gKIAotI2lmIEVOQUJMRShORVRX
T1JLX1BST0NFU1MpCi0KICNpbmNsdWRlIDxXZWJDb3JlL0Jsb2JSZWdpc3RyeS5oPgogCiBuYW1l
c3BhY2UgV2ViS2l0IHsKQEAgLTQ0LDYgKzQyLDQgQEAgcHVibGljOgogCiB9CiAKLSNlbmRpZiAv
LyBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQotCiAjZW5kaWYgLy8gQmxvYlJlZ2lzdHJ5UHJveHlf
aApJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNz
Q29ubmVjdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9O
ZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5jcHAJKHJldmlzaW9uIDE5MjYwMSkKKysr
IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rp
b24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw4ICszNyw2IEBACiAjaW5jbHVkZSA8V2ViQ29y
ZS9TZXNzaW9uSUQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NoYXJlZEJ1ZmZlci5oPgogCi0jaWYg
RU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKLQogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIG5h
bWVzcGFjZSBXZWJLaXQgewpAQCAtOTgsNSArOTYsMyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzQ29u
bmVjdGlvbjo6ZGlkQ2FjaGVSCiAjZW5kaWYKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KLSNl
bmRpZiAvLyBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQpJbmRleDogU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rp
b24uaAkocmV2aXNpb24gMTkyNjAxKQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9OZXR3
b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw4ICsz
MSw2IEBACiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9X
VEZTdHJpbmcuaD4KIAotI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCi0KIG5hbWVzcGFjZSBJ
UEMgewogY2xhc3MgRGF0YVJlZmVyZW5jZTsKIH0KQEAgLTgyLDcgKzgwLDQgQEAgcHJpdmF0ZToK
IAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKLSNlbmRpZiAvLyBFTkFCTEUoTkVUV09SS19QUk9D
RVNTKQotCi0KICNlbmRpZiAvLyBOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb25faApJbmRleDogU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5t
ZXNzYWdlcy5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL05ldHdv
cmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLm1lc3NhZ2VzLmluCShyZXZpc2lvbiAxOTI2MDEp
CisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25u
ZWN0aW9uLm1lc3NhZ2VzLmluCSh3b3JraW5nIGNvcHkpCkBAIC0yMCw4ICsyMCw2IEBACiAjIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCiAjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAKLSNpZiBFTkFCTEUoTkVUV09SS19Q
Uk9DRVNTKQotCiBtZXNzYWdlcyAtPiBOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24gTGVnYWN5UmVj
ZWl2ZXIgewogCiAjaWYgRU5BQkxFKFNIQVJFQUJMRV9SRVNPVVJDRSkKQEAgLTI5LDUgKzI3LDMg
QEAgbWVzc2FnZXMgLT4gTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uIExlZwogI2VuZGlmCiAKIH0K
LQotI2VuZGlmIC8vIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCkluZGV4OiBTb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVyLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2Fk
U2NoZWR1bGVyLmNwcAkocmV2aXNpb24gMTkyNjAxKQorKysgU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZFNjaGVkdWxlci5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTUyLDggKzUyLDYgQEAKICNpbmNsdWRlIDxXZWJDb3JlL1N1YnJlc291cmNlTG9hZGVyLmg+
CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogCi0jaWYgRU5BQkxFKE5FVFdPUktfUFJP
Q0VTUykKLQogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpA
QCAtMjg2LDUgKzI4NCwzIEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVyOjpuZXR3b3Jr
UHIKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KLSNlbmRpZiAvLyBFTkFCTEUoTkVUV09S
S19QUk9DRVNTKQpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJl
c291cmNlTG9hZFNjaGVkdWxlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXIuaAkocmV2aXNpb24gMTkyNjAx
KQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZFNj
aGVkdWxlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw4ICszMiw2IEBACiAjaW5jbHVkZSA8V2Vi
Q29yZS9SZXNvdXJjZUxvYWRlci5oPgogI2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+CiAKLSNpZiBF
TkFCTEUoTkVUV09SS19QUk9DRVNTKQotCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgTmV0
d29ya1Byb2Nlc3NDb25uZWN0aW9uOwpAQCAtNzcsNiArNzUsNCBAQCBwcml2YXRlOgogCiB9IC8v
IG5hbWVzcGFjZSBXZWJLaXQKIAotI2VuZGlmIC8vIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCi0K
ICNlbmRpZiAvLyBXZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXJfaApJbmRleDogU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuY3Bw
CShyZXZpc2lvbiAxOTI2MDEpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL05ldHdvcmsv
V2ViUmVzb3VyY2VMb2FkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw4ICsyNiw2IEBACiAj
aW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiV2ViUmVzb3VyY2VMb2FkZXIuaCIKIAotI2lm
IEVOQUJMRShORVRXT1JLX1BST0NFU1MpCi0KICNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCiAj
aW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5o
IgpAQCAtMjIxLDUgKzIxOSwzIEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkZXI6OmNhbkF1dGhlbnRp
Y2F0ZUEKICNlbmRpZgogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQotI2VuZGlmIC8vIEVOQUJM
RShORVRXT1JLX1BST0NFU1MpCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL05ldHdv
cmsvV2ViUmVzb3VyY2VMb2FkZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuaAkocmV2aXNpb24gMTkyNjAxKQorKysg
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmgJKHdv
cmtpbmcgY29weSkKQEAgLTI2LDggKzI2LDYgQEAKICNpZm5kZWYgV2ViUmVzb3VyY2VMb2FkZXJf
aAogI2RlZmluZSBXZWJSZXNvdXJjZUxvYWRlcl9oCiAKLSNpZiBFTkFCTEUoTkVUV09SS19QUk9D
RVNTKQotCiAjaW5jbHVkZSAiQ29ubmVjdGlvbi5oIgogI2luY2x1ZGUgIk1lc3NhZ2VTZW5kZXIu
aCIKICNpbmNsdWRlICJTaGFyZWFibGVSZXNvdXJjZS5oIgpAQCAtOTQsNiArOTIsNCBAQCBwcml2
YXRlOgogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAotI2VuZGlmIC8vIEVOQUJMRShORVRXT1JL
X1BST0NFU1MpCi0KICNlbmRpZiAvLyBXZWJSZXNvdXJjZUxvYWRlcl9oCkluZGV4OiBTb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIubWVzc2FnZXMuaW4K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291
cmNlTG9hZGVyLm1lc3NhZ2VzLmluCShyZXZpc2lvbiAxOTI2MDEpCisrKyBTb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIubWVzc2FnZXMuaW4JKHdvcmtp
bmcgY29weSkKQEAgLTIwLDggKzIwLDYgQEAKICMgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKICMgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KIAotI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCi0KIG1lc3NhZ2VzIC0+IFdl
YlJlc291cmNlTG9hZGVyIExlZ2FjeVJlY2VpdmVyIHsKICAgICBXaWxsU2VuZFJlcXVlc3QoV2Vi
Q29yZTo6UmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2Ug
cmVkaXJlY3RSZXNwb25zZSkKICAgICBEaWRTZW5kRGF0YSh1aW50NjRfdCBieXRlc1NlbnQsIHVp
bnQ2NF90IHRvdGFsQnl0ZXNUb0JlU2VudCkKQEAgLTM5LDUgKzM3LDMgQEAgbWVzc2FnZXMgLT4g
V2ViUmVzb3VyY2VMb2FkZXIgTGVnYWN5UmVjZQogICAgIERpZFJlY2VpdmVSZXNvdXJjZShXZWJL
aXQ6OlNoYXJlYWJsZVJlc291cmNlOjpIYW5kbGUgcmVzb3VyY2UsIGRvdWJsZSBmaW5pc2hUaW1l
KQogI2VuZGlmCiB9Ci0KLSNlbmRpZiAvLyBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQpJbmRleDog
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlQnJvd3Nl
ckZ1bmNzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdp
bnMvTmV0c2NhcGUvTmV0c2NhcGVCcm93c2VyRnVuY3MuY3BwCShyZXZpc2lvbiAxOTI2MDEpCisr
KyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVCcm93
c2VyRnVuY3MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDUzLDExICsxMDUzLDcgQEAgc3RhdGlj
IHZvaWQgaW5pdGlhbGl6ZUJyb3dzZXJGdW5jcyhOUE5ldAogICAgIG5ldHNjYXBlRnVuY3MucG9w
dXBjb250ZXh0bWVudSA9IDA7CiAgICAgbmV0c2NhcGVGdW5jcy5jb252ZXJ0cG9pbnQgPSAwOwog
I2VuZGlmCi0jaWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKICAgICBuZXRzY2FwZUZ1bmNzLnVy
bHJlZGlyZWN0cmVzcG9uc2UgPSBOUE5fVVJMUmVkaXJlY3RSZXNwb25zZTsKLSNlbHNlCi0gICAg
bmV0c2NhcGVGdW5jcy51cmxyZWRpcmVjdHJlc3BvbnNlID0gMDsKLSNlbmRpZgogfQogICAgIAog
TlBOZXRzY2FwZUZ1bmNzKiBuZXRzY2FwZUJyb3dzZXJGdW5jcygpCkluZGV4OiBTb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4uY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRz
Y2FwZVBsdWdpbi5jcHAJKHJldmlzaW9uIDE5MjYwMSkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTQwMCwxNiArNDAwLDEyIEBAIGJvb2wgTmV0c2NhcGVQbHVnaW46OmdldEF1dGhlbnRpY2F0
aW9uSW4KIAogdm9pZCBOZXRzY2FwZVBsdWdpbjo6cmVnaXN0ZXJSZWRpcmVjdChOZXRzY2FwZVBs
dWdpblN0cmVhbSogc3RyZWFtLCBjb25zdCBVUkwmIHJlcXVlc3RVUkwsIGludCByZWRpcmVjdFJl
c3BvbnNlU3RhdHVzLCB2b2lkKiBub3RpZmljYXRpb25EYXRhKQogewotI2lmIEVOQUJMRShORVRX
T1JLX1BST0NFU1MpCiAgICAgLy8gTlBQX1VSTFJlZGlyZWN0Tm90aWZ5IG1heSBzeW5jaHJvbm91
c2x5IHJlcXVlc3QgdGhpcyBzdHJlYW0gYmFjayBvdXQsIHNvIHNldCBpdCBmaXJzdAogICAgIG1f
cmVkaXJlY3RzLnNldChub3RpZmljYXRpb25EYXRhLCBzdGQ6Om1ha2VfcGFpcihzdHJlYW0sIHJl
cXVlc3RVUkwuc3RyaW5nKCkpKTsKICAgICBpZiAoIU5QUF9VUkxSZWRpcmVjdE5vdGlmeShyZXF1
ZXN0VVJMLnN0cmluZygpLnV0ZjgoKS5kYXRhKCksIHJlZGlyZWN0UmVzcG9uc2VTdGF0dXMsIG5v
dGlmaWNhdGlvbkRhdGEpKSB7CiAgICAgICAgIG1fcmVkaXJlY3RzLnRha2Uobm90aWZpY2F0aW9u
RGF0YSk7CiAgICAgICAgIGNvbnRyb2xsZXIoKS0+Y29udGludWVTdHJlYW1Mb2FkKHN0cmVhbS0+
c3RyZWFtSUQoKSk7CiAgICAgfQotI2Vsc2UKLSAgICBjb250cm9sbGVyKCktPmNvbnRpbnVlU3Ry
ZWFtTG9hZChzdHJlYW0tPnN0cmVhbUlEKCkpOwotI2VuZGlmCiB9CiAKIHZvaWQgTmV0c2NhcGVQ
bHVnaW46OnVybFJlZGlyZWN0UmVzcG9uc2Uodm9pZCogbm90aWZ5RGF0YSwgYm9vbCBhbGxvdykK
SW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZv
cm1TdHJhdGVnaWVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHAJKHJldmlzaW9uIDE5MjYw
MSkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZv
cm1TdHJhdGVnaWVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjYsOSArMjYsMTIgQEAKICNpbmNs
dWRlICJjb25maWcuaCIKICNpbmNsdWRlICJXZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaCIKIAorI2lu
Y2x1ZGUgIkJsb2JSZWdpc3RyeVByb3h5LmgiCiAjaW5jbHVkZSAiQmxvY2tpbmdSZXNwb25zZU1h
cC5oIgogI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlICJIYW5nRGV0ZWN0aW9u
RGlzYWJsZXIuaCIKKyNpbmNsdWRlICJOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzc01lc3Nh
Z2VzLmgiCisjaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmgiCiAjaW5jbHVkZSAi
TmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMuaCIKICNpbmNsdWRlICJQbHVnaW5JbmZvU3Rv
cmUuaCIKICNpbmNsdWRlICJTZXNzaW9uVHJhY2tlci5oIgpAQCAtNDQsNiArNDcsNyBAQAogI2lu
Y2x1ZGUgIldlYlBhc3RlYm9hcmRQcm94eU1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vz
cy5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NQcm94eU1lc3NhZ2VzLmgiCisjaW5jbHVkZSAiV2Vi
UmVzb3VyY2VMb2FkU2NoZWR1bGVyLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9Db2xvci5oPgogI2lu
Y2x1ZGUgPFdlYkNvcmUvRG9jdW1lbnRMb2FkZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0lEQkZh
Y3RvcnlCYWNrZW5kSW50ZXJmYWNlLmg+CkBAIC02MywxMyArNjcsNiBAQAogI2luY2x1ZGUgPFdl
YkNvcmUvVVJMLmg+CiAjaW5jbHVkZSA8d3RmL0F0b21pY3MuaD4KIAotI2lmIEVOQUJMRShORVRX
T1JLX1BST0NFU1MpCi0jaW5jbHVkZSAiQmxvYlJlZ2lzdHJ5UHJveHkuaCIKLSNpbmNsdWRlICJO
ZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzc01lc3NhZ2VzLmgiCi0jaW5jbHVkZSAiTmV0d29y
a1Byb2Nlc3NDb25uZWN0aW9uLmgiCi0jaW5jbHVkZSAiV2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVy
LmgiCi0jZW5kaWYKLQogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIG5hbWVzcGFjZSBXZWJL
aXQgewpAQCAtMTEyLDExNCArMTA5LDU2IEBAIFBsdWdpblN0cmF0ZWd5KiBXZWJQbGF0Zm9ybVN0
cmF0ZWdpZXM6OmMKIAogU3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y29va2llc0ZvckRP
TShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IFVSTCYgZmlyc3RQ
YXJ0eSwgY29uc3QgVVJMJiB1cmwpCiB7Ci0jaWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKICAg
ICBhdXRvJiB3ZWJQcm9jZXNzID0gV2ViUHJvY2Vzczo6c2luZ2xldG9uKCk7Ci0gICAgaWYgKHdl
YlByb2Nlc3MudXNlc05ldHdvcmtQcm9jZXNzKCkpIHsKLSAgICAgICAgU3RyaW5nIHJlc3VsdDsK
LSAgICAgICAgaWYgKCF3ZWJQcm9jZXNzLm5ldHdvcmtDb25uZWN0aW9uKCktPmNvbm5lY3Rpb24o
KS0+c2VuZFN5bmMoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpDb29r
aWVzRm9yRE9NKFNlc3Npb25UcmFja2VyOjpzZXNzaW9uSUQoc2Vzc2lvbiksIGZpcnN0UGFydHks
IHVybCksIE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Q29va2llc0Zv
ckRPTTo6UmVwbHkocmVzdWx0KSwgMCkpCi0gICAgICAgICAgICByZXR1cm4gU3RyaW5nKCk7Ci0g
ICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAgfQotI2VuZGlmCi0KLSAgICByZXR1cm4gV2ViQ29y
ZTo6Y29va2llc0ZvckRPTShzZXNzaW9uLCBmaXJzdFBhcnR5LCB1cmwpOworICAgIFN0cmluZyBy
ZXN1bHQ7CisgICAgaWYgKCF3ZWJQcm9jZXNzLm5ldHdvcmtDb25uZWN0aW9uKCktPmNvbm5lY3Rp
b24oKS0+c2VuZFN5bmMoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpD
b29raWVzRm9yRE9NKFNlc3Npb25UcmFja2VyOjpzZXNzaW9uSUQoc2Vzc2lvbiksIGZpcnN0UGFy
dHksIHVybCksIE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Q29va2ll
c0ZvckRPTTo6UmVwbHkocmVzdWx0KSwgMCkpCisgICAgICAgIHJldHVybiBTdHJpbmcoKTsKKyAg
ICByZXR1cm4gcmVzdWx0OwogfQogCiB2b2lkIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6c2V0Q29v
a2llc0Zyb21ET00oY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBV
UkwmIGZpcnN0UGFydHksIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIGNvb2tpZVN0cmlu
ZykKIHsKLSNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQogICAgIGF1dG8mIHdlYlByb2Nlc3Mg
PSBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKTsKLSAgICBpZiAod2ViUHJvY2Vzcy51c2VzTmV0d29y
a1Byb2Nlc3MoKSkgewotICAgICAgICB3ZWJQcm9jZXNzLm5ldHdvcmtDb25uZWN0aW9uKCktPmNv
bm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6
OlNldENvb2tpZXNGcm9tRE9NKFNlc3Npb25UcmFja2VyOjpzZXNzaW9uSUQoc2Vzc2lvbiksIGZp
cnN0UGFydHksIHVybCwgY29va2llU3RyaW5nKSwgMCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9
Ci0jZW5kaWYKLQotICAgIFdlYkNvcmU6OnNldENvb2tpZXNGcm9tRE9NKHNlc3Npb24sIGZpcnN0
UGFydHksIHVybCwgY29va2llU3RyaW5nKTsKKyAgICB3ZWJQcm9jZXNzLm5ldHdvcmtDb25uZWN0
aW9uKCktPmNvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3M6OlNldENvb2tpZXNGcm9tRE9NKFNlc3Npb25UcmFja2VyOjpzZXNzaW9uSUQoc2Vz
c2lvbiksIGZpcnN0UGFydHksIHVybCwgY29va2llU3RyaW5nKSwgMCk7CiB9CiAKIGJvb2wgV2Vi
UGxhdGZvcm1TdHJhdGVnaWVzOjpjb29raWVzRW5hYmxlZChjb25zdCBOZXR3b3JrU3RvcmFnZVNl
c3Npb24mIHNlc3Npb24sIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgVVJMJiB1cmwpCiB7
Ci0jaWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKLSAgICBhdXRvJiB3ZWJQcm9jZXNzID0gV2Vi
UHJvY2Vzczo6c2luZ2xldG9uKCk7Ci0gICAgaWYgKHdlYlByb2Nlc3MudXNlc05ldHdvcmtQcm9j
ZXNzKCkpIHsKLSAgICAgICAgYm9vbCByZXN1bHQ7Ci0gICAgICAgIGlmICghd2ViUHJvY2Vzcy5u
ZXR3b3JrQ29ubmVjdGlvbigpLT5jb25uZWN0aW9uKCktPnNlbmRTeW5jKE1lc3NhZ2VzOjpOZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Q29va2llc0VuYWJsZWQoU2Vzc2lvblRyYWNrZXI6
OnNlc3Npb25JRChzZXNzaW9uKSwgZmlyc3RQYXJ0eSwgdXJsKSwgTWVzc2FnZXM6Ok5ldHdvcmtD
b25uZWN0aW9uVG9XZWJQcm9jZXNzOjpDb29raWVzRW5hYmxlZDo6UmVwbHkocmVzdWx0KSwgMCkp
Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAg
fQotI2VuZGlmCi0KLSAgICByZXR1cm4gV2ViQ29yZTo6Y29va2llc0VuYWJsZWQoc2Vzc2lvbiwg
Zmlyc3RQYXJ0eSwgdXJsKTsKKyAgICBib29sIHJlc3VsdDsKKyAgICBpZiAoIVdlYlByb2Nlc3M6
OnNpbmdsZXRvbigpLm5ldHdvcmtDb25uZWN0aW9uKCktPmNvbm5lY3Rpb24oKS0+c2VuZFN5bmMo
TWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpDb29raWVzRW5hYmxlZChT
ZXNzaW9uVHJhY2tlcjo6c2Vzc2lvbklEKHNlc3Npb24pLCBmaXJzdFBhcnR5LCB1cmwpLCBNZXNz
YWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkNvb2tpZXNFbmFibGVkOjpSZXBs
eShyZXN1bHQpLCAwKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVybiByZXN1bHQ7
CiB9CiAKIFN0cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNvb2tpZVJlcXVlc3RIZWFkZXJG
aWVsZFZhbHVlKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgVVJM
JiBmaXJzdFBhcnR5LCBjb25zdCBVUkwmIHVybCkKIHsKLSNpZiBFTkFCTEUoTkVUV09SS19QUk9D
RVNTKQotICAgIGF1dG8mIHdlYlByb2Nlc3MgPSBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKTsKLSAg
ICBpZiAod2ViUHJvY2Vzcy51c2VzTmV0d29ya1Byb2Nlc3MoKSkgewotICAgICAgICBTdHJpbmcg
cmVzdWx0OwotICAgICAgICBpZiAoIXdlYlByb2Nlc3MubmV0d29ya0Nvbm5lY3Rpb24oKS0+Y29u
bmVjdGlvbigpLT5zZW5kU3luYyhNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3M6OkNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKFNlc3Npb25UcmFja2VyOjpzZXNzaW9u
SUQoc2Vzc2lvbiksIGZpcnN0UGFydHksIHVybCksIE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2Vzczo6Q29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWU6OlJlcGx5KHJlc3Vs
dCksIDApKQotICAgICAgICAgICAgcmV0dXJuIFN0cmluZygpOwotICAgICAgICByZXR1cm4gcmVz
dWx0OwotICAgIH0KLSNlbmRpZgotCi0gICAgcmV0dXJuIFdlYkNvcmU6OmNvb2tpZVJlcXVlc3RI
ZWFkZXJGaWVsZFZhbHVlKHNlc3Npb24sIGZpcnN0UGFydHksIHVybCk7CisgICAgU3RyaW5nIHJl
c3VsdDsKKyAgICBpZiAoIVdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLm5ldHdvcmtDb25uZWN0aW9u
KCktPmNvbm5lY3Rpb24oKS0+c2VuZFN5bmMoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzOjpDb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShTZXNzaW9uVHJhY2tlcjo6
c2Vzc2lvbklEKHNlc3Npb24pLCBmaXJzdFBhcnR5LCB1cmwpLCBNZXNzYWdlczo6TmV0d29ya0Nv
bm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlOjpSZXBs
eShyZXN1bHQpLCAwKSkKKyAgICAgICAgcmV0dXJuIFN0cmluZygpOworICAgIHJldHVybiByZXN1
bHQ7CiB9CiAKIGJvb2wgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpnZXRSYXdDb29raWVzKGNvbnN0
IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBj
b25zdCBVUkwmIHVybCwgVmVjdG9yPENvb2tpZT4mIHJhd0Nvb2tpZXMpCiB7Ci0jaWYgRU5BQkxF
KE5FVFdPUktfUFJPQ0VTUykKLSAgICBhdXRvJiB3ZWJQcm9jZXNzID0gV2ViUHJvY2Vzczo6c2lu
Z2xldG9uKCk7Ci0gICAgaWYgKHdlYlByb2Nlc3MudXNlc05ldHdvcmtQcm9jZXNzKCkpIHsKLSAg
ICAgICAgaWYgKCF3ZWJQcm9jZXNzLm5ldHdvcmtDb25uZWN0aW9uKCktPmNvbm5lY3Rpb24oKS0+
c2VuZFN5bmMoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpHZXRSYXdD
b29raWVzKFNlc3Npb25UcmFja2VyOjpzZXNzaW9uSUQoc2Vzc2lvbiksIGZpcnN0UGFydHksIHVy
bCksIE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6R2V0UmF3Q29va2ll
czo6UmVwbHkocmF3Q29va2llcyksIDApKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAg
ICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0jZW5kaWYKLQotICAgIHJldHVybiBXZWJDb3JlOjpn
ZXRSYXdDb29raWVzKHNlc3Npb24sIGZpcnN0UGFydHksIHVybCwgcmF3Q29va2llcyk7CisgICAg
aWYgKCFXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5uZXR3b3JrQ29ubmVjdGlvbigpLT5jb25uZWN0
aW9uKCktPnNlbmRTeW5jKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6
R2V0UmF3Q29va2llcyhTZXNzaW9uVHJhY2tlcjo6c2Vzc2lvbklEKHNlc3Npb24pLCBmaXJzdFBh
cnR5LCB1cmwpLCBNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkdldFJh
d0Nvb2tpZXM6OlJlcGx5KHJhd0Nvb2tpZXMpLCAwKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgIHJldHVybiB0cnVlOwogfQogCiB2b2lkIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6ZGVsZXRl
Q29va2llKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgVVJMJiB1
cmwsIGNvbnN0IFN0cmluZyYgY29va2llTmFtZSkKIHsKLSNpZiBFTkFCTEUoTkVUV09SS19QUk9D
RVNTKQotICAgIGF1dG8mIHdlYlByb2Nlc3MgPSBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKTsKLSAg
ICBpZiAod2ViUHJvY2Vzcy51c2VzTmV0d29ya1Byb2Nlc3MoKSkgewotICAgICAgICB3ZWJQcm9j
ZXNzLm5ldHdvcmtDb25uZWN0aW9uKCktPmNvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6TmV0
d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkRlbGV0ZUNvb2tpZShTZXNzaW9uVHJhY2tlcjo6
c2Vzc2lvbklEKHNlc3Npb24pLCB1cmwsIGNvb2tpZU5hbWUpLCAwKTsKLSAgICAgICAgcmV0dXJu
OwotICAgIH0KLSNlbmRpZgotCi0gICAgV2ViQ29yZTo6ZGVsZXRlQ29va2llKHNlc3Npb24sIHVy
bCwgY29va2llTmFtZSk7CisgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkubmV0d29ya0Nvbm5l
Y3Rpb24oKS0+Y29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2Vzczo6RGVsZXRlQ29va2llKFNlc3Npb25UcmFja2VyOjpzZXNzaW9uSUQoc2Vzc2lv
biksIHVybCwgY29va2llTmFtZSksIDApOwogfQogCiAvLyBMb2FkZXJTdHJhdGVneQogCi0jaWYg
RU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKIFJlc291cmNlTG9hZFNjaGVkdWxlciogV2ViUGxhdGZv
cm1TdHJhdGVnaWVzOjpyZXNvdXJjZUxvYWRTY2hlZHVsZXIoKQogewotICAgIHN0YXRpYyBSZXNv
dXJjZUxvYWRTY2hlZHVsZXIqIHNjaGVkdWxlcjsKLSAgICBpZiAoIXNjaGVkdWxlcikgewotICAg
ICAgICBhdXRvJiB3ZWJQcm9jZXNzID0gV2ViUHJvY2Vzczo6c2luZ2xldG9uKCk7Ci0gICAgICAg
IGlmICh3ZWJQcm9jZXNzLnVzZXNOZXR3b3JrUHJvY2VzcygpKQotICAgICAgICAgICAgc2NoZWR1
bGVyID0gJndlYlByb2Nlc3Mud2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVyKCk7Ci0gICAgICAgIGVs
c2UKLSAgICAgICAgICAgIHNjaGVkdWxlciA9IFdlYkNvcmU6OnJlc291cmNlTG9hZFNjaGVkdWxl
cigpOwotICAgIH0KLSAgICAKLSAgICByZXR1cm4gc2NoZWR1bGVyOworICAgIHJldHVybiAmV2Vi
UHJvY2Vzczo6c2luZ2xldG9uKCkud2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVyKCk7CiB9CiAKIHZv
aWQgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KE5ldHdv
cmtpbmdDb250ZXh0KiBjb250ZXh0LCB1bnNpZ25lZCBsb25nIHJlc291cmNlTG9hZElkZW50aWZp
ZXIsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgU3RvcmVkQ3JlZGVudGlhbHMgc3Rv
cmVkQ3JlZGVudGlhbHMsIENsaWVudENyZWRlbnRpYWxQb2xpY3kgY2xpZW50Q3JlZGVudGlhbFBv
bGljeSwgUmVzb3VyY2VFcnJvciYgZXJyb3IsIFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBW
ZWN0b3I8Y2hhcj4mIGRhdGEpCiB7Ci0gICAgYXV0byYgd2ViUHJvY2VzcyA9IFdlYlByb2Nlc3M6
OnNpbmdsZXRvbigpOwotICAgIGlmICghd2ViUHJvY2Vzcy51c2VzTmV0d29ya1Byb2Nlc3MoKSkg
ewotICAgICAgICBMb2FkZXJTdHJhdGVneTo6bG9hZFJlc291cmNlU3luY2hyb25vdXNseShjb250
ZXh0LCByZXNvdXJjZUxvYWRJZGVudGlmaWVyLCByZXF1ZXN0LCBzdG9yZWRDcmVkZW50aWFscywg
Y2xpZW50Q3JlZGVudGlhbFBvbGljeSwgZXJyb3IsIHJlc3BvbnNlLCBkYXRhKTsKLSAgICAgICAg
cmV0dXJuOwotICAgIH0KLQogICAgIFdlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQqIHdlYkNvbnRl
eHQgPSBzdGF0aWNfY2FzdDxXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0Kj4oY29udGV4dCk7CiAg
ICAgLy8gRklYTUU6IFNvbWUgZW50aXRpZXMgaW4gV2ViQ29yZSB1c2UgV2ViQ29yZSdzICJFbXB0
eUZyYW1lTG9hZGVyQ2xpZW50IiBpbnN0ZWFkIG9mIGhhdmluZyBhIHByb3BlciBXZWJGcmFtZUxv
YWRlckNsaWVudC4KICAgICAvLyBFbXB0eUZyYW1lTG9hZGVyQ2xpZW50IHNob3VsZG4ndCBleGlz
dCBhbmQgZXZlcnl0aGluZyBzaG91bGQgYmUgdXNpbmcgYSBXZWJGcmFtZUxvYWRlckNsaWVudCwK
QEAgLTI0Myw3ICsxODIsNyBAQCB2b2lkIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6bG9hZFJlc291
cmNlCiAKICAgICBIYW5nRGV0ZWN0aW9uRGlzYWJsZXIgaGFuZ0RldGVjdGlvbkRpc2FibGVyOwog
Ci0gICAgaWYgKCF3ZWJQcm9jZXNzLm5ldHdvcmtDb25uZWN0aW9uKCktPmNvbm5lY3Rpb24oKS0+
c2VuZFN5bmMoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpQZXJmb3Jt
U3luY2hyb25vdXNMb2FkKGxvYWRQYXJhbWV0ZXJzKSwgTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzOjpQZXJmb3JtU3luY2hyb25vdXNMb2FkOjpSZXBseShlcnJvciwgcmVz
cG9uc2UsIGRhdGEpLCAwKSkgeworICAgIGlmICghV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkubmV0
d29ya0Nvbm5lY3Rpb24oKS0+Y29ubmVjdGlvbigpLT5zZW5kU3luYyhNZXNzYWdlczo6TmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OlBlcmZvcm1TeW5jaHJvbm91c0xvYWQobG9hZFBhcmFt
ZXRlcnMpLCBNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OlBlcmZvcm1T
eW5jaHJvbm91c0xvYWQ6OlJlcGx5KGVycm9yLCByZXNwb25zZSwgZGF0YSksIDApKSB7CiAgICAg
ICAgIHJlc3BvbnNlID0gUmVzb3VyY2VSZXNwb25zZSgpOwogICAgICAgICBlcnJvciA9IGludGVy
bmFsRXJyb3IocmVxdWVzdC51cmwoKSk7CiAgICAgfQpAQCAtMjU2LDEyICsxOTUsNiBAQCB2b2lk
IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y3JlYXRlUGluZ0hhCiAgICAgaWYgKCFuZXR3b3JraW5n
Q29udGV4dCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgYXV0byYgd2ViUHJvY2VzcyA9IFdlYlBy
b2Nlc3M6OnNpbmdsZXRvbigpOwotICAgIGlmICghd2ViUHJvY2Vzcy51c2VzTmV0d29ya1Byb2Nl
c3MoKSkgewotICAgICAgICBMb2FkZXJTdHJhdGVneTo6Y3JlYXRlUGluZ0hhbmRsZShuZXR3b3Jr
aW5nQ29udGV4dCwgcmVxdWVzdCwgc2hvdWxkVXNlQ3JlZGVudGlhbFN0b3JhZ2UpOwotICAgICAg
ICByZXR1cm47Ci0gICAgfQotCiAgICAgV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dCogd2ViQ29u
dGV4dCA9IHN0YXRpY19jYXN0PFdlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQqPihuZXR3b3JraW5n
Q29udGV4dCk7CiAgICAgV2ViRnJhbWVMb2FkZXJDbGllbnQqIHdlYkZyYW1lTG9hZGVyQ2xpZW50
ID0gd2ViQ29udGV4dC0+d2ViRnJhbWVMb2FkZXJDbGllbnQoKTsKICAgICBXZWJGcmFtZSogd2Vi
RnJhbWUgPSB3ZWJGcmFtZUxvYWRlckNsaWVudCA/IHdlYkZyYW1lTG9hZGVyQ2xpZW50LT53ZWJG
cmFtZSgpIDogbnVsbHB0cjsKQEAgLTI3MywxNiArMjA2LDEzIEBAIHZvaWQgV2ViUGxhdGZvcm1T
dHJhdGVnaWVzOjpjcmVhdGVQaW5nSGEKICAgICBsb2FkUGFyYW1ldGVycy5hbGxvd1N0b3JlZENy
ZWRlbnRpYWxzID0gc2hvdWxkVXNlQ3JlZGVudGlhbFN0b3JhZ2UgPyBBbGxvd1N0b3JlZENyZWRl
bnRpYWxzIDogRG9Ob3RBbGxvd1N0b3JlZENyZWRlbnRpYWxzOwogICAgIGxvYWRQYXJhbWV0ZXJz
LnNob3VsZENsZWFyUmVmZXJyZXJPbkhUVFBTVG9IVFRQUmVkaXJlY3QgPSBuZXR3b3JraW5nQ29u
dGV4dC0+c2hvdWxkQ2xlYXJSZWZlcnJlck9uSFRUUFNUb0hUVFBSZWRpcmVjdCgpOwogCi0gICAg
d2ViUHJvY2Vzcy5uZXR3b3JrQ29ubmVjdGlvbigpLT5jb25uZWN0aW9uKCktPnNlbmQoTWVzc2Fn
ZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpMb2FkUGluZyhsb2FkUGFyYW1ldGVy
cyksIDApOworICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLm5ldHdvcmtDb25uZWN0aW9uKCkt
PmNvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3M6OkxvYWRQaW5nKGxvYWRQYXJhbWV0ZXJzKSwgMCk7CiB9CiAKIEJsb2JSZWdpc3RyeSogV2Vi
UGxhdGZvcm1TdHJhdGVnaWVzOjpjcmVhdGVCbG9iUmVnaXN0cnkoKQogewotICAgIGlmICghV2Vi
UHJvY2Vzczo6c2luZ2xldG9uKCkudXNlc05ldHdvcmtQcm9jZXNzKCkpCi0gICAgICAgIHJldHVy
biBMb2FkZXJTdHJhdGVneTo6Y3JlYXRlQmxvYlJlZ2lzdHJ5KCk7CiAgICAgcmV0dXJuIG5ldyBC
bG9iUmVnaXN0cnlQcm94eTsgICAgCiB9Ci0jZW5kaWYKIAogLy8gUGx1Z2luU3RyYXRlZ3kKIApJ
bmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9y
bVN0cmF0ZWdpZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oCShyZXZpc2lvbiAxOTI2MDEpCisr
KyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3Ry
YXRlZ2llcy5oCSh3b3JraW5nIGNvcHkpCkBAIC01OSwxMiArNTksMTAgQEAgcHJpdmF0ZToKICAg
ICB2aXJ0dWFsIHZvaWQgZGVsZXRlQ29va2llKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdl
U2Vzc2lvbiYsIGNvbnN0IFdlYkNvcmU6OlVSTCYsIGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOwog
CiAgICAgLy8gV2ViQ29yZTo6TG9hZGVyU3RyYXRlZ3kKLSNpZiBFTkFCTEUoTkVUV09SS19QUk9D
RVNTKQogICAgIHZpcnR1YWwgV2ViQ29yZTo6UmVzb3VyY2VMb2FkU2NoZWR1bGVyKiByZXNvdXJj
ZUxvYWRTY2hlZHVsZXIoKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgbG9hZFJlc291cmNl
U3luY2hyb25vdXNseShXZWJDb3JlOjpOZXR3b3JraW5nQ29udGV4dCosIHVuc2lnbmVkIGxvbmcg
cmVzb3VyY2VMb2FkSWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Jiwg
V2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlhbHMsIFdlYkNvcmU6OkNsaWVudENyZWRlbnRpYWxQb2xp
Y3ksIFdlYkNvcmU6OlJlc291cmNlRXJyb3ImLCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwg
VmVjdG9yPGNoYXI+JiBkYXRhKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIFdlYkNvcmU6OkJsb2JS
ZWdpc3RyeSogY3JlYXRlQmxvYlJlZ2lzdHJ5KCkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lk
IGNyZWF0ZVBpbmdIYW5kbGUoV2ViQ29yZTo6TmV0d29ya2luZ0NvbnRleHQqLCBXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3QmLCBib29sIHNob3VsZFVzZUNyZWRlbnRpYWxTdG9yYWdlKSBvdmVycmlk
ZTsKLSNlbmRpZgogCiAgICAgLy8gV2ViQ29yZTo6UGx1Z2luU3RyYXRlZ3kKICAgICB2aXJ0dWFs
IHZvaWQgcmVmcmVzaFBsdWdpbnMoKSBvdmVycmlkZTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcAkocmV2aXNpb24gMTkyNjAxKQorKysg
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMzMsMTAgKzMzLDEzIEBACiAjaW5jbHVkZSAiSW5qZWN0ZWRCdW5kbGVOb2RlSGFu
ZGxlLmgiCiAjaW5jbHVkZSAiSW5qZWN0ZWRCdW5kbGVSYW5nZUhhbmRsZS5oIgogI2luY2x1ZGUg
IkluamVjdGVkQnVuZGxlU2NyaXB0V29ybGQuaCIKKyNpbmNsdWRlICJOZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2Vzc01lc3NhZ2VzLmgiCisjaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3NDb25uZWN0
aW9uLmgiCiAjaW5jbHVkZSAiUGx1Z2luVmlldy5oIgogI2luY2x1ZGUgIldLQVBJQ2FzdC5oIgog
I2luY2x1ZGUgIldLQnVuZGxlQVBJQ2FzdC5oIgogI2luY2x1ZGUgIldlYkNocm9tZUNsaWVudC5o
IgorI2luY2x1ZGUgIldlYkNvcmVBcmd1bWVudENvZGVycy5oIgogI2luY2x1ZGUgIldlYkRvY3Vt
ZW50TG9hZGVyLmgiCiAjaW5jbHVkZSAiV2ViUGFnZS5oIgogI2luY2x1ZGUgIldlYlBhZ2VQcm94
eU1lc3NhZ2VzLmgiCkBAIC04MSwxMiArODQsNiBAQAogI2luY2x1ZGUgPFdlYkNvcmUvTGVnYWN5
V2ViQXJjaGl2ZS5oPgogI2VuZGlmCiAKLSNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQotI2lu
Y2x1ZGUgIk5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzTWVzc2FnZXMuaCIKLSNpbmNsdWRl
ICJOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uaCIKLSNpbmNsdWRlICJXZWJDb3JlQXJndW1lbnRD
b2RlcnMuaCIKLSNlbmRpZgotCiAjaWZuZGVmIE5ERUJVRwogI2luY2x1ZGUgPHd0Zi9SZWZDb3Vu
dGVkTGVha0NvdW50ZXIuaD4KICNlbmRpZgpAQCAtMjU3LDIzICsyNTQsOSBAQCB2b2lkIFdlYkZy
YW1lOjpzdGFydERvd25sb2FkKGNvbnN0IFdlYkNvCiAgICAgbV9wb2xpY3lEb3dubG9hZElEID0g
MDsKIAogICAgIGF1dG8mIHdlYlByb2Nlc3MgPSBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKTsKLSNp
ZiBVU0UoTkVUV09SS19TRVNTSU9OKQotICAgIEFTU0VSVCh3ZWJQcm9jZXNzLnVzZXNOZXR3b3Jr
UHJvY2VzcygpKTsKLSNlbmRpZgogICAgIFNlc3Npb25JRCBzZXNzaW9uSUQgPSBwYWdlKCkgPyBw
YWdlKCktPnNlc3Npb25JRCgpIDogU2Vzc2lvbklEOjpkZWZhdWx0U2Vzc2lvbklEKCk7Ci0jaWYg
RU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKLSAgICBpZiAod2ViUHJvY2Vzcy51c2VzTmV0d29ya1By
b2Nlc3MoKSkgewotICAgICAgICB3ZWJQcm9jZXNzLm5ldHdvcmtDb25uZWN0aW9uKCktPmNvbm5l
Y3Rpb24oKS0+c2VuZChNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OlN0
YXJ0RG93bmxvYWQoc2Vzc2lvbklELCBwb2xpY3lEb3dubG9hZElELCByZXF1ZXN0KSwgMCk7Ci0g
ICAgICAgIHJldHVybjsKLSAgICB9Ci0jZW5kaWYKLQotI2lmIFVTRShORVRXT1JLX1NFU1NJT04p
Ci0gICAgLy8gVXNpbmcgTkVUV09SS19TRVNTSU9OIHJlcXVpcmVzIHRoZSB1c2Ugb2YgYSBuZXR3
b3JrIHByb2Nlc3MuCi0gICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSNlbHNlCi0g
ICAgd2ViUHJvY2Vzcy5kb3dubG9hZE1hbmFnZXIoKS5zdGFydERvd25sb2FkKHNlc3Npb25JRCwg
cG9saWN5RG93bmxvYWRJRCwgcmVxdWVzdCk7Ci0jZW5kaWYKKyAgICB3ZWJQcm9jZXNzLm5ldHdv
cmtDb25uZWN0aW9uKCktPmNvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6TmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3M6OlN0YXJ0RG93bmxvYWQoc2Vzc2lvbklELCBwb2xpY3lEb3dubG9h
ZElELCByZXF1ZXN0KSwgMCk7CisgICAgcmV0dXJuOwogfQogCiB2b2lkIFdlYkZyYW1lOjpjb252
ZXJ0TWFpblJlc291cmNlTG9hZFRvRG93bmxvYWQoRG9jdW1lbnRMb2FkZXIqIGRvY3VtZW50TG9h
ZGVyLCBTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3Qs
IGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQpAQCAtMjg2LDM5ICsyNjksMTIgQEAg
dm9pZCBXZWJGcmFtZTo6Y29udmVydE1haW5SZXNvdXJjZUxvYWRUbwogICAgIFN1YnJlc291cmNl
TG9hZGVyKiBtYWluUmVzb3VyY2VMb2FkZXIgPSBkb2N1bWVudExvYWRlci0+bWFpblJlc291cmNl
TG9hZGVyKCk7CiAKICAgICBhdXRvJiB3ZWJQcm9jZXNzID0gV2ViUHJvY2Vzczo6c2luZ2xldG9u
KCk7Ci0jaWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKLSNpZiBVU0UoTkVUV09SS19TRVNTSU9O
KQotICAgIEFTU0VSVCh3ZWJQcm9jZXNzLnVzZXNOZXR3b3JrUHJvY2VzcygpKTsKLSNlbmRpZgot
ICAgIGlmICh3ZWJQcm9jZXNzLnVzZXNOZXR3b3JrUHJvY2VzcygpKSB7Ci0gICAgICAgIC8vIFVz
ZSAwIHRvIGluZGljYXRlIHRoYXQgdGhlIHJlc291cmNlIGxvYWQgY2FuJ3QgYmUgY29udmVydGVk
IGFuZCBhIG5ldyBkb3dubG9hZCBtdXN0IGJlIHN0YXJ0ZWQuCi0gICAgICAgIC8vIFRoaXMgY2Fu
IGhhcHBlbiBpZiB0aGVyZSBpcyBubyBsb2FkZXIgYmVjYXVzZSB0aGUgbWFpbiByZXNvdXJjZSBp
cyBpbiB0aGUgV2ViQ29yZSBtZW1vcnkgY2FjaGUsCi0gICAgICAgIC8vIG9yIGJlY2F1c2UgdGhl
IGNvbnZlcnNpb24gd2FzIGF0dGVtcHRlZCB3aGVuIG5vdCBjYWxsaW5nIFN1YnJlc291cmNlTG9h
ZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2UoKS4KLSAgICAgICAgdWludDY0X3QgbWFpblJlc291cmNl
TG9hZElkZW50aWZpZXI7Ci0gICAgICAgIGlmIChtYWluUmVzb3VyY2VMb2FkZXIpCi0gICAgICAg
ICAgICBtYWluUmVzb3VyY2VMb2FkSWRlbnRpZmllciA9IG1haW5SZXNvdXJjZUxvYWRlci0+aWRl
bnRpZmllcigpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBtYWluUmVzb3VyY2VMb2FkSWRl
bnRpZmllciA9IDA7Ci0KLSAgICAgICAgd2ViUHJvY2Vzcy5uZXR3b3JrQ29ubmVjdGlvbigpLT5j
b25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
OjpDb252ZXJ0TWFpblJlc291cmNlTG9hZFRvRG93bmxvYWQoc2Vzc2lvbklELCBtYWluUmVzb3Vy
Y2VMb2FkSWRlbnRpZmllciwgcG9saWN5RG93bmxvYWRJRCwgcmVxdWVzdCwgcmVzcG9uc2UpLCAw
KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSNlbmRpZgotCi0gICAgaWYgKCFtYWluUmVzb3Vy
Y2VMb2FkZXIpIHsKLSAgICAgICAgLy8gVGhlIG1haW4gcmVzb3VyY2UgaGFzIGFscmVhZHkgYmVl
biBsb2FkZWQuIFN0YXJ0IGEgbmV3IGRvd25sb2FkIGluc3RlYWQuCi0jaWYgIVVTRShORVRXT1JL
X1NFU1NJT04pCi0gICAgICAgIHdlYlByb2Nlc3MuZG93bmxvYWRNYW5hZ2VyKCkuc3RhcnREb3du
bG9hZChzZXNzaW9uSUQsIHBvbGljeURvd25sb2FkSUQsIHJlcXVlc3QpOwotI2VuZGlmCi0gICAg
ICAgIHJldHVybjsKLSAgICB9CisgICAgLy8gVXNlIDAgdG8gaW5kaWNhdGUgdGhhdCB0aGUgcmVz
b3VyY2UgbG9hZCBjYW4ndCBiZSBjb252ZXJ0ZWQgYW5kIGEgbmV3IGRvd25sb2FkIG11c3QgYmUg
c3RhcnRlZC4KKyAgICAvLyBUaGlzIGNhbiBoYXBwZW4gaWYgdGhlcmUgaXMgbm8gbG9hZGVyIGJl
Y2F1c2UgdGhlIG1haW4gcmVzb3VyY2UgaXMgaW4gdGhlIFdlYkNvcmUgbWVtb3J5IGNhY2hlLAor
ICAgIC8vIG9yIGJlY2F1c2UgdGhlIGNvbnZlcnNpb24gd2FzIGF0dGVtcHRlZCB3aGVuIG5vdCBj
YWxsaW5nIFN1YnJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2UoKS4KKyAgICB1aW50
NjRfdCBtYWluUmVzb3VyY2VMb2FkSWRlbnRpZmllciA9IG1haW5SZXNvdXJjZUxvYWRlciA/IG1h
aW5SZXNvdXJjZUxvYWRlci0+aWRlbnRpZmllcigpIDogMDsKIAotI2lmIFVTRShORVRXT1JLX1NF
U1NJT04pCi0gICAgLy8gVXNpbmcgTkVUV09SS19TRVNTSU9OIHJlcXVpcmVzIHRoZSB1c2Ugb2Yg
YSBuZXR3b3JrIHByb2Nlc3MuCi0gICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSNl
bHNlCi0gICAgd2ViUHJvY2Vzcy5kb3dubG9hZE1hbmFnZXIoKS5jb252ZXJ0SGFuZGxlVG9Eb3du
bG9hZChwb2xpY3lEb3dubG9hZElELCBkb2N1bWVudExvYWRlci0+bWFpblJlc291cmNlTG9hZGVy
KCktPmhhbmRsZSgpLCByZXF1ZXN0LCByZXNwb25zZSk7Ci0jZW5kaWYKKyAgICB3ZWJQcm9jZXNz
Lm5ldHdvcmtDb25uZWN0aW9uKCktPmNvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6TmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkNvbnZlcnRNYWluUmVzb3VyY2VMb2FkVG9Eb3dubG9h
ZChzZXNzaW9uSUQsIG1haW5SZXNvdXJjZUxvYWRJZGVudGlmaWVyLCBwb2xpY3lEb3dubG9hZElE
LCByZXF1ZXN0LCByZXNwb25zZSksIDApOwogfQogCiBTdHJpbmcgV2ViRnJhbWU6OnNvdXJjZSgp
IGNvbnN0CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL3NvdXAvV2ViUHJvY2Vzc1Nv
dXAuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mvc291cC9XZWJQ
cm9jZXNzU291cC5jcHAJKHJldmlzaW9uIDE5MjYwMSkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3Mvc291cC9XZWJQcm9jZXNzU291cC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ5LDE4ICs0
OSw2IEBACiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1zdGF0aWMgdWludDY0X3QgZ2V0Q2FjaGVE
aXNrRnJlZVNpemUoU291cENhY2hlKiBjYWNoZSkKLXsKLSAgICBBU1NFUlQoY2FjaGUpOwotCi0g
ICAgR1VuaXF1ZU91dFB0cjxjaGFyPiBjYWNoZURpcjsKLSAgICBnX29iamVjdF9nZXQoR19PQkpF
Q1QoY2FjaGUpLCAiY2FjaGUtZGlyIiwgJmNhY2hlRGlyLm91dFB0cigpLCBOVUxMKTsKLSAgICBp
ZiAoIWNhY2hlRGlyKQotICAgICAgICByZXR1cm4gMDsKLQotICAgIHJldHVybiBXZWJDb3JlOjpn
ZXRWb2x1bWVGcmVlU2l6ZUZvclBhdGgoY2FjaGVEaXIuZ2V0KCkpOwotfQotCiB2b2lkIFdlYlBy
b2Nlc3M6OnBsYXRmb3JtU2V0Q2FjaGVNb2RlbChDYWNoZU1vZGVsIGNhY2hlTW9kZWwpCiB7CiAg
ICAgdW5zaWduZWQgY2FjaGVUb3RhbENhcGFjaXR5ID0gMDsKQEAgLTczLDEyICs2MSw2IEBAIHZv
aWQgV2ViUHJvY2Vzczo6cGxhdGZvcm1TZXRDYWNoZU1vZGVsKEMKICAgICB1bnNpZ25lZCBsb25n
IHVybENhY2hlRGlza0NhcGFjaXR5ID0gMDsKIAogICAgIHVpbnQ2NF90IGRpc2tGcmVlU2l6ZSA9
IDA7Ci0gICAgU291cENhY2hlKiBjYWNoZSA9IG51bGxwdHI7Ci0KLSAgICBpZiAoIXVzZXNOZXR3
b3JrUHJvY2VzcygpKSB7Ci0gICAgICAgIGNhY2hlID0gV2ViQ29yZTo6U291cE5ldHdvcmtTZXNz
aW9uOjpkZWZhdWx0U2Vzc2lvbigpLmNhY2hlKCk7Ci0gICAgICAgIGRpc2tGcmVlU2l6ZSA9IGdl
dENhY2hlRGlza0ZyZWVTaXplKGNhY2hlKSAvIFdURjo6TUI7Ci0gICAgfQogCiAgICAgdWludDY0
X3QgbWVtU2l6ZSA9IFdURjo6cmFtU2l6ZSgpIC8gV1RGOjpNQjsKICAgICBjYWxjdWxhdGVDYWNo
ZVNpemVzKGNhY2hlTW9kZWwsIG1lbVNpemUsIGRpc2tGcmVlU2l6ZSwKQEAgLTk0LDMzICs3Niwx
MCBAQCB2b2lkIFdlYlByb2Nlc3M6OnBsYXRmb3JtU2V0Q2FjaGVNb2RlbChDCiAjaWYgUExBVEZP
Uk0oR1RLKQogICAgIFdlYkNvcmU6OlBhZ2VDYWNoZTo6c2luZ2xldG9uKCkuc2V0U2hvdWxkQ2xl
YXJCYWNraW5nU3RvcmVzKHRydWUpOwogI2VuZGlmCi0KLSAgICBpZiAoIXVzZXNOZXR3b3JrUHJv
Y2VzcygpKSB7Ci0gICAgICAgIGlmICh1cmxDYWNoZURpc2tDYXBhY2l0eSA+IHNvdXBfY2FjaGVf
Z2V0X21heF9zaXplKGNhY2hlKSkKLSAgICAgICAgICAgIHNvdXBfY2FjaGVfc2V0X21heF9zaXpl
KGNhY2hlLCB1cmxDYWNoZURpc2tDYXBhY2l0eSk7Ci0gICAgfQogfQogCiB2b2lkIFdlYlByb2Nl
c3M6OnBsYXRmb3JtQ2xlYXJSZXNvdXJjZUNhY2hlcyhSZXNvdXJjZUNhY2hlc1RvQ2xlYXIgY2Fj
aGVzVG9DbGVhcikKIHsKLSAgICBpZiAoY2FjaGVzVG9DbGVhciA9PSBJbk1lbW9yeVJlc291cmNl
Q2FjaGVzT25seSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgLy8gSWYgd2UncmUgdXNpbmcgdGhl
IG5ldHdvcmsgcHJvY2VzcyB0aGVuIGl0IGlzIHRoZSBvbmx5IG9uZSB0aGF0IG5lZWRzIHRvIGNs
ZWFyIHRoZSBkaXNrIGNhY2hlLgotICAgIGlmICh1c2VzTmV0d29ya1Byb2Nlc3MoKSkKLSAgICAg
ICAgcmV0dXJuOwotCi0gICAgc291cF9jYWNoZV9jbGVhcihXZWJDb3JlOjpTb3VwTmV0d29ya1Nl
c3Npb246OmRlZmF1bHRTZXNzaW9uKCkuY2FjaGUoKSk7Ci19Ci0KLXN0YXRpYyB2b2lkIHNldFNv
dXBTZXNzaW9uQWNjZXB0TGFuZ3VhZ2UoY29uc3QgVmVjdG9yPFN0cmluZz4mIGxhbmd1YWdlcykK
LXsKLSAgICBXZWJDb3JlOjpTb3VwTmV0d29ya1Nlc3Npb246OmRlZmF1bHRTZXNzaW9uKCkuc2V0
QWNjZXB0TGFuZ3VhZ2VzKGxhbmd1YWdlcyk7Ci19Ci0KLXN0YXRpYyB2b2lkIGxhbmd1YWdlQ2hh
bmdlZCh2b2lkKikKLXsKLSAgICBzZXRTb3VwU2Vzc2lvbkFjY2VwdExhbmd1YWdlKFdlYkNvcmU6
OnVzZXJQcmVmZXJyZWRMYW5ndWFnZXMoKSk7CiB9CiAKIHZvaWQgV2ViUHJvY2Vzczo6cGxhdGZv
cm1Jbml0aWFsaXplV2ViUHJvY2VzcyhXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzJiYgcGFy
YW1ldGVycykKQEAgLTEzNSw2MiArOTQsMTggQEAgdm9pZCBXZWJQcm9jZXNzOjpwbGF0Zm9ybUlu
aXRpYWxpemVXZWJQcgogICAgICAgICBzZWNjb21wRmlsdGVycy5pbml0aWFsaXplKCk7CiAgICAg
fQogI2VuZGlmCi0KLSAgICBpZiAodXNlc05ldHdvcmtQcm9jZXNzKCkpCi0gICAgICAgIHJldHVy
bjsKLQotICAgIEFTU0VSVCghcGFyYW1ldGVycy5kaXNrQ2FjaGVEaXJlY3RvcnkuaXNFbXB0eSgp
KTsKLQotICAgIC8vIFdlIHVzZWQgdG8gdXNlIHRoZSBnaXZlbiBjYWNoZSBkaXJlY3RvcnkgZm9y
IHRoZSBzb3VwIGNhY2hlLCBidXQgbm93IHdlIHVzZSBhIHN1YmRpcmVjdG9yeSB0byBhdm9pZAot
ICAgIC8vIGNvbmZsaWN0cyB3aXRoIG90aGVyIGNhY2hlIGZpbGVzIGluIHRoZSBzYW1lIGRpcmVj
dG9yeS4gUmVtb3ZlIHRoZSBvbGQgY2FjaGUgZmlsZXMgaWYgdGhleSBzdGlsbCBleGlzdC4KLSAg
ICBXZWJDb3JlOjpTb3VwTmV0d29ya1Nlc3Npb246OmRlZmF1bHRTZXNzaW9uKCkuY2xlYXJDYWNo
ZShXZWJDb3JlOjpkaXJlY3RvcnlOYW1lKHBhcmFtZXRlcnMuZGlza0NhY2hlRGlyZWN0b3J5KSk7
Ci0KLSNpZiBFTkFCTEUoTkVUV09SS19DQUNIRSkKLSAgICAvLyBXaGVuIG5ldHdvcmsgY2FjaGUg
aXMgZW5hYmxlZCwgdGhlIGRpc2sgY2FjaGUgZGlyZWN0b3J5IGlzIHRoZSBuZXR3b3JrIHByb2Nl
c3Mgb25lLgotICAgIENTdHJpbmcgZGlza0NhY2hlUGF0aCA9IFdlYkNvcmU6OnBhdGhCeUFwcGVu
ZGluZ0NvbXBvbmVudChXZWJDb3JlOjpkaXJlY3RvcnlOYW1lKHBhcmFtZXRlcnMuZGlza0NhY2hl
RGlyZWN0b3J5KSwgIndlYmtpdCIpLnV0ZjgoKTsKLSNlbHNlCi0gICAgQ1N0cmluZyBkaXNrQ2Fj
aGVQYXRoID0gcGFyYW1ldGVycy5kaXNrQ2FjaGVEaXJlY3RvcnkudXRmOCgpOwotI2VuZGlmCi0K
LSAgICBHUmVmUHRyPFNvdXBDYWNoZT4gc291cENhY2hlID0gYWRvcHRHUmVmKHNvdXBfY2FjaGVf
bmV3KGRpc2tDYWNoZVBhdGguZGF0YSgpLCBTT1VQX0NBQ0hFX1NJTkdMRV9VU0VSKSk7Ci0gICAg
V2ViQ29yZTo6U291cE5ldHdvcmtTZXNzaW9uOjpkZWZhdWx0U2Vzc2lvbigpLnNldENhY2hlKHNv
dXBDYWNoZS5nZXQoKSk7Ci0gICAgLy8gU2V0IGFuIGluaXRpYWwgaHVnZSBtYXhfc2l6ZSBmb3Ig
dGhlIFNvdXBDYWNoZSBzbyB0aGUgY2FsbCB0byBzb3VwX2NhY2hlX2xvYWQoKSB3b24ndCBldmlj
dCBhbnkgY2FjaGVkCi0gICAgLy8gcmVzb3VyY2UuIFRoZSBmaW5hbCBzaXplIG9mIHRoZSBjYWNo
ZSB3aWxsIGJlIHNldCBieSBOZXR3b3JrUHJvY2Vzczo6cGxhdGZvcm1TZXRDYWNoZU1vZGVsKCku
Ci0gICAgdW5zaWduZWQgaW5pdGlhbE1heFNpemUgPSBzb3VwX2NhY2hlX2dldF9tYXhfc2l6ZShz
b3VwQ2FjaGUuZ2V0KCkpOwotICAgIHNvdXBfY2FjaGVfc2V0X21heF9zaXplKHNvdXBDYWNoZS5n
ZXQoKSwgR19NQVhVSU5UKTsKLSAgICBzb3VwX2NhY2hlX2xvYWQoc291cENhY2hlLmdldCgpKTsK
LSAgICBzb3VwX2NhY2hlX3NldF9tYXhfc2l6ZShzb3VwQ2FjaGUuZ2V0KCksIGluaXRpYWxNYXhT
aXplKTsKLQotICAgIGlmICghcGFyYW1ldGVycy5jb29raWVQZXJzaXN0ZW50U3RvcmFnZVBhdGgu
aXNFbXB0eSgpKSB7Ci0gICAgICAgIHN1cHBsZW1lbnQ8V2ViQ29va2llTWFuYWdlcj4oKS0+c2V0
Q29va2llUGVyc2lzdGVudFN0b3JhZ2UocGFyYW1ldGVycy5jb29raWVQZXJzaXN0ZW50U3RvcmFn
ZVBhdGgsCi0gICAgICAgICAgICBwYXJhbWV0ZXJzLmNvb2tpZVBlcnNpc3RlbnRTdG9yYWdlVHlw
ZSk7Ci0gICAgfQotICAgIHN1cHBsZW1lbnQ8V2ViQ29va2llTWFuYWdlcj4oKS0+c2V0SFRUUENv
b2tpZUFjY2VwdFBvbGljeShwYXJhbWV0ZXJzLmNvb2tpZUFjY2VwdFBvbGljeSk7Ci0KLSAgICBp
ZiAoIXBhcmFtZXRlcnMubGFuZ3VhZ2VzLmlzRW1wdHkoKSkKLSAgICAgICAgc2V0U291cFNlc3Np
b25BY2NlcHRMYW5ndWFnZShwYXJhbWV0ZXJzLmxhbmd1YWdlcyk7Ci0KLSAgICBzZXRJZ25vcmVU
TFNFcnJvcnMocGFyYW1ldGVycy5pZ25vcmVUTFNFcnJvcnMpOwotCi0gICAgV2ViQ29yZTo6YWRk
TGFuZ3VhZ2VDaGFuZ2VPYnNlcnZlcih0aGlzLCBsYW5ndWFnZUNoYW5nZWQpOwogfQogCiB2b2lk
IFdlYlByb2Nlc3M6OnBsYXRmb3JtVGVybWluYXRlKCkKIHsKLSAgICBpZiAoIXVzZXNOZXR3b3Jr
UHJvY2VzcygpKQotICAgICAgICBXZWJDb3JlOjpyZW1vdmVMYW5ndWFnZUNoYW5nZU9ic2VydmVy
KHRoaXMpOwogfQogCiB2b2lkIFdlYlByb2Nlc3M6OnNldElnbm9yZVRMU0Vycm9ycyhib29sIGln
bm9yZVRMU0Vycm9ycykKIHsKLSAgICBBU1NFUlQoIXVzZXNOZXR3b3JrUHJvY2VzcygpKTsKLSAg
ICBXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZTo6c2V0SWdub3JlU1NMRXJyb3JzKGlnbm9yZVRMU0Vy
cm9ycyk7CiB9CiAKIHZvaWQgV2ViUHJvY2Vzczo6YWxsb3dTcGVjaWZpY0hUVFBTQ2VydGlmaWNh
dGVGb3JIb3N0KGNvbnN0IFdlYkNvcmU6OkNlcnRpZmljYXRlSW5mbyYgY2VydGlmaWNhdGVJbmZv
LCBjb25zdCBTdHJpbmcmIGhvc3QpCiB7Ci0gICAgQVNTRVJUKCF1c2VzTmV0d29ya1Byb2Nlc3Mo
KSk7Ci0gICAgV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGU6OnNldENsaWVudENlcnRpZmljYXRlKGhv
c3QsIGNlcnRpZmljYXRlSW5mby5jZXJ0aWZpY2F0ZSgpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2Ug
V2ViS2l0CkluZGV4OiBTb3VyY2UvY21ha2UvT3B0aW9uc0VmbC5jbWFrZQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvY21ha2UvT3B0aW9uc0VmbC5jbWFrZQkocmV2aXNpb24gMTkyNjAxKQorKysgU291
cmNlL2NtYWtlL09wdGlvbnNFZmwuY21ha2UJKHdvcmtpbmcgY29weSkKQEAgLTEwNiw3ICsxMDYs
NiBAQCBXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfCiBXRUJLSVRfT1BU
SU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfTkFWSUdBVE9SX0NPTlRFTlRfVVRJTFMgUFVC
TElDIE9OKQogV0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX05BVklHQVRP
Ul9IV0NPTkNVUlJFTkNZIFBVQkxJQyBPTikKIFdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZB
TFVFKEVOQUJMRV9ORVRTQ0FQRV9QTFVHSU5fQVBJIFBVQkxJQyBPTikKLVdFQktJVF9PUFRJT05f
REVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9ORVRXT1JLX1BST0NFU1MgUFVCTElDIE9OKQogV0VC
S0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX05PU05JRkYgUFVCTElDIE9OKQog
V0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX1BPSU5URVJfTE9DSyBQUklW
QVRFIE9GRikKIFdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9QVUJMSUNf
U1VGRklYX0xJU1QgUFJJVkFURSBPTikKSW5kZXg6IFNvdXJjZS9jbWFrZS9PcHRpb25zR1RLLmNt
YWtlCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9jbWFrZS9PcHRpb25zR1RLLmNtYWtlCShyZXZpc2lv
biAxOTI2MDEpCisrKyBTb3VyY2UvY21ha2UvT3B0aW9uc0dUSy5jbWFrZQkod29ya2luZyBjb3B5
KQpAQCAtMTg2LDcgKzE4Niw2IEBAIFdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVO
QUJMRV8KIFdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9WSUVXX01PREVf
Q1NTX01FRElBIFBSSVZBVEUgT04pCiBXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShF
TkFCTEVfV0VCX1RJTUlORyBQUklWQVRFIE9OKQogV0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRf
VkFMVUUoRU5BQkxFX1dFQkdMIFBSSVZBVEUgT04pCi1XRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9S
VF9WQUxVRShFTkFCTEVfTkVUV09SS19QUk9DRVNTIFBSSVZBVEUgT04pCiBXRUJLSVRfT1BUSU9O
X0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfVEhSRUFERURfQ09NUE9TSVRPUiBQUklWQVRFIE9G
RikKIFdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9TSEFET1dfRE9NIFBS
SVZBVEUgT0ZGKQogCkluZGV4OiBTb3VyY2UvY21ha2UvT3B0aW9uc01hYy5jbWFrZQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvY21ha2UvT3B0aW9uc01hYy5jbWFrZQkocmV2aXNpb24gMTkyNjAxKQor
KysgU291cmNlL2NtYWtlL09wdGlvbnNNYWMuY21ha2UJKHdvcmtpbmcgY29weSkKQEAgLTIyMCw3
ICsyMjAsNiBAQCBXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfCiAKIFdF
QktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9TQU5EQk9YX0VYVEVOU0lPTlMg
UFJJVkFURSBPTikKIFdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9XRUJf
UFJPQ0VTU19TQU5EQk9YIFBSSVZBVEUgT04pCi1XRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9W
QUxVRShFTkFCTEVfTkVUV09SS19QUk9DRVNTIFBSSVZBVEUgT04pCiBXRUJLSVRfT1BUSU9OX0RF
RkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfREFUQUJBU0VfUFJPQ0VTUyBQUklWQVRFIE9OKQogV0VC
S0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX1BMVUdJTl9QUk9DRVNTIFBSSVZB
VEUgT04pCiBXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfTUVNT1JZX1NB
TVBMRVIgUFJJVkFURSBPTikKSW5kZXg6IFNvdXJjZS9jbWFrZS9XZWJLaXRGZWF0dXJlcy5jbWFr
ZQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvY21ha2UvV2ViS2l0RmVhdHVyZXMuY21ha2UJKHJldmlz
aW9uIDE5MjYwMSkKKysrIFNvdXJjZS9jbWFrZS9XZWJLaXRGZWF0dXJlcy5jbWFrZQkod29ya2lu
ZyBjb3B5KQpAQCAtMTI4LDcgKzEyOCw2IEBAIG1hY3JvKFdFQktJVF9PUFRJT05fQkVHSU4pCiAg
ICAgV0VCS0lUX09QVElPTl9ERUZJTkUoRU5BQkxFX05BVklHQVRPUl9IV0NPTkNVUlJFTkNZICJU
b2dnbGUgTmF2aWdhdG9yIGhhcmR3YXJlIGNvbmN1cnJlbmN5IHN1cHBvcnQiIFBSSVZBVEUgT04p
CiAgICAgV0VCS0lUX09QVElPTl9ERUZJTkUoRU5BQkxFX05PU05JRkYgIlRvZ2dsZSBzdXBwb3J0
IGZvciAnWC1Db250ZW50LVR5cGUtT3B0aW9uczogbm9zbmlmZiciIFBSSVZBVEUgT0ZGKQogICAg
IFdFQktJVF9PUFRJT05fREVGSU5FKEVOQUJMRV9ORVRTQ0FQRV9QTFVHSU5fQVBJICJUb2dnbGUg
TmV0c2NhcGUgUGx1Z2luIHN1cHBvcnQiIFBSSVZBVEUgT04pCi0gICAgV0VCS0lUX09QVElPTl9E
RUZJTkUoRU5BQkxFX05FVFdPUktfUFJPQ0VTUyAiVG9nZ2xlIGRlZGljYXRlZCBuZXR3b3JrIHBy
b2Nlc3Mgc3VwcG9ydCBpbiBXZWJLaXQyIiBQUklWQVRFIE9GRikKICAgICBXRUJLSVRfT1BUSU9O
X0RFRklORShFTkFCTEVfTk9USUZJQ0FUSU9OUyAiVG9nZ2xlIERlc2t0b3AgTm90aWZpY2F0aW9u
cyBTdXBwb3J0IiBQUklWQVRFIE9GRikKICAgICBXRUJLSVRfT1BUSU9OX0RFRklORShFTkFCTEVf
T1JJRU5UQVRJT05fRVZFTlRTICJUb2dnbGUgT3JpZW50YXRpb24gRXZlbnRzIHN1cHBvcnQiIFBS
SVZBVEUgT0ZGKQogICAgIFdFQktJVF9PUFRJT05fREVGSU5FKEVOQUJMRV9QREZLSVRfUExVR0lO
ICJUb2dnbGUgUERGS2l0IHBsdWdpbiBzdXBwb3J0IiBQUklWQVRFIE9GRikKSW5kZXg6IFRvb2xz
L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJldmlzaW9uIDE5MjY1
MykKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE1IEBACisy
MDE1LTExLTE5ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisK
KyAgICAgICAgUmVtb3ZlIHRoZSBub24tTmV0d29ya1Byb2Nlc3MgY29uZmlndXJhdGlvbnMKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MTQxOAorCisg
ICAgICAgIFJldmlld2VkIGJ5IEdlb2ZmcmV5IEdhcmVuLgorCisgICAgICAgICogVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXQyL21hYy9HZXRQSURBZnRlckFib3J0ZWRQcm9jZXNzTGF1bmNoLmNw
cDoKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorICAgICAgICAqIFdlYktpdFRlc3RS
dW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6
Z2VuZXJhdGVQYWdlQ29uZmlndXJhdGlvbik6CisKIDIwMTUtMTEtMTkgIEFsZXhleSBQcm9za3Vy
eWFrb3YgIDxhcEBhcHBsZS5jb20+CiAKICAgICAgICAgTGF5b3V0VGVzdFJlbGF5IHByb2Nlc3Nl
cyBsZWFrIG9uIGlPUyB0ZXN0ZXJzCkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdDIvbWFjL0dldFBJREFmdGVyQWJvcnRlZFByb2Nlc3NMYXVuY2guY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9tYWMvR2V0UElEQWZ0ZXJBYm9y
dGVkUHJvY2Vzc0xhdW5jaC5jcHAJKHJldmlzaW9uIDE5MjYwMSkKKysrIFRvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0Mi9tYWMvR2V0UElEQWZ0ZXJBYm9ydGVkUHJvY2Vzc0xhdW5jaC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTQyLDcgKzQyLDYgQEAgc3RhdGljIHZvaWQgZGlkRmluaXNo
TG9hZEZvckZyYW1lKFdLUGFnZQogVEVTVChXZWJLaXQyLCBHZXRQSURBZnRlckFib3J0ZWRQcm9j
ZXNzTGF1bmNoKQogewogICAgIFdLUmV0YWluUHRyPFdLQ29udGV4dFJlZj4gY29udGV4dChBZG9w
dFdLLCBXS0NvbnRleHRDcmVhdGUoKSk7Ci0gICAgV0tDb250ZXh0U2V0VXNlc05ldHdvcmtQcm9j
ZXNzKGNvbnRleHQuZ2V0KCksIHRydWUpOwogCiAgICAgUGxhdGZvcm1XZWJWaWV3IHdlYlZpZXco
Y29udGV4dC5nZXQoKSk7CiAKSW5kZXg6IFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRy
b2xsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRy
b2xsZXIuY3BwCShyZXZpc2lvbiAxOTI2MDEpCisrKyBUb29scy9XZWJLaXRUZXN0UnVubmVyL1Rl
c3RDb250cm9sbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDAwLDExICs0MDAsNiBAQCBXS1Jl
dGFpblB0cjxXS1BhZ2VDb25maWd1cmF0aW9uUmVmPiBUZXN0CiAKICAgICBtX2dlb2xvY2F0aW9u
UHJvdmlkZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEdlb2xvY2F0aW9uUHJvdmlkZXJNb2NrPihtX2Nv
bnRleHQuZ2V0KCkpOwogCi0jaWYgUExBVEZPUk0oRUZMKQotICAgIFdLQ29udGV4dFNldFVzZXNO
ZXR3b3JrUHJvY2VzcyhtX2NvbnRleHQuZ2V0KCksIGZhbHNlKTsKLSAgICBXS0NvbnRleHRTZXRQ
cm9jZXNzTW9kZWwobV9jb250ZXh0LmdldCgpLCBrV0tQcm9jZXNzTW9kZWxTaGFyZWRTZWNvbmRh
cnlQcm9jZXNzKTsKLSNlbmRpZgotCiAgICAgaWYgKGNvbnN0IGNoYXIqIGR1bXBSZW5kZXJUcmVl
VGVtcCA9IGxpYnJhcnlQYXRoRm9yVGVzdGluZygpKSB7CiAgICAgICAgIFN0cmluZyB0ZW1wb3Jh
cnlGb2xkZXIgPSBTdHJpbmc6OmZyb21VVEY4KGR1bXBSZW5kZXJUcmVlVGVtcCk7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>265948</attachid>
            <date>2015-11-20 04:51:01 -0800</date>
            <delta_ts>2015-11-20 04:51:01 -0800</delta_ts>
            <desc>Patch with the GTK changes needed</desc>
            <filename>wk-network-process.diff</filename>
            <type>text/plain</type>
            <size>177574</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5nZUxvZwppbmRleCA0MTAxMTUzLi5mYjM4Mjg3
IDEwMDY0NAotLS0gYS9DaGFuZ2VMb2cKKysrIGIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAK
KzIwMTUtMTEtMjAgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4K
KworICAgICAgICBSZW1vdmUgdGhlIG5vbi1OZXR3b3JrUHJvY2VzcyBjb25maWd1cmF0aW9ucwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUxNDE4CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgR2VvZmZyZXkgR2FyZW4uCisKKyAgICAgICAgKiBTb3VyY2Uv
Y21ha2UvT3B0aW9uc0VmbC5jbWFrZToKKyAgICAgICAgKiBTb3VyY2UvY21ha2UvT3B0aW9uc0dU
Sy5jbWFrZToKKyAgICAgICAgKiBTb3VyY2UvY21ha2UvT3B0aW9uc01hYy5jbWFrZToKKyAgICAg
ICAgKiBTb3VyY2UvY21ha2UvV2ViS2l0RmVhdHVyZXMuY21ha2U6CisKIDIwMTUtMTEtMTkgIENv
bW1pdCBRdWV1ZSAgPGNvbW1pdC1xdWV1ZUB3ZWJraXQub3JnPgogCiAgICAgICAgIFVucmV2aWV3
ZWQsIHJvbGxpbmcgb3V0IHIxOTI2NjcgYW5kIHIxOTI2NjguCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XZWJLaXQyL0NNYWtlTGlzdHMudHh0Cmlu
ZGV4IDAzZmZlOTguLmEyNzRkYzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NNYWtlTGlz
dHMudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQyL0NNYWtlTGlzdHMudHh0CkBAIC04MDMsMTYgKzgw
MywxMyBAQCBpZiAoV2ViS2l0Ml9XZWJQcm9jZXNzX09VVFBVVF9OQU1FKQogICAgIHNldF90YXJn
ZXRfcHJvcGVydGllcyhXZWJQcm9jZXNzIFBST1BFUlRJRVMgT1VUUFVUX05BTUUgJHtXZWJLaXQy
X1dlYlByb2Nlc3NfT1VUUFVUX05BTUV9KQogZW5kaWYgKCkKIAotaWYgKEVOQUJMRV9ORVRXT1JL
X1BST0NFU1MpCi0gICAgYWRkX2V4ZWN1dGFibGUoTmV0d29ya1Byb2Nlc3MgJHtOZXR3b3JrUHJv
Y2Vzc19TT1VSQ0VTfSkKLSAgICBhZGRfd2Via2l0Ml9wcmVmaXhfaGVhZGVyKE5ldHdvcmtQcm9j
ZXNzKQotICAgIHRhcmdldF9saW5rX2xpYnJhcmllcyhOZXR3b3JrUHJvY2VzcyAke05ldHdvcmtQ
cm9jZXNzX0xJQlJBUklFU30pCi0gICAgc2V0X3RhcmdldF9wcm9wZXJ0aWVzKE5ldHdvcmtQcm9j
ZXNzIFBST1BFUlRJRVMgRk9MREVSICJXZWJLaXQiKQotICAgIGluc3RhbGwoVEFSR0VUUyBOZXR3
b3JrUHJvY2VzcyBERVNUSU5BVElPTiAiJHtMSUJFWEVDX0lOU1RBTExfRElSfSIpCi0KLSAgICBp
ZiAoV2ViS2l0Ml9OZXR3b3JrUHJvY2Vzc19PVVRQVVRfTkFNRSkKLSAgICAgICAgc2V0X3Rhcmdl
dF9wcm9wZXJ0aWVzKE5ldHdvcmtQcm9jZXNzIFBST1BFUlRJRVMgT1VUUFVUX05BTUUgJHtXZWJL
aXQyX05ldHdvcmtQcm9jZXNzX09VVFBVVF9OQU1FfSkKLSAgICBlbmRpZiAoKQorYWRkX2V4ZWN1
dGFibGUoTmV0d29ya1Byb2Nlc3MgJHtOZXR3b3JrUHJvY2Vzc19TT1VSQ0VTfSkKK2FkZF93ZWJr
aXQyX3ByZWZpeF9oZWFkZXIoTmV0d29ya1Byb2Nlc3MpCit0YXJnZXRfbGlua19saWJyYXJpZXMo
TmV0d29ya1Byb2Nlc3MgJHtOZXR3b3JrUHJvY2Vzc19MSUJSQVJJRVN9KQorc2V0X3RhcmdldF9w
cm9wZXJ0aWVzKE5ldHdvcmtQcm9jZXNzIFBST1BFUlRJRVMgRk9MREVSICJXZWJLaXQiKQorCitp
ZiAoV2ViS2l0Ml9OZXR3b3JrUHJvY2Vzc19PVVRQVVRfTkFNRSkKKyAgICBzZXRfdGFyZ2V0X3By
b3BlcnRpZXMoTmV0d29ya1Byb2Nlc3MgUFJPUEVSVElFUyBPVVRQVVRfTkFNRSAke1dlYktpdDJf
TmV0d29ya1Byb2Nlc3NfT1VUUFVUX05BTUV9KQogZW5kaWYgKCkKIAogaWYgKEVOQUJMRV9QTFVH
SU5fUFJPQ0VTUykKQEAgLTg0Nyw3ICs4NDQsNyBAQCBzZXRfdGFyZ2V0X3Byb3BlcnRpZXMoV2Vi
S2l0MiBQUk9QRVJUSUVTIFZFUlNJT04gJHtXRUJLSVQyX1ZFUlNJT059IFNPVkVSU0lPTiAkewog
aWYgKEFQUExFKQogICAgIFdFQktJVF9GUkFNRVdPUksoV2ViS2l0MikKIGVsc2UgKCkKLSAgICBp
bnN0YWxsKFRBUkdFVFMgV2ViS2l0MiBXZWJQcm9jZXNzCisgICAgaW5zdGFsbChUQVJHRVRTIFdl
YktpdDIgV2ViUHJvY2VzcyBOZXR3b3JrUHJvY2VzcwogICAgICAgICBMSUJSQVJZIERFU1RJTkFU
SU9OICIke0xJQl9JTlNUQUxMX0RJUn0iCiAgICAgICAgIFJVTlRJTUUgREVTVElOQVRJT04gIiR7
TElCRVhFQ19JTlNUQUxMX0RJUn0iCiAgICAgKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
Q2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IDQ5OWE5OTUuLmNiZjI4
YWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMTggQEAKKzIwMTUtMTEtMjAgIEFsZXggQ2hyaXN0
ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBSZW1vdmUgdGhlIG5v
bi1OZXR3b3JrUHJvY2VzcyBjb25maWd1cmF0aW9ucworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUxNDE4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgR2Vv
ZmZyZXkgR2FyZW4uCisKKyAgICAgICAgVGhpcyBwYXRjaCBhc3N1bWVzIEVOQUJMRShORVRXT1JL
X1BST0NFU1MpIGlzIGFsd2F5cyAxLCB1c2VzTmV0d29ya1Byb2Nlc3MgaXMgYWx3YXlzIHRydWUs
IAorICAgICAgICBhbmQgUHJvY2Vzc01vZGVsIGlzIGFsd2F5cyBQcm9jZXNzTW9kZWxNdWx0aXBs
ZVNlY29uZGFyeVByb2Nlc3Nlcy4gIEl0IGRvZXMgdGhpcyBieSByZW1vdmluZworICAgICAgICB0
aGUgY2hlY2tzIGFuZCB0aGUgY29kZSB0aGF0IHdvdWxkIGJlIGV4ZWN1dGVkIHdpdGggb3RoZXIg
Y29uZmlndXJhdGlvbnMuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBO
ZXR3b3JrUHJvY2Vzcy9FbnRyeVBvaW50L21hYy9MZWdhY3lQcm9jZXNzL05ldHdvcmtQcm9jZXNz
TWFpbi5tbToKKyAgICAgICAgKE5ldHdvcmtQcm9jZXNzTWFpbik6CisgICAgICAgICogTmV0d29y
a1Byb2Nlc3MvRW50cnlQb2ludC9tYWMvWFBDU2VydmljZS9OZXR3b3JrU2VydmljZUVudHJ5UG9p
bnQubW06CisgICAgICAgIChOZXR3b3JrU2VydmljZUluaXRpYWxpemVyKToKKyAgICAgICAgKiBO
ZXR3b3JrUHJvY2Vzcy9GaWxlQVBJL05ldHdvcmtCbG9iUmVnaXN0cnkuY3BwOgorICAgICAgICAo
V2ViS2l0OjpOZXR3b3JrQmxvYlJlZ2lzdHJ5OjpmaWxlc0luQmxvYik6CisgICAgICAgICogTmV0
d29ya1Byb2Nlc3MvRmlsZUFQSS9OZXR3b3JrQmxvYlJlZ2lzdHJ5Lmg6CisgICAgICAgICogTmV0
d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwOgorICAgICAgICAo
V2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6YmxvYlNpemUpOgorICAgICAg
ICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmg6CisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2Fn
ZXMuaW46CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQuY3BwOgorICAgICAg
ICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nl
c3MvTmV0d29ya0xvYWRDbGllbnQuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
TG9hZFBhcmFtZXRlcnMuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrTG9hZFBhcmFtZXRl
cnM6Ok5ldHdvcmtMb2FkUGFyYW1ldGVycyk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0
d29ya0xvYWRQYXJhbWV0ZXJzLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1By
b2Nlc3MuY3BwOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmg6Cisg
ICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW46CisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAg
KiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuaDoKKyAgICAgICAgKiBOZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIubWVzc2FnZXMuaW46CisgICAgICAgICog
TmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Byb2Nlc3NDb2NvYS5tbToKKyAgICAgICAgKFdl
YktpdDo6TmV0d29ya1Byb2Nlc3M6OmNsZWFyRGlza0NhY2hlKToKKyAgICAgICAgKiBOZXR3b3Jr
UHJvY2Vzcy9lZmwvTmV0d29ya1Byb2Nlc3NNYWluRWZsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
TmV0d29ya1Byb2Nlc3NNYWluVW5peCk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvZ3RrL05l
dHdvcmtQcm9jZXNzTWFpbkd0ay5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNz
TWFpblVuaXgpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2lvcy9OZXR3b3JrUHJvY2Vzc0lP
Uy5tbToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9tYWMvTmV0d29ya0xvYWRNYWMubW06Cisg
ICAgICAgICogTmV0d29ya1Byb2Nlc3MvbWFjL05ldHdvcmtQcm9jZXNzTWFjLm1tOgorICAgICAg
ICAqIE5ldHdvcmtQcm9jZXNzL21hYy9OZXR3b3JrUmVzb3VyY2VMb2FkZXJNYWMubW06CisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrUHJvY2Vzc1NvdXAuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6cGxhdGZvcm1UZXJtaW5hdGUpOgorICAgICAgICAq
IE5ldHdvcmtQcm9jZXNzL3NvdXAvUmVtb3RlTmV0d29ya2luZ0NvbnRleHRTb3VwLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlTmV0d29ya2luZ0NvbnRleHQ6OnN0b3JhZ2VTZXNzaW9uKToK
KyAgICAgICAgKiBTaGFyZWQvQVBJL2MvV0tEZXByZWNhdGVkRnVuY3Rpb25zLmNwcDoKKyAgICAg
ICAgKFdLSW5zcGVjdG9yVG9nZ2xlSmF2YVNjcmlwdFByb2ZpbGluZyk6CisgICAgICAgIChXS0Nv
bnRleHRTZXRQcm9jZXNzTW9kZWwpOgorICAgICAgICAoV0tDb250ZXh0R2V0UHJvY2Vzc01vZGVs
KToKKyAgICAgICAgKFdLQ29udGV4dFNldFVzZXNOZXR3b3JrUHJvY2Vzcyk6CisgICAgICAgIChX
S0dyYXBoaWNzQ29udGV4dEdldENHQ29udGV4dCk6CisgICAgICAgICogU2hhcmVkL0F1dGhlbnRp
Y2F0aW9uL0F1dGhlbnRpY2F0aW9uTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OkF1dGhl
bnRpY2F0aW9uTWFuYWdlcjo6ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKToKKyAg
ICAgICAgKiBTaGFyZWQvTmV0d29yay9DdXN0b21Qcm90b2NvbHMvQ29jb2EvQ3VzdG9tUHJvdG9j
b2xNYW5hZ2VyQ29jb2EubW06CisgICAgICAgIChXZWJLaXQ6OkN1c3RvbVByb3RvY29sTWFuYWdl
cjo6aW5pdGlhbGl6ZSk6CisgICAgICAgIChXZWJLaXQ6OkN1c3RvbVByb3RvY29sTWFuYWdlcjo6
YWRkQ3VzdG9tUHJvdG9jb2wpOgorICAgICAgICAqIFNoYXJlZC9OZXR3b3JrL0N1c3RvbVByb3Rv
Y29scy9DdXN0b21Qcm90b2NvbE1hbmFnZXIuaDoKKyAgICAgICAgKiBTaGFyZWQvTmV0d29yay9D
dXN0b21Qcm90b2NvbHMvc291cC9DdXN0b21Qcm90b2NvbE1hbmFnZXJTb3VwLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyOjpzdXBwbGVtZW50TmFtZSk6CisgICAg
ICAgIChXZWJLaXQ6OkN1c3RvbVByb3RvY29sTWFuYWdlcjo6aW5pdGlhbGl6ZSk6CisgICAgICAg
IChXZWJLaXQ6OkN1c3RvbVByb3RvY29sTWFuYWdlcjo6cmVnaXN0ZXJTY2hlbWUpOgorICAgICAg
ICAqIFNoYXJlZC9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnM6OmRlY29k
ZSk6CisgICAgICAgICogU2hhcmVkL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFt
ZXRlcnMuaDoKKyAgICAgICAgKiBTaGFyZWQvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1N1cHBsZW1l
bnQuaDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NTdXBwbGVtZW50Ojppbml0aWFs
aXplKToKKyAgICAgICAgKiBTaGFyZWQvTmV0d29yay9OZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1l
dGVycy5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJz
OjpkZWNvZGUpOgorICAgICAgICAqIFNoYXJlZC9OZXR3b3JrL05ldHdvcmtSZXNvdXJjZUxvYWRQ
YXJhbWV0ZXJzLmg6CisgICAgICAgICogU2hhcmVkL1Byb2Nlc3NFeGVjdXRhYmxlUGF0aC5oOgor
ICAgICAgICAqIFNoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6V2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyczo6V2ViUHJvY2Vzc0NyZWF0
aW9uUGFyYW1ldGVycyk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NDcmVhdGlvblBhcmFt
ZXRlcnM6OmVuY29kZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NDcmVhdGlvblBhcmFt
ZXRlcnM6OmRlY29kZSk6CisgICAgICAgICogU2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlvblBhcmFt
ZXRlcnMuaDoKKyAgICAgICAgKiBTaGFyZWQvZWZsL1Byb2Nlc3NFeGVjdXRhYmxlUGF0aEVmbC5j
cHA6CisgICAgICAgIChXZWJLaXQ6OmV4ZWN1dGFibGVQYXRoT2ZQbHVnaW5Qcm9jZXNzKToKKyAg
ICAgICAgKFdlYktpdDo6ZXhlY3V0YWJsZVBhdGhPZk5ldHdvcmtQcm9jZXNzKToKKyAgICAgICAg
KFdlYktpdDo6ZXhlY3V0YWJsZVBhdGhPZkRhdGFiYXNlUHJvY2Vzcyk6CisgICAgICAgICogU2hh
cmVkL2d0ay9Qcm9jZXNzRXhlY3V0YWJsZVBhdGhHdGsuY3BwOgorICAgICAgICAoV2ViS2l0Ojpl
eGVjdXRhYmxlUGF0aE9mUGx1Z2luUHJvY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6OmV4ZWN1dGFi
bGVQYXRoT2ZOZXR3b3JrUHJvY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6OmV4ZWN1dGFibGVQYXRo
T2ZEYXRhYmFzZVByb2Nlc3MpOgorICAgICAgICAqIFNoYXJlZC9tYWMvQ29va2llU3RvcmFnZVNo
aW0uaDoKKyAgICAgICAgKiBTaGFyZWQvbWFjL0Nvb2tpZVN0b3JhZ2VTaGltLm1tOgorICAgICAg
ICAoLVtXS05TVVJMU2Vzc2lvbkxvY2FsIF9nZXRDb29raWVIZWFkZXJzRm9yVGFzazpjb21wbGV0
aW9uSGFuZGxlcjpdKToKKyAgICAgICAgKiBTaGFyZWQvbWFjL0Nvb2tpZVN0b3JhZ2VTaGltTGli
cmFyeS5jcHA6CisgICAgICAgICogU2hhcmVkL21hYy9Db29raWVTdG9yYWdlU2hpbUxpYnJhcnku
aDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSVByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5j
cHA6CisgICAgICAgIChBUEk6OlByb2Nlc3NQb29sQ29uZmlndXJhdGlvbjo6Y3JlYXRlV2l0aExl
Z2FjeU9wdGlvbnMpOgorICAgICAgICAoQVBJOjpQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb246OmNv
cHkpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9u
Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElTZXNzaW9uLmNwcDoKKyAgICAgICAgKEFQ
STo6U2Vzc2lvbjo6flNlc3Npb24pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS0FQSUNh
c3QuaDoKKyAgICAgICAgKFdlYktpdDo6dG9BUEkpOgorICAgICAgICAoV2ViS2l0Ojp0b0ZvbnRT
bW9vdGhpbmdMZXZlbCk6CisgICAgICAgIChXZWJLaXQ6OnRvUHJvY2Vzc01vZGVsKTogRGVsZXRl
ZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0LmNwcDoKKyAgICAgICAgKFdL
Q29udGV4dEdldENhY2hlTW9kZWwpOgorICAgICAgICAoV0tDb250ZXh0U2V0TWF4aW11bU51bWJl
ck9mUHJvY2Vzc2VzKToKKyAgICAgICAgKFdLQ29udGV4dFNldEphdmFTY3JpcHRHYXJiYWdlQ29s
bGVjdG9yVGltZXJFbmFibGVkKToKKyAgICAgICAgKFdLQ29udGV4dFVzZVRlc3RpbmdOZXR3b3Jr
U2Vzc2lvbik6CisgICAgICAgIChXS0NvbnRleHRTZXRQcm9jZXNzTW9kZWwpOiBEZWxldGVkLgor
ICAgICAgICAoV0tDb250ZXh0R2V0UHJvY2Vzc01vZGVsKTogRGVsZXRlZC4KKyAgICAgICAgKFdL
Q29udGV4dFNldFVzZXNOZXR3b3JrUHJvY2Vzcyk6IERlbGV0ZWQuCisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9DL1dLQ29udGV4dC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9tYWMvV0tD
b250ZXh0UHJpdmF0ZU1hYy5tbToKKyAgICAgICAgKFdLQ29udGV4dEdldE5ldHdvcmtQcm9jZXNz
SWRlbnRpZmllcik6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NHcm91
cC5tbToKKyAgICAgICAgKC1bV0tQcm9jZXNzR3JvdXAgaW5pdFdpdGhJbmplY3RlZEJ1bmRsZVVS
TDpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc1Bvb2wubW06Cisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2NvbnRleHQuY3BwOgorICAgICAgICAoZXdr
X2NvbnRleHRfcHJvY2Vzc19tb2RlbF9zZXQpOgorICAgICAgICAoZXdrX2NvbnRleHRfcHJvY2Vz
c19tb2RlbF9nZXQpOgorICAgICAgICAoZXdrX2NvbnRleHRfdGxzX2Vycm9yX3BvbGljeV9nZXQp
OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYkNvbnRleHQuY3BwOgorICAg
ICAgICAod2Via2l0V2ViQ29udGV4dENvbnN0cnVjdGVkKToKKyAgICAgICAgKHdlYmtpdF93ZWJf
Y29udGV4dF9zZXRfcHJvY2Vzc19tb2RlbCk6CisgICAgICAgICh3ZWJraXRfd2ViX2NvbnRleHRf
Z2V0X3Byb2Nlc3NfbW9kZWwpOgorICAgICAgICAod2Via2l0X3dlYl9jb250ZXh0X3NldF93ZWJf
cHJvY2Vzc19jb3VudF9saW1pdCk6CisgICAgICAgICh3ZWJraXRfd2ViX2NvbnRleHRfZ2V0X3dl
Yl9wcm9jZXNzX2NvdW50X2xpbWl0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV2ViUHJv
Y2Vzc1Bvb2xDb2NvYS5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnVwZGF0
ZVByb2Nlc3NTdXBwcmVzc2lvblN0YXRlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bv
b2w6OnBsYXRmb3JtSW5pdGlhbGl6ZVdlYlByb2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
cm9jZXNzUG9vbDo6cGxhdGZvcm1Jbml0aWFsaXplTmV0d29ya1Byb2Nlc3MpOgorICAgICAgICAo
V2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6cGxhdGZvcm1JbnZhbGlkYXRlQ29udGV4dCk6CisgICAg
ICAgICogVUlQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZFByb3h5LmNwcDoKKyAgICAgICAgKFdl
YktpdDo6RG93bmxvYWRQcm94eTo6Y2FuY2VsKToKKyAgICAgICAgKFdlYktpdDo6RG93bmxvYWRQ
cm94eTo6aW52YWxpZGF0ZSk6CisgICAgICAgICogVUlQcm9jZXNzL0xhdW5jaGVyL1Byb2Nlc3NM
YXVuY2hlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OlByb2Nlc3NMYXVuY2hlcjo6cHJvY2Vzc1R5
cGVBc1N0cmluZyk6CisgICAgICAgIChXZWJLaXQ6OlByb2Nlc3NMYXVuY2hlcjo6Z2V0UHJvY2Vz
c1R5cGVGcm9tU3RyaW5nKToKKyAgICAgICAgKiBVSVByb2Nlc3MvTGF1bmNoZXIvUHJvY2Vzc0xh
dW5jaGVyLmg6CisgICAgICAgICogVUlQcm9jZXNzL0xhdW5jaGVyL2VmbC9Qcm9jZXNzTGF1bmNo
ZXJFZmwuY3BwOgorICAgICAgICAoV2ViS2l0OjpQcm9jZXNzTGF1bmNoZXI6OmxhdW5jaFByb2Nl
c3MpOgorICAgICAgICAqIFVJUHJvY2Vzcy9MYXVuY2hlci9ndGsvUHJvY2Vzc0xhdW5jaGVyR3Rr
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UHJvY2Vzc0xhdW5jaGVyOjpsYXVuY2hQcm9jZXNzKToK
KyAgICAgICAgKiBVSVByb2Nlc3MvTGF1bmNoZXIvbWFjL1Byb2Nlc3NMYXVuY2hlck1hYy5tbToK
KyAgICAgICAgKFdlYktpdDo6Y29tcHV0ZVByb2Nlc3NTaGltUGF0aCk6CisgICAgICAgIChXZWJL
aXQ6OnNlcnZpY2VOYW1lKToKKyAgICAgICAgKFdlYktpdDo6c2hvdWxkTGVha0Jvb3N0KToKKyAg
ICAgICAgKFdlYktpdDo6Y3JlYXRlUHJvY2Vzcyk6CisgICAgICAgICogVUlQcm9jZXNzL05ldHdv
cmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9j
ZXNzUHJveHk6OnNldElzSG9sZGluZ0xvY2tlZEZpbGVzKToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
TmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL05ldHdv
cmsvTmV0d29ya1Byb2Nlc3NQcm94eS5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBVSVByb2Nlc3Mv
TmV0d29yay9tYWMvTmV0d29ya1Byb2Nlc3NQcm94eU1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6
TmV0d29ya1Byb2Nlc3NQcm94eTo6cGxhdGZvcm1HZXRMYXVuY2hPcHRpb25zKToKKyAgICAgICAg
KiBVSVByb2Nlc3MvTmV0d29yay9zb3VwL05ldHdvcmtQcm9jZXNzUHJveHlTb3VwLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NQcm94eTo6cGxhdGZvcm1HZXRMYXVuY2hPcHRp
b25zKToKKyAgICAgICAgKiBVSVByb2Nlc3MvUHJvY2Vzc01vZGVsLmg6IFJlbW92ZWQuCisgICAg
ICAgICogVUlQcm9jZXNzL1dlYkNvb2tpZU1hbmFnZXJQcm94eS5jcHA6CisgICAgICAgIChXZWJL
aXQ6OldlYkNvb2tpZU1hbmFnZXJQcm94eTo6c2hvdWxkVGVybWluYXRlKToKKyAgICAgICAgKFdl
YktpdDo6V2ViQ29va2llTWFuYWdlclByb3h5OjpyZWZXZWJDb250ZXh0U3VwcGxlbWVudCk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYkNvb2tpZU1hbmFnZXJQcm94eTo6c2V0SFRUUENvb2tpZUFjY2Vw
dFBvbGljeSk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvb2tpZU1hbmFnZXJQcm94eTo6Z2V0SFRU
UENvb2tpZUFjY2VwdFBvbGljeSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkluc3BlY3RvclBy
b3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yUHJveHk6Omluc3BlY3RvclBy
b2Nlc3NQb29sKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpXZWJQYWdlUHJveHkpOgorICAgICAgICAoV2ViS2l0
OjpXZWJQYWdlUHJveHk6OnJlYXR0YWNoVG9XZWJQcm9jZXNzKToKKyAgICAgICAgKFdlYktpdDo6
V2ViUGFnZVByb3h5OjpzZXRTZXNzaW9uSUQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJv
eHk6OmluaXRpYWxpemVXZWJQYWdlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Bv
b2wuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6Y3JlYXRlKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OldlYlByb2Nlc3NQb29sKToKKyAgICAgICAgKFdl
YktpdDo6V2ViUHJvY2Vzc1Bvb2w6On5XZWJQcm9jZXNzUG9vbCk6CisgICAgICAgIChXZWJLaXQ6
OldlYlByb2Nlc3NQb29sOjppbml0aWFsaXplQ2xpZW50KToKKyAgICAgICAgKFdlYktpdDo6V2Vi
UHJvY2Vzc1Bvb2w6OnNldERvd25sb2FkQ2xpZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJv
Y2Vzc1Bvb2w6OnNldE1heGltdW1OdW1iZXJPZlByb2Nlc3Nlcyk6CisgICAgICAgIChXZWJLaXQ6
OldlYlByb2Nlc3NQb29sOjpuZXR3b3JraW5nUHJvY2Vzc0Nvbm5lY3Rpb24pOgorICAgICAgICAo
V2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6bGFuZ3VhZ2VDaGFuZ2VkKToKKyAgICAgICAgKFdlYktp
dDo6V2ViUHJvY2Vzc1Bvb2w6OnRleHRDaGVja2VyU3RhdGVDaGFuZ2VkKToKKyAgICAgICAgKFdl
YktpdDo6V2ViUHJvY2Vzc1Bvb2w6OmVuc3VyZU5ldHdvcmtQcm9jZXNzKToKKyAgICAgICAgKFdl
YktpdDo6V2ViUHJvY2Vzc1Bvb2w6OmdldE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbik6CisgICAg
ICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjplbnN1cmVEYXRhYmFzZVByb2Nlc3MpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6c2V0QW55UGFnZUdyb3VwTWlnaHRIYXZlUHJp
dmF0ZUJyb3dzaW5nRW5hYmxlZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpw
cm9jZXNzRGlkQ2FjaGVQYWdlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OmNy
ZWF0ZU5ld1dlYlByb2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6ZGlz
Y29ubmVjdFByb2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6Y3JlYXRl
V2ViUGFnZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpkb3dubG9hZCk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpyZXN1bWVEb3dubG9hZCk6CisgICAgICAg
IChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpwb3N0TWVzc2FnZVRvSW5qZWN0ZWRCdW5kbGUpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6c2V0QWRkaXRpb25hbFBsdWdpbnNEaXJl
Y3RvcnkpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6bmV0d29ya1Byb2Nlc3NJ
ZGVudGlmaWVyKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnNldEFsd2F5c1Vz
ZXNDb21wbGV4VGV4dENvZGVQYXRoKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6
OnNldENhbkhhbmRsZUhUVFBTU2VydmVyVHJ1c3RFdmFsdWF0aW9uKToKKyAgICAgICAgKFdlYktp
dDo6V2ViUHJvY2Vzc1Bvb2w6OnJlZ2lzdGVyVVJMU2NoZW1lQXNMb2NhbCk6CisgICAgICAgIChX
ZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpzZXRDYWNoZU1vZGVsKToKKyAgICAgICAgKFdlYktpdDo6
V2ViUHJvY2Vzc1Bvb2w6OnNldERlZmF1bHRSZXF1ZXN0VGltZW91dEludGVydmFsKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OmNyZWF0ZURvd25sb2FkUHJveHkpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6YWRkTWVzc2FnZVJlY2VpdmVyKToKKyAgICAgICAg
KFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnVzZVRlc3RpbmdOZXR3b3JrU2Vzc2lvbik6CisgICAg
ICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjphbGxvd1NwZWNpZmljSFRUUFNDZXJ0aWZpY2F0
ZUZvckhvc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6cmVxdWVzdFdlYkNv
bnRlbnRTdGF0aXN0aWNzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnJlcXVl
c3ROZXR3b3JraW5nU3RhdGlzdGljcyk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29s
OjpoYW5kbGVNZXNzYWdlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnNldFBy
b2Nlc3NNb2RlbCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpz
ZXRVc2VzTmV0d29ya1Byb2Nlc3MpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9j
ZXNzUG9vbDo6dXNlc05ldHdvcmtQcm9jZXNzKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6
V2ViUHJvY2Vzc1Bvb2w6OmVuc3VyZVNoYXJlZFdlYlByb2Nlc3MpOiBEZWxldGVkLgorICAgICAg
ICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9j
ZXNzUG9vbDo6c2VuZFRvTmV0d29ya2luZ1Byb2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
cm9jZXNzUG9vbDo6c2VuZFRvTmV0d29ya2luZ1Byb2Nlc3NSZWxhdW5jaGluZ0lmTmVjZXNzYXJ5
KToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnNlbmRUb0FsbFByb2Nlc3Nlc1Jl
bGF1bmNoaW5nVGhlbUlmTmVjZXNzYXJ5KToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bv
b2w6OnNlbmRUb09uZVByb2Nlc3MpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUHJv
eHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OnJlbW92ZVdlYlBhZ2Up
OgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OmdldFBsdWdpblByb2Nlc3NDb25u
ZWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5OjpnZXROZXR3b3JrUHJv
Y2Vzc0Nvbm5lY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OmdldERh
dGFiYXNlUHJvY2Vzc0Nvbm5lY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJv
eHk6OnVwZGF0ZVRleHRDaGVja2VyU3RhdGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNz
UHJveHk6OmRpZFNhdmVUb1BhZ2VDYWNoZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQ
cm94eTo6ZGlkQ2FuY2VsUHJvY2Vzc1N1c3BlbnNpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
cm9jZXNzUHJveHk6OnJlaW5zdGF0ZU5ldHdvcmtQcm9jZXNzQXNzZXJ0aW9uU3RhdGUpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OmRpZFNldEFzc2VydGlvblN0YXRlKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5OjpjcmVhdGVEb3dubG9hZFByb3h5KTogRGVs
ZXRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5Lmg6CisgICAgICAgIChX
ZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6dGhyb3R0bGVyKToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
V2ViUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJzaXRl
RGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFT
dG9yZTo6fldlYnNpdGVEYXRhU3RvcmUpOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0
b3JlOjpjbG9uZVNlc3Npb25EYXRhKToKKyAgICAgICAgKiBVSVByb2Nlc3MvZ3RrL1dlYlByb2Nl
c3NQb29sR3RrLmNwcDoKKyAgICAgICAgKFdlYktpdDo6aW5pdEluc3BlY3RvclNlcnZlcik6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpwbGF0Zm9ybUluaXRpYWxpemVXZWJQcm9j
ZXNzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnNldElnbm9yZVRMU0Vycm9y
cyk6CisgICAgICAgICogVUlQcm9jZXNzL3NvdXAvV2ViUHJvY2Vzc1Bvb2xTb3VwLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnBsYXRmb3JtSW5pdGlhbGl6ZU5ldHdvcmtQ
cm9jZXNzKToKKyAgICAgICAgKiBXZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6Cisg
ICAgICAgICogV2ViS2l0MlByZWZpeC5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvRmlsZUFQSS9C
bG9iUmVnaXN0cnlQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OkJsb2JSZWdpc3RyeVByb3h5
OjpyZWdpc3RlckZpbGVCbG9iVVJMKToKKyAgICAgICAgKFdlYktpdDo6QmxvYlJlZ2lzdHJ5UHJv
eHk6OnJlZ2lzdGVyQmxvYlVSTCk6CisgICAgICAgIChXZWJLaXQ6OkJsb2JSZWdpc3RyeVByb3h5
Ojp1bnJlZ2lzdGVyQmxvYlVSTCk6CisgICAgICAgIChXZWJLaXQ6OkJsb2JSZWdpc3RyeVByb3h5
OjpyZWdpc3RlckJsb2JVUkxGb3JTbGljZSk6CisgICAgICAgIChXZWJLaXQ6OkJsb2JSZWdpc3Ry
eVByb3h5OjpibG9iU2l6ZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9GaWxlQVBJL0Jsb2JSZWdp
c3RyeVByb3h5Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNz
Q29ubmVjdGlvbi5jcHA6CisgICAgICAgICogV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9j
ZXNzQ29ubmVjdGlvbi5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJv
Y2Vzc0Nvbm5lY3Rpb24ubWVzc2FnZXMuaW46CisgICAgICAgICogV2ViUHJvY2Vzcy9OZXR3b3Jr
L1dlYlJlc291cmNlTG9hZFNjaGVkdWxlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291
cmNlTG9hZFNjaGVkdWxlcjo6bmV0d29ya1Byb2Nlc3NDcmFzaGVkKToKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVyLmg6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL05l
dHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIubWVzc2FnZXMuaW46CisgICAgICAgICogV2ViUHJvY2Vz
cy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlQnJvd3NlckZ1bmNzLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6aW5pdGlhbGl6ZUJyb3dzZXJGdW5jcyk6CisgICAgICAgIChXZWJLaXQ6Om5ldHNjYXBl
QnJvd3NlckZ1bmNzKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0
c2NhcGVQbHVnaW4uY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXRzY2FwZVBsdWdpbjo6cmVnaXN0
ZXJSZWRpcmVjdCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHNjYXBlUGx1Z2luOjp1cmxSZWRpcmVj
dFJlc3BvbnNlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRm
b3JtU3RyYXRlZ2llcy5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBsYXRmb3JtU3RyYXRlZ2ll
czo6Y29va2llc0ZvckRPTSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBsYXRmb3JtU3RyYXRlZ2ll
czo6c2V0Q29va2llc0Zyb21ET00pOgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF0Zm9ybVN0cmF0
ZWdpZXM6OmNvb2tpZXNFbmFibGVkKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGxhdGZvcm1TdHJh
dGVnaWVzOjpjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZSk6CisgICAgICAgIChXZWJLaXQ6
OldlYlBsYXRmb3JtU3RyYXRlZ2llczo6Z2V0UmF3Q29va2llcyk6CisgICAgICAgIChXZWJLaXQ6
OldlYlBsYXRmb3JtU3RyYXRlZ2llczo6ZGVsZXRlQ29va2llKToKKyAgICAgICAgKFdlYktpdDo6
V2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpyZXNvdXJjZUxvYWRTY2hlZHVsZXIpOgorICAgICAgICAo
V2ViS2l0OjpXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkp
OgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNyZWF0ZVBpbmdIYW5k
bGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNyZWF0ZUJsb2JS
ZWdpc3RyeSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9y
bVN0cmF0ZWdpZXMuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZTo6c3RhcnREb3dubG9hZCk6CisgICAgICAgIChX
ZWJLaXQ6OldlYkZyYW1lOjpjb252ZXJ0TWFpblJlc291cmNlTG9hZFRvRG93bmxvYWQpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJGcmFtZTo6c291cmNlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dl
YlByb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpXZWJQcm9jZXNzKToK
KyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6aW5pdGlhbGl6ZUNvbm5lY3Rpb24pOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjppbml0aWFsaXplV2ViUHJvY2Vzcyk6CisgICAgICAg
IChXZWJLaXQ6OldlYlByb2Nlc3M6OmVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbik6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OnJlZ2lzdGVyVVJMU2NoZW1lQXNFbXB0eURvY3Vt
ZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6ZGVzdHJveVByaXZhdGVCcm93c2lu
Z1Nlc3Npb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpwbHVnaW5Qcm9jZXNzQ29u
bmVjdGlvbk1hbmFnZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpzaG91bGRUZXJt
aW5hdGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpzZXRJbmplY3RlZEJ1bmRsZVBh
cmFtZXRlcnMpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpuZXR3b3JrQ29ubmVjdGlv
bik6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OndlYlJlc291cmNlTG9hZFNjaGVkdWxl
cik6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OndlYlRvRGF0YWJhc2VQcm9jZXNzQ29u
bmVjdGlvbkNsb3NlZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OnNldEVuaGFuY2Vk
QWNjZXNzaWJpbGl0eSk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OnByZWZldGNoRE5T
KToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6ZGlkQ3JlYXRlRG93bmxvYWQpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpkaWREZXN0cm95RG93bmxvYWQpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpkb3dubG9hZFByb3h5Q29ubmVj
dGlvbik6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OmRvd25sb2Fkc0F1
dGhlbnRpY2F0aW9uTWFuYWdlcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nl
c3M6OmRvd25sb2FkTWFuYWdlcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nl
c3M6OnVzZXNOZXR3b3JrUHJvY2Vzcyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlBy
b2Nlc3M6OmRvd25sb2FkUmVxdWVzdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlBy
b2Nlc3M6OnJlc3VtZURvd25sb2FkKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViUHJv
Y2Vzczo6Y2FuY2VsRG93bmxvYWQpOiBEZWxldGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvV2Vi
UHJvY2Vzcy5oOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjp0ZXh0Q2hlY2tlclN0YXRl
KToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6ZXZlbnREaXNwYXRjaGVyKToKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMuaW46CisgICAgICAgICogV2ViUHJv
Y2Vzcy9zb3VwL1dlYlByb2Nlc3NTb3VwLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vz
czo6cGxhdGZvcm1TZXRDYWNoZU1vZGVsKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6
cGxhdGZvcm1DbGVhclJlc291cmNlQ2FjaGVzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vz
czo6cGxhdGZvcm1Jbml0aWFsaXplV2ViUHJvY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBy
b2Nlc3M6OnBsYXRmb3JtVGVybWluYXRlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6
c2V0SWdub3JlVExTRXJyb3JzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6YWxsb3dT
cGVjaWZpY0hUVFBTQ2VydGlmaWNhdGVGb3JIb3N0KToKKyAgICAgICAgKFdlYktpdDo6Z2V0Q2Fj
aGVEaXNrRnJlZVNpemUpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpzZXRTb3VwU2Vzc2lv
bkFjY2VwdExhbmd1YWdlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6bGFuZ3VhZ2VDaGFu
Z2VkKTogRGVsZXRlZC4KKyAgICAgICAgKiBjb25maWcuaDoKKwogMjAxNS0xMS0xOSAgQ29tbWl0
IFF1ZXVlICA8Y29tbWl0LXF1ZXVlQHdlYmtpdC5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCwg
cm9sbGluZyBvdXQgcjE5MjY2NyBhbmQgcjE5MjY2OC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL05ldHdvcmtQcm9jZXNzL0VudHJ5UG9pbnQvbWFjL0xlZ2FjeVByb2Nlc3MvTmV0d29ya1By
b2Nlc3NNYWluLm1tIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvRW50cnlQb2ludC9t
YWMvTGVnYWN5UHJvY2Vzcy9OZXR3b3JrUHJvY2Vzc01haW4ubW0KaW5kZXggODdiOWU0MC4uNDAz
ZmVhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvRW50cnlQb2lu
dC9tYWMvTGVnYWN5UHJvY2Vzcy9OZXR3b3JrUHJvY2Vzc01haW4ubW0KKysrIGIvU291cmNlL1dl
YktpdDIvTmV0d29ya1Byb2Nlc3MvRW50cnlQb2ludC9tYWMvTGVnYWN5UHJvY2Vzcy9OZXR3b3Jr
UHJvY2Vzc01haW4ubW0KQEAgLTI1LDggKzI1LDYgQEAKIAogI2ltcG9ydCAiY29uZmlnLmgiCiAK
LSNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQotCiAjaW1wb3J0ICJDaGlsZFByb2Nlc3NFbnRy
eVBvaW50LmgiCiAjaW1wb3J0ICJOZXR3b3JrUHJvY2Vzcy5oIgogI2ltcG9ydCAiV0tCYXNlLmgi
CkBAIC0zOSw1ICszNywzIEBAIGludCBOZXR3b3JrUHJvY2Vzc01haW4oaW50IGFyZ2MsIGNoYXIq
KiBhcmd2KQogewogICAgIHJldHVybiBDaGlsZFByb2Nlc3NNYWluPE5ldHdvcmtQcm9jZXNzLCBD
aGlsZFByb2Nlc3NNYWluRGVsZWdhdGU+KGFyZ2MsIGFyZ3YpOwogfQotCi0jZW5kaWYgLy8gRU5B
QkxFKE5FVFdPUktfUFJPQ0VTUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQ
cm9jZXNzL0VudHJ5UG9pbnQvbWFjL1hQQ1NlcnZpY2UvTmV0d29ya1NlcnZpY2VFbnRyeVBvaW50
Lm1tIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvRW50cnlQb2ludC9tYWMvWFBDU2Vy
dmljZS9OZXR3b3JrU2VydmljZUVudHJ5UG9pbnQubW0KaW5kZXggNDFmYjQ0ZS4uNzI1MTAzNSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvRW50cnlQb2ludC9tYWMv
WFBDU2VydmljZS9OZXR3b3JrU2VydmljZUVudHJ5UG9pbnQubW0KKysrIGIvU291cmNlL1dlYktp
dDIvTmV0d29ya1Byb2Nlc3MvRW50cnlQb2ludC9tYWMvWFBDU2VydmljZS9OZXR3b3JrU2Vydmlj
ZUVudHJ5UG9pbnQubW0KQEAgLTUyLDcgKzUyLDYgQEAgZXh0ZXJuICJDIiBXS19FWFBPUlQgdm9p
ZCBOZXR3b3JrU2VydmljZUluaXRpYWxpemVyKHhwY19jb25uZWN0aW9uX3QgY29ubmVjdGlvbiwK
IAogdm9pZCBOZXR3b3JrU2VydmljZUluaXRpYWxpemVyKHhwY19jb25uZWN0aW9uX3QgY29ubmVj
dGlvbiwgeHBjX29iamVjdF90IGluaXRpYWxpemVyTWVzc2FnZSkKIHsKLSNpZiBFTkFCTEUoTkVU
V09SS19QUk9DRVNTKQogICAgIC8vIFJlbW92ZSB0aGUgU2VjSXRlbVNoaW0gZnJvbSB0aGUgRFlM
RF9JTlNFUlRfTElCUkFSSUVTIGVudmlyb25tZW50IHZhcmlhYmxlIHNvIGFueSBwcm9jZXNzZXMg
c3Bhd25lZCBieQogICAgIC8vIHRoZSB0aGlzIHByb2Nlc3MgZG9uJ3QgdHJ5IHRvIGluc2VydCB0
aGUgc2hpbSBhbmQgY3Jhc2guCiAgICAgRW52aXJvbm1lbnRVdGlsaXRpZXM6OnN0cmlwVmFsdWVz
RW5kaW5nV2l0aFN0cmluZygiRFlMRF9JTlNFUlRfTElCUkFSSUVTIiwgIi9TZWNJdGVtU2hpbS5k
eWxpYiIpOwpAQCAtNjksNSArNjgsNCBAQCB2b2lkIE5ldHdvcmtTZXJ2aWNlSW5pdGlhbGl6ZXIo
eHBjX2Nvbm5lY3Rpb25fdCBjb25uZWN0aW9uLCB4cGNfb2JqZWN0X3QgaW5pdGlhbAogI2lmIEhB
VkUoT1NfQUNUSVZJVFkpCiAgICAgb3NfYWN0aXZpdHlfZW5kKGFjdGl2aXR5KTsKICNlbmRpZgot
I2VuZGlmCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9GaWxl
QVBJL05ldHdvcmtCbG9iUmVnaXN0cnkuY3BwIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nl
c3MvRmlsZUFQSS9OZXR3b3JrQmxvYlJlZ2lzdHJ5LmNwcAppbmRleCBjYjE5N2NlLi4zYTZmNDUy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9GaWxlQVBJL05ldHdv
cmtCbG9iUmVnaXN0cnkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL0Zp
bGVBUEkvTmV0d29ya0Jsb2JSZWdpc3RyeS5jcHAKQEAgLTI2LDggKzI2LDYgQEAKICNpbmNsdWRl
ICJjb25maWcuaCIKICNpbmNsdWRlICJOZXR3b3JrQmxvYlJlZ2lzdHJ5LmgiCiAKLSNpZiBFTkFC
TEUoTkVUV09SS19QUk9DRVNTKQotCiAjaW5jbHVkZSAiQmxvYkRhdGFGaWxlUmVmZXJlbmNlV2l0
aFNhbmRib3hFeHRlbnNpb24uaCIKICNpbmNsdWRlICJTYW5kYm94RXh0ZW5zaW9uLmgiCiAjaW5j
bHVkZSA8V2ViQ29yZS9CbG9iUGFydC5oPgpAQCAtMTUxLDUgKzE0OSwzIEBAIFZlY3RvcjxSZWZQ
dHI8QmxvYkRhdGFGaWxlUmVmZXJlbmNlPj4gTmV0d29ya0Jsb2JSZWdpc3RyeTo6ZmlsZXNJbkJs
b2IoTmV0d29ya0NvCiB9CiAKIH0KLQotI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9OZXR3b3JrUHJvY2Vzcy9GaWxlQVBJL05ldHdvcmtCbG9iUmVnaXN0cnkuaCBiL1NvdXJjZS9X
ZWJLaXQyL05ldHdvcmtQcm9jZXNzL0ZpbGVBUEkvTmV0d29ya0Jsb2JSZWdpc3RyeS5oCmluZGV4
IDE2ZmRjZWUuLmE3Mjk1NzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9j
ZXNzL0ZpbGVBUEkvTmV0d29ya0Jsb2JSZWdpc3RyeS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL05l
dHdvcmtQcm9jZXNzL0ZpbGVBUEkvTmV0d29ya0Jsb2JSZWdpc3RyeS5oCkBAIC0yNiw4ICsyNiw2
IEBACiAjaWZuZGVmIE5ldHdvcmtCbG9iUmVnaXN0cnlfaAogI2RlZmluZSBOZXR3b3JrQmxvYlJl
Z2lzdHJ5X2gKIAotI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCi0KICNpbmNsdWRlIDxXZWJD
b3JlL1VSTEhhc2guaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9I
YXNoU2V0Lmg+CkBAIC02OCw2ICs2Niw0IEBAIHByaXZhdGU6CiAKIH0KIAotI2VuZGlmIC8vIEVO
QUJMRShORVRXT1JLX1BST0NFU1MpCi0KICNlbmRpZiAvLyBOZXR3b3JrQmxvYlJlZ2lzdHJ5X2gK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAppbmRleCBjODJlM2YwLi5hNjQ1MzhjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCkBAIC0yNiw4ICsyNiw2IEBACiAjaW5jbHVkZSAi
Y29uZmlnLmgiCiAjaW5jbHVkZSAiTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaCIKIAot
I2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCi0KICNpbmNsdWRlICJOZXR3b3JrQmxvYlJlZ2lz
dHJ5LmgiCiAjaW5jbHVkZSAiTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3NNZXNzYWdlcy5o
IgogI2luY2x1ZGUgIk5ldHdvcmtMb2FkLmgiCkBAIC0yNzQsNSArMjcyLDMgQEAgdm9pZCBOZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6YmxvYlNpemUoY29uc3QgVVJMJiB1cmwsIHVpbnQ2
NF90JiByZXN1bHRTaXoKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KLSNlbmRpZiAvLyBF
TkFCTEUoTkVUV09SS19QUk9DRVNTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQy
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKaW5kZXggMGZj
YTVjZS4uZTQ1NWJjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCkBAIC0yNiw4ICsyNiw2
IEBACiAjaWZuZGVmIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzX2gKICNkZWZpbmUgTmV0
d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3NfaAogCi0jaWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VT
UykKLQogI2luY2x1ZGUgIkJsb2NraW5nUmVzcG9uc2VNYXAuaCIKICNpbmNsdWRlICJDb25uZWN0
aW9uLmgiCiAjaW5jbHVkZSAiTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3NNZXNzYWdlcy5o
IgpAQCAtMTAyLDYgKzEwMCw0IEBAIHByaXZhdGU6CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAog
Ci0jZW5kaWYgLy8gRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKLQogI2VuZGlmIC8vIE5ldHdvcmtD
b25uZWN0aW9uVG9XZWJQcm9jZXNzX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL05ldHdv
cmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluIGIvU291
cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mu
bWVzc2FnZXMuaW4KaW5kZXggN2NlMzk3MS4uYWM3NzBkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2Fn
ZXMuaW4KKysrIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KQEAgLTIwLDggKzIwLDYgQEAKICMgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKICMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KIAotI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1Mp
Ci0KIG1lc3NhZ2VzIC0+IE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzIExlZ2FjeVJlY2Vp
dmVyIHsKIAogICAgIFNjaGVkdWxlUmVzb3VyY2VMb2FkKFdlYktpdDo6TmV0d29ya1Jlc291cmNl
TG9hZFBhcmFtZXRlcnMgcmVzb3VyY2VMb2FkUGFyYW1ldGVycykKQEAgLTQ4LDUgKzQ2LDMgQEAg
bWVzc2FnZXMgLT4gTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MgTGVnYWN5UmVjZWl2ZXIg
ewogICAgIFVucmVnaXN0ZXJCbG9iVVJMKFdlYkNvcmU6OlVSTCB1cmwpCiAgICAgQmxvYlNpemUo
V2ViQ29yZTo6VVJMIHVybCkgLT4gKHVpbnQ2NF90IHJlc3VsdFNpemUpCiB9Ci0KLSNlbmRpZiAv
LyBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQuY3BwIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya0xvYWQuY3BwCmluZGV4IGM5ODgxYjcuLmM4ZGY2NzIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZC5jcHAKQEAgLTI0LDggKzI0LDYgQEAK
ICAqLwogCiAjaW5jbHVkZSAiY29uZmlnLmgiCi0KLSNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNT
KQogI2luY2x1ZGUgIk5ldHdvcmtMb2FkLmgiCiAKICNpbmNsdWRlICJBdXRoZW50aWNhdGlvbk1h
bmFnZXIuaCIKQEAgLTM3MSw1ICszNjksMyBAQCB2b2lkIE5ldHdvcmtMb2FkOjpyZWNlaXZlZENh
bmNlbGxhdGlvbihSZXNvdXJjZUhhbmRsZSogaGFuZGxlLCBjb25zdCBBdXRoZW50aWNhdAogI2Vu
ZGlmIC8vICFVU0UoTkVUV09SS19TRVNTSU9OKQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQot
I2VuZGlmIC8vIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZC5oIGIvU291cmNlL1dlYktpdDIvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya0xvYWQuaAppbmRleCA5YjdkMTNmLi5lYzFiMjRlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZC5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkLmgKQEAgLTI2LDggKzI2LDYgQEAK
ICNpZm5kZWYgTmV0d29ya0xvYWRfaAogI2RlZmluZSBOZXR3b3JrTG9hZF9oCiAKLSNpZiBFTkFC
TEUoTkVUV09SS19QUk9DRVNTKQotCiAjaW5jbHVkZSAiTmV0d29ya0xvYWRDbGllbnQuaCIKICNp
bmNsdWRlICJOZXR3b3JrTG9hZFBhcmFtZXRlcnMuaCIKICNpbmNsdWRlICJSZW1vdGVOZXR3b3Jr
aW5nQ29udGV4dC5oIgpAQCAtMTI2LDYgKzEyNCw0IEBAIHByaXZhdGU6CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYktpdAogCi0jZW5kaWYgLy8gRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKLQogI2VuZGlm
IC8vIE5ldHdvcmtMb2FkX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtMb2FkQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrTG9hZENsaWVudC5oCmluZGV4IGJhNDg2YjcuLmI0NWQ0MDIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkQ2xpZW50LmgKKysrIGIvU291
cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRDbGllbnQuaApAQCAtMjYsOCAr
MjYsNiBAQAogI2lmbmRlZiBOZXR3b3JrTG9hZENsaWVudF9oCiAjZGVmaW5lIE5ldHdvcmtMb2Fk
Q2xpZW50X2gKIAotI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCi0KICNpbmNsdWRlIDxXZWJD
b3JlL1Jlc291cmNlRXJyb3IuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlUmVxdWVzdC5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VSZXNwb25zZS5oPgpAQCAtNjYsNyArNjQsNSBA
QCBwdWJsaWM6CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCi0jZW5kaWYgLy8gRU5BQkxFKE5F
VFdPUktfUFJPQ0VTUykKLQogI2VuZGlmIC8vIE5ldHdvcmtMb2FkQ2xpZW50X2gKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRQYXJhbWV0ZXJz
LmNwcCBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkUGFyYW1ldGVy
cy5jcHAKaW5kZXggZDBiN2IxMS4uY2M4NDg3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRQYXJhbWV0ZXJzLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZFBhcmFtZXRlcnMuY3BwCkBAIC0yNCw4ICsy
NCw2IEBACiAgKi8KIAogI2luY2x1ZGUgImNvbmZpZy5oIgotCi0jaWYgRU5BQkxFKE5FVFdPUktf
UFJPQ0VTUykKICNpbmNsdWRlICJOZXR3b3JrTG9hZFBhcmFtZXRlcnMuaCIKIAogI2luY2x1ZGUg
Ik5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmgiCkBAIC00Nyw1ICs0NSwzIEBAIE5ldHdv
cmtMb2FkUGFyYW1ldGVyczo6TmV0d29ya0xvYWRQYXJhbWV0ZXJzKGNvbnN0IE5ldHdvcmtSZXNv
dXJjZUxvYWRQYXJhbWV0ZXJzCiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAotCi0jZW5kaWYg
Ly8gRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL05l
dHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkUGFyYW1ldGVycy5oIGIvU291cmNlL1dlYktpdDIvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRQYXJhbWV0ZXJzLmgKaW5kZXggN2NiMzc2Mi4uMTMwYWFh
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRQ
YXJhbWV0ZXJzLmgKKysrIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xv
YWRQYXJhbWV0ZXJzLmgKQEAgLTI2LDggKzI2LDYgQEAKICNpZm5kZWYgTmV0d29ya0xvYWRQYXJh
bWV0ZXJzX2gKICNkZWZpbmUgTmV0d29ya0xvYWRQYXJhbWV0ZXJzX2gKIAotI2lmIEVOQUJMRShO
RVRXT1JLX1BST0NFU1MpCi0KICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlTG9hZGVyT3B0aW9u
cy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VSZXF1ZXN0Lmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9TZXNzaW9uSUQuaD4KQEAgLTU1LDYgKzUzLDQgQEAgcHVibGljOgogCiB9IC8vIG5hbWVz
cGFjZSBXZWJLaXQKIAotI2VuZGlmIC8vIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCi0KICNlbmRp
ZiAvLyBOZXR3b3JrTG9hZFBhcmFtZXRlcnNfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdDIvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCmluZGV4IDY4NGEyZTcuLmRiNzBlYjAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKQEAg
LTI2LDggKzI2LDYgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJOZXR3b3JrUHJv
Y2Vzcy5oIgogCi0jaWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKLQogI2luY2x1ZGUgIkFyZ3Vt
ZW50Q29kZXJzLmgiCiAjaW5jbHVkZSAiQXR0YWNobWVudC5oIgogI2luY2x1ZGUgIkF1dGhlbnRp
Y2F0aW9uTWFuYWdlci5oIgpAQCAtNTU0LDUgKzU1MiwzIEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6
OnBsYXRmb3JtTG93TWVtb3J5SGFuZGxlcihDcml0aWNhbCkKICNlbmRpZgogCiB9IC8vIG5hbWVz
cGFjZSBXZWJLaXQKLQotI2VuZGlmIC8vIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oIGIvU291
cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaAppbmRleCAyMzA3MGQx
Li44ZGM4YTYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtQ
cm9jZXNzLmgKQEAgLTI2LDggKzI2LDYgQEAKICNpZm5kZWYgTmV0d29ya1Byb2Nlc3NfaAogI2Rl
ZmluZSBOZXR3b3JrUHJvY2Vzc19oCiAKLSNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQotCiAj
aW5jbHVkZSAiQ2FjaGVNb2RlbC5oIgogI2luY2x1ZGUgIkNoaWxkUHJvY2Vzcy5oIgogI2luY2x1
ZGUgIkRvd25sb2FkTWFuYWdlci5oIgpAQCAtMTk3LDYgKzE5NSw0IEBAIHByaXZhdGU6CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYktpdAogCi0jZW5kaWYgLy8gRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykK
LQogI2VuZGlmIC8vIE5ldHdvcmtQcm9jZXNzX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktp
dDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4KaW5kZXggM2JmMjlj
Zi4uMDE3YTI4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4KQEAgLTIwLDggKzIwLDYgQEAKICMgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKICMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KIAotI2lmIEVOQUJMRShORVRXT1JLX1BST0NF
U1MpCi0KIG1lc3NhZ2VzIC0+IE5ldHdvcmtQcm9jZXNzIExlZ2FjeVJlY2VpdmVyIHsKICAgICAj
IEluaXRpYWxpemVzIHRoZSBuZXR3b3JrIHByb2Nlc3MuCiAgICAgSW5pdGlhbGl6ZU5ldHdvcmtQ
cm9jZXNzKHN0cnVjdCBXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzIHBy
b2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMpCkBAIC02Myw1ICs2MSwzIEBAIG1lc3NhZ2VzIC0+IE5l
dHdvcmtQcm9jZXNzIExlZ2FjeVJlY2VpdmVyIHsKICAgICBDYW5jZWxQcmVwYXJlVG9TdXNwZW5k
KCkKICAgICBQcm9jZXNzRGlkUmVzdW1lKCkKIH0KLQotI2VuZGlmIC8vIEVOQUJMRShORVRXT1JL
X1BST0NFU1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrUmVzb3VyY2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1Jlc291cmNlTG9hZGVyLmNwcAppbmRleCAzMjUyMTYzLi45MDgyZTM4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRl
ci5jcHAKQEAgLTI2LDggKzI2LDYgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJO
ZXR3b3JrUmVzb3VyY2VMb2FkZXIuaCIKIAotI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCi0K
ICNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1
ZGUgIk5ldHdvcmtCbG9iUmVnaXN0cnkuaCIKQEAgLTU4MSw1ICs1NzksMyBAQCB2b2lkIE5ldHdv
cmtSZXNvdXJjZUxvYWRlcjo6Y29udGludWVDYW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlv
blNwYWNlKGJvb2wgcgogI2VuZGlmCiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAotCi0jZW5kaWYg
Ly8gRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL05l
dHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5oIGIvU291cmNlL1dlYktpdDIvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmgKaW5kZXggYWU4Y2FjMi4uYmYxMzY4
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291
cmNlTG9hZGVyLmgKKysrIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jl
c291cmNlTG9hZGVyLmgKQEAgLTI2LDggKzI2LDYgQEAKICNpZm5kZWYgTmV0d29ya1Jlc291cmNl
TG9hZGVyX2gKICNkZWZpbmUgTmV0d29ya1Jlc291cmNlTG9hZGVyX2gKIAotI2lmIEVOQUJMRShO
RVRXT1JLX1BST0NFU1MpCi0KICNpbmNsdWRlICJNZXNzYWdlU2VuZGVyLmgiCiAjaW5jbHVkZSAi
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3NNZXNzYWdlcy5oIgogI2luY2x1ZGUgIk5ldHdv
cmtMb2FkQ2xpZW50LmgiCkBAIC0xNjksNiArMTY3LDQgQEAgcHJpdmF0ZToKIAogfSAvLyBuYW1l
c3BhY2UgV2ViS2l0CiAKLSNlbmRpZiAvLyBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQotCiAjZW5k
aWYgLy8gTmV0d29ya1Jlc291cmNlTG9hZGVyX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5tZXNzYWdlcy5pbiBiL1NvdXJj
ZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5tZXNzYWdlcy5p
bgppbmRleCA3OWEzNWFmLi5lYmI4ZDdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIubWVzc2FnZXMuaW4KKysrIGIvU291cmNl
L1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLm1lc3NhZ2VzLmlu
CkBAIC0yMCw4ICsyMCw2IEBACiAjIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCiAjIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CiAKLSNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQotCiBtZXNzYWdlcyAtPiBOZXR3b3JrUmVz
b3VyY2VMb2FkZXIgTGVnYWN5UmVjZWl2ZXIgewogCiAgICAgQ29udGludWVXaWxsU2VuZFJlcXVl
c3QoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QpCkBAIC0zMCw1ICsyOCwzIEBAIG1l
c3NhZ2VzIC0+IE5ldHdvcmtSZXNvdXJjZUxvYWRlciBMZWdhY3lSZWNlaXZlciB7CiAgICAgQ29u
dGludWVDYW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNwYWNlKGJvb2wgY2FuQXV0aGVu
dGljYXRlKQogI2VuZGlmCiB9Ci0KLSNlbmRpZiAvLyBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1By
b2Nlc3NDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdv
cmtQcm9jZXNzQ29jb2EubW0KaW5kZXggNWQ1NWNlYS4uM2FiY2Y2OSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Byb2Nlc3NDb2NvYS5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrUHJvY2Vzc0Nv
Y29hLm1tCkBAIC0yNiw4ICsyNiw2IEBACiAjaW1wb3J0ICJjb25maWcuaCIKICNpbXBvcnQgIk5l
dHdvcmtQcm9jZXNzLmgiCiAKLSNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQotCiAjaW1wb3J0
ICJOZXR3b3JrQ2FjaGUuaCIKICNpbXBvcnQgIk5ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0
ZXJzLmgiCiAjaW1wb3J0ICJOZXR3b3JrUmVzb3VyY2VMb2FkZXIuaCIKQEAgLTI2Nyw1ICsyNjUs
MyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpjbGVhckRpc2tDYWNoZShzdGQ6OmNocm9ubzo6c3lz
dGVtX2Nsb2NrOjp0aW1lX3BvaW50IG1vZGlmaQogfQogCiB9Ci0KLSNlbmRpZgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvZWZsL05ldHdvcmtQcm9jZXNzTWFpbkVm
bC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9lZmwvTmV0d29ya1Byb2Nlc3NN
YWluRWZsLmNwcAppbmRleCA0NGUyMmVhLi40MzJjMTJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9OZXR3b3JrUHJvY2Vzcy9lZmwvTmV0d29ya1Byb2Nlc3NNYWluRWZsLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9lZmwvTmV0d29ya1Byb2Nlc3NNYWluRWZsLmNw
cApAQCAtMjcsOCArMjcsNiBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIk5ldHdv
cmtQcm9jZXNzTWFpblVuaXguaCIKIAotI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCi0KICNp
bmNsdWRlICJDaGlsZFByb2Nlc3NNYWluLmgiCiAjaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3MuaCIK
ICNpbmNsdWRlIDxFY29yZS5oPgpAQCAtNzAsNSArNjgsMyBAQCBpbnQgTmV0d29ya1Byb2Nlc3NN
YWluVW5peChpbnQgYXJnYywgY2hhcioqIGFyZ3YpCiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktp
dAotCi0jZW5kaWYgLy8gRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL2d0ay9OZXR3b3JrUHJvY2Vzc01haW5HdGsuY3BwIGIv
U291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvZ3RrL05ldHdvcmtQcm9jZXNzTWFpbkd0ay5j
cHAKaW5kZXggNjg1NWUzMS4uYWViYzI4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvTmV0
d29ya1Byb2Nlc3MvZ3RrL05ldHdvcmtQcm9jZXNzTWFpbkd0ay5jcHAKKysrIGIvU291cmNlL1dl
YktpdDIvTmV0d29ya1Byb2Nlc3MvZ3RrL05ldHdvcmtQcm9jZXNzTWFpbkd0ay5jcHAKQEAgLTI3
LDggKzI3LDYgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJOZXR3b3JrUHJvY2Vz
c01haW5Vbml4LmgiCiAKLSNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQotCiAjaW5jbHVkZSAi
Q2hpbGRQcm9jZXNzTWFpbi5oIgogI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzLmgiCiAjaW5jbHVk
ZSA8V2ViQ29yZS9Tb3VwTmV0d29ya1Nlc3Npb24uaD4KQEAgLTYzLDUgKzYxLDMgQEAgaW50IE5l
dHdvcmtQcm9jZXNzTWFpblVuaXgoaW50IGFyZ2MsIGNoYXIqKiBhcmd2KQogfQogCiB9IC8vIG5h
bWVzcGFjZSBXZWJLaXQKLQotI2VuZGlmIC8vIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9pb3MvTmV0d29ya1Byb2Nlc3NJ
T1MubW0gYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9pb3MvTmV0d29ya1Byb2Nlc3NJ
T1MubW0KaW5kZXggY2Q1ZGVjNi4uYmQwNDgyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
TmV0d29ya1Byb2Nlc3MvaW9zL05ldHdvcmtQcm9jZXNzSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJL
aXQyL05ldHdvcmtQcm9jZXNzL2lvcy9OZXR3b3JrUHJvY2Vzc0lPUy5tbQpAQCAtMjYsNyArMjYs
NyBAQAogI2ltcG9ydCAiY29uZmlnLmgiCiAjaW1wb3J0ICJOZXR3b3JrUHJvY2Vzcy5oIgogCi0j
aWYgUExBVEZPUk0oSU9TKSAmJiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQorI2lmIFBMQVRGT1JN
KElPUykKIAogI2ltcG9ydCAiTmV0d29ya0NhY2hlLmgiCiAjaW1wb3J0ICJOZXR3b3JrUHJvY2Vz
c0NyZWF0aW9uUGFyYW1ldGVycy5oIgpAQCAtMTAxLDQgKzEwMSw0IEBAIHZvaWQgTmV0d29ya1By
b2Nlc3M6OnBsYXRmb3JtVGVybWluYXRlKCkKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKLSNl
bmRpZiAvLyBQTEFURk9STShJT1MpICYmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCisjZW5kaWYg
Ly8gUExBVEZPUk0oSU9TKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nl
c3MvbWFjL05ldHdvcmtMb2FkTWFjLm1tIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3Mv
bWFjL05ldHdvcmtMb2FkTWFjLm1tCmluZGV4IGY5OGU0OTAuLmQ4ZDJkMzggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL21hYy9OZXR3b3JrTG9hZE1hYy5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9tYWMvTmV0d29ya0xvYWRNYWMubW0KQEAg
LTI0LDggKzI0LDYgQEAKICAqLwogCiAjaW1wb3J0ICJjb25maWcuaCIKLQotI2lmIEVOQUJMRShO
RVRXT1JLX1BST0NFU1MpCiAjaW1wb3J0ICJOZXR3b3JrTG9hZC5oIgogCiAjaW1wb3J0IDxXZWJD
b3JlL0NGTmV0d29ya1NQSS5oPgpAQCAtNjAsNSArNTgsMyBAQCB2b2lkIE5ldHdvcmtMb2FkOjp3
aWxsQ2FjaGVSZXNwb25zZUFzeW5jKFJlc291cmNlSGFuZGxlKiBoYW5kbGUsIE5TQ2FjaGVkVVJM
UmVzcAogI2VuZGlmIC8vICFVU0UoQ0ZORVRXT1JLKQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
LQotI2VuZGlmIC8vIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9tYWMvTmV0d29ya1Byb2Nlc3NNYWMubW0gYi9Tb3VyY2Uv
V2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9tYWMvTmV0d29ya1Byb2Nlc3NNYWMubW0KaW5kZXggZmFj
MTFhNC4uMjg0ZTViNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3Mv
bWFjL05ldHdvcmtQcm9jZXNzTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9j
ZXNzL21hYy9OZXR3b3JrUHJvY2Vzc01hYy5tbQpAQCAtMjYsNyArMjYsNyBAQAogI2ltcG9ydCAi
Y29uZmlnLmgiCiAjaW1wb3J0ICJOZXR3b3JrUHJvY2Vzcy5oIgogCi0jaWYgUExBVEZPUk0oTUFD
KSAmJiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQorI2lmIFBMQVRGT1JNKE1BQykKIAogI2ltcG9y
dCAiTmV0d29ya0NhY2hlLmgiCiAjaW1wb3J0ICJOZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1l
dGVycy5oIgpAQCAtMTQ0LDQgKzE0NCw0IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnBsYXRmb3Jt
VGVybWluYXRlKCkKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKLSNlbmRpZiAvLyBQTEFURk9S
TShNQUMpICYmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCisjZW5kaWYgLy8gUExBVEZPUk0oTUFD
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvbWFjL05ldHdvcmtS
ZXNvdXJjZUxvYWRlck1hYy5tbSBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL21hYy9O
ZXR3b3JrUmVzb3VyY2VMb2FkZXJNYWMubW0KaW5kZXggOGEyODZlNi4uYTZkMTI2NyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvbWFjL05ldHdvcmtSZXNvdXJjZUxv
YWRlck1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9tYWMvTmV0d29y
a1Jlc291cmNlTG9hZGVyTWFjLm1tCkBAIC0yNiw4ICsyNiw2IEBACiAjaW1wb3J0ICJjb25maWcu
aCIKICNpbXBvcnQgIk5ldHdvcmtSZXNvdXJjZUxvYWRlci5oIgogCi0jaWYgRU5BQkxFKE5FVFdP
UktfUFJPQ0VTUykKLQogI2ltcG9ydCAiTmV0d29ya0Rpc2tDYWNoZU1vbml0b3IuaCIKICNpbXBv
cnQgIlNoYXJlYWJsZVJlc291cmNlLmgiCiAjaW1wb3J0IDxXZWJDb3JlL0NGTmV0d29ya1NQSS5o
PgpAQCAtOTEsNSArODksMyBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6d2lsbENhY2hl
UmVzcG9uc2VBc3luYyhDRkNhY2hlZFVSTFJlc3BvbnNlUmVmIGNmUmVzcAogCiB9IC8vIG5hbWVz
cGFjZSBXZWJLaXQKIAotI2VuZGlmIC8vIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCi0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya1Byb2Nlc3NT
b3VwLmNwcCBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya1Byb2Nl
c3NTb3VwLmNwcAppbmRleCBmOWEwZmY4Li5jMmZkMWZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9OZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtQcm9jZXNzU291cC5jcHAKKysrIGIvU291
cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrUHJvY2Vzc1NvdXAuY3BwCkBA
IC0yNSw3ICsyNSw2IEBACiAgKi8KIAogI2luY2x1ZGUgImNvbmZpZy5oIgotI2lmIEVOQUJMRShO
RVRXT1JLX1BST0NFU1MpCiAjaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3MuaCIKIAogI2luY2x1ZGUg
Ik5ldHdvcmtDYWNoZS5oIgpAQCAtMTcwLDUgKzE2OSwzIEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6
OnBsYXRmb3JtVGVybWluYXRlKCkKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KLSNlbmRp
ZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3Mvc291cC9SZW1vdGVO
ZXR3b3JraW5nQ29udGV4dFNvdXAuY3BwIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3Mv
c291cC9SZW1vdGVOZXR3b3JraW5nQ29udGV4dFNvdXAuY3BwCmluZGV4IDZkYTRkNjguLjZhZWNi
N2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL3NvdXAvUmVtb3Rl
TmV0d29ya2luZ0NvbnRleHRTb3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJv
Y2Vzcy9zb3VwL1JlbW90ZU5ldHdvcmtpbmdDb250ZXh0U291cC5jcHAKQEAgLTI2LDcgKzI2LDYg
QEAKICAqLwogCiAjaW5jbHVkZSAiY29uZmlnLmgiCi0jaWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VT
UykKICNpbmNsdWRlICJSZW1vdGVOZXR3b3JraW5nQ29udGV4dC5oIgogCiAjaW5jbHVkZSA8V2Vi
Q29yZS9OZXR3b3JrU3RvcmFnZVNlc3Npb24uaD4KQEAgLTU3LDUgKzU2LDMgQEAgTmV0d29ya1N0
b3JhZ2VTZXNzaW9uJiBSZW1vdGVOZXR3b3JraW5nQ29udGV4dDo6c3RvcmFnZVNlc3Npb24oKSBj
b25zdAogfQogCiB9Ci0KLSNlbmRpZiAvLyBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9jL1dLRGVwcmVjYXRlZEZ1bmN0aW9ucy5j
cHAgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvV0tEZXByZWNhdGVkRnVuY3Rpb25zLmNw
cAppbmRleCA5MzdmODdiLi5kMGRmNjY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvQVBJL2MvV0tEZXByZWNhdGVkRnVuY3Rpb25zLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvQVBJL2MvV0tEZXByZWNhdGVkRnVuY3Rpb25zLmNwcApAQCAtMjcsNiArMjcsOCBAQAog
CiAjaW5jbHVkZSAiQVBJRGljdGlvbmFyeS5oIgogI2luY2x1ZGUgIldLQXJyYXkuaCIKKyNpbmNs
dWRlICJXS0NvbnRleHQuaCIKKyNpbmNsdWRlICJXS0NvbnRleHRQcml2YXRlLmgiCiAjaW5jbHVk
ZSAiV0tNdXRhYmxlRGljdGlvbmFyeS5oIgogI2luY2x1ZGUgIldLUHJlZmVyZW5jZXNSZWZQcml2
YXRlLmgiCiAjaW5jbHVkZSAiV0tTaGFyZWRBUElDYXN0LmgiCkBAIC0xMzQsNiArMTM2LDE5IEBA
IHZvaWQgV0tJbnNwZWN0b3JUb2dnbGVKYXZhU2NyaXB0UHJvZmlsaW5nKFdLSW5zcGVjdG9yUmVm
KQogewogfQogCit2b2lkIFdLQ29udGV4dFNldFByb2Nlc3NNb2RlbChXS0NvbnRleHRSZWYsIFdL
UHJvY2Vzc01vZGVsKQoreworfQorCitXS1Byb2Nlc3NNb2RlbCBXS0NvbnRleHRHZXRQcm9jZXNz
TW9kZWwoV0tDb250ZXh0UmVmKQoreworICAgIHJldHVybiBrV0tQcm9jZXNzTW9kZWxNdWx0aXBs
ZVNlY29uZGFyeVByb2Nlc3NlczsKK30KKwordm9pZCBXS0NvbnRleHRTZXRVc2VzTmV0d29ya1By
b2Nlc3MoV0tDb250ZXh0UmVmLCBib29sKQoreworfQorCiAjaWYgUExBVEZPUk0oTUFDKQogQ0dD
b250ZXh0UmVmIFdLR3JhcGhpY3NDb250ZXh0R2V0Q0dDb250ZXh0KFdLR3JhcGhpY3NDb250ZXh0
UmVmIGdyYXBoaWNzQ29udGV4dCkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJl
ZC9BdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdGlvbk1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktp
dDIvU2hhcmVkL0F1dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0aW9uTWFuYWdlci5jcHAKaW5kZXgg
NzE2ODA1YS4uYTUxODRjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0F1dGhl
bnRpY2F0aW9uL0F1dGhlbnRpY2F0aW9uTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdDIv
U2hhcmVkL0F1dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0aW9uTWFuYWdlci5jcHAKQEAgLTMwLDYg
KzMwLDcgQEAKICNpbmNsdWRlICJDaGlsZFByb2Nlc3MuaCIKICNpbmNsdWRlICJEb3dubG9hZC5o
IgogI2luY2x1ZGUgIkRvd25sb2FkUHJveHlNZXNzYWdlcy5oIgorI2luY2x1ZGUgIk5ldHdvcmtQ
cm9jZXNzUHJveHlNZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYkNvcmVBcmd1bWVudENvZGVycy5o
IgogI2luY2x1ZGUgIldlYkZyYW1lLmgiCiAjaW5jbHVkZSAiV2ViUGFnZS5oIgpAQCAtMzcsMTAg
KzM4LDYgQEAKICNpbmNsdWRlIDxXZWJDb3JlL0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmg+CiAj
aW5jbHVkZSA8V2ViQ29yZS9BdXRoZW50aWNhdGlvbkNsaWVudC5oPgogCi0jaWYgRU5BQkxFKE5F
VFdPUktfUFJPQ0VTUykKLSNpbmNsdWRlICJOZXR3b3JrUHJvY2Vzc1Byb3h5TWVzc2FnZXMuaCIK
LSNlbmRpZgotCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogbmFtZXNwYWNlIFdlYktpdCB7
CkBAIC0xMjgsNyArMTI1LDYgQEAgdm9pZCBBdXRoZW50aWNhdGlvbk1hbmFnZXI6OmRpZFJlY2Vp
dmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShXZWJGcmFtZSogZnJhbWUsIGMKICAgICBtX3Byb2Nl
c3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlKGZyYW1lLT5mcmFtZUlEKCksIGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLCBjaGFs
bGVuZ2VJRCksIGZyYW1lLT5wYWdlKCktPnBhZ2VJRCgpKTsKIH0KIAotI2lmIEVOQUJMRShORVRX
T1JLX1BST0NFU1MpCiAjaWYgVVNFKE5FVFdPUktfU0VTU0lPTikKIHZvaWQgQXV0aGVudGljYXRp
b25NYW5hZ2VyOjpkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UodWludDY0X3QgcGFn
ZUlELCB1aW50NjRfdCBmcmFtZUlELCBjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYgYXV0
aGVudGljYXRpb25DaGFsbGVuZ2UsIENoYWxsZW5nZUNvbXBsZXRpb25IYW5kbGVyIGNvbXBsZXRp
b25IYW5kbGVyKQogewpAQCAtMTU3LDcgKzE1Myw2IEBAIHZvaWQgQXV0aGVudGljYXRpb25NYW5h
Z2VyOjpkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UodWludDY0X3QgcGFnZUlELCB1
CiAgICAgCiAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzc1Byb3h5
OjpEaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UocGFnZUlELCBmcmFtZUlELCBhdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZSwgY2hhbGxlbmdlSUQpKTsKIH0KLSNlbmRpZgogCiAjaWYgIVVT
RShORVRXT1JLX1NFU1NJT04pCiB2b2lkIEF1dGhlbnRpY2F0aW9uTWFuYWdlcjo6ZGlkUmVjZWl2
ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKERvd25sb2FkKiBkb3dubG9hZCwgY29uc3QgQXV0aGVu
dGljYXRpb25DaGFsbGVuZ2UmIGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvU2hhcmVkL05ldHdvcmsvQ3VzdG9tUHJvdG9jb2xzL0NvY29hL0N1c3Rv
bVByb3RvY29sTWFuYWdlckNvY29hLm1tIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL05ldHdvcmsv
Q3VzdG9tUHJvdG9jb2xzL0NvY29hL0N1c3RvbVByb3RvY29sTWFuYWdlckNvY29hLm1tCmluZGV4
IGUzODgyNTUuLjE0NDNmMTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9OZXR3
b3JrL0N1c3RvbVByb3RvY29scy9Db2NvYS9DdXN0b21Qcm90b2NvbE1hbmFnZXJDb2NvYS5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvTmV0d29yay9DdXN0b21Qcm90b2NvbHMvQ29jb2Ev
Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ29jb2EubW0KQEAgLTMwLDYgKzMwLDcgQEAKICNpbXBvcnQg
IkN1c3RvbVByb3RvY29sTWFuYWdlck1lc3NhZ2VzLmgiCiAjaW1wb3J0ICJDdXN0b21Qcm90b2Nv
bE1hbmFnZXJQcm94eU1lc3NhZ2VzLmgiCiAjaW1wb3J0ICJEYXRhUmVmZXJlbmNlLmgiCisjaW1w
b3J0ICJOZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oIgogI2ltcG9ydCAiV2ViQ29y
ZUFyZ3VtZW50Q29kZXJzLmgiCiAjaW1wb3J0ICJXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJz
LmgiCiAjaW1wb3J0IDxXZWJDb3JlL1VSTC5oPgpAQCAtMzcsMTAgKzM4LDYgQEAKICNpbXBvcnQg
PFdlYkNvcmUvUmVzb3VyY2VSZXF1ZXN0Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL1Jlc291cmNlUmVz
cG9uc2UuaD4KIAotI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCi0jaW1wb3J0ICJOZXR3b3Jr
UHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oIgotI2VuZGlmCi0KICNpZmRlZiBfX2hhc19pbmNs
dWRlCiAjaWYgX19oYXNfaW5jbHVkZSg8Rm91bmRhdGlvbi9OU1VSTENvbm5lY3Rpb25Qcml2YXRl
Lmg+KQogI2ltcG9ydCA8Rm91bmRhdGlvbi9OU1VSTENvbm5lY3Rpb25Qcml2YXRlLmg+CkBAIC0x
MzcsMjIgKzEzNCwxMSBAQCB2b2lkIEN1c3RvbVByb3RvY29sTWFuYWdlcjo6aW5pdGlhbGl6ZUNv
bm5lY3Rpb24oSVBDOjpDb25uZWN0aW9uKiBjb25uZWN0aW9uKQogCiB2b2lkIEN1c3RvbVByb3Rv
Y29sTWFuYWdlcjo6aW5pdGlhbGl6ZShjb25zdCBXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJz
JiBwYXJhbWV0ZXJzKQogewotI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCi0gICAgQVNTRVJU
KHBhcmFtZXRlcnMudXJsU2NoZW1lc1JlZ2lzdGVyZWRGb3JDdXN0b21Qcm90b2NvbHMuaXNFbXB0
eSgpIHx8ICFwYXJhbWV0ZXJzLnVzZXNOZXR3b3JrUHJvY2Vzcyk7Ci0gICAgaWYgKHBhcmFtZXRl
cnMudXNlc05ldHdvcmtQcm9jZXNzKSB7Ci0gICAgICAgIG1fY2hpbGRQcm9jZXNzLT5wYXJlbnRQ
cm9jZXNzQ29ubmVjdGlvbigpLT5yZW1vdmVXb3JrUXVldWVNZXNzYWdlUmVjZWl2ZXIoTWVzc2Fn
ZXM6OkN1c3RvbVByb3RvY29sTWFuYWdlcjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpKTsKLSAgICAg
ICAgbV9tZXNzYWdlUXVldWUgPSBudWxscHRyOwotICAgICAgICByZXR1cm47Ci0gICAgfQotI2Vu
ZGlmCi0KLSAgICBbTlNVUkxQcm90b2NvbCByZWdpc3RlckNsYXNzOltXS0N1c3RvbVByb3RvY29s
IGNsYXNzXV07Ci0KLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHBhcmFtZXRlcnMudXJsU2No
ZW1lc1JlZ2lzdGVyZWRGb3JDdXN0b21Qcm90b2NvbHMuc2l6ZSgpOyArK2kpCi0gICAgICAgIHJl
Z2lzdGVyU2NoZW1lKHBhcmFtZXRlcnMudXJsU2NoZW1lc1JlZ2lzdGVyZWRGb3JDdXN0b21Qcm90
b2NvbHNbaV0pOworICAgIEFTU0VSVChwYXJhbWV0ZXJzLnVybFNjaGVtZXNSZWdpc3RlcmVkRm9y
Q3VzdG9tUHJvdG9jb2xzLmlzRW1wdHkoKSk7CisgICAgbV9jaGlsZFByb2Nlc3MtPnBhcmVudFBy
b2Nlc3NDb25uZWN0aW9uKCktPnJlbW92ZVdvcmtRdWV1ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdl
czo6Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCkpOworICAgIG1f
bWVzc2FnZVF1ZXVlID0gbnVsbHB0cjsKIH0KIAotI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1Mp
CiB2b2lkIEN1c3RvbVByb3RvY29sTWFuYWdlcjo6aW5pdGlhbGl6ZShjb25zdCBOZXR3b3JrUHJv
Y2Vzc0NyZWF0aW9uUGFyYW1ldGVycyYgcGFyYW1ldGVycykKIHsKICAgICBbTlNVUkxQcm90b2Nv
bCByZWdpc3RlckNsYXNzOltXS0N1c3RvbVByb3RvY29sIGNsYXNzXV07CkBAIC0xNjAsNyArMTQ2
LDYgQEAgdm9pZCBDdXN0b21Qcm90b2NvbE1hbmFnZXI6OmluaXRpYWxpemUoY29uc3QgTmV0d29y
a1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMmIHAKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IHBhcmFtZXRlcnMudXJsU2NoZW1lc1JlZ2lzdGVyZWRGb3JDdXN0b21Qcm90b2NvbHMuc2l6ZSgp
OyArK2kpCiAgICAgICAgIHJlZ2lzdGVyU2NoZW1lKHBhcmFtZXRlcnMudXJsU2NoZW1lc1JlZ2lz
dGVyZWRGb3JDdXN0b21Qcm90b2NvbHNbaV0pOwogfQotI2VuZGlmCiAKIHZvaWQgQ3VzdG9tUHJv
dG9jb2xNYW5hZ2VyOjphZGRDdXN0b21Qcm90b2NvbChXS0N1c3RvbVByb3RvY29sICpjdXN0b21Q
cm90b2NvbCkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9OZXR3b3JrL0N1
c3RvbVByb3RvY29scy9DdXN0b21Qcm90b2NvbE1hbmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQyL1No
YXJlZC9OZXR3b3JrL0N1c3RvbVByb3RvY29scy9DdXN0b21Qcm90b2NvbE1hbmFnZXIuaAppbmRl
eCAwOTgwMDljLi5jNDg1N2IxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvTmV0
d29yay9DdXN0b21Qcm90b2NvbHMvQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyLmgKKysrIGIvU291cmNl
L1dlYktpdDIvU2hhcmVkL05ldHdvcmsvQ3VzdG9tUHJvdG9jb2xzL0N1c3RvbVByb3RvY29sTWFu
YWdlci5oCkBAIC04MywxMCArODMsOCBAQCBwcml2YXRlOgogICAgIC8vIFdlYlByb2Nlc3NTdXBw
bGVtZW50CiAgICAgdm9pZCBpbml0aWFsaXplKGNvbnN0IFdlYlByb2Nlc3NDcmVhdGlvblBhcmFt
ZXRlcnMmKSBvdmVycmlkZTsKIAotI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCiAgICAgLy8g
TmV0d29ya1Byb2Nlc3NTdXBwbGVtZW50CiAgICAgdm9pZCBpbml0aWFsaXplKGNvbnN0IE5ldHdv
cmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzJikgb3ZlcnJpZGU7Ci0jZW5kaWYKIAogICAgIC8v
IElQQzo6TWVzc2FnZVJlY2VpdmVyCiAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVNZXNzYWdl
KElQQzo6Q29ubmVjdGlvbiYsIElQQzo6TWVzc2FnZURlY29kZXImKSBvdmVycmlkZTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9OZXR3b3JrL0N1c3RvbVByb3RvY29scy9zb3Vw
L0N1c3RvbVByb3RvY29sTWFuYWdlclNvdXAuY3BwIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL05l
dHdvcmsvQ3VzdG9tUHJvdG9jb2xzL3NvdXAvQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyU291cC5jcHAK
aW5kZXggYTY1Y2EwOC4uYjMwZmU3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVk
L05ldHdvcmsvQ3VzdG9tUHJvdG9jb2xzL3NvdXAvQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyU291cC5j
cHAKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL05ldHdvcmsvQ3VzdG9tUHJvdG9jb2xzL3Nv
dXAvQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyU291cC5jcHAKQEAgLTIzLDEzICsyMywxMCBAQAogI2lu
Y2x1ZGUgIkNoaWxkUHJvY2Vzcy5oIgogI2luY2x1ZGUgIkN1c3RvbVByb3RvY29sTWFuYWdlcklt
cGwuaCIKICNpbmNsdWRlICJDdXN0b21Qcm90b2NvbE1hbmFnZXJNZXNzYWdlcy5oIgorI2luY2x1
ZGUgIk5ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmgiCiAjaW5jbHVkZSAiV2ViUHJv
Y2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oIgogI2luY2x1ZGUgPFdlYkNvcmUvTm90SW1wbGVtZW50
ZWQuaD4KIAotI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCi0jaW5jbHVkZSAiTmV0d29ya1By
b2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaCIKLSNlbmRpZgotCiBuYW1lc3BhY2UgV2ViS2l0IHsK
IAogY29uc3QgY2hhciogQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyOjpzdXBwbGVtZW50TmFtZSgpCkBA
IC01MSwyNSArNDgsMTYgQEAgdm9pZCBDdXN0b21Qcm90b2NvbE1hbmFnZXI6OmluaXRpYWxpemVD
b25uZWN0aW9uKElQQzo6Q29ubmVjdGlvbiogY29ubmVjdGlvbikKIAogdm9pZCBDdXN0b21Qcm90
b2NvbE1hbmFnZXI6OmluaXRpYWxpemUoY29uc3QgV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVy
cyYgcGFyYW1ldGVycykKIHsKLSNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQotICAgIEFTU0VS
VChwYXJhbWV0ZXJzLnVybFNjaGVtZXNSZWdpc3RlcmVkRm9yQ3VzdG9tUHJvdG9jb2xzLmlzRW1w
dHkoKSB8fCAhcGFyYW1ldGVycy51c2VzTmV0d29ya1Byb2Nlc3MpOwotICAgIGlmIChwYXJhbWV0
ZXJzLnVzZXNOZXR3b3JrUHJvY2VzcykgewotICAgICAgICBtX2NoaWxkUHJvY2Vzcy0+cGFyZW50
UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+cmVtb3ZlV29ya1F1ZXVlTWVzc2FnZVJlY2VpdmVyKE1lc3Nh
Z2VzOjpDdXN0b21Qcm90b2NvbE1hbmFnZXI6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSk7Ci0gICAg
ICAgIG1fbWVzc2FnZVF1ZXVlID0gbnVsbHB0cjsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSNl
bmRpZgotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcGFyYW1ldGVycy51cmxTY2hlbWVzUmVn
aXN0ZXJlZEZvckN1c3RvbVByb3RvY29scy5zaXplKCk7ICsraSkKLSAgICAgICAgcmVnaXN0ZXJT
Y2hlbWUocGFyYW1ldGVycy51cmxTY2hlbWVzUmVnaXN0ZXJlZEZvckN1c3RvbVByb3RvY29sc1tp
XSk7CisgICAgQVNTRVJUKHBhcmFtZXRlcnMudXJsU2NoZW1lc1JlZ2lzdGVyZWRGb3JDdXN0b21Q
cm90b2NvbHMuaXNFbXB0eSgpKTsKKyAgICBtX2NoaWxkUHJvY2Vzcy0+cGFyZW50UHJvY2Vzc0Nv
bm5lY3Rpb24oKS0+cmVtb3ZlV29ya1F1ZXVlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpDdXN0
b21Qcm90b2NvbE1hbmFnZXI6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSk7CisgICAgbV9tZXNzYWdl
UXVldWUgPSBudWxscHRyOwogfQogCi0jaWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKIHZvaWQg
Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyOjppbml0aWFsaXplKGNvbnN0IE5ldHdvcmtQcm9jZXNzQ3Jl
YXRpb25QYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQogewogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgcGFyYW1ldGVycy51cmxTY2hlbWVzUmVnaXN0ZXJlZEZvckN1c3RvbVByb3RvY29scy5zaXpl
KCk7ICsraSkKICAgICAgICAgcmVnaXN0ZXJTY2hlbWUocGFyYW1ldGVycy51cmxTY2hlbWVzUmVn
aXN0ZXJlZEZvckN1c3RvbVByb3RvY29sc1tpXSk7CiB9Ci0jZW5kaWYKIAogdm9pZCBDdXN0b21Q
cm90b2NvbE1hbmFnZXI6OnJlZ2lzdGVyU2NoZW1lKGNvbnN0IFN0cmluZyYgc2NoZW1lKQogewpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL05ldHdvcmsvTmV0d29ya1Byb2Nlc3ND
cmVhdGlvblBhcmFtZXRlcnMuY3BwIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL05ldHdvcmsvTmV0
d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuY3BwCmluZGV4IGEzN2JiZTMuLjc1MWZiYjEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9OZXR3b3JrL05ldHdvcmtQcm9jZXNz
Q3JlYXRpb25QYXJhbWV0ZXJzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvTmV0d29y
ay9OZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5jcHAKQEAgLTI2LDggKzI2LDYgQEAK
ICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJOZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFy
YW1ldGVycy5oIgogCi0jaWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKLQogI2luY2x1ZGUgIkFy
Z3VtZW50Q29kZXJzLmgiCiAKICNpZiBQTEFURk9STShDT0NPQSkKQEAgLTE2OCw1ICsxNjYsMyBA
QCBib29sIE5ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOjpkZWNvZGUoSVBDOjpBcmd1
bWVudERlY29kZXImIGRlY29kZXIsIE5ldAogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQot
I2VuZGlmIC8vIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oIGIv
U291cmNlL1dlYktpdDIvU2hhcmVkL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFt
ZXRlcnMuaAppbmRleCA5MDg2OWMxLi43MWQxMzMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJh
bWV0ZXJzLmgKQEAgLTI2LDggKzI2LDYgQEAKICNpZm5kZWYgTmV0d29ya1Byb2Nlc3NDcmVhdGlv
blBhcmFtZXRlcnNfaAogI2RlZmluZSBOZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyc19o
CiAKLSNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQotCiAjaW5jbHVkZSAiQ2FjaGVNb2RlbC5o
IgogI2luY2x1ZGUgIlNhbmRib3hFeHRlbnNpb24uaCIKICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+
CkBAIC0xMDMsNiArMTAxLDQgQEAgc3RydWN0IE5ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0
ZXJzIHsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKLSNlbmRpZiAvLyBFTkFCTEUoTkVUV09S
S19QUk9DRVNTKQotCiAjZW5kaWYgLy8gTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnNf
aApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL05ldHdvcmsvTmV0d29ya1Byb2Nl
c3NTdXBwbGVtZW50LmggYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvTmV0d29yay9OZXR3b3JrUHJv
Y2Vzc1N1cHBsZW1lbnQuaAppbmRleCBkNmZiZTViLi5lMmI0NmIzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1N1cHBsZW1lbnQuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1N1cHBsZW1lbnQu
aApAQCAtMzMsMTIgKzMzLDEwIEBAIG5hbWVzcGFjZSBXZWJLaXQgewogc3RydWN0IE5ldHdvcmtQ
cm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOwogCiBjbGFzcyBOZXR3b3JrUHJvY2Vzc1N1cHBsZW1l
bnQgOiBwdWJsaWMgQ2hpbGRQcm9jZXNzU3VwcGxlbWVudCB7Ci0jaWYgRU5BQkxFKE5FVFdPUktf
UFJPQ0VTUykKIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgaW5pdGlhbGl6ZShjb25zdCBOZXR3
b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycyYpCiAgICAgewogICAgIH0KLSNlbmRpZgogfTsK
IAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvTmV0d29yay9OZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycy5jcHAgYi9Tb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvTmV0d29yay9OZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycy5jcHAKaW5k
ZXggYzVkODQ2NS4uZjRjNThhNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL05l
dHdvcmsvTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1NoYXJlZC9OZXR3b3JrL05ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmNwcApAQCAt
MzAsOCArMzAsNiBAQAogI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlICJXZWJD
b3JlQXJndW1lbnRDb2RlcnMuaCIKIAotI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCi0KIHVz
aW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTE2MCw1ICsx
NTgsMyBAQCBib29sIE5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzOjpkZWNvZGUoSVBDOjpB
cmd1bWVudERlY29kZXImIGRlY29kZXIsIE5ldHdvcgogfQogICAgIAogfSAvLyBuYW1lc3BhY2Ug
V2ViS2l0Ci0KLSNlbmRpZiAvLyBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvU2hhcmVkL05ldHdvcmsvTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRl
cnMuaCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9OZXR3b3JrL05ldHdvcmtSZXNvdXJjZUxvYWRQ
YXJhbWV0ZXJzLmgKaW5kZXggMmU4YjkxYy4uMmYxNTI4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvU2hhcmVkL05ldHdvcmsvTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvTmV0d29yay9OZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1l
dGVycy5oCkBAIC0zMiw4ICszMiw2IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZVJlcXVl
c3QuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Nlc3Npb25JRC5oPgogCi0jaWYgRU5BQkxFKE5FVFdP
UktfUFJPQ0VTUykKLQogbmFtZXNwYWNlIElQQyB7CiAgICAgY2xhc3MgQXJndW1lbnREZWNvZGVy
OwogICAgIGNsYXNzIEFyZ3VtZW50RW5jb2RlcjsKQEAgLTY4LDYgKzY2LDQgQEAgcHVibGljOgog
CiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAotI2VuZGlmIC8vIEVOQUJMRShORVRXT1JLX1BST0NF
U1MpCi0KICNlbmRpZiAvLyBOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVyc19oCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvUHJvY2Vzc0V4ZWN1dGFibGVQYXRoLmggYi9Tb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvUHJvY2Vzc0V4ZWN1dGFibGVQYXRoLmgKaW5kZXggNGZmZDExYi4u
YjAwNzU4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1Byb2Nlc3NFeGVjdXRh
YmxlUGF0aC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Qcm9jZXNzRXhlY3V0YWJsZVBh
dGguaApAQCAtMzIsOSArMzIsNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogU3RyaW5nIGV4ZWN1
dGFibGVQYXRoT2ZXZWJQcm9jZXNzKCk7CiBTdHJpbmcgZXhlY3V0YWJsZVBhdGhPZlBsdWdpblBy
b2Nlc3MoKTsKLSNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQogU3RyaW5nIGV4ZWN1dGFibGVQ
YXRoT2ZOZXR3b3JrUHJvY2VzcygpOwotI2VuZGlmCiAjaWYgRU5BQkxFKERBVEFCQVNFX1BST0NF
U1MpCiBTdHJpbmcgZXhlY3V0YWJsZVBhdGhPZkRhdGFiYXNlUHJvY2VzcygpOwogI2VuZGlmCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1l
dGVycy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1l
dGVycy5jcHAKaW5kZXggMWU2MzFhMC4uMDkyNTI5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvU2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1NoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcApAQCAtNDMsOSAr
NDMsNiBAQCBXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOjpXZWJQcm9jZXNzQ3JlYXRpb25Q
YXJhbWV0ZXJzKCkKICAgICAsIHNob3VsZEVuYWJsZUpJVChmYWxzZSkKICAgICAsIHNob3VsZEVu
YWJsZUZUTEpJVChmYWxzZSkKICNlbmRpZgotI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCi0g
ICAgLCB1c2VzTmV0d29ya1Byb2Nlc3MoZmFsc2UpCi0jZW5kaWYKICAgICAsIG1lbW9yeUNhY2hl
RGlzYWJsZWQoZmFsc2UpCiAjaWYgRU5BQkxFKFNFUlZJQ0VfQ09OVFJPTFMpCiAgICAgLCBoYXNJ
bWFnZVNlcnZpY2VzKGZhbHNlKQpAQCAtMTMzLDEwICsxMzAsNiBAQCB2b2lkIFdlYlByb2Nlc3ND
cmVhdGlvblBhcmFtZXRlcnM6OmVuY29kZShJUEM6OkFyZ3VtZW50RW5jb2RlciYgZW5jb2Rlcikg
Y29uc3QKICAgICBlbmNvZGVyIDw8IG5vdGlmaWNhdGlvblBlcm1pc3Npb25zOwogI2VuZGlmCiAK
LSNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQotICAgIGVuY29kZXIgPDwgdXNlc05ldHdvcmtQ
cm9jZXNzOwotI2VuZGlmCi0KICAgICBlbmNvZGVyIDw8IHBsdWdJbkF1dG9TdGFydE9yaWdpbkhh
c2hlczsKICAgICBlbmNvZGVyIDw8IHBsdWdJbkF1dG9TdGFydE9yaWdpbnM7CiAgICAgZW5jb2Rl
ciA8PCBtZW1vcnlDYWNoZURpc2FibGVkOwpAQCAtMjkxLDExICsyODQsNiBAQCBib29sIFdlYlBy
b2Nlc3NDcmVhdGlvblBhcmFtZXRlcnM6OmRlY29kZShJUEM6OkFyZ3VtZW50RGVjb2RlciYgZGVj
b2RlciwgV2ViUHJvYwogICAgICAgICByZXR1cm4gZmFsc2U7CiAjZW5kaWYKIAotI2lmIEVOQUJM
RShORVRXT1JLX1BST0NFU1MpCi0gICAgaWYgKCFkZWNvZGVyLmRlY29kZShwYXJhbWV0ZXJzLnVz
ZXNOZXR3b3JrUHJvY2VzcykpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSNlbmRpZgotCiAgICAg
aWYgKCFkZWNvZGVyLmRlY29kZShwYXJhbWV0ZXJzLnBsdWdJbkF1dG9TdGFydE9yaWdpbkhhc2hl
cykpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFt
ZXRlcnMucGx1Z0luQXV0b1N0YXJ0T3JpZ2lucykpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oIGIvU291cmNlL1dlYktpdDIv
U2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaAppbmRleCBiODM4YTk3Li5jYWQ1
YjcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9u
UGFyYW1ldGVycy5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJQcm9jZXNzQ3JlYXRp
b25QYXJhbWV0ZXJzLmgKQEAgLTE1NCwxMCArMTU0LDYgQEAgc3RydWN0IFdlYlByb2Nlc3NDcmVh
dGlvblBhcmFtZXRlcnMgewogICAgIEhhc2hNYXA8U3RyaW5nLCBib29sPiBub3RpZmljYXRpb25Q
ZXJtaXNzaW9uczsKICNlbmRpZgogCi0jaWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKLSAgICBi
b29sIHVzZXNOZXR3b3JrUHJvY2VzczsKLSNlbmRpZgotCiAgICAgSGFzaE1hcDxXZWJDb3JlOjpT
ZXNzaW9uSUQsIEhhc2hNYXA8dW5zaWduZWQsIGRvdWJsZT4+IHBsdWdJbkF1dG9TdGFydE9yaWdp
bkhhc2hlczsKICAgICBWZWN0b3I8U3RyaW5nPiBwbHVnSW5BdXRvU3RhcnRPcmlnaW5zOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvZWZsL1Byb2Nlc3NFeGVjdXRhYmxlUGF0
aEVmbC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvZWZsL1Byb2Nlc3NFeGVjdXRhYmxlUGF0
aEVmbC5jcHAKaW5kZXggM2Q1MzYwNC4uZTUzNTBmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvU2hhcmVkL2VmbC9Qcm9jZXNzRXhlY3V0YWJsZVBhdGhFZmwuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1NoYXJlZC9lZmwvUHJvY2Vzc0V4ZWN1dGFibGVQYXRoRWZsLmNwcApAQCAtODEsMTQg
KzgxLDEyIEBAIFN0cmluZyBleGVjdXRhYmxlUGF0aE9mUGx1Z2luUHJvY2VzcygpCiAgICAgcmV0
dXJuIHdlYktpdFBsdWdpblByb2Nlc3NOYW1lOwogfQogCi0jaWYgRU5BQkxFKE5FVFdPUktfUFJP
Q0VTUykKIFN0cmluZyBleGVjdXRhYmxlUGF0aE9mTmV0d29ya1Byb2Nlc3MoKQogewogICAgIHN0
YXRpYyBOZXZlckRlc3Ryb3llZDxjb25zdCBTdHJpbmc+IHdlYktpdE5ldHdvcmtQcm9jZXNzTmFt
ZShmaW5kUHJvY2Vzc1BhdGgoTkVUV09SS1BST0NFU1NOQU1FKSk7CiAKICAgICByZXR1cm4gd2Vi
S2l0TmV0d29ya1Byb2Nlc3NOYW1lOwogfQotI2VuZGlmCiAKICNpZiBFTkFCTEUoREFUQUJBU0Vf
UFJPQ0VTUykKIFN0cmluZyBleGVjdXRhYmxlUGF0aE9mRGF0YWJhc2VQcm9jZXNzKCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9ndGsvUHJvY2Vzc0V4ZWN1dGFibGVQYXRoR3Rr
LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9ndGsvUHJvY2Vzc0V4ZWN1dGFibGVQYXRoR3Rr
LmNwcAppbmRleCA5MWZjNTgwLi4yMmY3MDViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvZ3RrL1Byb2Nlc3NFeGVjdXRhYmxlUGF0aEd0ay5jcHAKKysrIGIvU291cmNlL1dlYktp
dDIvU2hhcmVkL2d0ay9Qcm9jZXNzRXhlY3V0YWJsZVBhdGhHdGsuY3BwCkBAIC03OSwxMiArNzks
MTAgQEAgU3RyaW5nIGV4ZWN1dGFibGVQYXRoT2ZQbHVnaW5Qcm9jZXNzKCkKICAgICByZXR1cm4g
ZmluZFdlYktpdFByb2Nlc3MoIldlYktpdFBsdWdpblByb2Nlc3MiKTsKIH0KIAotI2lmIEVOQUJM
RShORVRXT1JLX1BST0NFU1MpCiBTdHJpbmcgZXhlY3V0YWJsZVBhdGhPZk5ldHdvcmtQcm9jZXNz
KCkKIHsKICAgICByZXR1cm4gZmluZFdlYktpdFByb2Nlc3MoIldlYktpdE5ldHdvcmtQcm9jZXNz
Iik7CiB9Ci0jZW5kaWYKIAogI2lmIEVOQUJMRShEQVRBQkFTRV9QUk9DRVNTKQogU3RyaW5nIGV4
ZWN1dGFibGVQYXRoT2ZEYXRhYmFzZVByb2Nlc3MoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvU2hhcmVkL21hYy9Db29raWVTdG9yYWdlU2hpbS5oIGIvU291cmNlL1dlYktpdDIvU2hhcmVk
L21hYy9Db29raWVTdG9yYWdlU2hpbS5oCmluZGV4IGFiMzQyMjQuLjU1ZWM3NjEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9tYWMvQ29va2llU3RvcmFnZVNoaW0uaAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvbWFjL0Nvb2tpZVN0b3JhZ2VTaGltLmgKQEAgLTI2LDggKzI2
LDYgQEAKICNpZm5kZWYgQ29va2llU3RvcmFnZVNoaW1faAogI2RlZmluZSBDb29raWVTdG9yYWdl
U2hpbV9oCiAKLSNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQotCiAjaW5jbHVkZSA8d3RmL05v
bmNvcHlhYmxlLmg+CiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAKQEAgLTQ5LDYg
KzQ3LDQgQEAgcHJpdmF0ZToKIAogfQogCi0jZW5kaWYgLy8gRU5BQkxFKE5FVFdPUktfUFJPQ0VT
UykKLQogI2VuZGlmIC8vIENvb2tpZVN0b3JhZ2VTaGltX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1NoYXJlZC9tYWMvQ29va2llU3RvcmFnZVNoaW0ubW0gYi9Tb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvbWFjL0Nvb2tpZVN0b3JhZ2VTaGltLm1tCmluZGV4IDA0M2Q2NTYuLjcwMTE3NjMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9tYWMvQ29va2llU3RvcmFnZVNoaW0ubW0K
KysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL21hYy9Db29raWVTdG9yYWdlU2hpbS5tbQpAQCAt
MjYsOCArMjYsNiBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkNvb2tpZVN0b3Jh
Z2VTaGltLmgiCiAKLSNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQotCiAjaW5jbHVkZSAiQ29v
a2llU3RvcmFnZVNoaW1MaWJyYXJ5LmgiCiAjaW5jbHVkZSAiTmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MuaCIKICNpbmNsdWRlICJOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uaCIKQEAgLTEz
NSw1ICsxMzMsMyBAQCB1c2luZyBDb21wbGV0aW9uSGFuZGxlckJsb2NrID0gdm9pZCheKShDRkRp
Y3Rpb25hcnlSZWYpOwogfQogCiBAZW5kCi0KLSNlbmRpZiAvLyBFTkFCTEUoTkVUV09SS19QUk9D
RVNTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL21hYy9Db29raWVTdG9yYWdl
U2hpbUxpYnJhcnkuY3BwIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL21hYy9Db29raWVTdG9yYWdl
U2hpbUxpYnJhcnkuY3BwCmluZGV4IDY3N2RiMjcuLmRmN2Y4OTYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9tYWMvQ29va2llU3RvcmFnZVNoaW1MaWJyYXJ5LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvbWFjL0Nvb2tpZVN0b3JhZ2VTaGltTGlicmFyeS5jcHAKQEAg
LTI2LDcgKzI2LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJDb29raWVTdG9y
YWdlU2hpbUxpYnJhcnkuaCIKIAotI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpICYmICFQTEFU
Rk9STShJT1MpCisjaWYgIVBMQVRGT1JNKElPUykKIAogI2luY2x1ZGUgPFdlYkNvcmUvRHluYW1p
Y0xpbmtlckludGVycG9zaW5nLmg+CiAKQEAgLTkwLDQgKzkwLDQgQEAgdm9pZCBXZWJLaXRDb29r
aWVTdG9yYWdlU2hpbUluaXRpYWxpemUoY29uc3QgQ29va2llU3RvcmFnZVNoaW1DYWxsYmFja3Mm
IGNhbGxiYWMKICAgICAKIH0KIAotI2VuZGlmIC8vIEVOQUJMRShORVRXT1JLX1BST0NFU1MpICYm
ICFQTEFURk9STShJT1MpCisjZW5kaWYgLy8gIVBMQVRGT1JNKElPUykKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1NoYXJlZC9tYWMvQ29va2llU3RvcmFnZVNoaW1MaWJyYXJ5LmggYi9Tb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvbWFjL0Nvb2tpZVN0b3JhZ2VTaGltTGlicmFyeS5oCmluZGV4IDMx
MDhlMGEuLjc3NDdmYzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9tYWMvQ29v
a2llU3RvcmFnZVNoaW1MaWJyYXJ5LmgKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL21hYy9D
b29raWVTdG9yYWdlU2hpbUxpYnJhcnkuaApAQCAtMjYsOCArMjYsNiBAQAogI2lmbmRlZiBDb29r
aWVTdG9yYWdlU2hpbUxpYnJhcnlfaAogI2RlZmluZSBDb29raWVTdG9yYWdlU2hpbUxpYnJhcnlf
aAogCi0jaWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKLQogdHlwZWRlZiBzdHJ1Y3QgT3BhcXVl
Q0ZIVFRQQ29va2llU3RvcmFnZSogIENGSFRUUENvb2tpZVN0b3JhZ2VSZWY7CiAKIG5hbWVzcGFj
ZSBXZWJLaXQgewpAQCAtNDAsNiArMzgsNCBAQCB0eXBlZGVmIHZvaWQgKCpDb29raWVTdG9yYWdl
U2hpbUluaXRpYWxpemVGdW5jKShjb25zdCBDb29raWVTdG9yYWdlU2hpbUNhbGxiYWNrcwogCiB9
CiAKLSNlbmRpZiAvLyBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQotCiAjZW5kaWYgLy8gQ29va2ll
U3RvcmFnZVNoaW1MaWJyYXJ5X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvQVBJUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvQVBJUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmNwcAppbmRleCAwZGM4ZTI5
Li5mZjc2NTUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0FQSVBy
b2Nlc3NQb29sQ29uZmlndXJhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9BUElQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uY3BwCkBAIC00MSw3ICs0MSw2IEBAIFJl
ZjxQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24+IFByb2Nlc3NQb29sQ29uZmlndXJhdGlvbjo6Y3Jl
YXRlV2l0aExlZ2FjeU9wdGlvbnMoCiAgICAgYXV0byBjb25maWd1cmF0aW9uID0gUHJvY2Vzc1Bv
b2xDb25maWd1cmF0aW9uOjpjcmVhdGUoKTsKIAogICAgIGNvbmZpZ3VyYXRpb24tPm1fc2hvdWxk
SGF2ZUxlZ2FjeURhdGFTdG9yZSA9IHRydWU7Ci0gICAgY29uZmlndXJhdGlvbi0+bV9wcm9jZXNz
TW9kZWwgPSBXZWJLaXQ6OlByb2Nlc3NNb2RlbFNoYXJlZFNlY29uZGFyeVByb2Nlc3M7CiAgICAg
Y29uZmlndXJhdGlvbi0+bV91c2VOZXR3b3JrUHJvY2VzcyA9IGZhbHNlOwogICAgIGNvbmZpZ3Vy
YXRpb24tPm1fY2FjaGVNb2RlbCA9IFdlYktpdDo6Q2FjaGVNb2RlbERvY3VtZW50Vmlld2VyOwog
CkBAIC03NCw3ICs3Myw2IEBAIFJlZjxQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24+IFByb2Nlc3NQ
b29sQ29uZmlndXJhdGlvbjo6Y29weSgpCiAgICAgYXV0byBjb3B5ID0gdGhpcy0+Y3JlYXRlKCk7
CiAKICAgICBjb3B5LT5tX3Nob3VsZEhhdmVMZWdhY3lEYXRhU3RvcmUgPSB0aGlzLT5tX3Nob3Vs
ZEhhdmVMZWdhY3lEYXRhU3RvcmU7Ci0gICAgY29weS0+bV9wcm9jZXNzTW9kZWwgPSB0aGlzLT5t
X3Byb2Nlc3NNb2RlbDsKICAgICBjb3B5LT5tX3VzZU5ldHdvcmtQcm9jZXNzID0gdGhpcy0+bV91
c2VOZXR3b3JrUHJvY2VzczsKICAgICBjb3B5LT5tX21heGltdW1Qcm9jZXNzQ291bnQgPSB0aGlz
LT5tX21heGltdW1Qcm9jZXNzQ291bnQ7CiAgICAgY29weS0+bV9jYWNoZU1vZGVsID0gdGhpcy0+
bV9jYWNoZU1vZGVsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9B
UElQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvQVBJUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmgKaW5kZXggNmRjOWYyYS4uOWQ1ZTI1YiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9BUElQcm9jZXNzUG9vbENv
bmZpZ3VyYXRpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0FQSVByb2Nl
c3NQb29sQ29uZmlndXJhdGlvbi5oCkBAIC0yOCw3ICsyOCw2IEBACiAKICNpbmNsdWRlICJBUElP
YmplY3QuaCIKICNpbmNsdWRlICJDYWNoZU1vZGVsLmgiCi0jaW5jbHVkZSAiUHJvY2Vzc01vZGVs
LmgiCiAjaW5jbHVkZSA8d3RmL1JlZi5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KICNpbmNs
dWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KQEAgLTQ4LDkgKzQ3LDYgQEAgcHVibGljOgogICAg
IGJvb2wgc2hvdWxkSGF2ZUxlZ2FjeURhdGFTdG9yZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2hvdWxk
SGF2ZUxlZ2FjeURhdGFTdG9yZTsgfQogICAgIHZvaWQgc2V0U2hvdWxkSGF2ZUxlZ2FjeURhdGFT
dG9yZShib29sIHNob3VsZEhhdmVMZWdhY3lEYXRhU3RvcmUpIHsgbV9zaG91bGRIYXZlTGVnYWN5
RGF0YVN0b3JlID0gc2hvdWxkSGF2ZUxlZ2FjeURhdGFTdG9yZTsgfQogCi0gICAgV2ViS2l0OjpQ
cm9jZXNzTW9kZWwgcHJvY2Vzc01vZGVsKCkgY29uc3QgeyByZXR1cm4gbV9wcm9jZXNzTW9kZWw7
IH0KLSAgICB2b2lkIHNldFByb2Nlc3NNb2RlbChXZWJLaXQ6OlByb2Nlc3NNb2RlbCBwcm9jZXNz
TW9kZWwpIHsgbV9wcm9jZXNzTW9kZWwgPSBwcm9jZXNzTW9kZWw7IH0gCi0KICAgICBib29sIHVz
ZU5ldHdvcmtQcm9jZXNzKCkgY29uc3QgeyByZXR1cm4gbV91c2VOZXR3b3JrUHJvY2VzczsgfQog
ICAgIHZvaWQgc2V0VXNlTmV0d29ya1Byb2Nlc3MoYm9vbCB1c2VOZXR3b3JrUHJvY2VzcykgeyBt
X3VzZU5ldHdvcmtQcm9jZXNzID0gdXNlTmV0d29ya1Byb2Nlc3M7IH0gCiAKQEAgLTk2LDcgKzky
LDYgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBib29sIG1fc2hvdWxkSGF2ZUxlZ2FjeURhdGFT
dG9yZSB7IGZhbHNlIH07CiAKLSAgICBXZWJLaXQ6OlByb2Nlc3NNb2RlbCBtX3Byb2Nlc3NNb2Rl
bCB7IFdlYktpdDo6UHJvY2Vzc01vZGVsTXVsdGlwbGVTZWNvbmRhcnlQcm9jZXNzZXMgfTsKICAg
ICBib29sIG1fdXNlTmV0d29ya1Byb2Nlc3MgeyB0cnVlIH07CiAgICAgdW5zaWduZWQgbV9tYXhp
bXVtUHJvY2Vzc0NvdW50IHsgMCB9OwogICAgIFdlYktpdDo6Q2FjaGVNb2RlbCBtX2NhY2hlTW9k
ZWwgeyBXZWJLaXQ6OkNhY2hlTW9kZWxQcmltYXJ5V2ViQnJvd3NlciB9OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9BUElTZXNzaW9uLmNwcCBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvQVBJU2Vzc2lvbi5jcHAKaW5kZXggYTI5NmU3Ni4uNmM0NjBkYyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9BUElTZXNzaW9uLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0FQSVNlc3Npb24uY3BwCkBAIC0yOCwx
MCArMjgsOCBAQAogCiAjaW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KIAotI2lmIEVOQUJMRShORVRX
T1JLX1BST0NFU1MpCiAjaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3NNZXNzYWdlcy5oIgogI2luY2x1
ZGUgIldlYlByb2Nlc3NQb29sLmgiCi0jZW5kaWYKIAogbmFtZXNwYWNlIEFQSSB7CiAKQEAgLTgw
LDEyICs3OCwxMCBAQCBXZWJDb3JlOjpTZXNzaW9uSUQgU2Vzc2lvbjo6Z2V0SUQoKSBjb25zdAog
CiBTZXNzaW9uOjp+U2Vzc2lvbigpCiB7Ci0jaWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKICAg
ICBpZiAobV9zZXNzaW9uSUQuaXNFcGhlbWVyYWwoKSkgewogICAgICAgICBmb3IgKGF1dG8mIHBy
b2Nlc3NQb29sIDogV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6YWxsUHJvY2Vzc1Bvb2xzKCkpCiAg
ICAgICAgICAgICBwcm9jZXNzUG9vbC0+c2VuZFRvTmV0d29ya2luZ1Byb2Nlc3MoTWVzc2FnZXM6
Ok5ldHdvcmtQcm9jZXNzOjpEZXN0cm95UHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbihtX3Nlc3Npb25J
RCkpOwogICAgIH0KLSNlbmRpZgogfQogCiB9IC8vIG5hbWVzcGFjZSBBUEkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0FQSUNhc3QuaCBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0FQSUNhc3QuaAppbmRleCA4Y2JiOGQ1Li40ODQ2ZWEzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tBUElDYXN0LmgKKysr
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLQVBJQ2FzdC5oCkBAIC0zMiw3ICsz
Miw2IEBACiAjaW5jbHVkZSAiSFRUUENvb2tpZUFjY2VwdFBvbGljeS5oIgogI2luY2x1ZGUgIklu
amVjdGVkQnVuZGxlSGl0VGVzdFJlc3VsdE1lZGlhVHlwZS5oIgogI2luY2x1ZGUgIlBsdWdpbk1v
ZHVsZUluZm8uaCIKLSNpbmNsdWRlICJQcm9jZXNzTW9kZWwuaCIKICNpbmNsdWRlICJSZXNvdXJj
ZUNhY2hlc1RvQ2xlYXIuaCIKICNpbmNsdWRlICJXS0J1bmRsZUhpdFRlc3RSZXN1bHQuaCIKICNp
bmNsdWRlICJXS0NvbnRleHQuaCIKQEAgLTIzMCwzMSArMjI5LDYgQEAgaW5saW5lIFdLQ2FjaGVN
b2RlbCB0b0FQSShDYWNoZU1vZGVsIGNhY2hlTW9kZWwpCiAgICAgcmV0dXJuIGtXS0NhY2hlTW9k
ZWxEb2N1bWVudFZpZXdlcjsKIH0KIAotaW5saW5lIFByb2Nlc3NNb2RlbCB0b1Byb2Nlc3NNb2Rl
bChXS1Byb2Nlc3NNb2RlbCB3a1Byb2Nlc3NNb2RlbCkKLXsKLSAgICBzd2l0Y2ggKHdrUHJvY2Vz
c01vZGVsKSB7Ci0gICAgY2FzZSBrV0tQcm9jZXNzTW9kZWxTaGFyZWRTZWNvbmRhcnlQcm9jZXNz
OgotICAgICAgICByZXR1cm4gUHJvY2Vzc01vZGVsU2hhcmVkU2Vjb25kYXJ5UHJvY2VzczsKLSAg
ICBjYXNlIGtXS1Byb2Nlc3NNb2RlbE11bHRpcGxlU2Vjb25kYXJ5UHJvY2Vzc2VzOgotICAgICAg
ICByZXR1cm4gUHJvY2Vzc01vZGVsTXVsdGlwbGVTZWNvbmRhcnlQcm9jZXNzZXM7Ci0gICAgfQot
Ci0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIFByb2Nlc3NNb2RlbFNoYXJl
ZFNlY29uZGFyeVByb2Nlc3M7Ci19Ci0KLWlubGluZSBXS1Byb2Nlc3NNb2RlbCB0b0FQSShQcm9j
ZXNzTW9kZWwgcHJvY2Vzc01vZGVsKQotewotICAgIHN3aXRjaCAocHJvY2Vzc01vZGVsKSB7Ci0g
ICAgY2FzZSBQcm9jZXNzTW9kZWxTaGFyZWRTZWNvbmRhcnlQcm9jZXNzOgotICAgICAgICByZXR1
cm4ga1dLUHJvY2Vzc01vZGVsU2hhcmVkU2Vjb25kYXJ5UHJvY2VzczsKLSAgICBjYXNlIFByb2Nl
c3NNb2RlbE11bHRpcGxlU2Vjb25kYXJ5UHJvY2Vzc2VzOgotICAgICAgICByZXR1cm4ga1dLUHJv
Y2Vzc01vZGVsTXVsdGlwbGVTZWNvbmRhcnlQcm9jZXNzZXM7Ci0gICAgfQotICAgIAotICAgIHJl
dHVybiBrV0tQcm9jZXNzTW9kZWxTaGFyZWRTZWNvbmRhcnlQcm9jZXNzOwotfQotCiBpbmxpbmUg
Rm9udFNtb290aGluZ0xldmVsIHRvRm9udFNtb290aGluZ0xldmVsKFdLRm9udFNtb290aGluZ0xl
dmVsIHdrTGV2ZWwpCiB7CiAgICAgc3dpdGNoICh3a0xldmVsKSB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHQuY3BwCmluZGV4IDcwMjUzMTMuLjg3Njg3OTIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHQuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHQuY3BwCkBAIC0zMjks
MTYgKzMyOSw2IEBAIFdLQ2FjaGVNb2RlbCBXS0NvbnRleHRHZXRDYWNoZU1vZGVsKFdLQ29udGV4
dFJlZiBjb250ZXh0UmVmKQogICAgIHJldHVybiB0b0FQSSh0b0ltcGwoY29udGV4dFJlZiktPmNh
Y2hlTW9kZWwoKSk7CiB9CiAKLXZvaWQgV0tDb250ZXh0U2V0UHJvY2Vzc01vZGVsKFdLQ29udGV4
dFJlZiBjb250ZXh0UmVmLCBXS1Byb2Nlc3NNb2RlbCBwcm9jZXNzTW9kZWwpCi17Ci0gICAgdG9J
bXBsKGNvbnRleHRSZWYpLT5zZXRQcm9jZXNzTW9kZWwodG9Qcm9jZXNzTW9kZWwocHJvY2Vzc01v
ZGVsKSk7Ci19Ci0KLVdLUHJvY2Vzc01vZGVsIFdLQ29udGV4dEdldFByb2Nlc3NNb2RlbChXS0Nv
bnRleHRSZWYgY29udGV4dFJlZikKLXsKLSAgICByZXR1cm4gdG9BUEkodG9JbXBsKGNvbnRleHRS
ZWYpLT5wcm9jZXNzTW9kZWwoKSk7Ci19Ci0KIHZvaWQgV0tDb250ZXh0U2V0TWF4aW11bU51bWJl
ck9mUHJvY2Vzc2VzKFdLQ29udGV4dFJlZiBjb250ZXh0UmVmLCB1bnNpZ25lZCBudW1iZXJPZlBy
b2Nlc3NlcykKIHsKICAgICB0b0ltcGwoY29udGV4dFJlZiktPnNldE1heGltdW1OdW1iZXJPZlBy
b2Nlc3NlcyhudW1iZXJPZlByb2Nlc3Nlcyk7CkBAIC01NTQsMTEgKzU0NCw2IEBAIHZvaWQgV0tD
b250ZXh0U2V0SmF2YVNjcmlwdEdhcmJhZ2VDb2xsZWN0b3JUaW1lckVuYWJsZWQoV0tDb250ZXh0
UmVmIGNvbnRleHRSZWYsCiAgICAgdG9JbXBsKGNvbnRleHRSZWYpLT5zZXRKYXZhU2NyaXB0R2Fy
YmFnZUNvbGxlY3RvclRpbWVyRW5hYmxlZChlbmFibGUpOwogfQogCi12b2lkIFdLQ29udGV4dFNl
dFVzZXNOZXR3b3JrUHJvY2VzcyhXS0NvbnRleHRSZWYgY29udGV4dFJlZiwgYm9vbCB1c2VzTmV0
d29ya1Byb2Nlc3MpCi17Ci0gICAgdG9JbXBsKGNvbnRleHRSZWYpLT5zZXRVc2VzTmV0d29ya1By
b2Nlc3ModXNlc05ldHdvcmtQcm9jZXNzKTsKLX0KLQogdm9pZCBXS0NvbnRleHRVc2VUZXN0aW5n
TmV0d29ya1Nlc3Npb24oV0tDb250ZXh0UmVmIGNvbnRleHQpCiB7CiAgICAgdG9JbXBsKGNvbnRl
eHQpLT51c2VUZXN0aW5nTmV0d29ya1Nlc3Npb24oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHQuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvQy9XS0NvbnRleHQuaAppbmRleCAxYjNkODJjLi42ZGUwMTNlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0LmgKKysrIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dC5oCkBAIC03NSw2ICs3NSw3IEBAIHR5cGVk
ZWYgc3RydWN0IFdLQ29udGV4dENsaWVudFYxIHsKICAgICBXS0NvbnRleHRDb3B5V2ViQ3J5cHRv
TWFzdGVyS2V5Q2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvcHlXZWJDcnlw
dG9NYXN0ZXJLZXk7CiB9IFdLQ29udGV4dENsaWVudFYxOwogCisvLyBGSVhNRTogVGhlc2UgY2Fu
IGJlIHJlbW92ZWQgb25jZSB3ZSBhcmUgbm8gbG9uZ2VyIHN1cHBvcnRpbmcgTWF2ZXJpY2tzLgog
ZW51bSB7CiAgICAga1dLUHJvY2Vzc01vZGVsU2hhcmVkU2Vjb25kYXJ5UHJvY2VzcyA9IDAsCiAg
ICAga1dLUHJvY2Vzc01vZGVsTXVsdGlwbGVTZWNvbmRhcnlQcm9jZXNzZXMgPSAxCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvbWFjL1dLQ29udGV4dFByaXZhdGVN
YWMubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvbWFjL1dLQ29udGV4dFByaXZh
dGVNYWMubW0KaW5kZXggOWEyOGRhYi4uNDNhMjM2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9DL21hYy9XS0NvbnRleHRQcml2YXRlTWFjLm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9tYWMvV0tDb250ZXh0UHJpdmF0ZU1hYy5tbQpAQCAt
MTY2LDEwICsxNjYsNSBAQCBib29sIFdLQ29udGV4dFNob3VsZFN1Z2dlc3RCbG9ja1dlYkdMKCkK
IAogcGlkX3QgV0tDb250ZXh0R2V0TmV0d29ya1Byb2Nlc3NJZGVudGlmaWVyKFdLQ29udGV4dFJl
ZiBjb250ZXh0UmVmKQogewotI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCiAgICAgcmV0dXJu
IHRvSW1wbChjb250ZXh0UmVmKS0+bmV0d29ya1Byb2Nlc3NJZGVudGlmaWVyKCk7Ci0jZWxzZQot
ICAgIFVOVVNFRF9QQVJBTShjb250ZXh0UmVmKTsKLSAgICByZXR1cm4gMDsKLSNlbmRpZgogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NH
cm91cC5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzR3Jv
dXAubW0KaW5kZXggODRhNzY4MS4uZWNmYzgwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NHcm91cC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc0dyb3VwLm1tCkBAIC0xOTIsMTAgKzE5Miw2
IEBAIHN0YXRpYyB2b2lkIHNldFVwSGlzdG9yeUNsaWVudChXS1Byb2Nlc3NHcm91cCAqcHJvY2Vz
c0dyb3VwLCBXS0NvbnRleHRSZWYgY29udGV4CiAKICAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBB
UEk6OlByb2Nlc3NQb29sQ29uZmlndXJhdGlvbjo6Y3JlYXRlV2l0aExlZ2FjeU9wdGlvbnMoKTsK
ICAgICBjb25maWd1cmF0aW9uLT5zZXRJbmplY3RlZEJ1bmRsZVBhdGgoYnVuZGxlVVJMID8gU3Ry
aW5nKGJ1bmRsZVVSTC5wYXRoKSA6IFN0cmluZygpKTsKLSNpZiBQTEFURk9STShJT1MpCi0gICAg
Y29uZmlndXJhdGlvbi0+c2V0VXNlTmV0d29ya1Byb2Nlc3ModHJ1ZSk7Ci0gICAgY29uZmlndXJh
dGlvbi0+c2V0UHJvY2Vzc01vZGVsKFByb2Nlc3NNb2RlbE11bHRpcGxlU2Vjb25kYXJ5UHJvY2Vz
c2VzKTsKLSNlbmRpZgogCiAgICAgX3Byb2Nlc3NQb29sID0gV2ViUHJvY2Vzc1Bvb2w6OmNyZWF0
ZShjb25maWd1cmF0aW9uKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29sLm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS1Byb2Nlc3NQb29sLm1tCmluZGV4IDk2ODFhZTguLjE4ZmRhNTAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9vbC5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc1Bvb2wubW0K
QEAgLTMwLDcgKzMwLDYgQEAKIAogI2ltcG9ydCAiQ2FjaGVNb2RlbC5oIgogI2ltcG9ydCAiRG93
bmxvYWRDbGllbnQuaCIKLSNpbXBvcnQgIlByb2Nlc3NNb2RlbC5oIgogI2ltcG9ydCAiU2FuZGJv
eFV0aWxpdGllcy5oIgogI2ltcG9ydCAiV0tPYmplY3QuaCIKICNpbXBvcnQgIldlYWtPYmpDUHRy
LmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29u
dGV4dC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29udGV4dC5j
cHAKaW5kZXggODU3MDM1MC4uNjk3MTlkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9lZmwvZXdrX2NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvZWZsL2V3a19jb250ZXh0LmNwcApAQCAtNTcwLDI5ICs1NzAsMTggQEAgdm9pZCBl
d2tfY29udGV4dF9tZXNzYWdlX2Zyb21fZXh0ZW5zaW9uc19jYWxsYmFja19zZXQoRXdrX0NvbnRl
eHQqIGV3a0NvbnRleHQsIEUKIAogRWluYV9Cb29sIGV3a19jb250ZXh0X3Byb2Nlc3NfbW9kZWxf
c2V0KEV3a19Db250ZXh0KiBld2tDb250ZXh0LCBFd2tfUHJvY2Vzc19Nb2RlbCBwcm9jZXNzTW9k
ZWwpCiB7Ci0jaWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKICAgICBFV0tfT0JKX0dFVF9JTVBM
X09SX1JFVFVSTihFd2tDb250ZXh0LCBld2tDb250ZXh0LCBpbXBsLCBmYWxzZSk7CiAKICAgICBp
bXBsLT5zZXRQcm9jZXNzTW9kZWwocHJvY2Vzc01vZGVsKTsKIAogICAgIHJldHVybiB0cnVlOwot
I2Vsc2UKLSAgICBVTlVTRURfUEFSQU0oZXdrQ29udGV4dCk7Ci0gICAgVU5VU0VEX1BBUkFNKHBy
b2Nlc3NNb2RlbCk7Ci0gICAgcmV0dXJuIGZhbHNlOwotI2VuZGlmCiB9CiAKIEV3a19Qcm9jZXNz
X01vZGVsIGV3a19jb250ZXh0X3Byb2Nlc3NfbW9kZWxfZ2V0KGNvbnN0IEV3a19Db250ZXh0KiBl
d2tDb250ZXh0KQogewotI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCiAgICAgRVdLX09CSl9H
RVRfSU1QTF9PUl9SRVRVUk4oY29uc3QgRXdrQ29udGV4dCwgZXdrQ29udGV4dCwgaW1wbCwgRVdL
X1BST0NFU1NfTU9ERUxfU0hBUkVEX1NFQ09OREFSWSk7CiAKICAgICByZXR1cm4gaW1wbC0+cHJv
Y2Vzc01vZGVsKCk7Ci0jZWxzZQotICAgIFVOVVNFRF9QQVJBTShld2tDb250ZXh0KTsKLSAgICBy
ZXR1cm4gRVdLX1BST0NFU1NfTU9ERUxfU0hBUkVEX1NFQ09OREFSWTsKLSNlbmRpZgogfQogCiBF
d2tfVExTX0Vycm9yX1BvbGljeSBld2tfY29udGV4dF90bHNfZXJyb3JfcG9saWN5X2dldChjb25z
dCBFd2tfQ29udGV4dCogY29udGV4dCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvZ3RrL1dlYktpdFdlYkNvbnRleHQuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9ndGsvV2ViS2l0V2ViQ29udGV4dC5jcHAKaW5kZXggOWZiYzUxMS4uOTVhMzhiYyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViQ29u
dGV4dC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2Vi
Q29udGV4dC5jcHAKQEAgLTE3OSw2ICsxNzksOCBAQCBzdHJ1Y3QgX1dlYktpdFdlYkNvbnRleHRQ
cml2YXRlIHsKIAogICAgIENTdHJpbmcgZmF2aWNvbkRhdGFiYXNlRGlyZWN0b3J5OwogICAgIFdl
YktpdFRMU0Vycm9yc1BvbGljeSB0bHNFcnJvcnNQb2xpY3k7CisgICAgV2ViS2l0UHJvY2Vzc01v
ZGVsIHByb2Nlc3NNb2RlbDsKKyAgICB1bnNpZ25lZCBwcm9jZXNzQ291bnRMaW1pdDsKIAogICAg
IEhhc2hNYXA8dWludDY0X3QsIFdlYktpdFdlYlZpZXcqPiB3ZWJWaWV3czsKIApAQCAtMTkzLDMy
ICsxOTUsNiBAQCBzdGF0aWMgZ3VpbnQgc2lnbmFsc1tMQVNUX1NJR05BTF0gPSB7IDAsIH07CiAK
IFdFQktJVF9ERUZJTkVfVFlQRShXZWJLaXRXZWJDb250ZXh0LCB3ZWJraXRfd2ViX2NvbnRleHQs
IEdfVFlQRV9PQkpFQ1QpCiAKLXN0YXRpYyBpbmxpbmUgV2ViS2l0OjpQcm9jZXNzTW9kZWwgdG9Q
cm9jZXNzTW9kZWwoV2ViS2l0UHJvY2Vzc01vZGVsIHdlYktpdFByb2Nlc3NNb2RlbCkKLXsKLSAg
ICBzd2l0Y2ggKHdlYktpdFByb2Nlc3NNb2RlbCkgewotICAgIGNhc2UgV0VCS0lUX1BST0NFU1Nf
TU9ERUxfU0hBUkVEX1NFQ09OREFSWV9QUk9DRVNTOgotICAgICAgICByZXR1cm4gUHJvY2Vzc01v
ZGVsU2hhcmVkU2Vjb25kYXJ5UHJvY2VzczsKLSAgICBjYXNlIFdFQktJVF9QUk9DRVNTX01PREVM
X01VTFRJUExFX1NFQ09OREFSWV9QUk9DRVNTRVM6Ci0gICAgICAgIHJldHVybiBQcm9jZXNzTW9k
ZWxNdWx0aXBsZVNlY29uZGFyeVByb2Nlc3NlczsKLSAgICBkZWZhdWx0OgotICAgICAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgcmV0dXJuIFByb2Nlc3NNb2RlbFNoYXJlZFNlY29u
ZGFyeVByb2Nlc3M7Ci0gICAgfQotfQotCi1zdGF0aWMgaW5saW5lIFdlYktpdFByb2Nlc3NNb2Rl
bCB0b1dlYktpdFByb2Nlc3NNb2RlbChXZWJLaXQ6OlByb2Nlc3NNb2RlbCBwcm9jZXNzTW9kZWwp
Ci17Ci0gICAgc3dpdGNoIChwcm9jZXNzTW9kZWwpIHsKLSAgICBjYXNlIFByb2Nlc3NNb2RlbFNo
YXJlZFNlY29uZGFyeVByb2Nlc3M6Ci0gICAgICAgIHJldHVybiBXRUJLSVRfUFJPQ0VTU19NT0RF
TF9TSEFSRURfU0VDT05EQVJZX1BST0NFU1M7Ci0gICAgY2FzZSBQcm9jZXNzTW9kZWxNdWx0aXBs
ZVNlY29uZGFyeVByb2Nlc3NlczoKLSAgICAgICAgcmV0dXJuIFdFQktJVF9QUk9DRVNTX01PREVM
X01VTFRJUExFX1NFQ09OREFSWV9QUk9DRVNTRVM7Ci0gICAgZGVmYXVsdDoKLSAgICAgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIHJldHVybiBXRUJLSVRfUFJPQ0VTU19NT0RFTF9T
SEFSRURfU0VDT05EQVJZX1BST0NFU1M7Ci0gICAgfQotfQotCiBzdGF0aWMgY29uc3QgY2hhciog
aW5qZWN0ZWRCdW5kbGVEaXJlY3RvcnkoKQogewogI2lmIEVOQUJMRShERVZFTE9QRVJfTU9ERSkK
QEAgLTI4NSw4ICsyNjEsNyBAQCBzdGF0aWMgdm9pZCB3ZWJraXRXZWJDb250ZXh0Q29uc3RydWN0
ZWQoR09iamVjdCogb2JqZWN0KQogCiAgICAgQVBJOjpQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24g
Y29uZmlndXJhdGlvbjsKICAgICBjb25maWd1cmF0aW9uLnNldEluamVjdGVkQnVuZGxlUGF0aChX
ZWJDb3JlOjpmaWxlbmFtZVRvU3RyaW5nKGJ1bmRsZUZpbGVuYW1lLmdldCgpKSk7Ci0gICAgY29u
ZmlndXJhdGlvbi5zZXRQcm9jZXNzTW9kZWwoUHJvY2Vzc01vZGVsU2hhcmVkU2Vjb25kYXJ5UHJv
Y2Vzcyk7Ci0gICAgY29uZmlndXJhdGlvbi5zZXRVc2VOZXR3b3JrUHJvY2VzcyhmYWxzZSk7Cisg
ICAgY29uZmlndXJhdGlvbi5zZXRNYXhpbXVtUHJvY2Vzc0NvdW50KDEpOwogCiAgICAgV2ViS2l0
V2ViQ29udGV4dCogd2ViQ29udGV4dCA9IFdFQktJVF9XRUJfQ09OVEVYVChvYmplY3QpOwogICAg
IFdlYktpdFdlYkNvbnRleHRQcml2YXRlKiBwcml2ID0gd2ViQ29udGV4dC0+cHJpdjsKQEAgLTEx
NjksMTMgKzExNDQsMTggQEAgdm9pZCB3ZWJraXRfd2ViX2NvbnRleHRfc2V0X3Byb2Nlc3NfbW9k
ZWwoV2ViS2l0V2ViQ29udGV4dCogY29udGV4dCwgV2ViS2l0UHJvY2UKIHsKICAgICBnX3JldHVy
bl9pZl9mYWlsKFdFQktJVF9JU19XRUJfQ09OVEVYVChjb250ZXh0KSk7CiAKLSAgICBQcm9jZXNz
TW9kZWwgbmV3UHJvY2Vzc01vZGVsKHRvUHJvY2Vzc01vZGVsKHByb2Nlc3NNb2RlbCkpOwotCi0g
ICAgaWYgKG5ld1Byb2Nlc3NNb2RlbCA9PSBjb250ZXh0LT5wcml2LT5jb250ZXh0LT5wcm9jZXNz
TW9kZWwoKSkKKyAgICBpZiAocHJvY2Vzc01vZGVsID09IGNvbnRleHQtPnByaXYtPnByb2Nlc3NN
b2RlbCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgY29udGV4dC0+cHJpdi0+Y29udGV4dC0+c2V0
VXNlc05ldHdvcmtQcm9jZXNzKG5ld1Byb2Nlc3NNb2RlbCA9PSBQcm9jZXNzTW9kZWxNdWx0aXBs
ZVNlY29uZGFyeVByb2Nlc3Nlcyk7Ci0gICAgY29udGV4dC0+cHJpdi0+Y29udGV4dC0+c2V0UHJv
Y2Vzc01vZGVsKG5ld1Byb2Nlc3NNb2RlbCk7CisgICAgY29udGV4dC0+cHJpdi0+cHJvY2Vzc01v
ZGVsID0gcHJvY2Vzc01vZGVsOworICAgIHN3aXRjaCAoY29udGV4dC0+cHJpdi0+cHJvY2Vzc01v
ZGVsKSB7CisgICAgY2FzZSBXRUJLSVRfUFJPQ0VTU19NT0RFTF9TSEFSRURfU0VDT05EQVJZX1BS
T0NFU1M6CisgICAgICAgIGNvbnRleHQtPnByaXYtPmNvbnRleHQtPnNldE1heGltdW1OdW1iZXJP
ZlByb2Nlc3NlcygxKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBXRUJLSVRfUFJPQ0VTU19N
T0RFTF9NVUxUSVBMRV9TRUNPTkRBUllfUFJPQ0VTU0VTOgorICAgICAgICBjb250ZXh0LT5wcml2
LT5jb250ZXh0LT5zZXRNYXhpbXVtTnVtYmVyT2ZQcm9jZXNzZXMoY29udGV4dC0+cHJpdi0+cHJv
Y2Vzc0NvdW50TGltaXQpOworICAgICAgICBicmVhazsKKyAgICB9CiB9CiAKIC8qKgpAQCAtMTE5
Myw3ICsxMTczLDcgQEAgV2ViS2l0UHJvY2Vzc01vZGVsIHdlYmtpdF93ZWJfY29udGV4dF9nZXRf
cHJvY2Vzc19tb2RlbChXZWJLaXRXZWJDb250ZXh0KiBjb250ZXgKIHsKICAgICBnX3JldHVybl92
YWxfaWZfZmFpbChXRUJLSVRfSVNfV0VCX0NPTlRFWFQoY29udGV4dCksIFdFQktJVF9QUk9DRVNT
X01PREVMX1NIQVJFRF9TRUNPTkRBUllfUFJPQ0VTUyk7CiAKLSAgICByZXR1cm4gdG9XZWJLaXRQ
cm9jZXNzTW9kZWwoY29udGV4dC0+cHJpdi0+Y29udGV4dC0+cHJvY2Vzc01vZGVsKCkpOworICAg
IHJldHVybiBjb250ZXh0LT5wcml2LT5wcm9jZXNzTW9kZWw7CiB9CiAKIC8qKgpAQCAtMTIxNCwx
MCArMTE5NCwxMiBAQCB2b2lkIHdlYmtpdF93ZWJfY29udGV4dF9zZXRfd2ViX3Byb2Nlc3NfY291
bnRfbGltaXQoV2ViS2l0V2ViQ29udGV4dCogY29udGV4dCwgZwogewogICAgIGdfcmV0dXJuX2lm
X2ZhaWwoV0VCS0lUX0lTX1dFQl9DT05URVhUKGNvbnRleHQpKTsKIAotICAgIGlmIChsaW1pdCA9
PSBjb250ZXh0LT5wcml2LT5jb250ZXh0LT5jb25maWd1cmF0aW9uKCkubWF4aW11bVByb2Nlc3ND
b3VudCgpKQorICAgIGlmIChjb250ZXh0LT5wcml2LT5wcm9jZXNzQ291bnRMaW1pdCA9PSBsaW1p
dCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgY29udGV4dC0+cHJpdi0+Y29udGV4dC0+c2V0TWF4
aW11bU51bWJlck9mUHJvY2Vzc2VzKGxpbWl0KTsKKyAgICBjb250ZXh0LT5wcml2LT5wcm9jZXNz
Q291bnRMaW1pdCA9IGxpbWl0OworICAgIGlmIChjb250ZXh0LT5wcml2LT5wcm9jZXNzTW9kZWwg
IT0gV0VCS0lUX1BST0NFU1NfTU9ERUxfU0hBUkVEX1NFQ09OREFSWV9QUk9DRVNTKQorICAgICAg
ICBjb250ZXh0LT5wcml2LT5jb250ZXh0LT5zZXRNYXhpbXVtTnVtYmVyT2ZQcm9jZXNzZXMobGlt
aXQpOwogfQogCiAvKioKQEAgLTEyMzQsNyArMTIxNiw3IEBAIGd1aW50IHdlYmtpdF93ZWJfY29u
dGV4dF9nZXRfd2ViX3Byb2Nlc3NfY291bnRfbGltaXQoV2ViS2l0V2ViQ29udGV4dCogY29udGV4
dCkKIHsKICAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfSVNfV0VCX0NPTlRFWFQoY29u
dGV4dCksIDApOwogCi0gICAgcmV0dXJuIGNvbnRleHQtPnByaXYtPmNvbnRleHQtPmNvbmZpZ3Vy
YXRpb24oKS5tYXhpbXVtUHJvY2Vzc0NvdW50KCk7CisgICAgcmV0dXJuIGNvbnRleHQtPnByaXYt
PnByb2Nlc3NDb3VudExpbWl0OwogfQogCiBXZWJLaXREb3dubG9hZCogd2Via2l0V2ViQ29udGV4
dEdldE9yQ3JlYXRlRG93bmxvYWQoRG93bmxvYWRQcm94eSogZG93bmxvYWRQcm94eSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUG9vbENvY29h
Lm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQb29sQ29jb2Eu
bW0KaW5kZXggZmQxMDgzZi4uN2Q0ZjQ5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQb29sQ29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQb29sQ29jb2EubW0KQEAgLTI2LDYgKzI2LDggQEAK
ICNpbXBvcnQgImNvbmZpZy5oIgogI2ltcG9ydCAiV2ViUHJvY2Vzc1Bvb2wuaCIKIAorI2ltcG9y
dCAiTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaCIKKyNpbXBvcnQgIk5ldHdvcmtQ
cm9jZXNzUHJveHkuaCIKICNpbXBvcnQgIlBsdWdpblByb2Nlc3NNYW5hZ2VyLmgiCiAjaW1wb3J0
ICJTYW5kYm94VXRpbGl0aWVzLmgiCiAjaW1wb3J0ICJUZXh0Q2hlY2tlci5oIgpAQCAtNDcsMTEg
KzQ5LDYgQEAKICNpbXBvcnQgPFdlYkNvcmUvUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzLmg+CiAj
aW1wb3J0IDxzeXMvcGFyYW0uaD4KIAotI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCi0jaW1w
b3J0ICJOZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oIgotI2ltcG9ydCAiTmV0d29y
a1Byb2Nlc3NQcm94eS5oIgotI2VuZGlmCi0KICNpZiBQTEFURk9STShJT1MpCiAjaW1wb3J0ICJB
cmd1bWVudENvZGVyc0NGLmgiCiAjaW1wb3J0ICJXZWJNZW1vcnlQcmVzc3VyZUhhbmRsZXJJT1Mu
aCIKQEAgLTc2LDEwICs3Myw4IEBAIHN0YXRpYyBOU1N0cmluZyAqV2ViS2l0QXBwbGljYXRpb25E
aWRDaGFuZ2VBY2Nlc3NpYmlsaXR5RW5oYW5jZWRVc2VySW50ZXJmYWNlTm90CiAvLyBGSVhNRTog
PHJkYXI6Ly9wcm9ibGVtLzkxMzg4MTc+IC0gQWZ0ZXIgdGhpcyAiYmFja3dhcmRzIGNvbXBhdGli
aWxpdHkiIHJhZGFyIGlzIHJlbW92ZWQsIHRoaXMgY29kZSBzaG91bGQgYmUgcmVtb3ZlZCB0byBv
bmx5IHJldHVybiBhbiBlbXB0eSBTdHJpbmcuCiBOU1N0cmluZyAqV2ViSWNvbkRhdGFiYXNlRGly
ZWN0b3J5RGVmYXVsdHNLZXkgPSBAIldlYkljb25EYXRhYmFzZURpcmVjdG9yeURlZmF1bHRzS2V5
IjsKIAotI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCiBzdGF0aWMgTlNTdHJpbmcgKiBjb25z
dCBXZWJLaXQySFRUUFByb3h5RGVmYXVsdHNLZXkgPSBAIldlYktpdDJIVFRQUHJveHkiOwogc3Rh
dGljIE5TU3RyaW5nICogY29uc3QgV2ViS2l0MkhUVFBTUHJveHlEZWZhdWx0c0tleSA9IEAiV2Vi
S2l0MkhUVFBTUHJveHkiOwotI2VuZGlmCiAKICNpZiBFTkFCTEUoTkVUV09SS19DQUNIRSkKIHN0
YXRpYyBOU1N0cmluZyAqIGNvbnN0IFdlYktpdE5ldHdvcmtDYWNoZUVuYWJsZWREZWZhdWx0c0tl
eSA9IEAiV2ViS2l0TmV0d29ya0NhY2hlRW5hYmxlZCI7CkBAIC0xMTksMTAgKzExNCw4IEBAIHN0
YXRpYyB2b2lkIHJlZ2lzdGVyVXNlckRlZmF1bHRzSWZOZWVkZWQoKQogCiB2b2lkIFdlYlByb2Nl
c3NQb29sOjp1cGRhdGVQcm9jZXNzU3VwcHJlc3Npb25TdGF0ZSgpCiB7Ci0jaWYgRU5BQkxFKE5F
VFdPUktfUFJPQ0VTUykKLSAgICBpZiAodXNlc05ldHdvcmtQcm9jZXNzKCkgJiYgbV9uZXR3b3Jr
UHJvY2VzcykKKyAgICBpZiAobV9uZXR3b3JrUHJvY2VzcykKICAgICAgICAgbV9uZXR3b3JrUHJv
Y2Vzcy0+c2V0UHJvY2Vzc1N1cHByZXNzaW9uRW5hYmxlZChwcm9jZXNzU3VwcHJlc3Npb25FbmFi
bGVkKCkpOwotI2VuZGlmCiAKICNpZiBFTkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQSSkKICAgICBp
ZiAoIW1fcHJvY2Vzc1N1cHByZXNzaW9uRGlzYWJsZWRGb3JQYWdlQ291bnRlci52YWx1ZSgpKQpA
QCAtMTk3LDE1ICsxOTAsNiBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpwbGF0Zm9ybUluaXRpYWxp
emVXZWJQcm9jZXNzKFdlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMmCiAKICAgICBwYXJhbWV0
ZXJzLnVpUHJvY2Vzc0J1bmRsZUlkZW50aWZpZXIgPSBTdHJpbmcoW1tOU0J1bmRsZSBtYWluQnVu
ZGxlXSBidW5kbGVJZGVudGlmaWVyXSk7CiAKLSNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQot
ICAgIGlmICghdXNlc05ldHdvcmtQcm9jZXNzKCkpIHsKLSNlbmRpZgotICAgICAgICBmb3IgKGNv
bnN0IGF1dG8mIHNjaGVtZSA6IGdsb2JhbFVSTFNjaGVtZXNXaXRoQ3VzdG9tUHJvdG9jb2xIYW5k
bGVycygpKQotICAgICAgICAgICAgcGFyYW1ldGVycy51cmxTY2hlbWVzUmVnaXN0ZXJlZEZvckN1
c3RvbVByb3RvY29scy5hcHBlbmQoc2NoZW1lKTsKLSNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNT
KQotICAgIH0KLSNlbmRpZgotCiAgICAgcGFyYW1ldGVycy5mb250V2hpdGVsaXN0ID0gbV9mb250
V2hpdGVsaXN0OwogCiAgICAgaWYgKG1fYnVuZGxlUGFyYW1ldGVycykgewpAQCAtMjM2LDcgKzIy
MCw2IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnBsYXRmb3JtSW5pdGlhbGl6ZVdlYlByb2Nlc3Mo
V2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycyYKICNlbmRpZgogfQogCi0jaWYgRU5BQkxFKE5F
VFdPUktfUFJPQ0VTUykKIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnBsYXRmb3JtSW5pdGlhbGl6ZU5l
dHdvcmtQcm9jZXNzKE5ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzJiBwYXJhbWV0ZXJz
KQogewogICAgIE5TVVJMQ2FjaGUgKnVybENhY2hlID0gW05TVVJMQ2FjaGUgc2hhcmVkVVJMQ2Fj
aGVdOwpAQCAtMjcxLDcgKzI1NCw2IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnBsYXRmb3JtSW5p
dGlhbGl6ZU5ldHdvcmtQcm9jZXNzKE5ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhCiAgICAgcGFy
YW1ldGVycy51aVByb2Nlc3NDb29raWVTdG9yYWdlSWRlbnRpZmllci5hcHBlbmQoQ0ZEYXRhR2V0
Qnl0ZVB0cihjb29raWVTdG9yYWdlRGF0YS5nZXQoKSksIENGRGF0YUdldExlbmd0aChjb29raWVT
dG9yYWdlRGF0YS5nZXQoKSkpOwogI2VuZGlmCiB9Ci0jZW5kaWYKIAogdm9pZCBXZWJQcm9jZXNz
UG9vbDo6cGxhdGZvcm1JbnZhbGlkYXRlQ29udGV4dCgpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkUHJveHkuY3BwIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZFByb3h5LmNwcAppbmRleCBlNTA1ZDA0
Li40YWNiNTQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvRG93bmxvYWRz
L0Rvd25sb2FkUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Eb3dubG9h
ZHMvRG93bmxvYWRQcm94eS5jcHAKQEAgLTMxLDE2ICszMSwxMyBAQAogI2luY2x1ZGUgIkF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlUHJveHkuaCIKICNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCiAj
aW5jbHVkZSAiRG93bmxvYWRQcm94eU1hcC5oIgorI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzTWVz
c2FnZXMuaCIKKyNpbmNsdWRlICJOZXR3b3JrUHJvY2Vzc1Byb3h5LmgiCiAjaW5jbHVkZSAiV2Vi
UHJvY2Vzc01lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc1Bvb2wuaCIKICNpbmNsdWRl
IDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAK
LSNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQotI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzTWVz
c2FnZXMuaCIKLSNpbmNsdWRlICJOZXR3b3JrUHJvY2Vzc1Byb3h5LmgiCi0jZW5kaWYKLQogdXNp
bmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtNzQsMTUgKzcx
LDggQEAgdm9pZCBEb3dubG9hZFByb3h5OjpjYW5jZWwoKQogICAgIGlmICghbV9wcm9jZXNzUG9v
bCkKICAgICAgICAgcmV0dXJuOwogCi0jaWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKLSAgICBp
ZiAobV9wcm9jZXNzUG9vbC0+dXNlc05ldHdvcmtQcm9jZXNzKCkpIHsKLSAgICAgICAgaWYgKE5l
dHdvcmtQcm9jZXNzUHJveHkqIG5ldHdvcmtQcm9jZXNzID0gbV9wcm9jZXNzUG9vbC0+bmV0d29y
a1Byb2Nlc3MoKSkKLSAgICAgICAgICAgIG5ldHdvcmtQcm9jZXNzLT5jb25uZWN0aW9uKCktPnNl
bmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpDYW5jZWxEb3dubG9hZChtX2Rvd25sb2FkSUQp
LCAwKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSNlbmRpZgotCi0gICAgbV9wcm9jZXNzUG9v
bC0+c2VuZFRvQWxsUHJvY2Vzc2VzKE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpDYW5jZWxEb3dubG9h
ZChtX2Rvd25sb2FkSUQpKTsKKyAgICBpZiAoTmV0d29ya1Byb2Nlc3NQcm94eSogbmV0d29ya1By
b2Nlc3MgPSBtX3Byb2Nlc3NQb29sLT5uZXR3b3JrUHJvY2VzcygpKQorICAgICAgICBuZXR3b3Jr
UHJvY2Vzcy0+Y29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6Q2Fu
Y2VsRG93bmxvYWQobV9kb3dubG9hZElEKSwgMCk7CiB9CiAKIHZvaWQgRG93bmxvYWRQcm94eTo6
aW52YWxpZGF0ZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTGF1bmNo
ZXIvUHJvY2Vzc0xhdW5jaGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9MYXVuY2hl
ci9Qcm9jZXNzTGF1bmNoZXIuY3BwCmluZGV4IDc2ZWE3MWYuLjJlNzk4NTEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9MYXVuY2hlci9Qcm9jZXNzTGF1bmNoZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9MYXVuY2hlci9Qcm9jZXNzTGF1bmNoZXIuY3Bw
CkBAIC04NCwxMCArODQsOCBAQCBjb25zdCBjaGFyKiBQcm9jZXNzTGF1bmNoZXI6OnByb2Nlc3NU
eXBlQXNTdHJpbmcoUHJvY2Vzc1R5cGUgcHJvY2Vzc1R5cGUpCiAgICAgY2FzZSBQbHVnaW5Qcm9j
ZXNzOgogICAgICAgICByZXR1cm4gInBsdWdpbnByb2Nlc3MiOwogI2VuZGlmCi0jaWYgRU5BQkxF
KE5FVFdPUktfUFJPQ0VTUykKICAgICBjYXNlIE5ldHdvcmtQcm9jZXNzOgogICAgICAgICByZXR1
cm4gIm5ldHdvcmtwcm9jZXNzIjsKLSNlbmRpZgogI2lmIEVOQUJMRShEQVRBQkFTRV9QUk9DRVNT
KQogICAgIGNhc2UgRGF0YWJhc2VQcm9jZXNzOgogICAgICAgICByZXR1cm4gImRhdGFiYXNlcHJv
Y2VzcyI7CkBAIC0xMTIsMTIgKzExMCwxMCBAQCBib29sIFByb2Nlc3NMYXVuY2hlcjo6Z2V0UHJv
Y2Vzc1R5cGVGcm9tU3RyaW5nKGNvbnN0IGNoYXIqIHN0cmluZywgUHJvY2Vzc1R5cGUmCiAgICAg
fQogI2VuZGlmCiAKLSNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQogICAgIGlmICghc3RyY21w
KHN0cmluZywgIm5ldHdvcmtwcm9jZXNzIikpIHsKICAgICAgICAgcHJvY2Vzc1R5cGUgPSBOZXR3
b3JrUHJvY2VzczsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQotI2VuZGlmCiAKICNpZiBF
TkFCTEUoREFUQUJBU0VfUFJPQ0VTUykKICAgICBpZiAoIXN0cmNtcChzdHJpbmcsICJkYXRhYmFz
ZXByb2Nlc3MiKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0xhdW5j
aGVyL1Byb2Nlc3NMYXVuY2hlci5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0xhdW5jaGVy
L1Byb2Nlc3NMYXVuY2hlci5oCmluZGV4IGZlN2RhOGUuLjIwMGRiYWU0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTGF1bmNoZXIvUHJvY2Vzc0xhdW5jaGVyLmgKKysrIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0xhdW5jaGVyL1Byb2Nlc3NMYXVuY2hlci5oCkBAIC01
MCw5ICs1MCw3IEBAIHB1YmxpYzoKICNpZiBFTkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQSSkKICAg
ICAgICAgUGx1Z2luUHJvY2VzcywKICNlbmRpZgotI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1Mp
CiAgICAgICAgIE5ldHdvcmtQcm9jZXNzLAotI2VuZGlmCiAjaWYgRU5BQkxFKERBVEFCQVNFX1BS
T0NFU1MpCiAgICAgICAgIERhdGFiYXNlUHJvY2VzcywKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0xhdW5jaGVyL2VmbC9Qcm9jZXNzTGF1bmNoZXJFZmwuY3Bw
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0xhdW5jaGVyL2VmbC9Qcm9jZXNzTGF1bmNoZXJF
ZmwuY3BwCmluZGV4IDRjNjAxZDIuLmUyYTYwOTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9MYXVuY2hlci9lZmwvUHJvY2Vzc0xhdW5jaGVyRWZsLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvTGF1bmNoZXIvZWZsL1Byb2Nlc3NMYXVuY2hlckVmbC5jcHAK
QEAgLTExNCwxMSArMTE0LDkgQEAgdm9pZCBQcm9jZXNzTGF1bmNoZXI6OmxhdW5jaFByb2Nlc3Mo
KQogICAgICAgICBwbHVnaW5QYXRoID0gbV9sYXVuY2hPcHRpb25zLmV4dHJhSW5pdGlhbGl6YXRp
b25EYXRhLmdldCgicGx1Z2luLXBhdGgiKTsKICAgICAgICAgYnJlYWs7CiAjZW5kaWYKLSNpZiBF
TkFCTEUoTkVUV09SS19QUk9DRVNTKQogICAgIGNhc2UgTmV0d29ya1Byb2Nlc3M6CiAgICAgICAg
IGV4ZWN1dGFibGVQYXRoID0gZXhlY3V0YWJsZVBhdGhPZk5ldHdvcmtQcm9jZXNzKCk7CiAgICAg
ICAgIGJyZWFrOwotI2VuZGlmCiAjaWYgRU5BQkxFKERBVEFCQVNFX1BST0NFU1MpCiAgICAgY2Fz
ZSBEYXRhYmFzZVByb2Nlc3M6CiAgICAgICAgIGV4ZWN1dGFibGVQYXRoID0gZXhlY3V0YWJsZVBh
dGhPZkRhdGFiYXNlUHJvY2VzcygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0xhdW5jaGVyL2d0ay9Qcm9jZXNzTGF1bmNoZXJHdGsuY3BwIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0xhdW5jaGVyL2d0ay9Qcm9jZXNzTGF1bmNoZXJHdGsuY3BwCmluZGV4IDlkNDE2
YTguLjQzNWIxMzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9MYXVuY2hl
ci9ndGsvUHJvY2Vzc0xhdW5jaGVyR3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvTGF1bmNoZXIvZ3RrL1Byb2Nlc3NMYXVuY2hlckd0ay5jcHAKQEAgLTc2LDExICs3Niw5IEBA
IHZvaWQgUHJvY2Vzc0xhdW5jaGVyOjpsYXVuY2hQcm9jZXNzKCkKICAgICAgICAgcmVhbFBsdWdp
blBhdGggPSBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGx1Z2luUGF0aCk7CiAgICAgICAgIGJy
ZWFrOwogI2VuZGlmCi0jaWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKICAgICBjYXNlIE5ldHdv
cmtQcm9jZXNzOgogICAgICAgICBleGVjdXRhYmxlUGF0aCA9IGV4ZWN1dGFibGVQYXRoT2ZOZXR3
b3JrUHJvY2VzcygpOwogICAgICAgICBicmVhazsKLSNlbmRpZgogI2lmIEVOQUJMRShEQVRBQkFT
RV9QUk9DRVNTKQogICAgIGNhc2UgRGF0YWJhc2VQcm9jZXNzOgogICAgICAgICBleGVjdXRhYmxl
UGF0aCA9IGV4ZWN1dGFibGVQYXRoT2ZEYXRhYmFzZVByb2Nlc3MoKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9MYXVuY2hlci9tYWMvUHJvY2Vzc0xhdW5jaGVyTWFjLm1t
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0xhdW5jaGVyL21hYy9Qcm9jZXNzTGF1bmNoZXJN
YWMubW0KaW5kZXggNDUzNjg0OC4uNmNjNjFiMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0xhdW5jaGVyL21hYy9Qcm9jZXNzTGF1bmNoZXJNYWMubW0KKysrIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0xhdW5jaGVyL21hYy9Qcm9jZXNzTGF1bmNoZXJNYWMubW0KQEAg
LTEwNSwxNCArMTA1LDEyIEBAIHN0YXRpYyBSZXRhaW5QdHI8TlNTdHJpbmc+IGNvbXB1dGVQcm9j
ZXNzU2hpbVBhdGgoY29uc3QgUHJvY2Vzc0xhdW5jaGVyOjpMYXVuY2hPCiAgICAgfQogI2VuZGlm
CiAKLSNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQogICAgIGlmIChsYXVuY2hPcHRpb25zLnBy
b2Nlc3NUeXBlID09IFByb2Nlc3NMYXVuY2hlcjo6TmV0d29ya1Byb2Nlc3MpIHsKICAgICAgICAg
TlNTdHJpbmcgKnByb2Nlc3NQYXRoID0gW3dlYktpdEJ1bmRsZSBwYXRoRm9yQXV4aWxpYXJ5RXhl
Y3V0YWJsZTpAIk5ldHdvcmtQcm9jZXNzLmFwcCJdOwogICAgICAgICBOU1N0cmluZyAqcHJvY2Vz
c0FwcEV4ZWN1dGFibGVQYXRoID0gW1tOU0J1bmRsZSBidW5kbGVXaXRoUGF0aDpwcm9jZXNzUGF0
aF0gZXhlY3V0YWJsZVBhdGhdOwogCiAgICAgICAgIHJldHVybiBbW3Byb2Nlc3NBcHBFeGVjdXRh
YmxlUGF0aCBzdHJpbmdCeURlbGV0aW5nTGFzdFBhdGhDb21wb25lbnRdIHN0cmluZ0J5QXBwZW5k
aW5nUGF0aENvbXBvbmVudDpAIlNlY0l0ZW1TaGltLmR5bGliIl07CiAgICAgfQotI2VuZGlmCiAK
ICAgICBpZiAobGF1bmNoT3B0aW9ucy5wcm9jZXNzVHlwZSA9PSBQcm9jZXNzTGF1bmNoZXI6Oldl
YlByb2Nlc3MpIHsKICAgICAgICAgTlNTdHJpbmcgKnByb2Nlc3NQYXRoID0gW3dlYktpdEJ1bmRs
ZSBwYXRoRm9yQXV4aWxpYXJ5RXhlY3V0YWJsZTpAIldlYlByb2Nlc3MuYXBwIl07CkBAIC0xNjcs
MTIgKzE2NSwxMCBAQCBzdGF0aWMgY29uc3QgY2hhciogc2VydmljZU5hbWUoY29uc3QgUHJvY2Vz
c0xhdW5jaGVyOjpMYXVuY2hPcHRpb25zJiBsYXVuY2hPcHRpbwogICAgICAgICBpZiAoZm9yRGV2
ZWxvcG1lbnQpCiAgICAgICAgICAgICByZXR1cm4gImNvbS5hcHBsZS5XZWJLaXQuV2ViQ29udGVu
dC5EZXZlbG9wbWVudCI7CiAgICAgICAgIHJldHVybiAiY29tLmFwcGxlLldlYktpdC5XZWJDb250
ZW50IjsKLSNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQogICAgIGNhc2UgUHJvY2Vzc0xhdW5j
aGVyOjpOZXR3b3JrUHJvY2VzczoKICAgICAgICAgaWYgKGZvckRldmVsb3BtZW50KQogICAgICAg
ICAgICAgcmV0dXJuICJjb20uYXBwbGUuV2ViS2l0Lk5ldHdvcmtpbmcuRGV2ZWxvcG1lbnQiOwog
ICAgICAgICByZXR1cm4gImNvbS5hcHBsZS5XZWJLaXQuTmV0d29ya2luZyI7Ci0jZW5kaWYKICNp
ZiBFTkFCTEUoREFUQUJBU0VfUFJPQ0VTUykKICAgICBjYXNlIFByb2Nlc3NMYXVuY2hlcjo6RGF0
YWJhc2VQcm9jZXNzOgogICAgICAgICBpZiAoZm9yRGV2ZWxvcG1lbnQpCkBAIC0yMDYsMTIgKzIw
Miw5IEBAIHN0YXRpYyBib29sIHNob3VsZExlYWtCb29zdChjb25zdCBQcm9jZXNzTGF1bmNoZXI6
OkxhdW5jaE9wdGlvbnMmIGxhdW5jaE9wdGlvbnMpCiAgICAgLy8gT24gaU9TLCBsZWFrIGEgYm9v
c3Qgb250byBhbGwgY2hpbGQgcHJvY2Vzc2VzCiAgICAgVU5VU0VEX1BBUkFNKGxhdW5jaE9wdGlv
bnMpOwogICAgIHJldHVybiB0cnVlOwotI2VsaWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKKyNl
bHNlCiAgICAgLy8gT24gTWFjLCBsZWFrIGEgYm9vc3Qgb250byB0aGUgTmV0d29ya1Byb2Nlc3Mu
CiAgICAgcmV0dXJuIGxhdW5jaE9wdGlvbnMucHJvY2Vzc1R5cGUgPT0gUHJvY2Vzc0xhdW5jaGVy
OjpOZXR3b3JrUHJvY2VzczsKLSNlbHNlCi0gICAgVU5VU0VEX1BBUkFNKGxhdW5jaE9wdGlvbnMp
OwotICAgIHJldHVybiBmYWxzZTsKICNlbmRpZgogfQogICAgIApAQCAtNDgzLDExICs0NzYsOSBA
QCBzdGF0aWMgdm9pZCBjcmVhdGVQcm9jZXNzKGNvbnN0IFByb2Nlc3NMYXVuY2hlcjo6TGF1bmNo
T3B0aW9ucyYgbGF1bmNoT3B0aW9ucywgYgogICAgICAgICBwcm9jZXNzUGF0aCA9IFt3ZWJLaXRC
dW5kbGUgcGF0aEZvckF1eGlsaWFyeUV4ZWN1dGFibGU6QCJQbHVnaW5Qcm9jZXNzLmFwcCJdOwog
ICAgICAgICBicmVhazsKICNlbmRpZgotI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCiAgICAg
Y2FzZSBQcm9jZXNzTGF1bmNoZXI6Ok5ldHdvcmtQcm9jZXNzOgogICAgICAgICBwcm9jZXNzUGF0
aCA9IFt3ZWJLaXRCdW5kbGUgcGF0aEZvckF1eGlsaWFyeUV4ZWN1dGFibGU6QCJOZXR3b3JrUHJv
Y2Vzcy5hcHAiXTsKICAgICAgICAgYnJlYWs7Ci0jZW5kaWYKICNpZiBFTkFCTEUoREFUQUJBU0Vf
UFJPQ0VTUykKICAgICBjYXNlIFByb2Nlc3NMYXVuY2hlcjo6RGF0YWJhc2VQcm9jZXNzOgogICAg
ICAgICBwcm9jZXNzUGF0aCA9IFt3ZWJLaXRCdW5kbGUgcGF0aEZvckF1eGlsaWFyeUV4ZWN1dGFi
bGU6QCJEYXRhYmFzZVByb2Nlc3MuYXBwIl07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCmluZGV4IDk2OTg2N2Uu
LjFhZWQ1YTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9OZXR3b3JrL05l
dHdvcmtQcm9jZXNzUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9OZXR3
b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCkBAIC0yNiw4ICsyNiw2IEBACiAjaW5jbHVkZSAi
Y29uZmlnLmgiCiAjaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3NQcm94eS5oIgogCi0jaWYgRU5BQkxF
KE5FVFdPUktfUFJPQ0VTUykKLQogI2luY2x1ZGUgIkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJv
eHkuaCIKICNpbmNsdWRlICJDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eU1lc3NhZ2VzLmgiCiAj
aW5jbHVkZSAiRG93bmxvYWRQcm94eU1lc3NhZ2VzLmgiCkBAIC0zNzcsNSArMzc1LDMgQEAgdm9p
ZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpzZXRJc0hvbGRpbmdMb2NrZWRGaWxlcyhib29sIGlzSG9s
ZGluZ0xvY2tlZEZpbGVzKQogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQotI2VuZGlmIC8v
IEVOQUJMRShORVRXT1JLX1BST0NFU1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgKaW5kZXggMzY0ZmMyZi4uYmJkZDdm
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1By
b2Nlc3NQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdv
cmtQcm9jZXNzUHJveHkuaApAQCAtMjYsOCArMjYsNiBAQAogI2lmbmRlZiBOZXR3b3JrUHJvY2Vz
c1Byb3h5X2gKICNkZWZpbmUgTmV0d29ya1Byb2Nlc3NQcm94eV9oCiAKLSNpZiBFTkFCTEUoTkVU
V09SS19QUk9DRVNTKQotCiAjaW5jbHVkZSAiQ2hpbGRQcm9jZXNzUHJveHkuaCIKICNpbmNsdWRl
ICJDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eS5oIgogI2luY2x1ZGUgIlByb2Nlc3NMYXVuY2hl
ci5oIgpAQCAtMTMyLDYgKzEzMCw0IEBAIHByaXZhdGU6CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktp
dAogCi0jZW5kaWYgLy8gRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKLQogI2VuZGlmIC8vIE5ldHdv
cmtQcm9jZXNzUHJveHlfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL05l
dHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkubWVzc2FnZXMuaW4KaW5kZXggYWQz
ZGUzNS4uZGM5M2I4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL05ldHdv
cmsvTmV0d29ya1Byb2Nlc3NQcm94eS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluCkBAIC0yMCw4
ICsyMCw2IEBACiAjIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCiAjIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAKLSNpZiBF
TkFCTEUoTkVUV09SS19QUk9DRVNTKQotCiBtZXNzYWdlcyAtPiBOZXR3b3JrUHJvY2Vzc1Byb3h5
IExlZ2FjeVJlY2VpdmVyIHsKICAgICBEaWRDcmVhdGVOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2VzcyhJUEM6OkF0dGFjaG1lbnQgY29ubmVjdGlvbklkZW50aWZpZXIpCiAKQEAgLTM5LDUgKzM3
LDMgQEAgbWVzc2FnZXMgLT4gTmV0d29ya1Byb2Nlc3NQcm94eSBMZWdhY3lSZWNlaXZlciB7CiAg
ICAgTG9nU2FtcGxlZERpYWdub3N0aWNNZXNzYWdlV2l0aFJlc3VsdCh1aW50NjRfdCBwYWdlSUQs
IFN0cmluZyBtZXNzYWdlLCBTdHJpbmcgZGVzY3JpcHRpb24sIHVpbnQzMl90IHJlc3VsdCkKICAg
ICBMb2dTYW1wbGVkRGlhZ25vc3RpY01lc3NhZ2VXaXRoVmFsdWUodWludDY0X3QgcGFnZUlELCBT
dHJpbmcgbWVzc2FnZSwgU3RyaW5nIGRlc2NyaXB0aW9uLCBTdHJpbmcgdmFsdWUpCiB9Ci0KLSNl
bmRpZiAvLyBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL05ldHdvcmsvbWFjL05ldHdvcmtQcm9jZXNzUHJveHlNYWMubW0gYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvTmV0d29yay9tYWMvTmV0d29ya1Byb2Nlc3NQcm94eU1hYy5t
bQppbmRleCBiMGRmMWI4Li4xOWY3MjI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvTmV0d29yay9tYWMvTmV0d29ya1Byb2Nlc3NQcm94eU1hYy5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvTmV0d29yay9tYWMvTmV0d29ya1Byb2Nlc3NQcm94eU1hYy5tbQpA
QCAtMjgsOCArMjgsNiBAQAogCiAjaW1wb3J0ICJOZXR3b3JrUHJvY2Vzc01lc3NhZ2VzLmgiCiAK
LSNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQotCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsK
IAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC01OSw1ICs1NywzIEBAIHZvaWQgTmV0d29ya1Byb2Nl
c3NQcm94eTo6cGxhdGZvcm1HZXRMYXVuY2hPcHRpb25zKFByb2Nlc3NMYXVuY2hlcjo6TGF1bmNo
T3B0aW9uCiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAotCi0jZW5kaWYgLy8gRU5BQkxFKE5F
VFdPUktfUFJPQ0VTUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9OZXR3
b3JrL3NvdXAvTmV0d29ya1Byb2Nlc3NQcm94eVNvdXAuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL05ldHdvcmsvc291cC9OZXR3b3JrUHJvY2Vzc1Byb3h5U291cC5jcHAKaW5kZXggMWJk
ZjBlZC4uODU5Y2I3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL05ldHdv
cmsvc291cC9OZXR3b3JrUHJvY2Vzc1Byb3h5U291cC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL05ldHdvcmsvc291cC9OZXR3b3JrUHJvY2Vzc1Byb3h5U291cC5jcHAKQEAgLTI0
LDkgKzI0LDggQEAKICAqLwogCiAjaW5jbHVkZSAiY29uZmlnLmgiCi0jaWYgRU5BQkxFKE5FVFdP
UktfUFJPQ0VTUykKLQogI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzUHJveHkuaCIKKwogI2luY2x1
ZGUgPGdsaWIuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC00Myw1ICs0MiwzIEBAIHZvaWQg
TmV0d29ya1Byb2Nlc3NQcm94eTo6cGxhdGZvcm1HZXRMYXVuY2hPcHRpb25zKFByb2Nlc3NMYXVu
Y2hlcjo6TGF1bmNoT3B0aW9uCiB9CiAKIH0KLQotI2VuZGlmIC8vIEVOQUJMRShORVRXT1JLX1BS
T0NFU1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUHJvY2Vzc01vZGVs
LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUHJvY2Vzc01vZGVsLmgKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDZjMThkYTAuLjAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL1Byb2Nlc3NNb2RlbC5oCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAot
LyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
Ci0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgotICovCi0KLSNpZm5kZWYgUHJvY2Vzc01vZGVsX2gKLSNkZWZpbmUgUHJvY2Vzc01vZGVs
X2gKLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLWVudW0gUHJvY2Vzc01vZGVsIHsKLSAgICBQcm9j
ZXNzTW9kZWxTaGFyZWRTZWNvbmRhcnlQcm9jZXNzLAotICAgIFByb2Nlc3NNb2RlbE11bHRpcGxl
U2Vjb25kYXJ5UHJvY2Vzc2VzCi19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQotI2VuZGlm
IC8vIFByb2Nlc3NNb2RlbF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
V2ViQ29va2llTWFuYWdlclByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJD
b29raWVNYW5hZ2VyUHJveHkuY3BwCmluZGV4IDEyMDEyZmQuLjExNGYxYWEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb29raWVNYW5hZ2VyUHJveHkuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb29raWVNYW5hZ2VyUHJveHkuY3BwCkBAIC04
NSw4ICs4NSw4IEBAIHZvaWQgV2ViQ29va2llTWFuYWdlclByb3h5Ojpwcm9jZXNzRGlkQ2xvc2Uo
TmV0d29ya1Byb2Nlc3NQcm94eSopCiAKIGJvb2wgV2ViQ29va2llTWFuYWdlclByb3h5OjpzaG91
bGRUZXJtaW5hdGUoV2ViUHJvY2Vzc1Byb3h5KikgY29uc3QKIHsKLSAgICByZXR1cm4gcHJvY2Vz
c1Bvb2woKS0+cHJvY2Vzc01vZGVsKCkgIT0gUHJvY2Vzc01vZGVsU2hhcmVkU2Vjb25kYXJ5UHJv
Y2VzcwotICAgICAgICB8fCAobV9hcnJheUNhbGxiYWNrcy5pc0VtcHR5KCkgJiYgbV9odHRwQ29v
a2llQWNjZXB0UG9saWN5Q2FsbGJhY2tzLmlzRW1wdHkoKSk7CisgICAgLy8gRklYTUU6IFJlbW92
ZSB0aGlzLgorICAgIHJldHVybiB0cnVlOwogfQogCiB2b2lkIFdlYkNvb2tpZU1hbmFnZXJQcm94
eTo6cmVmV2ViQ29udGV4dFN1cHBsZW1lbnQoKQpAQCAtMTYzLDEwICsxNjMsNyBAQCB2b2lkIFdl
YkNvb2tpZU1hbmFnZXJQcm94eTo6c2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeShIVFRQQ29va2ll
QWNjZXB0UG9saWN5IHBvbAogICAgIC8vIC0gV2hlbiB0ZXN0aW5nLCB3ZSBvbmx5IGhhdmUgb25l
IFdlYlByb2Nlc3MgYW5kIG9uZSBOZXR3b3JrUHJvY2VzcywgYW5kIFdlYktpdFRlc3RSdW5uZXIg
bmV2ZXIgcmVzdGFydHMgdGhlbTsKICAgICAvLyAtIFdoZW4gbm90IHRlc3RpbmcsIENvY29hIGhh
cyB0aGUgcG9saWN5IHBlcnNpc3RlZCwgYW5kIHRodXMgbmV3IHByb2Nlc3NlcyB1c2UgaXQgKGV2
ZW4gZm9yIGVwaGVtZXJhbCBzZXNzaW9ucykuCiAgICAgcHJvY2Vzc1Bvb2woKS0+c2VuZFRvQWxs
UHJvY2Vzc2VzKE1lc3NhZ2VzOjpXZWJDb29raWVNYW5hZ2VyOjpTZXRIVFRQQ29va2llQWNjZXB0
UG9saWN5KHBvbGljeSkpOwotI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCi0gICAgaWYgKHBy
b2Nlc3NQb29sKCktPnVzZXNOZXR3b3JrUHJvY2VzcygpKQotICAgICAgICBwcm9jZXNzUG9vbCgp
LT5zZW5kVG9OZXR3b3JraW5nUHJvY2VzcyhNZXNzYWdlczo6V2ViQ29va2llTWFuYWdlcjo6U2V0
SFRUUENvb2tpZUFjY2VwdFBvbGljeShwb2xpY3kpKTsKLSNlbmRpZgorICAgIHByb2Nlc3NQb29s
KCktPnNlbmRUb05ldHdvcmtpbmdQcm9jZXNzKE1lc3NhZ2VzOjpXZWJDb29raWVNYW5hZ2VyOjpT
ZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KHBvbGljeSkpOwogfQogCiB2b2lkIFdlYkNvb2tpZU1h
bmFnZXJQcm94eTo6Z2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeShzdGQ6OmZ1bmN0aW9uPHZvaWQg
KEhUVFBDb29raWVBY2NlcHRQb2xpY3ksIENhbGxiYWNrQmFzZTo6RXJyb3IpPiBjYWxsYmFja0Z1
bmN0aW9uKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkluc3BlY3Rv
clByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJJbnNwZWN0b3JQcm94eS5j
cHAKaW5kZXggNjVhYWE1MS4uMjgxZGFmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1dlYkluc3BlY3RvclByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvV2ViSW5zcGVjdG9yUHJveHkuY3BwCkBAIC0zMTIsNyArMzEyLDYgQEAgV2ViUHJvY2Vzc1Bv
b2wmIFdlYkluc3BlY3RvclByb3h5OjppbnNwZWN0b3JQcm9jZXNzUG9vbCgpCiAgICAgLy8gZ3Vh
cmFudGVlcyBubyBwcm9jZXNzIHNoYXJpbmcgZm9yIG91ciB1c2VyIGludGVyZmFjZS4KICAgICBp
ZiAoIXNfcHJvY2Vzc1Bvb2wpIHsKICAgICAgICAgYXV0byBjb25maWd1cmF0aW9uID0gQVBJOjpQ
cm9jZXNzUG9vbENvbmZpZ3VyYXRpb246OmNyZWF0ZVdpdGhMZWdhY3lPcHRpb25zKCk7Ci0gICAg
ICAgIGNvbmZpZ3VyYXRpb24tPnNldFByb2Nlc3NNb2RlbChQcm9jZXNzTW9kZWxNdWx0aXBsZVNl
Y29uZGFyeVByb2Nlc3Nlcyk7CiAgICAgICAgIHNfcHJvY2Vzc1Bvb2wgPSAmV2ViUHJvY2Vzc1Bv
b2w6OmNyZWF0ZShjb25maWd1cmF0aW9uLmdldCgpKS5sZWFrUmVmKCk7CiAgICAgfTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAppbmRleCA0NTMxNjM5Li5kZTBj
NDJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAtNjAs
NiArNjAsNyBAQAogI2luY2x1ZGUgIk5hdGl2ZVdlYk1vdXNlRXZlbnQuaCIKICNpbmNsdWRlICJO
YXRpdmVXZWJXaGVlbEV2ZW50LmgiCiAjaW5jbHVkZSAiTmF2aWdhdGlvbkFjdGlvbkRhdGEuaCIK
KyNpbmNsdWRlICJOZXR3b3JrUHJvY2Vzc01lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiTm90aWZpY2F0
aW9uUGVybWlzc2lvblJlcXVlc3QuaCIKICNpbmNsdWRlICJOb3RpZmljYXRpb25QZXJtaXNzaW9u
UmVxdWVzdE1hbmFnZXIuaCIKICNpbmNsdWRlICJQYWdlQ2xpZW50LmgiCkBAIC0xMzgsMTAgKzEz
OSw2IEBACiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWRMZWFrQ291bnRlci5oPgogI2VuZGlmCiAK
LSNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQotI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzTWVz
c2FnZXMuaCIKLSNlbmRpZgotCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAjaW5jbHVkZSAiUmVtb3Rl
TGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eS5oIgogI2luY2x1ZGUgIlJlbW90ZUxheWVyVHJlZVNj
cm9sbGluZ1BlcmZvcm1hbmNlRGF0YS5oIgpAQCAtNDg3LDEwICs0ODQsOCBAQCBXZWJQYWdlUHJv
eHk6OldlYlBhZ2VQcm94eShQYWdlQ2xpZW50JiBwYWdlQ2xpZW50LCBXZWJQcm9jZXNzUHJveHkm
IHByb2Nlc3MsIHVpbgogCiAgICAgbV9wcm9jZXNzLT5hZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2Fn
ZXM6OldlYlBhZ2VQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX3BhZ2VJRCwgKnRoaXMp
OwogCi0jaWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKICAgICBpZiAobV9zZXNzaW9uSUQuaXNF
cGhlbWVyYWwoKSkKICAgICAgICAgbV9wcm9jZXNzLT5wcm9jZXNzUG9vbCgpLnNlbmRUb05ldHdv
cmtpbmdQcm9jZXNzKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6RW5zdXJlUHJpdmF0ZUJyb3dz
aW5nU2Vzc2lvbihtX3Nlc3Npb25JRCkpOwotI2VuZGlmCiAKICNpZiBQTEFURk9STShDT0NPQSkK
ICAgICBjb25zdCBDRkluZGV4IHZpZXdTdGF0ZUNoYW5nZVJ1bkxvb3BPcmRlciA9IChDRkluZGV4
KVJ1bkxvb3BPYnNlcnZlcjo6V2VsbEtub3duUnVuTG9vcE9yZGVyczo6Q29yZUFuaW1hdGlvbkNv
bW1pdCAtIDE7CkBAIC02OTYsMTAgKzY5MSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpyZWF0dGFj
aFRvV2ViUHJvY2VzcygpCiAgICAgbV9wcm9jZXNzLT5yZW1vdmVXZWJQYWdlKG1fcGFnZUlEKTsK
ICAgICBtX3Byb2Nlc3MtPnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6V2ViUGFnZVBy
b3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1fcGFnZUlEKTsKIAotICAgIGlmIChtX3Byb2Nl
c3MtPnByb2Nlc3NQb29sKCkucHJvY2Vzc01vZGVsKCkgPT0gUHJvY2Vzc01vZGVsU2hhcmVkU2Vj
b25kYXJ5UHJvY2VzcykKLSAgICAgICAgbV9wcm9jZXNzID0gbV9wcm9jZXNzLT5wcm9jZXNzUG9v
bCgpLmVuc3VyZVNoYXJlZFdlYlByb2Nlc3MoKTsKLSAgICBlbHNlCi0gICAgICAgIG1fcHJvY2Vz
cyA9IG1fcHJvY2Vzcy0+cHJvY2Vzc1Bvb2woKS5jcmVhdGVOZXdXZWJQcm9jZXNzUmVzcGVjdGlu
Z1Byb2Nlc3NDb3VudExpbWl0KCk7CisgICAgbV9wcm9jZXNzID0gbV9wcm9jZXNzLT5wcm9jZXNz
UG9vbCgpLmNyZWF0ZU5ld1dlYlByb2Nlc3NSZXNwZWN0aW5nUHJvY2Vzc0NvdW50TGltaXQoKTsK
IAogICAgIEFTU0VSVChtX3Byb2Nlc3MtPnN0YXRlKCkgIT0gQ2hpbGRQcm9jZXNzUHJveHk6OlN0
YXRlOjpUZXJtaW5hdGVkKTsKICAgICBpZiAobV9wcm9jZXNzLT5zdGF0ZSgpID09IENoaWxkUHJv
Y2Vzc1Byb3h5OjpTdGF0ZTo6UnVubmluZykKQEAgLTc3NCwxMCArNzY2LDggQEAgdm9pZCBXZWJQ
YWdlUHJveHk6OnNldFNlc3Npb25JRChTZXNzaW9uSUQgc2Vzc2lvbklEKQogICAgIG1fc2Vzc2lv
bklEID0gc2Vzc2lvbklEOwogICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6
U2V0U2Vzc2lvbklEKHNlc3Npb25JRCksIG1fcGFnZUlEKTsKIAotI2lmIEVOQUJMRShORVRXT1JL
X1BST0NFU1MpCiAgICAgaWYgKHNlc3Npb25JRC5pc0VwaGVtZXJhbCgpKQogICAgICAgICBtX3By
b2Nlc3MtPnByb2Nlc3NQb29sKCkuc2VuZFRvTmV0d29ya2luZ1Byb2Nlc3MoTWVzc2FnZXM6Ok5l
dHdvcmtQcm9jZXNzOjpFbnN1cmVQcml2YXRlQnJvd3NpbmdTZXNzaW9uKHNlc3Npb25JRCkpOwot
I2VuZGlmCiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5Ojppbml0aWFsaXplV2ViUGFnZSgpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcAppbmRleCA5NmJmNDI5Li40
Y2UyMGJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bv
b2wuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAK
QEAgLTM1LDYgKzM1LDkgQEAKICNpbmNsdWRlICJEb3dubG9hZFByb3h5LmgiCiAjaW5jbHVkZSAi
RG93bmxvYWRQcm94eU1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgorI2luY2x1ZGUg
Ik5ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmgiCisjaW5jbHVkZSAiTmV0d29ya1By
b2Nlc3NNZXNzYWdlcy5oIgorI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzUHJveHkuaCIKICNpbmNs
dWRlICJTYW5kYm94RXh0ZW5zaW9uLmgiCiAjaW5jbHVkZSAiU3RhdGlzdGljc0RhdGEuaCIKICNp
bmNsdWRlICJUZXh0Q2hlY2tlci5oIgpAQCAtNzgsMTEgKzgxLDYgQEAKICNpbmNsdWRlICJEYXRh
YmFzZVByb2Nlc3NNZXNzYWdlcy5oIgogI2VuZGlmCiAKLSNpZiBFTkFCTEUoTkVUV09SS19QUk9D
RVNTKQotI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmgiCi0jaW5j
bHVkZSAiTmV0d29ya1Byb2Nlc3NNZXNzYWdlcy5oIgotI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNz
UHJveHkuaCIKLSNlbmRpZgogCiAjaWYgRU5BQkxFKFNFUlZJQ0VfQ09OVFJPTFMpCiAjaW5jbHVk
ZSAiU2VydmljZXNDb250cm9sbGVyLmgiCkBAIC0xMDUsOCArMTAzLDYgQEAgdXNpbmcgbmFtZXNw
YWNlIFdlYktpdDsKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLXN0YXRpYyBjb25zdCBkb3VibGUg
c2hhcmVkU2Vjb25kYXJ5UHJvY2Vzc1NodXRkb3duVGltZW91dCA9IDYwOwotCiBERUZJTkVfREVC
VUdfT05MWV9HTE9CQUwoV1RGOjpSZWZDb3VudGVkTGVha0NvdW50ZXIsIHByb2Nlc3NQb29sQ291
bnRlciwgKCJXZWJQcm9jZXNzUG9vbCIpKTsKIAogUmVmPFdlYlByb2Nlc3NQb29sPiBXZWJQcm9j
ZXNzUG9vbDo6Y3JlYXRlKEFQSTo6UHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uJiBjb25maWd1cmF0
aW9uKQpAQCAtMTU5LDEwICsxNTUsOCBAQCBXZWJQcm9jZXNzUG9vbDo6V2ViUHJvY2Vzc1Bvb2wo
QVBJOjpQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24mIGNvbmZpZ3VyYXRpb24pCiAjZW5kaWYKICAg
ICAsIG1fc2hvdWxkVXNlVGVzdGluZ05ldHdvcmtTZXNzaW9uKGZhbHNlKQogICAgICwgbV9wcm9j
ZXNzVGVybWluYXRpb25FbmFibGVkKHRydWUpCi0jaWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykK
ICAgICAsIG1fY2FuSGFuZGxlSFRUUFNTZXJ2ZXJUcnVzdEV2YWx1YXRpb24odHJ1ZSkKICAgICAs
IG1fZGlkTmV0d29ya1Byb2Nlc3NDcmFzaChmYWxzZSkKLSNlbmRpZgogI2lmIFVTRShTT1VQKQog
ICAgICwgbV9pZ25vcmVUTFNFcnJvcnModHJ1ZSkKICNlbmRpZgpAQCAtMjU0LDEwICsyNDgsOCBA
QCBXZWJQcm9jZXNzUG9vbDo6fldlYlByb2Nlc3NQb29sKCkKICAgICBwcm9jZXNzUG9vbENvdW50
ZXIuZGVjcmVtZW50KCk7CiAjZW5kaWYKIAotI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCiAg
ICAgaWYgKG1fbmV0d29ya1Byb2Nlc3MpCiAgICAgICAgIG1fbmV0d29ya1Byb2Nlc3MtPnNodXRE
b3duUHJvY2VzcygpOwotI2VuZGlmCiB9CiAKIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OmluaXRpYWxp
emVDbGllbnQoY29uc3QgV0tDb250ZXh0Q2xpZW50QmFzZSogY2xpZW50KQpAQCAtMjkxLDE3ICsy
ODMsNiBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpzZXREb3dubG9hZENsaWVudChzdGQ6OnVuaXF1
ZV9wdHI8QVBJOjpEb3dubG9hZENsaWVudD4gZG93bgogICAgICAgICBtX2Rvd25sb2FkQ2xpZW50
ID0gV1RGOjptb3ZlKGRvd25sb2FkQ2xpZW50KTsKIH0KIAotdm9pZCBXZWJQcm9jZXNzUG9vbDo6
c2V0UHJvY2Vzc01vZGVsKFByb2Nlc3NNb2RlbCBwcm9jZXNzTW9kZWwpCi17Ci0gICAgLy8gR3Vh
cmQgYWdhaW5zdCBBUEkgbWlzdXNlLgotICAgIGlmICghbV9wcm9jZXNzZXMuaXNFbXB0eSgpKQot
ICAgICAgICBDUkFTSCgpOwotICAgIGlmIChwcm9jZXNzTW9kZWwgIT0gUHJvY2Vzc01vZGVsU2hh
cmVkU2Vjb25kYXJ5UHJvY2VzcyAmJiAhbV9tZXNzYWdlc1RvSW5qZWN0ZWRCdW5kbGVQb3N0ZWRU
b0VtcHR5Q29udGV4dC5pc0VtcHR5KCkpCi0gICAgICAgIENSQVNIKCk7Ci0KLSAgICBtX2NvbmZp
Z3VyYXRpb24tPnNldFByb2Nlc3NNb2RlbChwcm9jZXNzTW9kZWwpOwotfQotCiB2b2lkIFdlYlBy
b2Nlc3NQb29sOjpzZXRNYXhpbXVtTnVtYmVyT2ZQcm9jZXNzZXModW5zaWduZWQgbWF4aW11bU51
bWJlck9mUHJvY2Vzc2VzKQogewogICAgIC8vIEd1YXJkIGFnYWluc3QgQVBJIG1pc3VzZS4KQEAg
LTMxMywyMyArMjk0LDcgQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6c2V0TWF4aW11bU51bWJlck9m
UHJvY2Vzc2VzKHVuc2lnbmVkIG1heGltdW1OdW1iZXJPZlByb2Nlc3MKIAogSVBDOjpDb25uZWN0
aW9uKiBXZWJQcm9jZXNzUG9vbDo6bmV0d29ya2luZ1Byb2Nlc3NDb25uZWN0aW9uKCkKIHsKLSAg
ICBzd2l0Y2ggKHByb2Nlc3NNb2RlbCgpKSB7Ci0gICAgY2FzZSBQcm9jZXNzTW9kZWxTaGFyZWRT
ZWNvbmRhcnlQcm9jZXNzOgotI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCi0gICAgICAgIGlm
ICh1c2VzTmV0d29ya1Byb2Nlc3MoKSkKLSAgICAgICAgICAgIHJldHVybiBtX25ldHdvcmtQcm9j
ZXNzLT5jb25uZWN0aW9uKCk7Ci0jZW5kaWYKLSAgICAgICAgcmV0dXJuIG1fcHJvY2Vzc2VzWzBd
LT5jb25uZWN0aW9uKCk7Ci0gICAgY2FzZSBQcm9jZXNzTW9kZWxNdWx0aXBsZVNlY29uZGFyeVBy
b2Nlc3NlczoKLSNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQotICAgICAgICBBU1NFUlQodXNl
c05ldHdvcmtQcm9jZXNzKCkpOwotICAgICAgICByZXR1cm4gbV9uZXR3b3JrUHJvY2Vzcy0+Y29u
bmVjdGlvbigpOwotI2Vsc2UKLSAgICAgICAgYnJlYWs7Ci0jZW5kaWYKLSAgICB9Ci0gICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIDA7CisgICAgcmV0dXJuIG1fbmV0d29ya1By
b2Nlc3MtPmNvbm5lY3Rpb24oKTsKIH0KIAogdm9pZCBXZWJQcm9jZXNzUG9vbDo6bGFuZ3VhZ2VD
aGFuZ2VkKHZvaWQqIGNvbnRleHQpCkBAIC0zNDAsOCArMzA1LDggQEAgdm9pZCBXZWJQcm9jZXNz
UG9vbDo6bGFuZ3VhZ2VDaGFuZ2VkKHZvaWQqIGNvbnRleHQpCiB2b2lkIFdlYlByb2Nlc3NQb29s
OjpsYW5ndWFnZUNoYW5nZWQoKQogewogICAgIHNlbmRUb0FsbFByb2Nlc3NlcyhNZXNzYWdlczo6
V2ViUHJvY2Vzczo6VXNlclByZWZlcnJlZExhbmd1YWdlc0NoYW5nZWQodXNlclByZWZlcnJlZExh
bmd1YWdlcygpKSk7Ci0jaWYgVVNFKFNPVVApICYmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCi0g
ICAgaWYgKHVzZXNOZXR3b3JrUHJvY2VzcygpICYmIG1fbmV0d29ya1Byb2Nlc3MpCisjaWYgVVNF
KFNPVVApCisgICAgaWYgKG1fbmV0d29ya1Byb2Nlc3MpCiAgICAgICAgIG1fbmV0d29ya1Byb2Nl
c3MtPnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpVc2VyUHJlZmVycmVkTGFuZ3VhZ2Vz
Q2hhbmdlZCh1c2VyUHJlZmVycmVkTGFuZ3VhZ2VzKCkpLCAwKTsKICNlbmRpZgogfQpAQCAtMzU2
LDI1ICszMjEsNiBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjp0ZXh0Q2hlY2tlclN0YXRlQ2hhbmdl
ZCgpCiAgICAgc2VuZFRvQWxsUHJvY2Vzc2VzKE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpTZXRUZXh0
Q2hlY2tlclN0YXRlKFRleHRDaGVja2VyOjpzdGF0ZSgpKSk7CiB9CiAKLXZvaWQgV2ViUHJvY2Vz
c1Bvb2w6OnNldFVzZXNOZXR3b3JrUHJvY2Vzcyhib29sIHVzZXNOZXR3b3JrUHJvY2VzcykKLXsK
LSNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQotICAgIG1fY29uZmlndXJhdGlvbi0+c2V0VXNl
TmV0d29ya1Byb2Nlc3ModXNlc05ldHdvcmtQcm9jZXNzKTsKLSNlbHNlCi0gICAgVU5VU0VEX1BB
UkFNKHVzZXNOZXR3b3JrUHJvY2Vzcyk7Ci0jZW5kaWYKLX0KLQotYm9vbCBXZWJQcm9jZXNzUG9v
bDo6dXNlc05ldHdvcmtQcm9jZXNzKCkgY29uc3QKLXsKLSNpZiBFTkFCTEUoTkVUV09SS19QUk9D
RVNTKQotICAgIHJldHVybiBtX2NvbmZpZ3VyYXRpb24tPnVzZU5ldHdvcmtQcm9jZXNzKCk7Ci0j
ZWxzZQotICAgIHJldHVybiBmYWxzZTsKLSNlbmRpZgotfQotCi0jaWYgRU5BQkxFKE5FVFdPUktf
UFJPQ0VTUykKIE5ldHdvcmtQcm9jZXNzUHJveHkmIFdlYlByb2Nlc3NQb29sOjplbnN1cmVOZXR3
b3JrUHJvY2VzcygpCiB7CiAgICAgaWYgKG1fbmV0d29ya1Byb2Nlc3MpCkBAIC00NTksNyArNDA1
LDYgQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6Z2V0TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKFBh
c3NSZWZQdHI8TWVzc2FnZXM6OldlYlByb2Nlc3MKIAogICAgIG1fbmV0d29ya1Byb2Nlc3MtPmdl
dE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbihyZXBseSk7CiB9Ci0jZW5kaWYKIAogI2lmIEVOQUJM
RShEQVRBQkFTRV9QUk9DRVNTKQogdm9pZCBXZWJQcm9jZXNzUG9vbDo6ZW5zdXJlRGF0YWJhc2VQ
cm9jZXNzKCkKQEAgLTUyNywxNCArNDcyLDEyIEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnNldEFu
eVBhZ2VHcm91cE1pZ2h0SGF2ZVByaXZhdGVCcm93c2luZ0VuYWJsZWQoYm9vbCBwcml2YXRlCiB7
CiAgICAgbV9pY29uRGF0YWJhc2UtPnNldFByaXZhdGVCcm93c2luZ0VuYWJsZWQocHJpdmF0ZUJy
b3dzaW5nRW5hYmxlZCk7CiAKLSNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQotICAgIGlmICh1
c2VzTmV0d29ya1Byb2Nlc3MoKSAmJiBuZXR3b3JrUHJvY2VzcygpKSB7CisgICAgaWYgKG5ldHdv
cmtQcm9jZXNzKCkpIHsKICAgICAgICAgaWYgKHByaXZhdGVCcm93c2luZ0VuYWJsZWQpCiAgICAg
ICAgICAgICBuZXR3b3JrUHJvY2VzcygpLT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6
RW5zdXJlUHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbihTZXNzaW9uSUQ6OmxlZ2FjeVByaXZhdGVTZXNz
aW9uSUQoKSksIDApOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBuZXR3b3JrUHJvY2Vzcygp
LT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6RGVzdHJveVByaXZhdGVCcm93c2luZ1Nl
c3Npb24oU2Vzc2lvbklEOjpsZWdhY3lQcml2YXRlU2Vzc2lvbklEKCkpLCAwKTsKICAgICB9Ci0j
ZW5kaWYgLy8gRU5BQkxFRChORVRXT1JLX1BST0NFU1MpCiAKICAgICBpZiAocHJpdmF0ZUJyb3dz
aW5nRW5hYmxlZCkKICAgICAgICAgc2VuZFRvQWxsUHJvY2Vzc2VzKE1lc3NhZ2VzOjpXZWJQcm9j
ZXNzOjpFbnN1cmVQcml2YXRlQnJvd3NpbmdTZXNzaW9uKFNlc3Npb25JRDo6bGVnYWN5UHJpdmF0
ZVNlc3Npb25JRCgpKSk7CkBAIC01NjksMjAgKzUxMiw5IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6
OnByb2Nlc3NEaWRDYWNoZVBhZ2UoV2ViUHJvY2Vzc1Byb3h5KiBwcm9jZXNzKQogICAgIG1fcHJv
Y2Vzc1dpdGhQYWdlQ2FjaGUgPSBwcm9jZXNzOwogfQogCi1XZWJQcm9jZXNzUHJveHkmIFdlYlBy
b2Nlc3NQb29sOjplbnN1cmVTaGFyZWRXZWJQcm9jZXNzKCkKLXsKLSAgICBBU1NFUlQocHJvY2Vz
c01vZGVsKCkgPT0gUHJvY2Vzc01vZGVsU2hhcmVkU2Vjb25kYXJ5UHJvY2Vzcyk7Ci0gICAgaWYg
KG1fcHJvY2Vzc2VzLmlzRW1wdHkoKSkKLSAgICAgICAgY3JlYXRlTmV3V2ViUHJvY2VzcygpOwot
ICAgIHJldHVybiAqbV9wcm9jZXNzZXNbMF07Ci19Ci0KIFdlYlByb2Nlc3NQcm94eSYgV2ViUHJv
Y2Vzc1Bvb2w6OmNyZWF0ZU5ld1dlYlByb2Nlc3MoKQogewotI2lmIEVOQUJMRShORVRXT1JLX1BS
T0NFU1MpCi0gICAgaWYgKHVzZXNOZXR3b3JrUHJvY2VzcygpKQotICAgICAgICBlbnN1cmVOZXR3
b3JrUHJvY2VzcygpOwotI2VuZGlmCisgICAgZW5zdXJlTmV0d29ya1Byb2Nlc3MoKTsKIAogICAg
IFJlZjxXZWJQcm9jZXNzUHJveHk+IHByb2Nlc3MgPSBXZWJQcm9jZXNzUHJveHk6OmNyZWF0ZSgq
dGhpcyk7CiAKQEAgLTY0Niw3ICs1NzgsNyBAQCBXZWJQcm9jZXNzUHJveHkmIFdlYlByb2Nlc3NQ
b29sOjpjcmVhdGVOZXdXZWJQcm9jZXNzKCkKICAgICAvLyBpY29uRGF0YWJhc2VQYXRoIGlzIG5v
bi1lbXB0eSBieSBkZWZhdWx0LCBidXQgbV9pY29uRGF0YWJhc2UgaXNuJ3QgZW5hYmxlZCBpbiBV
SSBwcm9jZXNzIHVubGVzcyBzZXREYXRhYmFzZVBhdGggaXMgY2FsbGVkIGV4cGxpY2l0bHkuCiAg
ICAgcGFyYW1ldGVycy5pY29uRGF0YWJhc2VFbmFibGVkID0gIWljb25EYXRhYmFzZVBhdGgoKS5p
c0VtcHR5KCk7CiAKLSAgICBwYXJhbWV0ZXJzLnRlcm1pbmF0aW9uVGltZW91dCA9IChwcm9jZXNz
TW9kZWwoKSA9PSBQcm9jZXNzTW9kZWxTaGFyZWRTZWNvbmRhcnlQcm9jZXNzKSA/IHNoYXJlZFNl
Y29uZGFyeVByb2Nlc3NTaHV0ZG93blRpbWVvdXQgOiAwOworICAgIHBhcmFtZXRlcnMudGVybWlu
YXRpb25UaW1lb3V0ID0gMDsKIAogICAgIHBhcmFtZXRlcnMudGV4dENoZWNrZXJTdGF0ZSA9IFRl
eHRDaGVja2VyOjpzdGF0ZSgpOwogCkBAIC02NTksMTAgKzU5MSw2IEBAIFdlYlByb2Nlc3NQcm94
eSYgV2ViUHJvY2Vzc1Bvb2w6OmNyZWF0ZU5ld1dlYlByb2Nlc3MoKQogICAgIHN1cHBsZW1lbnQ8
V2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5PigpLT5wb3B1bGF0ZUNvcHlPZk5vdGlmaWNhdGlv
blBlcm1pc3Npb25zKHBhcmFtZXRlcnMubm90aWZpY2F0aW9uUGVybWlzc2lvbnMpOwogI2VuZGlm
CiAKLSNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQotICAgIHBhcmFtZXRlcnMudXNlc05ldHdv
cmtQcm9jZXNzID0gdXNlc05ldHdvcmtQcm9jZXNzKCk7Ci0jZW5kaWYKLQogICAgIHBhcmFtZXRl
cnMucGx1Z0luQXV0b1N0YXJ0T3JpZ2luSGFzaGVzID0gbV9wbHVnSW5BdXRvU3RhcnRQcm92aWRl
ci5hdXRvU3RhcnRPcmlnaW5IYXNoZXNDb3B5KCk7CiAgICAgY29weVRvVmVjdG9yKG1fcGx1Z0lu
QXV0b1N0YXJ0UHJvdmlkZXIuYXV0b1N0YXJ0T3JpZ2lucygpLCBwYXJhbWV0ZXJzLnBsdWdJbkF1
dG9TdGFydE9yaWdpbnMpOwogCkBAIC03MDYsMTUgKzYzNCw3IEBAIFdlYlByb2Nlc3NQcm94eSYg
V2ViUHJvY2Vzc1Bvb2w6OmNyZWF0ZU5ld1dlYlByb2Nlc3MoKQogCiAgICAgbV9wcm9jZXNzZXMu
YXBwZW5kKHByb2Nlc3MucHRyKCkpOwogCi0gICAgaWYgKHByb2Nlc3NNb2RlbCgpID09IFByb2Nl
c3NNb2RlbFNoYXJlZFNlY29uZGFyeVByb2Nlc3MpIHsKLSAgICAgICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgIT0gbV9tZXNzYWdlc1RvSW5qZWN0ZWRCdW5kbGVQb3N0ZWRUb0VtcHR5Q29udGV4dC5z
aXplKCk7ICsraSkgewotICAgICAgICAgICAgYXV0byYgbWVzc2FnZU5hbWVBbmRCb2R5ID0gbV9t
ZXNzYWdlc1RvSW5qZWN0ZWRCdW5kbGVQb3N0ZWRUb0VtcHR5Q29udGV4dFtpXTsKLQotICAgICAg
ICAgICAgcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUHJvY2Vzczo6SGFuZGxlSW5qZWN0ZWRC
dW5kbGVNZXNzYWdlKG1lc3NhZ2VOYW1lQW5kQm9keS5maXJzdCwgVXNlckRhdGEocHJvY2Vzcy0+
dHJhbnNmb3JtT2JqZWN0c1RvSGFuZGxlcyhtZXNzYWdlTmFtZUFuZEJvZHkuc2Vjb25kLmdldCgp
KS5nZXQoKSkpLCAwKTsKLSAgICAgICAgfQotICAgICAgICBtX21lc3NhZ2VzVG9JbmplY3RlZEJ1
bmRsZVBvc3RlZFRvRW1wdHlDb250ZXh0LmNsZWFyKCk7Ci0gICAgfSBlbHNlCi0gICAgICAgIEFT
U0VSVChtX21lc3NhZ2VzVG9JbmplY3RlZEJ1bmRsZVBvc3RlZFRvRW1wdHlDb250ZXh0LmlzRW1w
dHkoKSk7CisgICAgQVNTRVJUKG1fbWVzc2FnZXNUb0luamVjdGVkQnVuZGxlUG9zdGVkVG9FbXB0
eUNvbnRleHQuaXNFbXB0eSgpKTsKIAogI2lmIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQogICAg
IC8vIEluaXRpYWxpemUgcmVtb3RlIGluc3BlY3RvciBjb25uZWN0aW9uIG5vdyB0aGF0IHdlIGhh
dmUgYSBzdWItcHJvY2VzcyB0aGF0IGlzIGhvc3Rpbmcgb25lIG9mIG91ciB3ZWIgdmlld3MuCkBA
IC03OTgsMjggKzcxOCwxMiBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpkaXNjb25uZWN0UHJvY2Vz
cyhXZWJQcm9jZXNzUHJveHkqIHByb2Nlc3MpCiAKICAgICAvLyBGSVhNRSAoTXVsdGktV2ViUHJv
Y2Vzcyk6IDxyZGFyOi8vcHJvYmxlbS8xMjIzOTc2NT4gU29tZSBvZiB0aGUgaW52YWxpZGF0aW9u
IGNhbGxzIGJlbG93IGFyZSBzdGlsbCBuZWNlc3NhcnkgaW4gbXVsdGktcHJvY2VzcyBtb2RlLCBi
dXQgdGhleSBzaG91bGQgb25seSBhZmZlY3QgZGF0YSBzdHJ1Y3R1cmVzIHBlcnRhaW5pbmcgdG8g
dGhlIHByb2Nlc3MgYmVpbmcgZGlzY29ubmVjdGVkLgogICAgIC8vIENsZWFyaW5nIGV2ZXJ5dGhp
bmcgY2F1c2VzIGFzc2VydGlvbiBmYWlsdXJlcywgc28gaXQncyBsZXNzIHRyb3VibGUgdG8gc2tp
cCB0aGF0IGZvciBub3cuCi0gICAgaWYgKHByb2Nlc3NNb2RlbCgpICE9IFByb2Nlc3NNb2RlbFNo
YXJlZFNlY29uZGFyeVByb2Nlc3MpIHsKLSAgICAgICAgUmVmUHRyPFdlYlByb2Nlc3NQcm94eT4g
cHJvdGVjdChwcm9jZXNzKTsKLSAgICAgICAgaWYgKG1fcHJvY2Vzc1dpdGhQYWdlQ2FjaGUgPT0g
cHJvY2VzcykKLSAgICAgICAgICAgIG1fcHJvY2Vzc1dpdGhQYWdlQ2FjaGUgPSAwOwotCi0gICAg
ICAgIHN0YXRpY19jYXN0PFdlYkNvbnRleHRTdXBwbGVtZW50Kj4oc3VwcGxlbWVudDxXZWJHZW9s
b2NhdGlvbk1hbmFnZXJQcm94eT4oKSktPnByb2Nlc3NEaWRDbG9zZShwcm9jZXNzKTsKLQotICAg
ICAgICBtX3Byb2Nlc3Nlcy5yZW1vdmVGaXJzdChwcm9jZXNzKTsKLSAgICAgICAgcmV0dXJuOwot
ICAgIH0KLQotICAgIFdlYkNvbnRleHRTdXBwbGVtZW50TWFwOjpjb25zdF9pdGVyYXRvciBpdCA9
IG1fc3VwcGxlbWVudHMuYmVnaW4oKTsKLSAgICBXZWJDb250ZXh0U3VwcGxlbWVudE1hcDo6Y29u
c3RfaXRlcmF0b3IgZW5kID0gbV9zdXBwbGVtZW50cy5lbmQoKTsKLSAgICBmb3IgKDsgaXQgIT0g
ZW5kOyArK2l0KQotICAgICAgICBpdC0+dmFsdWUtPnByb2Nlc3NEaWRDbG9zZShwcm9jZXNzKTsK
LQotICAgIC8vIFRoZSB2ZWN0b3IgbWF5IGhhdmUgdGhlIGxhc3QgcmVmZXJlbmNlIHRvIHByb2Nl
c3MgcHJveHksIHdoaWNoIGluIHR1cm4gbWF5IGhhdmUgdGhlIGxhc3QgcmVmZXJlbmNlIHRvIHRo
ZSBjb250ZXh0LgotICAgIC8vIFNpbmNlIHZlY3RvciBlbGVtZW50cyBhcmUgZGVzdHJveWVkIGlu
IHBsYWNlLCB3ZSB3b3VsZCByZWN1cnNlIGludG8gV2ViUHJvY2Vzc1Byb3h5IGRlc3RydWN0b3IK
LSAgICAvLyBpZiBpdCB3ZXJlIGludm9rZWQgZnJvbSBWZWN0b3I6OnJlbW92ZSgpLiBSZWZQdHIg
ZGVsYXlzIGRlc3RydWN0aW9uIHVudGlsIGl0J3Mgc2FmZS4KICAgICBSZWZQdHI8V2ViUHJvY2Vz
c1Byb3h5PiBwcm90ZWN0KHByb2Nlc3MpOwogICAgIGlmIChtX3Byb2Nlc3NXaXRoUGFnZUNhY2hl
ID09IHByb2Nlc3MpCi0gICAgICAgIG1fcHJvY2Vzc1dpdGhQYWdlQ2FjaGUgPSBudWxscHRyOwor
ICAgICAgICBtX3Byb2Nlc3NXaXRoUGFnZUNhY2hlID0gMDsKKworICAgIHN0YXRpY19jYXN0PFdl
YkNvbnRleHRTdXBwbGVtZW50Kj4oc3VwcGxlbWVudDxXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94
eT4oKSktPnByb2Nlc3NEaWRDbG9zZShwcm9jZXNzKTsKKwogICAgIG1fcHJvY2Vzc2VzLnJlbW92
ZUZpcnN0KHByb2Nlc3MpOwogfQogCkBAIC04NTEsMTggKzc1NSwxNCBAQCBSZWY8V2ViUGFnZVBy
b3h5PiBXZWJQcm9jZXNzUG9vbDo6Y3JlYXRlV2ViUGFnZShQYWdlQ2xpZW50JiBwYWdlQ2xpZW50
LCBSZWY8QVBJOgogICAgIH0KIAogICAgIFJlZlB0cjxXZWJQcm9jZXNzUHJveHk+IHByb2Nlc3M7
Ci0gICAgaWYgKHByb2Nlc3NNb2RlbCgpID09IFByb2Nlc3NNb2RlbFNoYXJlZFNlY29uZGFyeVBy
b2Nlc3MpIHsKLSAgICAgICAgcHJvY2VzcyA9ICZlbnN1cmVTaGFyZWRXZWJQcm9jZXNzKCk7Ci0g
ICAgfSBlbHNlIHsKLSAgICAgICAgaWYgKG1faGF2ZUluaXRpYWxFbXB0eVByb2Nlc3MpIHsKLSAg
ICAgICAgICAgIHByb2Nlc3MgPSBtX3Byb2Nlc3Nlcy5sYXN0KCk7Ci0gICAgICAgICAgICBtX2hh
dmVJbml0aWFsRW1wdHlQcm9jZXNzID0gZmFsc2U7Ci0gICAgICAgIH0gZWxzZSBpZiAocGFnZUNv
bmZpZ3VyYXRpb24tPnJlbGF0ZWRQYWdlKCkpIHsKLSAgICAgICAgICAgIC8vIFNoYXJpbmcgcHJv
Y2Vzc2VzLCBlLmcuIHdoZW4gY3JlYXRpbmcgdGhlIHBhZ2UgdmlhIHdpbmRvdy5vcGVuKCkuCi0g
ICAgICAgICAgICBwcm9jZXNzID0gJnBhZ2VDb25maWd1cmF0aW9uLT5yZWxhdGVkUGFnZSgpLT5w
cm9jZXNzKCk7Ci0gICAgICAgIH0gZWxzZQotICAgICAgICAgICAgcHJvY2VzcyA9ICZjcmVhdGVO
ZXdXZWJQcm9jZXNzUmVzcGVjdGluZ1Byb2Nlc3NDb3VudExpbWl0KCk7Ci0gICAgfQorICAgIGlm
IChtX2hhdmVJbml0aWFsRW1wdHlQcm9jZXNzKSB7CisgICAgICAgIHByb2Nlc3MgPSBtX3Byb2Nl
c3Nlcy5sYXN0KCk7CisgICAgICAgIG1faGF2ZUluaXRpYWxFbXB0eVByb2Nlc3MgPSBmYWxzZTsK
KyAgICB9IGVsc2UgaWYgKHBhZ2VDb25maWd1cmF0aW9uLT5yZWxhdGVkUGFnZSgpKSB7CisgICAg
ICAgIC8vIFNoYXJpbmcgcHJvY2Vzc2VzLCBlLmcuIHdoZW4gY3JlYXRpbmcgdGhlIHBhZ2Ugdmlh
IHdpbmRvdy5vcGVuKCkuCisgICAgICAgIHByb2Nlc3MgPSAmcGFnZUNvbmZpZ3VyYXRpb24tPnJl
bGF0ZWRQYWdlKCktPnByb2Nlc3MoKTsKKyAgICB9IGVsc2UKKyAgICAgICAgcHJvY2VzcyA9ICZj
cmVhdGVOZXdXZWJQcm9jZXNzUmVzcGVjdGluZ1Byb2Nlc3NDb3VudExpbWl0KCk7CiAKICAgICBy
ZXR1cm4gcHJvY2Vzcy0+Y3JlYXRlV2ViUGFnZShwYWdlQ2xpZW50LCBXVEY6Om1vdmUocGFnZUNv
bmZpZ3VyYXRpb24pKTsKIH0KQEAgLTg3MCwxOCArNzcwLDE2IEBAIFJlZjxXZWJQYWdlUHJveHk+
IFdlYlByb2Nlc3NQb29sOjpjcmVhdGVXZWJQYWdlKFBhZ2VDbGllbnQmIHBhZ2VDbGllbnQsIFJl
ZjxBUEk6CiBEb3dubG9hZFByb3h5KiBXZWJQcm9jZXNzUG9vbDo6ZG93bmxvYWQoV2ViUGFnZVBy
b3h5KiBpbml0aWF0aW5nUGFnZSwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQogewog
ICAgIERvd25sb2FkUHJveHkqIGRvd25sb2FkUHJveHkgPSBjcmVhdGVEb3dubG9hZFByb3h5KHJl
cXVlc3QpOwotICAgIHVpbnQ2NF90IGluaXRpYXRpbmdQYWdlSUQgPSBpbml0aWF0aW5nUGFnZSA/
IGluaXRpYXRpbmdQYWdlLT5wYWdlSUQoKSA6IDA7CiAgICAgU2Vzc2lvbklEIHNlc3Npb25JRCA9
IGluaXRpYXRpbmdQYWdlID8gaW5pdGlhdGluZ1BhZ2UtPnNlc3Npb25JRCgpIDogU2Vzc2lvbklE
OjpkZWZhdWx0U2Vzc2lvbklEKCk7CiAKLSNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQotICAg
IGlmICh1c2VzTmV0d29ya1Byb2Nlc3MoKSAmJiBuZXR3b3JrUHJvY2VzcygpKSB7CisgICAgaWYg
KG5ldHdvcmtQcm9jZXNzKCkpIHsKICAgICAgICAgLy8gRklYTUUgKE5ldHdvcmtQcm9jZXNzKTog
UmVwbGljYXRlIHdoYXRldmVyIEZyYW1lTG9hZGVyOjpzZXRPcmlnaW5hbFVSTEZvckRvd25sb2Fk
UmVxdWVzdCBkb2VzIHdpdGggdGhlIHJlcXVlc3QgaGVyZS4KICAgICAgICAgbmV0d29ya1Byb2Nl
c3MoKS0+c2VuZChNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OkRvd25sb2FkUmVxdWVzdChzZXNz
aW9uSUQsIGRvd25sb2FkUHJveHktPmRvd25sb2FkSUQoKSwgcmVxdWVzdCksIDApOwogICAgICAg
ICByZXR1cm4gZG93bmxvYWRQcm94eTsKICAgICB9Ci0jZW5kaWYKIAotICAgIG1fcHJvY2Vzc2Vz
WzBdLT5zZW5kKE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpEb3dubG9hZFJlcXVlc3Qoc2Vzc2lvbklE
LCBkb3dubG9hZFByb3h5LT5kb3dubG9hZElEKCksIGluaXRpYXRpbmdQYWdlSUQsIHJlcXVlc3Qp
LCAwKTsKKyAgICAvLyBGSVhNRTogbWFrZSBuZXR3b3JrUHJvY2VzcygpIHJldHVybiBhIHJlZmVy
ZW5jZSBzbyB0aGlzIGlzIG5vdCBuZWNlc3NhcnkuCisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
CiAgICAgcmV0dXJuIGRvd25sb2FkUHJveHk7CiB9CiAKQEAgLTg5MywyNSArNzkxLDE4IEBAIERv
d25sb2FkUHJveHkqIFdlYlByb2Nlc3NQb29sOjpyZXN1bWVEb3dubG9hZChjb25zdCBBUEk6OkRh
dGEqIHJlc3VtZURhdGEsIGNvbnN0CiAgICAgaWYgKCFwYXRoLmlzRW1wdHkoKSkKICAgICAgICAg
U2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlKHBhdGgsIFNhbmRib3hFeHRlbnNpb246OlJl
YWRXcml0ZSwgc2FuZGJveEV4dGVuc2lvbkhhbmRsZSk7CiAKLSNpZiBFTkFCTEUoTkVUV09SS19Q
Uk9DRVNTKQotICAgIGlmICh1c2VzTmV0d29ya1Byb2Nlc3MoKSAmJiBuZXR3b3JrUHJvY2Vzcygp
KSB7CisgICAgaWYgKG5ldHdvcmtQcm9jZXNzKCkpIHsKICAgICAgICAgbmV0d29ya1Byb2Nlc3Mo
KS0+c2VuZChNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OlJlc3VtZURvd25sb2FkKGRvd25sb2Fk
UHJveHktPmRvd25sb2FkSUQoKSwgcmVzdW1lRGF0YS0+ZGF0YVJlZmVyZW5jZSgpLCBwYXRoLCBz
YW5kYm94RXh0ZW5zaW9uSGFuZGxlKSwgMCk7CiAgICAgICAgIHJldHVybiBkb3dubG9hZFByb3h5
OwogICAgIH0KLSNlbmRpZgogCi0gICAgbV9wcm9jZXNzZXNbMF0tPnNlbmQoTWVzc2FnZXM6Oldl
YlByb2Nlc3M6OlJlc3VtZURvd25sb2FkKGRvd25sb2FkUHJveHktPmRvd25sb2FkSUQoKSwgcmVz
dW1lRGF0YS0+ZGF0YVJlZmVyZW5jZSgpLCBwYXRoLCBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlKSwg
MCk7CisgICAgLy8gRklYTUU6IG1ha2UgbmV0d29ya1Byb2Nlc3MoKSByZXR1cm4gYSByZWZlcmVu
Y2Ugc28gdGhpcyBpcyBub3QgbmVjZXNzYXJ5LgorICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwog
ICAgIHJldHVybiBkb3dubG9hZFByb3h5OwogfQogCiB2b2lkIFdlYlByb2Nlc3NQb29sOjpwb3N0
TWVzc2FnZVRvSW5qZWN0ZWRCdW5kbGUoY29uc3QgU3RyaW5nJiBtZXNzYWdlTmFtZSwgQVBJOjpP
YmplY3QqIG1lc3NhZ2VCb2R5KQogewotICAgIGlmIChtX3Byb2Nlc3Nlcy5pc0VtcHR5KCkpIHsK
LSAgICAgICAgaWYgKHByb2Nlc3NNb2RlbCgpID09IFByb2Nlc3NNb2RlbFNoYXJlZFNlY29uZGFy
eVByb2Nlc3MpCi0gICAgICAgICAgICBtX21lc3NhZ2VzVG9JbmplY3RlZEJ1bmRsZVBvc3RlZFRv
RW1wdHlDb250ZXh0LmFwcGVuZChzdGQ6Om1ha2VfcGFpcihtZXNzYWdlTmFtZSwgbWVzc2FnZUJv
ZHkpKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQogICAgIGZvciAoYXV0byYgcHJvY2VzcyA6
IG1fcHJvY2Vzc2VzKSB7CiAgICAgICAgIC8vIEZJWE1FOiBSZXR1cm4gZWFybHkgaWYgdGhlIG1l
c3NhZ2UgYm9keSBjb250YWlucyBhbnkgcmVmZXJlbmNlcyB0byBXS1BhZ2VSZWZzL1dLRnJhbWVS
ZWZzIGV0Yy4gc2luY2UgdGhleSdyZSBsb2NhbCB0byBhIHByb2Nlc3MuCiAgICAgICAgIHByb2Nl
c3MtPnNlbmQoTWVzc2FnZXM6OldlYlByb2Nlc3M6OkhhbmRsZUluamVjdGVkQnVuZGxlTWVzc2Fn
ZShtZXNzYWdlTmFtZSwgVXNlckRhdGEocHJvY2Vzcy0+dHJhbnNmb3JtT2JqZWN0c1RvSGFuZGxl
cyhtZXNzYWdlQm9keSkuZ2V0KCkpKSwgMCk7CkBAIC05NDAsNyArODMxLDYgQEAgdm9pZCBXZWJQ
cm9jZXNzUG9vbDo6c2V0QWRkaXRpb25hbFBsdWdpbnNEaXJlY3RvcnkoY29uc3QgU3RyaW5nJiBk
aXJlY3RvcnkpCiB9CiAjZW5kaWYgLy8gRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpCiAKLSNp
ZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQogUGxhdGZvcm1Qcm9jZXNzSWRlbnRpZmllciBXZWJQ
cm9jZXNzUG9vbDo6bmV0d29ya1Byb2Nlc3NJZGVudGlmaWVyKCkKIHsKICAgICBpZiAoIW1fbmV0
d29ya1Byb2Nlc3MpCkBAIC05NDgsNyArODM4LDYgQEAgUGxhdGZvcm1Qcm9jZXNzSWRlbnRpZmll
ciBXZWJQcm9jZXNzUG9vbDo6bmV0d29ya1Byb2Nlc3NJZGVudGlmaWVyKCkKIAogICAgIHJldHVy
biBtX25ldHdvcmtQcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpOwogfQotI2VuZGlmCiAKIHZv
aWQgV2ViUHJvY2Vzc1Bvb2w6OnNldEFsd2F5c1VzZXNDb21wbGV4VGV4dENvZGVQYXRoKGJvb2wg
YWx3YXlzVXNlQ29tcGxleFRleHQpCiB7CkBAIC05ODgsMTUgKzg3Nyw5IEBAIHZvaWQgV2ViUHJv
Y2Vzc1Bvb2w6OnNldERvbWFpblJlbGF4YXRpb25Gb3JiaWRkZW5Gb3JVUkxTY2hlbWUoY29uc3Qg
U3RyaW5nJiB1cmxTCiAKIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnNldENhbkhhbmRsZUhUVFBTU2Vy
dmVyVHJ1c3RFdmFsdWF0aW9uKGJvb2wgdmFsdWUpCiB7Ci0jaWYgRU5BQkxFKE5FVFdPUktfUFJP
Q0VTUykKICAgICBtX2NhbkhhbmRsZUhUVFBTU2VydmVyVHJ1c3RFdmFsdWF0aW9uID0gdmFsdWU7
Ci0gICAgaWYgKHVzZXNOZXR3b3JrUHJvY2VzcygpICYmIG1fbmV0d29ya1Byb2Nlc3MpIHsKKyAg
ICBpZiAobV9uZXR3b3JrUHJvY2VzcykKICAgICAgICAgbV9uZXR3b3JrUHJvY2Vzcy0+c2VuZChN
ZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OlNldENhbkhhbmRsZUhUVFBTU2VydmVyVHJ1c3RFdmFs
dWF0aW9uKHZhbHVlKSwgMCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0jZWxzZQotICAgIFVO
VVNFRF9QQVJBTSh2YWx1ZSk7Ci0jZW5kaWYKIH0KIAogdm9pZCBXZWJQcm9jZXNzUG9vbDo6cmVn
aXN0ZXJVUkxTY2hlbWVBc0xvY2FsKGNvbnN0IFN0cmluZyYgdXJsU2NoZW1lKQpAQCAtMTA2NCwx
MCArOTQ3LDggQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6c2V0Q2FjaGVNb2RlbChDYWNoZU1vZGVs
IGNhY2hlTW9kZWwpCiAgICAgbV9jb25maWd1cmF0aW9uLT5zZXRDYWNoZU1vZGVsKGNhY2hlTW9k
ZWwpOwogICAgIHNlbmRUb0FsbFByb2Nlc3NlcyhNZXNzYWdlczo6V2ViUHJvY2Vzczo6U2V0Q2Fj
aGVNb2RlbChjYWNoZU1vZGVsKSk7CiAKLSNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQotICAg
IGlmICh1c2VzTmV0d29ya1Byb2Nlc3MoKSAmJiBtX25ldHdvcmtQcm9jZXNzKQorICAgIGlmICht
X25ldHdvcmtQcm9jZXNzKQogICAgICAgICBtX25ldHdvcmtQcm9jZXNzLT5zZW5kKE1lc3NhZ2Vz
OjpOZXR3b3JrUHJvY2Vzczo6U2V0Q2FjaGVNb2RlbChjYWNoZU1vZGVsKSwgMCk7Ci0jZW5kaWYK
IH0KIAogdm9pZCBXZWJQcm9jZXNzUG9vbDo6c2V0RGVmYXVsdFJlcXVlc3RUaW1lb3V0SW50ZXJ2
YWwoZG91YmxlIHRpbWVvdXRJbnRlcnZhbCkKQEAgLTEwNzcsMTUgKzk1OCw5IEBAIHZvaWQgV2Vi
UHJvY2Vzc1Bvb2w6OnNldERlZmF1bHRSZXF1ZXN0VGltZW91dEludGVydmFsKGRvdWJsZSB0aW1l
b3V0SW50ZXJ2YWwpCiAKIERvd25sb2FkUHJveHkqIFdlYlByb2Nlc3NQb29sOjpjcmVhdGVEb3du
bG9hZFByb3h5KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKIHsKLSNpZiBFTkFCTEUo
TkVUV09SS19QUk9DRVNTKQotICAgIGlmICh1c2VzTmV0d29ya1Byb2Nlc3MoKSkgewotICAgICAg
ICBlbnN1cmVOZXR3b3JrUHJvY2VzcygpOwotICAgICAgICBBU1NFUlQobV9uZXR3b3JrUHJvY2Vz
cyk7Ci0gICAgICAgIHJldHVybiBtX25ldHdvcmtQcm9jZXNzLT5jcmVhdGVEb3dubG9hZFByb3h5
KHJlcXVlc3QpOwotICAgIH0KLSNlbmRpZgotCi0gICAgcmV0dXJuIGVuc3VyZVNoYXJlZFdlYlBy
b2Nlc3MoKS5jcmVhdGVEb3dubG9hZFByb3h5KHJlcXVlc3QpOworICAgIGVuc3VyZU5ldHdvcmtQ
cm9jZXNzKCk7CisgICAgQVNTRVJUKG1fbmV0d29ya1Byb2Nlc3MpOworICAgIHJldHVybiBtX25l
dHdvcmtQcm9jZXNzLT5jcmVhdGVEb3dubG9hZFByb3h5KHJlcXVlc3QpOwogfQogCiB2b2lkIFdl
YlByb2Nlc3NQb29sOjphZGRNZXNzYWdlUmVjZWl2ZXIoSVBDOjpTdHJpbmdSZWZlcmVuY2UgbWVz
c2FnZVJlY2VpdmVyTmFtZSwgSVBDOjpNZXNzYWdlUmVjZWl2ZXImIG1lc3NhZ2VSZWNlaXZlcikK
QEAgLTExODIsMTIgKzEwNTcsMTAgQEAgU3RyaW5nIFdlYlByb2Nlc3NQb29sOjpjb29raWVTdG9y
YWdlRGlyZWN0b3J5KCkgY29uc3QKIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnVzZVRlc3RpbmdOZXR3
b3JrU2Vzc2lvbigpCiB7CiAgICAgQVNTRVJUKG1fcHJvY2Vzc2VzLmlzRW1wdHkoKSk7Ci0jaWYg
RU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKICAgICBBU1NFUlQoIW1fbmV0d29ya1Byb2Nlc3MpOwog
CiAgICAgaWYgKG1fbmV0d29ya1Byb2Nlc3MpCiAgICAgICAgIHJldHVybjsKLSNlbmRpZgogCiAg
ICAgaWYgKCFtX3Byb2Nlc3Nlcy5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKQEAgLTExOTcs
MjIgKzEwNzAsMTggQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6dXNlVGVzdGluZ05ldHdvcmtTZXNz
aW9uKCkKIAogdm9pZCBXZWJQcm9jZXNzUG9vbDo6YWxsb3dTcGVjaWZpY0hUVFBTQ2VydGlmaWNh
dGVGb3JIb3N0KGNvbnN0IFdlYkNlcnRpZmljYXRlSW5mbyogY2VydGlmaWNhdGUsIGNvbnN0IFN0
cmluZyYgaG9zdCkKIHsKLSNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQotICAgIGlmICh1c2Vz
TmV0d29ya1Byb2Nlc3MoKSAmJiBtX25ldHdvcmtQcm9jZXNzKSB7CisgICAgaWYgKG1fbmV0d29y
a1Byb2Nlc3MpIHsKICAgICAgICAgbV9uZXR3b3JrUHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6TmV0
d29ya1Byb2Nlc3M6OkFsbG93U3BlY2lmaWNIVFRQU0NlcnRpZmljYXRlRm9ySG9zdChjZXJ0aWZp
Y2F0ZS0+Y2VydGlmaWNhdGVJbmZvKCksIGhvc3QpLCAwKTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KLSNlbmRpZgogCiAjaWYgVVNFKFNPVVApCiAgICAgbV9wcm9jZXNzZXNbMF0tPnNlbmQoTWVz
c2FnZXM6OldlYlByb2Nlc3M6OkFsbG93U3BlY2lmaWNIVFRQU0NlcnRpZmljYXRlRm9ySG9zdChj
ZXJ0aWZpY2F0ZS0+Y2VydGlmaWNhdGVJbmZvKCksIGhvc3QpLCAwKTsKICAgICByZXR1cm47Ci0j
ZWxzZQotICAgIFVOVVNFRF9QQVJBTShjZXJ0aWZpY2F0ZSk7Ci0gICAgVU5VU0VEX1BBUkFNKGhv
c3QpOwogI2VuZGlmCiAKICNpZiAhUExBVEZPUk0oSU9TKQorICAgIC8vIEZJWE1FOiBXaHkgaXMg
dGhpcyBvbmx5IG9uIGlPUz8gQ2FuIHdlIHJlbW92ZSBpdD8KICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKICNlbmRpZgogfQpAQCAtMTI1Myw0MCArMTEyMiwxOSBAQCB2b2lkIFdlYlByb2Nlc3NQ
b29sOjpnZXRTdGF0aXN0aWNzKHVpbnQzMl90IHN0YXRpc3RpY3NNYXNrLCBzdGQ6OmZ1bmN0aW9u
PHZvaWQgKAogCiB2b2lkIFdlYlByb2Nlc3NQb29sOjpyZXF1ZXN0V2ViQ29udGVudFN0YXRpc3Rp
Y3MoU3RhdGlzdGljc1JlcXVlc3QqIHJlcXVlc3QpCiB7Ci0gICAgaWYgKHByb2Nlc3NNb2RlbCgp
ID09IFByb2Nlc3NNb2RlbFNoYXJlZFNlY29uZGFyeVByb2Nlc3MpIHsKLSAgICAgICAgaWYgKG1f
cHJvY2Vzc2VzLmlzRW1wdHkoKSkKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgCi0gICAg
ICAgIHVpbnQ2NF90IHJlcXVlc3RJRCA9IHJlcXVlc3QtPmFkZE91dHN0YW5kaW5nUmVxdWVzdCgp
OwotICAgICAgICBtX3N0YXRpc3RpY3NSZXF1ZXN0cy5zZXQocmVxdWVzdElELCByZXF1ZXN0KTsK
LSAgICAgICAgbV9wcm9jZXNzZXNbMF0tPnNlbmQoTWVzc2FnZXM6OldlYlByb2Nlc3M6OkdldFdl
YkNvcmVTdGF0aXN0aWNzKHJlcXVlc3RJRCksIDApOwotCi0gICAgfSBlbHNlIHsKLSAgICAgICAg
Ly8gRklYTUUgKE11bHRpLVdlYlByb2Nlc3MpIDxyZGFyOi8vcHJvYmxlbS8xMzIwMDA1OT46IE1h
a2UgZ2V0dGluZyBzdGF0aXN0aWNzIGZyb20gbXVsdGlwbGUgV2ViUHJvY2Vzc2VzIHdvcmsuCi0g
ICAgfQorICAgIC8vIEZJWE1FIChNdWx0aS1XZWJQcm9jZXNzKSA8cmRhcjovL3Byb2JsZW0vMTMy
MDAwNTk+OiBNYWtlIGdldHRpbmcgc3RhdGlzdGljcyBmcm9tIG11bHRpcGxlIFdlYlByb2Nlc3Nl
cyB3b3JrLgogfQogCiB2b2lkIFdlYlByb2Nlc3NQb29sOjpyZXF1ZXN0TmV0d29ya2luZ1N0YXRp
c3RpY3MoU3RhdGlzdGljc1JlcXVlc3QqIHJlcXVlc3QpCiB7Ci0gICAgYm9vbCBuZXR3b3JrUHJv
Y2Vzc1VuYXZhaWxhYmxlOwotI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCi0gICAgbmV0d29y
a1Byb2Nlc3NVbmF2YWlsYWJsZSA9ICF1c2VzTmV0d29ya1Byb2Nlc3MoKSB8fCAhbV9uZXR3b3Jr
UHJvY2VzczsKLSNlbHNlCi0gICAgbmV0d29ya1Byb2Nlc3NVbmF2YWlsYWJsZSA9IHRydWU7Ci0j
ZW5kaWYKLQotICAgIGlmIChuZXR3b3JrUHJvY2Vzc1VuYXZhaWxhYmxlKSB7CisgICAgaWYgKCFt
X25ldHdvcmtQcm9jZXNzKSB7CiAgICAgICAgIExPR19FUlJPUigiQXR0ZW1wdCB0byBnZXQgTmV0
d29ya1Byb2Nlc3Mgc3RhdGlzdGljcyBidXQgdGhlIE5ldHdvcmtQcm9jZXNzIGlzIHVuYXZhaWxh
YmxlIik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSNpZiBFTkFCTEUoTkVUV09SS19QUk9D
RVNTKQogICAgIHVpbnQ2NF90IHJlcXVlc3RJRCA9IHJlcXVlc3QtPmFkZE91dHN0YW5kaW5nUmVx
dWVzdCgpOwogICAgIG1fc3RhdGlzdGljc1JlcXVlc3RzLnNldChyZXF1ZXN0SUQsIHJlcXVlc3Qp
OwogICAgIG1fbmV0d29ya1Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpH
ZXROZXR3b3JrUHJvY2Vzc1N0YXRpc3RpY3MocmVxdWVzdElEKSwgMCk7Ci0jZWxzZQotICAgIFVO
VVNFRF9QQVJBTShyZXF1ZXN0KTsKLSNlbmRpZgogfQogCiB2b2lkIFdlYlByb2Nlc3NQb29sOjpo
YW5kbGVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgY29uc3QgU3RyaW5nJiBt
ZXNzYWdlTmFtZSwgY29uc3QgV2ViS2l0OjpVc2VyRGF0YSYgbWVzc2FnZUJvZHkpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaCBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCmluZGV4IGNmZjA2ZjEuLjMwN2E1Y2Eg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCkBAIC0zNCw5ICsz
NCw5IEBACiAjaW5jbHVkZSAiR2VuZXJpY0NhbGxiYWNrLmgiCiAjaW5jbHVkZSAiTWVzc2FnZVJl
Y2VpdmVyLmgiCiAjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyTWFwLmgiCisjaW5jbHVkZSAiTmV0
d29ya1Byb2Nlc3NQcm94eS5oIgogI2luY2x1ZGUgIlBsdWdJbkF1dG9TdGFydFByb3ZpZGVyLmgi
CiAjaW5jbHVkZSAiUGx1Z2luSW5mb1N0b3JlLmgiCi0jaW5jbHVkZSAiUHJvY2Vzc01vZGVsLmgi
CiAjaW5jbHVkZSAiUHJvY2Vzc1Rocm90dGxlci5oIgogI2luY2x1ZGUgIlN0YXRpc3RpY3NSZXF1
ZXN0LmgiCiAjaW5jbHVkZSAiVmlzaXRlZExpbmtTdG9yZS5oIgpAQCAtNTksMTAgKzU5LDYgQEAK
ICNpbmNsdWRlICJEYXRhYmFzZVByb2Nlc3NQcm94eS5oIgogI2VuZGlmCiAKLSNpZiBFTkFCTEUo
TkVUV09SS19QUk9DRVNTKQotI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzUHJveHkuaCIKLSNlbmRp
ZgotCiAjaWYgRU5BQkxFKE1FRElBX1NFU1NJT04pCiAjaW5jbHVkZSAiV2ViTWVkaWFTZXNzaW9u
Rm9jdXNNYW5hZ2VyLmgiCiAjZW5kaWYKQEAgLTg2LDE0ICs4MiwxMiBAQCBjbGFzcyBXZWJDb250
ZXh0U3VwcGxlbWVudDsKIGNsYXNzIFdlYkljb25EYXRhYmFzZTsKIGNsYXNzIFdlYlBhZ2VHcm91
cDsKIGNsYXNzIFdlYlBhZ2VQcm94eTsKK3N0cnVjdCBOZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFy
YW1ldGVyczsKIHN0cnVjdCBTdGF0aXN0aWNzRGF0YTsKIHN0cnVjdCBXZWJQcm9jZXNzQ3JlYXRp
b25QYXJhbWV0ZXJzOwogICAgIAogdHlwZWRlZiBHZW5lcmljQ2FsbGJhY2s8QVBJOjpEaWN0aW9u
YXJ5Kj4gRGljdGlvbmFyeUNhbGxiYWNrOwogCi0jaWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykK
LXN0cnVjdCBOZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyczsKLSNlbmRpZgogCiAjaWYg
UExBVEZPUk0oQ09DT0EpCiBpbnQgbmV0d29ya1Byb2Nlc3NMYXRlbmN5UU9TKCk7CkBAIC0xNDIs
OSArMTM2LDYgQEAgcHVibGljOgogICAgIHZvaWQgc2V0SGlzdG9yeUNsaWVudChzdGQ6OnVuaXF1
ZV9wdHI8QVBJOjpMZWdhY3lDb250ZXh0SGlzdG9yeUNsaWVudD4pOwogICAgIHZvaWQgc2V0RG93
bmxvYWRDbGllbnQoc3RkOjp1bmlxdWVfcHRyPEFQSTo6RG93bmxvYWRDbGllbnQ+KTsKIAotICAg
IHZvaWQgc2V0UHJvY2Vzc01vZGVsKFByb2Nlc3NNb2RlbCk7IC8vIENhbiBvbmx5IGJlIGNhbGxl
ZCB3aGVuIHRoZXJlIGFyZSBubyBwcm9jZXNzZXMgcnVubmluZy4KLSAgICBQcm9jZXNzTW9kZWwg
cHJvY2Vzc01vZGVsKCkgY29uc3QgeyByZXR1cm4gbV9jb25maWd1cmF0aW9uLT5wcm9jZXNzTW9k
ZWwoKTsgfQotCiAgICAgdm9pZCBzZXRNYXhpbXVtTnVtYmVyT2ZQcm9jZXNzZXModW5zaWduZWQp
OyAvLyBDYW4gb25seSBiZSBjYWxsZWQgd2hlbiB0aGVyZSBhcmUgbm8gcHJvY2Vzc2VzIHJ1bm5p
bmcuCiAgICAgdW5zaWduZWQgbWF4aW11bU51bWJlck9mUHJvY2Vzc2VzKCkgY29uc3QgeyByZXR1
cm4gIW1fY29uZmlndXJhdGlvbi0+bWF4aW11bVByb2Nlc3NDb3VudCgpID8gVUlOVF9NQVggOiBt
X2NvbmZpZ3VyYXRpb24tPm1heGltdW1Qcm9jZXNzQ291bnQoKTsgfQogCkBAIC0xOTMsOSArMTg0
LDcgQEAgcHVibGljOgogICAgIHZvaWQgY2xlYXJQbHVnaW5DbGllbnRQb2xpY2llcygpOwogI2Vu
ZGlmCiAKLSNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQogICAgIFBsYXRmb3JtUHJvY2Vzc0lk
ZW50aWZpZXIgbmV0d29ya1Byb2Nlc3NJZGVudGlmaWVyKCk7Ci0jZW5kaWYKIAogICAgIHZvaWQg
c2V0QWx3YXlzVXNlc0NvbXBsZXhUZXh0Q29kZVBhdGgoYm9vbCk7CiAgICAgdm9pZCBzZXRTaG91
bGRVc2VGb250U21vb3RoaW5nKGJvb2wpOwpAQCAtMjg2LDE2ICsyNzUsMTEgQEAgcHVibGljOgog
CiAgICAgLy8gTmV0d29yayBQcm9jZXNzIE1hbmFnZW1lbnQKIAotICAgIHZvaWQgc2V0VXNlc05l
dHdvcmtQcm9jZXNzKGJvb2wpOwotICAgIGJvb2wgdXNlc05ldHdvcmtQcm9jZXNzKCkgY29uc3Q7
Ci0KLSNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQogICAgIE5ldHdvcmtQcm9jZXNzUHJveHkm
IGVuc3VyZU5ldHdvcmtQcm9jZXNzKCk7CiAgICAgTmV0d29ya1Byb2Nlc3NQcm94eSogbmV0d29y
a1Byb2Nlc3MoKSB7IHJldHVybiBtX25ldHdvcmtQcm9jZXNzLmdldCgpOyB9CiAgICAgdm9pZCBu
ZXR3b3JrUHJvY2Vzc0NyYXNoZWQoTmV0d29ya1Byb2Nlc3NQcm94eSopOwogCiAgICAgdm9pZCBn
ZXROZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oUGFzc1JlZlB0cjxNZXNzYWdlczo6V2ViUHJvY2Vz
c1Byb3h5OjpHZXROZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb246OkRlbGF5ZWRSZXBseT4pOwotI2Vu
ZGlmCiAKICNpZiBFTkFCTEUoREFUQUJBU0VfUFJPQ0VTUykKICAgICB2b2lkIGVuc3VyZURhdGFi
YXNlUHJvY2VzcygpOwpAQCAtMzc4LDkgKzM2Miw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCByZXF1
ZXN0V2ViQ29udGVudFN0YXRpc3RpY3MoU3RhdGlzdGljc1JlcXVlc3QqKTsKICAgICB2b2lkIHJl
cXVlc3ROZXR3b3JraW5nU3RhdGlzdGljcyhTdGF0aXN0aWNzUmVxdWVzdCopOwogCi0jaWYgRU5B
QkxFKE5FVFdPUktfUFJPQ0VTUykKICAgICB2b2lkIHBsYXRmb3JtSW5pdGlhbGl6ZU5ldHdvcmtQ
cm9jZXNzKE5ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzJik7Ci0jZW5kaWYKIAogICAg
IHZvaWQgaGFuZGxlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBjb25zdCBTdHJpbmcmIG1lc3Nh
Z2VOYW1lLCBjb25zdCBVc2VyRGF0YSYgbWVzc2FnZUJvZHkpOwogICAgIHZvaWQgaGFuZGxlU3lu
Y2hyb25vdXNNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIGNvbnN0IFN0cmluZyYgbWVzc2FnZU5h
bWUsIGNvbnN0IFVzZXJEYXRhJiBtZXNzYWdlQm9keSwgVXNlckRhdGEmIHJldHVyblVzZXJEYXRh
KTsKQEAgLTUwMCwxMSArNDgyLDkgQEAgcHJpdmF0ZToKIAogICAgIGJvb2wgbV9wcm9jZXNzVGVy
bWluYXRpb25FbmFibGVkOwogCi0jaWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKICAgICBib29s
IG1fY2FuSGFuZGxlSFRUUFNTZXJ2ZXJUcnVzdEV2YWx1YXRpb247CiAgICAgYm9vbCBtX2RpZE5l
dHdvcmtQcm9jZXNzQ3Jhc2g7CiAgICAgUmVmUHRyPE5ldHdvcmtQcm9jZXNzUHJveHk+IG1fbmV0
d29ya1Byb2Nlc3M7Ci0jZW5kaWYKIAogI2lmIEVOQUJMRShEQVRBQkFTRV9QUk9DRVNTKQogICAg
IFJlZlB0cjxEYXRhYmFzZVByb2Nlc3NQcm94eT4gbV9kYXRhYmFzZVByb2Nlc3M7CkBAIC01Mzks
NTUgKzUxOSwxNSBAQCBwcml2YXRlOgogdGVtcGxhdGU8dHlwZW5hbWUgVD4KIHZvaWQgV2ViUHJv
Y2Vzc1Bvb2w6OnNlbmRUb05ldHdvcmtpbmdQcm9jZXNzKFQmJiBtZXNzYWdlKQogewotICAgIHN3
aXRjaCAocHJvY2Vzc01vZGVsKCkpIHsKLSAgICBjYXNlIFByb2Nlc3NNb2RlbFNoYXJlZFNlY29u
ZGFyeVByb2Nlc3M6Ci0jaWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKLSAgICAgICAgaWYgKHVz
ZXNOZXR3b3JrUHJvY2VzcygpKSB7Ci0gICAgICAgICAgICBpZiAobV9uZXR3b3JrUHJvY2VzcyAm
JiBtX25ldHdvcmtQcm9jZXNzLT5jYW5TZW5kTWVzc2FnZSgpKQotICAgICAgICAgICAgICAgIG1f
bmV0d29ya1Byb2Nlc3MtPnNlbmQoc3RkOjpmb3J3YXJkPFQ+KG1lc3NhZ2UpLCAwKTsKLSAgICAg
ICAgICAgIHJldHVybjsKLSAgICAgICAgfQotI2VuZGlmCi0gICAgICAgIGlmICghbV9wcm9jZXNz
ZXMuaXNFbXB0eSgpICYmIG1fcHJvY2Vzc2VzWzBdLT5jYW5TZW5kTWVzc2FnZSgpKQotICAgICAg
ICAgICAgbV9wcm9jZXNzZXNbMF0tPnNlbmQoc3RkOjpmb3J3YXJkPFQ+KG1lc3NhZ2UpLCAwKTsK
LSAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgUHJvY2Vzc01vZGVsTXVsdGlwbGVTZWNvbmRhcnlQ
cm9jZXNzZXM6Ci0jaWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKLSAgICAgICAgaWYgKG1fbmV0
d29ya1Byb2Nlc3MgJiYgbV9uZXR3b3JrUHJvY2Vzcy0+Y2FuU2VuZE1lc3NhZ2UoKSkKLSAgICAg
ICAgICAgIG1fbmV0d29ya1Byb2Nlc3MtPnNlbmQoc3RkOjpmb3J3YXJkPFQ+KG1lc3NhZ2UpLCAw
KTsKLSAgICAgICAgcmV0dXJuOwotI2Vsc2UKLSAgICAgICAgYnJlYWs7Ci0jZW5kaWYKLSAgICB9
Ci0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgaWYgKG1fbmV0d29ya1Byb2Nlc3MgJiYg
bV9uZXR3b3JrUHJvY2Vzcy0+Y2FuU2VuZE1lc3NhZ2UoKSkKKyAgICAgICAgbV9uZXR3b3JrUHJv
Y2Vzcy0+c2VuZChzdGQ6OmZvcndhcmQ8VD4obWVzc2FnZSksIDApOwogfQogCiB0ZW1wbGF0ZTx0
eXBlbmFtZSBUPgogdm9pZCBXZWJQcm9jZXNzUG9vbDo6c2VuZFRvTmV0d29ya2luZ1Byb2Nlc3NS
ZWxhdW5jaGluZ0lmTmVjZXNzYXJ5KFQmJiBtZXNzYWdlKQogewotICAgIHN3aXRjaCAocHJvY2Vz
c01vZGVsKCkpIHsKLSAgICBjYXNlIFByb2Nlc3NNb2RlbFNoYXJlZFNlY29uZGFyeVByb2Nlc3M6
Ci0jaWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKLSAgICAgICAgaWYgKHVzZXNOZXR3b3JrUHJv
Y2VzcygpKSB7Ci0gICAgICAgICAgICBlbnN1cmVOZXR3b3JrUHJvY2VzcygpOwotICAgICAgICAg
ICAgbV9uZXR3b3JrUHJvY2Vzcy0+c2VuZChzdGQ6OmZvcndhcmQ8VD4obWVzc2FnZSksIDApOwot
ICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0jZW5kaWYKLSAgICAgICAgZW5zdXJlU2hh
cmVkV2ViUHJvY2VzcygpOwotICAgICAgICBtX3Byb2Nlc3Nlc1swXS0+c2VuZChzdGQ6OmZvcndh
cmQ8VD4obWVzc2FnZSksIDApOwotICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBQcm9jZXNzTW9k
ZWxNdWx0aXBsZVNlY29uZGFyeVByb2Nlc3NlczoKLSNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNT
KQotICAgICAgICBlbnN1cmVOZXR3b3JrUHJvY2VzcygpOwotICAgICAgICBtX25ldHdvcmtQcm9j
ZXNzLT5zZW5kKHN0ZDo6Zm9yd2FyZDxUPihtZXNzYWdlKSwgMCk7Ci0gICAgICAgIHJldHVybjsK
LSNlbHNlCi0gICAgICAgIGJyZWFrOwotI2VuZGlmCi0gICAgfQotICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOworICAgIGVuc3VyZU5ldHdvcmtQcm9jZXNzKCk7CisgICAgbV9uZXR3b3JrUHJvY2Vz
cy0+c2VuZChzdGQ6OmZvcndhcmQ8VD4obWVzc2FnZSksIDApOwogfQogCiB0ZW1wbGF0ZTx0eXBl
bmFtZSBUPgpAQCAtNjE2LDE3ICs1NTYsMTIgQEAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KIHZvaWQg
V2ViUHJvY2Vzc1Bvb2w6OnNlbmRUb0FsbFByb2Nlc3Nlc1JlbGF1bmNoaW5nVGhlbUlmTmVjZXNz
YXJ5KGNvbnN0IFQmIG1lc3NhZ2UpCiB7CiAgICAgLy8gRklYTUUgKE11bHRpLVdlYlByb2Nlc3Mp
OiBXZWJQcm9jZXNzUG9vbCBkb2Vzbid0IHRyYWNrIHByb2Nlc3NlcyB0aGF0IGhhdmUgZXhpdGVk
LCBzbyBpdCBjYW5ub3QgcmVsYXVuY2ggdGhlc2UuIFBlcmhhcHMgdGhpcyBmdW5jdGlvbmFsaXR5
IHdvbid0IGJlIG5lZWRlZCBpbiB0aGlzIG1vZGUuCi0gICAgaWYgKHByb2Nlc3NNb2RlbCgpID09
IFByb2Nlc3NNb2RlbFNoYXJlZFNlY29uZGFyeVByb2Nlc3MpCi0gICAgICAgIGVuc3VyZVNoYXJl
ZFdlYlByb2Nlc3MoKTsKICAgICBzZW5kVG9BbGxQcm9jZXNzZXMobWVzc2FnZSk7CiB9CiAKIHRl
bXBsYXRlPHR5cGVuYW1lIFQ+CiB2b2lkIFdlYlByb2Nlc3NQb29sOjpzZW5kVG9PbmVQcm9jZXNz
KFQmJiBtZXNzYWdlKQogewotICAgIGlmIChwcm9jZXNzTW9kZWwoKSA9PSBQcm9jZXNzTW9kZWxT
aGFyZWRTZWNvbmRhcnlQcm9jZXNzKQotICAgICAgICBlbnN1cmVTaGFyZWRXZWJQcm9jZXNzKCk7
Ci0KICAgICBib29sIG1lc3NhZ2VTZW50ID0gZmFsc2U7CiAgICAgc2l6ZV90IHByb2Nlc3NDb3Vu
dCA9IG1fcHJvY2Vzc2VzLnNpemUoKTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHByb2Nl
c3NDb3VudDsgKytpKSB7CkBAIC02MzgsNyArNTczLDcgQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6
c2VuZFRvT25lUHJvY2VzcyhUJiYgbWVzc2FnZSkKICAgICAgICAgfQogICAgIH0KIAotICAgIGlm
ICghbWVzc2FnZVNlbnQgJiYgcHJvY2Vzc01vZGVsKCkgPT0gUHJvY2Vzc01vZGVsTXVsdGlwbGVT
ZWNvbmRhcnlQcm9jZXNzZXMpIHsKKyAgICBpZiAoIW1lc3NhZ2VTZW50KSB7CiAgICAgICAgIHdh
cm1Jbml0aWFsUHJvY2VzcygpOwogICAgICAgICBSZWZQdHI8V2ViUHJvY2Vzc1Byb3h5PiBwcm9j
ZXNzID0gbV9wcm9jZXNzZXMubGFzdCgpOwogICAgICAgICBpZiAocHJvY2Vzcy0+Y2FuU2VuZE1l
c3NhZ2UoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNz
UHJveHkuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAK
aW5kZXggMTkxMmNkYS4uMGQzMWMwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dl
YlByb2Nlc3NQcm94eS5jcHAKQEAgLTI1Niw3ICsyNTYsNyBAQCB2b2lkIFdlYlByb2Nlc3NQcm94
eTo6cmVtb3ZlV2ViUGFnZSh1aW50NjRfdCBwYWdlSUQpCiAKICAgICAvLyBJZiB0aGlzIHdhcyB0
aGUgbGFzdCBXZWJQYWdlIG9wZW4gaW4gdGhhdCB3ZWIgcHJvY2VzcywgYW5kIHdlIGhhdmUgbm8g
b3RoZXIgcmVhc29uIHRvIGtlZXAgaXQgYWxpdmUsIGxldCBpdCBnby4KICAgICAvLyBXZSBvbmx5
IGFsbG93IHRoaXMgd2hlbiB1c2luZyBhIG5ldHdvcmsgcHJvY2VzcywgYXMgb3RoZXJ3aXNlIHRo
ZSBXZWJQcm9jZXNzIG5lZWRzIHRvIHByZXNlcnZlIGl0cyBzZXNzaW9uIHN0YXRlLgotICAgIGlm
ICghbV9wcm9jZXNzUG9vbC0+dXNlc05ldHdvcmtQcm9jZXNzKCkgfHwgc3RhdGUoKSA9PSBTdGF0
ZTo6VGVybWluYXRlZCB8fCAhY2FuVGVybWluYXRlQ2hpbGRQcm9jZXNzKCkpCisgICAgaWYgKHN0
YXRlKCkgPT0gU3RhdGU6OlRlcm1pbmF0ZWQgfHwgIWNhblRlcm1pbmF0ZUNoaWxkUHJvY2Vzcygp
KQogICAgICAgICByZXR1cm47CiAKICAgICBzaHV0RG93bigpOwpAQCAtNDI3LDEyICs0MjcsMTAg
QEAgdm9pZCBXZWJQcm9jZXNzUHJveHk6OmdldFBsdWdpblByb2Nlc3NDb25uZWN0aW9uKHVpbnQ2
NF90IHBsdWdpblByb2Nlc3NUb2tlbiwgUGEKIH0KICNlbmRpZgogCi0jaWYgRU5BQkxFKE5FVFdP
UktfUFJPQ0VTUykKIHZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpnZXROZXR3b3JrUHJvY2Vzc0Nvbm5l
Y3Rpb24oUGFzc1JlZlB0cjxNZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpHZXROZXR3b3JrUHJv
Y2Vzc0Nvbm5lY3Rpb246OkRlbGF5ZWRSZXBseT4gcmVwbHkpCiB7CiAgICAgbV9wcm9jZXNzUG9v
bC0+Z2V0TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKHJlcGx5KTsKIH0KLSNlbmRpZiAvLyBFTkFC
TEUoTkVUV09SS19QUk9DRVNTKQogCiAjaWYgRU5BQkxFKERBVEFCQVNFX1BST0NFU1MpCiB2b2lk
IFdlYlByb2Nlc3NQcm94eTo6Z2V0RGF0YWJhc2VQcm9jZXNzQ29ubmVjdGlvbihQYXNzUmVmUHRy
PE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6OkdldERhdGFiYXNlUHJvY2Vzc0Nvbm5lY3Rpb246
OkRlbGF5ZWRSZXBseT4gcmVwbHkpCkBAIC03MDIsMTggKzcwMCw2IEBAIHZvaWQgV2ViUHJvY2Vz
c1Byb3h5Ojp1cGRhdGVUZXh0Q2hlY2tlclN0YXRlKCkKICAgICAgICAgc2VuZChNZXNzYWdlczo6
V2ViUHJvY2Vzczo6U2V0VGV4dENoZWNrZXJTdGF0ZShUZXh0Q2hlY2tlcjo6c3RhdGUoKSksIDAp
OwogfQogCi1Eb3dubG9hZFByb3h5KiBXZWJQcm9jZXNzUHJveHk6OmNyZWF0ZURvd25sb2FkUHJv
eHkoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQotewotI2lmIEVOQUJMRShORVRXT1JL
X1BST0NFU1MpCi0gICAgQVNTRVJUKCFtX3Byb2Nlc3NQb29sLT51c2VzTmV0d29ya1Byb2Nlc3Mo
KSk7Ci0jZW5kaWYKLQotICAgIGlmICghbV9kb3dubG9hZFByb3h5TWFwKQotICAgICAgICBtX2Rv
d25sb2FkUHJveHlNYXAgPSBzdGQ6Om1ha2VfdW5pcXVlPERvd25sb2FkUHJveHlNYXA+KHRoaXMp
OwotCi0gICAgcmV0dXJuIG1fZG93bmxvYWRQcm94eU1hcC0+Y3JlYXRlRG93bmxvYWRQcm94eSht
X3Byb2Nlc3NQb29sLCByZXF1ZXN0KTsKLX0KLQogdm9pZCBXZWJQcm9jZXNzUHJveHk6OmRpZFNh
dmVUb1BhZ2VDYWNoZSgpCiB7CiAgICAgbV9wcm9jZXNzUG9vbC0+cHJvY2Vzc0RpZENhY2hlUGFn
ZSh0aGlzKTsKQEAgLTk0Nyw3ICs5MzMsNiBAQCB2b2lkIFdlYlByb2Nlc3NQcm94eTo6ZGlkQ2Fu
Y2VsUHJvY2Vzc1N1c3BlbnNpb24oKQogICAgIG1fdGhyb3R0bGVyLmRpZENhbmNlbFByb2Nlc3NT
dXNwZW5zaW9uKCk7CiB9CiAKLSNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQogdm9pZCBXZWJQ
cm9jZXNzUHJveHk6OnJlaW5zdGF0ZU5ldHdvcmtQcm9jZXNzQXNzZXJ0aW9uU3RhdGUoTmV0d29y
a1Byb2Nlc3NQcm94eSYgbmV3TmV0d29ya1Byb2Nlc3NQcm94eSkKIHsKICNpZiBQTEFURk9STShJ
T1MpCkBAIC05NjIsMTEgKzk0NywxMCBAQCB2b2lkIFdlYlByb2Nlc3NQcm94eTo6cmVpbnN0YXRl
TmV0d29ya1Byb2Nlc3NBc3NlcnRpb25TdGF0ZShOZXR3b3JrUHJvY2Vzc1Byb3h5JgogICAgIFVO
VVNFRF9QQVJBTShuZXdOZXR3b3JrUHJvY2Vzc1Byb3h5KTsKICNlbmRpZgogfQotI2VuZGlmCiAK
IHZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpkaWRTZXRBc3NlcnRpb25TdGF0ZShBc3NlcnRpb25TdGF0
ZSBzdGF0ZSkKIHsKLSNpZiBQTEFURk9STShJT1MpICYmIEVOQUJMRShORVRXT1JLX1BST0NFU1Mp
CisjaWYgUExBVEZPUk0oSU9TKQogICAgIEFTU0VSVCghbV9iYWNrZ3JvdW5kVG9rZW5Gb3JOZXR3
b3JrUHJvY2VzcyB8fCAhbV9mb3JlZ3JvdW5kVG9rZW5Gb3JOZXR3b3JrUHJvY2Vzcyk7CiAKICAg
ICBzd2l0Y2ggKHN0YXRlKSB7CkBAIC05NzgsMTQgKzk2MiwxMiBAQCB2b2lkIFdlYlByb2Nlc3NQ
cm94eTo6ZGlkU2V0QXNzZXJ0aW9uU3RhdGUoQXNzZXJ0aW9uU3RhdGUgc3RhdGUpCiAgICAgICAg
IGJyZWFrOwogCiAgICAgY2FzZSBBc3NlcnRpb25TdGF0ZTo6QmFja2dyb3VuZDoKLSAgICAgICAg
aWYgKHByb2Nlc3NQb29sKCkudXNlc05ldHdvcmtQcm9jZXNzKCkpCi0gICAgICAgICAgICBtX2Jh
Y2tncm91bmRUb2tlbkZvck5ldHdvcmtQcm9jZXNzID0gcHJvY2Vzc1Bvb2woKS5lbnN1cmVOZXR3
b3JrUHJvY2VzcygpLnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCk7CisgICAg
ICAgIG1fYmFja2dyb3VuZFRva2VuRm9yTmV0d29ya1Byb2Nlc3MgPSBwcm9jZXNzUG9vbCgpLmVu
c3VyZU5ldHdvcmtQcm9jZXNzKCkudGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4o
KTsKICAgICAgICAgbV9mb3JlZ3JvdW5kVG9rZW5Gb3JOZXR3b3JrUHJvY2VzcyA9IG51bGxwdHI7
CiAgICAgICAgIGJyZWFrOwogICAgIAogICAgIGNhc2UgQXNzZXJ0aW9uU3RhdGU6OkZvcmVncm91
bmQ6Ci0gICAgICAgIGlmIChwcm9jZXNzUG9vbCgpLnVzZXNOZXR3b3JrUHJvY2VzcygpKQotICAg
ICAgICAgICAgbV9mb3JlZ3JvdW5kVG9rZW5Gb3JOZXR3b3JrUHJvY2VzcyA9IHByb2Nlc3NQb29s
KCkuZW5zdXJlTmV0d29ya1Byb2Nlc3MoKS50aHJvdHRsZXIoKS5mb3JlZ3JvdW5kQWN0aXZpdHlU
b2tlbigpOworICAgICAgICBtX2ZvcmVncm91bmRUb2tlbkZvck5ldHdvcmtQcm9jZXNzID0gcHJv
Y2Vzc1Bvb2woKS5lbnN1cmVOZXR3b3JrUHJvY2VzcygpLnRocm90dGxlcigpLmZvcmVncm91bmRB
Y3Rpdml0eVRva2VuKCk7CiAgICAgICAgIG1fYmFja2dyb3VuZFRva2VuRm9yTmV0d29ya1Byb2Nl
c3MgPSBudWxscHRyOwogICAgICAgICBmb3IgKGF1dG8mIHBhZ2UgOiBtX3BhZ2VNYXAudmFsdWVz
KCkpCiAgICAgICAgICAgICBwYWdlLT5wcm9jZXNzV2lsbEJlY29tZUZvcmVncm91bmQoKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaCBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaAppbmRleCBjYzNlY2ViLi41
YWI0MzhiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1By
b3h5LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oCkBA
IC0xNTIsOSArMTUyLDcgQEAgcHVibGljOgogCiAgICAgUHJvY2Vzc1Rocm90dGxlciYgdGhyb3R0
bGVyKCkgeyByZXR1cm4gbV90aHJvdHRsZXI7IH0KIAotI2lmIEVOQUJMRShORVRXT1JLX1BST0NF
U1MpCiAgICAgdm9pZCByZWluc3RhdGVOZXR3b3JrUHJvY2Vzc0Fzc2VydGlvblN0YXRlKE5ldHdv
cmtQcm9jZXNzUHJveHkmKTsKLSNlbmRpZgogCiBwcml2YXRlOgogICAgIGV4cGxpY2l0IFdlYlBy
b2Nlc3NQcm94eShXZWJQcm9jZXNzUG9vbCYpOwpAQCAtMTg2LDkgKzE4NCw3IEBAIHByaXZhdGU6
CiAjaWYgRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpCiAgICAgdm9pZCBnZXRQbHVnaW5Qcm9j
ZXNzQ29ubmVjdGlvbih1aW50NjRfdCBwbHVnaW5Qcm9jZXNzVG9rZW4sIFBhc3NSZWZQdHI8TWVz
c2FnZXM6OldlYlByb2Nlc3NQcm94eTo6R2V0UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb246OkRlbGF5
ZWRSZXBseT4pOwogI2VuZGlmCi0jaWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKICAgICB2b2lk
IGdldE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbihQYXNzUmVmUHRyPE1lc3NhZ2VzOjpXZWJQcm9j
ZXNzUHJveHk6OkdldE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbjo6RGVsYXllZFJlcGx5Pik7Ci0j
ZW5kaWYKICNpZiBFTkFCTEUoREFUQUJBU0VfUFJPQ0VTUykKICAgICB2b2lkIGdldERhdGFiYXNl
UHJvY2Vzc0Nvbm5lY3Rpb24oUGFzc1JlZlB0cjxNZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpH
ZXREYXRhYmFzZVByb2Nlc3NDb25uZWN0aW9uOjpEZWxheWVkUmVwbHk+KTsKICNlbmRpZgpAQCAt
MjUzLDcgKzI0OSw3IEBAIHByaXZhdGU6CiAgICAgaW50IG1fbnVtYmVyT2ZUaW1lc1N1ZGRlblRl
cm1pbmF0aW9uV2FzRGlzYWJsZWQ7CiAgICAgUHJvY2Vzc1Rocm90dGxlciBtX3Rocm90dGxlcjsK
ICAgICBQcm9jZXNzVGhyb3R0bGVyOjpCYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbiBtX3Rva2VuRm9y
SG9sZGluZ0xvY2tlZEZpbGVzOwotI2lmIFBMQVRGT1JNKElPUykgJiYgRU5BQkxFKE5FVFdPUktf
UFJPQ0VTUykKKyNpZiBQTEFURk9STShJT1MpCiAgICAgUHJvY2Vzc1Rocm90dGxlcjo6Rm9yZWdy
b3VuZEFjdGl2aXR5VG9rZW4gbV9mb3JlZ3JvdW5kVG9rZW5Gb3JOZXR3b3JrUHJvY2VzczsKICAg
ICBQcm9jZXNzVGhyb3R0bGVyOjpCYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbiBtX2JhY2tncm91bmRU
b2tlbkZvck5ldHdvcmtQcm9jZXNzOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5tZXNzYWdlcy5pbgppbmRleCA3NDUwOWUwLi4yMWRi
ZmQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5
Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJv
eHkubWVzc2FnZXMuaW4KQEAgLTM4LDkgKzM4LDcgQEAgbWVzc2FnZXMgLT4gV2ViUHJvY2Vzc1By
b3h5IExlZ2FjeVJlY2VpdmVyIHsKICAgICBHZXRQbHVnaW5zKGJvb2wgcmVmcmVzaCkgLT4gKFZl
Y3RvcjxXZWJDb3JlOjpQbHVnaW5JbmZvPiBwbHVnaW5zLCBWZWN0b3I8V2ViQ29yZTo6UGx1Z2lu
SW5mbz4gYXBwbGljYXRpb25QbHVnaW5zKQogICAgIEdldFBsdWdpblByb2Nlc3NDb25uZWN0aW9u
KHVpbnQ2NF90IHBsdWdpblByb2Nlc3NUb2tlbikgLT4gKElQQzo6QXR0YWNobWVudCBjb25uZWN0
aW9uSGFuZGxlLCBib29sIHN1cHBvcnRzQXN5bmNocm9ub3VzSW5pdGlhbGl6YXRpb24pIERlbGF5
ZWQKICNlbmRpZgotI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCiAgICAgR2V0TmV0d29ya1By
b2Nlc3NDb25uZWN0aW9uKCkgLT4gKElQQzo6QXR0YWNobWVudCBjb25uZWN0aW9uSGFuZGxlKSBE
ZWxheWVkCi0jZW5kaWYKICNpZiBFTkFCTEUoREFUQUJBU0VfUFJPQ0VTUykKICAgICBHZXREYXRh
YmFzZVByb2Nlc3NDb25uZWN0aW9uKCkgLT4gKElQQzo6QXR0YWNobWVudCBjb25uZWN0aW9uSGFu
ZGxlKSBEZWxheWVkCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcAppbmRleCA1MzA1Zjg4Li45MzYx
NjJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vi
c2l0ZURhdGFTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYnNpdGVE
YXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwCkBAIC05NCwxMiArOTQsMTAgQEAgV2Vic2l0ZURhdGFT
dG9yZTo6fldlYnNpdGVEYXRhU3RvcmUoKQogewogICAgIHBsYXRmb3JtRGVzdHJveSgpOwogCi0j
aWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKICAgICBpZiAobV9zZXNzaW9uSUQuaXNFcGhlbWVy
YWwoKSkgewogICAgICAgICBmb3IgKGF1dG8mIHByb2Nlc3NQb29sIDogV2ViUHJvY2Vzc1Bvb2w6
OmFsbFByb2Nlc3NQb29scygpKQogICAgICAgICAgICAgcHJvY2Vzc1Bvb2wtPnNlbmRUb05ldHdv
cmtpbmdQcm9jZXNzKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6RGVzdHJveVByaXZhdGVCcm93
c2luZ1Nlc3Npb24obV9zZXNzaW9uSUQpKTsKICAgICB9Ci0jZW5kaWYKIH0KIAogdm9pZCBXZWJz
aXRlRGF0YVN0b3JlOjpjbG9uZVNlc3Npb25EYXRhKFdlYlBhZ2VQcm94eSYgc291cmNlUGFnZSwg
V2ViUGFnZVByb3h5JiBuZXdQYWdlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL2d0ay9XZWJQcm9jZXNzUG9vbEd0ay5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
Z3RrL1dlYlByb2Nlc3NQb29sR3RrLmNwcAppbmRleCAxNGE4YzczLi5kODI2YTAxOCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2d0ay9XZWJQcm9jZXNzUG9vbEd0ay5jcHAK
KysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2d0ay9XZWJQcm9jZXNzUG9vbEd0ay5jcHAK
QEAgLTMwLDYgKzMwLDcgQEAKIAogI2luY2x1ZGUgIkFQSVByb2Nlc3NQb29sQ29uZmlndXJhdGlv
bi5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKKyNpbmNsdWRlICJOZXR3b3JrUHJvY2Vzc01lc3Nh
Z2VzLmgiCiAjaW5jbHVkZSAiV2ViQ29va2llTWFuYWdlclByb3h5LmgiCiAjaW5jbHVkZSAiV2Vi
SW5zcGVjdG9yU2VydmVyLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVy
cy5oIgpAQCAtNDEsMTAgKzQyLDYgQEAKICNpbmNsdWRlIDx3dGYvZ2xpYi9HVW5pcXVlUHRyLmg+
CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogCi0jaWYgRU5BQkxFKE5FVFdPUktfUFJP
Q0VTUykKLSNpbmNsdWRlICJOZXR3b3JrUHJvY2Vzc01lc3NhZ2VzLmgiCi0jZW5kaWYKLQogbmFt
ZXNwYWNlIFdlYktpdCB7CiAKIHN0YXRpYyB2b2lkIGluaXRJbnNwZWN0b3JTZXJ2ZXIoKQpAQCAt
OTgsMTYgKzk1LDYgQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6cGxhdGZvcm1Jbml0aWFsaXplV2Vi
UHJvY2VzcyhXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzJgogICAgICAgICBwYXJhbWV0ZXJz
LnVybFNjaGVtZXNSZWdpc3RlcmVkQXNMb2NhbC5hcHBlbmQoInJlc291cmNlIik7CiAgICAgfQog
Ci0gICAgaWYgKCF1c2VzTmV0d29ya1Byb2Nlc3MoKSkgewotICAgICAgICBwYXJhbWV0ZXJzLnVy
bFNjaGVtZXNSZWdpc3RlcmVkRm9yQ3VzdG9tUHJvdG9jb2xzID0gc3VwcGxlbWVudDxXZWJTb3Vw
Q3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlcj4oKS0+cmVnaXN0ZXJlZFNjaGVtZXNGb3JDdXN0
b21Qcm90b2NvbHMoKTsKLQotICAgICAgICBzdXBwbGVtZW50PFdlYkNvb2tpZU1hbmFnZXJQcm94
eT4oKS0+Z2V0Q29va2llUGVyc2lzdGVudFN0b3JhZ2UocGFyYW1ldGVycy5jb29raWVQZXJzaXN0
ZW50U3RvcmFnZVBhdGgsIHBhcmFtZXRlcnMuY29va2llUGVyc2lzdGVudFN0b3JhZ2VUeXBlKTsK
LSAgICAgICAgcGFyYW1ldGVycy5jb29raWVBY2NlcHRQb2xpY3kgPSBtX2luaXRpYWxIVFRQQ29v
a2llQWNjZXB0UG9saWN5OwotCi0gICAgICAgIHBhcmFtZXRlcnMuaWdub3JlVExTRXJyb3JzID0g
bV9pZ25vcmVUTFNFcnJvcnM7Ci0gICAgICAgIHBhcmFtZXRlcnMuZGlza0NhY2hlRGlyZWN0b3J5
ID0gbV9jb25maWd1cmF0aW9uLT5kaXNrQ2FjaGVEaXJlY3RvcnkoKTsKLSAgICB9Ci0KICAgICBw
YXJhbWV0ZXJzLm1lbW9yeUNhY2hlRGlzYWJsZWQgPSBtX21lbW9yeUNhY2hlRGlzYWJsZWQgfHwg
Y2FjaGVNb2RlbCgpID09IENhY2hlTW9kZWxEb2N1bWVudFZpZXdlcjsKIH0KIApAQCAtMTQ5LDEz
ICsxMzYsOCBAQCBTdHJpbmcgV2ViUHJvY2Vzc1Bvb2w6OmxlZ2FjeVBsYXRmb3JtRGVmYXVsdE5l
dHdvcmtDYWNoZURpcmVjdG9yeSgpCiB2b2lkIFdlYlByb2Nlc3NQb29sOjpzZXRJZ25vcmVUTFNF
cnJvcnMoYm9vbCBpZ25vcmVUTFNFcnJvcnMpCiB7CiAgICAgbV9pZ25vcmVUTFNFcnJvcnMgPSBp
Z25vcmVUTFNFcnJvcnM7Ci0jaWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKLSAgICBpZiAodXNl
c05ldHdvcmtQcm9jZXNzKCkgJiYgbmV0d29ya1Byb2Nlc3MoKSkgeworICAgIGlmIChuZXR3b3Jr
UHJvY2VzcygpKQogICAgICAgICBuZXR3b3JrUHJvY2VzcygpLT5zZW5kKE1lc3NhZ2VzOjpOZXR3
b3JrUHJvY2Vzczo6U2V0SWdub3JlVExTRXJyb3JzKG1faWdub3JlVExTRXJyb3JzKSwgMCk7Ci0g
ICAgICAgIHJldHVybjsKLSAgICB9Ci0jZW5kaWYKLSAgICBzZW5kVG9BbGxQcm9jZXNzZXMoTWVz
c2FnZXM6OldlYlByb2Nlc3M6OlNldElnbm9yZVRMU0Vycm9ycyhtX2lnbm9yZVRMU0Vycm9ycykp
OwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9zb3VwL1dlYlByb2Nlc3NQb29sU291cC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3Mvc291cC9XZWJQcm9jZXNzUG9vbFNvdXAuY3BwCmluZGV4IGMzZGIwYTEuLjcyNjgy
ZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9zb3VwL1dlYlByb2Nlc3NQ
b29sU291cC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3NvdXAvV2ViUHJvY2Vz
c1Bvb2xTb3VwLmNwcApAQCAtMjQsNyArMjQsNiBAQAogICovCiAKICNpbmNsdWRlICJjb25maWcu
aCIKLSNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQogI2luY2x1ZGUgIldlYlByb2Nlc3NQb29s
LmgiCiAKICNpbmNsdWRlICJOZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oIgpAQCAt
NDcsNSArNDYsMyBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpwbGF0Zm9ybUluaXRpYWxpemVOZXR3
b3JrUHJvY2VzcyhOZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYQogfQogCiB9Ci0KLSNlbmRpZgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qIGIvU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmlu
ZGV4IGUwMjQyZTIuLjhhYzA5NTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTE0NjAsNyArMTQ2MCw2IEBACiAJCUJDNTc1MDk4
MTI2OEYzQzYwMDZGMEYxMiAvKiBXZWJQb3B1cE1lbnVQcm94eU1hYy5tbSBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDNTc1MDk2MTI2OEYzQzYwMDZGMEYx
MiAvKiBXZWJQb3B1cE1lbnVQcm94eU1hYy5tbSAqLzsgfTsKIAkJQkM1NzU2MTMxMjZFMDEzODAw
NkYwRjEyIC8qIEFQSUVycm9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEJDNTc1NjEyMTI2RTAxMzgwMDZGMEYxMiAvKiBBUElFcnJvci5jcHAgKi87
IH07CiAJCUJDNTk1NDg5MTVDNzg2ODUwMEZEMUUzRSAvKiBXZWJLaXQyLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzU5NTQ4ODE1Qzc4Njg1MDBGRDFF
M0UgLyogV2ViS2l0Mi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07Ci0JCUJDNTk3MDc1MTE2NTkxRDAwMDU1MUZDQSAvKiBQcm9jZXNzTW9kZWwuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDNTk3MDc0MTE2NTkx
RDAwMDU1MUZDQSAvKiBQcm9jZXNzTW9kZWwuaCAqLzsgfTsKIAkJQkM1Qzc1QzgxNDk1NERBNjAw
QkM0Nzc1IC8qIFdLQ29ubmVjdGlvbkludGVybmFsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzVDNzVDNjE0OTU0REE2MDBCQzQ3NzUgLyogV0tDb25u
ZWN0aW9uSW50ZXJuYWwuaCAqLzsgfTsKIAkJQkM1RDI0QTExNkNDM0I5RTAwN0Q1NDYxIC8qIENo
aWxkUHJvY2Vzc01haW4ubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBCQzVEMjQ5RjE2Q0MzQjlFMDA3RDU0NjEgLyogQ2hpbGRQcm9jZXNzTWFpbi5tbSAq
LzsgfTsKIAkJQkM1RDI0QTIxNkNDM0I5RTAwN0Q1NDYxIC8qIENoaWxkUHJvY2Vzc01haW4ubW0g
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzVEMjQ5RjE2
Q0MzQjlFMDA3RDU0NjEgLyogQ2hpbGRQcm9jZXNzTWFpbi5tbSAqLzsgfTsKQEAgLTM3MzIsNyAr
MzczMSw2IEBACiAJCUJDNTc1MDk2MTI2OEYzQzYwMDZGMEYxMiAvKiBXZWJQb3B1cE1lbnVQcm94
eU1hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdlYlBvcHVw
TWVudVByb3h5TWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQzU3NTYxMjEy
NkUwMTM4MDA2RjBGMTIgLyogQVBJRXJyb3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gQVBJRXJyb3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlC
QzU5NTQ4ODE1Qzc4Njg1MDBGRDFFM0UgLyogV2ViS2l0Mi5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBXZWJLaXQyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUJD
NTk3MDc0MTE2NTkxRDAwMDU1MUZDQSAvKiBQcm9jZXNzTW9kZWwuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gUHJvY2Vzc01vZGVsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUJDNUM3NUM2MTQ5NTREQTYwMEJDNDc3NSAvKiBXS0Nvbm5lY3Rpb25JbnRlcm5hbC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS0Nvbm5lY3Rpb25JbnRlcm5hbC5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQzVEMjQ5RjE2Q0MzQjlFMDA3RDU0NjEg
LyogQ2hpbGRQcm9jZXNzTWFpbi5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsg
cGF0aCA9IENoaWxkUHJvY2Vzc01haW4ubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUJDNUQyNEI4MTZDQzQwQkIwMDdENTQ2MSAvKiBCYXNlTGVnYWN5UHJvY2Vzcy54Y2NvbmZpZyAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQueGNj
b25maWc7IHBhdGggPSBCYXNlTGVnYWN5UHJvY2Vzcy54Y2NvbmZpZzsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKQEAgLTYyMzgsNyArNjIzNiw2IEBACiAJCQkJMUFDNzUzN0ExODNBOUZEQjAw
NzJDQjE1IC8qIFBhZ2VMb2FkU3RhdGUuaCAqLywKIAkJCQkzNzcxNkE1OTE5NUI5MTA1MDBFRThC
MUIgLyogUHJvY2Vzc0Fzc2VydGlvbi5jcHAgKi8sCiAJCQkJODZGOTUzNjAxOEZGNEZENDAwMURC
MkVGIC8qIFByb2Nlc3NBc3NlcnRpb24uaCAqLywKLQkJCQlCQzU5NzA3NDExNjU5MUQwMDA1NTFG
Q0EgLyogUHJvY2Vzc01vZGVsLmggKi8sCiAJCQkJODZFNjdBMjIxOTBGNDExODAwMDA0QUI3IC8q
IFByb2Nlc3NUaHJvdHRsZXIuY3BwICovLAogCQkJCTg2RTY3QTIxMTkwRjQxMTgwMDAwNEFCNyAv
KiBQcm9jZXNzVGhyb3R0bGVyLmggKi8sCiAJCQkJODMwNDhBRTUxQUNBNDVEQzAwODJDODMyIC8q
IFByb2Nlc3NUaHJvdHRsZXJDbGllbnQuaCAqLywKQEAgLTc5ODksNyArNzk4Niw2IEBACiAJCQkJ
RTFDQzFCOTAxMkQ3RUFERjAwNjI1ODM4IC8qIFByaW50SW5mby5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJODZGOTUzNjUxOEZGNThGNTAwMURCMkVGIC8qIFByb2Nlc3NBc3NlcnRpb24uaCBpbiBIZWFk
ZXJzICovLAogCQkJCUJDMUE3QzU4MTEzNkUxOUMwMEZCNzE2NyAvKiBQcm9jZXNzTGF1bmNoZXIu
aCBpbiBIZWFkZXJzICovLAotCQkJCUJDNTk3MDc1MTE2NTkxRDAwMDU1MUZDQSAvKiBQcm9jZXNz
TW9kZWwuaCBpbiBIZWFkZXJzICovLAogCQkJCTg2RTY3QTI1MTkxMEI5RDEwMDAwNEFCNyAvKiBQ
cm9jZXNzVGhyb3R0bGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk4MzA0OEFFNjFBQ0E0NURDMDA4
MkM4MzIgLyogUHJvY2Vzc1Rocm90dGxlckNsaWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkQ3
RjEzMTAxQTcwMkZCQTAwOUE2RkJEIC8qIFByb2Nlc3NUeXBlLmggaW4gSGVhZGVycyAqLywKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYktpdDJQcmVmaXguaCBiL1NvdXJjZS9XZWJLaXQy
L1dlYktpdDJQcmVmaXguaAppbmRleCA4YjIxZjhmLi5hOWYxNTIxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJLaXQyUHJlZml4LmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViS2l0MlBy
ZWZpeC5oCkBAIC0zNiw4ICszNiw2IEBACiAKICNkZWZpbmUgRU5BQkxFX1dFQl9QUk9DRVNTX1NB
TkRCT1ggMQogCi0jZGVmaW5lIEVOQUJMRV9ORVRXT1JLX1BST0NFU1MgMQotCiAjZGVmaW5lIEVO
QUJMRV9EQVRBQkFTRV9QUk9DRVNTIDEKIAogI2RlZmluZSBFTkFCTEVfTUVNT1JZX1NBTVBMRVIg
MQpAQCAtNTksNyArNTcsNiBAQAogI2VuZGlmCiAKICNpZiBQTEFURk9STShHVEspCi0jZGVmaW5l
IEVOQUJMRV9ORVRXT1JLX1BST0NFU1MgMQogI2RlZmluZSBFTkFCTEVfU0hBUkVBQkxFX1JFU09V
UkNFIDEKICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0Zp
bGVBUEkvQmxvYlJlZ2lzdHJ5UHJveHkuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9G
aWxlQVBJL0Jsb2JSZWdpc3RyeVByb3h5LmNwcAppbmRleCBkYWNlNTczLi43ZjQ0YmVhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0ZpbGVBUEkvQmxvYlJlZ2lzdHJ5UHJv
eHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvRmlsZUFQSS9CbG9iUmVnaXN0
cnlQcm94eS5jcHAKQEAgLTI2LDggKzI2LDYgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNs
dWRlICJCbG9iUmVnaXN0cnlQcm94eS5oIgogCi0jaWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykK
LQogI2luY2x1ZGUgIk5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzTWVzc2FnZXMuaCIKICNp
bmNsdWRlICJOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uaCIKICNpbmNsdWRlICJXZWJDb3JlQXJn
dW1lbnRDb2RlcnMuaCIKQEAgLTQwLDggKzM4LDYgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKIHZv
aWQgQmxvYlJlZ2lzdHJ5UHJveHk6OnJlZ2lzdGVyRmlsZUJsb2JVUkwoY29uc3QgV2ViQ29yZTo6
VVJMJiB1cmwsIFBhc3NSZWZQdHI8QmxvYkRhdGFGaWxlUmVmZXJlbmNlPiBmaWxlLCBjb25zdCBT
dHJpbmcmIGNvbnRlbnRUeXBlKQogewotICAgIEFTU0VSVChXZWJQcm9jZXNzOjpzaW5nbGV0b24o
KS51c2VzTmV0d29ya1Byb2Nlc3MoKSk7Ci0KICAgICBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUg
ZXh0ZW5zaW9uSGFuZGxlOwogCiAgICAgLy8gRmlsZSBwYXRoIGNhbiBiZSBlbXB0eSB3aGVuIHN1
Ym1pdHRpbmcgYSBmb3JtIGZpbGUgaW5wdXQgd2l0aG91dCBhIGZpbGUsIHNlZSBidWcgMTExNzc4
LgpAQCAtNTMsMzYgKzQ5LDI2IEBAIHZvaWQgQmxvYlJlZ2lzdHJ5UHJveHk6OnJlZ2lzdGVyRmls
ZUJsb2JVUkwoY29uc3QgV2ViQ29yZTo6VVJMJiB1cmwsIFBhc3NSZWZQdHI8CiAKIHZvaWQgQmxv
YlJlZ2lzdHJ5UHJveHk6OnJlZ2lzdGVyQmxvYlVSTChjb25zdCBVUkwmIHVybCwgVmVjdG9yPEJs
b2JQYXJ0PiBibG9iUGFydHMsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpCiB7Ci0gICAgQVNT
RVJUKFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnVzZXNOZXR3b3JrUHJvY2VzcygpKTsKLQogICAg
IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLm5ldHdvcmtDb25uZWN0aW9uKCktPmNvbm5lY3Rpb24o
KS0+c2VuZChNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OlJlZ2lzdGVy
QmxvYlVSTCh1cmwsIGJsb2JQYXJ0cywgY29udGVudFR5cGUpLCAwKTsKIH0KIAogdm9pZCBCbG9i
UmVnaXN0cnlQcm94eTo6cmVnaXN0ZXJCbG9iVVJMKGNvbnN0IFVSTCYgdXJsLCBjb25zdCBVUkwm
IHNyY1VSTCkKIHsKLSAgICBBU1NFUlQoV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkudXNlc05ldHdv
cmtQcm9jZXNzKCkpOwotCiAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkubmV0d29ya0Nvbm5l
Y3Rpb24oKS0+Y29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2Vzczo6UmVnaXN0ZXJCbG9iVVJMRnJvbVVSTCh1cmwsIHNyY1VSTCksIDApOwogfQog
CiB2b2lkIEJsb2JSZWdpc3RyeVByb3h5Ojp1bnJlZ2lzdGVyQmxvYlVSTChjb25zdCBVUkwmIHVy
bCkKIHsKLSAgICBBU1NFUlQoV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkudXNlc05ldHdvcmtQcm9j
ZXNzKCkpOwotCiAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkubmV0d29ya0Nvbm5lY3Rpb24o
KS0+Y29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzczo6VW5yZWdpc3RlckJsb2JVUkwodXJsKSwgMCk7CiB9CiAKIHZvaWQgQmxvYlJlZ2lzdHJ5
UHJveHk6OnJlZ2lzdGVyQmxvYlVSTEZvclNsaWNlKGNvbnN0IFVSTCYgdXJsLCBjb25zdCBVUkwm
IHNyY1VSTCwgbG9uZyBsb25nIHN0YXJ0LCBsb25nIGxvbmcgZW5kKQogewotICAgIEFTU0VSVChX
ZWJQcm9jZXNzOjpzaW5nbGV0b24oKS51c2VzTmV0d29ya1Byb2Nlc3MoKSk7Ci0KICAgICBXZWJQ
cm9jZXNzOjpzaW5nbGV0b24oKS5uZXR3b3JrQ29ubmVjdGlvbigpLT5jb25uZWN0aW9uKCktPnNl
bmQoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpSZWdpc3RlckJsb2JV
UkxGb3JTbGljZSh1cmwsIHNyY1VSTCwgc3RhcnQsIGVuZCksIDApOwogfQogCiB1bnNpZ25lZCBs
b25nIGxvbmcgQmxvYlJlZ2lzdHJ5UHJveHk6OmJsb2JTaXplKGNvbnN0IFVSTCYgdXJsKQogewot
ICAgIEFTU0VSVChXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS51c2VzTmV0d29ya1Byb2Nlc3MoKSk7
Ci0KICAgICB1aW50NjRfdCByZXN1bHRTaXplOwogICAgIGlmICghV2ViUHJvY2Vzczo6c2luZ2xl
dG9uKCkubmV0d29ya0Nvbm5lY3Rpb24oKS0+Y29ubmVjdGlvbigpLT5zZW5kU3luYyhNZXNzYWdl
czo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkJsb2JTaXplKHVybCksIE1lc3NhZ2Vz
OjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6QmxvYlNpemU6OlJlcGx5KHJlc3VsdFNp
emUpLCAwKSkKICAgICAgICAgcmV0dXJuIDA7CkBAIC05MCw1ICs3NiwzIEBAIHVuc2lnbmVkIGxv
bmcgbG9uZyBCbG9iUmVnaXN0cnlQcm94eTo6YmxvYlNpemUoY29uc3QgVVJMJiB1cmwpCiB9CiAK
IH0KLQotI2VuZGlmIC8vIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0ZpbGVBUEkvQmxvYlJlZ2lzdHJ5UHJveHkuaCBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvRmlsZUFQSS9CbG9iUmVnaXN0cnlQcm94eS5oCmluZGV4IDhj
YzA2OWEuLmFkMWE3YzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvRmls
ZUFQSS9CbG9iUmVnaXN0cnlQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
RmlsZUFQSS9CbG9iUmVnaXN0cnlQcm94eS5oCkBAIC0yNiw4ICsyNiw2IEBACiAjaWZuZGVmIEJs
b2JSZWdpc3RyeVByb3h5X2gKICNkZWZpbmUgQmxvYlJlZ2lzdHJ5UHJveHlfaAogCi0jaWYgRU5B
QkxFKE5FVFdPUktfUFJPQ0VTUykKLQogI2luY2x1ZGUgPFdlYkNvcmUvQmxvYlJlZ2lzdHJ5Lmg+
CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtNDQsNiArNDIsNCBAQCBwdWJsaWM6CiAKIH0KIAot
I2VuZGlmIC8vIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCi0KICNlbmRpZiAvLyBCbG9iUmVnaXN0
cnlQcm94eV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL05ldHdvcmsv
TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
TmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCmluZGV4IDcxNDg2NWQuLmRlM2U1
YzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3Jr
UHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvTmV0
d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCkBAIC0zNyw4ICszNyw2IEBACiAjaW5j
bHVkZSA8V2ViQ29yZS9TZXNzaW9uSUQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NoYXJlZEJ1ZmZl
ci5oPgogCi0jaWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKLQogdXNpbmcgbmFtZXNwYWNlIFdl
YkNvcmU7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtOTgsNSArOTYsMyBAQCB2b2lkIE5ldHdv
cmtQcm9jZXNzQ29ubmVjdGlvbjo6ZGlkQ2FjaGVSZXNvdXJjZShjb25zdCBSZXNvdXJjZVJlcXVl
c3QmIHJlcXVlc3QsCiAjZW5kaWYKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KLSNlbmRpZiAv
LyBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5oIGIvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5oCmluZGV4IDBk
NWFkMDguLmNhZTgwYTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvTmV0
d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmgKQEAgLTMxLDggKzMxLDYg
QEAKICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0
cmluZy5oPgogCi0jaWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKLQogbmFtZXNwYWNlIElQQyB7
CiBjbGFzcyBEYXRhUmVmZXJlbmNlOwogfQpAQCAtODIsNyArODAsNCBAQCBwcml2YXRlOgogCiB9
IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAotI2VuZGlmIC8vIEVOQUJMRShORVRXT1JLX1BST0NFU1Mp
Ci0KLQogI2VuZGlmIC8vIE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbl9oCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9u
Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQ
cm9jZXNzQ29ubmVjdGlvbi5tZXNzYWdlcy5pbgppbmRleCBjMWY3OGM0Li5jMjQwN2YyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3ND
b25uZWN0aW9uLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvTmV0
d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24ubWVzc2FnZXMuaW4KQEAgLTIwLDggKzIwLDYg
QEAKICMgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKICMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KIAotI2lmIEVOQUJMRShO
RVRXT1JLX1BST0NFU1MpCi0KIG1lc3NhZ2VzIC0+IE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbiBM
ZWdhY3lSZWNlaXZlciB7CiAKICNpZiBFTkFCTEUoU0hBUkVBQkxFX1JFU09VUkNFKQpAQCAtMjks
NSArMjcsMyBAQCBtZXNzYWdlcyAtPiBOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24gTGVnYWN5UmVj
ZWl2ZXIgewogI2VuZGlmCiAKIH0KLQotI2VuZGlmIC8vIEVOQUJMRShORVRXT1JLX1BST0NFU1Mp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3Vy
Y2VMb2FkU2NoZWR1bGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvTmV0d29yay9X
ZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXIuY3BwCmluZGV4IDZlM2FmMzAuLjg1Nzc4YTggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRT
Y2hlZHVsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvTmV0d29yay9XZWJS
ZXNvdXJjZUxvYWRTY2hlZHVsZXIuY3BwCkBAIC01Miw4ICs1Miw2IEBACiAjaW5jbHVkZSA8V2Vi
Q29yZS9TdWJyZXNvdXJjZUxvYWRlci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4K
IAotI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCi0KIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3Jl
OwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTI4Niw1ICsyODQsMyBAQCB2b2lkIFdlYlJlc291
cmNlTG9hZFNjaGVkdWxlcjo6bmV0d29ya1Byb2Nlc3NDcmFzaGVkKCkKIH0KIAogfSAvLyBuYW1l
c3BhY2UgV2ViS2l0Ci0KLSNlbmRpZiAvLyBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZFNj
aGVkdWxlci5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNl
TG9hZFNjaGVkdWxlci5oCmluZGV4IGMzMjMwOWMuLjIyMWUxNzQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXIuaAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkU2No
ZWR1bGVyLmgKQEAgLTMyLDggKzMyLDYgQEAKICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlTG9h
ZGVyLmg+CiAjaW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KIAotI2lmIEVOQUJMRShORVRXT1JLX1BS
T0NFU1MpCi0KIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBOZXR3b3JrUHJvY2Vzc0Nvbm5l
Y3Rpb247CkBAIC03Nyw2ICs3NSw0IEBAIHByaXZhdGU6CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktp
dAogCi0jZW5kaWYgLy8gRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKLQogI2VuZGlmIC8vIFdlYlJl
c291cmNlTG9hZFNjaGVkdWxlcl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmNwcAppbmRleCAzNzUzNzk3Li5mNDFiNzc5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3Vy
Y2VMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvTmV0d29yay9XZWJS
ZXNvdXJjZUxvYWRlci5jcHAKQEAgLTI2LDggKzI2LDYgQEAKICNpbmNsdWRlICJjb25maWcuaCIK
ICNpbmNsdWRlICJXZWJSZXNvdXJjZUxvYWRlci5oIgogCi0jaWYgRU5BQkxFKE5FVFdPUktfUFJP
Q0VTUykKLQogI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlICJMb2dnaW5nLmgi
CiAjaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmgiCkBAIC0yMjEsNSArMjE5LDMg
QEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRlcjo6Y2FuQXV0aGVudGljYXRlQWdhaW5zdFByb3RlY3Rp
b25TcGFjZShjb25zdCBQcm90ZWN0aW9uU3AKICNlbmRpZgogCiB9IC8vIG5hbWVzcGFjZSBXZWJL
aXQKLQotI2VuZGlmIC8vIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuaCBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5oCmluZGV4IDc5
NjgwNmUuLjNhNjIwMDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvTmV0
d29yay9XZWJSZXNvdXJjZUxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
TmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5oCkBAIC0yNiw4ICsyNiw2IEBACiAjaWZuZGVmIFdl
YlJlc291cmNlTG9hZGVyX2gKICNkZWZpbmUgV2ViUmVzb3VyY2VMb2FkZXJfaAogCi0jaWYgRU5B
QkxFKE5FVFdPUktfUFJPQ0VTUykKLQogI2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIKICNpbmNsdWRl
ICJNZXNzYWdlU2VuZGVyLmgiCiAjaW5jbHVkZSAiU2hhcmVhYmxlUmVzb3VyY2UuaCIKQEAgLTk0
LDYgKzkyLDQgQEAgcHJpdmF0ZToKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKLSNlbmRpZiAv
LyBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQotCiAjZW5kaWYgLy8gV2ViUmVzb3VyY2VMb2FkZXJf
aApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291
cmNlTG9hZGVyLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9OZXR3b3Jr
L1dlYlJlc291cmNlTG9hZGVyLm1lc3NhZ2VzLmluCmluZGV4IDM5OTRkOTcuLjY3ZmQwZDkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxv
YWRlci5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL05ldHdvcmsv
V2ViUmVzb3VyY2VMb2FkZXIubWVzc2FnZXMuaW4KQEAgLTIwLDggKzIwLDYgQEAKICMgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKICMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KIAotI2lmIEVOQUJMRShORVRXT1JLX1BST0NF
U1MpCi0KIG1lc3NhZ2VzIC0+IFdlYlJlc291cmNlTG9hZGVyIExlZ2FjeVJlY2VpdmVyIHsKICAg
ICBXaWxsU2VuZFJlcXVlc3QoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QsIFdlYkNv
cmU6OlJlc291cmNlUmVzcG9uc2UgcmVkaXJlY3RSZXNwb25zZSkKICAgICBEaWRTZW5kRGF0YSh1
aW50NjRfdCBieXRlc1NlbnQsIHVpbnQ2NF90IHRvdGFsQnl0ZXNUb0JlU2VudCkKQEAgLTM5LDUg
KzM3LDMgQEAgbWVzc2FnZXMgLT4gV2ViUmVzb3VyY2VMb2FkZXIgTGVnYWN5UmVjZWl2ZXIgewog
ICAgIERpZFJlY2VpdmVSZXNvdXJjZShXZWJLaXQ6OlNoYXJlYWJsZVJlc291cmNlOjpIYW5kbGUg
cmVzb3VyY2UsIGRvdWJsZSBmaW5pc2hUaW1lKQogI2VuZGlmCiB9Ci0KLSNlbmRpZiAvLyBFTkFC
TEUoTkVUV09SS19QUk9DRVNTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlQnJvd3NlckZ1bmNzLmNwcCBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZUJyb3dzZXJGdW5jcy5jcHAK
aW5kZXggOGU4NGY4MC4uY2M2ZTc0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlQnJvd3NlckZ1bmNzLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVCcm93c2VyRnVu
Y3MuY3BwCkBAIC0xMDUzLDExICsxMDUzLDcgQEAgc3RhdGljIHZvaWQgaW5pdGlhbGl6ZUJyb3dz
ZXJGdW5jcyhOUE5ldHNjYXBlRnVuY3MgJm5ldHNjYXBlRnVuY3MpCiAgICAgbmV0c2NhcGVGdW5j
cy5wb3B1cGNvbnRleHRtZW51ID0gMDsKICAgICBuZXRzY2FwZUZ1bmNzLmNvbnZlcnRwb2ludCA9
IDA7CiAjZW5kaWYKLSNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQogICAgIG5ldHNjYXBlRnVu
Y3MudXJscmVkaXJlY3RyZXNwb25zZSA9IE5QTl9VUkxSZWRpcmVjdFJlc3BvbnNlOwotI2Vsc2UK
LSAgICBuZXRzY2FwZUZ1bmNzLnVybHJlZGlyZWN0cmVzcG9uc2UgPSAwOwotI2VuZGlmCiB9CiAg
ICAgCiBOUE5ldHNjYXBlRnVuY3MqIG5ldHNjYXBlQnJvd3NlckZ1bmNzKCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdp
bi5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2Nh
cGVQbHVnaW4uY3BwCmluZGV4IDVmNzg5NjMuLmJkOTViNDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5jcHAKKysr
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1
Z2luLmNwcApAQCAtNDAwLDE2ICs0MDAsMTIgQEAgYm9vbCBOZXRzY2FwZVBsdWdpbjo6Z2V0QXV0
aGVudGljYXRpb25JbmZvKGNvbnN0IFByb3RlY3Rpb25TcGFjZSYgcHJvdGVjdGlvblNwYWMKIAog
dm9pZCBOZXRzY2FwZVBsdWdpbjo6cmVnaXN0ZXJSZWRpcmVjdChOZXRzY2FwZVBsdWdpblN0cmVh
bSogc3RyZWFtLCBjb25zdCBVUkwmIHJlcXVlc3RVUkwsIGludCByZWRpcmVjdFJlc3BvbnNlU3Rh
dHVzLCB2b2lkKiBub3RpZmljYXRpb25EYXRhKQogewotI2lmIEVOQUJMRShORVRXT1JLX1BST0NF
U1MpCiAgICAgLy8gTlBQX1VSTFJlZGlyZWN0Tm90aWZ5IG1heSBzeW5jaHJvbm91c2x5IHJlcXVl
c3QgdGhpcyBzdHJlYW0gYmFjayBvdXQsIHNvIHNldCBpdCBmaXJzdAogICAgIG1fcmVkaXJlY3Rz
LnNldChub3RpZmljYXRpb25EYXRhLCBzdGQ6Om1ha2VfcGFpcihzdHJlYW0sIHJlcXVlc3RVUkwu
c3RyaW5nKCkpKTsKICAgICBpZiAoIU5QUF9VUkxSZWRpcmVjdE5vdGlmeShyZXF1ZXN0VVJMLnN0
cmluZygpLnV0ZjgoKS5kYXRhKCksIHJlZGlyZWN0UmVzcG9uc2VTdGF0dXMsIG5vdGlmaWNhdGlv
bkRhdGEpKSB7CiAgICAgICAgIG1fcmVkaXJlY3RzLnRha2Uobm90aWZpY2F0aW9uRGF0YSk7CiAg
ICAgICAgIGNvbnRyb2xsZXIoKS0+Y29udGludWVTdHJlYW1Mb2FkKHN0cmVhbS0+c3RyZWFtSUQo
KSk7CiAgICAgfQotI2Vsc2UKLSAgICBjb250cm9sbGVyKCktPmNvbnRpbnVlU3RyZWFtTG9hZChz
dHJlYW0tPnN0cmVhbUlEKCkpOwotI2VuZGlmCiB9CiAKIHZvaWQgTmV0c2NhcGVQbHVnaW46OnVy
bFJlZGlyZWN0UmVzcG9uc2Uodm9pZCogbm90aWZ5RGF0YSwgYm9vbCBhbGxvdykKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1T
dHJhdGVnaWVzLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcAppbmRleCA0NDNhY2ViLi44ZDIyZWM5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3Jt
U3RyYXRlZ2llcy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwCkBAIC0yNiw5ICsyNiwxMiBAQAogI2luY2x1
ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIldlYlBsYXRmb3JtU3RyYXRlZ2llcy5oIgogCisjaW5j
bHVkZSAiQmxvYlJlZ2lzdHJ5UHJveHkuaCIKICNpbmNsdWRlICJCbG9ja2luZ1Jlc3BvbnNlTWFw
LmgiCiAjaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgIkhhbmdEZXRlY3Rpb25E
aXNhYmxlci5oIgorI2luY2x1ZGUgIk5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzTWVzc2Fn
ZXMuaCIKKyNpbmNsdWRlICJOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uaCIKICNpbmNsdWRlICJO
ZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycy5oIgogI2luY2x1ZGUgIlBsdWdpbkluZm9TdG9y
ZS5oIgogI2luY2x1ZGUgIlNlc3Npb25UcmFja2VyLmgiCkBAIC00NCw2ICs0Nyw3IEBACiAjaW5j
bHVkZSAiV2ViUGFzdGVib2FyZFByb3h5TWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNz
LmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc1Byb3h5TWVzc2FnZXMuaCIKKyNpbmNsdWRlICJXZWJS
ZXNvdXJjZUxvYWRTY2hlZHVsZXIuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0NvbG9yLmg+CiAjaW5j
bHVkZSA8V2ViQ29yZS9Eb2N1bWVudExvYWRlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSURCRmFj
dG9yeUJhY2tlbmRJbnRlcmZhY2UuaD4KQEAgLTYzLDEzICs2Nyw2IEBACiAjaW5jbHVkZSA8V2Vi
Q29yZS9VUkwuaD4KICNpbmNsdWRlIDx3dGYvQXRvbWljcy5oPgogCi0jaWYgRU5BQkxFKE5FVFdP
UktfUFJPQ0VTUykKLSNpbmNsdWRlICJCbG9iUmVnaXN0cnlQcm94eS5oIgotI2luY2x1ZGUgIk5l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzTWVzc2FnZXMuaCIKLSNpbmNsdWRlICJOZXR3b3Jr
UHJvY2Vzc0Nvbm5lY3Rpb24uaCIKLSNpbmNsdWRlICJXZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXIu
aCIKLSNlbmRpZgotCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogbmFtZXNwYWNlIFdlYktp
dCB7CkBAIC0xMTIsMTE0ICsxMDksNTYgQEAgUGx1Z2luU3RyYXRlZ3kqIFdlYlBsYXRmb3JtU3Ry
YXRlZ2llczo6Y3JlYXRlUGx1Z2luU3RyYXRlZ3koKQogCiBTdHJpbmcgV2ViUGxhdGZvcm1TdHJh
dGVnaWVzOjpjb29raWVzRm9yRE9NKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lv
biwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBVUkwmIHVybCkKIHsKLSNpZiBFTkFCTEUo
TkVUV09SS19QUk9DRVNTKQogICAgIGF1dG8mIHdlYlByb2Nlc3MgPSBXZWJQcm9jZXNzOjpzaW5n
bGV0b24oKTsKLSAgICBpZiAod2ViUHJvY2Vzcy51c2VzTmV0d29ya1Byb2Nlc3MoKSkgewotICAg
ICAgICBTdHJpbmcgcmVzdWx0OwotICAgICAgICBpZiAoIXdlYlByb2Nlc3MubmV0d29ya0Nvbm5l
Y3Rpb24oKS0+Y29ubmVjdGlvbigpLT5zZW5kU3luYyhNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3M6OkNvb2tpZXNGb3JET00oU2Vzc2lvblRyYWNrZXI6OnNlc3Npb25JRChz
ZXNzaW9uKSwgZmlyc3RQYXJ0eSwgdXJsKSwgTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzOjpDb29raWVzRm9yRE9NOjpSZXBseShyZXN1bHQpLCAwKSkKLSAgICAgICAgICAg
IHJldHVybiBTdHJpbmcoKTsKLSAgICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgICB9Ci0jZW5kaWYK
LQotICAgIHJldHVybiBXZWJDb3JlOjpjb29raWVzRm9yRE9NKHNlc3Npb24sIGZpcnN0UGFydHks
IHVybCk7CisgICAgU3RyaW5nIHJlc3VsdDsKKyAgICBpZiAoIXdlYlByb2Nlc3MubmV0d29ya0Nv
bm5lY3Rpb24oKS0+Y29ubmVjdGlvbigpLT5zZW5kU3luYyhNZXNzYWdlczo6TmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3M6OkNvb2tpZXNGb3JET00oU2Vzc2lvblRyYWNrZXI6OnNlc3Npb25J
RChzZXNzaW9uKSwgZmlyc3RQYXJ0eSwgdXJsKSwgTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzOjpDb29raWVzRm9yRE9NOjpSZXBseShyZXN1bHQpLCAwKSkKKyAgICAgICAg
cmV0dXJuIFN0cmluZygpOworICAgIHJldHVybiByZXN1bHQ7CiB9CiAKIHZvaWQgV2ViUGxhdGZv
cm1TdHJhdGVnaWVzOjpzZXRDb29raWVzRnJvbURPTShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Np
b24mIHNlc3Npb24sIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgVVJMJiB1cmwsIGNvbnN0
IFN0cmluZyYgY29va2llU3RyaW5nKQogewotI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCiAg
ICAgYXV0byYgd2ViUHJvY2VzcyA9IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpOwotICAgIGlmICh3
ZWJQcm9jZXNzLnVzZXNOZXR3b3JrUHJvY2VzcygpKSB7Ci0gICAgICAgIHdlYlByb2Nlc3MubmV0
d29ya0Nvbm5lY3Rpb24oKS0+Y29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2Vzczo6U2V0Q29va2llc0Zyb21ET00oU2Vzc2lvblRyYWNrZXI6OnNl
c3Npb25JRChzZXNzaW9uKSwgZmlyc3RQYXJ0eSwgdXJsLCBjb29raWVTdHJpbmcpLCAwKTsKLSAg
ICAgICAgcmV0dXJuOwotICAgIH0KLSNlbmRpZgotCi0gICAgV2ViQ29yZTo6c2V0Q29va2llc0Zy
b21ET00oc2Vzc2lvbiwgZmlyc3RQYXJ0eSwgdXJsLCBjb29raWVTdHJpbmcpOworICAgIHdlYlBy
b2Nlc3MubmV0d29ya0Nvbm5lY3Rpb24oKS0+Y29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpO
ZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6U2V0Q29va2llc0Zyb21ET00oU2Vzc2lvblRy
YWNrZXI6OnNlc3Npb25JRChzZXNzaW9uKSwgZmlyc3RQYXJ0eSwgdXJsLCBjb29raWVTdHJpbmcp
LCAwKTsKIH0KIAogYm9vbCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNvb2tpZXNFbmFibGVkKGNv
bnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgVVJMJiBmaXJzdFBhcnR5
LCBjb25zdCBVUkwmIHVybCkKIHsKLSNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQotICAgIGF1
dG8mIHdlYlByb2Nlc3MgPSBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKTsKLSAgICBpZiAod2ViUHJv
Y2Vzcy51c2VzTmV0d29ya1Byb2Nlc3MoKSkgewotICAgICAgICBib29sIHJlc3VsdDsKLSAgICAg
ICAgaWYgKCF3ZWJQcm9jZXNzLm5ldHdvcmtDb25uZWN0aW9uKCktPmNvbm5lY3Rpb24oKS0+c2Vu
ZFN5bmMoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpDb29raWVzRW5h
YmxlZChTZXNzaW9uVHJhY2tlcjo6c2Vzc2lvbklEKHNlc3Npb24pLCBmaXJzdFBhcnR5LCB1cmwp
LCBNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkNvb2tpZXNFbmFibGVk
OjpSZXBseShyZXN1bHQpLCAwKSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAg
cmV0dXJuIHJlc3VsdDsKLSAgICB9Ci0jZW5kaWYKLQotICAgIHJldHVybiBXZWJDb3JlOjpjb29r
aWVzRW5hYmxlZChzZXNzaW9uLCBmaXJzdFBhcnR5LCB1cmwpOworICAgIGJvb2wgcmVzdWx0Owor
ICAgIGlmICghV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkubmV0d29ya0Nvbm5lY3Rpb24oKS0+Y29u
bmVjdGlvbigpLT5zZW5kU3luYyhNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3M6OkNvb2tpZXNFbmFibGVkKFNlc3Npb25UcmFja2VyOjpzZXNzaW9uSUQoc2Vzc2lvbiksIGZp
cnN0UGFydHksIHVybCksIE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6
Q29va2llc0VuYWJsZWQ6OlJlcGx5KHJlc3VsdCksIDApKQorICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAogU3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6
Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9u
JiBzZXNzaW9uLCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFVSTCYgdXJsKQogewotI2lm
IEVOQUJMRShORVRXT1JLX1BST0NFU1MpCi0gICAgYXV0byYgd2ViUHJvY2VzcyA9IFdlYlByb2Nl
c3M6OnNpbmdsZXRvbigpOwotICAgIGlmICh3ZWJQcm9jZXNzLnVzZXNOZXR3b3JrUHJvY2Vzcygp
KSB7Ci0gICAgICAgIFN0cmluZyByZXN1bHQ7Ci0gICAgICAgIGlmICghd2ViUHJvY2Vzcy5uZXR3
b3JrQ29ubmVjdGlvbigpLT5jb25uZWN0aW9uKCktPnNlbmRTeW5jKE1lc3NhZ2VzOjpOZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Q29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoU2Vz
c2lvblRyYWNrZXI6OnNlc3Npb25JRChzZXNzaW9uKSwgZmlyc3RQYXJ0eSwgdXJsKSwgTWVzc2Fn
ZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpDb29raWVSZXF1ZXN0SGVhZGVyRmll
bGRWYWx1ZTo6UmVwbHkocmVzdWx0KSwgMCkpCi0gICAgICAgICAgICByZXR1cm4gU3RyaW5nKCk7
Ci0gICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAgfQotI2VuZGlmCi0KLSAgICByZXR1cm4gV2Vi
Q29yZTo6Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoc2Vzc2lvbiwgZmlyc3RQYXJ0eSwg
dXJsKTsKKyAgICBTdHJpbmcgcmVzdWx0OworICAgIGlmICghV2ViUHJvY2Vzczo6c2luZ2xldG9u
KCkubmV0d29ya0Nvbm5lY3Rpb24oKS0+Y29ubmVjdGlvbigpLT5zZW5kU3luYyhNZXNzYWdlczo6
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZh
bHVlKFNlc3Npb25UcmFja2VyOjpzZXNzaW9uSUQoc2Vzc2lvbiksIGZpcnN0UGFydHksIHVybCks
IE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Q29va2llUmVxdWVzdEhl
YWRlckZpZWxkVmFsdWU6OlJlcGx5KHJlc3VsdCksIDApKQorICAgICAgICByZXR1cm4gU3RyaW5n
KCk7CisgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAogYm9vbCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6
OmdldFJhd0Nvb2tpZXMoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25z
dCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFVSTCYgdXJsLCBWZWN0b3I8Q29va2llPiYgcmF3Q29v
a2llcykKIHsKLSNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQotICAgIGF1dG8mIHdlYlByb2Nl
c3MgPSBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKTsKLSAgICBpZiAod2ViUHJvY2Vzcy51c2VzTmV0
d29ya1Byb2Nlc3MoKSkgewotICAgICAgICBpZiAoIXdlYlByb2Nlc3MubmV0d29ya0Nvbm5lY3Rp
b24oKS0+Y29ubmVjdGlvbigpLT5zZW5kU3luYyhNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3M6OkdldFJhd0Nvb2tpZXMoU2Vzc2lvblRyYWNrZXI6OnNlc3Npb25JRChzZXNz
aW9uKSwgZmlyc3RQYXJ0eSwgdXJsKSwgTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzOjpHZXRSYXdDb29raWVzOjpSZXBseShyYXdDb29raWVzKSwgMCkpCi0gICAgICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLSNlbmRpZgotCi0g
ICAgcmV0dXJuIFdlYkNvcmU6OmdldFJhd0Nvb2tpZXMoc2Vzc2lvbiwgZmlyc3RQYXJ0eSwgdXJs
LCByYXdDb29raWVzKTsKKyAgICBpZiAoIVdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLm5ldHdvcmtD
b25uZWN0aW9uKCktPmNvbm5lY3Rpb24oKS0+c2VuZFN5bmMoTWVzc2FnZXM6Ok5ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzOjpHZXRSYXdDb29raWVzKFNlc3Npb25UcmFja2VyOjpzZXNzaW9u
SUQoc2Vzc2lvbiksIGZpcnN0UGFydHksIHVybCksIE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2Vzczo6R2V0UmF3Q29va2llczo6UmVwbHkocmF3Q29va2llcyksIDApKQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuIHRydWU7CiB9CiAKIHZvaWQgV2ViUGxhdGZv
cm1TdHJhdGVnaWVzOjpkZWxldGVDb29raWUoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBz
ZXNzaW9uLCBjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBjb29raWVOYW1lKQogewotI2lm
IEVOQUJMRShORVRXT1JLX1BST0NFU1MpCi0gICAgYXV0byYgd2ViUHJvY2VzcyA9IFdlYlByb2Nl
c3M6OnNpbmdsZXRvbigpOwotICAgIGlmICh3ZWJQcm9jZXNzLnVzZXNOZXR3b3JrUHJvY2Vzcygp
KSB7Ci0gICAgICAgIHdlYlByb2Nlc3MubmV0d29ya0Nvbm5lY3Rpb24oKS0+Y29ubmVjdGlvbigp
LT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6RGVsZXRlQ29v
a2llKFNlc3Npb25UcmFja2VyOjpzZXNzaW9uSUQoc2Vzc2lvbiksIHVybCwgY29va2llTmFtZSks
IDApOwotICAgICAgICByZXR1cm47Ci0gICAgfQotI2VuZGlmCi0KLSAgICBXZWJDb3JlOjpkZWxl
dGVDb29raWUoc2Vzc2lvbiwgdXJsLCBjb29raWVOYW1lKTsKKyAgICBXZWJQcm9jZXNzOjpzaW5n
bGV0b24oKS5uZXR3b3JrQ29ubmVjdGlvbigpLT5jb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6
Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpEZWxldGVDb29raWUoU2Vzc2lvblRyYWNr
ZXI6OnNlc3Npb25JRChzZXNzaW9uKSwgdXJsLCBjb29raWVOYW1lKSwgMCk7CiB9CiAKIC8vIExv
YWRlclN0cmF0ZWd5CiAKLSNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQogUmVzb3VyY2VMb2Fk
U2NoZWR1bGVyKiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnJlc291cmNlTG9hZFNjaGVkdWxlcigp
CiB7Ci0gICAgc3RhdGljIFJlc291cmNlTG9hZFNjaGVkdWxlciogc2NoZWR1bGVyOwotICAgIGlm
ICghc2NoZWR1bGVyKSB7Ci0gICAgICAgIGF1dG8mIHdlYlByb2Nlc3MgPSBXZWJQcm9jZXNzOjpz
aW5nbGV0b24oKTsKLSAgICAgICAgaWYgKHdlYlByb2Nlc3MudXNlc05ldHdvcmtQcm9jZXNzKCkp
Ci0gICAgICAgICAgICBzY2hlZHVsZXIgPSAmd2ViUHJvY2Vzcy53ZWJSZXNvdXJjZUxvYWRTY2hl
ZHVsZXIoKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgc2NoZWR1bGVyID0gV2ViQ29yZTo6
cmVzb3VyY2VMb2FkU2NoZWR1bGVyKCk7Ci0gICAgfQotICAgIAotICAgIHJldHVybiBzY2hlZHVs
ZXI7CisgICAgcmV0dXJuICZXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS53ZWJSZXNvdXJjZUxvYWRT
Y2hlZHVsZXIoKTsKIH0KIAogdm9pZCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmxvYWRSZXNvdXJj
ZVN5bmNocm9ub3VzbHkoTmV0d29ya2luZ0NvbnRleHQqIGNvbnRleHQsIHVuc2lnbmVkIGxvbmcg
cmVzb3VyY2VMb2FkSWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBT
dG9yZWRDcmVkZW50aWFscyBzdG9yZWRDcmVkZW50aWFscywgQ2xpZW50Q3JlZGVudGlhbFBvbGlj
eSBjbGllbnRDcmVkZW50aWFsUG9saWN5LCBSZXNvdXJjZUVycm9yJiBlcnJvciwgUmVzb3VyY2VS
ZXNwb25zZSYgcmVzcG9uc2UsIFZlY3RvcjxjaGFyPiYgZGF0YSkKIHsKLSAgICBhdXRvJiB3ZWJQ
cm9jZXNzID0gV2ViUHJvY2Vzczo6c2luZ2xldG9uKCk7Ci0gICAgaWYgKCF3ZWJQcm9jZXNzLnVz
ZXNOZXR3b3JrUHJvY2VzcygpKSB7Ci0gICAgICAgIExvYWRlclN0cmF0ZWd5Ojpsb2FkUmVzb3Vy
Y2VTeW5jaHJvbm91c2x5KGNvbnRleHQsIHJlc291cmNlTG9hZElkZW50aWZpZXIsIHJlcXVlc3Qs
IHN0b3JlZENyZWRlbnRpYWxzLCBjbGllbnRDcmVkZW50aWFsUG9saWN5LCBlcnJvciwgcmVzcG9u
c2UsIGRhdGEpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCiAgICAgV2ViRnJhbWVOZXR3b3Jr
aW5nQ29udGV4dCogd2ViQ29udGV4dCA9IHN0YXRpY19jYXN0PFdlYkZyYW1lTmV0d29ya2luZ0Nv
bnRleHQqPihjb250ZXh0KTsKICAgICAvLyBGSVhNRTogU29tZSBlbnRpdGllcyBpbiBXZWJDb3Jl
IHVzZSBXZWJDb3JlJ3MgIkVtcHR5RnJhbWVMb2FkZXJDbGllbnQiIGluc3RlYWQgb2YgaGF2aW5n
IGEgcHJvcGVyIFdlYkZyYW1lTG9hZGVyQ2xpZW50LgogICAgIC8vIEVtcHR5RnJhbWVMb2FkZXJD
bGllbnQgc2hvdWxkbid0IGV4aXN0IGFuZCBldmVyeXRoaW5nIHNob3VsZCBiZSB1c2luZyBhIFdl
YkZyYW1lTG9hZGVyQ2xpZW50LApAQCAtMjQzLDcgKzE4Miw3IEBAIHZvaWQgV2ViUGxhdGZvcm1T
dHJhdGVnaWVzOjpsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KE5ldHdvcmtpbmdDb250ZXh0KiBj
b250ZXh0CiAKICAgICBIYW5nRGV0ZWN0aW9uRGlzYWJsZXIgaGFuZ0RldGVjdGlvbkRpc2FibGVy
OwogCi0gICAgaWYgKCF3ZWJQcm9jZXNzLm5ldHdvcmtDb25uZWN0aW9uKCktPmNvbm5lY3Rpb24o
KS0+c2VuZFN5bmMoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpQZXJm
b3JtU3luY2hyb25vdXNMb2FkKGxvYWRQYXJhbWV0ZXJzKSwgTWVzc2FnZXM6Ok5ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzOjpQZXJmb3JtU3luY2hyb25vdXNMb2FkOjpSZXBseShlcnJvciwg
cmVzcG9uc2UsIGRhdGEpLCAwKSkgeworICAgIGlmICghV2ViUHJvY2Vzczo6c2luZ2xldG9uKCku
bmV0d29ya0Nvbm5lY3Rpb24oKS0+Y29ubmVjdGlvbigpLT5zZW5kU3luYyhNZXNzYWdlczo6TmV0
d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OlBlcmZvcm1TeW5jaHJvbm91c0xvYWQobG9hZFBh
cmFtZXRlcnMpLCBNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OlBlcmZv
cm1TeW5jaHJvbm91c0xvYWQ6OlJlcGx5KGVycm9yLCByZXNwb25zZSwgZGF0YSksIDApKSB7CiAg
ICAgICAgIHJlc3BvbnNlID0gUmVzb3VyY2VSZXNwb25zZSgpOwogICAgICAgICBlcnJvciA9IGlu
dGVybmFsRXJyb3IocmVxdWVzdC51cmwoKSk7CiAgICAgfQpAQCAtMjU2LDEyICsxOTUsNiBAQCB2
b2lkIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y3JlYXRlUGluZ0hhbmRsZShOZXR3b3JraW5nQ29u
dGV4dCogbmV0d29ya2luZ0NvbnRleAogICAgIGlmICghbmV0d29ya2luZ0NvbnRleHQpCiAgICAg
ICAgIHJldHVybjsKIAotICAgIGF1dG8mIHdlYlByb2Nlc3MgPSBXZWJQcm9jZXNzOjpzaW5nbGV0
b24oKTsKLSAgICBpZiAoIXdlYlByb2Nlc3MudXNlc05ldHdvcmtQcm9jZXNzKCkpIHsKLSAgICAg
ICAgTG9hZGVyU3RyYXRlZ3k6OmNyZWF0ZVBpbmdIYW5kbGUobmV0d29ya2luZ0NvbnRleHQsIHJl
cXVlc3QsIHNob3VsZFVzZUNyZWRlbnRpYWxTdG9yYWdlKTsKLSAgICAgICAgcmV0dXJuOwotICAg
IH0KLQogICAgIFdlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQqIHdlYkNvbnRleHQgPSBzdGF0aWNf
Y2FzdDxXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0Kj4obmV0d29ya2luZ0NvbnRleHQpOwogICAg
IFdlYkZyYW1lTG9hZGVyQ2xpZW50KiB3ZWJGcmFtZUxvYWRlckNsaWVudCA9IHdlYkNvbnRleHQt
PndlYkZyYW1lTG9hZGVyQ2xpZW50KCk7CiAgICAgV2ViRnJhbWUqIHdlYkZyYW1lID0gd2ViRnJh
bWVMb2FkZXJDbGllbnQgPyB3ZWJGcmFtZUxvYWRlckNsaWVudC0+d2ViRnJhbWUoKSA6IG51bGxw
dHI7CkBAIC0yNzMsMTYgKzIwNiwxMyBAQCB2b2lkIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y3Jl
YXRlUGluZ0hhbmRsZShOZXR3b3JraW5nQ29udGV4dCogbmV0d29ya2luZ0NvbnRleAogICAgIGxv
YWRQYXJhbWV0ZXJzLmFsbG93U3RvcmVkQ3JlZGVudGlhbHMgPSBzaG91bGRVc2VDcmVkZW50aWFs
U3RvcmFnZSA/IEFsbG93U3RvcmVkQ3JlZGVudGlhbHMgOiBEb05vdEFsbG93U3RvcmVkQ3JlZGVu
dGlhbHM7CiAgICAgbG9hZFBhcmFtZXRlcnMuc2hvdWxkQ2xlYXJSZWZlcnJlck9uSFRUUFNUb0hU
VFBSZWRpcmVjdCA9IG5ldHdvcmtpbmdDb250ZXh0LT5zaG91bGRDbGVhclJlZmVycmVyT25IVFRQ
U1RvSFRUUFJlZGlyZWN0KCk7CiAKLSAgICB3ZWJQcm9jZXNzLm5ldHdvcmtDb25uZWN0aW9uKCkt
PmNvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3M6OkxvYWRQaW5nKGxvYWRQYXJhbWV0ZXJzKSwgMCk7CisgICAgV2ViUHJvY2Vzczo6c2luZ2xl
dG9uKCkubmV0d29ya0Nvbm5lY3Rpb24oKS0+Y29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpO
ZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6TG9hZFBpbmcobG9hZFBhcmFtZXRlcnMpLCAw
KTsKIH0KIAogQmxvYlJlZ2lzdHJ5KiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNyZWF0ZUJsb2JS
ZWdpc3RyeSgpCiB7Ci0gICAgaWYgKCFXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS51c2VzTmV0d29y
a1Byb2Nlc3MoKSkKLSAgICAgICAgcmV0dXJuIExvYWRlclN0cmF0ZWd5OjpjcmVhdGVCbG9iUmVn
aXN0cnkoKTsKICAgICByZXR1cm4gbmV3IEJsb2JSZWdpc3RyeVByb3h5OyAgICAKIH0KLSNlbmRp
ZgogCiAvLyBQbHVnaW5TdHJhdGVneQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oIGIvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaApp
bmRleCBjNTg0MWFhLi5lYjlhMTMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgK
QEAgLTU5LDEyICs1OSwxMCBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBkZWxldGVDb29r
aWUoY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgV2ViQ29yZTo6
VVJMJiwgY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7CiAKICAgICAvLyBXZWJDb3JlOjpMb2FkZXJT
dHJhdGVneQotI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCiAgICAgdmlydHVhbCBXZWJDb3Jl
OjpSZXNvdXJjZUxvYWRTY2hlZHVsZXIqIHJlc291cmNlTG9hZFNjaGVkdWxlcigpIG92ZXJyaWRl
OwogICAgIHZpcnR1YWwgdm9pZCBsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KFdlYkNvcmU6Ok5l
dHdvcmtpbmdDb250ZXh0KiwgdW5zaWduZWQgbG9uZyByZXNvdXJjZUxvYWRJZGVudGlmaWVyLCBj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBXZWJDb3JlOjpTdG9yZWRDcmVkZW50aWFs
cywgV2ViQ29yZTo6Q2xpZW50Q3JlZGVudGlhbFBvbGljeSwgV2ViQ29yZTo6UmVzb3VyY2VFcnJv
ciYsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLCBWZWN0b3I8Y2hhcj4mIGRhdGEpIG92ZXJy
aWRlOwogICAgIHZpcnR1YWwgV2ViQ29yZTo6QmxvYlJlZ2lzdHJ5KiBjcmVhdGVCbG9iUmVnaXN0
cnkoKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgY3JlYXRlUGluZ0hhbmRsZShXZWJDb3Jl
OjpOZXR3b3JraW5nQ29udGV4dCosIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGJvb2wgc2hv
dWxkVXNlQ3JlZGVudGlhbFN0b3JhZ2UpIG92ZXJyaWRlOwotI2VuZGlmCiAKICAgICAvLyBXZWJD
b3JlOjpQbHVnaW5TdHJhdGVneQogICAgIHZpcnR1YWwgdm9pZCByZWZyZXNoUGx1Z2lucygpIG92
ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YkZyYW1lLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5j
cHAKaW5kZXggZmEwNTQwNy4uZGMyYTUwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwCkBAIC0zMywxMCArMzMsMTMgQEAKICNpbmNsdWRlICJJ
bmplY3RlZEJ1bmRsZU5vZGVIYW5kbGUuaCIKICNpbmNsdWRlICJJbmplY3RlZEJ1bmRsZVJhbmdl
SGFuZGxlLmgiCiAjaW5jbHVkZSAiSW5qZWN0ZWRCdW5kbGVTY3JpcHRXb3JsZC5oIgorI2luY2x1
ZGUgIk5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzTWVzc2FnZXMuaCIKKyNpbmNsdWRlICJO
ZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uaCIKICNpbmNsdWRlICJQbHVnaW5WaWV3LmgiCiAjaW5j
bHVkZSAiV0tBUElDYXN0LmgiCiAjaW5jbHVkZSAiV0tCdW5kbGVBUElDYXN0LmgiCiAjaW5jbHVk
ZSAiV2ViQ2hyb21lQ2xpZW50LmgiCisjaW5jbHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgi
CiAjaW5jbHVkZSAiV2ViRG9jdW1lbnRMb2FkZXIuaCIKICNpbmNsdWRlICJXZWJQYWdlLmgiCiAj
aW5jbHVkZSAiV2ViUGFnZVByb3h5TWVzc2FnZXMuaCIKQEAgLTgxLDEyICs4NCw2IEBACiAjaW5j
bHVkZSA8V2ViQ29yZS9MZWdhY3lXZWJBcmNoaXZlLmg+CiAjZW5kaWYKIAotI2lmIEVOQUJMRShO
RVRXT1JLX1BST0NFU1MpCi0jaW5jbHVkZSAiTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3NN
ZXNzYWdlcy5oIgotI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5oIgotI2luY2x1
ZGUgIldlYkNvcmVBcmd1bWVudENvZGVycy5oIgotI2VuZGlmCi0KICNpZm5kZWYgTkRFQlVHCiAj
aW5jbHVkZSA8d3RmL1JlZkNvdW50ZWRMZWFrQ291bnRlci5oPgogI2VuZGlmCkBAIC0yNTcsMjMg
KzI1NCw5IEBAIHZvaWQgV2ViRnJhbWU6OnN0YXJ0RG93bmxvYWQoY29uc3QgV2ViQ29yZTo6UmVz
b3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQogICAgIG1fcG9saWN5RG93bmxvYWRJRCA9IDA7CiAKICAg
ICBhdXRvJiB3ZWJQcm9jZXNzID0gV2ViUHJvY2Vzczo6c2luZ2xldG9uKCk7Ci0jaWYgVVNFKE5F
VFdPUktfU0VTU0lPTikKLSAgICBBU1NFUlQod2ViUHJvY2Vzcy51c2VzTmV0d29ya1Byb2Nlc3Mo
KSk7Ci0jZW5kaWYKICAgICBTZXNzaW9uSUQgc2Vzc2lvbklEID0gcGFnZSgpID8gcGFnZSgpLT5z
ZXNzaW9uSUQoKSA6IFNlc3Npb25JRDo6ZGVmYXVsdFNlc3Npb25JRCgpOwotI2lmIEVOQUJMRShO
RVRXT1JLX1BST0NFU1MpCi0gICAgaWYgKHdlYlByb2Nlc3MudXNlc05ldHdvcmtQcm9jZXNzKCkp
IHsKLSAgICAgICAgd2ViUHJvY2Vzcy5uZXR3b3JrQ29ubmVjdGlvbigpLT5jb25uZWN0aW9uKCkt
PnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpTdGFydERvd25s
b2FkKHNlc3Npb25JRCwgcG9saWN5RG93bmxvYWRJRCwgcmVxdWVzdCksIDApOwotICAgICAgICBy
ZXR1cm47Ci0gICAgfQotI2VuZGlmCi0KLSNpZiBVU0UoTkVUV09SS19TRVNTSU9OKQotICAgIC8v
IFVzaW5nIE5FVFdPUktfU0VTU0lPTiByZXF1aXJlcyB0aGUgdXNlIG9mIGEgbmV0d29yayBwcm9j
ZXNzLgotICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0jZWxzZQotICAgIHdlYlBy
b2Nlc3MuZG93bmxvYWRNYW5hZ2VyKCkuc3RhcnREb3dubG9hZChzZXNzaW9uSUQsIHBvbGljeURv
d25sb2FkSUQsIHJlcXVlc3QpOwotI2VuZGlmCisgICAgd2ViUHJvY2Vzcy5uZXR3b3JrQ29ubmVj
dGlvbigpLT5jb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzOjpTdGFydERvd25sb2FkKHNlc3Npb25JRCwgcG9saWN5RG93bmxvYWRJRCwgcmVx
dWVzdCksIDApOworICAgIHJldHVybjsKIH0KIAogdm9pZCBXZWJGcmFtZTo6Y29udmVydE1haW5S
ZXNvdXJjZUxvYWRUb0Rvd25sb2FkKERvY3VtZW50TG9hZGVyKiBkb2N1bWVudExvYWRlciwgU2Vz
c2lvbklEIHNlc3Npb25JRCwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBS
ZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKQEAgLTI4NiwzOSArMjY5LDEyIEBAIHZvaWQgV2Vi
RnJhbWU6OmNvbnZlcnRNYWluUmVzb3VyY2VMb2FkVG9Eb3dubG9hZChEb2N1bWVudExvYWRlciog
ZG9jdW1lbnRMb2FkZXIsCiAgICAgU3VicmVzb3VyY2VMb2FkZXIqIG1haW5SZXNvdXJjZUxvYWRl
ciA9IGRvY3VtZW50TG9hZGVyLT5tYWluUmVzb3VyY2VMb2FkZXIoKTsKIAogICAgIGF1dG8mIHdl
YlByb2Nlc3MgPSBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKTsKLSNpZiBFTkFCTEUoTkVUV09SS19Q
Uk9DRVNTKQotI2lmIFVTRShORVRXT1JLX1NFU1NJT04pCi0gICAgQVNTRVJUKHdlYlByb2Nlc3Mu
dXNlc05ldHdvcmtQcm9jZXNzKCkpOwotI2VuZGlmCi0gICAgaWYgKHdlYlByb2Nlc3MudXNlc05l
dHdvcmtQcm9jZXNzKCkpIHsKLSAgICAgICAgLy8gVXNlIDAgdG8gaW5kaWNhdGUgdGhhdCB0aGUg
cmVzb3VyY2UgbG9hZCBjYW4ndCBiZSBjb252ZXJ0ZWQgYW5kIGEgbmV3IGRvd25sb2FkIG11c3Qg
YmUgc3RhcnRlZC4KLSAgICAgICAgLy8gVGhpcyBjYW4gaGFwcGVuIGlmIHRoZXJlIGlzIG5vIGxv
YWRlciBiZWNhdXNlIHRoZSBtYWluIHJlc291cmNlIGlzIGluIHRoZSBXZWJDb3JlIG1lbW9yeSBj
YWNoZSwKLSAgICAgICAgLy8gb3IgYmVjYXVzZSB0aGUgY29udmVyc2lvbiB3YXMgYXR0ZW1wdGVk
IHdoZW4gbm90IGNhbGxpbmcgU3VicmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVSZXNwb25zZSgp
LgotICAgICAgICB1aW50NjRfdCBtYWluUmVzb3VyY2VMb2FkSWRlbnRpZmllcjsKLSAgICAgICAg
aWYgKG1haW5SZXNvdXJjZUxvYWRlcikKLSAgICAgICAgICAgIG1haW5SZXNvdXJjZUxvYWRJZGVu
dGlmaWVyID0gbWFpblJlc291cmNlTG9hZGVyLT5pZGVudGlmaWVyKCk7Ci0gICAgICAgIGVsc2UK
LSAgICAgICAgICAgIG1haW5SZXNvdXJjZUxvYWRJZGVudGlmaWVyID0gMDsKLQotICAgICAgICB3
ZWJQcm9jZXNzLm5ldHdvcmtDb25uZWN0aW9uKCktPmNvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdl
czo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkNvbnZlcnRNYWluUmVzb3VyY2VMb2Fk
VG9Eb3dubG9hZChzZXNzaW9uSUQsIG1haW5SZXNvdXJjZUxvYWRJZGVudGlmaWVyLCBwb2xpY3lE
b3dubG9hZElELCByZXF1ZXN0LCByZXNwb25zZSksIDApOwotICAgICAgICByZXR1cm47Ci0gICAg
fQotI2VuZGlmCisgICAgLy8gVXNlIDAgdG8gaW5kaWNhdGUgdGhhdCB0aGUgcmVzb3VyY2UgbG9h
ZCBjYW4ndCBiZSBjb252ZXJ0ZWQgYW5kIGEgbmV3IGRvd25sb2FkIG11c3QgYmUgc3RhcnRlZC4K
KyAgICAvLyBUaGlzIGNhbiBoYXBwZW4gaWYgdGhlcmUgaXMgbm8gbG9hZGVyIGJlY2F1c2UgdGhl
IG1haW4gcmVzb3VyY2UgaXMgaW4gdGhlIFdlYkNvcmUgbWVtb3J5IGNhY2hlLAorICAgIC8vIG9y
IGJlY2F1c2UgdGhlIGNvbnZlcnNpb24gd2FzIGF0dGVtcHRlZCB3aGVuIG5vdCBjYWxsaW5nIFN1
YnJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2UoKS4KKyAgICB1aW50NjRfdCBtYWlu
UmVzb3VyY2VMb2FkSWRlbnRpZmllciA9IG1haW5SZXNvdXJjZUxvYWRlciA/IG1haW5SZXNvdXJj
ZUxvYWRlci0+aWRlbnRpZmllcigpIDogMDsKIAotICAgIGlmICghbWFpblJlc291cmNlTG9hZGVy
KSB7Ci0gICAgICAgIC8vIFRoZSBtYWluIHJlc291cmNlIGhhcyBhbHJlYWR5IGJlZW4gbG9hZGVk
LiBTdGFydCBhIG5ldyBkb3dubG9hZCBpbnN0ZWFkLgotI2lmICFVU0UoTkVUV09SS19TRVNTSU9O
KQotICAgICAgICB3ZWJQcm9jZXNzLmRvd25sb2FkTWFuYWdlcigpLnN0YXJ0RG93bmxvYWQoc2Vz
c2lvbklELCBwb2xpY3lEb3dubG9hZElELCByZXF1ZXN0KTsKLSNlbmRpZgotICAgICAgICByZXR1
cm47Ci0gICAgfQotCi0jaWYgVVNFKE5FVFdPUktfU0VTU0lPTikKLSAgICAvLyBVc2luZyBORVRX
T1JLX1NFU1NJT04gcmVxdWlyZXMgdGhlIHVzZSBvZiBhIG5ldHdvcmsgcHJvY2Vzcy4KLSAgICBS
RUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwotI2Vsc2UKLSAgICB3ZWJQcm9jZXNzLmRvd25s
b2FkTWFuYWdlcigpLmNvbnZlcnRIYW5kbGVUb0Rvd25sb2FkKHBvbGljeURvd25sb2FkSUQsIGRv
Y3VtZW50TG9hZGVyLT5tYWluUmVzb3VyY2VMb2FkZXIoKS0+aGFuZGxlKCksIHJlcXVlc3QsIHJl
c3BvbnNlKTsKLSNlbmRpZgorICAgIHdlYlByb2Nlc3MubmV0d29ya0Nvbm5lY3Rpb24oKS0+Y29u
bmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6
Q29udmVydE1haW5SZXNvdXJjZUxvYWRUb0Rvd25sb2FkKHNlc3Npb25JRCwgbWFpblJlc291cmNl
TG9hZElkZW50aWZpZXIsIHBvbGljeURvd25sb2FkSUQsIHJlcXVlc3QsIHJlc3BvbnNlKSwgMCk7
CiB9CiAKIFN0cmluZyBXZWJGcmFtZTo6c291cmNlKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlByb2Nlc3MuY3BwCmluZGV4IDM4YTRkOGYuLmQ5YjBhN2IgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcApAQCAtMzcsNiArMzcsNyBAQAogI2luY2x1
ZGUgIkluamVjdGVkQnVuZGxlLmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIk5l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzTWVzc2FnZXMuaCIKKyNpbmNsdWRlICJOZXR3b3Jr
UHJvY2Vzc0Nvbm5lY3Rpb24uaCIKICNpbmNsdWRlICJQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbk1h
bmFnZXIuaCIKICNpbmNsdWRlICJTZXNzaW9uVHJhY2tlci5oIgogI2luY2x1ZGUgIlN0YXRpc3Rp
Y3NEYXRhLmgiCkBAIC02MCw2ICs2MSw3IEBACiAjaW5jbHVkZSAiV2ViUHJvY2Vzc01lc3NhZ2Vz
LmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc1Bvb2xNZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYlBy
b2Nlc3NQcm94eU1lc3NhZ2VzLmgiCisjaW5jbHVkZSAiV2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVy
LmgiCiAjaW5jbHVkZSAiV2Vic2l0ZURhdGEuaCIKICNpbmNsdWRlICJXZWJzaXRlRGF0YVR5cGVz
LmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNMb2NrLmg+CkBAIC0xMDEsMTIgKzEwMyw5
IEBACiAjaW5jbHVkZSAiT2JqQ09iamVjdEdyYXBoLmgiCiAjZW5kaWYKIAotI2lmIEVOQUJMRShO
RVRXT1JLX1BST0NFU1MpCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAjaW5jbHVkZSAiQ29va2llU3Rv
cmFnZVNoaW0uaCIKICNlbmRpZgotI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5o
IgotI2VuZGlmCiAKICNpZiBFTkFCTEUoU0VDX0lURU1fU0hJTSkKICNpbmNsdWRlICJTZWNJdGVt
U2hpbS5oIgpAQCAtMTI0LDEwICsxMjMsNiBAQAogI2luY2x1ZGUgIldlYkJhdHRlcnlNYW5hZ2Vy
LmgiCiAjZW5kaWYKIAotI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCi0jaW5jbHVkZSAiV2Vi
UmVzb3VyY2VMb2FkU2NoZWR1bGVyLmgiCi0jZW5kaWYKLQogI2lmIEVOQUJMRShSRU1PVEVfSU5T
UEVDVE9SKQogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1JlbW90ZUluc3BlY3Rvci5oPgogI2Vu
ZGlmCkBAIC0xNjEsMTEgKzE1Niw4IEBAIFdlYlByb2Nlc3M6OldlYlByb2Nlc3MoKQogICAgICwg
bV9mdWxsS2V5Ym9hcmRBY2Nlc3NFbmFibGVkKGZhbHNlKQogICAgICwgbV90ZXh0Q2hlY2tlclN0
YXRlKCkKICAgICAsIG1faWNvbkRhdGFiYXNlUHJveHkobmV3IFdlYkljb25EYXRhYmFzZVByb3h5
KHRoaXMpKQotI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCi0gICAgLCBtX3VzZXNOZXR3b3Jr
UHJvY2VzcyhmYWxzZSkKICAgICAsIG1fd2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVyKG5ldyBXZWJS
ZXNvdXJjZUxvYWRTY2hlZHVsZXIpCiAgICAgLCBtX2Ruc1ByZWZldGNoSHlzdGVyZXJpcyhbdGhp
c10oSHlzdGVyZXNpc1N0YXRlIHN0YXRlKSB7IGlmIChzdGF0ZSA9PSBIeXN0ZXJlc2lzU3RhdGU6
OlN0b3BwZWQpIG1fZG5zUHJlZmV0Y2hlZEhvc3RzLmNsZWFyKCk7IH0pCi0jZW5kaWYKICNpZiBF
TkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQSSkKICAgICAsIG1fcGx1Z2luUHJvY2Vzc0Nvbm5lY3Rp
b25NYW5hZ2VyKFBsdWdpblByb2Nlc3NDb25uZWN0aW9uTWFuYWdlcjo6Y3JlYXRlKCkpCiAjZW5k
aWYKQEAgLTI1MiwzNCArMjQ0LDEwIEBAIHZvaWQgV2ViUHJvY2Vzczo6aW5pdGlhbGl6ZUNvbm5l
Y3Rpb24oSVBDOjpDb25uZWN0aW9uKiBjb25uZWN0aW9uKQogICAgIGNvbm5lY3Rpb24tPnNldE9u
bHlTZW5kTWVzc2FnZXNBc0Rpc3BhdGNoV2hlbldhaXRpbmdGb3JTeW5jUmVwbHlXaGVuUHJvY2Vz
c2luZ1N1Y2hBTWVzc2FnZSh0cnVlKTsKIH0KIAotdm9pZCBXZWJQcm9jZXNzOjpkaWRDcmVhdGVE
b3dubG9hZCgpCi17Ci0gICAgZGlzYWJsZVRlcm1pbmF0aW9uKCk7Ci19Ci0KLXZvaWQgV2ViUHJv
Y2Vzczo6ZGlkRGVzdHJveURvd25sb2FkKCkKLXsKLSAgICBlbmFibGVUZXJtaW5hdGlvbigpOwot
fQotCi1JUEM6OkNvbm5lY3Rpb24qIFdlYlByb2Nlc3M6OmRvd25sb2FkUHJveHlDb25uZWN0aW9u
KCkKLXsKLSAgICByZXR1cm4gcGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKTsKLX0KLQotQXV0aGVu
dGljYXRpb25NYW5hZ2VyJiBXZWJQcm9jZXNzOjpkb3dubG9hZHNBdXRoZW50aWNhdGlvbk1hbmFn
ZXIoKQotewotICAgIHJldHVybiAqc3VwcGxlbWVudDxBdXRoZW50aWNhdGlvbk1hbmFnZXI+KCk7
Ci19Ci0KIHZvaWQgV2ViUHJvY2Vzczo6aW5pdGlhbGl6ZVdlYlByb2Nlc3MoV2ViUHJvY2Vzc0Ny
ZWF0aW9uUGFyYW1ldGVycyYmIHBhcmFtZXRlcnMpCiB7CiAgICAgQVNTRVJUKG1fcGFnZU1hcC5p
c0VtcHR5KCkpOwogCi0jaWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKLSAgICBtX3VzZXNOZXR3
b3JrUHJvY2VzcyA9IHBhcmFtZXRlcnMudXNlc05ldHdvcmtQcm9jZXNzOwotI2VuZGlmCi0KICNp
ZiBPUyhMSU5VWCkKICAgICBXZWJDb3JlOjpNZW1vcnlQcmVzc3VyZUhhbmRsZXI6OlJlbGllZkxv
Z2dlcjo6c2V0TG9nZ2luZ0VuYWJsZWQocGFyYW1ldGVycy5zaG91bGRFbmFibGVNZW1vcnlQcmVz
c3VyZVJlbGllZkxvZ2dpbmcpOwogI2VuZGlmCkBAIC0zNTgsMTMgKzMyNiwxMCBAQCB2b2lkIFdl
YlByb2Nlc3M6OmluaXRpYWxpemVXZWJQcm9jZXNzKFdlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRl
cnMmJiBwYXJhbWV0ZXJzKQogICAgIGlmIChwYXJhbWV0ZXJzLnNob3VsZFVzZVRlc3RpbmdOZXR3
b3JrU2Vzc2lvbikKICAgICAgICAgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzd2l0Y2hUb05ld1Rl
c3RpbmdTZXNzaW9uKCk7CiAKLSNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQogICAgIGVuc3Vy
ZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpOwogCiAjaWYgUExBVEZPUk0oQ09DT0EpCi0gICAg
aWYgKHVzZXNOZXR3b3JrUHJvY2VzcygpKQotICAgICAgICBDb29raWVTdG9yYWdlU2hpbTo6c2lu
Z2xldG9uKCkuaW5pdGlhbGl6ZSgpOwotI2VuZGlmCisgICAgQ29va2llU3RvcmFnZVNoaW06OnNp
bmdsZXRvbigpLmluaXRpYWxpemUoKTsKICNlbmRpZgogICAgIHNldFRlcm1pbmF0aW9uVGltZW91
dChwYXJhbWV0ZXJzLnRlcm1pbmF0aW9uVGltZW91dCk7CiAKQEAgLTM5NiwxMiArMzYxLDggQEAg
dm9pZCBXZWJQcm9jZXNzOjppbml0aWFsaXplV2ViUHJvY2VzcyhXZWJQcm9jZXNzQ3JlYXRpb25Q
YXJhbWV0ZXJzJiYgcGFyYW1ldGVycykKICNlbmRpZgogfQogCi0jaWYgRU5BQkxFKE5FVFdPUktf
UFJPQ0VTUykKIHZvaWQgV2ViUHJvY2Vzczo6ZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9u
KCkKIHsKLSAgICBpZiAoIW1fdXNlc05ldHdvcmtQcm9jZXNzKQotICAgICAgICByZXR1cm47Ci0K
ICAgICBpZiAobV9uZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24pCiAgICAgICAgIHJldHVybjsKIApA
QCAtNDIyLDcgKzM4Myw2IEBAIHZvaWQgV2ViUHJvY2Vzczo6ZW5zdXJlTmV0d29ya1Byb2Nlc3ND
b25uZWN0aW9uKCkKICAgICAgICAgcmV0dXJuOwogICAgIG1fbmV0d29ya1Byb2Nlc3NDb25uZWN0
aW9uID0gTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uOjpjcmVhdGUoY29ubmVjdGlvbklkZW50aWZp
ZXIpOwogfQotI2VuZGlmIC8vIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCiAKIHZvaWQgV2ViUHJv
Y2Vzczo6cmVnaXN0ZXJVUkxTY2hlbWVBc0VtcHR5RG9jdW1lbnQoY29uc3QgU3RyaW5nJiB1cmxT
Y2hlbWUpCiB7CkBAIC01MTEsMTQgKzQ3MSw2IEBAIHZvaWQgV2ViUHJvY2Vzczo6ZGVzdHJveVBy
aXZhdGVCcm93c2luZ1Nlc3Npb24oU2Vzc2lvbklEIHNlc3Npb25JRCkKICNlbmRpZgogfQogCi1E
b3dubG9hZE1hbmFnZXImIFdlYlByb2Nlc3M6OmRvd25sb2FkTWFuYWdlcigpCi17Ci0gICAgQVNT
RVJUKCF1c2VzTmV0d29ya1Byb2Nlc3MoKSk7Ci0KLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8
RG93bmxvYWRNYW5hZ2VyPiBkb3dubG9hZE1hbmFnZXIodGhpcyk7Ci0gICAgcmV0dXJuIGRvd25s
b2FkTWFuYWdlcjsKLX0KLQogI2lmIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJKQogUGx1Z2lu
UHJvY2Vzc0Nvbm5lY3Rpb25NYW5hZ2VyJiBXZWJQcm9jZXNzOjpwbHVnaW5Qcm9jZXNzQ29ubmVj
dGlvbk1hbmFnZXIoKQogewpAQCAtNTgxLDcgKzUzMyw2IEBAIHZvaWQgV2ViUHJvY2Vzczo6cmVt
b3ZlV2ViUGFnZSh1aW50NjRfdCBwYWdlSUQpCiBib29sIFdlYlByb2Nlc3M6OnNob3VsZFRlcm1p
bmF0ZSgpCiB7CiAgICAgQVNTRVJUKG1fcGFnZU1hcC5pc0VtcHR5KCkpOwotICAgIEFTU0VSVCh1
c2VzTmV0d29ya1Byb2Nlc3MoKSB8fCAhZG93bmxvYWRNYW5hZ2VyKCkuaXNEb3dubG9hZGluZygp
KTsKIAogICAgIC8vIEZJWE1FOiB0aGUgU2hvdWxkVGVybWluYXRlIG1lc3NhZ2Ugc2hvdWxkIGFs
c28gc2VuZCB0ZXJtaW5hdGlvbiBwYXJhbWV0ZXJzLCBzdWNoIGFzIGFueSBzZXNzaW9uIGNvb2tp
ZXMgdGhhdCBuZWVkIHRvIGJlIHByZXNlcnZlZC4KICAgICBib29sIHNob3VsZFRlcm1pbmF0ZSA9
IGZhbHNlOwpAQCAtMTAyNSwyMCArOTc2LDggQEAgdm9pZCBXZWJQcm9jZXNzOjpzZXRJbmplY3Rl
ZEJ1bmRsZVBhcmFtZXRlcnMoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiB2YWx1ZSkKICAgICBp
bmplY3RlZEJ1bmRsZS0+c2V0QnVuZGxlUGFyYW1ldGVycyh2YWx1ZSk7CiB9CiAKLWJvb2wgV2Vi
UHJvY2Vzczo6dXNlc05ldHdvcmtQcm9jZXNzKCkgY29uc3QKLXsKLSNpZiBFTkFCTEUoTkVUV09S
S19QUk9DRVNTKQotICAgIHJldHVybiBtX3VzZXNOZXR3b3JrUHJvY2VzczsKLSNlbHNlCi0gICAg
cmV0dXJuIGZhbHNlOwotI2VuZGlmCi19Ci0KLSNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQog
TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKiBXZWJQcm9jZXNzOjpuZXR3b3JrQ29ubmVjdGlvbigp
CiB7Ci0gICAgQVNTRVJUKG1fdXNlc05ldHdvcmtQcm9jZXNzKTsKLQogICAgIC8vIElmIHdlJ3Zl
IGxvc3Qgb3VyIGNvbm5lY3Rpb24gdG8gdGhlIG5ldHdvcmsgcHJvY2VzcyAoZS5nLiBpdCBjcmFz
aGVkKSB0cnkgdG8gcmUtZXN0YWJsaXNoIGl0LgogICAgIGlmICghbV9uZXR3b3JrUHJvY2Vzc0Nv
bm5lY3Rpb24pCiAgICAgICAgIGVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpOwpAQCAt
MTA2NCw3ICsxMDAzLDYgQEAgV2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVyJiBXZWJQcm9jZXNzOjp3
ZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXIoKQogewogICAgIHJldHVybiAqbV93ZWJSZXNvdXJjZUxv
YWRTY2hlZHVsZXI7CiB9Ci0jZW5kaWYgLy8gRU5BQkxFRChORVRXT1JLX1BST0NFU1MpCiAKICNp
ZiBFTkFCTEUoREFUQUJBU0VfUFJPQ0VTUykKIHZvaWQgV2ViUHJvY2Vzczo6d2ViVG9EYXRhYmFz
ZVByb2Nlc3NDb25uZWN0aW9uQ2xvc2VkKFdlYlRvRGF0YWJhc2VQcm9jZXNzQ29ubmVjdGlvbiog
Y29ubmVjdGlvbikKQEAgLTExMDgsMjcgKzEwNDYsNiBAQCB2b2lkIFdlYlByb2Nlc3M6OmVuc3Vy
ZVdlYlRvRGF0YWJhc2VQcm9jZXNzQ29ubmVjdGlvbigpCiAKICNlbmRpZiAvLyBFTkFCTEVEKERB
VEFCQVNFX1BST0NFU1MpCiAKLXZvaWQgV2ViUHJvY2Vzczo6ZG93bmxvYWRSZXF1ZXN0KFNlc3Np
b25JRCBzZXNzaW9uSUQsIHVpbnQ2NF90IGRvd25sb2FkSUQsIHVpbnQ2NF90IGluaXRpYXRpbmdQ
YWdlSUQsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKLXsKLSAgICBXZWJQYWdlKiBp
bml0aWF0aW5nUGFnZSA9IGluaXRpYXRpbmdQYWdlSUQgPyB3ZWJQYWdlKGluaXRpYXRpbmdQYWdl
SUQpIDogMDsKLQotICAgIFJlc291cmNlUmVxdWVzdCByZXF1ZXN0V2l0aE9yaWdpbmFsVVJMID0g
cmVxdWVzdDsKLSAgICBpZiAoaW5pdGlhdGluZ1BhZ2UpCi0gICAgICAgIGluaXRpYXRpbmdQYWdl
LT5tYWluRnJhbWUoKS0+bG9hZGVyKCkuc2V0T3JpZ2luYWxVUkxGb3JEb3dubG9hZFJlcXVlc3Qo
cmVxdWVzdFdpdGhPcmlnaW5hbFVSTCk7Ci0KLSAgICBkb3dubG9hZE1hbmFnZXIoKS5zdGFydERv
d25sb2FkKHNlc3Npb25JRCwgZG93bmxvYWRJRCwgcmVxdWVzdFdpdGhPcmlnaW5hbFVSTCk7Ci19
Ci0KLXZvaWQgV2ViUHJvY2Vzczo6cmVzdW1lRG93bmxvYWQodWludDY0X3QgZG93bmxvYWRJRCwg
Y29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiByZXN1bWVEYXRhLCBjb25zdCBTdHJpbmcmIHBhdGgs
IGNvbnN0IFdlYktpdDo6U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiBzYW5kYm94RXh0ZW5zaW9u
SGFuZGxlKQotewotICAgIGRvd25sb2FkTWFuYWdlcigpLnJlc3VtZURvd25sb2FkKGRvd25sb2Fk
SUQsIHJlc3VtZURhdGEsIHBhdGgsIHNhbmRib3hFeHRlbnNpb25IYW5kbGUpOwotfQotCi12b2lk
IFdlYlByb2Nlc3M6OmNhbmNlbERvd25sb2FkKHVpbnQ2NF90IGRvd25sb2FkSUQpCi17Ci0gICAg
ZG93bmxvYWRNYW5hZ2VyKCkuY2FuY2VsRG93bmxvYWQoZG93bmxvYWRJRCk7Ci19Ci0KIHZvaWQg
V2ViUHJvY2Vzczo6c2V0RW5oYW5jZWRBY2Nlc3NpYmlsaXR5KGJvb2wgZmxhZykKIHsKICAgICBX
ZWJDb3JlOjpBWE9iamVjdENhY2hlOjpzZXRFbmhhbmNlZFVzZXJJbnRlcmZhY2VBY2Nlc3NpYmls
aXR5KGZsYWcpOwpAQCAtMTQ3MCwxOCArMTM4NywxMiBAQCB2b2lkIFdlYlByb2Nlc3M6OnByZWZl
dGNoRE5TKGNvbnN0IFN0cmluZyYgaG9zdG5hbWUpCiAgICAgaWYgKGhvc3RuYW1lLmlzRW1wdHko
KSkKICAgICAgICAgcmV0dXJuOwogCi0jaWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKLSAgICBp
ZiAodXNlc05ldHdvcmtQcm9jZXNzKCkpIHsKLSAgICAgICAgaWYgKG1fZG5zUHJlZmV0Y2hlZEhv
c3RzLmFkZChob3N0bmFtZSkuaXNOZXdFbnRyeSkKLSAgICAgICAgICAgIG5ldHdvcmtDb25uZWN0
aW9uKCktPmNvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3M6OlByZWZldGNoRE5TKGhvc3RuYW1lKSwgMCk7Ci0gICAgICAgIC8vIFRoZSBETlMg
cHJlZmV0Y2hlZCBob3N0cyBjYWNoZSBpcyBvbmx5IHRvIGF2b2lkIGFza2luZyBmb3IgdGhlIHNh
bWUgaG9zdHMgdG9vIG1hbnkgdGltZXMKLSAgICAgICAgLy8gaW4gYSB2ZXJ5IHNob3J0IHBlcmlv
ZCBvZiB0aW1lLCBwcm9kdWNpbmcgYSBsb3Qgb2YgSVBDIHRyYWZmaWMuIFNvIHdlIGNsZWFyIHRo
aXMgY2FjaGUgYWZ0ZXIKLSAgICAgICAgLy8gc29tZSB0aW1lIG9mIG5vIEROUyByZXF1ZXN0cy4K
LSAgICAgICAgbV9kbnNQcmVmZXRjaEh5c3RlcmVyaXMuaW1wdWxzZSgpOwotICAgICAgICByZXR1
cm47Ci0gICAgfQotI2VuZGlmCi0gICAgV2ViQ29yZTo6cHJlZmV0Y2hETlMoaG9zdG5hbWUpOwor
ICAgIGlmIChtX2Ruc1ByZWZldGNoZWRIb3N0cy5hZGQoaG9zdG5hbWUpLmlzTmV3RW50cnkpCisg
ICAgICAgIG5ldHdvcmtDb25uZWN0aW9uKCktPmNvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OlByZWZldGNoRE5TKGhvc3RuYW1lKSwgMCk7
CisgICAgLy8gVGhlIEROUyBwcmVmZXRjaGVkIGhvc3RzIGNhY2hlIGlzIG9ubHkgdG8gYXZvaWQg
YXNraW5nIGZvciB0aGUgc2FtZSBob3N0cyB0b28gbWFueSB0aW1lcworICAgIC8vIGluIGEgdmVy
eSBzaG9ydCBwZXJpb2Qgb2YgdGltZSwgcHJvZHVjaW5nIGEgbG90IG9mIElQQyB0cmFmZmljLiBT
byB3ZSBjbGVhciB0aGlzIGNhY2hlIGFmdGVyCisgICAgLy8gc29tZSB0aW1lIG9mIG5vIEROUyBy
ZXF1ZXN0cy4KKyAgICBtX2Ruc1ByZWZldGNoSHlzdGVyZXJpcy5pbXB1bHNlKCk7CiB9CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaApp
bmRleCAyNzAwNmU1Li40NzQ5NDU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlByb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nl
c3MuaApAQCAtMjgsNyArMjgsNiBAQAogCiAjaW5jbHVkZSAiQ2FjaGVNb2RlbC5oIgogI2luY2x1
ZGUgIkNoaWxkUHJvY2Vzcy5oIgotI2luY2x1ZGUgIkRvd25sb2FkTWFuYWdlci5oIgogI2luY2x1
ZGUgIkRyYXdpbmdBcmVhLmgiCiAjaW5jbHVkZSAiUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25NYW5h
Z2VyLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VDYWNoZXNUb0NsZWFyLmgiCkBAIC03MSw5ICs3MCw5
IEBAIHN0cnVjdCBTZWN1cml0eU9yaWdpbkRhdGE7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1j
bGFzcyBEb3dubG9hZE1hbmFnZXI7CiBjbGFzcyBFdmVudERpc3BhdGNoZXI7CiBjbGFzcyBJbmpl
Y3RlZEJ1bmRsZTsKK2NsYXNzIE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbjsKIGNsYXNzIE9iakNP
YmplY3RHcmFwaDsKIGNsYXNzIFVzZXJEYXRhOwogY2xhc3MgV2ViQ29ubmVjdGlvblRvVUlQcm9j
ZXNzOwpAQCAtODIsMjIgKzgxLDE3IEBAIGNsYXNzIFdlYkljb25EYXRhYmFzZVByb3h5OwogY2xh
c3MgV2ViUGFnZTsKIGNsYXNzIFdlYlBhZ2VHcm91cFByb3h5OwogY2xhc3MgV2ViUHJvY2Vzc1N1
cHBsZW1lbnQ7CitjbGFzcyBXZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXI7CiBzdHJ1Y3QgV2ViUGFn
ZUNyZWF0aW9uUGFyYW1ldGVyczsKIHN0cnVjdCBXZWJQYWdlR3JvdXBEYXRhOwogc3RydWN0IFdl
YlByZWZlcmVuY2VzU3RvcmU7CiBzdHJ1Y3QgV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyczsK
IAotI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCi1jbGFzcyBOZXR3b3JrUHJvY2Vzc0Nvbm5l
Y3Rpb247Ci1jbGFzcyBXZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXI7Ci0jZW5kaWYKLQogI2lmIEVO
QUJMRShEQVRBQkFTRV9QUk9DRVNTKQogY2xhc3MgV2ViVG9EYXRhYmFzZVByb2Nlc3NDb25uZWN0
aW9uOwogI2VuZGlmCiAKLWNsYXNzIFdlYlByb2Nlc3MgOiBwdWJsaWMgQ2hpbGRQcm9jZXNzLCBw
cml2YXRlIERvd25sb2FkTWFuYWdlcjo6Q2xpZW50IHsKLSAgICBmcmllbmQgY2xhc3MgTmV2ZXJE
ZXN0cm95ZWQ8RG93bmxvYWRNYW5hZ2VyPjsKK2NsYXNzIFdlYlByb2Nlc3MgOiBwdWJsaWMgQ2hp
bGRQcm9jZXNzIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgV2ViUHJvY2VzcyYgc2luZ2xldG9uKCk7
CiAKQEAgLTE0Nyw3ICsxNDEsNiBAQCBwdWJsaWM6CiAjZW5kaWYKICAgICAKICAgICBjb25zdCBU
ZXh0Q2hlY2tlclN0YXRlJiB0ZXh0Q2hlY2tlclN0YXRlKCkgY29uc3QgeyByZXR1cm4gbV90ZXh0
Q2hlY2tlclN0YXRlOyB9Ci0gICAgRG93bmxvYWRNYW5hZ2VyJiBkb3dubG9hZE1hbmFnZXIoKTsK
IAogICAgIHZvaWQgY2xlYXJSZXNvdXJjZUNhY2hlcyhSZXNvdXJjZUNhY2hlc1RvQ2xlYXIgPSBB
bGxSZXNvdXJjZUNhY2hlcyk7CiAgICAgCkBAIC0xNTcsMTMgKzE1MCw5IEBAIHB1YmxpYzoKIAog
ICAgIEV2ZW50RGlzcGF0Y2hlciYgZXZlbnREaXNwYXRjaGVyKCkgeyByZXR1cm4gKm1fZXZlbnRE
aXNwYXRjaGVyOyB9CiAKLSAgICBib29sIHVzZXNOZXR3b3JrUHJvY2VzcygpIGNvbnN0OwotCi0j
aWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKICAgICBOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24q
IG5ldHdvcmtDb25uZWN0aW9uKCk7CiAgICAgdm9pZCBuZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb25D
bG9zZWQoTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKik7CiAgICAgV2ViUmVzb3VyY2VMb2FkU2No
ZWR1bGVyJiB3ZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXIoKTsKLSNlbmRpZgogCiAjaWYgRU5BQkxF
KERBVEFCQVNFX1BST0NFU1MpCiAgICAgdm9pZCB3ZWJUb0RhdGFiYXNlUHJvY2Vzc0Nvbm5lY3Rp
b25DbG9zZWQoV2ViVG9EYXRhYmFzZVByb2Nlc3NDb25uZWN0aW9uKik7CkBAIC0yMjIsMTIgKzIx
MSw2IEBAIHByaXZhdGU6CiAgICAgV2ViUHJvY2VzcygpOwogICAgIH5XZWJQcm9jZXNzKCk7CiAK
LSAgICAvLyBEb3dubG9hZE1hbmFnZXI6OkNsaWVudC4KLSAgICB2aXJ0dWFsIHZvaWQgZGlkQ3Jl
YXRlRG93bmxvYWQoKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkRGVzdHJveURvd25s
b2FkKCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBJUEM6OkNvbm5lY3Rpb24qIGRvd25sb2FkUHJv
eHlDb25uZWN0aW9uKCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBBdXRoZW50aWNhdGlvbk1hbmFn
ZXImIGRvd25sb2Fkc0F1dGhlbnRpY2F0aW9uTWFuYWdlcigpIG92ZXJyaWRlOwotCiAgICAgdm9p
ZCBpbml0aWFsaXplV2ViUHJvY2VzcyhXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzJiYpOwog
ICAgIHZvaWQgcGxhdGZvcm1Jbml0aWFsaXplV2ViUHJvY2VzcyhXZWJQcm9jZXNzQ3JlYXRpb25Q
YXJhbWV0ZXJzJiYpOwogCkBAIC0zNTksMTQgKzM0MiwxMSBAQCBwcml2YXRlOgogCiAgICAgV2Vi
SWNvbkRhdGFiYXNlUHJveHkqIG1faWNvbkRhdGFiYXNlUHJveHk7CiAKLSNpZiBFTkFCTEUoTkVU
V09SS19QUk9DRVNTKQogICAgIHZvaWQgZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCk7
CiAgICAgUmVmUHRyPE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbj4gbV9uZXR3b3JrUHJvY2Vzc0Nv
bm5lY3Rpb247Ci0gICAgYm9vbCBtX3VzZXNOZXR3b3JrUHJvY2VzczsKICAgICBXZWJSZXNvdXJj
ZUxvYWRTY2hlZHVsZXIqIG1fd2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVyOwogICAgIEhhc2hTZXQ8
U3RyaW5nPiBtX2Ruc1ByZWZldGNoZWRIb3N0czsKICAgICBXZWJDb3JlOjpIeXN0ZXJlc2lzQWN0
aXZpdHkgbV9kbnNQcmVmZXRjaEh5c3RlcmVyaXM7Ci0jZW5kaWYKIAogI2lmIEVOQUJMRShEQVRB
QkFTRV9QUk9DRVNTKQogICAgIHZvaWQgZW5zdXJlV2ViVG9EYXRhYmFzZVByb2Nlc3NDb25uZWN0
aW9uKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3Mu
bWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVzc2Fn
ZXMuaW4KaW5kZXggZDQzNzJjZS4uNDYxMDI3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgpAQCAtNjIsMTIgKzYyLDYgQEAgbWVzc2Fn
ZXMgLT4gV2ViUHJvY2VzcyBMZWdhY3lSZWNlaXZlciB7CiAgICAgdm9pZCBTdGFydE1lbW9yeVNh
bXBsZXIoV2ViS2l0OjpTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUgc2FtcGxlTG9nRmlsZUhhbmRs
ZSwgU3RyaW5nIHNhbXBsZUxvZ0ZpbGVQYXRoLCBkb3VibGUgaW50ZXJ2YWwpOwogICAgIHZvaWQg
U3RvcE1lbW9yeVNhbXBsZXIoKTsKIAotICAgICMgRG93bmxvYWRzLiBUaGlzIHNob3VsZCByZWFs
bHkgYmUgaW4gYSBEb3dubG9hZC5tZXNzYWdlcy5pbiwgYnV0IGl0IHNlZW1lZCB1bm5lY2Vzc2Fy
eSB0byBjcmVhdGUgYSBuZXcgZmlsZSBqdXN0IGZvcgotICAgICMgdGhyZWUgbWVzc2FnZXMuCi0g
ICAgRG93bmxvYWRSZXF1ZXN0KFdlYkNvcmU6OlNlc3Npb25JRCBzZXNzaW9uSUQsIHVpbnQ2NF90
IGRvd25sb2FkSUQsIHVpbnQ2NF90IGluaXRpYXRpbmdQYWdlSUQsIFdlYkNvcmU6OlJlc291cmNl
UmVxdWVzdCByZXF1ZXN0KQotICAgIFJlc3VtZURvd25sb2FkKHVpbnQ2NF90IGRvd25sb2FkSUQs
IElQQzo6RGF0YVJlZmVyZW5jZSByZXN1bWVEYXRhLCBTdHJpbmcgcGF0aCwgV2ViS2l0OjpTYW5k
Ym94RXh0ZW5zaW9uOjpIYW5kbGUgc2FuZGJveEV4dGVuc2lvbkhhbmRsZSkKLSAgICBDYW5jZWxE
b3dubG9hZCh1aW50NjRfdCBkb3dubG9hZElEKQotCiAgICAgU2V0VGV4dENoZWNrZXJTdGF0ZShz
dHJ1Y3QgV2ViS2l0OjpUZXh0Q2hlY2tlclN0YXRlIHRleHRDaGVja2VyU3RhdGUpCiAKICAgICBT
ZXRFbmhhbmNlZEFjY2Vzc2liaWxpdHkoYm9vbCBmbGFnKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9zb3VwL1dlYlByb2Nlc3NTb3VwLmNwcCBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3Mvc291cC9XZWJQcm9jZXNzU291cC5jcHAKaW5kZXggMzI1YmU0Ni4uZTM5ZTE1
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9zb3VwL1dlYlByb2Nlc3NT
b3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL3NvdXAvV2ViUHJvY2Vzc1Nv
dXAuY3BwCkBAIC00OSwxOCArNDksNiBAQAogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotc3RhdGlj
IHVpbnQ2NF90IGdldENhY2hlRGlza0ZyZWVTaXplKFNvdXBDYWNoZSogY2FjaGUpCi17Ci0gICAg
QVNTRVJUKGNhY2hlKTsKLQotICAgIEdVbmlxdWVPdXRQdHI8Y2hhcj4gY2FjaGVEaXI7Ci0gICAg
Z19vYmplY3RfZ2V0KEdfT0JKRUNUKGNhY2hlKSwgImNhY2hlLWRpciIsICZjYWNoZURpci5vdXRQ
dHIoKSwgTlVMTCk7Ci0gICAgaWYgKCFjYWNoZURpcikKLSAgICAgICAgcmV0dXJuIDA7Ci0KLSAg
ICByZXR1cm4gV2ViQ29yZTo6Z2V0Vm9sdW1lRnJlZVNpemVGb3JQYXRoKGNhY2hlRGlyLmdldCgp
KTsKLX0KLQogdm9pZCBXZWJQcm9jZXNzOjpwbGF0Zm9ybVNldENhY2hlTW9kZWwoQ2FjaGVNb2Rl
bCBjYWNoZU1vZGVsKQogewogICAgIHVuc2lnbmVkIGNhY2hlVG90YWxDYXBhY2l0eSA9IDA7CkBA
IC03MywxMiArNjEsNiBAQCB2b2lkIFdlYlByb2Nlc3M6OnBsYXRmb3JtU2V0Q2FjaGVNb2RlbChD
YWNoZU1vZGVsIGNhY2hlTW9kZWwpCiAgICAgdW5zaWduZWQgbG9uZyB1cmxDYWNoZURpc2tDYXBh
Y2l0eSA9IDA7CiAKICAgICB1aW50NjRfdCBkaXNrRnJlZVNpemUgPSAwOwotICAgIFNvdXBDYWNo
ZSogY2FjaGUgPSBudWxscHRyOwotCi0gICAgaWYgKCF1c2VzTmV0d29ya1Byb2Nlc3MoKSkgewot
ICAgICAgICBjYWNoZSA9IFdlYkNvcmU6OlNvdXBOZXR3b3JrU2Vzc2lvbjo6ZGVmYXVsdFNlc3Np
b24oKS5jYWNoZSgpOwotICAgICAgICBkaXNrRnJlZVNpemUgPSBnZXRDYWNoZURpc2tGcmVlU2l6
ZShjYWNoZSkgLyBXVEY6Ok1COwotICAgIH0KIAogICAgIHVpbnQ2NF90IG1lbVNpemUgPSBXVEY6
OnJhbVNpemUoKSAvIFdURjo6TUI7CiAgICAgY2FsY3VsYXRlQ2FjaGVTaXplcyhjYWNoZU1vZGVs
LCBtZW1TaXplLCBkaXNrRnJlZVNpemUsCkBAIC05NCwzMyArNzYsMTAgQEAgdm9pZCBXZWJQcm9j
ZXNzOjpwbGF0Zm9ybVNldENhY2hlTW9kZWwoQ2FjaGVNb2RlbCBjYWNoZU1vZGVsKQogI2lmIFBM
QVRGT1JNKEdUSykKICAgICBXZWJDb3JlOjpQYWdlQ2FjaGU6OnNpbmdsZXRvbigpLnNldFNob3Vs
ZENsZWFyQmFja2luZ1N0b3Jlcyh0cnVlKTsKICNlbmRpZgotCi0gICAgaWYgKCF1c2VzTmV0d29y
a1Byb2Nlc3MoKSkgewotICAgICAgICBpZiAodXJsQ2FjaGVEaXNrQ2FwYWNpdHkgPiBzb3VwX2Nh
Y2hlX2dldF9tYXhfc2l6ZShjYWNoZSkpCi0gICAgICAgICAgICBzb3VwX2NhY2hlX3NldF9tYXhf
c2l6ZShjYWNoZSwgdXJsQ2FjaGVEaXNrQ2FwYWNpdHkpOwotICAgIH0KIH0KIAogdm9pZCBXZWJQ
cm9jZXNzOjpwbGF0Zm9ybUNsZWFyUmVzb3VyY2VDYWNoZXMoUmVzb3VyY2VDYWNoZXNUb0NsZWFy
IGNhY2hlc1RvQ2xlYXIpCiB7Ci0gICAgaWYgKGNhY2hlc1RvQ2xlYXIgPT0gSW5NZW1vcnlSZXNv
dXJjZUNhY2hlc09ubHkpCi0gICAgICAgIHJldHVybjsKLQotICAgIC8vIElmIHdlJ3JlIHVzaW5n
IHRoZSBuZXR3b3JrIHByb2Nlc3MgdGhlbiBpdCBpcyB0aGUgb25seSBvbmUgdGhhdCBuZWVkcyB0
byBjbGVhciB0aGUgZGlzayBjYWNoZS4KLSAgICBpZiAodXNlc05ldHdvcmtQcm9jZXNzKCkpCi0g
ICAgICAgIHJldHVybjsKLQotICAgIHNvdXBfY2FjaGVfY2xlYXIoV2ViQ29yZTo6U291cE5ldHdv
cmtTZXNzaW9uOjpkZWZhdWx0U2Vzc2lvbigpLmNhY2hlKCkpOwotfQotCi1zdGF0aWMgdm9pZCBz
ZXRTb3VwU2Vzc2lvbkFjY2VwdExhbmd1YWdlKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBsYW5ndWFn
ZXMpCi17Ci0gICAgV2ViQ29yZTo6U291cE5ldHdvcmtTZXNzaW9uOjpkZWZhdWx0U2Vzc2lvbigp
LnNldEFjY2VwdExhbmd1YWdlcyhsYW5ndWFnZXMpOwotfQotCi1zdGF0aWMgdm9pZCBsYW5ndWFn
ZUNoYW5nZWQodm9pZCopCi17Ci0gICAgc2V0U291cFNlc3Npb25BY2NlcHRMYW5ndWFnZShXZWJD
b3JlOjp1c2VyUHJlZmVycmVkTGFuZ3VhZ2VzKCkpOwogfQogCiB2b2lkIFdlYlByb2Nlc3M6OnBs
YXRmb3JtSW5pdGlhbGl6ZVdlYlByb2Nlc3MoV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycyYm
IHBhcmFtZXRlcnMpCkBAIC0xMzUsNjIgKzk0LDE4IEBAIHZvaWQgV2ViUHJvY2Vzczo6cGxhdGZv
cm1Jbml0aWFsaXplV2ViUHJvY2VzcyhXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzJiYgcGFy
CiAgICAgICAgIHNlY2NvbXBGaWx0ZXJzLmluaXRpYWxpemUoKTsKICAgICB9CiAjZW5kaWYKLQot
ICAgIGlmICh1c2VzTmV0d29ya1Byb2Nlc3MoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgQVNT
RVJUKCFwYXJhbWV0ZXJzLmRpc2tDYWNoZURpcmVjdG9yeS5pc0VtcHR5KCkpOwotCi0gICAgLy8g
V2UgdXNlZCB0byB1c2UgdGhlIGdpdmVuIGNhY2hlIGRpcmVjdG9yeSBmb3IgdGhlIHNvdXAgY2Fj
aGUsIGJ1dCBub3cgd2UgdXNlIGEgc3ViZGlyZWN0b3J5IHRvIGF2b2lkCi0gICAgLy8gY29uZmxp
Y3RzIHdpdGggb3RoZXIgY2FjaGUgZmlsZXMgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LiBSZW1vdmUg
dGhlIG9sZCBjYWNoZSBmaWxlcyBpZiB0aGV5IHN0aWxsIGV4aXN0LgotICAgIFdlYkNvcmU6OlNv
dXBOZXR3b3JrU2Vzc2lvbjo6ZGVmYXVsdFNlc3Npb24oKS5jbGVhckNhY2hlKFdlYkNvcmU6OmRp
cmVjdG9yeU5hbWUocGFyYW1ldGVycy5kaXNrQ2FjaGVEaXJlY3RvcnkpKTsKLQotI2lmIEVOQUJM
RShORVRXT1JLX0NBQ0hFKQotICAgIC8vIFdoZW4gbmV0d29yayBjYWNoZSBpcyBlbmFibGVkLCB0
aGUgZGlzayBjYWNoZSBkaXJlY3RvcnkgaXMgdGhlIG5ldHdvcmsgcHJvY2VzcyBvbmUuCi0gICAg
Q1N0cmluZyBkaXNrQ2FjaGVQYXRoID0gV2ViQ29yZTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50
KFdlYkNvcmU6OmRpcmVjdG9yeU5hbWUocGFyYW1ldGVycy5kaXNrQ2FjaGVEaXJlY3RvcnkpLCAi
d2Via2l0IikudXRmOCgpOwotI2Vsc2UKLSAgICBDU3RyaW5nIGRpc2tDYWNoZVBhdGggPSBwYXJh
bWV0ZXJzLmRpc2tDYWNoZURpcmVjdG9yeS51dGY4KCk7Ci0jZW5kaWYKLQotICAgIEdSZWZQdHI8
U291cENhY2hlPiBzb3VwQ2FjaGUgPSBhZG9wdEdSZWYoc291cF9jYWNoZV9uZXcoZGlza0NhY2hl
UGF0aC5kYXRhKCksIFNPVVBfQ0FDSEVfU0lOR0xFX1VTRVIpKTsKLSAgICBXZWJDb3JlOjpTb3Vw
TmV0d29ya1Nlc3Npb246OmRlZmF1bHRTZXNzaW9uKCkuc2V0Q2FjaGUoc291cENhY2hlLmdldCgp
KTsKLSAgICAvLyBTZXQgYW4gaW5pdGlhbCBodWdlIG1heF9zaXplIGZvciB0aGUgU291cENhY2hl
IHNvIHRoZSBjYWxsIHRvIHNvdXBfY2FjaGVfbG9hZCgpIHdvbid0IGV2aWN0IGFueSBjYWNoZWQK
LSAgICAvLyByZXNvdXJjZS4gVGhlIGZpbmFsIHNpemUgb2YgdGhlIGNhY2hlIHdpbGwgYmUgc2V0
IGJ5IE5ldHdvcmtQcm9jZXNzOjpwbGF0Zm9ybVNldENhY2hlTW9kZWwoKS4KLSAgICB1bnNpZ25l
ZCBpbml0aWFsTWF4U2l6ZSA9IHNvdXBfY2FjaGVfZ2V0X21heF9zaXplKHNvdXBDYWNoZS5nZXQo
KSk7Ci0gICAgc291cF9jYWNoZV9zZXRfbWF4X3NpemUoc291cENhY2hlLmdldCgpLCBHX01BWFVJ
TlQpOwotICAgIHNvdXBfY2FjaGVfbG9hZChzb3VwQ2FjaGUuZ2V0KCkpOwotICAgIHNvdXBfY2Fj
aGVfc2V0X21heF9zaXplKHNvdXBDYWNoZS5nZXQoKSwgaW5pdGlhbE1heFNpemUpOwotCi0gICAg
aWYgKCFwYXJhbWV0ZXJzLmNvb2tpZVBlcnNpc3RlbnRTdG9yYWdlUGF0aC5pc0VtcHR5KCkpIHsK
LSAgICAgICAgc3VwcGxlbWVudDxXZWJDb29raWVNYW5hZ2VyPigpLT5zZXRDb29raWVQZXJzaXN0
ZW50U3RvcmFnZShwYXJhbWV0ZXJzLmNvb2tpZVBlcnNpc3RlbnRTdG9yYWdlUGF0aCwKLSAgICAg
ICAgICAgIHBhcmFtZXRlcnMuY29va2llUGVyc2lzdGVudFN0b3JhZ2VUeXBlKTsKLSAgICB9Ci0g
ICAgc3VwcGxlbWVudDxXZWJDb29raWVNYW5hZ2VyPigpLT5zZXRIVFRQQ29va2llQWNjZXB0UG9s
aWN5KHBhcmFtZXRlcnMuY29va2llQWNjZXB0UG9saWN5KTsKLQotICAgIGlmICghcGFyYW1ldGVy
cy5sYW5ndWFnZXMuaXNFbXB0eSgpKQotICAgICAgICBzZXRTb3VwU2Vzc2lvbkFjY2VwdExhbmd1
YWdlKHBhcmFtZXRlcnMubGFuZ3VhZ2VzKTsKLQotICAgIHNldElnbm9yZVRMU0Vycm9ycyhwYXJh
bWV0ZXJzLmlnbm9yZVRMU0Vycm9ycyk7Ci0KLSAgICBXZWJDb3JlOjphZGRMYW5ndWFnZUNoYW5n
ZU9ic2VydmVyKHRoaXMsIGxhbmd1YWdlQ2hhbmdlZCk7CiB9CiAKIHZvaWQgV2ViUHJvY2Vzczo6
cGxhdGZvcm1UZXJtaW5hdGUoKQogewotICAgIGlmICghdXNlc05ldHdvcmtQcm9jZXNzKCkpCi0g
ICAgICAgIFdlYkNvcmU6OnJlbW92ZUxhbmd1YWdlQ2hhbmdlT2JzZXJ2ZXIodGhpcyk7CiB9CiAK
IHZvaWQgV2ViUHJvY2Vzczo6c2V0SWdub3JlVExTRXJyb3JzKGJvb2wgaWdub3JlVExTRXJyb3Jz
KQogewotICAgIEFTU0VSVCghdXNlc05ldHdvcmtQcm9jZXNzKCkpOwotICAgIFdlYkNvcmU6OlJl
c291cmNlSGFuZGxlOjpzZXRJZ25vcmVTU0xFcnJvcnMoaWdub3JlVExTRXJyb3JzKTsKIH0KIAog
dm9pZCBXZWJQcm9jZXNzOjphbGxvd1NwZWNpZmljSFRUUFNDZXJ0aWZpY2F0ZUZvckhvc3QoY29u
c3QgV2ViQ29yZTo6Q2VydGlmaWNhdGVJbmZvJiBjZXJ0aWZpY2F0ZUluZm8sIGNvbnN0IFN0cmlu
ZyYgaG9zdCkKIHsKLSAgICBBU1NFUlQoIXVzZXNOZXR3b3JrUHJvY2VzcygpKTsKLSAgICBXZWJD
b3JlOjpSZXNvdXJjZUhhbmRsZTo6c2V0Q2xpZW50Q2VydGlmaWNhdGUoaG9zdCwgY2VydGlmaWNh
dGVJbmZvLmNlcnRpZmljYXRlKCkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL2NvbmZpZy5oIGIvU291cmNlL1dlYktpdDIvY29uZmlnLmgK
aW5kZXggMGQ2NDBjOC4uMjRlMzBhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvY29uZmln
LmgKKysrIGIvU291cmNlL1dlYktpdDIvY29uZmlnLmgKQEAgLTkxLDcgKzkxLDcgQEAKICNlbmRp
ZgogCiAjaWZuZGVmIEVOQUJMRV9ORVRXT1JLX0NBQ0hFCi0jaWYgRU5BQkxFKE5FVFdPUktfUFJP
Q0VTUykgJiYgKFBMQVRGT1JNKENPQ09BKSB8fCBQTEFURk9STShHVEspKQorI2lmIFBMQVRGT1JN
KENPQ09BKSB8fCBQTEFURk9STShHVEspCiAjZGVmaW5lIEVOQUJMRV9ORVRXT1JLX0NBQ0hFIDEK
ICNlbHNlCiAjZGVmaW5lIEVOQUJMRV9ORVRXT1JLX0NBQ0hFIDAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9jbWFrZS9PcHRpb25zRWZsLmNtYWtlIGIvU291cmNlL2NtYWtlL09wdGlvbnNFZmwuY21ha2UK
aW5kZXggODExYzllNS4uYmM4MzA4OSAxMDA2NDQKLS0tIGEvU291cmNlL2NtYWtlL09wdGlvbnNF
ZmwuY21ha2UKKysrIGIvU291cmNlL2NtYWtlL09wdGlvbnNFZmwuY21ha2UKQEAgLTEwNiw3ICsx
MDYsNiBAQCBXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfTU9VU0VfQ1VS
U09SX1NDQUxFIFBVQkxJQyBPTikKIFdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVO
QUJMRV9OQVZJR0FUT1JfQ09OVEVOVF9VVElMUyBQVUJMSUMgT04pCiBXRUJLSVRfT1BUSU9OX0RF
RkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfTkFWSUdBVE9SX0hXQ09OQ1VSUkVOQ1kgUFVCTElDIE9O
KQogV0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX05FVFNDQVBFX1BMVUdJ
Tl9BUEkgUFVCTElDIE9OKQotV0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxF
X05FVFdPUktfUFJPQ0VTUyBQVUJMSUMgT04pCiBXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9W
QUxVRShFTkFCTEVfTk9TTklGRiBQVUJMSUMgT04pCiBXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9S
VF9WQUxVRShFTkFCTEVfUE9JTlRFUl9MT0NLIFBSSVZBVEUgT0ZGKQogV0VCS0lUX09QVElPTl9E
RUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX1BVQkxJQ19TVUZGSVhfTElTVCBQUklWQVRFIE9OKQpk
aWZmIC0tZ2l0IGEvU291cmNlL2NtYWtlL09wdGlvbnNHVEsuY21ha2UgYi9Tb3VyY2UvY21ha2Uv
T3B0aW9uc0dUSy5jbWFrZQppbmRleCA5ODZhZmZmLi5mZjQ0MTkzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvY21ha2UvT3B0aW9uc0dUSy5jbWFrZQorKysgYi9Tb3VyY2UvY21ha2UvT3B0aW9uc0dUSy5j
bWFrZQpAQCAtMTg2LDcgKzE4Niw2IEBAIFdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVF
KEVOQUJMRV9WSURFT19UUkFDSyBQUklWQVRFIE9OKQogV0VCS0lUX09QVElPTl9ERUZBVUxUX1BP
UlRfVkFMVUUoRU5BQkxFX1ZJRVdfTU9ERV9DU1NfTUVESUEgUFJJVkFURSBPTikKIFdFQktJVF9P
UFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9XRUJfVElNSU5HIFBSSVZBVEUgT04pCiBX
RUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfV0VCR0wgUFJJVkFURSBPTikK
LVdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9ORVRXT1JLX1BST0NFU1Mg
UFJJVkFURSBPTikKIFdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9USFJF
QURFRF9DT01QT1NJVE9SIFBSSVZBVEUgT0ZGKQogV0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRf
VkFMVUUoRU5BQkxFX1NIQURPV19ET00gUFJJVkFURSBPRkYpCiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9jbWFrZS9PcHRpb25zTWFjLmNtYWtlIGIvU291cmNlL2NtYWtlL09wdGlvbnNNYWMuY21ha2UK
aW5kZXggYWU2NDQ1MC4uZjY1NGY2NiAxMDA2NDQKLS0tIGEvU291cmNlL2NtYWtlL09wdGlvbnNN
YWMuY21ha2UKKysrIGIvU291cmNlL2NtYWtlL09wdGlvbnNNYWMuY21ha2UKQEAgLTIyMCw3ICsy
MjAsNiBAQCBXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfSU9TX0FJUlBM
QVlfaXBob25lc2ltdWxhdG9yIFBSSVZBVEUgT0ZGKQogCiBXRUJLSVRfT1BUSU9OX0RFRkFVTFRf
UE9SVF9WQUxVRShFTkFCTEVfU0FOREJPWF9FWFRFTlNJT05TIFBSSVZBVEUgT04pCiBXRUJLSVRf
T1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfV0VCX1BST0NFU1NfU0FOREJPWCBQUklW
QVRFIE9OKQotV0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX05FVFdPUktf
UFJPQ0VTUyBQUklWQVRFIE9OKQogV0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5B
QkxFX0RBVEFCQVNFX1BST0NFU1MgUFJJVkFURSBPTikKIFdFQktJVF9PUFRJT05fREVGQVVMVF9Q
T1JUX1ZBTFVFKEVOQUJMRV9QTFVHSU5fUFJPQ0VTUyBQUklWQVRFIE9OKQogV0VCS0lUX09QVElP
Tl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX01FTU9SWV9TQU1QTEVSIFBSSVZBVEUgT04pCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvY21ha2UvV2ViS2l0RmVhdHVyZXMuY21ha2UgYi9Tb3VyY2UvY21h
a2UvV2ViS2l0RmVhdHVyZXMuY21ha2UKaW5kZXggOTM5NWE2Ni4uZDk2MjI0ZCAxMDA2NDQKLS0t
IGEvU291cmNlL2NtYWtlL1dlYktpdEZlYXR1cmVzLmNtYWtlCisrKyBiL1NvdXJjZS9jbWFrZS9X
ZWJLaXRGZWF0dXJlcy5jbWFrZQpAQCAtMTI4LDcgKzEyOCw2IEBAIG1hY3JvKFdFQktJVF9PUFRJ
T05fQkVHSU4pCiAgICAgV0VCS0lUX09QVElPTl9ERUZJTkUoRU5BQkxFX05BVklHQVRPUl9IV0NP
TkNVUlJFTkNZICJUb2dnbGUgTmF2aWdhdG9yIGhhcmR3YXJlIGNvbmN1cnJlbmN5IHN1cHBvcnQi
IFBSSVZBVEUgT04pCiAgICAgV0VCS0lUX09QVElPTl9ERUZJTkUoRU5BQkxFX05PU05JRkYgIlRv
Z2dsZSBzdXBwb3J0IGZvciAnWC1Db250ZW50LVR5cGUtT3B0aW9uczogbm9zbmlmZiciIFBSSVZB
VEUgT0ZGKQogICAgIFdFQktJVF9PUFRJT05fREVGSU5FKEVOQUJMRV9ORVRTQ0FQRV9QTFVHSU5f
QVBJICJUb2dnbGUgTmV0c2NhcGUgUGx1Z2luIHN1cHBvcnQiIFBSSVZBVEUgT04pCi0gICAgV0VC
S0lUX09QVElPTl9ERUZJTkUoRU5BQkxFX05FVFdPUktfUFJPQ0VTUyAiVG9nZ2xlIGRlZGljYXRl
ZCBuZXR3b3JrIHByb2Nlc3Mgc3VwcG9ydCBpbiBXZWJLaXQyIiBQUklWQVRFIE9GRikKICAgICBX
RUJLSVRfT1BUSU9OX0RFRklORShFTkFCTEVfTk9USUZJQ0FUSU9OUyAiVG9nZ2xlIERlc2t0b3Ag
Tm90aWZpY2F0aW9ucyBTdXBwb3J0IiBQUklWQVRFIE9GRikKICAgICBXRUJLSVRfT1BUSU9OX0RF
RklORShFTkFCTEVfT1JJRU5UQVRJT05fRVZFTlRTICJUb2dnbGUgT3JpZW50YXRpb24gRXZlbnRz
IHN1cHBvcnQiIFBSSVZBVEUgT0ZGKQogICAgIFdFQktJVF9PUFRJT05fREVGSU5FKEVOQUJMRV9Q
REZLSVRfUExVR0lOICJUb2dnbGUgUERGS2l0IHBsdWdpbiBzdXBwb3J0IiBQUklWQVRFIE9GRikK
ZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBiNzcz
OWI5Li5jYWIxMTI2IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTUtMTEtMjAgIEFsZXggQ2hyaXN0ZW5zZW4gIDxh
Y2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBSZW1vdmUgdGhlIG5vbi1OZXR3b3Jr
UHJvY2VzcyBjb25maWd1cmF0aW9ucworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTUxNDE4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgR2VvZmZyZXkgR2Fy
ZW4uCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvbWFjL0dldFBJREFm
dGVyQWJvcnRlZFByb2Nlc3NMYXVuY2guY3BwOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVT
VCk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHA6CisgICAg
ICAgIChXVFI6OlRlc3RDb250cm9sbGVyOjpnZW5lcmF0ZVBhZ2VDb25maWd1cmF0aW9uKToKKwog
MjAxNS0xMS0xOSAgTWljaGFlbCBDYXRhbnphcm8gIDxtY2F0YW56YXJvQGlnYWxpYS5jb20+CiAK
ICAgICAgICAgVW5yZXZpZXdlZCwgaW5zdGFsbCBsbHZtLXN0YXRpYyBvbiBGZWRvcmEgdG8gZml4
IGJ1aWxkIG5vdyBGVEwgaXMgZW5hYmxlZApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXQyL21hYy9HZXRQSURBZnRlckFib3J0ZWRQcm9jZXNzTGF1bmNoLmNwcCBi
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9tYWMvR2V0UElEQWZ0ZXJBYm9ydGVk
UHJvY2Vzc0xhdW5jaC5jcHAKaW5kZXggYzVjM2VmZi4uN2NkNGY3YyAxMDA2NDQKLS0tIGEvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL21hYy9HZXRQSURBZnRlckFib3J0ZWRQcm9j
ZXNzTGF1bmNoLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvbWFj
L0dldFBJREFmdGVyQWJvcnRlZFByb2Nlc3NMYXVuY2guY3BwCkBAIC00Miw3ICs0Miw2IEBAIHN0
YXRpYyB2b2lkIGRpZEZpbmlzaExvYWRGb3JGcmFtZShXS1BhZ2VSZWYgcGFnZSwgV0tGcmFtZVJl
ZiBmcmFtZSwgV0tUeXBlUmVmIHVzCiBURVNUKFdlYktpdDIsIEdldFBJREFmdGVyQWJvcnRlZFBy
b2Nlc3NMYXVuY2gpCiB7CiAgICAgV0tSZXRhaW5QdHI8V0tDb250ZXh0UmVmPiBjb250ZXh0KEFk
b3B0V0ssIFdLQ29udGV4dENyZWF0ZSgpKTsKLSAgICBXS0NvbnRleHRTZXRVc2VzTmV0d29ya1By
b2Nlc3MoY29udGV4dC5nZXQoKSwgdHJ1ZSk7CiAKICAgICBQbGF0Zm9ybVdlYlZpZXcgd2ViVmll
dyhjb250ZXh0LmdldCgpKTsKIApkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9U
ZXN0Q29udHJvbGxlci5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVy
LmNwcAppbmRleCAwYjU5MmQwLi4xYmY1Y2M1IDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rl
c3RDb250cm9sbGVyLmNwcApAQCAtNDAwLDExICs0MDAsNiBAQCBXS1JldGFpblB0cjxXS1BhZ2VD
b25maWd1cmF0aW9uUmVmPiBUZXN0Q29udHJvbGxlcjo6Z2VuZXJhdGVQYWdlQ29uZmlndXJhdGlv
bihXSwogCiAgICAgbV9nZW9sb2NhdGlvblByb3ZpZGVyID0gc3RkOjptYWtlX3VuaXF1ZTxHZW9s
b2NhdGlvblByb3ZpZGVyTW9jaz4obV9jb250ZXh0LmdldCgpKTsKIAotI2lmIFBMQVRGT1JNKEVG
TCkKLSAgICBXS0NvbnRleHRTZXRVc2VzTmV0d29ya1Byb2Nlc3MobV9jb250ZXh0LmdldCgpLCBm
YWxzZSk7Ci0gICAgV0tDb250ZXh0U2V0UHJvY2Vzc01vZGVsKG1fY29udGV4dC5nZXQoKSwga1dL
UHJvY2Vzc01vZGVsU2hhcmVkU2Vjb25kYXJ5UHJvY2Vzcyk7Ci0jZW5kaWYKLQogICAgIGlmIChj
b25zdCBjaGFyKiBkdW1wUmVuZGVyVHJlZVRlbXAgPSBsaWJyYXJ5UGF0aEZvclRlc3RpbmcoKSkg
ewogICAgICAgICBTdHJpbmcgdGVtcG9yYXJ5Rm9sZGVyID0gU3RyaW5nOjpmcm9tVVRGOChkdW1w
UmVuZGVyVHJlZVRlbXApOwogCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>