<?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>126082</bug_id>
          
          <creation_ts>2013-12-20 14:04:57 -0800</creation_ts>
          <short_desc>Web Inspector: Give the CommandLineAPIModule its own Host object, making InjectedScriptHost viable for a JS Context</short_desc>
          <delta_ts>2016-09-07 21:47:40 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Web Inspector</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Joseph Pecoraro">joepeck</reporter>
          <assigned_to name="Joseph Pecoraro">joepeck</assigned_to>
          <cc>bfulgham</cc>
    
    <cc>commit-queue</cc>
    
    <cc>eflews.bot</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>japhet</cc>
    
    <cc>joepeck</cc>
    
    <cc>ltilve+ews</cc>
    
    <cc>ossy</cc>
    
    <cc>rakuco</cc>
    
    <cc>timothy</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>962041</commentid>
    <comment_count>0</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2013-12-20 14:04:57 -0800</bug_when>
    <thetext>Currently some InjectedScriptHost functions know about things like Databases, DOMStorage, etc. We just moved the logic for this into the CommandLineAPIModule. So put the relevant functions onto a CommandLineAPIHost object.

This way, when InjectedScriptHost is pushed down into JavaScriptCore it can be implemented without knowledge of any WebCore / DOM types.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>962042</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2013-12-20 14:05:19 -0800</bug_when>
    <thetext>&lt;rdar://problem/15711441&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>962047</commentid>
    <comment_count>2</comment_count>
      <attachid>219793</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2013-12-20 14:12:18 -0800</bug_when>
    <thetext>Created attachment 219793
[PATCH] Proposed Fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>962049</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-12-20 14:15:43 -0800</bug_when>
    <thetext>Attachment 219793 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/CMakeLists.txt&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCore/DerivedSources.cpp&apos;, u&apos;Source/WebCore/DerivedSources.make&apos;, u&apos;Source/WebCore/GNUmakefile.list.am&apos;, u&apos;Source/WebCore/UseJSC.cmake&apos;, u&apos;Source/WebCore/WebCore.vcxproj/WebCore.vcxproj&apos;, u&apos;Source/WebCore/WebCore.vcxproj/WebCore.vcxproj.filters&apos;, u&apos;Source/WebCore/WebCore.xcodeproj/project.pbxproj&apos;, u&apos;Source/WebCore/bindings/js/JSBindingsAllInOne.cpp&apos;, u&apos;Source/WebCore/bindings/js/JSCommandLineAPIHostCustom.cpp&apos;, u&apos;Source/WebCore/bindings/js/JSInjectedScriptHostCustom.cpp&apos;, u&apos;Source/WebCore/inspector/CommandLineAPIHost.cpp&apos;, u&apos;Source/WebCore/inspector/CommandLineAPIHost.h&apos;, u&apos;Source/WebCore/inspector/CommandLineAPIHost.idl&apos;, u&apos;Source/WebCore/inspector/CommandLineAPIModule.cpp&apos;, u&apos;Source/WebCore/inspector/CommandLineAPIModule.h&apos;, u&apos;Source/WebCore/inspector/CommandLineAPIModuleSource.js&apos;, u&apos;Source/WebCore/inspector/InjectedScriptCanvasModule.cpp&apos;, u&apos;Source/WebCore/inspector/InjectedScriptCanvasModule.h&apos;, u&apos;Source/WebCore/inspector/InjectedScriptHost.cpp&apos;, u&apos;Source/WebCore/inspector/InjectedScriptHost.h&apos;, u&apos;Source/WebCore/inspector/InjectedScriptHost.idl&apos;, u&apos;Source/WebCore/inspector/InjectedScriptManager.cpp&apos;, u&apos;Source/WebCore/inspector/InjectedScriptManager.h&apos;, u&apos;Source/WebCore/inspector/InjectedScriptModule.cpp&apos;, u&apos;Source/WebCore/inspector/InjectedScriptModule.h&apos;, u&apos;Source/WebCore/inspector/InjectedScriptSource.js&apos;, u&apos;Source/WebCore/inspector/InspectorConsoleAgent.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorController.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorHeapProfilerAgent.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorProfilerAgent.cpp&apos;, u&apos;Source/WebCore/inspector/PageConsoleAgent.cpp&apos;, u&apos;Source/WebCore/inspector/PageInjectedScriptManager.cpp&apos;, u&apos;Source/WebCore/inspector/PageInjectedScriptManager.h&apos;, u&apos;Source/WebCore/inspector/WorkerInspectorController.cpp&apos;, &apos;--commit-queue&apos;]&quot; exit_code: 1
ERROR: Source/WebCore/bindings/js/JSBindingsAllInOne.cpp:46:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WebCore/inspector/InjectedScriptHost.h:35:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WebCore/bindings/js/JSCommandLineAPIHostCustom.cpp:37:  You should not add a blank line before implementation file&apos;s own header.  [build/include_order] [4]
ERROR: Source/WebCore/inspector/CommandLineAPIHost.h:68:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
ERROR: Source/WebCore/inspector/CommandLineAPIHost.h:98:  Omit int when using unsigned  [runtime/unsigned] [1]
ERROR: Source/WebCore/inspector/PageInjectedScriptManager.h:37:  The parameter name &quot;accessCheck&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 6 in 33 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>962067</commentid>
    <comment_count>4</comment_count>
      <attachid>219799</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2013-12-20 15:05:23 -0800</bug_when>
    <thetext>Created attachment 219799
[PATCH] For Bots 1

Forgot to add CommandLineAPIHost.h/cpp to non-mac build files.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>962070</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-12-20 15:07:15 -0800</bug_when>
    <thetext>Attachment 219799 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/CMakeLists.txt&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCore/DerivedSources.cpp&apos;, u&apos;Source/WebCore/DerivedSources.make&apos;, u&apos;Source/WebCore/GNUmakefile.list.am&apos;, u&apos;Source/WebCore/UseJSC.cmake&apos;, u&apos;Source/WebCore/WebCore.vcxproj/WebCore.vcxproj&apos;, u&apos;Source/WebCore/WebCore.vcxproj/WebCore.vcxproj.filters&apos;, u&apos;Source/WebCore/WebCore.xcodeproj/project.pbxproj&apos;, u&apos;Source/WebCore/bindings/js/JSBindingsAllInOne.cpp&apos;, u&apos;Source/WebCore/bindings/js/JSCommandLineAPIHostCustom.cpp&apos;, u&apos;Source/WebCore/bindings/js/JSInjectedScriptHostCustom.cpp&apos;, u&apos;Source/WebCore/inspector/CommandLineAPIHost.cpp&apos;, u&apos;Source/WebCore/inspector/CommandLineAPIHost.h&apos;, u&apos;Source/WebCore/inspector/CommandLineAPIHost.idl&apos;, u&apos;Source/WebCore/inspector/CommandLineAPIModule.cpp&apos;, u&apos;Source/WebCore/inspector/CommandLineAPIModule.h&apos;, u&apos;Source/WebCore/inspector/CommandLineAPIModuleSource.js&apos;, u&apos;Source/WebCore/inspector/InjectedScriptCanvasModule.cpp&apos;, u&apos;Source/WebCore/inspector/InjectedScriptCanvasModule.h&apos;, u&apos;Source/WebCore/inspector/InjectedScriptHost.cpp&apos;, u&apos;Source/WebCore/inspector/InjectedScriptHost.h&apos;, u&apos;Source/WebCore/inspector/InjectedScriptHost.idl&apos;, u&apos;Source/WebCore/inspector/InjectedScriptManager.cpp&apos;, u&apos;Source/WebCore/inspector/InjectedScriptManager.h&apos;, u&apos;Source/WebCore/inspector/InjectedScriptModule.cpp&apos;, u&apos;Source/WebCore/inspector/InjectedScriptModule.h&apos;, u&apos;Source/WebCore/inspector/InjectedScriptSource.js&apos;, u&apos;Source/WebCore/inspector/InspectorConsoleAgent.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorController.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorHeapProfilerAgent.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorProfilerAgent.cpp&apos;, u&apos;Source/WebCore/inspector/PageConsoleAgent.cpp&apos;, u&apos;Source/WebCore/inspector/PageInjectedScriptManager.cpp&apos;, u&apos;Source/WebCore/inspector/PageInjectedScriptManager.h&apos;, u&apos;Source/WebCore/inspector/WorkerInspectorController.cpp&apos;, &apos;--commit-queue&apos;]&quot; exit_code: 1
ERROR: Source/WebCore/bindings/js/JSCommandLineAPIHostCustom.cpp:37:  You should not add a blank line before implementation file&apos;s own header.  [build/include_order] [4]
ERROR: Source/WebCore/inspector/CommandLineAPIHost.h:68:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
Total errors found: 2 in 33 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>962090</commentid>
    <comment_count>6</comment_count>
      <attachid>219793</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2013-12-20 15:56:29 -0800</bug_when>
    <thetext>Comment on attachment 219793
[PATCH] Proposed Fix

Attachment 219793 did not pass efl-wk2-ews (efl-wk2):
Output: http://webkit-queues.appspot.com/results/49668019</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>962107</commentid>
    <comment_count>7</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2013-12-20 16:41:37 -0800</bug_when>
    <thetext>Committed r160946 &lt;http://trac.webkit.org/changeset/160946&gt;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>962273</commentid>
    <comment_count>8</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2013-12-21 14:25:46 -0800</bug_when>
    <thetext>(In reply to comment #7)
&gt; Committed r160946 &lt;http://trac.webkit.org/changeset/160946&gt;.

FYI, it broke the Apple Windows build:
   1&gt;c:\cygwin\home\buildbot\slave\win-release\build\webkitbuild\release\include\private\javascriptcore\X86Assembler.h(2343): warning C4309: &apos;argument&apos; : truncation of constant value
     1&gt;c:\cygwin\home\buildbot\slave\win-release\build\source\webcore\inspector\InjectedScript.cpp(116): error C2872: &apos;PropertyDescriptor&apos; : ambiguous symbol
                 could be &apos;C:\cygwin\home\buildbot\slave\win-release\build\WebKitBuild\Release\include\private\JavaScriptCore/InspectorJSTypeBuilders.h(973) : Inspector::TypeBuilder::Runtime::PropertyDescriptor&apos;
                 or       &apos;c:\cygwin\home\buildbot\slave\win-release\build\webkitbuild\release\include\private\javascriptcore\PropertyDescriptor.h(37) : JSC::PropertyDescriptor&apos;
     1&gt;c:\cygwin\home\buildbot\slave\win-release\build\source\webcore\inspector\InjectedScript.cpp(128): error C2872: &apos;PropertyDescriptor&apos; : ambiguous symbol
                 could be &apos;C:\cygwin\home\buildbot\slave\win-release\build\WebKitBuild\Release\include\private\JavaScriptCore/InspectorJSTypeBuilders.h(973) : Inspector::TypeBuilder::Runtime::PropertyDescriptor&apos;
                 or       &apos;c:\cygwin\home\buildbot\slave\win-release\build\webkitbuild\release\include\private\javascriptcore\PropertyDescriptor.h(37) : JSC::PropertyDescriptor&apos;
     1&gt;c:\cygwin\home\buildbot\slave\win-release\build\source\webcore\inspector\InjectedScript.cpp(171): error C2872: &apos;CallFrame&apos; : ambiguous symbol
                 could be &apos;C:\cygwin\home\buildbot\slave\win-release\build\WebKitBuild\Release\include\private\JavaScriptCore/InspectorJSTypeBuilders.h(377) : Inspector::TypeBuilder::Debugger::CallFrame&apos;
                 or       &apos;c:\cygwin\home\buildbot\slave\win-release\build\webkitbuild\release\include\private\javascriptcore\Register.h(45) : JSC::CallFrame&apos;
     1&gt;c:\cygwin\home\buildbot\slave\win-release\build\source\webcore\inspector\InjectedScript.cpp(181): error C2872: &apos;CallFrame&apos; : ambiguous symbol
                 could be &apos;C:\cygwin\home\buildbot\slave\win-release\build\WebKitBuild\Release\include\private\JavaScriptCore/InspectorJSTypeBuilders.h(377) : Inspector::TypeBuilder::Debugger::CallFrame&apos;
                 or       &apos;c:\cygwin\home\buildbot\slave\win-release\build\webkitbuild\release\include\private\javascriptcore\Register.h(45) : JSC::CallFrame&apos;
     1&gt;c:\cygwin\home\buildbot\slave\win-release\build\source\webcore\inspector\InjectedScript.cpp(182): error C2872: &apos;CallFrame&apos; : ambiguous symbol
                 could be &apos;C:\cygwin\home\buildbot\slave\win-release\build\WebKitBuild\Release\include\private\JavaScriptCore/InspectorJSTypeBuilders.h(377) : Inspector::TypeBuilder::Debugger::CallFrame&apos;
                 or       &apos;c:\cygwin\home\buildbot\slave\win-release\build\webkitbuild\release\include\private\javascriptcore\Register.h(45) : JSC::CallFrame&apos;
     1&gt;Done Building Project &quot;C:\cygwin\home\buildbot\slave\win-release\build\Source\WebCore\WebCore.vcxproj\WebCore.vcxproj&quot; (Build target(s)) -- FAILED.

Build FAILED.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>963017</commentid>
    <comment_count>9</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2013-12-26 10:28:58 -0800</bug_when>
    <thetext>Thanks, attempted a Windows build fix in:
&lt;http://trac.webkit.org/changeset/161091&gt;

Seems good.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>963071</commentid>
    <comment_count>10</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2013-12-26 22:45:52 -0800</bug_when>
    <thetext>(In reply to comment #9)
&gt; Thanks, attempted a Windows build fix in:
&gt; &lt;http://trac.webkit.org/changeset/161091&gt;
&gt; 
&gt; Seems good.

I&apos;m still seeing a build error because CommandLineAPIHost symbols aren&apos;t being included in the build.

I can see the CommandLiheAPIHost.cpp file being included in the project file (WebCore.vcxproj and WebCore.vcxproj.filters), but it is set with the &quot;ExcludeFromBuild&quot; flag set to &apos;true&apos;. This prevents the file from being compiled. We usually do this when we have an &quot;...AllInOne.cpp&quot; file that will actually build the source code. It looks like this used to be the case in its old location, but it is not part of any such file in the new one.

I think you just need to add the following line to Souce/WebCore/inspector/InspectorAllInOne.cpp:

#include &quot;CommandLineAPIHost.cpp&quot;

Thanks!

-Brent</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>963126</commentid>
    <comment_count>11</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2013-12-27 09:05:46 -0800</bug_when>
    <thetext>&gt; I think you just need to add the following line to Souce/WebCore/inspector/InspectorAllInOne.cpp:
&gt; 
&gt; #include &quot;CommandLineAPIHost.cpp&quot;
&gt; 
&gt; Thanks!

Good point! Argh.

Landed that in: &lt;http://trac.webkit.org/changeset/161102&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>219793</attachid>
            <date>2013-12-20 14:12:18 -0800</date>
            <delta_ts>2013-12-20 15:56:29 -0800</delta_ts>
            <desc>[PATCH] Proposed Fix</desc>
            <filename>host.patch</filename>
            <type>text/plain</type>
            <size>79272</size>
            <attacher name="Joseph Pecoraro">joepeck</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNv
cmUvQ01ha2VMaXN0cy50eHQKaW5kZXggZDQyODlmOC4uOGFjNDYyZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0
cy50eHQKQEAgLTUyOSw2ICs1MjksNyBAQCBzZXQoV2ViQ29yZV9JRExfRklMRVMKICAgICBodG1s
L2NhbnZhcy9XZWJHTFVuaWZvcm1Mb2NhdGlvbi5pZGwKICAgICBodG1sL2NhbnZhcy9XZWJHTFZl
cnRleEFycmF5T2JqZWN0T0VTLmlkbAogCisgICAgaW5zcGVjdG9yL0NvbW1hbmRMaW5lQVBJSG9z
dC5pZGwKICAgICBpbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRIb3N0LmlkbAogICAgIGluc3BlY3Rv
ci9JbnNwZWN0b3JGcm9udGVuZEhvc3QuaWRsCiAgICAgaW5zcGVjdG9yL0phdmFTY3JpcHRDYWxs
RnJhbWUuaWRsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
V2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzY0N2Q3My4uNmY4Zjc5ZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAt
MSw1ICsxLDExMCBAQAogMjAxMy0xMi0yMCAgSm9zZXBoIFBlY29yYXJvICA8cGVjb3Jhcm9AYXBw
bGUuY29tPgogCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IEdpdmUgdGhlIENvbW1hbmRMaW5lQVBJ
TW9kdWxlIGl0cyBvd24gSG9zdCBvYmplY3QsIG1ha2luZyBJbmplY3RlZFNjcmlwdEhvc3Qgdmlh
YmxlIGZvciBhIEpTIENvbnRleHQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTEyNjA4MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIEV4dHJhY3QgQ29tbWFuZExpbmVBUElIb3N0IGZyb20gSW5qZWN0ZWRTY3Jp
cHRIb3N0LiBUaGUgY29tbWFuZCBsaW5lIEFQSSBjb250YWluZWQKKyAgICAgICAgYSBidW5jaCBv
ZiBET00gc3BlY2lmaWMgSmF2YVNjcmlwdCB0aGF0IHdvdWxkIG5vdCBiZSBzdWl0YWJsZSBmb3Ig
YSBwdXJlIEphdmFTY3JpcHQKKyAgICAgICAgZW52aXJvbm1lbnQuIE5vdyB0aGF0IHRoZSBET00g
cmVsYXRlZCBjb2RlIGlzIGluIHRoaXMgV2ViQ29yZSBvbmx5IG1vZHVsZSwgZ2l2ZSB0aGlzCisg
ICAgICAgIG1vZHVsZSBhIGhvc3Qgb2JqZWN0IHRoYXQgV2ViQ29yZSB3aWxsIHByb3ZpZGUuCisK
KyAgICAgICAgTm8gbmV3IHRlc3RzLCBubyBvYnNlcnZhYmxlIGNoYW5nZSBpbiBmdW5jdGlvbmFs
aXR5LgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogRGVyaXZlZFNvdXJj
ZXMuY3BwOgorICAgICAgICAqIERlcml2ZWRTb3VyY2VzLm1ha2U6CisgICAgICAgICogR05VbWFr
ZWZpbGUubGlzdC5hbToKKyAgICAgICAgKiBVc2VKU0MuY21ha2U6CisgICAgICAgICogV2ViQ29y
ZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvajoKKyAgICAgICAgKiBXZWJDb3JlLnZjeHByb2ovV2Vi
Q29yZS52Y3hwcm9qLmZpbHRlcnM6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTQmluZGluZ3NBbGxJbk9uZS5jcHA6
CisgICAgICAgIEFkZCBuZXcgZmlsZXMuCisKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0NvbW1h
bmRMaW5lQVBJSG9zdEN1c3RvbS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6SlNDb21t
YW5kTGluZUFQSUhvc3Q6Omluc3BlY3RlZE9iamVjdCk6CisgICAgICAgIChXZWJDb3JlOjpnZXRK
U0xpc3RlbmVyRnVuY3Rpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OkpTQ29tbWFuZExpbmVBUElI
b3N0OjpnZXRFdmVudExpc3RlbmVycyk6CisgICAgICAgIChXZWJDb3JlOjpKU0NvbW1hbmRMaW5l
QVBJSG9zdDo6aW5zcGVjdCk6CisgICAgICAgIChXZWJDb3JlOjpKU0NvbW1hbmRMaW5lQVBJSG9z
dDo6ZGF0YWJhc2VJZCk6CisgICAgICAgIChXZWJDb3JlOjpKU0NvbW1hbmRMaW5lQVBJSG9zdDo6
c3RvcmFnZUlkKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0luamVjdGVkU2NyaXB0SG9zdEN1
c3RvbS5jcHA6CisgICAgICAgICogaW5zcGVjdG9yL0NvbW1hbmRMaW5lQVBJSG9zdC5jcHA6IENv
cGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdEhvc3QuY3Bw
LgorICAgICAgICAoV2ViQ29yZTo6Q29tbWFuZExpbmVBUElIb3N0OjpjcmVhdGUpOgorICAgICAg
ICAoV2ViQ29yZTo6Q29tbWFuZExpbmVBUElIb3N0OjpDb21tYW5kTGluZUFQSUhvc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6Q29tbWFuZExpbmVBUElIb3N0Ojp+Q29tbWFuZExpbmVBUElIb3N0KToK
KyAgICAgICAgKFdlYkNvcmU6OkNvbW1hbmRMaW5lQVBJSG9zdDo6ZGlzY29ubmVjdCk6CisgICAg
ICAgIChXZWJDb3JlOjpDb21tYW5kTGluZUFQSUhvc3Q6Omluc3BlY3RJbXBsKToKKyAgICAgICAg
KFdlYkNvcmU6OkNvbW1hbmRMaW5lQVBJSG9zdDo6Z2V0RXZlbnRMaXN0ZW5lcnNJbXBsKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNvbW1hbmRMaW5lQVBJSG9zdDo6Y2xlYXJDb25zb2xlTWVzc2FnZXMp
OgorICAgICAgICAoV2ViQ29yZTo6Q29tbWFuZExpbmVBUElIb3N0Ojpjb3B5VGV4dCk6CisgICAg
ICAgIChXZWJDb3JlOjpDb21tYW5kTGluZUFQSUhvc3Q6Okluc3BlY3RhYmxlT2JqZWN0OjpnZXQp
OgorICAgICAgICAoV2ViQ29yZTo6Q29tbWFuZExpbmVBUElIb3N0OjphZGRJbnNwZWN0ZWRPYmpl
Y3QpOgorICAgICAgICAoV2ViQ29yZTo6Q29tbWFuZExpbmVBUElIb3N0OjpjbGVhckluc3BlY3Rl
ZE9iamVjdHMpOgorICAgICAgICAoV2ViQ29yZTo6Q29tbWFuZExpbmVBUElIb3N0OjppbnNwZWN0
ZWRPYmplY3QpOgorICAgICAgICAoV2ViQ29yZTo6Q29tbWFuZExpbmVBUElIb3N0OjpkYXRhYmFz
ZUlkSW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpDb21tYW5kTGluZUFQSUhvc3Q6OnN0b3JhZ2VJ
ZEltcGwpOgorICAgICAgICAqIGluc3BlY3Rvci9Db21tYW5kTGluZUFQSUhvc3QuaDogQ29waWVk
IGZyb20gU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0SG9zdC5oLgorICAg
ICAgICAoV2ViQ29yZTo6Q29tbWFuZExpbmVBUElIb3N0Ojppbml0KToKKyAgICAgICAgKiBpbnNw
ZWN0b3IvQ29tbWFuZExpbmVBUElIb3N0LmlkbDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luamVjdGVkU2NyaXB0SG9zdC5pZGwuCisgICAgICAgICogaW5zcGVjdG9yL0Nv
bW1hbmRMaW5lQVBJTW9kdWxlLmNwcDoKKyAgICAgICAgVGhlc2UgYXJlIGFsbW9zdCBhbGwgcHVy
ZSBjb3BpZXMgZnJvbSBJbmplY3RlZFNjcmlwdEhvc3QgZmlsZXMuIENsZWFuZWQgdXAgYSBiaXQu
CisKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRNb2R1bGUuaDoKKyAgICAgICAg
KiBpbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRNb2R1bGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SW5qZWN0ZWRTY3JpcHRNb2R1bGU6OmVuc3VyZUluamVjdGVkKToKKyAgICAgICAgTW9kdWxlcyBj
YW4gbm93IGRlZmluZSBhIGhvc3Qgb2JqZWN0IHdoZW4gdGhleSBhcmUgZ2V0dGluZyBpbmplY3Rl
ZC4KKworICAgICAgICAoV2ViQ29yZTo6Q29tbWFuZExpbmVBUElNb2R1bGU6Omhvc3QpOgorICAg
ICAgICAqIGluc3BlY3Rvci9Db21tYW5kTGluZUFQSU1vZHVsZS5oOgorICAgICAgICBQcm92aWRl
IGEgQ29tbWFuZExpbmVBUElIb3N0LCBob3N0IG9iamVjdC4KKworICAgICAgICAqIGluc3BlY3Rv
ci9JbmplY3RlZFNjcmlwdENhbnZhc01vZHVsZS5oOgorICAgICAgICAqIGluc3BlY3Rvci9Jbmpl
Y3RlZFNjcmlwdENhbnZhc01vZHVsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbmplY3RlZFNj
cmlwdENhbnZhc01vZHVsZTo6aG9zdCk6CisgICAgICAgIE5vIGhvc3Qgb2JqZWN0IGlzIG5lZWRl
ZCBmb3IgdGhlIENhbnZhc01vZHVsZS4KKworICAgICAgICAqIGluc3BlY3Rvci9JbmplY3RlZFNj
cmlwdFNvdXJjZS5qczoKKyAgICAgICAgKiBpbnNwZWN0b3IvQ29tbWFuZExpbmVBUElNb2R1bGVT
b3VyY2UuanM6CisgICAgICAgIFdoZW4gaW5qZWN0aW5nIGEgbW9kdWxlLCBwYXNzIG9uIGFuIG9w
dGlvbmFsIGhvc3Qgb2JqZWN0IHRvCisgICAgICAgIHRoZSBtb2R1bGUncyBzb3VyY2UuIE1vdmUg
YSBsaXR0bGUgbW9yZSBjb2RlIGJldHdlZW4gdGhlCisgICAgICAgIHR3byBmaWxlcy4gVGhlIHR3
byBmaWxlcyBhcmUgdmVyeSB0aWdodGx5IGNvdXBsZWQgcmlnaHQgbm93LgorCisgICAgICAgICog
aW5zcGVjdG9yL0luamVjdGVkU2NyaXB0SG9zdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbmpl
Y3RlZFNjcmlwdEhvc3Q6OmNyZWF0ZSk6CisgICAgICAgICogaW5zcGVjdG9yL0luamVjdGVkU2Ny
aXB0SG9zdC5oOgorICAgICAgICAoV2ViQ29yZTo6SW5qZWN0ZWRTY3JpcHRIb3N0Ojp+SW5qZWN0
ZWRTY3JpcHRIb3N0KToKKyAgICAgICAgKFdlYkNvcmU6OkluamVjdGVkU2NyaXB0SG9zdDo6SW5q
ZWN0ZWRTY3JpcHRIb3N0KToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRIb3N0
LmlkbDoKKyAgICAgICAgTW92ZSBhbnkgY29tbWFuZCBsaW5lIHNwZWNpZmljIGxvZ2ljIHRvIENv
bW1hbmRMaW5lQVBJSG9zdCBjbGFzc2VzLgorCisgICAgICAgICogaW5zcGVjdG9yL0luamVjdGVk
U2NyaXB0TWFuYWdlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbmplY3RlZFNjcmlwdE1hbmFn
ZXI6OmRpc2Nvbm5lY3QpOgorICAgICAgICAqIGluc3BlY3Rvci9JbmplY3RlZFNjcmlwdE1hbmFn
ZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkluamVjdGVkU2NyaXB0TWFuYWdlcjo6Y29tbWFuZExp
bmVBUElIb3N0KToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQ29uc29sZUFnZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNvbnNvbGVBZ2VudDo6YWRkSW5zcGVjdGVk
SGVhcE9iamVjdCk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxlcjo6SW5zcGVjdG9yQ29udHJv
bGxlcik6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckhlYXBQcm9maWxlckFnZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckhlYXBQcm9maWxlckFnZW50OjpyZXNldFN0
YXRlKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yUHJvZmlsZXJBZ2VudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JQcm9maWxlckFnZW50OjpyZXNldFN0YXRlKToKKyAg
ICAgICAgKiBpbnNwZWN0b3IvUGFnZUNvbnNvbGVBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpQYWdlQ29uc29sZUFnZW50OjphZGRJbnNwZWN0ZWROb2RlKToKKyAgICAgICAgKiBpbnNwZWN0
b3IvUGFnZUluamVjdGVkU2NyaXB0TWFuYWdlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYWdl
SW5qZWN0ZWRTY3JpcHRNYW5hZ2VyOjpQYWdlSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKToKKyAgICAg
ICAgKFdlYkNvcmU6OlBhZ2VJbmplY3RlZFNjcmlwdE1hbmFnZXI6OmRpc2Nvbm5lY3QpOgorICAg
ICAgICAqIGluc3BlY3Rvci9QYWdlSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmg6CisgICAgICAgICog
aW5zcGVjdG9yL1dvcmtlckluc3BlY3RvckNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6V29ya2VySW5zcGVjdG9yQ29udHJvbGxlcjo6V29ya2VySW5zcGVjdG9yQ29udHJvbGxlcik6
CisgICAgICAgIEFuIEluamVjdGVkU2NyaXB0TWFuYWdlciBtYXkgb3B0aW9uYWxseSBoYXZlIGEg
Y29tbWFuZExpbmVBUElIb3N0IG9iamVjdC4KKyAgICAgICAgSWYgaXQgZG9lcywgaW5pdGlhbGl6
ZSBpdCwgYW5kIHNlbmQgaXQgbWVzc2FnZXMuCisKKzIwMTMtMTItMjAgIEpvc2VwaCBQZWNvcmFy
byAgPHBlY29yYXJvQGFwcGxlLmNvbT4KKwogICAgICAgICBXZWIgSW5zcGVjdG9yOiBFeHRyYWN0
IENvbW1hbmRMaW5lQVBJIGludG8gaXRzIG93biBJbmplY3RlZFNjcmlwdE1vZHVsZQogICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI2MDM4CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L0Rlcml2ZWRTb3VyY2VzLmNwcAppbmRleCAwMWE1MDk1Li4zYjk5ODFmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvRGVy
aXZlZFNvdXJjZXMuY3BwCkBAIC0yMCw3ICsyMCw3IEBACiAgKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCiAgKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
ICAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAK
IC8vIFRoaXMgYWxsLWluLW9uZSBjcHAgZmlsZSBjdXRzIGRvd24gb24gdGVtcGxhdGUgYmxvYXQg
dG8gYWxsb3cgdXMgdG8gYnVpbGQgb3VyIFdpbmRvd3MgcmVsZWFzZSBidWlsZC4KQEAgLTczLDYg
KzczLDcgQEAKICNpbmNsdWRlICJKU0NsaWVudFJlY3RMaXN0LmNwcCIKICNpbmNsdWRlICJKU0Ns
aXBib2FyZC5jcHAiCiAjaW5jbHVkZSAiSlNDbG9zZUV2ZW50LmNwcCIKKyNpbmNsdWRlICJKU0Nv
bW1hbmRMaW5lQVBJSG9zdC5jcHAiCiAjaW5jbHVkZSAiSlNDb21tZW50LmNwcCIKICNpbmNsdWRl
ICJKU0NvbXBvc2l0aW9uRXZlbnQuY3BwIgogI2luY2x1ZGUgIkpTQ29uc29sZS5jcHAiCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlIGIvU291cmNlL1dlYkNv
cmUvRGVyaXZlZFNvdXJjZXMubWFrZQppbmRleCA5YjcxYzk3Li42MWUyY2ZjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L0Rlcml2ZWRTb3VyY2VzLm1ha2UKQEAgLTQ1Miw2ICs0NTIsNyBAQCBCSU5ESU5HX0lETFMgPSBc
CiAgICAgJChXZWJDb3JlKS9odG1sL3RyYWNrL1RyYWNrRXZlbnQuaWRsIFwKICAgICAkKFdlYkNv
cmUpL2h0bWwvdHJhY2svVmlkZW9UcmFjay5pZGwgXAogICAgICQoV2ViQ29yZSkvaHRtbC90cmFj
ay9WaWRlb1RyYWNrTGlzdC5pZGwgXAorICAgICQoV2ViQ29yZSkvaW5zcGVjdG9yL0NvbW1hbmRM
aW5lQVBJSG9zdC5pZGwgXAogICAgICQoV2ViQ29yZSkvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0
SG9zdC5pZGwgXAogICAgICQoV2ViQ29yZSkvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kSG9z
dC5pZGwgXAogICAgICQoV2ViQ29yZSkvaW5zcGVjdG9yL1NjcmlwdFByb2ZpbGUuaWRsIFwKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0gYi9Tb3VyY2UvV2Vi
Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCmluZGV4IDlkNTAxZWEuLjNmNmYzMDIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KKysrIGIvU291cmNlL1dlYkNv
cmUvR05VbWFrZWZpbGUubGlzdC5hbQpAQCAtMTA1LDYgKzEwNSw4IEBAIHdlYmNvcmVfYnVpbHRf
c291cmNlcyArPSBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0NsaXBib2FyZC5oIFwKIAlE
ZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTQ2xvc2VFdmVudC5jcHAgXAogCURlcml2ZWRTb3VyY2Vz
L1dlYkNvcmUvSlNDbG9zZUV2ZW50LmggXAorCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNDb21t
YW5kTGluZUFQSUhvc3QuY3BwIFwKKwlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTQ29tbWFuZExp
bmVBUElIb3N0LmggXAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNDb21tZW50LmNwcCBcCiAJ
RGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0NvbW1lbnQuaCBcCiAJRGVyaXZlZFNvdXJjZXMvV2Vi
Q29yZS9KU0NvbXBvc2l0aW9uRXZlbnQuY3BwIFwKQEAgLTE1NDgsNiArMTU1MCw3IEBAIGRvbV9i
aW5kaW5nX2lkbHMgKz0gXAogCSQoV2ViQ29yZSkvaHRtbC90cmFjay9UcmFja0V2ZW50LmlkbCBc
CiAJJChXZWJDb3JlKS9odG1sL3RyYWNrL1ZpZGVvVHJhY2suaWRsIFwKIAkkKFdlYkNvcmUpL2h0
bWwvdHJhY2svVmlkZW9UcmFja0xpc3QuaWRsIFwKKwkkKFdlYkNvcmUpL2luc3BlY3Rvci9Db21t
YW5kTGluZUFQSUhvc3QuaWRsIFwKIAkkKFdlYkNvcmUpL2luc3BlY3Rvci9JbmplY3RlZFNjcmlw
dEhvc3QuaWRsIFwKIAkkKFdlYkNvcmUpL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZEhvc3Qu
aWRsIFwKIAkkKFdlYkNvcmUpL2luc3BlY3Rvci9KYXZhU2NyaXB0Q2FsbEZyYW1lLmlkbCBcCkBA
IC0yMjkzLDYgKzIyOTYsNyBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQ3VzdG9tLmNwcCBcCiAJU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDYW52YXNSZW5kZXJpbmdDb250ZXh0Q3VzdG9tLmNw
cCBcCiAJU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDbGlwYm9hcmRDdXN0b20uY3BwIFwK
KwlTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NvbW1hbmRMaW5lQVBJSG9zdEN1c3RvbS5j
cHAgXAogCVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3J5cHRvQ3VzdG9tLmNwcCBcCiAJ
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDdXN0b21TUUxTdGF0ZW1lbnRFcnJvckNhbGxi
YWNrLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDdXN0b21YUGF0aE5TUmVz
b2x2ZXIuY3BwIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1VzZUpTQy5jbWFrZSBiL1Nv
dXJjZS9XZWJDb3JlL1VzZUpTQy5jbWFrZQppbmRleCA2Mzg0NTk4Li4yMmI0ZjZjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Vc2VKU0MuY21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvVXNl
SlNDLmNtYWtlCkBAIC0zOSw2ICszOSw3IEBAIGxpc3QoQVBQRU5EIFdlYkNvcmVfU09VUkNFUwog
ICAgIGJpbmRpbmdzL2pzL0pTQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQ3VzdG9tLmNwcAogICAg
IGJpbmRpbmdzL2pzL0pTQ2FudmFzUmVuZGVyaW5nQ29udGV4dEN1c3RvbS5jcHAKICAgICBiaW5k
aW5ncy9qcy9KU0NsaXBib2FyZEN1c3RvbS5jcHAKKyAgICBiaW5kaW5ncy9qcy9KU0NvbW1hbmRM
aW5lQVBJSG9zdEN1c3RvbS5jcHAKICAgICBiaW5kaW5ncy9qcy9KU0NyeXB0b0N1c3RvbS5jcHAK
ICAgICBiaW5kaW5ncy9qcy9KU0N1c3RvbVhQYXRoTlNSZXNvbHZlci5jcHAKICAgICBiaW5kaW5n
cy9qcy9KU0RpY3Rpb25hcnkuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
LnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9q
L1dlYkNvcmUudmN4cHJvagppbmRleCAzZWZmYTA5Li5kZTE0ZDBiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2oKQEAgLTk3Myw2ICs5NzMsMjAg
QEAKICAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24p
fCQoUGxhdGZvcm0pJz09J1Byb2R1Y3Rpb258V2luMzInIj50cnVlPC9FeGNsdWRlZEZyb21CdWls
ZD4KICAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24p
fCQoUGxhdGZvcm0pJz09J1Byb2R1Y3Rpb258eDY0JyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+
CiAgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRp
b25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcJChQcm9qZWN0TmFtZSlcRGVy
aXZlZFNvdXJjZXNcSlNDb21tYW5kTGluZUFQSUhvc3QuY3BwIj4KKyAgICAgIDxFeGNsdWRlZEZy
b21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVn
fFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CisgICAgICA8RXhjbHVkZWRGcm9tQnVp
bGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQn
Ij50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KKyAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25k
aXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnX1dpbkNhaXJvfFdp
bjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CisgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQg
Q29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z19XaW5DYWly
b3x4NjQnIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KKyAgICAgIDxFeGNsdWRlZEZyb21CdWls
ZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnU3VmZml4
fFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CisgICAgICA8RXhjbHVkZWRGcm9tQnVp
bGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z1N1ZmZp
eHx4NjQnIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KKyAgICAgIDxFeGNsdWRlZEZyb21CdWls
ZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2lu
MzInIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KKyAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBD
b25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+
dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CisgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0
aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlX1dpbkNhaXJvfFdp
bjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CisgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQg
Q29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlX1dpbkNh
aXJvfHg2NCciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgorICAgICAgPEV4Y2x1ZGVkRnJvbUJ1
aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUHJvZHVjdGlv
bnxXaW4zMiciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgorICAgICAgPEV4Y2x1ZGVkRnJvbUJ1
aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUHJvZHVjdGlv
bnx4NjQnIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KKyAgICA8L0NsQ29tcGlsZT4KICAgICA8
Q2xDb21waWxlIEluY2x1ZGU9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmokKFBsYXRmb3Jt
QXJjaGl0ZWN0dXJlKVwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xKU0NvbW1lbnQuY3Bw
Ij4KICAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24p
fCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CiAg
ICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBs
YXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KQEAgLTE1OTEx
LDYgKzE1OTI1LDIwIEBACiAgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChD
b25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQcm9kdWN0aW9ufFdpbjMyJyI+dHJ1ZTwvRXhj
bHVkZWRGcm9tQnVpbGQ+CiAgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChD
b25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQcm9kdWN0aW9ufHg2NCciPnRydWU8L0V4Y2x1
ZGVkRnJvbUJ1aWxkPgogICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0i
Li5cYmluZGluZ3NcanNcSlNDb21tYW5kTGluZUFQSUhvc3RDdXN0b20uY3BwIj4KKyAgICAgIDxF
eGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0p
Jz09J0RlYnVnfFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CisgICAgICA8RXhjbHVk
ZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdE
ZWJ1Z3x4NjQnIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KKyAgICAgIDxFeGNsdWRlZEZyb21C
dWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnX1dp
bkNhaXJvfFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CisgICAgICA8RXhjbHVkZWRG
cm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1
Z19XaW5DYWlyb3x4NjQnIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KKyAgICAgIDxFeGNsdWRl
ZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0Rl
YnVnU3VmZml4fFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CisgICAgICA8RXhjbHVk
ZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdE
ZWJ1Z1N1ZmZpeHx4NjQnIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KKyAgICAgIDxFeGNsdWRl
ZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1Jl
bGVhc2V8V2luMzInIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KKyAgICAgIDxFeGNsdWRlZEZy
b21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVh
c2V8eDY0JyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CisgICAgICA8RXhjbHVkZWRGcm9tQnVp
bGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlX1dp
bkNhaXJvfFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CisgICAgICA8RXhjbHVkZWRG
cm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxl
YXNlX1dpbkNhaXJvfHg2NCciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgorICAgICAgPEV4Y2x1
ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0n
UHJvZHVjdGlvbnxXaW4zMiciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgorICAgICAgPEV4Y2x1
ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0n
UHJvZHVjdGlvbnx4NjQnIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KKyAgICA8L0NsQ29tcGls
ZT4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGJpbmRpbmdzXGpzXEpTQ1NTUnVsZUN1c3Rv
bS5jcHAiPgogICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJh
dGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj50cnVlPC9FeGNsdWRlZEZyb21CdWls
ZD4KICAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24p
fCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgpAQCAt
MTgxMzUsNiArMTgxNjMsNyBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChDb25maWd1cmF0
aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJvamVjdE5hbWUpXERl
cml2ZWRTb3VyY2VzXEpTQ2xpZW50UmVjdC5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0i
JChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJv
amVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEpTQ2xpZW50UmVjdExpc3QuaCIgLz4KICAgICA8Q2xJ
bmNsdWRlIEluY2x1ZGU9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmokKFBsYXRmb3JtQXJj
aGl0ZWN0dXJlKVwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xKU0NsaXBib2FyZC5oIiAv
PgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQo
UGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEpTQ29t
bWFuZExpbmVBUElIb3N0LmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKENvbmZpZ3Vy
YXRpb25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcJChQcm9qZWN0TmFtZSlc
RGVyaXZlZFNvdXJjZXNcSlNDb21tZW50LmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIk
KENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcJChQcm9q
ZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSlNDb21wb3NpdGlvbkV2ZW50LmgiIC8+CiAgICAgPENs
SW5jbHVkZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFy
Y2hpdGVjdHVyZSlcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSlNDb25zb2xlLmgiIC8+
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hw
cm9qLmZpbHRlcnMgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hw
cm9qLmZpbHRlcnMKaW5kZXggY2FlMDVhNi4uOWNmMzIwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvai5maWx0ZXJzCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2ouZmlsdGVycwpAQCAtNDMx
Nyw2ICs0MzE3LDkgQEAKICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGJpbmRpbmdzXGpzXEpT
Q2xpcGJvYXJkQ3VzdG9tLmNwcCI+CiAgICAgICA8RmlsdGVyPmJpbmRpbmdzXGpzPC9GaWx0ZXI+
CiAgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxiaW5kaW5nc1xq
c1xKU0NvbW1hbmRMaW5lQVBJSG9zdEN1c3RvbS5jcHAiPgorICAgICAgPEZpbHRlcj5iaW5kaW5n
c1xqczwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0i
Li5cYmluZGluZ3NcanNcSlNDU1NSdWxlQ3VzdG9tLmNwcCI+CiAgICAgICA8RmlsdGVyPmJpbmRp
bmdzXGpzPC9GaWx0ZXI+CiAgICAgPC9DbENvbXBpbGU+CkBAIC01MzI5LDYgKzUzMzIsOSBAQAog
ICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxh
dGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEpTQ2xpcGJv
YXJkLmNwcCI+CiAgICAgICA8RmlsdGVyPkRlcml2ZWRTb3VyY2VzPC9GaWx0ZXI+CiAgICAgPC9D
bENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRpb25CdWlsZERp
cilcb2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJj
ZXNcSlNDb21tYW5kTGluZUFQSUhvc3QuY3BwIj4KKyAgICAgIDxGaWx0ZXI+RGVyaXZlZFNvdXJj
ZXM8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQo
Q29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVwkKFByb2pl
Y3ROYW1lKVxEZXJpdmVkU291cmNlc1xKU0NvbW1lbnQuY3BwIj4KICAgICAgIDxGaWx0ZXI+RGVy
aXZlZFNvdXJjZXM8L0ZpbHRlcj4KICAgICA8L0NsQ29tcGlsZT4KQEAgLTEzMTQxLDYgKzEzMTQ3
LDkgQEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxv
YmokKFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xK
U0NsaXBib2FyZC5oIj4KICAgICAgIDxGaWx0ZXI+RGVyaXZlZFNvdXJjZXM8L0ZpbHRlcj4KICAg
ICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoQ29uZmlndXJhdGlvbkJ1
aWxkRGlyKVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVwkKFByb2plY3ROYW1lKVxEZXJpdmVk
U291cmNlc1xKU0NvbW1hbmRMaW5lQVBJSG9zdC5oIj4KKyAgICAgIDxGaWx0ZXI+RGVyaXZlZFNv
dXJjZXM8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9
IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVwkKFBy
b2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xKU0NvbW1lbnQuaCI+CiAgICAgICA8RmlsdGVyPkRl
cml2ZWRTb3VyY2VzPC9GaWx0ZXI+CiAgICAgPC9DbEluY2x1ZGU+CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggZGI5YmE1MS4uOTI3
OTFmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagpAQCAtMzUzNCw2ICszNTM0LDExIEBACiAJCUE1ODRGRTJDMTg2Mzg3MEYwMDg0M0Ix
MCAvKiBDb21tYW5kTGluZUFQSU1vZHVsZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQTU4NEZFMkExODYzODcwRjAwODQzQjEwIC8qIENvbW1hbmRMaW5l
QVBJTW9kdWxlLmggKi87IH07CiAJCUE1ODRGRTJGMTg2NENCODQwMDg0M0IxMCAvKiBQYWdlSW5q
ZWN0ZWRTY3JpcHRNYW5hZ2VyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEE1ODRGRTJEMTg2NENCODQwMDg0M0IxMCAvKiBQYWdlSW5qZWN0ZWRTY3Jp
cHRNYW5hZ2VyLmNwcCAqLzsgfTsKIAkJQTU4NEZFMzAxODY0Q0I4NDAwODQzQjEwIC8qIFBhZ2VJ
bmplY3RlZFNjcmlwdE1hbmFnZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEE1ODRGRTJFMTg2NENCODQwMDg0M0IxMCAvKiBQYWdlSW5qZWN0ZWRTY3Jp
cHRNYW5hZ2VyLmggKi87IH07CisJCUE1ODRGRTM0MTg2NEQ1QUYwMDg0M0IxMCAvKiBDb21tYW5k
TGluZUFQSUhvc3QuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQTU4NEZFMzExODY0RDVBRjAwODQzQjEwIC8qIENvbW1hbmRMaW5lQVBJSG9zdC5jcHAg
Ki87IH07CisJCUE1ODRGRTM1MTg2NEQ1QUYwMDg0M0IxMCAvKiBDb21tYW5kTGluZUFQSUhvc3Qu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1ODRGRTMy
MTg2NEQ1QUYwMDg0M0IxMCAvKiBDb21tYW5kTGluZUFQSUhvc3QuaCAqLzsgfTsKKwkJQTU4NEZF
MzgxODY0REFDMTAwODQzQjEwIC8qIEpTQ29tbWFuZExpbmVBUElIb3N0Q3VzdG9tLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1ODRGRTM3MTg2NERB
QzEwMDg0M0IxMCAvKiBKU0NvbW1hbmRMaW5lQVBJSG9zdEN1c3RvbS5jcHAgKi87IH07CisJCUE1
ODRGRTNCMTg2NEUyRDgwMDg0M0IxMCAvKiBKU0NvbW1hbmRMaW5lQVBJSG9zdC5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTg0RkUzOTE4NjRFMkQ4
MDA4NDNCMTAgLyogSlNDb21tYW5kTGluZUFQSUhvc3QuY3BwICovOyB9OworCQlBNTg0RkUzQzE4
NjRFMkQ4MDA4NDNCMTAgLyogSlNDb21tYW5kTGluZUFQSUhvc3QuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1ODRGRTNBMTg2NEUyRDgwMDg0M0IxMCAv
KiBKU0NvbW1hbmRMaW5lQVBJSG9zdC5oICovOyB9OwogCQlBNTkzQ0Y4QjE4NDA1MzUyMDBCRkNF
MjcgLyogSW5zcGVjdG9yV2ViQWdlbnRCYXNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBBNTkzQ0Y4QTE4NDA1MzUyMDBCRkNFMjcgLyogSW5zcGVjdG9y
V2ViQWdlbnRCYXNlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJQTVBMkFGMEIxODI5NzM0MzAwREUxNzI5IC8qIFBhZ2VEZWJ1Z2dhYmxlLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1QTJBRjA5MTgy
OTczNDMwMERFMTcyOSAvKiBQYWdlRGVidWdnYWJsZS5jcHAgKi87IH07CiAJCUE1QTJBRjBDMTgy
OTczNDMwMERFMTcyOSAvKiBQYWdlRGVidWdnYWJsZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTVBMkFGMEExODI5NzM0MzAwREUxNzI5IC8qIFBhZ2VE
ZWJ1Z2dhYmxlLmggKi87IH07CkBAIC0xMDM3NSw2ICsxMDM4MCwxMiBAQAogCQlBNTg0RkUyQTE4
NjM4NzBGMDA4NDNCMTAgLyogQ29tbWFuZExpbmVBUElNb2R1bGUuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gQ29tbWFuZExpbmVBUElNb2R1bGUuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJQTU4NEZFMkQxODY0Q0I4NDAwODQzQjEwIC8qIFBhZ2VJbmplY3RlZFNj
cmlwdE1hbmFnZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUGFn
ZUluamVjdGVkU2NyaXB0TWFuYWdlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUE1ODRGRTJFMTg2NENCODQwMDg0M0IxMCAvKiBQYWdlSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBhZ2VJbmplY3RlZFNjcmlwdE1hbmFn
ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTU4NEZFMzExODY0RDVBRjAwODQz
QjEwIC8qIENvbW1hbmRMaW5lQVBJSG9zdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBDb21tYW5kTGluZUFQSUhvc3QuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQlBNTg0RkUzMjE4NjRENUFGMDA4NDNCMTAgLyogQ29tbWFuZExpbmVBUElIb3N0Lmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvbW1hbmRMaW5lQVBJSG9zdC5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBNTg0RkUzMzE4NjRENUFGMDA4NDNCMTAgLyog
Q29tbWFuZExpbmVBUElIb3N0LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBDb21tYW5kTGlu
ZUFQSUhvc3QuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBNTg0RkUzNzE4NjRE
QUMxMDA4NDNCMTAgLyogSlNDb21tYW5kTGluZUFQSUhvc3RDdXN0b20uY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNDb21tYW5kTGluZUFQSUhvc3RDdXN0b20uY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBNTg0RkUzOTE4NjRFMkQ4MDA4NDNCMTAg
LyogSlNDb21tYW5kTGluZUFQSUhvc3QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gSlNDb21tYW5kTGluZUFQSUhvc3QuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQlBNTg0RkUzQTE4NjRFMkQ4MDA4NDNCMTAgLyogSlNDb21tYW5kTGluZUFQSUhvc3Qu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNDb21tYW5kTGluZUFQSUhvc3Qu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTU5M0NGNzIxODQwMkNFOTAwQkZDRTI3
IC8qIHByb3RvY29sICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gZm9sZGVyOyBwYXRoID0gcHJvdG9jb2w7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUE1OTNDRjc1MTg0MDJENEIwMEJGQ0UyNyAvKiBjb21iaW5lLWphdmFzY3JpcHQtcmVzb3Vy
Y2VzLnBsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
dGV4dC5zY3JpcHQucGVybDsgcGF0aCA9ICJjb21iaW5lLWphdmFzY3JpcHQtcmVzb3VyY2VzLnBs
Ijsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTU5M0NGOEExODQwNTM1MjAwQkZDRTI3
IC8qIEluc3BlY3RvcldlYkFnZW50QmFzZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBJbnNwZWN0b3JXZWJBZ2VudEJhc2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
QEAgLTE0NDg3LDYgKzE0NDk4LDggQEAKIAkJCQk0RjRGNUZGQzExQ0JEMzAxMDBBMTg2QkYgLyog
SW5zcGVjdG9yV2ViRnJvbnRlbmREaXNwYXRjaGVycy5oICovLAogCQkJCTU3M0QxMzQ1MTRDRTM5
RkYwMDU3QUJDQSAvKiBJbnNwZWN0b3JXZWJUeXBlQnVpbGRlcnMuY3BwICovLAogCQkJCTU3M0Qx
MzQ2MTRDRTM5RkYwMDU3QUJDQSAvKiBJbnNwZWN0b3JXZWJUeXBlQnVpbGRlcnMuaCAqLywKKwkJ
CQlBNTg0RkUzOTE4NjRFMkQ4MDA4NDNCMTAgLyogSlNDb21tYW5kTGluZUFQSUhvc3QuY3BwICov
LAorCQkJCUE1ODRGRTNBMTg2NEUyRDgwMDg0M0IxMCAvKiBKU0NvbW1hbmRMaW5lQVBJSG9zdC5o
ICovLAogCQkJCTdBMEU3NkQ4MTBCRjA1OTgwMEEwMjc2RSAvKiBKU0luamVjdGVkU2NyaXB0SG9z
dC5jcHAgKi8sCiAJCQkJN0EwRTc2RDkxMEJGMDU5ODAwQTAyNzZFIC8qIEpTSW5qZWN0ZWRTY3Jp
cHRIb3N0LmggKi8sCiAJCQkJN0EwRTc3MUMxMEMwMERCMTAwQTAyNzZFIC8qIEpTSW5zcGVjdG9y
RnJvbnRlbmRIb3N0LmNwcCAqLywKQEAgLTE0NTA4LDYgKzE0NTIxLDkgQEAKIAkJCQlBNTE4MjI1
MzE3RTI4Q0YxMDBBOUJBMUQgLyogU2NyaXB0cyAqLywKIAkJCQlBNTkzQ0Y3NTE4NDAyRDRCMDBC
RkNFMjcgLyogY29tYmluZS1qYXZhc2NyaXB0LXJlc291cmNlcy5wbCAqLywKIAkJCQlGMzVBRTVB
QjE0OTI1RjVCMDA0RDU3NzYgLyogQmluZGluZ1Zpc2l0b3JzLmggKi8sCisJCQkJQTU4NEZFMzEx
ODY0RDVBRjAwODQzQjEwIC8qIENvbW1hbmRMaW5lQVBJSG9zdC5jcHAgKi8sCisJCQkJQTU4NEZF
MzIxODY0RDVBRjAwODQzQjEwIC8qIENvbW1hbmRMaW5lQVBJSG9zdC5oICovLAorCQkJCUE1ODRG
RTMzMTg2NEQ1QUYwMDg0M0IxMCAvKiBDb21tYW5kTGluZUFQSUhvc3QuaWRsICovLAogCQkJCUE1
ODRGRTI5MTg2Mzg3MEYwMDg0M0IxMCAvKiBDb21tYW5kTGluZUFQSU1vZHVsZS5jcHAgKi8sCiAJ
CQkJQTU4NEZFMkExODYzODcwRjAwODQzQjEwIC8qIENvbW1hbmRMaW5lQVBJTW9kdWxlLmggKi8s
CiAJCQkJQTU4NEZFMjcxODYzN0RDQTAwODQzQjEwIC8qIENvbW1hbmRMaW5lQVBJTW9kdWxlU291
cmNlLmpzICovLApAQCAtMTk4MTIsNiArMTk4MjgsNyBAQAogCQkJCTQ5RUVEMTREMTA1MTk3MUEw
MDA5OUZBQiAvKiBKU0NhbnZhc1JlbmRlcmluZ0NvbnRleHRDdXN0b20uY3BwICovLAogCQkJCTkz
QkE1OUIxMEYyQUE1RkUwMDhFOEU5OSAvKiBKU0NEQVRBU2VjdGlvbkN1c3RvbS5jcHAgKi8sCiAJ
CQkJQkNBODNFNTEwRDdDRTIwNTAwMzQyMUE4IC8qIEpTQ2xpcGJvYXJkQ3VzdG9tLmNwcCAqLywK
KwkJCQlBNTg0RkUzNzE4NjREQUMxMDA4NDNCMTAgLyogSlNDb21tYW5kTGluZUFQSUhvc3RDdXN0
b20uY3BwICovLAogCQkJCTIwOUI0NTZBMTY3OTZBN0UwMEU1NEU0RSAvKiBKU0NyeXB0b0N1c3Rv
bS5jcHAgKi8sCiAJCQkJRTE1N0E4RTYxODE4NEM2NzAwOUY4MjFEIC8qIEpTQ3J5cHRvS2V5Q3Vz
dG9tLmNwcCAqLywKIAkJCQlFMUY4MEI4OTE4MzE3MkEyMDA3ODg1QzMgLyogSlNDcnlwdG9LZXlQ
YWlyQ3VzdG9tLmNwcCAqLywKQEAgLTIyNjkyLDYgKzIyNzA5LDcgQEAKIAkJCQk4NTAzMkRFOTBB
QThDOUJFMDA3RDNCN0QgLyogRE9NQ1NTVW5rbm93blJ1bGUuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTg1OTA5Q0U0MEFDQzdBN0UwMERGMDFGMSAvKiBET01DU1NVbmtub3duUnVsZUludGVybmFsLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk4NThDMzgxQzBBQThFMjk2MDBCMTg3QTQgLyogRE9NQ1NTVmFs
dWUuaCBpbiBIZWFkZXJzICovLAorCQkJCUE1ODRGRTM1MTg2NEQ1QUYwMDg0M0IxMCAvKiBDb21t
YW5kTGluZUFQSUhvc3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTg1QjQ5OEYzMEFEQjMzNkEwMDky
NUNCQiAvKiBET01DU1NWYWx1ZUludGVybmFsLmggaW4gSGVhZGVycyAqLywKIAkJCQk4NThDMzgz
QzBBQThFRDgyMDBCMTg3QTQgLyogRE9NQ1NTVmFsdWVMaXN0LmggaW4gSGVhZGVycyAqLywKIAkJ
CQk4NTkwOUQyQjBBQ0M3RDU1MDBERjAxRjEgLyogRE9NQ1NTVmFsdWVMaXN0SW50ZXJuYWwuaCBp
biBIZWFkZXJzICovLApAQCAtMjQwNTEsNiArMjQwNjksNyBAQAogCQkJCUY5MTZDNDhFMERCNTEw
RjgwMDc2Q0Q4MyAvKiBKU1hNTEh0dHBSZXF1ZXN0UHJvZ3Jlc3NFdmVudC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQkNERkQ0OTYwRTMwNTkyRjAwOUQxMEFEIC8qIEpTWE1MSHR0cFJlcXVlc3RVcGxv
YWQuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBQ0U1M0Y3MEE4RDE5NDcwMDIyOTQ3RCAvKiBKU1hN
TFNlcmlhbGl6ZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCUE1ODRGRTNDMTg2NEUyRDgwMDg0M0Ix
MCAvKiBKU0NvbW1hbmRMaW5lQVBJSG9zdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUE3NjJDNzQw
QTA3NEYyNjAwOTg5RjVCIC8qIEpTWFBhdGhFdmFsdWF0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUUxNTdBOEVEMTgxODUxQUMwMDlGODIxRCAvKiBDcnlwdG9BbGdvcml0aG1EZXNjcmlwdGlvbkJ1
aWxkZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDNjBEQjRBMEQyQTNEMUUwMEI5OTE4RiAvKiBK
U1hQYXRoRXhjZXB0aW9uLmggaW4gSGVhZGVycyAqLywKQEAgLTI1OTIyLDYgKzI1OTQxLDcgQEAK
IAkJCQk0QUNCQzBCRTEyNzEzQ0JEMDA5NEY5QjIgLyogQ2xhc3NMaXN0LmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCUJDOTA0Qjc2MEQxMDk5OEYwMDY4MEQzMiAvKiBDbGFzc05vZGVMaXN0LmNwcCBp
biBTb3VyY2VzICovLAogCQkJCUJDQzA2NTdEMEYzQ0UxQjcwMENEMkQ4NyAvKiBDbGllbnRSZWN0
LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUE1ODRGRTM0MTg2NEQ1QUYwMDg0M0IxMCAvKiBDb21t
YW5kTGluZUFQSUhvc3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkNDMDY1ODAwRjNDRTFCNzAw
Q0QyRDg3IC8qIENsaWVudFJlY3RMaXN0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE3ODQ5NDFC
MEI1RkU1MDcwMDFFMjM3QSAvKiBDbGlwYm9hcmQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJODUw
MzFCM0YwQTQ0RUZDNzAwRjk5MkUwIC8qIENsaXBib2FyZEV2ZW50LmNwcCBpbiBTb3VyY2VzICov
LApAQCAtMjYwNDcsNiArMjYwNjcsNyBAQAogCQkJCTUwRDQwNUY5MTQ3RDMxRjMwMEQzMEJCNSAv
KiBDdXN0b21GaWx0ZXJNZXNoLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUUxQzI2NkRFMTgzMTlG
MzEwMDNGOEIzMyAvKiBDcnlwdG9LZXlEYXRhUlNBQ29tcG9uZW50cy5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQk3RTEyRTkxMDE1RkE1RDNBMDA1RTQxMjYgLyogQ3VzdG9tRmlsdGVyTWVzaEdlbmVy
YXRvci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlBNTg0RkUzQjE4NjRFMkQ4MDA4NDNCMTAgLyog
SlNDb21tYW5kTGluZUFQSUhvc3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTBDQzBBMzkxNEM2
RjVCMTAwMTdBQjUxIC8qIEN1c3RvbUZpbHRlck9wZXJhdGlvbi5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQk1MDkzMzM0RjE2M0IwRTQzMDAwOTlBNjAgLyogQ3VzdG9tRmlsdGVyUGFyYW1ldGVyTGlz
dC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MDNEMENBQTE0QjVCMDg3MDBGMzJGNTcgLyogQ3Vz
dG9tRmlsdGVyUHJvZ3JhbS5jcHAgaW4gU291cmNlcyAqLywKQEAgLTI2NzUwLDYgKzI2NzcxLDcg
QEAKIAkJCQk4Mjg4OUI0QzEzQzYyMzkyMDA5QTYxNTYgLyogSW5zcGVjdG9yU3R5bGVUZXh0RWRp
dG9yLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTA3Mjc3RTRFMTdEMDE4Q0MwMDE1NTM0RCAvKiBK
U01lZGlhU3RyZWFtQXVkaW9EZXN0aW5hdGlvbk5vZGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
NzU0MTMzQUExMDJFMDBGNDAwMDc1RDAwIC8qIEluc3BlY3RvclRpbWVsaW5lQWdlbnQuY3BwIGlu
IFNvdXJjZXMgKi8sCisJCQkJQTU4NEZFMzgxODY0REFDMTAwODQzQjEwIC8qIEpTQ29tbWFuZExp
bmVBUElIb3N0Q3VzdG9tLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTU3M0QxMzQ3MTRDRTM5RkYw
MDU3QUJDQSAvKiBJbnNwZWN0b3JXZWJUeXBlQnVpbGRlcnMuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJRjM4MTBDMUIxMzY1QTQ5NjAwRUQ2RTMzIC8qIEluc3BlY3RvcldvcmtlckFnZW50LmNwcCBp
biBTb3VyY2VzICovLAogCQkJCUYzNTBCNzM1MTNGMTM3N0QwMDg4MEM0MyAvKiBJbnN0cnVtZW50
aW5nQWdlbnRzLmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNCaW5kaW5nc0FsbEluT25lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTQmluZGluZ3NBbGxJbk9uZS5jcHAKaW5kZXggYTMwZjc5ZS4uYWI3ZTg2YSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNCaW5kaW5nc0FsbEluT25lLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0JpbmRpbmdzQWxsSW5PbmUuY3Bw
CkBAIC00Myw2ICs0Myw3IEBACiAjaW5jbHVkZSAiSlNDYWxsYmFja0RhdGEuY3BwIgogI2luY2x1
ZGUgIkpTQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQ3VzdG9tLmNwcCIKICNpbmNsdWRlICJKU0Nh
bnZhc1JlbmRlcmluZ0NvbnRleHRDdXN0b20uY3BwIgorI2luY2x1ZGUgIkpTQ29tbWFuZExpbmVB
UElIb3N0Q3VzdG9tLmNwcCIKICNpbmNsdWRlICJKU0NsaXBib2FyZEN1c3RvbS5jcHAiCiAjaW5j
bHVkZSAiSlNDcnlwdG9DdXN0b20uY3BwIgogI2luY2x1ZGUgIkpTQ3VzdG9tU1FMU3RhdGVtZW50
RXJyb3JDYWxsYmFjay5jcHAiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0NvbW1hbmRMaW5lQVBJSG9zdEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0NvbW1hbmRMaW5lQVBJSG9zdEN1c3RvbS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMC4uYmUwYWUyNwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTQ29tbWFuZExpbmVBUElIb3N0Q3VzdG9tLmNwcApAQCAtMCwwICsxLDE3
MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNywgMjAwOCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDggTWF0dCBMaWxlayA8d2Via2l0QG1h
dHRsaWxlay5jb20+CisgKiBDb3B5cmlnaHQgKEMpIDIwMTAtMjAxMSBHb29nbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICog
bWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1l
IG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5
IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICog
dGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVS
UyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENP
UFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAq
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lmIEVOQUJMRShJTlNQRUNUT1Ip
CisKKyNpbmNsdWRlICJKU0NvbW1hbmRMaW5lQVBJSG9zdC5oIgorCisjaW5jbHVkZSAiQ29tbWFu
ZExpbmVBUElIb3N0LmgiCisjaW5jbHVkZSAiSW5zcGVjdG9yRE9NQWdlbnQuaCIKKyNpbmNsdWRl
ICJKU0V2ZW50TGlzdGVuZXIuaCIKKyNpbmNsdWRlICJKU05vZGUuaCIKKyNpbmNsdWRlICJKU1N0
b3JhZ2UuaCIKKyNpbmNsdWRlICJTdG9yYWdlLmgiCisjaW5jbHVkZSA8YmluZGluZ3MvU2NyaXB0
VmFsdWUuaD4KKyNpbmNsdWRlIDxpbnNwZWN0b3IvSW5zcGVjdG9yVmFsdWVzLmg+CisjaW5jbHVk
ZSA8cGFyc2VyL1NvdXJjZUNvZGUuaD4KKyNpbmNsdWRlIDxydW50aW1lL0pTQXJyYXkuaD4KKyNp
bmNsdWRlIDxydW50aW1lL0pTRnVuY3Rpb24uaD4KKyNpbmNsdWRlIDxydW50aW1lL0pTTG9jay5o
PgorI2luY2x1ZGUgPHJ1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3IuaD4KKworI2lmIEVOQUJMRShT
UUxfREFUQUJBU0UpCisjaW5jbHVkZSAiRGF0YWJhc2UuaCIKKyNpbmNsdWRlICJKU0RhdGFiYXNl
LmgiCisjZW5kaWYKKwordXNpbmcgbmFtZXNwYWNlIEpTQzsKKworbmFtZXNwYWNlIFdlYkNvcmUg
eworCitKU1ZhbHVlIEpTQ29tbWFuZExpbmVBUElIb3N0OjppbnNwZWN0ZWRPYmplY3QoRXhlY1N0
YXRlKiBleGVjKQoreworICAgIGlmIChleGVjLT5hcmd1bWVudENvdW50KCkgPCAxKQorICAgICAg
ICByZXR1cm4ganNVbmRlZmluZWQoKTsKKworICAgIENvbW1hbmRMaW5lQVBJSG9zdDo6SW5zcGVj
dGFibGVPYmplY3QqIG9iamVjdCA9IGltcGwoKS5pbnNwZWN0ZWRPYmplY3QoZXhlYy0+dW5jaGVj
a2VkQXJndW1lbnQoMCkudG9JbnQzMihleGVjKSk7CisgICAgaWYgKCFvYmplY3QpCisgICAgICAg
IHJldHVybiBqc1VuZGVmaW5lZCgpOworCisgICAgSlNMb2NrSG9sZGVyIGxvY2soZXhlYyk7Cisg
ICAgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUgc2NyaXB0VmFsdWUgPSBvYmplY3QtPmdldChleGVj
KTsKKyAgICBpZiAoc2NyaXB0VmFsdWUuaGFzTm9WYWx1ZSgpKQorICAgICAgICByZXR1cm4ganNV
bmRlZmluZWQoKTsKKworICAgIHJldHVybiBzY3JpcHRWYWx1ZS5qc1ZhbHVlKCk7Cit9CisKK3N0
YXRpYyBKU0FycmF5KiBnZXRKU0xpc3RlbmVyRnVuY3Rpb25zKEV4ZWNTdGF0ZSogZXhlYywgRG9j
dW1lbnQqIGRvY3VtZW50LCBjb25zdCBFdmVudExpc3RlbmVySW5mbyYgbGlzdGVuZXJJbmZvKQor
eworICAgIEpTQXJyYXkqIHJlc3VsdCA9IGNvbnN0cnVjdEVtcHR5QXJyYXkoZXhlYywgbnVsbHB0
cik7CisgICAgc2l6ZV90IGhhbmRsZXJzQ291bnQgPSBsaXN0ZW5lckluZm8uZXZlbnRMaXN0ZW5l
clZlY3Rvci5zaXplKCk7CisgICAgZm9yIChzaXplX3QgaSA9IDAsIG91dHB1dEluZGV4ID0gMDsg
aSA8IGhhbmRsZXJzQ291bnQ7ICsraSkgeworICAgICAgICBjb25zdCBKU0V2ZW50TGlzdGVuZXIq
IGpzTGlzdGVuZXIgPSBKU0V2ZW50TGlzdGVuZXI6OmNhc3QobGlzdGVuZXJJbmZvLmV2ZW50TGlz
dGVuZXJWZWN0b3JbaV0ubGlzdGVuZXIuZ2V0KCkpOworICAgICAgICBpZiAoIWpzTGlzdGVuZXIp
IHsKKyAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAgICAgY29udGlu
dWU7CisgICAgICAgIH0KKworICAgICAgICAvLyBIaWRlIGxpc3RlbmVycyBmcm9tIG90aGVyIGNv
bnRleHRzLgorICAgICAgICBpZiAoJmpzTGlzdGVuZXItPmlzb2xhdGVkV29ybGQoKSAhPSAmY3Vy
cmVudFdvcmxkKGV4ZWMpKQorICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgSlNPYmpl
Y3QqIGZ1bmN0aW9uID0ganNMaXN0ZW5lci0+anNGdW5jdGlvbihkb2N1bWVudCk7CisgICAgICAg
IGlmICghZnVuY3Rpb24pCisgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICBKU09iamVj
dCogbGlzdGVuZXJFbnRyeSA9IGNvbnN0cnVjdEVtcHR5T2JqZWN0KGV4ZWMpOworICAgICAgICBs
aXN0ZW5lckVudHJ5LT5wdXREaXJlY3QoZXhlYy0+dm0oKSwgSWRlbnRpZmllcihleGVjLCAibGlz
dGVuZXIiKSwgZnVuY3Rpb24pOworICAgICAgICBsaXN0ZW5lckVudHJ5LT5wdXREaXJlY3QoZXhl
Yy0+dm0oKSwgSWRlbnRpZmllcihleGVjLCAidXNlQ2FwdHVyZSIpLCBqc0Jvb2xlYW4obGlzdGVu
ZXJJbmZvLmV2ZW50TGlzdGVuZXJWZWN0b3JbaV0udXNlQ2FwdHVyZSkpOworICAgICAgICByZXN1
bHQtPnB1dERpcmVjdEluZGV4KGV4ZWMsIG91dHB1dEluZGV4KyssIEpTVmFsdWUobGlzdGVuZXJF
bnRyeSkpOworICAgIH0KKyAgICByZXR1cm4gcmVzdWx0OworfQorCitKU1ZhbHVlIEpTQ29tbWFu
ZExpbmVBUElIb3N0OjpnZXRFdmVudExpc3RlbmVycyhFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAg
aWYgKGV4ZWMtPmFyZ3VtZW50Q291bnQoKSA8IDEpCisgICAgICAgIHJldHVybiBqc1VuZGVmaW5l
ZCgpOworCisgICAgSlNWYWx1ZSB2YWx1ZSA9IGV4ZWMtPnVuY2hlY2tlZEFyZ3VtZW50KDApOwor
ICAgIGlmICghdmFsdWUuaXNPYmplY3QoKSB8fCB2YWx1ZS5pc051bGwoKSkKKyAgICAgICAgcmV0
dXJuIGpzVW5kZWZpbmVkKCk7CisKKyAgICBOb2RlKiBub2RlID0gdG9Ob2RlKHZhbHVlKTsKKyAg
ICBpZiAoIW5vZGUpCisgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOworCisgICAgVmVjdG9y
PEV2ZW50TGlzdGVuZXJJbmZvPiBsaXN0ZW5lcnNBcnJheTsKKyAgICBpbXBsKCkuZ2V0RXZlbnRM
aXN0ZW5lcnNJbXBsKG5vZGUsIGxpc3RlbmVyc0FycmF5KTsKKworICAgIEpTT2JqZWN0KiByZXN1
bHQgPSBjb25zdHJ1Y3RFbXB0eU9iamVjdChleGVjKTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsg
aSA8IGxpc3RlbmVyc0FycmF5LnNpemUoKTsgKytpKSB7CisgICAgICAgIEpTQXJyYXkqIGxpc3Rl
bmVycyA9IGdldEpTTGlzdGVuZXJGdW5jdGlvbnMoZXhlYywgJm5vZGUtPmRvY3VtZW50KCksIGxp
c3RlbmVyc0FycmF5W2ldKTsKKyAgICAgICAgaWYgKCFsaXN0ZW5lcnMtPmxlbmd0aCgpKQorICAg
ICAgICAgICAgY29udGludWU7CisgICAgICAgIEF0b21pY1N0cmluZyBldmVudFR5cGUgPSBsaXN0
ZW5lcnNBcnJheVtpXS5ldmVudFR5cGU7CisgICAgICAgIHJlc3VsdC0+cHV0RGlyZWN0KGV4ZWMt
PnZtKCksIElkZW50aWZpZXIoZXhlYywgZXZlbnRUeXBlLmltcGwoKSksIEpTVmFsdWUobGlzdGVu
ZXJzKSk7CisgICAgfQorCisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworSlNWYWx1ZSBKU0NvbW1h
bmRMaW5lQVBJSG9zdDo6aW5zcGVjdChFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAgaWYgKGV4ZWMt
PmFyZ3VtZW50Q291bnQoKSA+PSAyKSB7CisgICAgICAgIERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVl
IG9iamVjdChleGVjLT52bSgpLCBleGVjLT51bmNoZWNrZWRBcmd1bWVudCgwKSk7CisgICAgICAg
IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlIGhpbnRzKGV4ZWMtPnZtKCksIGV4ZWMtPnVuY2hlY2tl
ZEFyZ3VtZW50KDEpKTsKKyAgICAgICAgaW1wbCgpLmluc3BlY3RJbXBsKG9iamVjdC50b0luc3Bl
Y3RvclZhbHVlKGV4ZWMpLCBoaW50cy50b0luc3BlY3RvclZhbHVlKGV4ZWMpKTsKKyAgICB9CisK
KyAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKK30KKworSlNWYWx1ZSBKU0NvbW1hbmRMaW5lQVBJ
SG9zdDo6ZGF0YWJhc2VJZChFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAgaWYgKGV4ZWMtPmFyZ3Vt
ZW50Q291bnQoKSA8IDEpCisgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOworCisjaWYgRU5B
QkxFKFNRTF9EQVRBQkFTRSkKKyAgICBEYXRhYmFzZSogZGF0YWJhc2UgPSB0b0RhdGFiYXNlKGV4
ZWMtPnVuY2hlY2tlZEFyZ3VtZW50KDApKTsKKyAgICBpZiAoZGF0YWJhc2UpCisgICAgICAgIHJl
dHVybiBqc1N0cmluZ1dpdGhDYWNoZShleGVjLCBpbXBsKCkuZGF0YWJhc2VJZEltcGwoZGF0YWJh
c2UpKTsKKyNlbmRpZgorCisgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7Cit9CisKK0pTVmFsdWUg
SlNDb21tYW5kTGluZUFQSUhvc3Q6OnN0b3JhZ2VJZChFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAg
aWYgKGV4ZWMtPmFyZ3VtZW50Q291bnQoKSA8IDEpCisgICAgICAgIHJldHVybiBqc1VuZGVmaW5l
ZCgpOworCisgICAgU3RvcmFnZSogc3RvcmFnZSA9IHRvU3RvcmFnZShleGVjLT51bmNoZWNrZWRB
cmd1bWVudCgwKSk7CisgICAgaWYgKHN0b3JhZ2UpCisgICAgICAgIHJldHVybiBqc1N0cmluZ1dp
dGhDYWNoZShleGVjLCBpbXBsKCkuc3RvcmFnZUlkSW1wbChzdG9yYWdlKSk7CisKKyAgICByZXR1
cm4ganNVbmRlZmluZWQoKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYg
Ly8gRU5BQkxFKElOU1BFQ1RPUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTSW5qZWN0ZWRTY3JpcHRIb3N0Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTSW5qZWN0ZWRTY3JpcHRIb3N0Q3VzdG9tLmNwcAppbmRleCAyNDE3NjM1Li43ZmY1
ZDVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0luamVjdGVkU2Ny
aXB0SG9zdEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJbmpl
Y3RlZFNjcmlwdEhvc3RDdXN0b20uY3BwCkBAIC0zNiwyMyArMzYsMTMgQEAKIAogI2luY2x1ZGUg
IkpTSW5qZWN0ZWRTY3JpcHRIb3N0LmgiCiAKLSNpZiBFTkFCTEUoU1FMX0RBVEFCQVNFKQotI2lu
Y2x1ZGUgIkRhdGFiYXNlLmgiCi0jaW5jbHVkZSAiSlNEYXRhYmFzZS5oIgotI2VuZGlmCiAjaW5j
bHVkZSAiRXhjZXB0aW9uQ29kZS5oIgogI2luY2x1ZGUgIkluamVjdGVkU2NyaXB0SG9zdC5oIgot
I2luY2x1ZGUgIkluc3BlY3RvckRPTUFnZW50LmgiCi0jaW5jbHVkZSAiSW5zcGVjdG9yRGVidWdn
ZXJBZ2VudC5oIgotI2luY2x1ZGUgIkpTRXZlbnRMaXN0ZW5lci5oIgogI2luY2x1ZGUgIkpTSFRN
TEFsbENvbGxlY3Rpb24uaCIKICNpbmNsdWRlICJKU0hUTUxDb2xsZWN0aW9uLmgiCiAjaW5jbHVk
ZSAiSlNOb2RlLmgiCiAjaW5jbHVkZSAiSlNOb2RlTGlzdC5oIgotI2luY2x1ZGUgIkpTU3RvcmFn
ZS5oIgotI2luY2x1ZGUgIlN0b3JhZ2UuaCIKICNpbmNsdWRlIDxiaW5kaW5ncy9TY3JpcHRWYWx1
ZS5oPgotI2luY2x1ZGUgPGluc3BlY3Rvci9JbnNwZWN0b3JWYWx1ZXMuaD4KICNpbmNsdWRlIDxw
YXJzZXIvU291cmNlQ29kZS5oPgogI2luY2x1ZGUgPHJ1bnRpbWUvRGF0ZUluc3RhbmNlLmg+CiAj
aW5jbHVkZSA8cnVudGltZS9FcnJvci5oPgpAQCAtODUsMjMgKzc1LDYgQEAgRGVwcmVjYXRlZDo6
U2NyaXB0VmFsdWUgSW5qZWN0ZWRTY3JpcHRIb3N0Ojpub2RlQXNTY3JpcHRWYWx1ZShKU0M6OkV4
ZWNTdGF0ZSogc3QKICAgICByZXR1cm4gRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUoc3RhdGUtPnZt
KCksIHRvSlMoc3RhdGUsIGRlcHJlY2F0ZWRHbG9iYWxPYmplY3RGb3JQcm90b3R5cGUoc3RhdGUp
LCBub2RlKSk7CiB9CiAKLUpTVmFsdWUgSlNJbmplY3RlZFNjcmlwdEhvc3Q6Omluc3BlY3RlZE9i
amVjdChFeGVjU3RhdGUqIGV4ZWMpCi17Ci0gICAgaWYgKGV4ZWMtPmFyZ3VtZW50Q291bnQoKSA8
IDEpCi0gICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwotCi0gICAgSW5qZWN0ZWRTY3JpcHRI
b3N0OjpJbnNwZWN0YWJsZU9iamVjdCogb2JqZWN0ID0gaW1wbCgpLmluc3BlY3RlZE9iamVjdChl
eGVjLT51bmNoZWNrZWRBcmd1bWVudCgwKS50b0ludDMyKGV4ZWMpKTsKLSAgICBpZiAoIW9iamVj
dCkKLSAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7Ci0KLSAgICBKU0xvY2tIb2xkZXIgbG9j
ayhleGVjKTsKLSAgICBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSBzY3JpcHRWYWx1ZSA9IG9iamVj
dC0+Z2V0KGV4ZWMpOwotICAgIGlmIChzY3JpcHRWYWx1ZS5oYXNOb1ZhbHVlKCkpCi0gICAgICAg
IHJldHVybiBqc1VuZGVmaW5lZCgpOwotCi0gICAgcmV0dXJuIHNjcmlwdFZhbHVlLmpzVmFsdWUo
KTsKLX0KLQogSlNWYWx1ZSBKU0luamVjdGVkU2NyaXB0SG9zdDo6aW50ZXJuYWxDb25zdHJ1Y3Rv
ck5hbWUoRXhlY1N0YXRlKiBleGVjKQogewogICAgIGlmIChleGVjLT5hcmd1bWVudENvdW50KCkg
PCAxKQpAQCAtMTk1LDg4ICsxNjgsNiBAQCBKU1ZhbHVlIEpTSW5qZWN0ZWRTY3JpcHRIb3N0Ojpn
ZXRJbnRlcm5hbFByb3BlcnRpZXMoRXhlY1N0YXRlKikKICAgICByZXR1cm4ganNVbmRlZmluZWQo
KTsKIH0KIAotc3RhdGljIEpTQXJyYXkqIGdldEpTTGlzdGVuZXJGdW5jdGlvbnMoRXhlY1N0YXRl
KiBleGVjLCBEb2N1bWVudCogZG9jdW1lbnQsIGNvbnN0IEV2ZW50TGlzdGVuZXJJbmZvJiBsaXN0
ZW5lckluZm8pCi17Ci0gICAgSlNBcnJheSogcmVzdWx0ID0gY29uc3RydWN0RW1wdHlBcnJheShl
eGVjLCAwKTsKLSAgICBzaXplX3QgaGFuZGxlcnNDb3VudCA9IGxpc3RlbmVySW5mby5ldmVudExp
c3RlbmVyVmVjdG9yLnNpemUoKTsKLSAgICBmb3IgKHNpemVfdCBpID0gMCwgb3V0cHV0SW5kZXgg
PSAwOyBpIDwgaGFuZGxlcnNDb3VudDsgKytpKSB7Ci0gICAgICAgIGNvbnN0IEpTRXZlbnRMaXN0
ZW5lcioganNMaXN0ZW5lciA9IEpTRXZlbnRMaXN0ZW5lcjo6Y2FzdChsaXN0ZW5lckluZm8uZXZl
bnRMaXN0ZW5lclZlY3RvcltpXS5saXN0ZW5lci5nZXQoKSk7Ci0gICAgICAgIGlmICghanNMaXN0
ZW5lcikgewotICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgICAgICBj
b250aW51ZTsKLSAgICAgICAgfQotICAgICAgICAvLyBIaWRlIGxpc3RlbmVycyBmcm9tIG90aGVy
IGNvbnRleHRzLgotICAgICAgICBpZiAoJmpzTGlzdGVuZXItPmlzb2xhdGVkV29ybGQoKSAhPSAm
Y3VycmVudFdvcmxkKGV4ZWMpKQotICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIEpTT2Jq
ZWN0KiBmdW5jdGlvbiA9IGpzTGlzdGVuZXItPmpzRnVuY3Rpb24oZG9jdW1lbnQpOwotICAgICAg
ICBpZiAoIWZ1bmN0aW9uKQotICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIEpTT2JqZWN0
KiBsaXN0ZW5lckVudHJ5ID0gY29uc3RydWN0RW1wdHlPYmplY3QoZXhlYyk7Ci0gICAgICAgIGxp
c3RlbmVyRW50cnktPnB1dERpcmVjdChleGVjLT52bSgpLCBJZGVudGlmaWVyKGV4ZWMsICJsaXN0
ZW5lciIpLCBmdW5jdGlvbik7Ci0gICAgICAgIGxpc3RlbmVyRW50cnktPnB1dERpcmVjdChleGVj
LT52bSgpLCBJZGVudGlmaWVyKGV4ZWMsICJ1c2VDYXB0dXJlIiksIGpzQm9vbGVhbihsaXN0ZW5l
ckluZm8uZXZlbnRMaXN0ZW5lclZlY3RvcltpXS51c2VDYXB0dXJlKSk7Ci0gICAgICAgIHJlc3Vs
dC0+cHV0RGlyZWN0SW5kZXgoZXhlYywgb3V0cHV0SW5kZXgrKywgSlNWYWx1ZShsaXN0ZW5lckVu
dHJ5KSk7Ci0gICAgfQotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLUpTVmFsdWUgSlNJbmplY3Rl
ZFNjcmlwdEhvc3Q6OmdldEV2ZW50TGlzdGVuZXJzKEV4ZWNTdGF0ZSogZXhlYykKLXsKLSAgICBp
ZiAoZXhlYy0+YXJndW1lbnRDb3VudCgpIDwgMSkKLSAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVk
KCk7Ci0gICAgSlNWYWx1ZSB2YWx1ZSA9IGV4ZWMtPnVuY2hlY2tlZEFyZ3VtZW50KDApOwotICAg
IGlmICghdmFsdWUuaXNPYmplY3QoKSB8fCB2YWx1ZS5pc051bGwoKSkKLSAgICAgICAgcmV0dXJu
IGpzVW5kZWZpbmVkKCk7Ci0gICAgTm9kZSogbm9kZSA9IHRvTm9kZSh2YWx1ZSk7Ci0gICAgaWYg
KCFub2RlKQotICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKLQotICAgIFZlY3RvcjxFdmVu
dExpc3RlbmVySW5mbz4gbGlzdGVuZXJzQXJyYXk7Ci0gICAgaW1wbCgpLmdldEV2ZW50TGlzdGVu
ZXJzSW1wbChub2RlLCBsaXN0ZW5lcnNBcnJheSk7Ci0KLSAgICBKU09iamVjdCogcmVzdWx0ID0g
Y29uc3RydWN0RW1wdHlPYmplY3QoZXhlYyk7Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBs
aXN0ZW5lcnNBcnJheS5zaXplKCk7ICsraSkgewotICAgICAgICBKU0FycmF5KiBsaXN0ZW5lcnMg
PSBnZXRKU0xpc3RlbmVyRnVuY3Rpb25zKGV4ZWMsICZub2RlLT5kb2N1bWVudCgpLCBsaXN0ZW5l
cnNBcnJheVtpXSk7Ci0gICAgICAgIGlmICghbGlzdGVuZXJzLT5sZW5ndGgoKSkKLSAgICAgICAg
ICAgIGNvbnRpbnVlOwotICAgICAgICBBdG9taWNTdHJpbmcgZXZlbnRUeXBlID0gbGlzdGVuZXJz
QXJyYXlbaV0uZXZlbnRUeXBlOwotICAgICAgICByZXN1bHQtPnB1dERpcmVjdChleGVjLT52bSgp
LCBJZGVudGlmaWVyKGV4ZWMsIGV2ZW50VHlwZS5pbXBsKCkpLCBKU1ZhbHVlKGxpc3RlbmVycykp
OwotICAgIH0KLQotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLUpTVmFsdWUgSlNJbmplY3RlZFNj
cmlwdEhvc3Q6Omluc3BlY3QoRXhlY1N0YXRlKiBleGVjKQotewotICAgIGlmIChleGVjLT5hcmd1
bWVudENvdW50KCkgPj0gMikgewotICAgICAgICBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSBvYmpl
Y3QoZXhlYy0+dm0oKSwgZXhlYy0+dW5jaGVja2VkQXJndW1lbnQoMCkpOwotICAgICAgICBEZXBy
ZWNhdGVkOjpTY3JpcHRWYWx1ZSBoaW50cyhleGVjLT52bSgpLCBleGVjLT51bmNoZWNrZWRBcmd1
bWVudCgxKSk7Ci0gICAgICAgIGltcGwoKS5pbnNwZWN0SW1wbChvYmplY3QudG9JbnNwZWN0b3JW
YWx1ZShleGVjKSwgaGludHMudG9JbnNwZWN0b3JWYWx1ZShleGVjKSk7Ci0gICAgfQotICAgIHJl
dHVybiBqc1VuZGVmaW5lZCgpOwotfQotCi1KU1ZhbHVlIEpTSW5qZWN0ZWRTY3JpcHRIb3N0Ojpk
YXRhYmFzZUlkKEV4ZWNTdGF0ZSogZXhlYykKLXsKLSAgICBpZiAoZXhlYy0+YXJndW1lbnRDb3Vu
dCgpIDwgMSkKLSAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7Ci0jaWYgRU5BQkxFKFNRTF9E
QVRBQkFTRSkKLSAgICBEYXRhYmFzZSogZGF0YWJhc2UgPSB0b0RhdGFiYXNlKGV4ZWMtPnVuY2hl
Y2tlZEFyZ3VtZW50KDApKTsKLSAgICBpZiAoZGF0YWJhc2UpCi0gICAgICAgIHJldHVybiBqc1N0
cmluZ1dpdGhDYWNoZShleGVjLCBpbXBsKCkuZGF0YWJhc2VJZEltcGwoZGF0YWJhc2UpKTsKLSNl
bmRpZgotICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwotfQotCi1KU1ZhbHVlIEpTSW5qZWN0ZWRT
Y3JpcHRIb3N0OjpzdG9yYWdlSWQoRXhlY1N0YXRlKiBleGVjKQotewotICAgIGlmIChleGVjLT5h
cmd1bWVudENvdW50KCkgPCAxKQotICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKLSAgICBT
dG9yYWdlKiBzdG9yYWdlID0gdG9TdG9yYWdlKGV4ZWMtPnVuY2hlY2tlZEFyZ3VtZW50KDApKTsK
LSAgICBpZiAoc3RvcmFnZSkKLSAgICAgICAgcmV0dXJuIGpzU3RyaW5nV2l0aENhY2hlKGV4ZWMs
IGltcGwoKS5zdG9yYWdlSWRJbXBsKHN0b3JhZ2UpKTsKLSAgICByZXR1cm4ganNVbmRlZmluZWQo
KTsKLX0KLQogSlNWYWx1ZSBKU0luamVjdGVkU2NyaXB0SG9zdDo6ZXZhbHVhdGUoRXhlY1N0YXRl
KiBleGVjKSBjb25zdAogewogICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBleGVj
LT5sZXhpY2FsR2xvYmFsT2JqZWN0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5qZWN0ZWRTY3JpcHRIb3N0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9D
b21tYW5kTGluZUFQSUhvc3QuY3BwCnNpbWlsYXJpdHkgaW5kZXggNzIlCmNvcHkgZnJvbSBTb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRIb3N0LmNwcApjb3B5IHRvIFNvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9Db21tYW5kTGluZUFQSUhvc3QuY3BwCmluZGV4IDA3Yzc2ZTQu
LjEwNzI0MmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNj
cmlwdEhvc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Db21tYW5kTGluZUFQ
SUhvc3QuY3BwCkBAIC0yOSwxMSArMjksMTAgQEAKICAqLwogCiAjaW5jbHVkZSAiY29uZmlnLmgi
CisjaW5jbHVkZSAiQ29tbWFuZExpbmVBUElIb3N0LmgiCiAKICNpZiBFTkFCTEUoSU5TUEVDVE9S
KQogCi0jaW5jbHVkZSAiSW5qZWN0ZWRTY3JpcHRIb3N0LmgiCi0KICNpbmNsdWRlICJFbGVtZW50
LmgiCiAjaW5jbHVkZSAiRnJhbWUuaCIKICNpbmNsdWRlICJGcmFtZUxvYWRlci5oIgpAQCAtNjIs
MzkgKzYxLDM5IEBAIHVzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAotUGFzc1JlZlB0cjxJbmplY3RlZFNjcmlwdEhvc3Q+IEluamVjdGVkU2NyaXB0SG9z
dDo6Y3JlYXRlKCkKK1Bhc3NSZWZQdHI8Q29tbWFuZExpbmVBUElIb3N0PiBDb21tYW5kTGluZUFQ
SUhvc3Q6OmNyZWF0ZSgpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBJbmplY3RlZFNjcmlw
dEhvc3QoKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBDb21tYW5kTGluZUFQSUhvc3QpOwog
fQogCi1JbmplY3RlZFNjcmlwdEhvc3Q6OkluamVjdGVkU2NyaXB0SG9zdCgpCi0gICAgOiBtX2lu
c3BlY3RvckFnZW50KDApCi0gICAgLCBtX2NvbnNvbGVBZ2VudCgwKQorQ29tbWFuZExpbmVBUElI
b3N0OjpDb21tYW5kTGluZUFQSUhvc3QoKQorICAgIDogbV9pbnNwZWN0b3JBZ2VudChudWxscHRy
KQorICAgICwgbV9jb25zb2xlQWdlbnQobnVsbHB0cikKKyAgICAsIG1fZG9tQWdlbnQobnVsbHB0
cikKKyAgICAsIG1fZG9tU3RvcmFnZUFnZW50KG51bGxwdHIpCiAjaWYgRU5BQkxFKFNRTF9EQVRB
QkFTRSkKLSAgICAsIG1fZGF0YWJhc2VBZ2VudCgwKQorICAgICwgbV9kYXRhYmFzZUFnZW50KG51
bGxwdHIpCiAjZW5kaWYKLSAgICAsIG1fZG9tU3RvcmFnZUFnZW50KDApCi0gICAgLCBtX2RvbUFn
ZW50KDApCiB7Ci0gICAgbV9kZWZhdWx0SW5zcGVjdGFibGVPYmplY3QgPSBhZG9wdFB0cihuZXcg
SW5zcGVjdGFibGVPYmplY3QoKSk7CisgICAgbV9kZWZhdWx0SW5zcGVjdGFibGVPYmplY3QgPSBh
ZG9wdFB0cihuZXcgSW5zcGVjdGFibGVPYmplY3QpOwogfQogCi1JbmplY3RlZFNjcmlwdEhvc3Q6
On5JbmplY3RlZFNjcmlwdEhvc3QoKQorQ29tbWFuZExpbmVBUElIb3N0Ojp+Q29tbWFuZExpbmVB
UElIb3N0KCkKIHsKIH0KIAotdm9pZCBJbmplY3RlZFNjcmlwdEhvc3Q6OmRpc2Nvbm5lY3QoKQor
dm9pZCBDb21tYW5kTGluZUFQSUhvc3Q6OmRpc2Nvbm5lY3QoKQogewotICAgIG1faW5zcGVjdG9y
QWdlbnQgPSAwOwotICAgIG1fY29uc29sZUFnZW50ID0gMDsKKyAgICBtX2luc3BlY3RvckFnZW50
ID0gbnVsbHB0cjsKKyAgICBtX2NvbnNvbGVBZ2VudCA9IG51bGxwdHI7CisgICAgbV9kb21BZ2Vu
dCA9IG51bGxwdHI7CisgICAgbV9kb21TdG9yYWdlQWdlbnQgPSBudWxscHRyOwogI2lmIEVOQUJM
RShTUUxfREFUQUJBU0UpCi0gICAgbV9kYXRhYmFzZUFnZW50ID0gMDsKKyAgICBtX2RhdGFiYXNl
QWdlbnQgPSBudWxscHRyOwogI2VuZGlmCi0gICAgbV9kb21TdG9yYWdlQWdlbnQgPSAwOwotICAg
IG1fZG9tQWdlbnQgPSAwOwogfQogCi12b2lkIEluamVjdGVkU2NyaXB0SG9zdDo6aW5zcGVjdElt
cGwoUGFzc1JlZlB0cjxJbnNwZWN0b3JWYWx1ZT4gb2JqZWN0LCBQYXNzUmVmUHRyPEluc3BlY3Rv
clZhbHVlPiBoaW50cykKK3ZvaWQgQ29tbWFuZExpbmVBUElIb3N0OjppbnNwZWN0SW1wbChQYXNz
UmVmUHRyPEluc3BlY3RvclZhbHVlPiBvYmplY3QsIFBhc3NSZWZQdHI8SW5zcGVjdG9yVmFsdWU+
IGhpbnRzKQogewogICAgIGlmIChtX2luc3BlY3RvckFnZW50KSB7CiAgICAgICAgIFJlZlB0cjxJ
bnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+IHJlbW90ZU9iamVj
dCA9IEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdDo6cnVudGlt
ZUNhc3Qob2JqZWN0KTsKQEAgLTEwMiwxMyArMTAxLDEzIEBAIHZvaWQgSW5qZWN0ZWRTY3JpcHRI
b3N0OjppbnNwZWN0SW1wbChQYXNzUmVmUHRyPEluc3BlY3RvclZhbHVlPiBvYmplY3QsIFBhc3NS
ZWZQCiAgICAgfQogfQogCi12b2lkIEluamVjdGVkU2NyaXB0SG9zdDo6Z2V0RXZlbnRMaXN0ZW5l
cnNJbXBsKE5vZGUqIG5vZGUsIFZlY3RvcjxFdmVudExpc3RlbmVySW5mbz4mIGxpc3RlbmVyc0Fy
cmF5KQordm9pZCBDb21tYW5kTGluZUFQSUhvc3Q6OmdldEV2ZW50TGlzdGVuZXJzSW1wbChOb2Rl
KiBub2RlLCBWZWN0b3I8RXZlbnRMaXN0ZW5lckluZm8+JiBsaXN0ZW5lcnNBcnJheSkKIHsKICAg
ICBpZiAobV9kb21BZ2VudCkKICAgICAgICAgbV9kb21BZ2VudC0+Z2V0RXZlbnRMaXN0ZW5lcnMo
bm9kZSwgbGlzdGVuZXJzQXJyYXksIGZhbHNlKTsKIH0KIAotdm9pZCBJbmplY3RlZFNjcmlwdEhv
c3Q6OmNsZWFyQ29uc29sZU1lc3NhZ2VzKCkKK3ZvaWQgQ29tbWFuZExpbmVBUElIb3N0OjpjbGVh
ckNvbnNvbGVNZXNzYWdlcygpCiB7CiAgICAgaWYgKG1fY29uc29sZUFnZW50KSB7CiAgICAgICAg
IEVycm9yU3RyaW5nIGVycm9yOwpAQCAtMTE2LDM3ICsxMTUsMzggQEAgdm9pZCBJbmplY3RlZFNj
cmlwdEhvc3Q6OmNsZWFyQ29uc29sZU1lc3NhZ2VzKCkKICAgICB9CiB9CiAKLXZvaWQgSW5qZWN0
ZWRTY3JpcHRIb3N0Ojpjb3B5VGV4dChjb25zdCBTdHJpbmcmIHRleHQpCit2b2lkIENvbW1hbmRM
aW5lQVBJSG9zdDo6Y29weVRleHQoY29uc3QgU3RyaW5nJiB0ZXh0KQogewogICAgIFBhc3RlYm9h
cmQ6OmNyZWF0ZUZvckNvcHlBbmRQYXN0ZSgpLT53cml0ZVBsYWluVGV4dCh0ZXh0LCBQYXN0ZWJv
YXJkOjpDYW5ub3RTbWFydFJlcGxhY2UpOwogfQogCi1EZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSBJ
bmplY3RlZFNjcmlwdEhvc3Q6Okluc3BlY3RhYmxlT2JqZWN0OjpnZXQoSlNDOjpFeGVjU3RhdGUq
KQorRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUgQ29tbWFuZExpbmVBUElIb3N0OjpJbnNwZWN0YWJs
ZU9iamVjdDo6Z2V0KEpTQzo6RXhlY1N0YXRlKikKIHsKICAgICByZXR1cm4gRGVwcmVjYXRlZDo6
U2NyaXB0VmFsdWUoKTsKIH07CiAKLXZvaWQgSW5qZWN0ZWRTY3JpcHRIb3N0OjphZGRJbnNwZWN0
ZWRPYmplY3QoUGFzc093blB0cjxJbmplY3RlZFNjcmlwdEhvc3Q6Okluc3BlY3RhYmxlT2JqZWN0
PiBvYmplY3QpCit2b2lkIENvbW1hbmRMaW5lQVBJSG9zdDo6YWRkSW5zcGVjdGVkT2JqZWN0KFBh
c3NPd25QdHI8Q29tbWFuZExpbmVBUElIb3N0OjpJbnNwZWN0YWJsZU9iamVjdD4gb2JqZWN0KQog
ewogICAgIG1faW5zcGVjdGVkT2JqZWN0cy5pbnNlcnQoMCwgb2JqZWN0KTsKICAgICB3aGlsZSAo
bV9pbnNwZWN0ZWRPYmplY3RzLnNpemUoKSA+IDUpCiAgICAgICAgIG1faW5zcGVjdGVkT2JqZWN0
cy5yZW1vdmVMYXN0KCk7CiB9CiAKLXZvaWQgSW5qZWN0ZWRTY3JpcHRIb3N0OjpjbGVhckluc3Bl
Y3RlZE9iamVjdHMoKQordm9pZCBDb21tYW5kTGluZUFQSUhvc3Q6OmNsZWFySW5zcGVjdGVkT2Jq
ZWN0cygpCiB7CiAgICAgbV9pbnNwZWN0ZWRPYmplY3RzLmNsZWFyKCk7CiB9CiAKLUluamVjdGVk
U2NyaXB0SG9zdDo6SW5zcGVjdGFibGVPYmplY3QqIEluamVjdGVkU2NyaXB0SG9zdDo6aW5zcGVj
dGVkT2JqZWN0KHVuc2lnbmVkIGludCBudW0pCitDb21tYW5kTGluZUFQSUhvc3Q6Okluc3BlY3Rh
YmxlT2JqZWN0KiBDb21tYW5kTGluZUFQSUhvc3Q6Omluc3BlY3RlZE9iamVjdCh1bnNpZ25lZCBp
bmRleCkKIHsKLSAgICBpZiAobnVtID49IG1faW5zcGVjdGVkT2JqZWN0cy5zaXplKCkpCisgICAg
aWYgKGluZGV4ID49IG1faW5zcGVjdGVkT2JqZWN0cy5zaXplKCkpCiAgICAgICAgIHJldHVybiBt
X2RlZmF1bHRJbnNwZWN0YWJsZU9iamVjdC5nZXQoKTsKLSAgICByZXR1cm4gbV9pbnNwZWN0ZWRP
YmplY3RzW251bV0uZ2V0KCk7CisKKyAgICByZXR1cm4gbV9pbnNwZWN0ZWRPYmplY3RzW2luZGV4
XS5nZXQoKTsKIH0KIAogI2lmIEVOQUJMRShTUUxfREFUQUJBU0UpCi1TdHJpbmcgSW5qZWN0ZWRT
Y3JpcHRIb3N0OjpkYXRhYmFzZUlkSW1wbChEYXRhYmFzZSogZGF0YWJhc2UpCitTdHJpbmcgQ29t
bWFuZExpbmVBUElIb3N0OjpkYXRhYmFzZUlkSW1wbChEYXRhYmFzZSogZGF0YWJhc2UpCiB7CiAg
ICAgaWYgKG1fZGF0YWJhc2VBZ2VudCkKICAgICAgICAgcmV0dXJuIG1fZGF0YWJhc2VBZ2VudC0+
ZGF0YWJhc2VJZChkYXRhYmFzZSk7CkBAIC0xNTQsNyArMTU0LDcgQEAgU3RyaW5nIEluamVjdGVk
U2NyaXB0SG9zdDo6ZGF0YWJhc2VJZEltcGwoRGF0YWJhc2UqIGRhdGFiYXNlKQogfQogI2VuZGlm
CiAKLVN0cmluZyBJbmplY3RlZFNjcmlwdEhvc3Q6OnN0b3JhZ2VJZEltcGwoU3RvcmFnZSogc3Rv
cmFnZSkKK1N0cmluZyBDb21tYW5kTGluZUFQSUhvc3Q6OnN0b3JhZ2VJZEltcGwoU3RvcmFnZSog
c3RvcmFnZSkKIHsKICAgICBpZiAobV9kb21TdG9yYWdlQWdlbnQpCiAgICAgICAgIHJldHVybiBt
X2RvbVN0b3JhZ2VBZ2VudC0+c3RvcmFnZUlkKHN0b3JhZ2UpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0SG9zdC5oIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0NvbW1hbmRMaW5lQVBJSG9zdC5oCnNpbWlsYXJpdHkgaW5kZXggODglCmNvcHkg
ZnJvbSBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRIb3N0LmgKY29weSB0
byBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvQ29tbWFuZExpbmVBUElIb3N0LmgKaW5kZXggMTE5
YTQ1MC4uY2FmMmY1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVj
dGVkU2NyaXB0SG9zdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Db21tYW5kTGlu
ZUFQSUhvc3QuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDcgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA3LCAyMDEz
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAwOSBH
b29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dApAQCAtNywx
MyArNywxMyBAQAogICogYXJlIG1ldDoKICAqCiAgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuIAor
ICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KICAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAogICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLiAKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgogICogMy4gIE5laXRoZXIgdGhlIG5hbWUg
b2YgQXBwbGUgQ29tcHV0ZXIsIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKICAqICAg
ICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9k
dWN0cyBkZXJpdmVkCi0gKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMg
cHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLiAKKyAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0
aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCiAgKgogICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFO
RCBBTlkKICAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKQEAgLTI3LDggKzI3LDggQEAKICAqIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CiAgKi8KIAotI2lmbmRlZiBJbmplY3RlZFNjcmlwdEhvc3RfaAotI2RlZmluZSBJbmplY3RlZFNj
cmlwdEhvc3RfaAorI2lmbmRlZiBDb21tYW5kTGluZUFQSUhvc3RfaAorI2RlZmluZSBDb21tYW5k
TGluZUFQSUhvc3RfaAogCiAjaW5jbHVkZSAiQ29uc29sZVR5cGVzLmgiCiAjaW5jbHVkZSAiSW5z
cGVjdG9yQWdlbnQuaCIKQEAgLTU5LDM0ICs1OSwzNCBAQCBjbGFzcyBTdG9yYWdlOwogCiBzdHJ1
Y3QgRXZlbnRMaXN0ZW5lckluZm87CiAKLWNsYXNzIEluamVjdGVkU2NyaXB0SG9zdCA6IHB1Ymxp
YyBSZWZDb3VudGVkPEluamVjdGVkU2NyaXB0SG9zdD4geworY2xhc3MgQ29tbWFuZExpbmVBUElI
b3N0IDogcHVibGljIFJlZkNvdW50ZWQ8Q29tbWFuZExpbmVBUElIb3N0PiB7CiBwdWJsaWM6Ci0g
ICAgc3RhdGljIFBhc3NSZWZQdHI8SW5qZWN0ZWRTY3JpcHRIb3N0PiBjcmVhdGUoKTsKLSAgICB+
SW5qZWN0ZWRTY3JpcHRIb3N0KCk7CisgICAgc3RhdGljIFBhc3NSZWZQdHI8Q29tbWFuZExpbmVB
UElIb3N0PiBjcmVhdGUoKTsKKyAgICB+Q29tbWFuZExpbmVBUElIb3N0KCk7CiAKICAgICB2b2lk
IGluaXQoSW5zcGVjdG9yQWdlbnQqIGluc3BlY3RvckFnZW50CiAgICAgICAgICAgICAsIEluc3Bl
Y3RvckNvbnNvbGVBZ2VudCogY29uc29sZUFnZW50Ci0jaWYgRU5BQkxFKFNRTF9EQVRBQkFTRSkK
LSAgICAgICAgICAgICwgSW5zcGVjdG9yRGF0YWJhc2VBZ2VudCogZGF0YWJhc2VBZ2VudAotI2Vu
ZGlmCi0gICAgICAgICAgICAsIEluc3BlY3RvckRPTVN0b3JhZ2VBZ2VudCogZG9tU3RvcmFnZUFn
ZW50CiAgICAgICAgICAgICAsIEluc3BlY3RvckRPTUFnZW50KiBkb21BZ2VudAorICAgICAgICAg
ICAgLCBJbnNwZWN0b3JET01TdG9yYWdlQWdlbnQqIGRvbVN0b3JhZ2VBZ2VudAorI2lmIEVOQUJM
RShTUUxfREFUQUJBU0UpCisgICAgICAgICAgICAsIEluc3BlY3RvckRhdGFiYXNlQWdlbnQqIGRh
dGFiYXNlQWdlbnQKKyNlbmRpZgogICAgICAgICApCiAgICAgewogICAgICAgICBtX2luc3BlY3Rv
ckFnZW50ID0gaW5zcGVjdG9yQWdlbnQ7CiAgICAgICAgIG1fY29uc29sZUFnZW50ID0gY29uc29s
ZUFnZW50OwotI2lmIEVOQUJMRShTUUxfREFUQUJBU0UpCi0gICAgICAgIG1fZGF0YWJhc2VBZ2Vu
dCA9IGRhdGFiYXNlQWdlbnQ7Ci0jZW5kaWYKLSAgICAgICAgbV9kb21TdG9yYWdlQWdlbnQgPSBk
b21TdG9yYWdlQWdlbnQ7CiAgICAgICAgIG1fZG9tQWdlbnQgPSBkb21BZ2VudDsKKyAgICAgICAg
bV9kb21TdG9yYWdlQWdlbnQgPSBkb21TdG9yYWdlQWdlbnQ7CisjaWYgRU5BQkxFKFNRTF9EQVRB
QkFTRSkKKyAgICAgICAgbV9kYXRhYmFzZUFnZW50ID0gZGF0YWJhc2VBZ2VudDsKKyNlbmRpZgog
ICAgIH0KIAotICAgIHN0YXRpYyBOb2RlKiBzY3JpcHRWYWx1ZUFzTm9kZShEZXByZWNhdGVkOjpT
Y3JpcHRWYWx1ZSk7Ci0gICAgc3RhdGljIERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlIG5vZGVBc1Nj
cmlwdFZhbHVlKEpTQzo6RXhlY1N0YXRlKiwgTm9kZSopOwotCiAgICAgdm9pZCBkaXNjb25uZWN0
KCk7CiAKKyAgICB2b2lkIGNsZWFyQ29uc29sZU1lc3NhZ2VzKCk7CisgICAgdm9pZCBjb3B5VGV4
dChjb25zdCBTdHJpbmcmIHRleHQpOworCiAgICAgY2xhc3MgSW5zcGVjdGFibGVPYmplY3Qgewog
ICAgICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICBwdWJsaWM6CkBAIC05NiwzMSAr
OTYsMzAgQEAgcHVibGljOgogICAgIHZvaWQgYWRkSW5zcGVjdGVkT2JqZWN0KFBhc3NPd25QdHI8
SW5zcGVjdGFibGVPYmplY3Q+KTsKICAgICB2b2lkIGNsZWFySW5zcGVjdGVkT2JqZWN0cygpOwog
ICAgIEluc3BlY3RhYmxlT2JqZWN0KiBpbnNwZWN0ZWRPYmplY3QodW5zaWduZWQgaW50IG51bSk7
Ci0KICAgICB2b2lkIGluc3BlY3RJbXBsKFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JW
YWx1ZT4gb2JqZWN0VG9JbnNwZWN0LCBQYXNzUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yVmFs
dWU+IGhpbnRzKTsKKwogICAgIHZvaWQgZ2V0RXZlbnRMaXN0ZW5lcnNJbXBsKE5vZGUqLCBWZWN0
b3I8RXZlbnRMaXN0ZW5lckluZm8+JiBsaXN0ZW5lcnNBcnJheSk7CiAKLSAgICB2b2lkIGNsZWFy
Q29uc29sZU1lc3NhZ2VzKCk7Ci0gICAgdm9pZCBjb3B5VGV4dChjb25zdCBTdHJpbmcmIHRleHQp
OwogI2lmIEVOQUJMRShTUUxfREFUQUJBU0UpCiAgICAgU3RyaW5nIGRhdGFiYXNlSWRJbXBsKERh
dGFiYXNlKik7CiAjZW5kaWYKICAgICBTdHJpbmcgc3RvcmFnZUlkSW1wbChTdG9yYWdlKik7CiAK
IHByaXZhdGU6Ci0gICAgSW5qZWN0ZWRTY3JpcHRIb3N0KCk7CisgICAgQ29tbWFuZExpbmVBUElI
b3N0KCk7CiAKICAgICBJbnNwZWN0b3JBZ2VudCogbV9pbnNwZWN0b3JBZ2VudDsKICAgICBJbnNw
ZWN0b3JDb25zb2xlQWdlbnQqIG1fY29uc29sZUFnZW50OwotI2lmIEVOQUJMRShTUUxfREFUQUJB
U0UpCi0gICAgSW5zcGVjdG9yRGF0YWJhc2VBZ2VudCogbV9kYXRhYmFzZUFnZW50OwotI2VuZGlm
Ci0gICAgSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50KiBtX2RvbVN0b3JhZ2VBZ2VudDsKICAgICBJ
bnNwZWN0b3JET01BZ2VudCogbV9kb21BZ2VudDsKKyAgICBJbnNwZWN0b3JET01TdG9yYWdlQWdl
bnQqIG1fZG9tU3RvcmFnZUFnZW50OworI2lmIEVOQUJMRShTUUxfREFUQUJBU0UpCisgICAgSW5z
cGVjdG9yRGF0YWJhc2VBZ2VudCogbV9kYXRhYmFzZUFnZW50OworI2VuZGlmCisKICAgICBWZWN0
b3I8T3duUHRyPEluc3BlY3RhYmxlT2JqZWN0Pj4gbV9pbnNwZWN0ZWRPYmplY3RzOwogICAgIE93
blB0cjxJbnNwZWN0YWJsZU9iamVjdD4gbV9kZWZhdWx0SW5zcGVjdGFibGVPYmplY3Q7CiB9Owog
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKLSNlbmRpZiAvLyAhZGVmaW5lZChJbmplY3RlZFNj
cmlwdEhvc3RfaCkKKyNlbmRpZiAvLyAhZGVmaW5lZChDb21tYW5kTGluZUFQSUhvc3RfaCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdEhvc3QuaWRs
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0NvbW1hbmRMaW5lQVBJSG9zdC5pZGwKc2ltaWxh
cml0eSBpbmRleCA4MyUKY29weSBmcm9tIFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3Rl
ZFNjcmlwdEhvc3QuaWRsCmNvcHkgdG8gU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0NvbW1hbmRM
aW5lQVBJSG9zdC5pZGwKaW5kZXggZDg2NjNlZC4uMjI4NDI2YyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0SG9zdC5pZGwKKysrIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0NvbW1hbmRMaW5lQVBJSG9zdC5pZGwKQEAgLTEsNSArMSw1IEBACiAv
KgotICogQ29weXJpZ2h0IChDKSAyMDA3LCAyMDA4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNywgMjAwOCwgMjAxMyBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDggTWF0dCBMaWxlayA8d2Via2l0
QG1hdHRsaWxlay5jb20+CiAgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqCkBAIC0zNCwyMSArMzQsMTIgQEAKICAgICBOb0ludGVyZmFjZU9i
amVjdCwKICAgICBDb25kaXRpb25hbD1JTlNQRUNUT1IsCiAgICAgSW1wbGVtZW50YXRpb25MYWNr
c1ZUYWJsZQotXSBpbnRlcmZhY2UgSW5qZWN0ZWRTY3JpcHRIb3N0IHsKK10gaW50ZXJmYWNlIENv
bW1hbmRMaW5lQVBJSG9zdCB7CiAgICAgdm9pZCBjbGVhckNvbnNvbGVNZXNzYWdlcygpOwotCiAg
ICAgdm9pZCBjb3B5VGV4dChET01TdHJpbmcgdGV4dCk7CiAgICAgW0N1c3RvbV0gdm9pZCBpbnNw
ZWN0KGFueSBvYmplY3RJZCwgYW55IGhpbnRzKTsKICAgICBbQ3VzdG9tXSBhbnkgaW5zcGVjdGVk
T2JqZWN0KGludCBudW0pOwotICAgIFtDdXN0b21dIGFueSBpbnRlcm5hbENvbnN0cnVjdG9yTmFt
ZShhbnkgb2JqZWN0KTsKLSAgICBbQ3VzdG9tXSBib29sZWFuIGlzSFRNTEFsbENvbGxlY3Rpb24o
YW55IG9iamVjdCk7Ci0gICAgW0N1c3RvbV0gRE9NU3RyaW5nIHR5cGUoYW55IG9iamVjdCk7Ci0g
ICAgW0N1c3RvbV0gYW55IGZ1bmN0aW9uRGV0YWlscyhhbnkgb2JqZWN0KTsKLSAgICBbQ3VzdG9t
XSBBcnJheSBnZXRJbnRlcm5hbFByb3BlcnRpZXMoYW55IG9iamVjdCk7CiAgICAgW0N1c3RvbV0g
QXJyYXkgZ2V0RXZlbnRMaXN0ZW5lcnMoTm9kZSBub2RlKTsKLQotICAgIFtDdXN0b21dIHJlYWRv
bmx5IGF0dHJpYnV0ZSBhbnkgZXZhbHVhdGU7Ci0KICAgICBbQ3VzdG9tXSBET01TdHJpbmcgZGF0
YWJhc2VJZChhbnkgZGF0YWJhc2UpOwogICAgIFtDdXN0b21dIERPTVN0cmluZyBzdG9yYWdlSWQo
YW55IHN0b3JhZ2UpOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9D
b21tYW5kTGluZUFQSU1vZHVsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvQ29tbWFu
ZExpbmVBUElNb2R1bGUuY3BwCmluZGV4IDI1MDJkMmYuLjk1MzM5ZTEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Db21tYW5kTGluZUFQSU1vZHVsZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0NvbW1hbmRMaW5lQVBJTW9kdWxlLmNwcApAQCAtMjksNiAr
MjksOSBAQAogI2lmIEVOQUJMRShJTlNQRUNUT1IpCiAKICNpbmNsdWRlICJDb21tYW5kTGluZUFQ
SU1vZHVsZVNvdXJjZS5oIgorI2luY2x1ZGUgIkpTQ29tbWFuZExpbmVBUElIb3N0LmgiCisKK3Vz
aW5nIG5hbWVzcGFjZSBKU0M7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNDgsNiArNTEs
MTMgQEAgU3RyaW5nIENvbW1hbmRMaW5lQVBJTW9kdWxlOjpzb3VyY2UoKSBjb25zdAogICAgIHJl
dHVybiBTdHJpbmcocmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oQ29tbWFuZExpbmVBUElN
b2R1bGVTb3VyY2VfanMpLCBzaXplb2YoQ29tbWFuZExpbmVBUElNb2R1bGVTb3VyY2VfanMpKTsK
IH0KIAorSlNDOjpKU1ZhbHVlIENvbW1hbmRMaW5lQVBJTW9kdWxlOjpob3N0KEluamVjdGVkU2Ny
aXB0TWFuYWdlciogaW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLCBKU0M6OkV4ZWNTdGF0ZSogZXhlYykg
Y29uc3QKK3sKKyAgICBBU1NFUlQoaW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLT5jb21tYW5kTGluZUFQ
SUhvc3QoKSk7CisgICAgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGpzQ2FzdDxK
U0RPTUdsb2JhbE9iamVjdCo+KGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSk7CisgICAgcmV0
dXJuIHRvSlMoZXhlYywgZ2xvYmFsT2JqZWN0LCBpbmplY3RlZFNjcmlwdE1hbmFnZXItPmNvbW1h
bmRMaW5lQVBJSG9zdCgpKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYg
Ly8gRU5BQkxFKElOU1BFQ1RPUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9Db21tYW5kTGluZUFQSU1vZHVsZS5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0NvbW1h
bmRMaW5lQVBJTW9kdWxlLmgKaW5kZXggNzVlMzE2My4uYjRhNWFmNCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0NvbW1hbmRMaW5lQVBJTW9kdWxlLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0NvbW1hbmRMaW5lQVBJTW9kdWxlLmgKQEAgLTM3LDYgKzM3LDcg
QEAgcHVibGljOgogICAgIENvbW1hbmRMaW5lQVBJTW9kdWxlKCk7CiAKICAgICB2aXJ0dWFsIFN0
cmluZyBzb3VyY2UoKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIEpTQzo6SlNWYWx1ZSBo
b3N0KEluamVjdGVkU2NyaXB0TWFuYWdlciosIEpTQzo6RXhlY1N0YXRlKikgY29uc3QgT1ZFUlJJ
REU7CiAgICAgdmlydHVhbCBib29sIHJldHVybnNPYmplY3QoKSBjb25zdCBPVkVSUklERSB7IHJl
dHVybiBmYWxzZTsgfQogCiAgICAgc3RhdGljIHZvaWQgaW5qZWN0SWZOZWVkZWQoSW5qZWN0ZWRT
Y3JpcHRNYW5hZ2VyKiwgSW5qZWN0ZWRTY3JpcHQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0NvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNlLmpzIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0NvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNlLmpzCmluZGV4IDdhMmM1YWUu
LjBlOGJhY2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Db21tYW5kTGlu
ZUFQSU1vZHVsZVNvdXJjZS5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvQ29tbWFu
ZExpbmVBUElNb2R1bGVTb3VyY2UuanMKQEAgLTMwLDggKzMwLDEwIEBACiAgKiBAcGFyYW0ge0lu
amVjdGVkU2NyaXB0SG9zdH0gSW5qZWN0ZWRTY3JpcHRIb3N0CiAgKiBAcGFyYW0ge1dpbmRvd30g
aW5zcGVjdGVkV2luZG93CiAgKiBAcGFyYW0ge251bWJlcn0gaW5qZWN0ZWRTY3JpcHRJZAorICog
QHBhcmFtIHtJbmplY3RlZFNjcmlwdH0gaW5qZWN0ZWRTY3JpcHQKKyAqIEBwYXJhbSB7Q29tbWFu
ZExpbmVBUElIb3N0fSBDb21tYW5kTGluZUFQSUhvc3QKICAqLwotKGZ1bmN0aW9uIChJbmplY3Rl
ZFNjcmlwdEhvc3QsIGluc3BlY3RlZFdpbmRvdywgaW5qZWN0ZWRTY3JpcHRJZCwgaW5qZWN0ZWRT
Y3JpcHQpIHsKKyhmdW5jdGlvbiAoSW5qZWN0ZWRTY3JpcHRIb3N0LCBpbnNwZWN0ZWRXaW5kb3cs
IGluamVjdGVkU2NyaXB0SWQsIGluamVjdGVkU2NyaXB0LCBDb21tYW5kTGluZUFQSUhvc3QpIHsK
IAogLyoqCiAgKiBAcGFyYW0ge0FyZ3VtZW50c30gYXJyYXkKQEAgLTI3MiwxOSArMjc0LDE5IEBA
IENvbW1hbmRMaW5lQVBJSW1wbC5wcm90b3R5cGUgPSB7CiAgICAgICovCiAgICAgaW5zcGVjdDog
ZnVuY3Rpb24ob2JqZWN0KQogICAgIHsKLSAgICAgICAgcmV0dXJuIGluamVjdGVkU2NyaXB0Ll9p
bnNwZWN0KG9iamVjdCk7CisgICAgICAgIHJldHVybiB0aGlzLl9pbnNwZWN0KG9iamVjdCk7CiAg
ICAgfSwKIAogICAgIGNvcHk6IGZ1bmN0aW9uKG9iamVjdCkKICAgICB7CiAgICAgICAgIGlmIChp
bmplY3RlZFNjcmlwdC5fc3VidHlwZShvYmplY3QpID09PSAibm9kZSIpCiAgICAgICAgICAgICBv
YmplY3QgPSBvYmplY3Qub3V0ZXJIVE1MOwotICAgICAgICBJbmplY3RlZFNjcmlwdEhvc3QuY29w
eVRleHQob2JqZWN0KTsKKyAgICAgICAgQ29tbWFuZExpbmVBUElIb3N0LmNvcHlUZXh0KG9iamVj
dCk7CiAgICAgfSwKIAogICAgIGNsZWFyOiBmdW5jdGlvbigpCiAgICAgewotICAgICAgICBJbmpl
Y3RlZFNjcmlwdEhvc3QuY2xlYXJDb25zb2xlTWVzc2FnZXMoKTsKKyAgICAgICAgQ29tbWFuZExp
bmVBUElIb3N0LmNsZWFyQ29uc29sZU1lc3NhZ2VzKCk7CiAgICAgfSwKIAogICAgIC8qKgpAQCAt
MjkyLDcgKzI5NCw3IEBAIENvbW1hbmRMaW5lQVBJSW1wbC5wcm90b3R5cGUgPSB7CiAgICAgICov
CiAgICAgZ2V0RXZlbnRMaXN0ZW5lcnM6IGZ1bmN0aW9uKG5vZGUpCiAgICAgewotICAgICAgICBy
ZXR1cm4gSW5qZWN0ZWRTY3JpcHRIb3N0LmdldEV2ZW50TGlzdGVuZXJzKG5vZGUpOworICAgICAg
ICByZXR1cm4gQ29tbWFuZExpbmVBUElIb3N0LmdldEV2ZW50TGlzdGVuZXJzKG5vZGUpOwogICAg
IH0sCiAKICAgICAvKioKQEAgLTMwMCw3ICszMDIsNyBAQCBDb21tYW5kTGluZUFQSUltcGwucHJv
dG90eXBlID0gewogICAgICAqLwogICAgIF9pbnNwZWN0ZWRPYmplY3Q6IGZ1bmN0aW9uKG51bSkK
ICAgICB7Ci0gICAgICAgIHJldHVybiBJbmplY3RlZFNjcmlwdEhvc3QuaW5zcGVjdGVkT2JqZWN0
KG51bSk7CisgICAgICAgIHJldHVybiBDb21tYW5kTGluZUFQSUhvc3QuaW5zcGVjdGVkT2JqZWN0
KG51bSk7CiAgICAgfSwKIAogICAgIC8qKgpAQCAtMzM2LDYgKzMzOCwzNSBAQCBDb21tYW5kTGlu
ZUFQSUltcGwucHJvdG90eXBlID0gewogICAgIF9sb2dFdmVudDogZnVuY3Rpb24oZXZlbnQpCiAg
ICAgewogICAgICAgICBpbnNwZWN0ZWRXaW5kb3cuY29uc29sZS5sb2coZXZlbnQudHlwZSwgZXZl
bnQpOworICAgIH0sCisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0geyp9IG9iamVjdAorICAgICAq
IEByZXR1cm4geyp9CisgICAgICovCisgICAgX2luc3BlY3Q6IGZ1bmN0aW9uKG9iamVjdCkKKyAg
ICB7CisgICAgICAgIGlmIChhcmd1bWVudHMubGVuZ3RoID09PSAwKQorICAgICAgICAgICAgcmV0
dXJuOworCisgICAgICAgIHZhciBvYmplY3RJZCA9IGluamVjdGVkU2NyaXB0Ll93cmFwT2JqZWN0
KG9iamVjdCwgIiIpOworICAgICAgICB2YXIgaGludHMgPSB7fTsKKworICAgICAgICBzd2l0Y2gg
KGluamVjdGVkU2NyaXB0Ll9kZXNjcmliZShvYmplY3QpKSB7CisgICAgICAgIGNhc2UgIkRhdGFi
YXNlIjoKKyAgICAgICAgICAgIHZhciBkYXRhYmFzZUlkID0gQ29tbWFuZExpbmVBUElIb3N0LmRh
dGFiYXNlSWQob2JqZWN0KQorICAgICAgICAgICAgaWYgKGRhdGFiYXNlSWQpCisgICAgICAgICAg
ICAgICAgaGludHMuZGF0YWJhc2VJZCA9IGRhdGFiYXNlSWQ7CisgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgY2FzZSAiU3RvcmFnZSI6CisgICAgICAgICAgICB2YXIgc3RvcmFnZUlkID0gQ29t
bWFuZExpbmVBUElIb3N0LnN0b3JhZ2VJZChvYmplY3QpCisgICAgICAgICAgICBpZiAoc3RvcmFn
ZUlkKQorICAgICAgICAgICAgICAgIGhpbnRzLmRvbVN0b3JhZ2VJZCA9IEluamVjdGVkU2NyaXB0
SG9zdC5ldmFsdWF0ZSgiKCIgKyBzdG9yYWdlSWQgKyAiKSIpOworICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgIH0KKworICAgICAgICBDb21tYW5kTGluZUFQSUhvc3QuaW5zcGVjdChvYmplY3RJ
ZCwgaGludHMpOworICAgICAgICByZXR1cm4gb2JqZWN0OwogICAgIH0KIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0Q2FudmFzTW9kdWxlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdENhbnZhc01vZHVsZS5j
cHAKaW5kZXggNThiZTczOS4uZjI1MDIxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luamVjdGVkU2NyaXB0Q2FudmFzTW9kdWxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRDYW52YXNNb2R1bGUuY3BwCkBAIC00OSw2ICs0OSw3
IEBAIHVzaW5nIEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNhbnZhczo6UmVzb3VyY2VTdGF0ZTsK
IHVzaW5nIEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNhbnZhczo6VHJhY2VMb2c7CiB1c2luZyBJ
bnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDYW52YXM6OlRyYWNlTG9nSWQ7CiAKK3VzaW5nIG5hbWVz
cGFjZSBKU0M7CiB1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CkBAIC03MCw2ICs3MSwxMSBAQCBTdHJpbmcgSW5qZWN0ZWRTY3JpcHRDYW52YXNNb2R1bGU6
OnNvdXJjZSgpIGNvbnN0CiAgICAgcmV0dXJuIFN0cmluZyhyZWludGVycHJldF9jYXN0PGNvbnN0
IGNoYXIqPihJbmplY3RlZFNjcmlwdENhbnZhc01vZHVsZVNvdXJjZV9qcyksIHNpemVvZihJbmpl
Y3RlZFNjcmlwdENhbnZhc01vZHVsZVNvdXJjZV9qcykpOwogfQogCitKU0M6OkpTVmFsdWUgSW5q
ZWN0ZWRTY3JpcHRDYW52YXNNb2R1bGU6Omhvc3QoSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKiwgSlND
OjpFeGVjU3RhdGUqKSBjb25zdAoreworICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOworfQorCiBE
ZXByZWNhdGVkOjpTY3JpcHRPYmplY3QgSW5qZWN0ZWRTY3JpcHRDYW52YXNNb2R1bGU6OndyYXBD
YW52YXMyRENvbnRleHQoY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0T2JqZWN0JiBjb250ZXh0KQog
ewogICAgIHJldHVybiBjYWxsV3JhcENvbnRleHRGdW5jdGlvbigid3JhcENhbnZhczJEQ29udGV4
dCIsIGNvbnRleHQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVj
dGVkU2NyaXB0Q2FudmFzTW9kdWxlLmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0
ZWRTY3JpcHRDYW52YXNNb2R1bGUuaAppbmRleCA1MDFkMmU2Li4yYzQ0MzY5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRDYW52YXNNb2R1bGUuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRDYW52YXNNb2R1bGUu
aApAQCAtNDUsMTIgKzQ1LDEzIEBAIGNsYXNzIEluamVjdGVkU2NyaXB0TWFuYWdlcjsKIAogI2lm
IEVOQUJMRShJTlNQRUNUT1IpCiAKLWNsYXNzIEluamVjdGVkU2NyaXB0Q2FudmFzTW9kdWxlIDog
cHVibGljIEluamVjdGVkU2NyaXB0TW9kdWxlIHsKK2NsYXNzIEluamVjdGVkU2NyaXB0Q2FudmFz
TW9kdWxlIEZJTkFMIDogcHVibGljIEluamVjdGVkU2NyaXB0TW9kdWxlIHsKIHB1YmxpYzoKICAg
ICBJbmplY3RlZFNjcmlwdENhbnZhc01vZHVsZSgpOwogICAgIAotICAgIHZpcnR1YWwgU3RyaW5n
IHNvdXJjZSgpIGNvbnN0OwotICAgIHZpcnR1YWwgYm9vbCByZXR1cm5zT2JqZWN0KCkgY29uc3Qg
eyByZXR1cm4gdHJ1ZTsgfQorICAgIHZpcnR1YWwgU3RyaW5nIHNvdXJjZSgpIGNvbnN0IE9WRVJS
SURFOworICAgIHZpcnR1YWwgSlNDOjpKU1ZhbHVlIGhvc3QoSW5qZWN0ZWRTY3JpcHRNYW5hZ2Vy
KiwgSlNDOjpFeGVjU3RhdGUqKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIGJvb2wgcmV0
dXJuc09iamVjdCgpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIHRydWU7IH0KIAogICAgIHN0YXRp
YyBJbmplY3RlZFNjcmlwdENhbnZhc01vZHVsZSBtb2R1bGVGb3JTdGF0ZShJbmplY3RlZFNjcmlw
dE1hbmFnZXIqLCBKU0M6OkV4ZWNTdGF0ZSopOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRIb3N0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbmplY3RlZFNjcmlwdEhvc3QuY3BwCmluZGV4IDA3Yzc2ZTQuLmMyMzk5ZTAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdEhvc3QuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdEhvc3QuY3BwCkBAIC0y
OSwxMzYgKzI5LDE1IEBACiAgKi8KIAogI2luY2x1ZGUgImNvbmZpZy5oIgotCi0jaWYgRU5BQkxF
KElOU1BFQ1RPUikKLQogI2luY2x1ZGUgIkluamVjdGVkU2NyaXB0SG9zdC5oIgogCi0jaW5jbHVk
ZSAiRWxlbWVudC5oIgotI2luY2x1ZGUgIkZyYW1lLmgiCi0jaW5jbHVkZSAiRnJhbWVMb2FkZXIu
aCIKLSNpbmNsdWRlICJIVE1MRnJhbWVPd25lckVsZW1lbnQuaCIKLSNpbmNsdWRlICJJbmplY3Rl
ZFNjcmlwdC5oIgotI2luY2x1ZGUgIkluc3BlY3RvckFnZW50LmgiCi0jaW5jbHVkZSAiSW5zcGVj
dG9yQ2xpZW50LmgiCi0jaW5jbHVkZSAiSW5zcGVjdG9yQ29uc29sZUFnZW50LmgiCi0jaW5jbHVk
ZSAiSW5zcGVjdG9yRE9NQWdlbnQuaCIKLSNpbmNsdWRlICJJbnNwZWN0b3JET01TdG9yYWdlQWdl
bnQuaCIKLSNpbmNsdWRlICJJbnNwZWN0b3JEYXRhYmFzZUFnZW50LmgiCi0jaW5jbHVkZSAiSW5z
cGVjdG9yV2ViRnJvbnRlbmREaXNwYXRjaGVycy5oIgotI2luY2x1ZGUgIlBhc3RlYm9hcmQuaCIK
LSNpbmNsdWRlICJTdG9yYWdlLmgiCi0jaW5jbHVkZSAibWFya3VwLmgiCi0jaW5jbHVkZSA8Ymlu
ZGluZ3MvU2NyaXB0VmFsdWUuaD4KLSNpbmNsdWRlIDxpbnNwZWN0b3IvSW5zcGVjdG9yVmFsdWVz
Lmg+Ci0jaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgotI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMu
aD4KLQotI2lmIEVOQUJMRShTUUxfREFUQUJBU0UpCi0jaW5jbHVkZSAiRGF0YWJhc2UuaCIKLSNl
bmRpZgotCi11c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOworI2lmIEVOQUJMRShJTlNQRUNUT1Ip
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogUGFzc1JlZlB0cjxJbmplY3RlZFNjcmlwdEhvc3Q+
IEluamVjdGVkU2NyaXB0SG9zdDo6Y3JlYXRlKCkKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3
IEluamVjdGVkU2NyaXB0SG9zdCgpKTsKLX0KLQotSW5qZWN0ZWRTY3JpcHRIb3N0OjpJbmplY3Rl
ZFNjcmlwdEhvc3QoKQotICAgIDogbV9pbnNwZWN0b3JBZ2VudCgwKQotICAgICwgbV9jb25zb2xl
QWdlbnQoMCkKLSNpZiBFTkFCTEUoU1FMX0RBVEFCQVNFKQotICAgICwgbV9kYXRhYmFzZUFnZW50
KDApCi0jZW5kaWYKLSAgICAsIG1fZG9tU3RvcmFnZUFnZW50KDApCi0gICAgLCBtX2RvbUFnZW50
KDApCi17Ci0gICAgbV9kZWZhdWx0SW5zcGVjdGFibGVPYmplY3QgPSBhZG9wdFB0cihuZXcgSW5z
cGVjdGFibGVPYmplY3QoKSk7Ci19Ci0KLUluamVjdGVkU2NyaXB0SG9zdDo6fkluamVjdGVkU2Ny
aXB0SG9zdCgpCi17Ci19Ci0KLXZvaWQgSW5qZWN0ZWRTY3JpcHRIb3N0OjpkaXNjb25uZWN0KCkK
LXsKLSAgICBtX2luc3BlY3RvckFnZW50ID0gMDsKLSAgICBtX2NvbnNvbGVBZ2VudCA9IDA7Ci0j
aWYgRU5BQkxFKFNRTF9EQVRBQkFTRSkKLSAgICBtX2RhdGFiYXNlQWdlbnQgPSAwOwotI2VuZGlm
Ci0gICAgbV9kb21TdG9yYWdlQWdlbnQgPSAwOwotICAgIG1fZG9tQWdlbnQgPSAwOwotfQotCi12
b2lkIEluamVjdGVkU2NyaXB0SG9zdDo6aW5zcGVjdEltcGwoUGFzc1JlZlB0cjxJbnNwZWN0b3JW
YWx1ZT4gb2JqZWN0LCBQYXNzUmVmUHRyPEluc3BlY3RvclZhbHVlPiBoaW50cykKLXsKLSAgICBp
ZiAobV9pbnNwZWN0b3JBZ2VudCkgewotICAgICAgICBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVp
bGRlcjo6UnVudGltZTo6UmVtb3RlT2JqZWN0PiByZW1vdGVPYmplY3QgPSBJbnNwZWN0b3I6OlR5
cGVCdWlsZGVyOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q6OnJ1bnRpbWVDYXN0KG9iamVjdCk7Ci0g
ICAgICAgIG1faW5zcGVjdG9yQWdlbnQtPmluc3BlY3QocmVtb3RlT2JqZWN0LCBoaW50cy0+YXNP
YmplY3QoKSk7Ci0gICAgfQotfQotCi12b2lkIEluamVjdGVkU2NyaXB0SG9zdDo6Z2V0RXZlbnRM
aXN0ZW5lcnNJbXBsKE5vZGUqIG5vZGUsIFZlY3RvcjxFdmVudExpc3RlbmVySW5mbz4mIGxpc3Rl
bmVyc0FycmF5KQotewotICAgIGlmIChtX2RvbUFnZW50KQotICAgICAgICBtX2RvbUFnZW50LT5n
ZXRFdmVudExpc3RlbmVycyhub2RlLCBsaXN0ZW5lcnNBcnJheSwgZmFsc2UpOwotfQotCi12b2lk
IEluamVjdGVkU2NyaXB0SG9zdDo6Y2xlYXJDb25zb2xlTWVzc2FnZXMoKQotewotICAgIGlmICht
X2NvbnNvbGVBZ2VudCkgewotICAgICAgICBFcnJvclN0cmluZyBlcnJvcjsKLSAgICAgICAgbV9j
b25zb2xlQWdlbnQtPmNsZWFyTWVzc2FnZXMoJmVycm9yKTsKLSAgICB9Ci19Ci0KLXZvaWQgSW5q
ZWN0ZWRTY3JpcHRIb3N0Ojpjb3B5VGV4dChjb25zdCBTdHJpbmcmIHRleHQpCi17Ci0gICAgUGFz
dGVib2FyZDo6Y3JlYXRlRm9yQ29weUFuZFBhc3RlKCktPndyaXRlUGxhaW5UZXh0KHRleHQsIFBh
c3RlYm9hcmQ6OkNhbm5vdFNtYXJ0UmVwbGFjZSk7Ci19Ci0KLURlcHJlY2F0ZWQ6OlNjcmlwdFZh
bHVlIEluamVjdGVkU2NyaXB0SG9zdDo6SW5zcGVjdGFibGVPYmplY3Q6OmdldChKU0M6OkV4ZWNT
dGF0ZSopCi17Ci0gICAgcmV0dXJuIERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlKCk7Ci19OwotCi12
b2lkIEluamVjdGVkU2NyaXB0SG9zdDo6YWRkSW5zcGVjdGVkT2JqZWN0KFBhc3NPd25QdHI8SW5q
ZWN0ZWRTY3JpcHRIb3N0OjpJbnNwZWN0YWJsZU9iamVjdD4gb2JqZWN0KQotewotICAgIG1faW5z
cGVjdGVkT2JqZWN0cy5pbnNlcnQoMCwgb2JqZWN0KTsKLSAgICB3aGlsZSAobV9pbnNwZWN0ZWRP
YmplY3RzLnNpemUoKSA+IDUpCi0gICAgICAgIG1faW5zcGVjdGVkT2JqZWN0cy5yZW1vdmVMYXN0
KCk7Ci19Ci0KLXZvaWQgSW5qZWN0ZWRTY3JpcHRIb3N0OjpjbGVhckluc3BlY3RlZE9iamVjdHMo
KQotewotICAgIG1faW5zcGVjdGVkT2JqZWN0cy5jbGVhcigpOwotfQotCi1JbmplY3RlZFNjcmlw
dEhvc3Q6Okluc3BlY3RhYmxlT2JqZWN0KiBJbmplY3RlZFNjcmlwdEhvc3Q6Omluc3BlY3RlZE9i
amVjdCh1bnNpZ25lZCBpbnQgbnVtKQotewotICAgIGlmIChudW0gPj0gbV9pbnNwZWN0ZWRPYmpl
Y3RzLnNpemUoKSkKLSAgICAgICAgcmV0dXJuIG1fZGVmYXVsdEluc3BlY3RhYmxlT2JqZWN0Lmdl
dCgpOwotICAgIHJldHVybiBtX2luc3BlY3RlZE9iamVjdHNbbnVtXS5nZXQoKTsKLX0KLQotI2lm
IEVOQUJMRShTUUxfREFUQUJBU0UpCi1TdHJpbmcgSW5qZWN0ZWRTY3JpcHRIb3N0OjpkYXRhYmFz
ZUlkSW1wbChEYXRhYmFzZSogZGF0YWJhc2UpCi17Ci0gICAgaWYgKG1fZGF0YWJhc2VBZ2VudCkK
LSAgICAgICAgcmV0dXJuIG1fZGF0YWJhc2VBZ2VudC0+ZGF0YWJhc2VJZChkYXRhYmFzZSk7Ci0g
ICAgcmV0dXJuIFN0cmluZygpOwotfQotI2VuZGlmCi0KLVN0cmluZyBJbmplY3RlZFNjcmlwdEhv
c3Q6OnN0b3JhZ2VJZEltcGwoU3RvcmFnZSogc3RvcmFnZSkKLXsKLSAgICBpZiAobV9kb21TdG9y
YWdlQWdlbnQpCi0gICAgICAgIHJldHVybiBtX2RvbVN0b3JhZ2VBZ2VudC0+c3RvcmFnZUlkKHN0
b3JhZ2UpOwotICAgIHJldHVybiBTdHJpbmcoKTsKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IElu
amVjdGVkU2NyaXB0SG9zdCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdEhvc3QuaCBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdEhvc3QuaAppbmRleCAxMTlhNDUwLi44
ZjgwODQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3Jp
cHRIb3N0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0SG9z
dC5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNyBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDcsIDIwMTMgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CkBAIC03LDEzICs3LDEz
IEBACiAgKiBhcmUgbWV0OgogICoKICAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4gCisgKiAgICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgogICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CiAgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uIAorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCiAgKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBs
ZSBDb21wdXRlciwgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgogICogICAgIGl0cyBj
b250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRl
cml2ZWQKLSAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3
cml0dGVuIHBlcm1pc3Npb24uIAorICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNw
ZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KICAqCiAgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQog
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUgSU1QTElFRApAQCAtMzAsOTUgKzMwLDI4IEBACiAjaWZuZGVmIEluamVjdGVk
U2NyaXB0SG9zdF9oCiAjZGVmaW5lIEluamVjdGVkU2NyaXB0SG9zdF9oCiAKLSNpbmNsdWRlICJD
b25zb2xlVHlwZXMuaCIKLSNpbmNsdWRlICJJbnNwZWN0b3JBZ2VudC5oIgogI2luY2x1ZGUgIlNj
cmlwdFN0YXRlLmgiCiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KLSNpbmNsdWRlIDx3dGYv
VmVjdG9yLmg+CisjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KIAogbmFtZXNwYWNlIERlcHJl
Y2F0ZWQgewogY2xhc3MgU2NyaXB0VmFsdWU7CiB9CiAKLW5hbWVzcGFjZSBJbnNwZWN0b3Igewot
Y2xhc3MgSW5zcGVjdG9yT2JqZWN0OwotY2xhc3MgSW5zcGVjdG9yVmFsdWU7Ci19Ci0KIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgRGF0YWJhc2U7Ci1jbGFzcyBJbmplY3RlZFNjcmlwdDsK
LWNsYXNzIEluc3BlY3RvckFnZW50OwotY2xhc3MgSW5zcGVjdG9yQ29uc29sZUFnZW50OwotY2xh
c3MgSW5zcGVjdG9yRE9NQWdlbnQ7Ci1jbGFzcyBJbnNwZWN0b3JET01TdG9yYWdlQWdlbnQ7Ci1j
bGFzcyBJbnNwZWN0b3JEYXRhYmFzZUFnZW50OwogY2xhc3MgTm9kZTsKLWNsYXNzIFN0b3JhZ2U7
Ci0KLXN0cnVjdCBFdmVudExpc3RlbmVySW5mbzsKIAogY2xhc3MgSW5qZWN0ZWRTY3JpcHRIb3N0
IDogcHVibGljIFJlZkNvdW50ZWQ8SW5qZWN0ZWRTY3JpcHRIb3N0PiB7CiBwdWJsaWM6CiAgICAg
c3RhdGljIFBhc3NSZWZQdHI8SW5qZWN0ZWRTY3JpcHRIb3N0PiBjcmVhdGUoKTsKLSAgICB+SW5q
ZWN0ZWRTY3JpcHRIb3N0KCk7Ci0KLSAgICB2b2lkIGluaXQoSW5zcGVjdG9yQWdlbnQqIGluc3Bl
Y3RvckFnZW50Ci0gICAgICAgICAgICAsIEluc3BlY3RvckNvbnNvbGVBZ2VudCogY29uc29sZUFn
ZW50Ci0jaWYgRU5BQkxFKFNRTF9EQVRBQkFTRSkKLSAgICAgICAgICAgICwgSW5zcGVjdG9yRGF0
YWJhc2VBZ2VudCogZGF0YWJhc2VBZ2VudAotI2VuZGlmCi0gICAgICAgICAgICAsIEluc3BlY3Rv
ckRPTVN0b3JhZ2VBZ2VudCogZG9tU3RvcmFnZUFnZW50Ci0gICAgICAgICAgICAsIEluc3BlY3Rv
ckRPTUFnZW50KiBkb21BZ2VudAotICAgICAgICApCi0gICAgewotICAgICAgICBtX2luc3BlY3Rv
ckFnZW50ID0gaW5zcGVjdG9yQWdlbnQ7Ci0gICAgICAgIG1fY29uc29sZUFnZW50ID0gY29uc29s
ZUFnZW50OwotI2lmIEVOQUJMRShTUUxfREFUQUJBU0UpCi0gICAgICAgIG1fZGF0YWJhc2VBZ2Vu
dCA9IGRhdGFiYXNlQWdlbnQ7Ci0jZW5kaWYKLSAgICAgICAgbV9kb21TdG9yYWdlQWdlbnQgPSBk
b21TdG9yYWdlQWdlbnQ7Ci0gICAgICAgIG1fZG9tQWdlbnQgPSBkb21BZ2VudDsKLSAgICB9Cisg
ICAgfkluamVjdGVkU2NyaXB0SG9zdCgpIHsgfQogCiAgICAgc3RhdGljIE5vZGUqIHNjcmlwdFZh
bHVlQXNOb2RlKERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlKTsKICAgICBzdGF0aWMgRGVwcmVjYXRl
ZDo6U2NyaXB0VmFsdWUgbm9kZUFzU2NyaXB0VmFsdWUoSlNDOjpFeGVjU3RhdGUqLCBOb2RlKik7
CiAKLSAgICB2b2lkIGRpc2Nvbm5lY3QoKTsKLQotICAgIGNsYXNzIEluc3BlY3RhYmxlT2JqZWN0
IHsKLSAgICAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7Ci0gICAgcHVibGljOgotICAgICAg
ICB2aXJ0dWFsIERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlIGdldChKU0M6OkV4ZWNTdGF0ZSopOwot
ICAgICAgICB2aXJ0dWFsIH5JbnNwZWN0YWJsZU9iamVjdCgpIHsgfQotICAgIH07Ci0gICAgdm9p
ZCBhZGRJbnNwZWN0ZWRPYmplY3QoUGFzc093blB0cjxJbnNwZWN0YWJsZU9iamVjdD4pOwotICAg
IHZvaWQgY2xlYXJJbnNwZWN0ZWRPYmplY3RzKCk7Ci0gICAgSW5zcGVjdGFibGVPYmplY3QqIGlu
c3BlY3RlZE9iamVjdCh1bnNpZ25lZCBpbnQgbnVtKTsKLQotICAgIHZvaWQgaW5zcGVjdEltcGwo
UGFzc1JlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3RvclZhbHVlPiBvYmplY3RUb0luc3BlY3QsIFBh
c3NSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JWYWx1ZT4gaGludHMpOwotICAgIHZvaWQgZ2V0
RXZlbnRMaXN0ZW5lcnNJbXBsKE5vZGUqLCBWZWN0b3I8RXZlbnRMaXN0ZW5lckluZm8+JiBsaXN0
ZW5lcnNBcnJheSk7Ci0KLSAgICB2b2lkIGNsZWFyQ29uc29sZU1lc3NhZ2VzKCk7Ci0gICAgdm9p
ZCBjb3B5VGV4dChjb25zdCBTdHJpbmcmIHRleHQpOwotI2lmIEVOQUJMRShTUUxfREFUQUJBU0Up
Ci0gICAgU3RyaW5nIGRhdGFiYXNlSWRJbXBsKERhdGFiYXNlKik7Ci0jZW5kaWYKLSAgICBTdHJp
bmcgc3RvcmFnZUlkSW1wbChTdG9yYWdlKik7Ci0KIHByaXZhdGU6Ci0gICAgSW5qZWN0ZWRTY3Jp
cHRIb3N0KCk7Ci0KLSAgICBJbnNwZWN0b3JBZ2VudCogbV9pbnNwZWN0b3JBZ2VudDsKLSAgICBJ
bnNwZWN0b3JDb25zb2xlQWdlbnQqIG1fY29uc29sZUFnZW50OwotI2lmIEVOQUJMRShTUUxfREFU
QUJBU0UpCi0gICAgSW5zcGVjdG9yRGF0YWJhc2VBZ2VudCogbV9kYXRhYmFzZUFnZW50OwotI2Vu
ZGlmCi0gICAgSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50KiBtX2RvbVN0b3JhZ2VBZ2VudDsKLSAg
ICBJbnNwZWN0b3JET01BZ2VudCogbV9kb21BZ2VudDsKLSAgICBWZWN0b3I8T3duUHRyPEluc3Bl
Y3RhYmxlT2JqZWN0Pj4gbV9pbnNwZWN0ZWRPYmplY3RzOwotICAgIE93blB0cjxJbnNwZWN0YWJs
ZU9iamVjdD4gbV9kZWZhdWx0SW5zcGVjdGFibGVPYmplY3Q7CisgICAgSW5qZWN0ZWRTY3JpcHRI
b3N0KCkgeyB9CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRIb3N0LmlkbCBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdEhvc3QuaWRsCmluZGV4IGQ4NjYzZWQuLjZhODhh
NmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdEhv
c3QuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdEhvc3Qu
aWRsCkBAIC0zNSwyMCArMzUsMTEgQEAKICAgICBDb25kaXRpb25hbD1JTlNQRUNUT1IsCiAgICAg
SW1wbGVtZW50YXRpb25MYWNrc1ZUYWJsZQogXSBpbnRlcmZhY2UgSW5qZWN0ZWRTY3JpcHRIb3N0
IHsKLSAgICB2b2lkIGNsZWFyQ29uc29sZU1lc3NhZ2VzKCk7Ci0KLSAgICB2b2lkIGNvcHlUZXh0
KERPTVN0cmluZyB0ZXh0KTsKLSAgICBbQ3VzdG9tXSB2b2lkIGluc3BlY3QoYW55IG9iamVjdElk
LCBhbnkgaGludHMpOwotICAgIFtDdXN0b21dIGFueSBpbnNwZWN0ZWRPYmplY3QoaW50IG51bSk7
CiAgICAgW0N1c3RvbV0gYW55IGludGVybmFsQ29uc3RydWN0b3JOYW1lKGFueSBvYmplY3QpOwog
ICAgIFtDdXN0b21dIGJvb2xlYW4gaXNIVE1MQWxsQ29sbGVjdGlvbihhbnkgb2JqZWN0KTsKICAg
ICBbQ3VzdG9tXSBET01TdHJpbmcgdHlwZShhbnkgb2JqZWN0KTsKICAgICBbQ3VzdG9tXSBhbnkg
ZnVuY3Rpb25EZXRhaWxzKGFueSBvYmplY3QpOwogICAgIFtDdXN0b21dIEFycmF5IGdldEludGVy
bmFsUHJvcGVydGllcyhhbnkgb2JqZWN0KTsKLSAgICBbQ3VzdG9tXSBBcnJheSBnZXRFdmVudExp
c3RlbmVycyhOb2RlIG5vZGUpOwogCiAgICAgW0N1c3RvbV0gcmVhZG9ubHkgYXR0cmlidXRlIGFu
eSBldmFsdWF0ZTsKLQotICAgIFtDdXN0b21dIERPTVN0cmluZyBkYXRhYmFzZUlkKGFueSBkYXRh
YmFzZSk7Ci0gICAgW0N1c3RvbV0gRE9NU3RyaW5nIHN0b3JhZ2VJZChhbnkgc3RvcmFnZSk7CiB9
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0TWFu
YWdlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRNYW5hZ2Vy
LmNwcAppbmRleCBjYjg2NDgzLi5kOWU5OTlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmNwcApAQCAtNjksNyArNjksNiBAQCBJbmpl
Y3RlZFNjcmlwdE1hbmFnZXI6On5JbmplY3RlZFNjcmlwdE1hbmFnZXIoKQogCiB2b2lkIEluamVj
dGVkU2NyaXB0TWFuYWdlcjo6ZGlzY29ubmVjdCgpCiB7Ci0gICAgbV9pbmplY3RlZFNjcmlwdEhv
c3QtPmRpc2Nvbm5lY3QoKTsKICAgICBtX2luamVjdGVkU2NyaXB0SG9zdC5jbGVhcigpOwogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRNYW5h
Z2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmgK
aW5kZXggZDYxZmQyOC4uMTMzYjFkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luamVjdGVkU2NyaXB0TWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbmplY3RlZFNjcmlwdE1hbmFnZXIuaApAQCAtNTEsNiArNTEsNyBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiBjbGFzcyBET01XaW5kb3c7CiBjbGFzcyBJbmplY3RlZFNjcmlwdDsKIGNsYXNzIElu
amVjdGVkU2NyaXB0SG9zdDsKK2NsYXNzIENvbW1hbmRMaW5lQVBJSG9zdDsKIAogY2xhc3MgSW5q
ZWN0ZWRTY3JpcHRNYW5hZ2VyIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShJbmplY3RlZFNj
cmlwdE1hbmFnZXIpOyBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKQEAgLTU5LDkgKzYwLDEwIEBA
IHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc093blB0cjxJbmplY3RlZFNjcmlwdE1hbmFnZXI+IGNy
ZWF0ZUZvcldvcmtlcigpOwogICAgIHZpcnR1YWwgfkluamVjdGVkU2NyaXB0TWFuYWdlcigpOwog
Ci0gICAgdm9pZCBkaXNjb25uZWN0KCk7CisgICAgdmlydHVhbCB2b2lkIGRpc2Nvbm5lY3QoKTsK
IAogICAgIEluamVjdGVkU2NyaXB0SG9zdCogaW5qZWN0ZWRTY3JpcHRIb3N0KCk7CisgICAgdmly
dHVhbCBDb21tYW5kTGluZUFQSUhvc3QqIGNvbW1hbmRMaW5lQVBJSG9zdCgpIGNvbnN0IHsgcmV0
dXJuIG51bGxwdHI7IH0KIAogICAgIEluamVjdGVkU2NyaXB0IGluamVjdGVkU2NyaXB0Rm9yKEpT
Qzo6RXhlY1N0YXRlKik7CiAgICAgSW5qZWN0ZWRTY3JpcHQgaW5qZWN0ZWRTY3JpcHRGb3JJZChp
bnQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0
TW9kdWxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdE1vZHVs
ZS5jcHAKaW5kZXggMDc5N2I3OC4uZWNjOTc5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luamVjdGVkU2NyaXB0TW9kdWxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRNb2R1bGUuY3BwCkBAIC03MSw2ICs3MSw3IEBAIHZvaWQg
SW5qZWN0ZWRTY3JpcHRNb2R1bGU6OmVuc3VyZUluamVjdGVkKEluamVjdGVkU2NyaXB0TWFuYWdl
ciogaW5qZWN0ZWRTY3JpcHRNCiAgICAgICAgIERlcHJlY2F0ZWQ6OlNjcmlwdEZ1bmN0aW9uQ2Fs
bCBmdW5jdGlvbihpbmplY3RlZFNjcmlwdC5pbmplY3RlZFNjcmlwdE9iamVjdCgpLCAiaW5qZWN0
TW9kdWxlIiwgV2ViQ29yZTo6ZnVuY3Rpb25DYWxsSGFuZGxlckZyb21BbnlUaHJlYWQpOwogICAg
ICAgICBmdW5jdGlvbi5hcHBlbmRBcmd1bWVudChuYW1lKCkpOwogICAgICAgICBmdW5jdGlvbi5h
cHBlbmRBcmd1bWVudChzb3VyY2UoKSk7CisgICAgICAgIGZ1bmN0aW9uLmFwcGVuZEFyZ3VtZW50
KGhvc3QoaW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLCBpbmplY3RlZFNjcmlwdC5zY3JpcHRTdGF0ZSgp
KSk7CiAgICAgICAgIHJlc3VsdFZhbHVlID0gaW5qZWN0ZWRTY3JpcHQuY2FsbEZ1bmN0aW9uV2l0
aEV2YWxFbmFibGVkKGZ1bmN0aW9uLCBoYWRFeGNlcHRpb24pOwogICAgICAgICBpZiAoaGFkRXhj
ZXB0aW9uIHx8IChyZXR1cm5zT2JqZWN0KCkgJiYgKHJlc3VsdFZhbHVlLmhhc05vVmFsdWUoKSB8
fCAhcmVzdWx0VmFsdWUuaXNPYmplY3QoKSkpKSB7CiAgICAgICAgICAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNj
cmlwdE1vZHVsZS5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0TW9k
dWxlLmgKaW5kZXggZmViYTM0Ni4uNzM1MTdkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luamVjdGVkU2NyaXB0TW9kdWxlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luamVjdGVkU2NyaXB0TW9kdWxlLmgKQEAgLTM4LDYgKzM4LDEwIEBACiAKICNpZiBF
TkFCTEUoSU5TUEVDVE9SKQogCituYW1lc3BhY2UgSlNDIHsKK2NsYXNzIEpTVmFsdWU7Cit9CisK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyOwpAQCAt
NDUsNiArNDksNyBAQCBjbGFzcyBJbmplY3RlZFNjcmlwdE1hbmFnZXI7CiBjbGFzcyBJbmplY3Rl
ZFNjcmlwdE1vZHVsZSA6IHB1YmxpYyBJbmplY3RlZFNjcmlwdEJhc2UgewogcHVibGljOgogICAg
IHZpcnR1YWwgU3RyaW5nIHNvdXJjZSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIEpTQzo6SlNW
YWx1ZSBob3N0KEluamVjdGVkU2NyaXB0TWFuYWdlciosIEpTQzo6RXhlY1N0YXRlKikgY29uc3Qg
PSAwOwogICAgIHZpcnR1YWwgYm9vbCByZXR1cm5zT2JqZWN0KCkgY29uc3QgPSAwOwogCiBwcm90
ZWN0ZWQ6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3Jp
cHRTb3VyY2UuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRTb3Vy
Y2UuanMKaW5kZXggMjA2NDZjMy4uOWM4OGM3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luamVjdGVkU2NyaXB0U291cmNlLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbmplY3RlZFNjcmlwdFNvdXJjZS5qcwpAQCAtMTI3LDM1ICsxMjcsOCBAQCBJbmpl
Y3RlZFNjcmlwdC5wcm90b3R5cGUgPSB7CiAgICAgICovCiAgICAgaW5zcGVjdE5vZGU6IGZ1bmN0
aW9uKG9iamVjdCkKICAgICB7Ci0gICAgICAgIHRoaXMuX2luc3BlY3Qob2JqZWN0KTsKLSAgICB9
LAotCi0gICAgLyoqCi0gICAgICogQHBhcmFtIHsqfSBvYmplY3QKLSAgICAgKiBAcmV0dXJuIHsq
fQotICAgICAqLwotICAgIF9pbnNwZWN0OiBmdW5jdGlvbihvYmplY3QpCi0gICAgewotICAgICAg
ICBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PT0gMCkKLSAgICAgICAgICAgIHJldHVybjsKLQotICAg
ICAgICB2YXIgb2JqZWN0SWQgPSB0aGlzLl93cmFwT2JqZWN0KG9iamVjdCwgIiIpOwotICAgICAg
ICB2YXIgaGludHMgPSB7fTsKLQotICAgICAgICBzd2l0Y2ggKGluamVjdGVkU2NyaXB0Ll9kZXNj
cmliZShvYmplY3QpKSB7Ci0gICAgICAgICAgICBjYXNlICJEYXRhYmFzZSI6Ci0gICAgICAgICAg
ICAgICAgdmFyIGRhdGFiYXNlSWQgPSBJbmplY3RlZFNjcmlwdEhvc3QuZGF0YWJhc2VJZChvYmpl
Y3QpCi0gICAgICAgICAgICAgICAgaWYgKGRhdGFiYXNlSWQpCi0gICAgICAgICAgICAgICAgICAg
IGhpbnRzLmRhdGFiYXNlSWQgPSBkYXRhYmFzZUlkOwotICAgICAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICAgICAgY2FzZSAiU3RvcmFnZSI6Ci0gICAgICAgICAgICAgICAgdmFyIHN0b3JhZ2VJ
ZCA9IEluamVjdGVkU2NyaXB0SG9zdC5zdG9yYWdlSWQob2JqZWN0KQotICAgICAgICAgICAgICAg
IGlmIChzdG9yYWdlSWQpCi0gICAgICAgICAgICAgICAgICAgIGhpbnRzLmRvbVN0b3JhZ2VJZCA9
IEluamVjdGVkU2NyaXB0SG9zdC5ldmFsdWF0ZSgiKCIgKyBzdG9yYWdlSWQgKyAiKSIpOwotICAg
ICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIEluamVjdGVkU2NyaXB0SG9z
dC5pbnNwZWN0KG9iamVjdElkLCBoaW50cyk7Ci0gICAgICAgIHJldHVybiBvYmplY3Q7CisgICAg
ICAgIGlmICh0aGlzLl9jb21tYW5kTGluZUFQSUltcGwpCisgICAgICAgICAgICB0aGlzLl9jb21t
YW5kTGluZUFQSUltcGwuaW5zcGVjdChvYmplY3QpOwogICAgIH0sCiAKICAgICAvKioKQEAgLTY5
NCw3ICs2NjcsNyBAQCBJbmplY3RlZFNjcmlwdC5wcm90b3R5cGUgPSB7CiAgICAgICogQHBhcmFt
IHtzdHJpbmd9IHNvdXJjZQogICAgICAqIEByZXR1cm4ge09iamVjdH0KICAgICAgKi8KLSAgICBp
bmplY3RNb2R1bGU6IGZ1bmN0aW9uKG5hbWUsIHNvdXJjZSkKKyAgICBpbmplY3RNb2R1bGU6IGZ1
bmN0aW9uKG5hbWUsIHNvdXJjZSwgaG9zdCkKICAgICB7CiAgICAgICAgIGRlbGV0ZSB0aGlzLl9t
b2R1bGVzW25hbWVdOwogICAgICAgICB2YXIgbW9kdWxlRnVuY3Rpb24gPSBJbmplY3RlZFNjcmlw
dEhvc3QuZXZhbHVhdGUoIigiICsgc291cmNlICsgIikiKTsKQEAgLTcwNCw3ICs2NzcsNyBAQCBJ
bmplY3RlZFNjcmlwdC5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICAgICAgaW5zcGVjdGVkR2xv
YmFsT2JqZWN0LmNvbnNvbGUuZXJyb3IoIldlYiBJbnNwZWN0b3IgZXJyb3I6IEEgZnVuY3Rpb24g
d2FzIGV4cGVjdGVkIGZvciBtb2R1bGUgJXMgZXZhbHVhdGlvbiIsIG5hbWUpOwogICAgICAgICAg
ICAgcmV0dXJuIG51bGw7CiAgICAgICAgIH0KLSAgICAgICAgdmFyIG1vZHVsZSA9IG1vZHVsZUZ1
bmN0aW9uLmNhbGwoaW5zcGVjdGVkR2xvYmFsT2JqZWN0LCBJbmplY3RlZFNjcmlwdEhvc3QsIGlu
c3BlY3RlZEdsb2JhbE9iamVjdCwgaW5qZWN0ZWRTY3JpcHRJZCwgdGhpcyk7CisgICAgICAgIHZh
ciBtb2R1bGUgPSBtb2R1bGVGdW5jdGlvbi5jYWxsKGluc3BlY3RlZEdsb2JhbE9iamVjdCwgSW5q
ZWN0ZWRTY3JpcHRIb3N0LCBpbnNwZWN0ZWRHbG9iYWxPYmplY3QsIGluamVjdGVkU2NyaXB0SWQs
IHRoaXMsIGhvc3QpOwogICAgICAgICB0aGlzLl9tb2R1bGVzW25hbWVdID0gbW9kdWxlOwogICAg
ICAgICByZXR1cm4gbW9kdWxlOwogICAgIH0sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yQ29uc29sZUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JDb25zb2xlQWdlbnQuY3BwCmluZGV4IDAxOWMyOTUuLjI4YTQwOWUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb25zb2xlQWdlbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb25zb2xlQWdlbnQu
Y3BwCkBAIC0yOSwxMCArMjksMTAgQEAKIAogI2luY2x1ZGUgIkluc3BlY3RvckNvbnNvbGVBZ2Vu
dC5oIgogCisjaW5jbHVkZSAiQ29tbWFuZExpbmVBUElIb3N0LmgiCiAjaW5jbHVkZSAiQ29uc29s
ZS5oIgogI2luY2x1ZGUgIkNvbnNvbGVNZXNzYWdlLmgiCiAjaW5jbHVkZSAiRE9NV2luZG93Lmgi
Ci0jaW5jbHVkZSAiSW5qZWN0ZWRTY3JpcHRIb3N0LmgiCiAjaW5jbHVkZSAiSW5qZWN0ZWRTY3Jp
cHRNYW5hZ2VyLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yV2ViRnJvbnRlbmREaXNwYXRjaGVycy5o
IgogI2luY2x1ZGUgIkluc3RydW1lbnRpbmdBZ2VudHMuaCIKQEAgLTMxOSwxMCArMzE5LDEwIEBA
IHZvaWQgSW5zcGVjdG9yQ29uc29sZUFnZW50OjphZGRDb25zb2xlTWVzc2FnZShQYXNzT3duUHRy
PENvbnNvbGVNZXNzYWdlPiBjb25zb2xlCiAgICAgfQogfQogCi1jbGFzcyBJbnNwZWN0YWJsZUhl
YXBPYmplY3QgOiBwdWJsaWMgSW5qZWN0ZWRTY3JpcHRIb3N0OjpJbnNwZWN0YWJsZU9iamVjdCB7
CitjbGFzcyBJbnNwZWN0YWJsZUhlYXBPYmplY3QgRklOQUwgOiBwdWJsaWMgQ29tbWFuZExpbmVB
UElIb3N0OjpJbnNwZWN0YWJsZU9iamVjdCB7CiBwdWJsaWM6CiAgICAgZXhwbGljaXQgSW5zcGVj
dGFibGVIZWFwT2JqZWN0KGludCBoZWFwT2JqZWN0SWQpIDogbV9oZWFwT2JqZWN0SWQoaGVhcE9i
amVjdElkKSB7IH0KLSAgICB2aXJ0dWFsIERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlIGdldChKU0M6
OkV4ZWNTdGF0ZSopCisgICAgdmlydHVhbCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSBnZXQoSlND
OjpFeGVjU3RhdGUqKSBPVkVSUklERQogICAgIHsKICAgICAgICAgcmV0dXJuIFNjcmlwdFByb2Zp
bGVyOjpvYmplY3RCeUhlYXBPYmplY3RJZChtX2hlYXBPYmplY3RJZCk7CiAgICAgfQpAQCAtMzMy
LDcgKzMzMiw4IEBAIHByaXZhdGU6CiAKIHZvaWQgSW5zcGVjdG9yQ29uc29sZUFnZW50OjphZGRJ
bnNwZWN0ZWRIZWFwT2JqZWN0KEVycm9yU3RyaW5nKiwgaW50IGluc3BlY3RlZEhlYXBPYmplY3RJ
ZCkKIHsKLSAgICBtX2luamVjdGVkU2NyaXB0TWFuYWdlci0+aW5qZWN0ZWRTY3JpcHRIb3N0KCkt
PmFkZEluc3BlY3RlZE9iamVjdChhZG9wdFB0cihuZXcgSW5zcGVjdGFibGVIZWFwT2JqZWN0KGlu
c3BlY3RlZEhlYXBPYmplY3RJZCkpKTsKKyAgICBpZiAoQ29tbWFuZExpbmVBUElIb3N0KiBjb21t
YW5kTGluZUFQSUhvc3QgPSBtX2luamVjdGVkU2NyaXB0TWFuYWdlci0+Y29tbWFuZExpbmVBUElI
b3N0KCkpCisgICAgICAgIGNvbW1hbmRMaW5lQVBJSG9zdC0+YWRkSW5zcGVjdGVkT2JqZWN0KGFk
b3B0UHRyKG5ldyBJbnNwZWN0YWJsZUhlYXBPYmplY3QoaW5zcGVjdGVkSGVhcE9iamVjdElkKSkp
OwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHAKaW5kZXggYjYyYzRhNi4uYjI5ODZkYyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcApA
QCAtMzQsNiArMzQsNyBAQAogCiAjaW5jbHVkZSAiSW5zcGVjdG9yQ29udHJvbGxlci5oIgogCisj
aW5jbHVkZSAiQ29tbWFuZExpbmVBUElIb3N0LmgiCiAjaW5jbHVkZSAiRE9NV3JhcHBlcldvcmxk
LmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCiAjaW5jbHVkZSAiSWRlbnRpZmllcnNG
YWN0b3J5LmgiCkBAIC04OSw2ICs5MCw4IEBAIEluc3BlY3RvckNvbnRyb2xsZXI6Okluc3BlY3Rv
ckNvbnRyb2xsZXIoUGFnZSogcGFnZSwgSW5zcGVjdG9yQ2xpZW50KiBpbnNwZWN0b3JDCiAgICAg
LCBtX2hhc1JlbW90ZUZyb250ZW5kKGZhbHNlKQogI2VuZGlmCiB7CisgICAgQVNTRVJUX0FSRyhp
bnNwZWN0b3JDbGllbnQsIGluc3BlY3RvckNsaWVudCk7CisKICAgICBPd25QdHI8SW5zcGVjdG9y
QWdlbnQ+IGluc3BlY3RvckFnZW50UHRyKEluc3BlY3RvckFnZW50OjpjcmVhdGUocGFnZSwgbV9p
bnN0cnVtZW50aW5nQWdlbnRzLmdldCgpKSk7CiAgICAgbV9pbnNwZWN0b3JBZ2VudCA9IGluc3Bl
Y3RvckFnZW50UHRyLmdldCgpOwogICAgIG1fYWdlbnRzLmFwcGVuZChpbnNwZWN0b3JBZ2VudFB0
ci5yZWxlYXNlKCkpOwpAQCAtMTY0LDE1ICsxNjcsMTcgQEAgSW5zcGVjdG9yQ29udHJvbGxlcjo6
SW5zcGVjdG9yQ29udHJvbGxlcihQYWdlKiBwYWdlLCBJbnNwZWN0b3JDbGllbnQqIGluc3BlY3Rv
ckMKICAgICBtX2FnZW50cy5hcHBlbmQoSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQ6OmNyZWF0ZSht
X2luc3RydW1lbnRpbmdBZ2VudHMuZ2V0KCkpKTsKICNlbmRpZgogCi0gICAgQVNTRVJUX0FSRyhp
bnNwZWN0b3JDbGllbnQsIGluc3BlY3RvckNsaWVudCk7Ci0gICAgbV9pbmplY3RlZFNjcmlwdE1h
bmFnZXItPmluamVjdGVkU2NyaXB0SG9zdCgpLT5pbml0KG1faW5zcGVjdG9yQWdlbnQKLSAgICAg
ICAgLCBjb25zb2xlQWdlbnQKKyAgICBBU1NFUlQobV9pbmplY3RlZFNjcmlwdE1hbmFnZXItPmNv
bW1hbmRMaW5lQVBJSG9zdCgpKTsKKyAgICBpZiAoQ29tbWFuZExpbmVBUElIb3N0KiBjb21tYW5k
TGluZUFQSUhvc3QgPSBtX2luamVjdGVkU2NyaXB0TWFuYWdlci0+Y29tbWFuZExpbmVBUElIb3N0
KCkpIHsKKyAgICAgICAgY29tbWFuZExpbmVBUElIb3N0LT5pbml0KG1faW5zcGVjdG9yQWdlbnQK
KyAgICAgICAgICAgICwgY29uc29sZUFnZW50CisgICAgICAgICAgICAsIG1fZG9tQWdlbnQKKyAg
ICAgICAgICAgICwgZG9tU3RvcmFnZUFnZW50CiAjaWYgRU5BQkxFKFNRTF9EQVRBQkFTRSkKLSAg
ICAgICAgLCBkYXRhYmFzZUFnZW50CisgICAgICAgICAgICAsIGRhdGFiYXNlQWdlbnQKICNlbmRp
ZgotICAgICAgICAsIGRvbVN0b3JhZ2VBZ2VudAotICAgICAgICAsIG1fZG9tQWdlbnQKLSAgICAp
OworICAgICAgICApOworICAgIH0KIAogI2lmIEVOQUJMRShKQVZBU0NSSVBUX0RFQlVHR0VSKQog
ICAgIHJ1bnRpbWVBZ2VudC0+c2V0U2NyaXB0RGVidWdTZXJ2ZXIoJm1fZGVidWdnZXJBZ2VudC0+
c2NyaXB0RGVidWdTZXJ2ZXIoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9ySGVhcFByb2ZpbGVyQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvckhlYXBQcm9maWxlckFnZW50LmNwcAppbmRleCA3Yjc4OGFiLi4yNWM5NzM4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySGVhcFByb2Zp
bGVyQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JIZWFw
UHJvZmlsZXJBZ2VudC5jcHAKQEAgLTI5LDExICsyOSwxMSBAQAogICovCiAKICNpbmNsdWRlICJj
b25maWcuaCIKLQotI2lmIEVOQUJMRShKQVZBU0NSSVBUX0RFQlVHR0VSKSAmJiBFTkFCTEUoSU5T
UEVDVE9SKQotCiAjaW5jbHVkZSAiSW5zcGVjdG9ySGVhcFByb2ZpbGVyQWdlbnQuaCIKIAorI2lm
IEVOQUJMRShKQVZBU0NSSVBUX0RFQlVHR0VSKSAmJiBFTkFCTEUoSU5TUEVDVE9SKQorCisjaW5j
bHVkZSAiQ29tbWFuZExpbmVBUElIb3N0LmgiCiAjaW5jbHVkZSAiSW5qZWN0ZWRTY3JpcHQuaCIK
ICNpbmNsdWRlICJJbmplY3RlZFNjcmlwdEhvc3QuaCIKICNpbmNsdWRlICJJbnN0cnVtZW50aW5n
QWdlbnRzLmgiCkBAIC02OSw3ICs2OSw5IEBAIHZvaWQgSW5zcGVjdG9ySGVhcFByb2ZpbGVyQWdl
bnQ6OnJlc2V0U3RhdGUoKQogICAgIG1fc25hcHNob3RzLmNsZWFyKCk7CiAgICAgbV9uZXh0VXNl
ckluaXRpYXRlZEhlYXBTbmFwc2hvdE51bWJlciA9IDE7CiAgICAgcmVzZXRGcm9udGVuZFByb2Zp
bGVzKCk7Ci0gICAgbV9pbmplY3RlZFNjcmlwdE1hbmFnZXItPmluamVjdGVkU2NyaXB0SG9zdCgp
LT5jbGVhckluc3BlY3RlZE9iamVjdHMoKTsKKworICAgIGlmIChDb21tYW5kTGluZUFQSUhvc3Qq
IGNvbW1hbmRMaW5lQVBJSG9zdCA9IG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLT5jb21tYW5kTGlu
ZUFQSUhvc3QoKSkKKyAgICAgICAgY29tbWFuZExpbmVBUElIb3N0LT5jbGVhckluc3BlY3RlZE9i
amVjdHMoKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JIZWFwUHJvZmlsZXJBZ2VudDo6cmVzZXRGcm9u
dGVuZFByb2ZpbGVzKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JQcm9maWxlckFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JQcm9maWxlckFnZW50LmNwcAppbmRleCBmNzdlMDE0Li5hYTc4NmRkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUHJvZmlsZXJBZ2VudC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclByb2ZpbGVyQWdlbnQuY3BwCkBAIC0z
Myw2ICszMyw3IEBACiAKICNpbmNsdWRlICJJbnNwZWN0b3JQcm9maWxlckFnZW50LmgiCiAKKyNp
bmNsdWRlICJDb21tYW5kTGluZUFQSUhvc3QuaCIKICNpbmNsdWRlICJDb25zb2xlLmgiCiAjaW5j
bHVkZSAiQ29uc29sZUFQSVR5cGVzLmgiCiAjaW5jbHVkZSAiQ29uc29sZVR5cGVzLmgiCkBAIC0z
MTYsNyArMzE3LDkgQEAgdm9pZCBJbnNwZWN0b3JQcm9maWxlckFnZW50OjpyZXNldFN0YXRlKCkK
ICAgICBtX25leHRVc2VySW5pdGlhdGVkUHJvZmlsZU51bWJlciA9IDE7CiAgICAgbV9uZXh0VXNl
ckluaXRpYXRlZEhlYXBTbmFwc2hvdE51bWJlciA9IDE7CiAgICAgcmVzZXRGcm9udGVuZFByb2Zp
bGVzKCk7Ci0gICAgbV9pbmplY3RlZFNjcmlwdE1hbmFnZXItPmluamVjdGVkU2NyaXB0SG9zdCgp
LT5jbGVhckluc3BlY3RlZE9iamVjdHMoKTsKKworICAgIGlmIChDb21tYW5kTGluZUFQSUhvc3Qq
IGNvbW1hbmRMaW5lQVBJSG9zdCA9IG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLT5jb21tYW5kTGlu
ZUFQSUhvc3QoKSkKKyAgICAgICAgY29tbWFuZExpbmVBUElIb3N0LT5jbGVhckluc3BlY3RlZE9i
amVjdHMoKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JQcm9maWxlckFnZW50OjpyZXNldEZyb250ZW5k
UHJvZmlsZXMoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1BhZ2VDb25z
b2xlQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1BhZ2VDb25zb2xlQWdlbnQu
Y3BwCmluZGV4IGNlYWJiZDIuLjk3ZDY4ZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9QYWdlQ29uc29sZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvUGFnZUNvbnNvbGVBZ2VudC5jcHAKQEAgLTM0LDYgKzM0LDcgQEAKIAogI2luY2x1ZGUgIlBh
Z2VDb25zb2xlQWdlbnQuaCIKIAorI2luY2x1ZGUgIkNvbW1hbmRMaW5lQVBJSG9zdC5oIgogI2lu
Y2x1ZGUgIkRPTVdpbmRvdy5oIgogI2luY2x1ZGUgIkluamVjdGVkU2NyaXB0SG9zdC5oIgogI2lu
Y2x1ZGUgIkluamVjdGVkU2NyaXB0TWFuYWdlci5oIgpAQCAtNjQsMTAgKzY1LDEwIEBAIHZvaWQg
UGFnZUNvbnNvbGVBZ2VudDo6Y2xlYXJNZXNzYWdlcyhFcnJvclN0cmluZyogZXJyb3JTdHJpbmcp
CiAgICAgSW5zcGVjdG9yQ29uc29sZUFnZW50OjpjbGVhck1lc3NhZ2VzKGVycm9yU3RyaW5nKTsK
IH0KIAotY2xhc3MgSW5zcGVjdGFibGVOb2RlIDogcHVibGljIEluamVjdGVkU2NyaXB0SG9zdDo6
SW5zcGVjdGFibGVPYmplY3QgeworY2xhc3MgSW5zcGVjdGFibGVOb2RlIEZJTkFMIDogcHVibGlj
IENvbW1hbmRMaW5lQVBJSG9zdDo6SW5zcGVjdGFibGVPYmplY3QgewogcHVibGljOgogICAgIGV4
cGxpY2l0IEluc3BlY3RhYmxlTm9kZShOb2RlKiBub2RlKSA6IG1fbm9kZShub2RlKSB7IH0KLSAg
ICB2aXJ0dWFsIERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlIGdldChKU0M6OkV4ZWNTdGF0ZSogc3Rh
dGUpCisgICAgdmlydHVhbCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSBnZXQoSlNDOjpFeGVjU3Rh
dGUqIHN0YXRlKSBPVkVSUklERQogICAgIHsKICAgICAgICAgcmV0dXJuIEluamVjdGVkU2NyaXB0
SG9zdDo6bm9kZUFzU2NyaXB0VmFsdWUoc3RhdGUsIG1fbm9kZSk7CiAgICAgfQpAQCAtNzksMTAg
KzgwLDEyIEBAIHZvaWQgUGFnZUNvbnNvbGVBZ2VudDo6YWRkSW5zcGVjdGVkTm9kZShFcnJvclN0
cmluZyogZXJyb3JTdHJpbmcsIGludCBub2RlSWQpCiB7CiAgICAgTm9kZSogbm9kZSA9IG1faW5z
cGVjdG9yRE9NQWdlbnQtPm5vZGVGb3JJZChub2RlSWQpOwogICAgIGlmICghbm9kZSB8fCBub2Rl
LT5pc0luU2hhZG93VHJlZSgpKSB7Ci0gICAgICAgICplcnJvclN0cmluZyA9ICJub2RlSWQgaXMg
bm90IHZhbGlkIjsKKyAgICAgICAgKmVycm9yU3RyaW5nID0gQVNDSUlMaXRlcmFsKCJub2RlSWQg
aXMgbm90IHZhbGlkIik7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgbV9pbmplY3RlZFNj
cmlwdE1hbmFnZXItPmluamVjdGVkU2NyaXB0SG9zdCgpLT5hZGRJbnNwZWN0ZWRPYmplY3QoYWRv
cHRQdHIobmV3IEluc3BlY3RhYmxlTm9kZShub2RlKSkpOworCisgICAgaWYgKENvbW1hbmRMaW5l
QVBJSG9zdCogY29tbWFuZExpbmVBUElIb3N0ID0gbV9pbmplY3RlZFNjcmlwdE1hbmFnZXItPmNv
bW1hbmRMaW5lQVBJSG9zdCgpKQorICAgICAgICBjb21tYW5kTGluZUFQSUhvc3QtPmFkZEluc3Bl
Y3RlZE9iamVjdChhZG9wdFB0cihuZXcgSW5zcGVjdGFibGVOb2RlKG5vZGUpKSk7CiB9CiAKIGJv
b2wgUGFnZUNvbnNvbGVBZ2VudDo6ZGV2ZWxvcGVyRXh0cmFzRW5hYmxlZCgpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvUGFnZUluamVjdGVkU2NyaXB0TWFuYWdlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvUGFnZUluamVjdGVkU2NyaXB0TWFuYWdlci5jcHAK
aW5kZXggYmU1NTE3OS4uMzQzMmIwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL1BhZ2VJbmplY3RlZFNjcmlwdE1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9QYWdlSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmNwcApAQCAtMzEsNiArMzEsMjAgQEAK
ICNpbmNsdWRlICJDb21tYW5kTGluZUFQSU1vZHVsZS5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CisgICAgCitQYWdlSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyOjpQYWdlSW5qZWN0ZWRTY3JpcHRNYW5h
Z2VyKEluc3BlY3RlZFN0YXRlQWNjZXNzQ2hlY2sgYWNjZXNzQ2hlY2spCisgICAgOiBJbmplY3Rl
ZFNjcmlwdE1hbmFnZXIoYWNjZXNzQ2hlY2spCisgICAgLCBtX2NvbW1hbmRMaW5lQVBJSG9zdChD
b21tYW5kTGluZUFQSUhvc3Q6OmNyZWF0ZSgpKQoreworfQorCit2b2lkIFBhZ2VJbmplY3RlZFNj
cmlwdE1hbmFnZXI6OmRpc2Nvbm5lY3QoKQoreworICAgIEluamVjdGVkU2NyaXB0TWFuYWdlcjo6
ZGlzY29ubmVjdCgpOworCisgICAgbV9jb21tYW5kTGluZUFQSUhvc3QtPmRpc2Nvbm5lY3QoKTsK
KyAgICBtX2NvbW1hbmRMaW5lQVBJSG9zdC5jbGVhcigpOworfQogCiB2b2lkIFBhZ2VJbmplY3Rl
ZFNjcmlwdE1hbmFnZXI6OmRpZENyZWF0ZUluamVjdGVkU2NyaXB0KEluamVjdGVkU2NyaXB0IGlu
amVjdGVkU2NyaXB0KQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1Bh
Z2VJbmplY3RlZFNjcmlwdE1hbmFnZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9QYWdl
SW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmgKaW5kZXggYWRmYmU4Ny4uYWVkMmRhMyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1BhZ2VJbmplY3RlZFNjcmlwdE1hbmFnZXIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvUGFnZUluamVjdGVkU2NyaXB0TWFuYWdlci5o
CkBAIC0yNiwxNyArMjYsMjUgQEAKICNpZm5kZWYgUGFnZUluamVjdGVkU2NyaXB0TWFuYWdlcl9o
CiAjZGVmaW5lIFBhZ2VJbmplY3RlZFNjcmlwdE1hbmFnZXJfaAogCisjaW5jbHVkZSAiQ29tbWFu
ZExpbmVBUElIb3N0LmgiCiAjaW5jbHVkZSAiSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmgiCisjaW5j
bHVkZSA8d3RmL1JlZlB0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFBhZ2VJ
bmplY3RlZFNjcmlwdE1hbmFnZXIgRklOQUwgOiBwdWJsaWMgSW5qZWN0ZWRTY3JpcHRNYW5hZ2Vy
IHsKIHB1YmxpYzoKLSAgICBleHBsaWNpdCBQYWdlSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKEluc3Bl
Y3RlZFN0YXRlQWNjZXNzQ2hlY2sgYWNjZXNzQ2hlY2spIDogSW5qZWN0ZWRTY3JpcHRNYW5hZ2Vy
KGFjY2Vzc0NoZWNrKSB7IH0KKyAgICBleHBsaWNpdCBQYWdlSW5qZWN0ZWRTY3JpcHRNYW5hZ2Vy
KEluc3BlY3RlZFN0YXRlQWNjZXNzQ2hlY2sgYWNjZXNzQ2hlY2spOwogICAgIHZpcnR1YWwgflBh
Z2VJbmplY3RlZFNjcmlwdE1hbmFnZXIoKSB7IH0KIAorICAgIHZpcnR1YWwgdm9pZCBkaXNjb25u
ZWN0KCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCBDb21tYW5kTGluZUFQSUhvc3QqIGNvbW1hbmRM
aW5lQVBJSG9zdCgpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIG1fY29tbWFuZExpbmVBUElIb3N0
LmdldCgpOyB9OworCiBwcm90ZWN0ZWQ6CiAgICAgdmlydHVhbCB2b2lkIGRpZENyZWF0ZUluamVj
dGVkU2NyaXB0KEluamVjdGVkU2NyaXB0KSBPVkVSUklERTsKKworcHJpdmF0ZToKKyAgICBSZWZQ
dHI8Q29tbWFuZExpbmVBUElIb3N0PiBtX2NvbW1hbmRMaW5lQVBJSG9zdDsKIH07CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9X
b3JrZXJJbnNwZWN0b3JDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9X
b3JrZXJJbnNwZWN0b3JDb250cm9sbGVyLmNwcAppbmRleCBkZmZmM2Y4Li5lNGZiNTU0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvV29ya2VySW5zcGVjdG9yQ29udHJvbGxl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dvcmtlckluc3BlY3RvckNvbnRy
b2xsZXIuY3BwCkBAIC0zNCw2ICszNCw3IEBACiAKICNpbmNsdWRlICJXb3JrZXJJbnNwZWN0b3JD
b250cm9sbGVyLmgiCiAKKyNpbmNsdWRlICJDb21tYW5kTGluZUFQSUhvc3QuaCIKICNpbmNsdWRl
ICJJbmplY3RlZFNjcmlwdEhvc3QuaCIKICNpbmNsdWRlICJJbmplY3RlZFNjcmlwdE1hbmFnZXIu
aCIKICNpbmNsdWRlICJJbnNwZWN0b3JDbGllbnQuaCIKQEAgLTk4LDE0ICs5OSwxNiBAQCBXb3Jr
ZXJJbnNwZWN0b3JDb250cm9sbGVyOjpXb3JrZXJJbnNwZWN0b3JDb250cm9sbGVyKFdvcmtlckds
b2JhbFNjb3BlKiB3b3JrZXJHbAogICAgIG1fYWdlbnRzLmFwcGVuZChJbnNwZWN0b3JUaW1lbGlu
ZUFnZW50OjpjcmVhdGUobV9pbnN0cnVtZW50aW5nQWdlbnRzLmdldCgpLCAwLCAwLCBJbnNwZWN0
b3JUaW1lbGluZUFnZW50OjpXb3JrZXJJbnNwZWN0b3IsIDApKTsKICAgICBtX2FnZW50cy5hcHBl
bmQoY29uc29sZUFnZW50LnJlbGVhc2UoKSk7CiAKLSAgICBtX2luamVjdGVkU2NyaXB0TWFuYWdl
ci0+aW5qZWN0ZWRTY3JpcHRIb3N0KCktPmluaXQoMAotICAgICAgICAsIDAKKyAgICBpZiAoQ29t
bWFuZExpbmVBUElIb3N0KiBjb21tYW5kTGluZUFQSUhvc3QgPSBtX2luamVjdGVkU2NyaXB0TWFu
YWdlci0+Y29tbWFuZExpbmVBUElIb3N0KCkpIHsKKyAgICAgICAgY29tbWFuZExpbmVBUElIb3N0
LT5pbml0KG51bGxwdHIKKyAgICAgICAgICAgICwgbnVsbHB0cgorICAgICAgICAgICAgLCBudWxs
cHRyCisgICAgICAgICAgICAsIG51bGxwdHIKICNpZiBFTkFCTEUoU1FMX0RBVEFCQVNFKQotICAg
ICAgICAsIDAKKyAgICAgICAgICAgICwgbnVsbHB0cgogI2VuZGlmCi0gICAgICAgICwgMAotICAg
ICAgICAsIDAKLSAgICApOworICAgICAgICApOworICAgIH0KIH0KICAKIFdvcmtlckluc3BlY3Rv
ckNvbnRyb2xsZXI6On5Xb3JrZXJJbnNwZWN0b3JDb250cm9sbGVyKCkK
</data>
<flag name="review"
          id="243459"
          type_id="1"
          status="+"
          setter="timothy"
    />
    <flag name="commit-queue"
          id="243468"
          type_id="3"
          status="-"
          setter="eflews.bot"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>219799</attachid>
            <date>2013-12-20 15:05:23 -0800</date>
            <delta_ts>2013-12-20 15:07:27 -0800</delta_ts>
            <desc>[PATCH] For Bots 1</desc>
            <filename>host2.patch</filename>
            <type>text/plain</type>
            <size>83060</size>
            <attacher name="Joseph Pecoraro">joepeck</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNv
cmUvQ01ha2VMaXN0cy50eHQKaW5kZXggZDQyODlmOC4uZTJiNTZhMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0
cy50eHQKQEAgLTUyOSw2ICs1MjksNyBAQCBzZXQoV2ViQ29yZV9JRExfRklMRVMKICAgICBodG1s
L2NhbnZhcy9XZWJHTFVuaWZvcm1Mb2NhdGlvbi5pZGwKICAgICBodG1sL2NhbnZhcy9XZWJHTFZl
cnRleEFycmF5T2JqZWN0T0VTLmlkbAogCisgICAgaW5zcGVjdG9yL0NvbW1hbmRMaW5lQVBJSG9z
dC5pZGwKICAgICBpbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRIb3N0LmlkbAogICAgIGluc3BlY3Rv
ci9JbnNwZWN0b3JGcm9udGVuZEhvc3QuaWRsCiAgICAgaW5zcGVjdG9yL0phdmFTY3JpcHRDYWxs
RnJhbWUuaWRsCkBAIC0xNTY4LDYgKzE1NjksNyBAQCBzZXQoV2ViQ29yZV9TT1VSQ0VTCiAgICAg
aHRtbC9zaGFkb3cvU3BpbkJ1dHRvbkVsZW1lbnQuY3BwCiAgICAgaHRtbC9zaGFkb3cvVGV4dENv
bnRyb2xJbm5lckVsZW1lbnRzLmNwcAogCisgICAgaW5zcGVjdG9yL0NvbW1hbmRMaW5lQVBJSG9z
dC5jcHAKICAgICBpbnNwZWN0b3IvQ29tbWFuZExpbmVBUElNb2R1bGUuY3BwCiAgICAgaW5zcGVj
dG9yL0NvbnNvbGVNZXNzYWdlLmNwcAogICAgIGluc3BlY3Rvci9Db250ZW50U2VhcmNoVXRpbHMu
Y3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKaW5kZXggNzY0N2Q3My4uNmY4Zjc5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsx
LDExMCBAQAogMjAxMy0xMi0yMCAgSm9zZXBoIFBlY29yYXJvICA8cGVjb3Jhcm9AYXBwbGUuY29t
PgogCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IEdpdmUgdGhlIENvbW1hbmRMaW5lQVBJTW9kdWxl
IGl0cyBvd24gSG9zdCBvYmplY3QsIG1ha2luZyBJbmplY3RlZFNjcmlwdEhvc3QgdmlhYmxlIGZv
ciBhIEpTIENvbnRleHQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTEyNjA4MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIEV4dHJhY3QgQ29tbWFuZExpbmVBUElIb3N0IGZyb20gSW5qZWN0ZWRTY3JpcHRIb3N0
LiBUaGUgY29tbWFuZCBsaW5lIEFQSSBjb250YWluZWQKKyAgICAgICAgYSBidW5jaCBvZiBET00g
c3BlY2lmaWMgSmF2YVNjcmlwdCB0aGF0IHdvdWxkIG5vdCBiZSBzdWl0YWJsZSBmb3IgYSBwdXJl
IEphdmFTY3JpcHQKKyAgICAgICAgZW52aXJvbm1lbnQuIE5vdyB0aGF0IHRoZSBET00gcmVsYXRl
ZCBjb2RlIGlzIGluIHRoaXMgV2ViQ29yZSBvbmx5IG1vZHVsZSwgZ2l2ZSB0aGlzCisgICAgICAg
IG1vZHVsZSBhIGhvc3Qgb2JqZWN0IHRoYXQgV2ViQ29yZSB3aWxsIHByb3ZpZGUuCisKKyAgICAg
ICAgTm8gbmV3IHRlc3RzLCBubyBvYnNlcnZhYmxlIGNoYW5nZSBpbiBmdW5jdGlvbmFsaXR5Lgor
CisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogRGVyaXZlZFNvdXJjZXMuY3Bw
OgorICAgICAgICAqIERlcml2ZWRTb3VyY2VzLm1ha2U6CisgICAgICAgICogR05VbWFrZWZpbGUu
bGlzdC5hbToKKyAgICAgICAgKiBVc2VKU0MuY21ha2U6CisgICAgICAgICogV2ViQ29yZS52Y3hw
cm9qL1dlYkNvcmUudmN4cHJvajoKKyAgICAgICAgKiBXZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52
Y3hwcm9qLmZpbHRlcnM6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTQmluZGluZ3NBbGxJbk9uZS5jcHA6CisgICAg
ICAgIEFkZCBuZXcgZmlsZXMuCisKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0NvbW1hbmRMaW5l
QVBJSG9zdEN1c3RvbS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6SlNDb21tYW5kTGlu
ZUFQSUhvc3Q6Omluc3BlY3RlZE9iamVjdCk6CisgICAgICAgIChXZWJDb3JlOjpnZXRKU0xpc3Rl
bmVyRnVuY3Rpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OkpTQ29tbWFuZExpbmVBUElIb3N0Ojpn
ZXRFdmVudExpc3RlbmVycyk6CisgICAgICAgIChXZWJDb3JlOjpKU0NvbW1hbmRMaW5lQVBJSG9z
dDo6aW5zcGVjdCk6CisgICAgICAgIChXZWJDb3JlOjpKU0NvbW1hbmRMaW5lQVBJSG9zdDo6ZGF0
YWJhc2VJZCk6CisgICAgICAgIChXZWJDb3JlOjpKU0NvbW1hbmRMaW5lQVBJSG9zdDo6c3RvcmFn
ZUlkKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0luamVjdGVkU2NyaXB0SG9zdEN1c3RvbS5j
cHA6CisgICAgICAgICogaW5zcGVjdG9yL0NvbW1hbmRMaW5lQVBJSG9zdC5jcHA6IENvcGllZCBm
cm9tIFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdEhvc3QuY3BwLgorICAg
ICAgICAoV2ViQ29yZTo6Q29tbWFuZExpbmVBUElIb3N0OjpjcmVhdGUpOgorICAgICAgICAoV2Vi
Q29yZTo6Q29tbWFuZExpbmVBUElIb3N0OjpDb21tYW5kTGluZUFQSUhvc3QpOgorICAgICAgICAo
V2ViQ29yZTo6Q29tbWFuZExpbmVBUElIb3N0Ojp+Q29tbWFuZExpbmVBUElIb3N0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkNvbW1hbmRMaW5lQVBJSG9zdDo6ZGlzY29ubmVjdCk6CisgICAgICAgIChX
ZWJDb3JlOjpDb21tYW5kTGluZUFQSUhvc3Q6Omluc3BlY3RJbXBsKToKKyAgICAgICAgKFdlYkNv
cmU6OkNvbW1hbmRMaW5lQVBJSG9zdDo6Z2V0RXZlbnRMaXN0ZW5lcnNJbXBsKToKKyAgICAgICAg
KFdlYkNvcmU6OkNvbW1hbmRMaW5lQVBJSG9zdDo6Y2xlYXJDb25zb2xlTWVzc2FnZXMpOgorICAg
ICAgICAoV2ViQ29yZTo6Q29tbWFuZExpbmVBUElIb3N0Ojpjb3B5VGV4dCk6CisgICAgICAgIChX
ZWJDb3JlOjpDb21tYW5kTGluZUFQSUhvc3Q6Okluc3BlY3RhYmxlT2JqZWN0OjpnZXQpOgorICAg
ICAgICAoV2ViQ29yZTo6Q29tbWFuZExpbmVBUElIb3N0OjphZGRJbnNwZWN0ZWRPYmplY3QpOgor
ICAgICAgICAoV2ViQ29yZTo6Q29tbWFuZExpbmVBUElIb3N0OjpjbGVhckluc3BlY3RlZE9iamVj
dHMpOgorICAgICAgICAoV2ViQ29yZTo6Q29tbWFuZExpbmVBUElIb3N0OjppbnNwZWN0ZWRPYmpl
Y3QpOgorICAgICAgICAoV2ViQ29yZTo6Q29tbWFuZExpbmVBUElIb3N0OjpkYXRhYmFzZUlkSW1w
bCk6CisgICAgICAgIChXZWJDb3JlOjpDb21tYW5kTGluZUFQSUhvc3Q6OnN0b3JhZ2VJZEltcGwp
OgorICAgICAgICAqIGluc3BlY3Rvci9Db21tYW5kTGluZUFQSUhvc3QuaDogQ29waWVkIGZyb20g
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0SG9zdC5oLgorICAgICAgICAo
V2ViQ29yZTo6Q29tbWFuZExpbmVBUElIb3N0Ojppbml0KToKKyAgICAgICAgKiBpbnNwZWN0b3Iv
Q29tbWFuZExpbmVBUElIb3N0LmlkbDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luamVjdGVkU2NyaXB0SG9zdC5pZGwuCisgICAgICAgICogaW5zcGVjdG9yL0NvbW1hbmRM
aW5lQVBJTW9kdWxlLmNwcDoKKyAgICAgICAgVGhlc2UgYXJlIGFsbW9zdCBhbGwgcHVyZSBjb3Bp
ZXMgZnJvbSBJbmplY3RlZFNjcmlwdEhvc3QgZmlsZXMuIENsZWFuZWQgdXAgYSBiaXQuCisKKyAg
ICAgICAgKiBpbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRNb2R1bGUuaDoKKyAgICAgICAgKiBpbnNw
ZWN0b3IvSW5qZWN0ZWRTY3JpcHRNb2R1bGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5qZWN0
ZWRTY3JpcHRNb2R1bGU6OmVuc3VyZUluamVjdGVkKToKKyAgICAgICAgTW9kdWxlcyBjYW4gbm93
IGRlZmluZSBhIGhvc3Qgb2JqZWN0IHdoZW4gdGhleSBhcmUgZ2V0dGluZyBpbmplY3RlZC4KKwor
ICAgICAgICAoV2ViQ29yZTo6Q29tbWFuZExpbmVBUElNb2R1bGU6Omhvc3QpOgorICAgICAgICAq
IGluc3BlY3Rvci9Db21tYW5kTGluZUFQSU1vZHVsZS5oOgorICAgICAgICBQcm92aWRlIGEgQ29t
bWFuZExpbmVBUElIb3N0LCBob3N0IG9iamVjdC4KKworICAgICAgICAqIGluc3BlY3Rvci9Jbmpl
Y3RlZFNjcmlwdENhbnZhc01vZHVsZS5oOgorICAgICAgICAqIGluc3BlY3Rvci9JbmplY3RlZFNj
cmlwdENhbnZhc01vZHVsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbmplY3RlZFNjcmlwdENh
bnZhc01vZHVsZTo6aG9zdCk6CisgICAgICAgIE5vIGhvc3Qgb2JqZWN0IGlzIG5lZWRlZCBmb3Ig
dGhlIENhbnZhc01vZHVsZS4KKworICAgICAgICAqIGluc3BlY3Rvci9JbmplY3RlZFNjcmlwdFNv
dXJjZS5qczoKKyAgICAgICAgKiBpbnNwZWN0b3IvQ29tbWFuZExpbmVBUElNb2R1bGVTb3VyY2Uu
anM6CisgICAgICAgIFdoZW4gaW5qZWN0aW5nIGEgbW9kdWxlLCBwYXNzIG9uIGFuIG9wdGlvbmFs
IGhvc3Qgb2JqZWN0IHRvCisgICAgICAgIHRoZSBtb2R1bGUncyBzb3VyY2UuIE1vdmUgYSBsaXR0
bGUgbW9yZSBjb2RlIGJldHdlZW4gdGhlCisgICAgICAgIHR3byBmaWxlcy4gVGhlIHR3byBmaWxl
cyBhcmUgdmVyeSB0aWdodGx5IGNvdXBsZWQgcmlnaHQgbm93LgorCisgICAgICAgICogaW5zcGVj
dG9yL0luamVjdGVkU2NyaXB0SG9zdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbmplY3RlZFNj
cmlwdEhvc3Q6OmNyZWF0ZSk6CisgICAgICAgICogaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0SG9z
dC5oOgorICAgICAgICAoV2ViQ29yZTo6SW5qZWN0ZWRTY3JpcHRIb3N0Ojp+SW5qZWN0ZWRTY3Jp
cHRIb3N0KToKKyAgICAgICAgKFdlYkNvcmU6OkluamVjdGVkU2NyaXB0SG9zdDo6SW5qZWN0ZWRT
Y3JpcHRIb3N0KToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRIb3N0LmlkbDoK
KyAgICAgICAgTW92ZSBhbnkgY29tbWFuZCBsaW5lIHNwZWNpZmljIGxvZ2ljIHRvIENvbW1hbmRM
aW5lQVBJSG9zdCBjbGFzc2VzLgorCisgICAgICAgICogaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0
TWFuYWdlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbmplY3RlZFNjcmlwdE1hbmFnZXI6OmRp
c2Nvbm5lY3QpOgorICAgICAgICAqIGluc3BlY3Rvci9JbmplY3RlZFNjcmlwdE1hbmFnZXIuaDoK
KyAgICAgICAgKFdlYkNvcmU6OkluamVjdGVkU2NyaXB0TWFuYWdlcjo6Y29tbWFuZExpbmVBUElI
b3N0KToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQ29uc29sZUFnZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNvbnNvbGVBZ2VudDo6YWRkSW5zcGVjdGVkSGVhcE9i
amVjdCk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxlcjo6SW5zcGVjdG9yQ29udHJvbGxlcik6
CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckhlYXBQcm9maWxlckFnZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckhlYXBQcm9maWxlckFnZW50OjpyZXNldFN0YXRlKToK
KyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yUHJvZmlsZXJBZ2VudC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpJbnNwZWN0b3JQcm9maWxlckFnZW50OjpyZXNldFN0YXRlKToKKyAgICAgICAg
KiBpbnNwZWN0b3IvUGFnZUNvbnNvbGVBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYWdl
Q29uc29sZUFnZW50OjphZGRJbnNwZWN0ZWROb2RlKToKKyAgICAgICAgKiBpbnNwZWN0b3IvUGFn
ZUluamVjdGVkU2NyaXB0TWFuYWdlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYWdlSW5qZWN0
ZWRTY3JpcHRNYW5hZ2VyOjpQYWdlSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKToKKyAgICAgICAgKFdl
YkNvcmU6OlBhZ2VJbmplY3RlZFNjcmlwdE1hbmFnZXI6OmRpc2Nvbm5lY3QpOgorICAgICAgICAq
IGluc3BlY3Rvci9QYWdlSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmg6CisgICAgICAgICogaW5zcGVj
dG9yL1dvcmtlckluc3BlY3RvckNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29y
a2VySW5zcGVjdG9yQ29udHJvbGxlcjo6V29ya2VySW5zcGVjdG9yQ29udHJvbGxlcik6CisgICAg
ICAgIEFuIEluamVjdGVkU2NyaXB0TWFuYWdlciBtYXkgb3B0aW9uYWxseSBoYXZlIGEgY29tbWFu
ZExpbmVBUElIb3N0IG9iamVjdC4KKyAgICAgICAgSWYgaXQgZG9lcywgaW5pdGlhbGl6ZSBpdCwg
YW5kIHNlbmQgaXQgbWVzc2FnZXMuCisKKzIwMTMtMTItMjAgIEpvc2VwaCBQZWNvcmFybyAgPHBl
Y29yYXJvQGFwcGxlLmNvbT4KKwogICAgICAgICBXZWIgSW5zcGVjdG9yOiBFeHRyYWN0IENvbW1h
bmRMaW5lQVBJIGludG8gaXRzIG93biBJbmplY3RlZFNjcmlwdE1vZHVsZQogICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI2MDM4CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL0Rlcml2
ZWRTb3VyY2VzLmNwcAppbmRleCAwMWE1MDk1Li4zYjk5ODFmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9EZXJpdmVkU291cmNlcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNv
dXJjZXMuY3BwCkBAIC0yMCw3ICsyMCw3IEBACiAgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCiAgKiBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKICAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKIC8vIFRo
aXMgYWxsLWluLW9uZSBjcHAgZmlsZSBjdXRzIGRvd24gb24gdGVtcGxhdGUgYmxvYXQgdG8gYWxs
b3cgdXMgdG8gYnVpbGQgb3VyIFdpbmRvd3MgcmVsZWFzZSBidWlsZC4KQEAgLTczLDYgKzczLDcg
QEAKICNpbmNsdWRlICJKU0NsaWVudFJlY3RMaXN0LmNwcCIKICNpbmNsdWRlICJKU0NsaXBib2Fy
ZC5jcHAiCiAjaW5jbHVkZSAiSlNDbG9zZUV2ZW50LmNwcCIKKyNpbmNsdWRlICJKU0NvbW1hbmRM
aW5lQVBJSG9zdC5jcHAiCiAjaW5jbHVkZSAiSlNDb21tZW50LmNwcCIKICNpbmNsdWRlICJKU0Nv
bXBvc2l0aW9uRXZlbnQuY3BwIgogI2luY2x1ZGUgIkpTQ29uc29sZS5jcHAiCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlIGIvU291cmNlL1dlYkNvcmUvRGVy
aXZlZFNvdXJjZXMubWFrZQppbmRleCA5YjcxYzk3Li42MWUyY2ZjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL0Rlcml2
ZWRTb3VyY2VzLm1ha2UKQEAgLTQ1Miw2ICs0NTIsNyBAQCBCSU5ESU5HX0lETFMgPSBcCiAgICAg
JChXZWJDb3JlKS9odG1sL3RyYWNrL1RyYWNrRXZlbnQuaWRsIFwKICAgICAkKFdlYkNvcmUpL2h0
bWwvdHJhY2svVmlkZW9UcmFjay5pZGwgXAogICAgICQoV2ViQ29yZSkvaHRtbC90cmFjay9WaWRl
b1RyYWNrTGlzdC5pZGwgXAorICAgICQoV2ViQ29yZSkvaW5zcGVjdG9yL0NvbW1hbmRMaW5lQVBJ
SG9zdC5pZGwgXAogICAgICQoV2ViQ29yZSkvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0SG9zdC5p
ZGwgXAogICAgICQoV2ViQ29yZSkvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kSG9zdC5pZGwg
XAogICAgICQoV2ViQ29yZSkvaW5zcGVjdG9yL1NjcmlwdFByb2ZpbGUuaWRsIFwKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0gYi9Tb3VyY2UvV2ViQ29yZS9H
TlVtYWtlZmlsZS5saXN0LmFtCmluZGV4IDlkNTAxZWEuLjM2MDMzZGIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KKysrIGIvU291cmNlL1dlYkNvcmUvR05V
bWFrZWZpbGUubGlzdC5hbQpAQCAtMTA1LDYgKzEwNSw4IEBAIHdlYmNvcmVfYnVpbHRfc291cmNl
cyArPSBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0NsaXBib2FyZC5oIFwKIAlEZXJpdmVk
U291cmNlcy9XZWJDb3JlL0pTQ2xvc2VFdmVudC5jcHAgXAogCURlcml2ZWRTb3VyY2VzL1dlYkNv
cmUvSlNDbG9zZUV2ZW50LmggXAorCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNDb21tYW5kTGlu
ZUFQSUhvc3QuY3BwIFwKKwlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTQ29tbWFuZExpbmVBUElI
b3N0LmggXAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNDb21tZW50LmNwcCBcCiAJRGVyaXZl
ZFNvdXJjZXMvV2ViQ29yZS9KU0NvbW1lbnQuaCBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9K
U0NvbXBvc2l0aW9uRXZlbnQuY3BwIFwKQEAgLTE1NDgsNiArMTU1MCw3IEBAIGRvbV9iaW5kaW5n
X2lkbHMgKz0gXAogCSQoV2ViQ29yZSkvaHRtbC90cmFjay9UcmFja0V2ZW50LmlkbCBcCiAJJChX
ZWJDb3JlKS9odG1sL3RyYWNrL1ZpZGVvVHJhY2suaWRsIFwKIAkkKFdlYkNvcmUpL2h0bWwvdHJh
Y2svVmlkZW9UcmFja0xpc3QuaWRsIFwKKwkkKFdlYkNvcmUpL2luc3BlY3Rvci9Db21tYW5kTGlu
ZUFQSUhvc3QuaWRsIFwKIAkkKFdlYkNvcmUpL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdEhvc3Qu
aWRsIFwKIAkkKFdlYkNvcmUpL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZEhvc3QuaWRsIFwK
IAkkKFdlYkNvcmUpL2luc3BlY3Rvci9KYXZhU2NyaXB0Q2FsbEZyYW1lLmlkbCBcCkBAIC0yMjkz
LDYgKzIyOTYsNyBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQ3VzdG9tLmNwcCBcCiAJU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNDYW52YXNSZW5kZXJpbmdDb250ZXh0Q3VzdG9tLmNwcCBcCiAJ
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDbGlwYm9hcmRDdXN0b20uY3BwIFwKKwlTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NvbW1hbmRMaW5lQVBJSG9zdEN1c3RvbS5jcHAgXAog
CVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3J5cHRvQ3VzdG9tLmNwcCBcCiAJU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNDdXN0b21TUUxTdGF0ZW1lbnRFcnJvckNhbGxiYWNrLmNw
cCBcCiAJU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDdXN0b21YUGF0aE5TUmVzb2x2ZXIu
Y3BwIFwKQEAgLTM3NjcsOCArMzc3MSwxMCBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJj
ZS9XZWJDb3JlL2ljdS91bmljb2RlL3V0eXBlcy5oIFwKIAlTb3VyY2UvV2ViQ29yZS9pY3UvdW5p
Y29kZS91dmVyc2lvbi5oIFwKIAlTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvQmluZGluZ1Zpc2l0
b3JzLmggXAotICAgIFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Db21tYW5kTGluZUFQSU1vZHVs
ZS5jcHAgXAotICAgIFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Db21tYW5kTGluZUFQSU1vZHVs
ZS5oIFwKKwlTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvQ29tbWFuZExpbmVBUElIb3N0LmNwcCBc
CisJU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0NvbW1hbmRMaW5lQVBJSG9zdC5oIFwKKwlTb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvQ29tbWFuZExpbmVBUElNb2R1bGUuY3BwIFwKKwlTb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvQ29tbWFuZExpbmVBUElNb2R1bGUuaCBcCiAJU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0NvbnNvbGVBUElUeXBlcy5oIFwKIAlTb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvQ29uc29sZU1lc3NhZ2UuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvQ29uc29s
ZU1lc3NhZ2UuaCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Vc2VKU0MuY21ha2UgYi9T
b3VyY2UvV2ViQ29yZS9Vc2VKU0MuY21ha2UKaW5kZXggNjM4NDU5OC4uMjJiNGY2YyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvVXNlSlNDLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL1Vz
ZUpTQy5jbWFrZQpAQCAtMzksNiArMzksNyBAQCBsaXN0KEFQUEVORCBXZWJDb3JlX1NPVVJDRVMK
ICAgICBiaW5kaW5ncy9qcy9KU0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyREN1c3RvbS5jcHAKICAg
ICBiaW5kaW5ncy9qcy9KU0NhbnZhc1JlbmRlcmluZ0NvbnRleHRDdXN0b20uY3BwCiAgICAgYmlu
ZGluZ3MvanMvSlNDbGlwYm9hcmRDdXN0b20uY3BwCisgICAgYmluZGluZ3MvanMvSlNDb21tYW5k
TGluZUFQSUhvc3RDdXN0b20uY3BwCiAgICAgYmluZGluZ3MvanMvSlNDcnlwdG9DdXN0b20uY3Bw
CiAgICAgYmluZGluZ3MvanMvSlNDdXN0b21YUGF0aE5TUmVzb2x2ZXIuY3BwCiAgICAgYmluZGlu
Z3MvanMvSlNEaWN0aW9uYXJ5LmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJv
ai9XZWJDb3JlLnZjeHByb2oKaW5kZXggM2VmZmEwOS4uMjI3ZDYyOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvagorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qCkBAIC05NzMsNiArOTczLDIw
IEBACiAgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9u
KXwkKFBsYXRmb3JtKSc9PSdQcm9kdWN0aW9ufFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVp
bGQ+CiAgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9u
KXwkKFBsYXRmb3JtKSc9PSdQcm9kdWN0aW9ufHg2NCciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxk
PgogICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChDb25maWd1cmF0
aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJvamVjdE5hbWUpXERl
cml2ZWRTb3VyY2VzXEpTQ29tbWFuZExpbmVBUElIb3N0LmNwcCI+CisgICAgICA8RXhjbHVkZWRG
cm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1
Z3xXaW4zMiciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgorICAgICAgPEV4Y2x1ZGVkRnJvbUJ1
aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0
JyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CisgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29u
ZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z19XaW5DYWlyb3xX
aW4zMiciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgorICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxk
IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWdfV2luQ2Fp
cm98eDY0JyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CisgICAgICA8RXhjbHVkZWRGcm9tQnVp
bGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z1N1ZmZp
eHxXaW4zMiciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgorICAgICAgPEV4Y2x1ZGVkRnJvbUJ1
aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWdTdWZm
aXh8eDY0JyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CisgICAgICA8RXhjbHVkZWRGcm9tQnVp
bGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdp
bjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CisgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQg
Q29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCci
PnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgorICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRp
dGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZV9XaW5DYWlyb3xX
aW4zMiciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgorICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxk
IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZV9XaW5D
YWlyb3x4NjQnIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KKyAgICAgIDxFeGNsdWRlZEZyb21C
dWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1Byb2R1Y3Rp
b258V2luMzInIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KKyAgICAgIDxFeGNsdWRlZEZyb21C
dWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1Byb2R1Y3Rp
b258eDY0JyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CisgICAgPC9DbENvbXBpbGU+CiAgICAg
PENsQ29tcGlsZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0Zm9y
bUFyY2hpdGVjdHVyZSlcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSlNDb21tZW50LmNw
cCI+CiAgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9u
KXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgog
ICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQ
bGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CkBAIC0xNTkx
MSw2ICsxNTkyNSwyMCBAQAogICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQo
Q29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUHJvZHVjdGlvbnxXaW4zMiciPnRydWU8L0V4
Y2x1ZGVkRnJvbUJ1aWxkPgogICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQo
Q29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUHJvZHVjdGlvbnx4NjQnIj50cnVlPC9FeGNs
dWRlZEZyb21CdWlsZD4KICAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9
Ii4uXGJpbmRpbmdzXGpzXEpTQ29tbWFuZExpbmVBUElIb3N0Q3VzdG9tLmNwcCI+CisgICAgICA8
RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3Jt
KSc9PSdEZWJ1Z3xXaW4zMiciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgorICAgICAgPEV4Y2x1
ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0n
RGVidWd8eDY0JyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CisgICAgICA8RXhjbHVkZWRGcm9t
QnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z19X
aW5DYWlyb3xXaW4zMiciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgorICAgICAgPEV4Y2x1ZGVk
RnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVi
dWdfV2luQ2Fpcm98eDY0JyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CisgICAgICA8RXhjbHVk
ZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdE
ZWJ1Z1N1ZmZpeHxXaW4zMiciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgorICAgICAgPEV4Y2x1
ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0n
RGVidWdTdWZmaXh8eDY0JyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CisgICAgICA8RXhjbHVk
ZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdS
ZWxlYXNlfFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CisgICAgICA8RXhjbHVkZWRG
cm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxl
YXNlfHg2NCciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgorICAgICAgPEV4Y2x1ZGVkRnJvbUJ1
aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZV9X
aW5DYWlyb3xXaW4zMiciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgorICAgICAgPEV4Y2x1ZGVk
RnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVs
ZWFzZV9XaW5DYWlyb3x4NjQnIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KKyAgICAgIDxFeGNs
dWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09
J1Byb2R1Y3Rpb258V2luMzInIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KKyAgICAgIDxFeGNs
dWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09
J1Byb2R1Y3Rpb258eDY0JyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CisgICAgPC9DbENvbXBp
bGU+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxiaW5kaW5nc1xqc1xKU0NTU1J1bGVDdXN0
b20uY3BwIj4KICAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3Vy
YXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVp
bGQ+CiAgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9u
KXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KQEAg
LTE3NTU4LDYgKzE3NTg2LDE0IEBACiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxicmlkZ2Vc
cnVudGltZV9tZXRob2QuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cYnJpZGdl
XHJ1bnRpbWVfb2JqZWN0LmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGJyaWRn
ZVxydW50aW1lX3Jvb3QuY3BwIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5caW5zcGVj
dG9yXENvbW1hbmRMaW5lQVBJSG9zdC5jcHAiPgorICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENv
bmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMici
PnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgorICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRp
dGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj50cnVl
PC9FeGNsdWRlZEZyb21CdWlsZD4KKyAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249
IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2VfV2luQ2Fpcm98V2luMzIn
Ij50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KKyAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25k
aXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2VfV2luQ2Fpcm98
eDY0JyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CisgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQg
Q29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQcm9kdWN0aW9ufFdp
bjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CisgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQg
Q29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQcm9kdWN0aW9ufHg2
NCciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgorICAgIDwvQ2xDb21waWxlPgogICAgIDxDbENv
bXBpbGUgSW5jbHVkZT0iLi5caW5zcGVjdG9yXENvbW1hbmRMaW5lQVBJTW9kdWxlLmNwcCI+CiAg
ICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBs
YXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CiAgICAg
ICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRm
b3JtKSc9PSdSZWxlYXNlfHg2NCciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgpAQCAtMTgxMzUs
NiArMTgxNzEsNyBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVp
bGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRT
b3VyY2VzXEpTQ2xpZW50UmVjdC5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChDb25m
aWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJvamVjdE5h
bWUpXERlcml2ZWRTb3VyY2VzXEpTQ2xpZW50UmVjdExpc3QuaCIgLz4KICAgICA8Q2xJbmNsdWRl
IEluY2x1ZGU9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0
dXJlKVwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xKU0NsaXBib2FyZC5oIiAvPgorICAg
IDxDbEluY2x1ZGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZv
cm1BcmNoaXRlY3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEpTQ29tbWFuZExp
bmVBUElIb3N0LmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRpb25C
dWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcJChQcm9qZWN0TmFtZSlcRGVyaXZl
ZFNvdXJjZXNcSlNDb21tZW50LmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKENvbmZp
Z3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcJChQcm9qZWN0TmFt
ZSlcRGVyaXZlZFNvdXJjZXNcSlNDb21wb3NpdGlvbkV2ZW50LmgiIC8+CiAgICAgPENsSW5jbHVk
ZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVj
dHVyZSlcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSlNDb25zb2xlLmgiIC8+CkBAIC0y
MDk1OCw2ICsyMDk5NSw3IEBACiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxicmlkZ2VccnVu
dGltZV9yb290LmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxpbnNwZWN0b3JcQmlu
ZGluZ1Zpc2l0b3JzLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxpbnNwZWN0b3Jc
Q29uc29sZUFQSVR5cGVzLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxpbnNwZWN0
b3JcQ29tbWFuZExpbmVBUElIb3N0LmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxp
bnNwZWN0b3JcQ29tbWFuZExpbmVBUElNb2R1bGUuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1
ZGU9Ii4uXGluc3BlY3RvclxDb25zb2xlTWVzc2FnZS5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5j
bHVkZT0iLi5caW5zcGVjdG9yXENvbnRlbnRTZWFyY2hVdGlscy5oIiAvPgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvai5maWx0ZXJzIGIv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvai5maWx0ZXJzCmlu
ZGV4IGNhZTA1YTYuLjhiZGRkZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
dmN4cHJvai9XZWJDb3JlLnZjeHByb2ouZmlsdGVycworKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qLmZpbHRlcnMKQEAgLTQzMTcsNiArNDMxNyw5IEBA
CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxiaW5kaW5nc1xqc1xKU0NsaXBib2FyZEN1c3Rv
bS5jcHAiPgogICAgICAgPEZpbHRlcj5iaW5kaW5nc1xqczwvRmlsdGVyPgogICAgIDwvQ2xDb21w
aWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cYmluZGluZ3NcanNcSlNDb21tYW5kTGlu
ZUFQSUhvc3RDdXN0b20uY3BwIj4KKyAgICAgIDxGaWx0ZXI+YmluZGluZ3NcanM8L0ZpbHRlcj4K
KyAgICA8L0NsQ29tcGlsZT4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGJpbmRpbmdzXGpz
XEpTQ1NTUnVsZUN1c3RvbS5jcHAiPgogICAgICAgPEZpbHRlcj5iaW5kaW5nc1xqczwvRmlsdGVy
PgogICAgIDwvQ2xDb21waWxlPgpAQCAtNDc5MSw2ICs0Nzk0LDkgQEAKICAgICA8Q2xDb21waWxl
IEluY2x1ZGU9Ii4uXGJyaWRnZVxydW50aW1lX3Jvb3QuY3BwIj4KICAgICAgIDxGaWx0ZXI+YnJp
ZGdlPC9GaWx0ZXI+CiAgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIu
LlxpbnNwZWN0b3JcQ29tbWFuZExpbmVBUElIb3N0LmNwcCI+CisgICAgICA8RmlsdGVyPmluc3Bl
Y3RvcjwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0i
Li5caW5zcGVjdG9yXENvbW1hbmRMaW5lQVBJTW9kdWxlLmNwcCI+CiAgICAgICA8RmlsdGVyPmlu
c3BlY3RvcjwvRmlsdGVyPgogICAgIDwvQ2xDb21waWxlPgpAQCAtNTMyOSw2ICs1MzM1LDkgQEAK
ICAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmokKFBs
YXRmb3JtQXJjaGl0ZWN0dXJlKVwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xKU0NsaXBi
b2FyZC5jcHAiPgogICAgICAgPEZpbHRlcj5EZXJpdmVkU291cmNlczwvRmlsdGVyPgogICAgIDwv
Q2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGRE
aXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3Vy
Y2VzXEpTQ29tbWFuZExpbmVBUElIb3N0LmNwcCI+CisgICAgICA8RmlsdGVyPkRlcml2ZWRTb3Vy
Y2VzPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIk
KENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcJChQcm9q
ZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSlNDb21tZW50LmNwcCI+CiAgICAgICA8RmlsdGVyPkRl
cml2ZWRTb3VyY2VzPC9GaWx0ZXI+CiAgICAgPC9DbENvbXBpbGU+CkBAIC0xMjM3NCw2ICsxMjM4
Myw5IEBACiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxpbnNwZWN0b3JcQmluZGluZ1Zpc2l0
b3JzLmgiPgogICAgICAgPEZpbHRlcj5pbnNwZWN0b3I8L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVk
ZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGluc3BlY3RvclxDb21tYW5kTGluZUFQSUhv
c3QuaCI+CisgICAgICA8RmlsdGVyPmluc3BlY3RvcjwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRl
PgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caW5zcGVjdG9yXENvbW1hbmRMaW5lQVBJTW9k
dWxlLmgiPgogICAgICAgPEZpbHRlcj5pbnNwZWN0b3I8L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVk
ZT4KQEAgLTEzMTQxLDYgKzEzMTUzLDkgQEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoQ29u
ZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVwkKFByb2plY3RO
YW1lKVxEZXJpdmVkU291cmNlc1xKU0NsaXBib2FyZC5oIj4KICAgICAgIDxGaWx0ZXI+RGVyaXZl
ZFNvdXJjZXM8L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1
ZGU9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVwk
KFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xKU0NvbW1hbmRMaW5lQVBJSG9zdC5oIj4KKyAg
ICAgIDxGaWx0ZXI+RGVyaXZlZFNvdXJjZXM8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KICAg
ICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmokKFBsYXRm
b3JtQXJjaGl0ZWN0dXJlKVwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xKU0NvbW1lbnQu
aCI+CiAgICAgICA8RmlsdGVyPkRlcml2ZWRTb3VyY2VzPC9GaWx0ZXI+CiAgICAgPC9DbEluY2x1
ZGU+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKaW5kZXggZGI5YmE1MS4uOTI3OTFmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMzUzNCw2ICszNTM0LDExIEBACiAJCUE1
ODRGRTJDMTg2Mzg3MEYwMDg0M0IxMCAvKiBDb21tYW5kTGluZUFQSU1vZHVsZS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTU4NEZFMkExODYzODcwRjAw
ODQzQjEwIC8qIENvbW1hbmRMaW5lQVBJTW9kdWxlLmggKi87IH07CiAJCUE1ODRGRTJGMTg2NENC
ODQwMDg0M0IxMCAvKiBQYWdlSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1ODRGRTJEMTg2NENCODQwMDg0M0Ix
MCAvKiBQYWdlSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmNwcCAqLzsgfTsKIAkJQTU4NEZFMzAxODY0
Q0I4NDAwODQzQjEwIC8qIFBhZ2VJbmplY3RlZFNjcmlwdE1hbmFnZXIuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1ODRGRTJFMTg2NENCODQwMDg0M0Ix
MCAvKiBQYWdlSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmggKi87IH07CisJCUE1ODRGRTM0MTg2NEQ1
QUYwMDg0M0IxMCAvKiBDb21tYW5kTGluZUFQSUhvc3QuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTU4NEZFMzExODY0RDVBRjAwODQzQjEwIC8qIENv
bW1hbmRMaW5lQVBJSG9zdC5jcHAgKi87IH07CisJCUE1ODRGRTM1MTg2NEQ1QUYwMDg0M0IxMCAv
KiBDb21tYW5kTGluZUFQSUhvc3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEE1ODRGRTMyMTg2NEQ1QUYwMDg0M0IxMCAvKiBDb21tYW5kTGluZUFQSUhv
c3QuaCAqLzsgfTsKKwkJQTU4NEZFMzgxODY0REFDMTAwODQzQjEwIC8qIEpTQ29tbWFuZExpbmVB
UElIb3N0Q3VzdG9tLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEE1ODRGRTM3MTg2NERBQzEwMDg0M0IxMCAvKiBKU0NvbW1hbmRMaW5lQVBJSG9zdEN1
c3RvbS5jcHAgKi87IH07CisJCUE1ODRGRTNCMTg2NEUyRDgwMDg0M0IxMCAvKiBKU0NvbW1hbmRM
aW5lQVBJSG9zdC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBBNTg0RkUzOTE4NjRFMkQ4MDA4NDNCMTAgLyogSlNDb21tYW5kTGluZUFQSUhvc3QuY3Bw
ICovOyB9OworCQlBNTg0RkUzQzE4NjRFMkQ4MDA4NDNCMTAgLyogSlNDb21tYW5kTGluZUFQSUhv
c3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1ODRG
RTNBMTg2NEUyRDgwMDg0M0IxMCAvKiBKU0NvbW1hbmRMaW5lQVBJSG9zdC5oICovOyB9OwogCQlB
NTkzQ0Y4QjE4NDA1MzUyMDBCRkNFMjcgLyogSW5zcGVjdG9yV2ViQWdlbnRCYXNlLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTkzQ0Y4QTE4NDA1MzUy
MDBCRkNFMjcgLyogSW5zcGVjdG9yV2ViQWdlbnRCYXNlLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQTVBMkFGMEIxODI5NzM0MzAwREUxNzI5IC8q
IFBhZ2VEZWJ1Z2dhYmxlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEE1QTJBRjA5MTgyOTczNDMwMERFMTcyOSAvKiBQYWdlRGVidWdnYWJsZS5jcHAg
Ki87IH07CiAJCUE1QTJBRjBDMTgyOTczNDMwMERFMTcyOSAvKiBQYWdlRGVidWdnYWJsZS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTVBMkFGMEExODI5
NzM0MzAwREUxNzI5IC8qIFBhZ2VEZWJ1Z2dhYmxlLmggKi87IH07CkBAIC0xMDM3NSw2ICsxMDM4
MCwxMiBAQAogCQlBNTg0RkUyQTE4NjM4NzBGMDA4NDNCMTAgLyogQ29tbWFuZExpbmVBUElNb2R1
bGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29tbWFuZExpbmVBUElNb2R1
bGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTU4NEZFMkQxODY0Q0I4NDAwODQz
QjEwIC8qIFBhZ2VJbmplY3RlZFNjcmlwdE1hbmFnZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gUGFnZUluamVjdGVkU2NyaXB0TWFuYWdlci5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE1ODRGRTJFMTg2NENCODQwMDg0M0IxMCAvKiBQYWdlSW5q
ZWN0ZWRTY3JpcHRNYW5hZ2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBh
Z2VJbmplY3RlZFNjcmlwdE1hbmFnZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
QTU4NEZFMzExODY0RDVBRjAwODQzQjEwIC8qIENvbW1hbmRMaW5lQVBJSG9zdC5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDb21tYW5kTGluZUFQSUhvc3QuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBNTg0RkUzMjE4NjRENUFGMDA4NDNCMTAgLyog
Q29tbWFuZExpbmVBUElIb3N0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENv
bW1hbmRMaW5lQVBJSG9zdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBNTg0RkUz
MzE4NjRENUFGMDA4NDNCMTAgLyogQ29tbWFuZExpbmVBUElIb3N0LmlkbCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRl
eHQ7IHBhdGggPSBDb21tYW5kTGluZUFQSUhvc3QuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQlBNTg0RkUzNzE4NjREQUMxMDA4NDNCMTAgLyogSlNDb21tYW5kTGluZUFQSUhvc3RD
dXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNDb21tYW5k
TGluZUFQSUhvc3RDdXN0b20uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBNTg0
RkUzOTE4NjRFMkQ4MDA4NDNCMTAgLyogSlNDb21tYW5kTGluZUFQSUhvc3QuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNDb21tYW5kTGluZUFQSUhvc3QuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBNTg0RkUzQTE4NjRFMkQ4MDA4NDNCMTAgLyog
SlNDb21tYW5kTGluZUFQSUhvc3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
SlNDb21tYW5kTGluZUFQSUhvc3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTU5
M0NGNzIxODQwMkNFOTAwQkZDRTI3IC8qIHByb3RvY29sICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gZm9sZGVyOyBwYXRoID0gcHJvdG9jb2w7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE1OTNDRjc1MTg0MDJENEIwMEJGQ0UyNyAvKiBjb21i
aW5lLWphdmFzY3JpcHQtcmVzb3VyY2VzLnBsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5zY3JpcHQucGVybDsgcGF0aCA9ICJjb21iaW5lLWph
dmFzY3JpcHQtcmVzb3VyY2VzLnBsIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTU5
M0NGOEExODQwNTM1MjAwQkZDRTI3IC8qIEluc3BlY3RvcldlYkFnZW50QmFzZS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbnNwZWN0b3JXZWJBZ2VudEJhc2UuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE0NDg3LDYgKzE0NDk4LDggQEAKIAkJCQk0RjRGNUZG
QzExQ0JEMzAxMDBBMTg2QkYgLyogSW5zcGVjdG9yV2ViRnJvbnRlbmREaXNwYXRjaGVycy5oICov
LAogCQkJCTU3M0QxMzQ1MTRDRTM5RkYwMDU3QUJDQSAvKiBJbnNwZWN0b3JXZWJUeXBlQnVpbGRl
cnMuY3BwICovLAogCQkJCTU3M0QxMzQ2MTRDRTM5RkYwMDU3QUJDQSAvKiBJbnNwZWN0b3JXZWJU
eXBlQnVpbGRlcnMuaCAqLywKKwkJCQlBNTg0RkUzOTE4NjRFMkQ4MDA4NDNCMTAgLyogSlNDb21t
YW5kTGluZUFQSUhvc3QuY3BwICovLAorCQkJCUE1ODRGRTNBMTg2NEUyRDgwMDg0M0IxMCAvKiBK
U0NvbW1hbmRMaW5lQVBJSG9zdC5oICovLAogCQkJCTdBMEU3NkQ4MTBCRjA1OTgwMEEwMjc2RSAv
KiBKU0luamVjdGVkU2NyaXB0SG9zdC5jcHAgKi8sCiAJCQkJN0EwRTc2RDkxMEJGMDU5ODAwQTAy
NzZFIC8qIEpTSW5qZWN0ZWRTY3JpcHRIb3N0LmggKi8sCiAJCQkJN0EwRTc3MUMxMEMwMERCMTAw
QTAyNzZFIC8qIEpTSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmNwcCAqLywKQEAgLTE0NTA4LDYgKzE0
NTIxLDkgQEAKIAkJCQlBNTE4MjI1MzE3RTI4Q0YxMDBBOUJBMUQgLyogU2NyaXB0cyAqLywKIAkJ
CQlBNTkzQ0Y3NTE4NDAyRDRCMDBCRkNFMjcgLyogY29tYmluZS1qYXZhc2NyaXB0LXJlc291cmNl
cy5wbCAqLywKIAkJCQlGMzVBRTVBQjE0OTI1RjVCMDA0RDU3NzYgLyogQmluZGluZ1Zpc2l0b3Jz
LmggKi8sCisJCQkJQTU4NEZFMzExODY0RDVBRjAwODQzQjEwIC8qIENvbW1hbmRMaW5lQVBJSG9z
dC5jcHAgKi8sCisJCQkJQTU4NEZFMzIxODY0RDVBRjAwODQzQjEwIC8qIENvbW1hbmRMaW5lQVBJ
SG9zdC5oICovLAorCQkJCUE1ODRGRTMzMTg2NEQ1QUYwMDg0M0IxMCAvKiBDb21tYW5kTGluZUFQ
SUhvc3QuaWRsICovLAogCQkJCUE1ODRGRTI5MTg2Mzg3MEYwMDg0M0IxMCAvKiBDb21tYW5kTGlu
ZUFQSU1vZHVsZS5jcHAgKi8sCiAJCQkJQTU4NEZFMkExODYzODcwRjAwODQzQjEwIC8qIENvbW1h
bmRMaW5lQVBJTW9kdWxlLmggKi8sCiAJCQkJQTU4NEZFMjcxODYzN0RDQTAwODQzQjEwIC8qIENv
bW1hbmRMaW5lQVBJTW9kdWxlU291cmNlLmpzICovLApAQCAtMTk4MTIsNiArMTk4MjgsNyBAQAog
CQkJCTQ5RUVEMTREMTA1MTk3MUEwMDA5OUZBQiAvKiBKU0NhbnZhc1JlbmRlcmluZ0NvbnRleHRD
dXN0b20uY3BwICovLAogCQkJCTkzQkE1OUIxMEYyQUE1RkUwMDhFOEU5OSAvKiBKU0NEQVRBU2Vj
dGlvbkN1c3RvbS5jcHAgKi8sCiAJCQkJQkNBODNFNTEwRDdDRTIwNTAwMzQyMUE4IC8qIEpTQ2xp
cGJvYXJkQ3VzdG9tLmNwcCAqLywKKwkJCQlBNTg0RkUzNzE4NjREQUMxMDA4NDNCMTAgLyogSlND
b21tYW5kTGluZUFQSUhvc3RDdXN0b20uY3BwICovLAogCQkJCTIwOUI0NTZBMTY3OTZBN0UwMEU1
NEU0RSAvKiBKU0NyeXB0b0N1c3RvbS5jcHAgKi8sCiAJCQkJRTE1N0E4RTYxODE4NEM2NzAwOUY4
MjFEIC8qIEpTQ3J5cHRvS2V5Q3VzdG9tLmNwcCAqLywKIAkJCQlFMUY4MEI4OTE4MzE3MkEyMDA3
ODg1QzMgLyogSlNDcnlwdG9LZXlQYWlyQ3VzdG9tLmNwcCAqLywKQEAgLTIyNjkyLDYgKzIyNzA5
LDcgQEAKIAkJCQk4NTAzMkRFOTBBQThDOUJFMDA3RDNCN0QgLyogRE9NQ1NTVW5rbm93blJ1bGUu
aCBpbiBIZWFkZXJzICovLAogCQkJCTg1OTA5Q0U0MEFDQzdBN0UwMERGMDFGMSAvKiBET01DU1NV
bmtub3duUnVsZUludGVybmFsLmggaW4gSGVhZGVycyAqLywKIAkJCQk4NThDMzgxQzBBQThFMjk2
MDBCMTg3QTQgLyogRE9NQ1NTVmFsdWUuaCBpbiBIZWFkZXJzICovLAorCQkJCUE1ODRGRTM1MTg2
NEQ1QUYwMDg0M0IxMCAvKiBDb21tYW5kTGluZUFQSUhvc3QuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTg1QjQ5OEYzMEFEQjMzNkEwMDkyNUNCQiAvKiBET01DU1NWYWx1ZUludGVybmFsLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk4NThDMzgzQzBBQThFRDgyMDBCMTg3QTQgLyogRE9NQ1NTVmFsdWVMaXN0
LmggaW4gSGVhZGVycyAqLywKIAkJCQk4NTkwOUQyQjBBQ0M3RDU1MDBERjAxRjEgLyogRE9NQ1NT
VmFsdWVMaXN0SW50ZXJuYWwuaCBpbiBIZWFkZXJzICovLApAQCAtMjQwNTEsNiArMjQwNjksNyBA
QAogCQkJCUY5MTZDNDhFMERCNTEwRjgwMDc2Q0Q4MyAvKiBKU1hNTEh0dHBSZXF1ZXN0UHJvZ3Jl
c3NFdmVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkNERkQ0OTYwRTMwNTkyRjAwOUQxMEFEIC8q
IEpTWE1MSHR0cFJlcXVlc3RVcGxvYWQuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBQ0U1M0Y3MEE4
RDE5NDcwMDIyOTQ3RCAvKiBKU1hNTFNlcmlhbGl6ZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCUE1
ODRGRTNDMTg2NEUyRDgwMDg0M0IxMCAvKiBKU0NvbW1hbmRMaW5lQVBJSG9zdC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMUE3NjJDNzQwQTA3NEYyNjAwOTg5RjVCIC8qIEpTWFBhdGhFdmFsdWF0b3Iu
aCBpbiBIZWFkZXJzICovLAogCQkJCUUxNTdBOEVEMTgxODUxQUMwMDlGODIxRCAvKiBDcnlwdG9B
bGdvcml0aG1EZXNjcmlwdGlvbkJ1aWxkZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDNjBEQjRB
MEQyQTNEMUUwMEI5OTE4RiAvKiBKU1hQYXRoRXhjZXB0aW9uLmggaW4gSGVhZGVycyAqLywKQEAg
LTI1OTIyLDYgKzI1OTQxLDcgQEAKIAkJCQk0QUNCQzBCRTEyNzEzQ0JEMDA5NEY5QjIgLyogQ2xh
c3NMaXN0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDOTA0Qjc2MEQxMDk5OEYwMDY4MEQzMiAv
KiBDbGFzc05vZGVMaXN0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDQzA2NTdEMEYzQ0UxQjcw
MENEMkQ4NyAvKiBDbGllbnRSZWN0LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUE1ODRGRTM0MTg2
NEQ1QUYwMDg0M0IxMCAvKiBDb21tYW5kTGluZUFQSUhvc3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJQkNDMDY1ODAwRjNDRTFCNzAwQ0QyRDg3IC8qIENsaWVudFJlY3RMaXN0LmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCUE3ODQ5NDFCMEI1RkU1MDcwMDFFMjM3QSAvKiBDbGlwYm9hcmQuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJODUwMzFCM0YwQTQ0RUZDNzAwRjk5MkUwIC8qIENsaXBib2FyZEV2
ZW50LmNwcCBpbiBTb3VyY2VzICovLApAQCAtMjYwNDcsNiArMjYwNjcsNyBAQAogCQkJCTUwRDQw
NUY5MTQ3RDMxRjMwMEQzMEJCNSAvKiBDdXN0b21GaWx0ZXJNZXNoLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCUUxQzI2NkRFMTgzMTlGMzEwMDNGOEIzMyAvKiBDcnlwdG9LZXlEYXRhUlNBQ29tcG9u
ZW50cy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3RTEyRTkxMDE1RkE1RDNBMDA1RTQxMjYgLyog
Q3VzdG9tRmlsdGVyTWVzaEdlbmVyYXRvci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlBNTg0RkUz
QjE4NjRFMkQ4MDA4NDNCMTAgLyogSlNDb21tYW5kTGluZUFQSUhvc3QuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJNTBDQzBBMzkxNEM2RjVCMTAwMTdBQjUxIC8qIEN1c3RvbUZpbHRlck9wZXJhdGlv
bi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MDkzMzM0RjE2M0IwRTQzMDAwOTlBNjAgLyogQ3Vz
dG9tRmlsdGVyUGFyYW1ldGVyTGlzdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MDNEMENBQTE0
QjVCMDg3MDBGMzJGNTcgLyogQ3VzdG9tRmlsdGVyUHJvZ3JhbS5jcHAgaW4gU291cmNlcyAqLywK
QEAgLTI2NzUwLDYgKzI2NzcxLDcgQEAKIAkJCQk4Mjg4OUI0QzEzQzYyMzkyMDA5QTYxNTYgLyog
SW5zcGVjdG9yU3R5bGVUZXh0RWRpdG9yLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTA3Mjc3RTRF
MTdEMDE4Q0MwMDE1NTM0RCAvKiBKU01lZGlhU3RyZWFtQXVkaW9EZXN0aW5hdGlvbk5vZGUuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJNzU0MTMzQUExMDJFMDBGNDAwMDc1RDAwIC8qIEluc3BlY3Rv
clRpbWVsaW5lQWdlbnQuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQTU4NEZFMzgxODY0REFDMTAw
ODQzQjEwIC8qIEpTQ29tbWFuZExpbmVBUElIb3N0Q3VzdG9tLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTU3M0QxMzQ3MTRDRTM5RkYwMDU3QUJDQSAvKiBJbnNwZWN0b3JXZWJUeXBlQnVpbGRlcnMu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRjM4MTBDMUIxMzY1QTQ5NjAwRUQ2RTMzIC8qIEluc3Bl
Y3RvcldvcmtlckFnZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUYzNTBCNzM1MTNGMTM3N0Qw
MDg4MEM0MyAvKiBJbnN0cnVtZW50aW5nQWdlbnRzLmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNCaW5kaW5nc0FsbEluT25lLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQmluZGluZ3NBbGxJbk9uZS5jcHAKaW5kZXgg
YTMwZjc5ZS4uMjM0MjU5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNCaW5kaW5nc0FsbEluT25lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0JpbmRpbmdzQWxsSW5PbmUuY3BwCkBAIC00NCwxMCArNDQsMTAgQEAKICNpbmNsdWRlICJKU0Nh
bnZhc1JlbmRlcmluZ0NvbnRleHQyREN1c3RvbS5jcHAiCiAjaW5jbHVkZSAiSlNDYW52YXNSZW5k
ZXJpbmdDb250ZXh0Q3VzdG9tLmNwcCIKICNpbmNsdWRlICJKU0NsaXBib2FyZEN1c3RvbS5jcHAi
CisjaW5jbHVkZSAiSlNDb21tYW5kTGluZUFQSUhvc3RDdXN0b20uY3BwIgogI2luY2x1ZGUgIkpT
Q3J5cHRvQ3VzdG9tLmNwcCIKICNpbmNsdWRlICJKU0N1c3RvbVNRTFN0YXRlbWVudEVycm9yQ2Fs
bGJhY2suY3BwIgogI2luY2x1ZGUgIkpTQ3VzdG9tWFBhdGhOU1Jlc29sdmVyLmNwcCIKLSNpbmNs
dWRlICJKU0RpY3Rpb25hcnkuY3BwIgogI2luY2x1ZGUgIkpTRE9NQmluZGluZy5jcHAiCiAjaW5j
bHVkZSAiSlNET01Gb3JtRGF0YUN1c3RvbS5jcHAiCiAjaW5jbHVkZSAiSlNET01HbG9iYWxPYmpl
Y3QuY3BwIgpAQCAtNjQsNiArNjQsNyBAQAogI2luY2x1ZGUgIkpTRE9NV3JhcHBlci5jcHAiCiAj
aW5jbHVkZSAiSlNEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZUN1c3RvbS5jcHAiCiAjaW5jbHVk
ZSAiSlNEZXZpY2VPcmllbnRhdGlvbkV2ZW50Q3VzdG9tLmNwcCIKKyNpbmNsdWRlICJKU0RpY3Rp
b25hcnkuY3BwIgogI2luY2x1ZGUgIkpTRG9jdW1lbnRDdXN0b20uY3BwIgogI2luY2x1ZGUgIkpT
RWxlbWVudEN1c3RvbS5jcHAiCiAjaW5jbHVkZSAiSlNFcnJvckhhbmRsZXIuY3BwIgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDb21tYW5kTGluZUFQSUhvc3RDdXN0
b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDb21tYW5kTGluZUFQSUhvc3RD
dXN0b20uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJlMGFlMjcKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NvbW1hbmRMaW5l
QVBJSG9zdEN1c3RvbS5jcHAKQEAgLTAsMCArMSwxNzMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMDcsIDIwMDggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0
IChDKSAyMDA4IE1hdHQgTGlsZWsgPHdlYmtpdEBtYXR0bGlsZWsuY29tPgorICogQ29weXJpZ2h0
IChDKSAyMDEwLTIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0
aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5h
bWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJv
bW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVj
aWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFT
IElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAor
ICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisKKyNpZiBFTkFCTEUoSU5TUEVDVE9SKQorCisjaW5jbHVkZSAiSlNDb21tYW5kTGlu
ZUFQSUhvc3QuaCIKKworI2luY2x1ZGUgIkNvbW1hbmRMaW5lQVBJSG9zdC5oIgorI2luY2x1ZGUg
Ikluc3BlY3RvckRPTUFnZW50LmgiCisjaW5jbHVkZSAiSlNFdmVudExpc3RlbmVyLmgiCisjaW5j
bHVkZSAiSlNOb2RlLmgiCisjaW5jbHVkZSAiSlNTdG9yYWdlLmgiCisjaW5jbHVkZSAiU3RvcmFn
ZS5oIgorI2luY2x1ZGUgPGJpbmRpbmdzL1NjcmlwdFZhbHVlLmg+CisjaW5jbHVkZSA8aW5zcGVj
dG9yL0luc3BlY3RvclZhbHVlcy5oPgorI2luY2x1ZGUgPHBhcnNlci9Tb3VyY2VDb2RlLmg+Cisj
aW5jbHVkZSA8cnVudGltZS9KU0FycmF5Lmg+CisjaW5jbHVkZSA8cnVudGltZS9KU0Z1bmN0aW9u
Lmg+CisjaW5jbHVkZSA8cnVudGltZS9KU0xvY2suaD4KKyNpbmNsdWRlIDxydW50aW1lL09iamVj
dENvbnN0cnVjdG9yLmg+CisKKyNpZiBFTkFCTEUoU1FMX0RBVEFCQVNFKQorI2luY2x1ZGUgIkRh
dGFiYXNlLmgiCisjaW5jbHVkZSAiSlNEYXRhYmFzZS5oIgorI2VuZGlmCisKK3VzaW5nIG5hbWVz
cGFjZSBKU0M7CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworSlNWYWx1ZSBKU0NvbW1hbmRMaW5l
QVBJSG9zdDo6aW5zcGVjdGVkT2JqZWN0KEV4ZWNTdGF0ZSogZXhlYykKK3sKKyAgICBpZiAoZXhl
Yy0+YXJndW1lbnRDb3VudCgpIDwgMSkKKyAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CisK
KyAgICBDb21tYW5kTGluZUFQSUhvc3Q6Okluc3BlY3RhYmxlT2JqZWN0KiBvYmplY3QgPSBpbXBs
KCkuaW5zcGVjdGVkT2JqZWN0KGV4ZWMtPnVuY2hlY2tlZEFyZ3VtZW50KDApLnRvSW50MzIoZXhl
YykpOworICAgIGlmICghb2JqZWN0KQorICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKKwor
ICAgIEpTTG9ja0hvbGRlciBsb2NrKGV4ZWMpOworICAgIERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVl
IHNjcmlwdFZhbHVlID0gb2JqZWN0LT5nZXQoZXhlYyk7CisgICAgaWYgKHNjcmlwdFZhbHVlLmhh
c05vVmFsdWUoKSkKKyAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CisKKyAgICByZXR1cm4g
c2NyaXB0VmFsdWUuanNWYWx1ZSgpOworfQorCitzdGF0aWMgSlNBcnJheSogZ2V0SlNMaXN0ZW5l
ckZ1bmN0aW9ucyhFeGVjU3RhdGUqIGV4ZWMsIERvY3VtZW50KiBkb2N1bWVudCwgY29uc3QgRXZl
bnRMaXN0ZW5lckluZm8mIGxpc3RlbmVySW5mbykKK3sKKyAgICBKU0FycmF5KiByZXN1bHQgPSBj
b25zdHJ1Y3RFbXB0eUFycmF5KGV4ZWMsIG51bGxwdHIpOworICAgIHNpemVfdCBoYW5kbGVyc0Nv
dW50ID0gbGlzdGVuZXJJbmZvLmV2ZW50TGlzdGVuZXJWZWN0b3Iuc2l6ZSgpOworICAgIGZvciAo
c2l6ZV90IGkgPSAwLCBvdXRwdXRJbmRleCA9IDA7IGkgPCBoYW5kbGVyc0NvdW50OyArK2kpIHsK
KyAgICAgICAgY29uc3QgSlNFdmVudExpc3RlbmVyKiBqc0xpc3RlbmVyID0gSlNFdmVudExpc3Rl
bmVyOjpjYXN0KGxpc3RlbmVySW5mby5ldmVudExpc3RlbmVyVmVjdG9yW2ldLmxpc3RlbmVyLmdl
dCgpKTsKKyAgICAgICAgaWYgKCFqc0xpc3RlbmVyKSB7CisgICAgICAgICAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisKKyAgICAgICAg
Ly8gSGlkZSBsaXN0ZW5lcnMgZnJvbSBvdGhlciBjb250ZXh0cy4KKyAgICAgICAgaWYgKCZqc0xp
c3RlbmVyLT5pc29sYXRlZFdvcmxkKCkgIT0gJmN1cnJlbnRXb3JsZChleGVjKSkKKyAgICAgICAg
ICAgIGNvbnRpbnVlOworCisgICAgICAgIEpTT2JqZWN0KiBmdW5jdGlvbiA9IGpzTGlzdGVuZXIt
PmpzRnVuY3Rpb24oZG9jdW1lbnQpOworICAgICAgICBpZiAoIWZ1bmN0aW9uKQorICAgICAgICAg
ICAgY29udGludWU7CisKKyAgICAgICAgSlNPYmplY3QqIGxpc3RlbmVyRW50cnkgPSBjb25zdHJ1
Y3RFbXB0eU9iamVjdChleGVjKTsKKyAgICAgICAgbGlzdGVuZXJFbnRyeS0+cHV0RGlyZWN0KGV4
ZWMtPnZtKCksIElkZW50aWZpZXIoZXhlYywgImxpc3RlbmVyIiksIGZ1bmN0aW9uKTsKKyAgICAg
ICAgbGlzdGVuZXJFbnRyeS0+cHV0RGlyZWN0KGV4ZWMtPnZtKCksIElkZW50aWZpZXIoZXhlYywg
InVzZUNhcHR1cmUiKSwganNCb29sZWFuKGxpc3RlbmVySW5mby5ldmVudExpc3RlbmVyVmVjdG9y
W2ldLnVzZUNhcHR1cmUpKTsKKyAgICAgICAgcmVzdWx0LT5wdXREaXJlY3RJbmRleChleGVjLCBv
dXRwdXRJbmRleCsrLCBKU1ZhbHVlKGxpc3RlbmVyRW50cnkpKTsKKyAgICB9CisgICAgcmV0dXJu
IHJlc3VsdDsKK30KKworSlNWYWx1ZSBKU0NvbW1hbmRMaW5lQVBJSG9zdDo6Z2V0RXZlbnRMaXN0
ZW5lcnMoRXhlY1N0YXRlKiBleGVjKQoreworICAgIGlmIChleGVjLT5hcmd1bWVudENvdW50KCkg
PCAxKQorICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKKworICAgIEpTVmFsdWUgdmFsdWUg
PSBleGVjLT51bmNoZWNrZWRBcmd1bWVudCgwKTsKKyAgICBpZiAoIXZhbHVlLmlzT2JqZWN0KCkg
fHwgdmFsdWUuaXNOdWxsKCkpCisgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOworCisgICAg
Tm9kZSogbm9kZSA9IHRvTm9kZSh2YWx1ZSk7CisgICAgaWYgKCFub2RlKQorICAgICAgICByZXR1
cm4ganNVbmRlZmluZWQoKTsKKworICAgIFZlY3RvcjxFdmVudExpc3RlbmVySW5mbz4gbGlzdGVu
ZXJzQXJyYXk7CisgICAgaW1wbCgpLmdldEV2ZW50TGlzdGVuZXJzSW1wbChub2RlLCBsaXN0ZW5l
cnNBcnJheSk7CisKKyAgICBKU09iamVjdCogcmVzdWx0ID0gY29uc3RydWN0RW1wdHlPYmplY3Qo
ZXhlYyk7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBsaXN0ZW5lcnNBcnJheS5zaXplKCk7
ICsraSkgeworICAgICAgICBKU0FycmF5KiBsaXN0ZW5lcnMgPSBnZXRKU0xpc3RlbmVyRnVuY3Rp
b25zKGV4ZWMsICZub2RlLT5kb2N1bWVudCgpLCBsaXN0ZW5lcnNBcnJheVtpXSk7CisgICAgICAg
IGlmICghbGlzdGVuZXJzLT5sZW5ndGgoKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAg
ICBBdG9taWNTdHJpbmcgZXZlbnRUeXBlID0gbGlzdGVuZXJzQXJyYXlbaV0uZXZlbnRUeXBlOwor
ICAgICAgICByZXN1bHQtPnB1dERpcmVjdChleGVjLT52bSgpLCBJZGVudGlmaWVyKGV4ZWMsIGV2
ZW50VHlwZS5pbXBsKCkpLCBKU1ZhbHVlKGxpc3RlbmVycykpOworICAgIH0KKworICAgIHJldHVy
biByZXN1bHQ7Cit9CisKK0pTVmFsdWUgSlNDb21tYW5kTGluZUFQSUhvc3Q6Omluc3BlY3QoRXhl
Y1N0YXRlKiBleGVjKQoreworICAgIGlmIChleGVjLT5hcmd1bWVudENvdW50KCkgPj0gMikgewor
ICAgICAgICBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSBvYmplY3QoZXhlYy0+dm0oKSwgZXhlYy0+
dW5jaGVja2VkQXJndW1lbnQoMCkpOworICAgICAgICBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSBo
aW50cyhleGVjLT52bSgpLCBleGVjLT51bmNoZWNrZWRBcmd1bWVudCgxKSk7CisgICAgICAgIGlt
cGwoKS5pbnNwZWN0SW1wbChvYmplY3QudG9JbnNwZWN0b3JWYWx1ZShleGVjKSwgaGludHMudG9J
bnNwZWN0b3JWYWx1ZShleGVjKSk7CisgICAgfQorCisgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7
Cit9CisKK0pTVmFsdWUgSlNDb21tYW5kTGluZUFQSUhvc3Q6OmRhdGFiYXNlSWQoRXhlY1N0YXRl
KiBleGVjKQoreworICAgIGlmIChleGVjLT5hcmd1bWVudENvdW50KCkgPCAxKQorICAgICAgICBy
ZXR1cm4ganNVbmRlZmluZWQoKTsKKworI2lmIEVOQUJMRShTUUxfREFUQUJBU0UpCisgICAgRGF0
YWJhc2UqIGRhdGFiYXNlID0gdG9EYXRhYmFzZShleGVjLT51bmNoZWNrZWRBcmd1bWVudCgwKSk7
CisgICAgaWYgKGRhdGFiYXNlKQorICAgICAgICByZXR1cm4ganNTdHJpbmdXaXRoQ2FjaGUoZXhl
YywgaW1wbCgpLmRhdGFiYXNlSWRJbXBsKGRhdGFiYXNlKSk7CisjZW5kaWYKKworICAgIHJldHVy
biBqc1VuZGVmaW5lZCgpOworfQorCitKU1ZhbHVlIEpTQ29tbWFuZExpbmVBUElIb3N0OjpzdG9y
YWdlSWQoRXhlY1N0YXRlKiBleGVjKQoreworICAgIGlmIChleGVjLT5hcmd1bWVudENvdW50KCkg
PCAxKQorICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKKworICAgIFN0b3JhZ2UqIHN0b3Jh
Z2UgPSB0b1N0b3JhZ2UoZXhlYy0+dW5jaGVja2VkQXJndW1lbnQoMCkpOworICAgIGlmIChzdG9y
YWdlKQorICAgICAgICByZXR1cm4ganNTdHJpbmdXaXRoQ2FjaGUoZXhlYywgaW1wbCgpLnN0b3Jh
Z2VJZEltcGwoc3RvcmFnZSkpOworCisgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7Cit9CisKK30g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShJTlNQRUNUT1IpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0luamVjdGVkU2NyaXB0SG9zdEN1
c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0luamVjdGVkU2NyaXB0SG9z
dEN1c3RvbS5jcHAKaW5kZXggMjQxNzYzNS4uN2ZmNWQ1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNJbmplY3RlZFNjcmlwdEhvc3RDdXN0b20uY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSW5qZWN0ZWRTY3JpcHRIb3N0Q3VzdG9tLmNwcApA
QCAtMzYsMjMgKzM2LDEzIEBACiAKICNpbmNsdWRlICJKU0luamVjdGVkU2NyaXB0SG9zdC5oIgog
Ci0jaWYgRU5BQkxFKFNRTF9EQVRBQkFTRSkKLSNpbmNsdWRlICJEYXRhYmFzZS5oIgotI2luY2x1
ZGUgIkpTRGF0YWJhc2UuaCIKLSNlbmRpZgogI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKICNp
bmNsdWRlICJJbmplY3RlZFNjcmlwdEhvc3QuaCIKLSNpbmNsdWRlICJJbnNwZWN0b3JET01BZ2Vu
dC5oIgotI2luY2x1ZGUgIkluc3BlY3RvckRlYnVnZ2VyQWdlbnQuaCIKLSNpbmNsdWRlICJKU0V2
ZW50TGlzdGVuZXIuaCIKICNpbmNsdWRlICJKU0hUTUxBbGxDb2xsZWN0aW9uLmgiCiAjaW5jbHVk
ZSAiSlNIVE1MQ29sbGVjdGlvbi5oIgogI2luY2x1ZGUgIkpTTm9kZS5oIgogI2luY2x1ZGUgIkpT
Tm9kZUxpc3QuaCIKLSNpbmNsdWRlICJKU1N0b3JhZ2UuaCIKLSNpbmNsdWRlICJTdG9yYWdlLmgi
CiAjaW5jbHVkZSA8YmluZGluZ3MvU2NyaXB0VmFsdWUuaD4KLSNpbmNsdWRlIDxpbnNwZWN0b3Iv
SW5zcGVjdG9yVmFsdWVzLmg+CiAjaW5jbHVkZSA8cGFyc2VyL1NvdXJjZUNvZGUuaD4KICNpbmNs
dWRlIDxydW50aW1lL0RhdGVJbnN0YW5jZS5oPgogI2luY2x1ZGUgPHJ1bnRpbWUvRXJyb3IuaD4K
QEAgLTg1LDIzICs3NSw2IEBAIERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlIEluamVjdGVkU2NyaXB0
SG9zdDo6bm9kZUFzU2NyaXB0VmFsdWUoSlNDOjpFeGVjU3RhdGUqIHN0CiAgICAgcmV0dXJuIERl
cHJlY2F0ZWQ6OlNjcmlwdFZhbHVlKHN0YXRlLT52bSgpLCB0b0pTKHN0YXRlLCBkZXByZWNhdGVk
R2xvYmFsT2JqZWN0Rm9yUHJvdG90eXBlKHN0YXRlKSwgbm9kZSkpOwogfQogCi1KU1ZhbHVlIEpT
SW5qZWN0ZWRTY3JpcHRIb3N0OjppbnNwZWN0ZWRPYmplY3QoRXhlY1N0YXRlKiBleGVjKQotewot
ICAgIGlmIChleGVjLT5hcmd1bWVudENvdW50KCkgPCAxKQotICAgICAgICByZXR1cm4ganNVbmRl
ZmluZWQoKTsKLQotICAgIEluamVjdGVkU2NyaXB0SG9zdDo6SW5zcGVjdGFibGVPYmplY3QqIG9i
amVjdCA9IGltcGwoKS5pbnNwZWN0ZWRPYmplY3QoZXhlYy0+dW5jaGVja2VkQXJndW1lbnQoMCku
dG9JbnQzMihleGVjKSk7Ci0gICAgaWYgKCFvYmplY3QpCi0gICAgICAgIHJldHVybiBqc1VuZGVm
aW5lZCgpOwotCi0gICAgSlNMb2NrSG9sZGVyIGxvY2soZXhlYyk7Ci0gICAgRGVwcmVjYXRlZDo6
U2NyaXB0VmFsdWUgc2NyaXB0VmFsdWUgPSBvYmplY3QtPmdldChleGVjKTsKLSAgICBpZiAoc2Ny
aXB0VmFsdWUuaGFzTm9WYWx1ZSgpKQotICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKLQot
ICAgIHJldHVybiBzY3JpcHRWYWx1ZS5qc1ZhbHVlKCk7Ci19Ci0KIEpTVmFsdWUgSlNJbmplY3Rl
ZFNjcmlwdEhvc3Q6OmludGVybmFsQ29uc3RydWN0b3JOYW1lKEV4ZWNTdGF0ZSogZXhlYykKIHsK
ICAgICBpZiAoZXhlYy0+YXJndW1lbnRDb3VudCgpIDwgMSkKQEAgLTE5NSw4OCArMTY4LDYgQEAg
SlNWYWx1ZSBKU0luamVjdGVkU2NyaXB0SG9zdDo6Z2V0SW50ZXJuYWxQcm9wZXJ0aWVzKEV4ZWNT
dGF0ZSopCiAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiB9CiAKLXN0YXRpYyBKU0FycmF5KiBn
ZXRKU0xpc3RlbmVyRnVuY3Rpb25zKEV4ZWNTdGF0ZSogZXhlYywgRG9jdW1lbnQqIGRvY3VtZW50
LCBjb25zdCBFdmVudExpc3RlbmVySW5mbyYgbGlzdGVuZXJJbmZvKQotewotICAgIEpTQXJyYXkq
IHJlc3VsdCA9IGNvbnN0cnVjdEVtcHR5QXJyYXkoZXhlYywgMCk7Ci0gICAgc2l6ZV90IGhhbmRs
ZXJzQ291bnQgPSBsaXN0ZW5lckluZm8uZXZlbnRMaXN0ZW5lclZlY3Rvci5zaXplKCk7Ci0gICAg
Zm9yIChzaXplX3QgaSA9IDAsIG91dHB1dEluZGV4ID0gMDsgaSA8IGhhbmRsZXJzQ291bnQ7ICsr
aSkgewotICAgICAgICBjb25zdCBKU0V2ZW50TGlzdGVuZXIqIGpzTGlzdGVuZXIgPSBKU0V2ZW50
TGlzdGVuZXI6OmNhc3QobGlzdGVuZXJJbmZvLmV2ZW50TGlzdGVuZXJWZWN0b3JbaV0ubGlzdGVu
ZXIuZ2V0KCkpOwotICAgICAgICBpZiAoIWpzTGlzdGVuZXIpIHsKLSAgICAgICAgICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIH0KLSAgICAg
ICAgLy8gSGlkZSBsaXN0ZW5lcnMgZnJvbSBvdGhlciBjb250ZXh0cy4KLSAgICAgICAgaWYgKCZq
c0xpc3RlbmVyLT5pc29sYXRlZFdvcmxkKCkgIT0gJmN1cnJlbnRXb3JsZChleGVjKSkKLSAgICAg
ICAgICAgIGNvbnRpbnVlOwotICAgICAgICBKU09iamVjdCogZnVuY3Rpb24gPSBqc0xpc3RlbmVy
LT5qc0Z1bmN0aW9uKGRvY3VtZW50KTsKLSAgICAgICAgaWYgKCFmdW5jdGlvbikKLSAgICAgICAg
ICAgIGNvbnRpbnVlOwotICAgICAgICBKU09iamVjdCogbGlzdGVuZXJFbnRyeSA9IGNvbnN0cnVj
dEVtcHR5T2JqZWN0KGV4ZWMpOwotICAgICAgICBsaXN0ZW5lckVudHJ5LT5wdXREaXJlY3QoZXhl
Yy0+dm0oKSwgSWRlbnRpZmllcihleGVjLCAibGlzdGVuZXIiKSwgZnVuY3Rpb24pOwotICAgICAg
ICBsaXN0ZW5lckVudHJ5LT5wdXREaXJlY3QoZXhlYy0+dm0oKSwgSWRlbnRpZmllcihleGVjLCAi
dXNlQ2FwdHVyZSIpLCBqc0Jvb2xlYW4obGlzdGVuZXJJbmZvLmV2ZW50TGlzdGVuZXJWZWN0b3Jb
aV0udXNlQ2FwdHVyZSkpOwotICAgICAgICByZXN1bHQtPnB1dERpcmVjdEluZGV4KGV4ZWMsIG91
dHB1dEluZGV4KyssIEpTVmFsdWUobGlzdGVuZXJFbnRyeSkpOwotICAgIH0KLSAgICByZXR1cm4g
cmVzdWx0OwotfQotCi1KU1ZhbHVlIEpTSW5qZWN0ZWRTY3JpcHRIb3N0OjpnZXRFdmVudExpc3Rl
bmVycyhFeGVjU3RhdGUqIGV4ZWMpCi17Ci0gICAgaWYgKGV4ZWMtPmFyZ3VtZW50Q291bnQoKSA8
IDEpCi0gICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwotICAgIEpTVmFsdWUgdmFsdWUgPSBl
eGVjLT51bmNoZWNrZWRBcmd1bWVudCgwKTsKLSAgICBpZiAoIXZhbHVlLmlzT2JqZWN0KCkgfHwg
dmFsdWUuaXNOdWxsKCkpCi0gICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwotICAgIE5vZGUq
IG5vZGUgPSB0b05vZGUodmFsdWUpOwotICAgIGlmICghbm9kZSkKLSAgICAgICAgcmV0dXJuIGpz
VW5kZWZpbmVkKCk7Ci0KLSAgICBWZWN0b3I8RXZlbnRMaXN0ZW5lckluZm8+IGxpc3RlbmVyc0Fy
cmF5OwotICAgIGltcGwoKS5nZXRFdmVudExpc3RlbmVyc0ltcGwobm9kZSwgbGlzdGVuZXJzQXJy
YXkpOwotCi0gICAgSlNPYmplY3QqIHJlc3VsdCA9IGNvbnN0cnVjdEVtcHR5T2JqZWN0KGV4ZWMp
OwotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbGlzdGVuZXJzQXJyYXkuc2l6ZSgpOyArK2kp
IHsKLSAgICAgICAgSlNBcnJheSogbGlzdGVuZXJzID0gZ2V0SlNMaXN0ZW5lckZ1bmN0aW9ucyhl
eGVjLCAmbm9kZS0+ZG9jdW1lbnQoKSwgbGlzdGVuZXJzQXJyYXlbaV0pOwotICAgICAgICBpZiAo
IWxpc3RlbmVycy0+bGVuZ3RoKCkpCi0gICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgQXRv
bWljU3RyaW5nIGV2ZW50VHlwZSA9IGxpc3RlbmVyc0FycmF5W2ldLmV2ZW50VHlwZTsKLSAgICAg
ICAgcmVzdWx0LT5wdXREaXJlY3QoZXhlYy0+dm0oKSwgSWRlbnRpZmllcihleGVjLCBldmVudFR5
cGUuaW1wbCgpKSwgSlNWYWx1ZShsaXN0ZW5lcnMpKTsKLSAgICB9Ci0KLSAgICByZXR1cm4gcmVz
dWx0OwotfQotCi1KU1ZhbHVlIEpTSW5qZWN0ZWRTY3JpcHRIb3N0OjppbnNwZWN0KEV4ZWNTdGF0
ZSogZXhlYykKLXsKLSAgICBpZiAoZXhlYy0+YXJndW1lbnRDb3VudCgpID49IDIpIHsKLSAgICAg
ICAgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUgb2JqZWN0KGV4ZWMtPnZtKCksIGV4ZWMtPnVuY2hl
Y2tlZEFyZ3VtZW50KDApKTsKLSAgICAgICAgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUgaGludHMo
ZXhlYy0+dm0oKSwgZXhlYy0+dW5jaGVja2VkQXJndW1lbnQoMSkpOwotICAgICAgICBpbXBsKCku
aW5zcGVjdEltcGwob2JqZWN0LnRvSW5zcGVjdG9yVmFsdWUoZXhlYyksIGhpbnRzLnRvSW5zcGVj
dG9yVmFsdWUoZXhlYykpOwotICAgIH0KLSAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKLX0KLQot
SlNWYWx1ZSBKU0luamVjdGVkU2NyaXB0SG9zdDo6ZGF0YWJhc2VJZChFeGVjU3RhdGUqIGV4ZWMp
Ci17Ci0gICAgaWYgKGV4ZWMtPmFyZ3VtZW50Q291bnQoKSA8IDEpCi0gICAgICAgIHJldHVybiBq
c1VuZGVmaW5lZCgpOwotI2lmIEVOQUJMRShTUUxfREFUQUJBU0UpCi0gICAgRGF0YWJhc2UqIGRh
dGFiYXNlID0gdG9EYXRhYmFzZShleGVjLT51bmNoZWNrZWRBcmd1bWVudCgwKSk7Ci0gICAgaWYg
KGRhdGFiYXNlKQotICAgICAgICByZXR1cm4ganNTdHJpbmdXaXRoQ2FjaGUoZXhlYywgaW1wbCgp
LmRhdGFiYXNlSWRJbXBsKGRhdGFiYXNlKSk7Ci0jZW5kaWYKLSAgICByZXR1cm4ganNVbmRlZmlu
ZWQoKTsKLX0KLQotSlNWYWx1ZSBKU0luamVjdGVkU2NyaXB0SG9zdDo6c3RvcmFnZUlkKEV4ZWNT
dGF0ZSogZXhlYykKLXsKLSAgICBpZiAoZXhlYy0+YXJndW1lbnRDb3VudCgpIDwgMSkKLSAgICAg
ICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7Ci0gICAgU3RvcmFnZSogc3RvcmFnZSA9IHRvU3RvcmFn
ZShleGVjLT51bmNoZWNrZWRBcmd1bWVudCgwKSk7Ci0gICAgaWYgKHN0b3JhZ2UpCi0gICAgICAg
IHJldHVybiBqc1N0cmluZ1dpdGhDYWNoZShleGVjLCBpbXBsKCkuc3RvcmFnZUlkSW1wbChzdG9y
YWdlKSk7Ci0gICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7Ci19Ci0KIEpTVmFsdWUgSlNJbmplY3Rl
ZFNjcmlwdEhvc3Q6OmV2YWx1YXRlKEV4ZWNTdGF0ZSogZXhlYykgY29uc3QKIHsKICAgICBKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0SG9zdC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvQ29tbWFuZExpbmVBUElIb3N0LmNwcApzaW1p
bGFyaXR5IGluZGV4IDcyJQpjb3B5IGZyb20gU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVj
dGVkU2NyaXB0SG9zdC5jcHAKY29weSB0byBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvQ29tbWFu
ZExpbmVBUElIb3N0LmNwcAppbmRleCAwN2M3NmU0Li4xMDcyNDJhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRIb3N0LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvQ29tbWFuZExpbmVBUElIb3N0LmNwcApAQCAtMjksMTEgKzI5LDEw
IEBACiAgKi8KIAogI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkNvbW1hbmRMaW5lQVBJ
SG9zdC5oIgogCiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKIAotI2luY2x1ZGUgIkluamVjdGVkU2Ny
aXB0SG9zdC5oIgotCiAjaW5jbHVkZSAiRWxlbWVudC5oIgogI2luY2x1ZGUgIkZyYW1lLmgiCiAj
aW5jbHVkZSAiRnJhbWVMb2FkZXIuaCIKQEAgLTYyLDM5ICs2MSwzOSBAQCB1c2luZyBuYW1lc3Bh
Y2UgSW5zcGVjdG9yOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVBhc3NSZWZQdHI8SW5qZWN0
ZWRTY3JpcHRIb3N0PiBJbmplY3RlZFNjcmlwdEhvc3Q6OmNyZWF0ZSgpCitQYXNzUmVmUHRyPENv
bW1hbmRMaW5lQVBJSG9zdD4gQ29tbWFuZExpbmVBUElIb3N0OjpjcmVhdGUoKQogewotICAgIHJl
dHVybiBhZG9wdFJlZihuZXcgSW5qZWN0ZWRTY3JpcHRIb3N0KCkpOworICAgIHJldHVybiBhZG9w
dFJlZihuZXcgQ29tbWFuZExpbmVBUElIb3N0KTsKIH0KIAotSW5qZWN0ZWRTY3JpcHRIb3N0OjpJ
bmplY3RlZFNjcmlwdEhvc3QoKQotICAgIDogbV9pbnNwZWN0b3JBZ2VudCgwKQotICAgICwgbV9j
b25zb2xlQWdlbnQoMCkKK0NvbW1hbmRMaW5lQVBJSG9zdDo6Q29tbWFuZExpbmVBUElIb3N0KCkK
KyAgICA6IG1faW5zcGVjdG9yQWdlbnQobnVsbHB0cikKKyAgICAsIG1fY29uc29sZUFnZW50KG51
bGxwdHIpCisgICAgLCBtX2RvbUFnZW50KG51bGxwdHIpCisgICAgLCBtX2RvbVN0b3JhZ2VBZ2Vu
dChudWxscHRyKQogI2lmIEVOQUJMRShTUUxfREFUQUJBU0UpCi0gICAgLCBtX2RhdGFiYXNlQWdl
bnQoMCkKKyAgICAsIG1fZGF0YWJhc2VBZ2VudChudWxscHRyKQogI2VuZGlmCi0gICAgLCBtX2Rv
bVN0b3JhZ2VBZ2VudCgwKQotICAgICwgbV9kb21BZ2VudCgwKQogewotICAgIG1fZGVmYXVsdElu
c3BlY3RhYmxlT2JqZWN0ID0gYWRvcHRQdHIobmV3IEluc3BlY3RhYmxlT2JqZWN0KCkpOworICAg
IG1fZGVmYXVsdEluc3BlY3RhYmxlT2JqZWN0ID0gYWRvcHRQdHIobmV3IEluc3BlY3RhYmxlT2Jq
ZWN0KTsKIH0KIAotSW5qZWN0ZWRTY3JpcHRIb3N0Ojp+SW5qZWN0ZWRTY3JpcHRIb3N0KCkKK0Nv
bW1hbmRMaW5lQVBJSG9zdDo6fkNvbW1hbmRMaW5lQVBJSG9zdCgpCiB7CiB9CiAKLXZvaWQgSW5q
ZWN0ZWRTY3JpcHRIb3N0OjpkaXNjb25uZWN0KCkKK3ZvaWQgQ29tbWFuZExpbmVBUElIb3N0Ojpk
aXNjb25uZWN0KCkKIHsKLSAgICBtX2luc3BlY3RvckFnZW50ID0gMDsKLSAgICBtX2NvbnNvbGVB
Z2VudCA9IDA7CisgICAgbV9pbnNwZWN0b3JBZ2VudCA9IG51bGxwdHI7CisgICAgbV9jb25zb2xl
QWdlbnQgPSBudWxscHRyOworICAgIG1fZG9tQWdlbnQgPSBudWxscHRyOworICAgIG1fZG9tU3Rv
cmFnZUFnZW50ID0gbnVsbHB0cjsKICNpZiBFTkFCTEUoU1FMX0RBVEFCQVNFKQotICAgIG1fZGF0
YWJhc2VBZ2VudCA9IDA7CisgICAgbV9kYXRhYmFzZUFnZW50ID0gbnVsbHB0cjsKICNlbmRpZgot
ICAgIG1fZG9tU3RvcmFnZUFnZW50ID0gMDsKLSAgICBtX2RvbUFnZW50ID0gMDsKIH0KIAotdm9p
ZCBJbmplY3RlZFNjcmlwdEhvc3Q6Omluc3BlY3RJbXBsKFBhc3NSZWZQdHI8SW5zcGVjdG9yVmFs
dWU+IG9iamVjdCwgUGFzc1JlZlB0cjxJbnNwZWN0b3JWYWx1ZT4gaGludHMpCit2b2lkIENvbW1h
bmRMaW5lQVBJSG9zdDo6aW5zcGVjdEltcGwoUGFzc1JlZlB0cjxJbnNwZWN0b3JWYWx1ZT4gb2Jq
ZWN0LCBQYXNzUmVmUHRyPEluc3BlY3RvclZhbHVlPiBoaW50cykKIHsKICAgICBpZiAobV9pbnNw
ZWN0b3JBZ2VudCkgewogICAgICAgICBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6UnVu
dGltZTo6UmVtb3RlT2JqZWN0PiByZW1vdGVPYmplY3QgPSBJbnNwZWN0b3I6OlR5cGVCdWlsZGVy
OjpSdW50aW1lOjpSZW1vdGVPYmplY3Q6OnJ1bnRpbWVDYXN0KG9iamVjdCk7CkBAIC0xMDIsMTMg
KzEwMSwxMyBAQCB2b2lkIEluamVjdGVkU2NyaXB0SG9zdDo6aW5zcGVjdEltcGwoUGFzc1JlZlB0
cjxJbnNwZWN0b3JWYWx1ZT4gb2JqZWN0LCBQYXNzUmVmUAogICAgIH0KIH0KIAotdm9pZCBJbmpl
Y3RlZFNjcmlwdEhvc3Q6OmdldEV2ZW50TGlzdGVuZXJzSW1wbChOb2RlKiBub2RlLCBWZWN0b3I8
RXZlbnRMaXN0ZW5lckluZm8+JiBsaXN0ZW5lcnNBcnJheSkKK3ZvaWQgQ29tbWFuZExpbmVBUElI
b3N0OjpnZXRFdmVudExpc3RlbmVyc0ltcGwoTm9kZSogbm9kZSwgVmVjdG9yPEV2ZW50TGlzdGVu
ZXJJbmZvPiYgbGlzdGVuZXJzQXJyYXkpCiB7CiAgICAgaWYgKG1fZG9tQWdlbnQpCiAgICAgICAg
IG1fZG9tQWdlbnQtPmdldEV2ZW50TGlzdGVuZXJzKG5vZGUsIGxpc3RlbmVyc0FycmF5LCBmYWxz
ZSk7CiB9CiAKLXZvaWQgSW5qZWN0ZWRTY3JpcHRIb3N0OjpjbGVhckNvbnNvbGVNZXNzYWdlcygp
Cit2b2lkIENvbW1hbmRMaW5lQVBJSG9zdDo6Y2xlYXJDb25zb2xlTWVzc2FnZXMoKQogewogICAg
IGlmIChtX2NvbnNvbGVBZ2VudCkgewogICAgICAgICBFcnJvclN0cmluZyBlcnJvcjsKQEAgLTEx
NiwzNyArMTE1LDM4IEBAIHZvaWQgSW5qZWN0ZWRTY3JpcHRIb3N0OjpjbGVhckNvbnNvbGVNZXNz
YWdlcygpCiAgICAgfQogfQogCi12b2lkIEluamVjdGVkU2NyaXB0SG9zdDo6Y29weVRleHQoY29u
c3QgU3RyaW5nJiB0ZXh0KQordm9pZCBDb21tYW5kTGluZUFQSUhvc3Q6OmNvcHlUZXh0KGNvbnN0
IFN0cmluZyYgdGV4dCkKIHsKICAgICBQYXN0ZWJvYXJkOjpjcmVhdGVGb3JDb3B5QW5kUGFzdGUo
KS0+d3JpdGVQbGFpblRleHQodGV4dCwgUGFzdGVib2FyZDo6Q2Fubm90U21hcnRSZXBsYWNlKTsK
IH0KIAotRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUgSW5qZWN0ZWRTY3JpcHRIb3N0OjpJbnNwZWN0
YWJsZU9iamVjdDo6Z2V0KEpTQzo6RXhlY1N0YXRlKikKK0RlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVl
IENvbW1hbmRMaW5lQVBJSG9zdDo6SW5zcGVjdGFibGVPYmplY3Q6OmdldChKU0M6OkV4ZWNTdGF0
ZSopCiB7CiAgICAgcmV0dXJuIERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlKCk7CiB9OwogCi12b2lk
IEluamVjdGVkU2NyaXB0SG9zdDo6YWRkSW5zcGVjdGVkT2JqZWN0KFBhc3NPd25QdHI8SW5qZWN0
ZWRTY3JpcHRIb3N0OjpJbnNwZWN0YWJsZU9iamVjdD4gb2JqZWN0KQordm9pZCBDb21tYW5kTGlu
ZUFQSUhvc3Q6OmFkZEluc3BlY3RlZE9iamVjdChQYXNzT3duUHRyPENvbW1hbmRMaW5lQVBJSG9z
dDo6SW5zcGVjdGFibGVPYmplY3Q+IG9iamVjdCkKIHsKICAgICBtX2luc3BlY3RlZE9iamVjdHMu
aW5zZXJ0KDAsIG9iamVjdCk7CiAgICAgd2hpbGUgKG1faW5zcGVjdGVkT2JqZWN0cy5zaXplKCkg
PiA1KQogICAgICAgICBtX2luc3BlY3RlZE9iamVjdHMucmVtb3ZlTGFzdCgpOwogfQogCi12b2lk
IEluamVjdGVkU2NyaXB0SG9zdDo6Y2xlYXJJbnNwZWN0ZWRPYmplY3RzKCkKK3ZvaWQgQ29tbWFu
ZExpbmVBUElIb3N0OjpjbGVhckluc3BlY3RlZE9iamVjdHMoKQogewogICAgIG1faW5zcGVjdGVk
T2JqZWN0cy5jbGVhcigpOwogfQogCi1JbmplY3RlZFNjcmlwdEhvc3Q6Okluc3BlY3RhYmxlT2Jq
ZWN0KiBJbmplY3RlZFNjcmlwdEhvc3Q6Omluc3BlY3RlZE9iamVjdCh1bnNpZ25lZCBpbnQgbnVt
KQorQ29tbWFuZExpbmVBUElIb3N0OjpJbnNwZWN0YWJsZU9iamVjdCogQ29tbWFuZExpbmVBUElI
b3N0OjppbnNwZWN0ZWRPYmplY3QodW5zaWduZWQgaW5kZXgpCiB7Ci0gICAgaWYgKG51bSA+PSBt
X2luc3BlY3RlZE9iamVjdHMuc2l6ZSgpKQorICAgIGlmIChpbmRleCA+PSBtX2luc3BlY3RlZE9i
amVjdHMuc2l6ZSgpKQogICAgICAgICByZXR1cm4gbV9kZWZhdWx0SW5zcGVjdGFibGVPYmplY3Qu
Z2V0KCk7Ci0gICAgcmV0dXJuIG1faW5zcGVjdGVkT2JqZWN0c1tudW1dLmdldCgpOworCisgICAg
cmV0dXJuIG1faW5zcGVjdGVkT2JqZWN0c1tpbmRleF0uZ2V0KCk7CiB9CiAKICNpZiBFTkFCTEUo
U1FMX0RBVEFCQVNFKQotU3RyaW5nIEluamVjdGVkU2NyaXB0SG9zdDo6ZGF0YWJhc2VJZEltcGwo
RGF0YWJhc2UqIGRhdGFiYXNlKQorU3RyaW5nIENvbW1hbmRMaW5lQVBJSG9zdDo6ZGF0YWJhc2VJ
ZEltcGwoRGF0YWJhc2UqIGRhdGFiYXNlKQogewogICAgIGlmIChtX2RhdGFiYXNlQWdlbnQpCiAg
ICAgICAgIHJldHVybiBtX2RhdGFiYXNlQWdlbnQtPmRhdGFiYXNlSWQoZGF0YWJhc2UpOwpAQCAt
MTU0LDcgKzE1NCw3IEBAIFN0cmluZyBJbmplY3RlZFNjcmlwdEhvc3Q6OmRhdGFiYXNlSWRJbXBs
KERhdGFiYXNlKiBkYXRhYmFzZSkKIH0KICNlbmRpZgogCi1TdHJpbmcgSW5qZWN0ZWRTY3JpcHRI
b3N0OjpzdG9yYWdlSWRJbXBsKFN0b3JhZ2UqIHN0b3JhZ2UpCitTdHJpbmcgQ29tbWFuZExpbmVB
UElIb3N0OjpzdG9yYWdlSWRJbXBsKFN0b3JhZ2UqIHN0b3JhZ2UpCiB7CiAgICAgaWYgKG1fZG9t
U3RvcmFnZUFnZW50KQogICAgICAgICByZXR1cm4gbV9kb21TdG9yYWdlQWdlbnQtPnN0b3JhZ2VJ
ZChzdG9yYWdlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3Rl
ZFNjcmlwdEhvc3QuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Db21tYW5kTGluZUFQSUhv
c3QuaApzaW1pbGFyaXR5IGluZGV4IDg3JQpjb3B5IGZyb20gU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luamVjdGVkU2NyaXB0SG9zdC5oCmNvcHkgdG8gU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0NvbW1hbmRMaW5lQVBJSG9zdC5oCmluZGV4IDExOWE0NTAuLmJjM2ZkMmMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdEhvc3QuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvQ29tbWFuZExpbmVBUElIb3N0LmgKQEAgLTEsNSArMSw1IEBA
CiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNywgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKQEAgLTcsMTMgKzcsMTMgQEAKICAqIGFyZSBtZXQ6CiAg
KgogICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLiAKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCiAgKiAyLiAgUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKICAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4gCisgKiAgICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KICAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIENvbXB1dGVyLCBJbmMuICgi
QXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCiAgKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUg
dXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAotICogICAgIGZyb20g
dGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4g
CisgKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRl
biBwZXJtaXNzaW9uLgogICoKICAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
QU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCiAgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVE
CkBAIC0yNyw4ICsyNyw4IEBACiAgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNpZm5kZWYgSW5qZWN0ZWRT
Y3JpcHRIb3N0X2gKLSNkZWZpbmUgSW5qZWN0ZWRTY3JpcHRIb3N0X2gKKyNpZm5kZWYgQ29tbWFu
ZExpbmVBUElIb3N0X2gKKyNkZWZpbmUgQ29tbWFuZExpbmVBUElIb3N0X2gKIAogI2luY2x1ZGUg
IkNvbnNvbGVUeXBlcy5oIgogI2luY2x1ZGUgIkluc3BlY3RvckFnZW50LmgiCkBAIC01OSwzNCAr
NTksMzQgQEAgY2xhc3MgU3RvcmFnZTsKIAogc3RydWN0IEV2ZW50TGlzdGVuZXJJbmZvOwogCi1j
bGFzcyBJbmplY3RlZFNjcmlwdEhvc3QgOiBwdWJsaWMgUmVmQ291bnRlZDxJbmplY3RlZFNjcmlw
dEhvc3Q+IHsKK2NsYXNzIENvbW1hbmRMaW5lQVBJSG9zdCA6IHB1YmxpYyBSZWZDb3VudGVkPENv
bW1hbmRMaW5lQVBJSG9zdD4gewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPEluamVj
dGVkU2NyaXB0SG9zdD4gY3JlYXRlKCk7Ci0gICAgfkluamVjdGVkU2NyaXB0SG9zdCgpOworICAg
IHN0YXRpYyBQYXNzUmVmUHRyPENvbW1hbmRMaW5lQVBJSG9zdD4gY3JlYXRlKCk7CisgICAgfkNv
bW1hbmRMaW5lQVBJSG9zdCgpOwogCiAgICAgdm9pZCBpbml0KEluc3BlY3RvckFnZW50KiBpbnNw
ZWN0b3JBZ2VudAogICAgICAgICAgICAgLCBJbnNwZWN0b3JDb25zb2xlQWdlbnQqIGNvbnNvbGVB
Z2VudAotI2lmIEVOQUJMRShTUUxfREFUQUJBU0UpCi0gICAgICAgICAgICAsIEluc3BlY3RvckRh
dGFiYXNlQWdlbnQqIGRhdGFiYXNlQWdlbnQKLSNlbmRpZgotICAgICAgICAgICAgLCBJbnNwZWN0
b3JET01TdG9yYWdlQWdlbnQqIGRvbVN0b3JhZ2VBZ2VudAogICAgICAgICAgICAgLCBJbnNwZWN0
b3JET01BZ2VudCogZG9tQWdlbnQKKyAgICAgICAgICAgICwgSW5zcGVjdG9yRE9NU3RvcmFnZUFn
ZW50KiBkb21TdG9yYWdlQWdlbnQKKyNpZiBFTkFCTEUoU1FMX0RBVEFCQVNFKQorICAgICAgICAg
ICAgLCBJbnNwZWN0b3JEYXRhYmFzZUFnZW50KiBkYXRhYmFzZUFnZW50CisjZW5kaWYKICAgICAg
ICAgKQogICAgIHsKICAgICAgICAgbV9pbnNwZWN0b3JBZ2VudCA9IGluc3BlY3RvckFnZW50Owog
ICAgICAgICBtX2NvbnNvbGVBZ2VudCA9IGNvbnNvbGVBZ2VudDsKLSNpZiBFTkFCTEUoU1FMX0RB
VEFCQVNFKQotICAgICAgICBtX2RhdGFiYXNlQWdlbnQgPSBkYXRhYmFzZUFnZW50OwotI2VuZGlm
Ci0gICAgICAgIG1fZG9tU3RvcmFnZUFnZW50ID0gZG9tU3RvcmFnZUFnZW50OwogICAgICAgICBt
X2RvbUFnZW50ID0gZG9tQWdlbnQ7CisgICAgICAgIG1fZG9tU3RvcmFnZUFnZW50ID0gZG9tU3Rv
cmFnZUFnZW50OworI2lmIEVOQUJMRShTUUxfREFUQUJBU0UpCisgICAgICAgIG1fZGF0YWJhc2VB
Z2VudCA9IGRhdGFiYXNlQWdlbnQ7CisjZW5kaWYKICAgICB9CiAKLSAgICBzdGF0aWMgTm9kZSog
c2NyaXB0VmFsdWVBc05vZGUoRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUpOwotICAgIHN0YXRpYyBE
ZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSBub2RlQXNTY3JpcHRWYWx1ZShKU0M6OkV4ZWNTdGF0ZSos
IE5vZGUqKTsKLQogICAgIHZvaWQgZGlzY29ubmVjdCgpOwogCisgICAgdm9pZCBjbGVhckNvbnNv
bGVNZXNzYWdlcygpOworICAgIHZvaWQgY29weVRleHQoY29uc3QgU3RyaW5nJiB0ZXh0KTsKKwog
ICAgIGNsYXNzIEluc3BlY3RhYmxlT2JqZWN0IHsKICAgICAgICAgV1RGX01BS0VfRkFTVF9BTExP
Q0FURUQ7CiAgICAgcHVibGljOgpAQCAtOTUsMzIgKzk1LDMxIEBAIHB1YmxpYzoKICAgICB9Owog
ICAgIHZvaWQgYWRkSW5zcGVjdGVkT2JqZWN0KFBhc3NPd25QdHI8SW5zcGVjdGFibGVPYmplY3Q+
KTsKICAgICB2b2lkIGNsZWFySW5zcGVjdGVkT2JqZWN0cygpOwotICAgIEluc3BlY3RhYmxlT2Jq
ZWN0KiBpbnNwZWN0ZWRPYmplY3QodW5zaWduZWQgaW50IG51bSk7Ci0KKyAgICBJbnNwZWN0YWJs
ZU9iamVjdCogaW5zcGVjdGVkT2JqZWN0KHVuc2lnbmVkIGluZGV4KTsKICAgICB2b2lkIGluc3Bl
Y3RJbXBsKFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JWYWx1ZT4gb2JqZWN0VG9JbnNw
ZWN0LCBQYXNzUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yVmFsdWU+IGhpbnRzKTsKKwogICAg
IHZvaWQgZ2V0RXZlbnRMaXN0ZW5lcnNJbXBsKE5vZGUqLCBWZWN0b3I8RXZlbnRMaXN0ZW5lcklu
Zm8+JiBsaXN0ZW5lcnNBcnJheSk7CiAKLSAgICB2b2lkIGNsZWFyQ29uc29sZU1lc3NhZ2VzKCk7
Ci0gICAgdm9pZCBjb3B5VGV4dChjb25zdCBTdHJpbmcmIHRleHQpOwogI2lmIEVOQUJMRShTUUxf
REFUQUJBU0UpCiAgICAgU3RyaW5nIGRhdGFiYXNlSWRJbXBsKERhdGFiYXNlKik7CiAjZW5kaWYK
ICAgICBTdHJpbmcgc3RvcmFnZUlkSW1wbChTdG9yYWdlKik7CiAKIHByaXZhdGU6Ci0gICAgSW5q
ZWN0ZWRTY3JpcHRIb3N0KCk7CisgICAgQ29tbWFuZExpbmVBUElIb3N0KCk7CiAKICAgICBJbnNw
ZWN0b3JBZ2VudCogbV9pbnNwZWN0b3JBZ2VudDsKICAgICBJbnNwZWN0b3JDb25zb2xlQWdlbnQq
IG1fY29uc29sZUFnZW50OwotI2lmIEVOQUJMRShTUUxfREFUQUJBU0UpCi0gICAgSW5zcGVjdG9y
RGF0YWJhc2VBZ2VudCogbV9kYXRhYmFzZUFnZW50OwotI2VuZGlmCi0gICAgSW5zcGVjdG9yRE9N
U3RvcmFnZUFnZW50KiBtX2RvbVN0b3JhZ2VBZ2VudDsKICAgICBJbnNwZWN0b3JET01BZ2VudCog
bV9kb21BZ2VudDsKKyAgICBJbnNwZWN0b3JET01TdG9yYWdlQWdlbnQqIG1fZG9tU3RvcmFnZUFn
ZW50OworI2lmIEVOQUJMRShTUUxfREFUQUJBU0UpCisgICAgSW5zcGVjdG9yRGF0YWJhc2VBZ2Vu
dCogbV9kYXRhYmFzZUFnZW50OworI2VuZGlmCisKICAgICBWZWN0b3I8T3duUHRyPEluc3BlY3Rh
YmxlT2JqZWN0Pj4gbV9pbnNwZWN0ZWRPYmplY3RzOwogICAgIE93blB0cjxJbnNwZWN0YWJsZU9i
amVjdD4gbV9kZWZhdWx0SW5zcGVjdGFibGVPYmplY3Q7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCiAKLSNlbmRpZiAvLyAhZGVmaW5lZChJbmplY3RlZFNjcmlwdEhvc3RfaCkKKyNlbmRp
ZiAvLyAhZGVmaW5lZChDb21tYW5kTGluZUFQSUhvc3RfaCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdEhvc3QuaWRsIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0NvbW1hbmRMaW5lQVBJSG9zdC5pZGwKc2ltaWxhcml0eSBpbmRleCA4MyUKY29w
eSBmcm9tIFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdEhvc3QuaWRsCmNv
cHkgdG8gU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0NvbW1hbmRMaW5lQVBJSG9zdC5pZGwKaW5k
ZXggZDg2NjNlZC4uMjI4NDI2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luamVjdGVkU2NyaXB0SG9zdC5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0Nv
bW1hbmRMaW5lQVBJSG9zdC5pZGwKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChD
KSAyMDA3LCAyMDA4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdo
dCAoQykgMjAwNywgMjAwOCwgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAg
KiBDb3B5cmlnaHQgKEMpIDIwMDggTWF0dCBMaWxlayA8d2Via2l0QG1hdHRsaWxlay5jb20+CiAg
KiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAq
CkBAIC0zNCwyMSArMzQsMTIgQEAKICAgICBOb0ludGVyZmFjZU9iamVjdCwKICAgICBDb25kaXRp
b25hbD1JTlNQRUNUT1IsCiAgICAgSW1wbGVtZW50YXRpb25MYWNrc1ZUYWJsZQotXSBpbnRlcmZh
Y2UgSW5qZWN0ZWRTY3JpcHRIb3N0IHsKK10gaW50ZXJmYWNlIENvbW1hbmRMaW5lQVBJSG9zdCB7
CiAgICAgdm9pZCBjbGVhckNvbnNvbGVNZXNzYWdlcygpOwotCiAgICAgdm9pZCBjb3B5VGV4dChE
T01TdHJpbmcgdGV4dCk7CiAgICAgW0N1c3RvbV0gdm9pZCBpbnNwZWN0KGFueSBvYmplY3RJZCwg
YW55IGhpbnRzKTsKICAgICBbQ3VzdG9tXSBhbnkgaW5zcGVjdGVkT2JqZWN0KGludCBudW0pOwot
ICAgIFtDdXN0b21dIGFueSBpbnRlcm5hbENvbnN0cnVjdG9yTmFtZShhbnkgb2JqZWN0KTsKLSAg
ICBbQ3VzdG9tXSBib29sZWFuIGlzSFRNTEFsbENvbGxlY3Rpb24oYW55IG9iamVjdCk7Ci0gICAg
W0N1c3RvbV0gRE9NU3RyaW5nIHR5cGUoYW55IG9iamVjdCk7Ci0gICAgW0N1c3RvbV0gYW55IGZ1
bmN0aW9uRGV0YWlscyhhbnkgb2JqZWN0KTsKLSAgICBbQ3VzdG9tXSBBcnJheSBnZXRJbnRlcm5h
bFByb3BlcnRpZXMoYW55IG9iamVjdCk7CiAgICAgW0N1c3RvbV0gQXJyYXkgZ2V0RXZlbnRMaXN0
ZW5lcnMoTm9kZSBub2RlKTsKLQotICAgIFtDdXN0b21dIHJlYWRvbmx5IGF0dHJpYnV0ZSBhbnkg
ZXZhbHVhdGU7Ci0KICAgICBbQ3VzdG9tXSBET01TdHJpbmcgZGF0YWJhc2VJZChhbnkgZGF0YWJh
c2UpOwogICAgIFtDdXN0b21dIERPTVN0cmluZyBzdG9yYWdlSWQoYW55IHN0b3JhZ2UpOwogfTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Db21tYW5kTGluZUFQSU1vZHVs
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvQ29tbWFuZExpbmVBUElNb2R1bGUuY3Bw
CmluZGV4IDI1MDJkMmYuLjk1MzM5ZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9Db21tYW5kTGluZUFQSU1vZHVsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0NvbW1hbmRMaW5lQVBJTW9kdWxlLmNwcApAQCAtMjksNiArMjksOSBAQAogI2lmIEVOQUJM
RShJTlNQRUNUT1IpCiAKICNpbmNsdWRlICJDb21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZS5oIgor
I2luY2x1ZGUgIkpTQ29tbWFuZExpbmVBUElIb3N0LmgiCisKK3VzaW5nIG5hbWVzcGFjZSBKU0M7
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNDgsNiArNTEsMTMgQEAgU3RyaW5nIENvbW1h
bmRMaW5lQVBJTW9kdWxlOjpzb3VyY2UoKSBjb25zdAogICAgIHJldHVybiBTdHJpbmcocmVpbnRl
cnByZXRfY2FzdDxjb25zdCBjaGFyKj4oQ29tbWFuZExpbmVBUElNb2R1bGVTb3VyY2VfanMpLCBz
aXplb2YoQ29tbWFuZExpbmVBUElNb2R1bGVTb3VyY2VfanMpKTsKIH0KIAorSlNDOjpKU1ZhbHVl
IENvbW1hbmRMaW5lQVBJTW9kdWxlOjpob3N0KEluamVjdGVkU2NyaXB0TWFuYWdlciogaW5qZWN0
ZWRTY3JpcHRNYW5hZ2VyLCBKU0M6OkV4ZWNTdGF0ZSogZXhlYykgY29uc3QKK3sKKyAgICBBU1NF
UlQoaW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLT5jb21tYW5kTGluZUFQSUhvc3QoKSk7CisgICAgSlNE
T01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+
KGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSk7CisgICAgcmV0dXJuIHRvSlMoZXhlYywgZ2xv
YmFsT2JqZWN0LCBpbmplY3RlZFNjcmlwdE1hbmFnZXItPmNvbW1hbmRMaW5lQVBJSG9zdCgpKTsK
K30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKElOU1BFQ1RP
UikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Db21tYW5kTGluZUFQSU1v
ZHVsZS5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0NvbW1hbmRMaW5lQVBJTW9kdWxlLmgK
aW5kZXggNzVlMzE2My4uYjRhNWFmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0NvbW1hbmRMaW5lQVBJTW9kdWxlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0NvbW1hbmRMaW5lQVBJTW9kdWxlLmgKQEAgLTM3LDYgKzM3LDcgQEAgcHVibGljOgogICAgIENv
bW1hbmRMaW5lQVBJTW9kdWxlKCk7CiAKICAgICB2aXJ0dWFsIFN0cmluZyBzb3VyY2UoKSBjb25z
dCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIEpTQzo6SlNWYWx1ZSBob3N0KEluamVjdGVkU2NyaXB0
TWFuYWdlciosIEpTQzo6RXhlY1N0YXRlKikgY29uc3QgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBi
b29sIHJldHVybnNPYmplY3QoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiBmYWxzZTsgfQogCiAg
ICAgc3RhdGljIHZvaWQgaW5qZWN0SWZOZWVkZWQoSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKiwgSW5q
ZWN0ZWRTY3JpcHQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0NvbW1h
bmRMaW5lQVBJTW9kdWxlU291cmNlLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0NvbW1h
bmRMaW5lQVBJTW9kdWxlU291cmNlLmpzCmluZGV4IDdhMmM1YWUuLjBlOGJhY2MgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Db21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZS5q
cworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvQ29tbWFuZExpbmVBUElNb2R1bGVTb3Vy
Y2UuanMKQEAgLTMwLDggKzMwLDEwIEBACiAgKiBAcGFyYW0ge0luamVjdGVkU2NyaXB0SG9zdH0g
SW5qZWN0ZWRTY3JpcHRIb3N0CiAgKiBAcGFyYW0ge1dpbmRvd30gaW5zcGVjdGVkV2luZG93CiAg
KiBAcGFyYW0ge251bWJlcn0gaW5qZWN0ZWRTY3JpcHRJZAorICogQHBhcmFtIHtJbmplY3RlZFNj
cmlwdH0gaW5qZWN0ZWRTY3JpcHQKKyAqIEBwYXJhbSB7Q29tbWFuZExpbmVBUElIb3N0fSBDb21t
YW5kTGluZUFQSUhvc3QKICAqLwotKGZ1bmN0aW9uIChJbmplY3RlZFNjcmlwdEhvc3QsIGluc3Bl
Y3RlZFdpbmRvdywgaW5qZWN0ZWRTY3JpcHRJZCwgaW5qZWN0ZWRTY3JpcHQpIHsKKyhmdW5jdGlv
biAoSW5qZWN0ZWRTY3JpcHRIb3N0LCBpbnNwZWN0ZWRXaW5kb3csIGluamVjdGVkU2NyaXB0SWQs
IGluamVjdGVkU2NyaXB0LCBDb21tYW5kTGluZUFQSUhvc3QpIHsKIAogLyoqCiAgKiBAcGFyYW0g
e0FyZ3VtZW50c30gYXJyYXkKQEAgLTI3MiwxOSArMjc0LDE5IEBAIENvbW1hbmRMaW5lQVBJSW1w
bC5wcm90b3R5cGUgPSB7CiAgICAgICovCiAgICAgaW5zcGVjdDogZnVuY3Rpb24ob2JqZWN0KQog
ICAgIHsKLSAgICAgICAgcmV0dXJuIGluamVjdGVkU2NyaXB0Ll9pbnNwZWN0KG9iamVjdCk7Cisg
ICAgICAgIHJldHVybiB0aGlzLl9pbnNwZWN0KG9iamVjdCk7CiAgICAgfSwKIAogICAgIGNvcHk6
IGZ1bmN0aW9uKG9iamVjdCkKICAgICB7CiAgICAgICAgIGlmIChpbmplY3RlZFNjcmlwdC5fc3Vi
dHlwZShvYmplY3QpID09PSAibm9kZSIpCiAgICAgICAgICAgICBvYmplY3QgPSBvYmplY3Qub3V0
ZXJIVE1MOwotICAgICAgICBJbmplY3RlZFNjcmlwdEhvc3QuY29weVRleHQob2JqZWN0KTsKKyAg
ICAgICAgQ29tbWFuZExpbmVBUElIb3N0LmNvcHlUZXh0KG9iamVjdCk7CiAgICAgfSwKIAogICAg
IGNsZWFyOiBmdW5jdGlvbigpCiAgICAgewotICAgICAgICBJbmplY3RlZFNjcmlwdEhvc3QuY2xl
YXJDb25zb2xlTWVzc2FnZXMoKTsKKyAgICAgICAgQ29tbWFuZExpbmVBUElIb3N0LmNsZWFyQ29u
c29sZU1lc3NhZ2VzKCk7CiAgICAgfSwKIAogICAgIC8qKgpAQCAtMjkyLDcgKzI5NCw3IEBAIENv
bW1hbmRMaW5lQVBJSW1wbC5wcm90b3R5cGUgPSB7CiAgICAgICovCiAgICAgZ2V0RXZlbnRMaXN0
ZW5lcnM6IGZ1bmN0aW9uKG5vZGUpCiAgICAgewotICAgICAgICByZXR1cm4gSW5qZWN0ZWRTY3Jp
cHRIb3N0LmdldEV2ZW50TGlzdGVuZXJzKG5vZGUpOworICAgICAgICByZXR1cm4gQ29tbWFuZExp
bmVBUElIb3N0LmdldEV2ZW50TGlzdGVuZXJzKG5vZGUpOwogICAgIH0sCiAKICAgICAvKioKQEAg
LTMwMCw3ICszMDIsNyBAQCBDb21tYW5kTGluZUFQSUltcGwucHJvdG90eXBlID0gewogICAgICAq
LwogICAgIF9pbnNwZWN0ZWRPYmplY3Q6IGZ1bmN0aW9uKG51bSkKICAgICB7Ci0gICAgICAgIHJl
dHVybiBJbmplY3RlZFNjcmlwdEhvc3QuaW5zcGVjdGVkT2JqZWN0KG51bSk7CisgICAgICAgIHJl
dHVybiBDb21tYW5kTGluZUFQSUhvc3QuaW5zcGVjdGVkT2JqZWN0KG51bSk7CiAgICAgfSwKIAog
ICAgIC8qKgpAQCAtMzM2LDYgKzMzOCwzNSBAQCBDb21tYW5kTGluZUFQSUltcGwucHJvdG90eXBl
ID0gewogICAgIF9sb2dFdmVudDogZnVuY3Rpb24oZXZlbnQpCiAgICAgewogICAgICAgICBpbnNw
ZWN0ZWRXaW5kb3cuY29uc29sZS5sb2coZXZlbnQudHlwZSwgZXZlbnQpOworICAgIH0sCisKKyAg
ICAvKioKKyAgICAgKiBAcGFyYW0geyp9IG9iamVjdAorICAgICAqIEByZXR1cm4geyp9CisgICAg
ICovCisgICAgX2luc3BlY3Q6IGZ1bmN0aW9uKG9iamVjdCkKKyAgICB7CisgICAgICAgIGlmIChh
cmd1bWVudHMubGVuZ3RoID09PSAwKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIHZh
ciBvYmplY3RJZCA9IGluamVjdGVkU2NyaXB0Ll93cmFwT2JqZWN0KG9iamVjdCwgIiIpOworICAg
ICAgICB2YXIgaGludHMgPSB7fTsKKworICAgICAgICBzd2l0Y2ggKGluamVjdGVkU2NyaXB0Ll9k
ZXNjcmliZShvYmplY3QpKSB7CisgICAgICAgIGNhc2UgIkRhdGFiYXNlIjoKKyAgICAgICAgICAg
IHZhciBkYXRhYmFzZUlkID0gQ29tbWFuZExpbmVBUElIb3N0LmRhdGFiYXNlSWQob2JqZWN0KQor
ICAgICAgICAgICAgaWYgKGRhdGFiYXNlSWQpCisgICAgICAgICAgICAgICAgaGludHMuZGF0YWJh
c2VJZCA9IGRhdGFiYXNlSWQ7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSAiU3Rv
cmFnZSI6CisgICAgICAgICAgICB2YXIgc3RvcmFnZUlkID0gQ29tbWFuZExpbmVBUElIb3N0LnN0
b3JhZ2VJZChvYmplY3QpCisgICAgICAgICAgICBpZiAoc3RvcmFnZUlkKQorICAgICAgICAgICAg
ICAgIGhpbnRzLmRvbVN0b3JhZ2VJZCA9IEluamVjdGVkU2NyaXB0SG9zdC5ldmFsdWF0ZSgiKCIg
KyBzdG9yYWdlSWQgKyAiKSIpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKworICAg
ICAgICBDb21tYW5kTGluZUFQSUhvc3QuaW5zcGVjdChvYmplY3RJZCwgaGludHMpOworICAgICAg
ICByZXR1cm4gb2JqZWN0OwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luamVjdGVkU2NyaXB0Q2FudmFzTW9kdWxlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdENhbnZhc01vZHVsZS5jcHAKaW5kZXggNThiZTczOS4u
ZjI1MDIxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2Ny
aXB0Q2FudmFzTW9kdWxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0
ZWRTY3JpcHRDYW52YXNNb2R1bGUuY3BwCkBAIC00OSw2ICs0OSw3IEBAIHVzaW5nIEluc3BlY3Rv
cjo6VHlwZUJ1aWxkZXI6OkNhbnZhczo6UmVzb3VyY2VTdGF0ZTsKIHVzaW5nIEluc3BlY3Rvcjo6
VHlwZUJ1aWxkZXI6OkNhbnZhczo6VHJhY2VMb2c7CiB1c2luZyBJbnNwZWN0b3I6OlR5cGVCdWls
ZGVyOjpDYW52YXM6OlRyYWNlTG9nSWQ7CiAKK3VzaW5nIG5hbWVzcGFjZSBKU0M7CiB1c2luZyBu
YW1lc3BhY2UgSW5zcGVjdG9yOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC03MCw2ICs3MSwx
MSBAQCBTdHJpbmcgSW5qZWN0ZWRTY3JpcHRDYW52YXNNb2R1bGU6OnNvdXJjZSgpIGNvbnN0CiAg
ICAgcmV0dXJuIFN0cmluZyhyZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihJbmplY3RlZFNj
cmlwdENhbnZhc01vZHVsZVNvdXJjZV9qcyksIHNpemVvZihJbmplY3RlZFNjcmlwdENhbnZhc01v
ZHVsZVNvdXJjZV9qcykpOwogfQogCitKU0M6OkpTVmFsdWUgSW5qZWN0ZWRTY3JpcHRDYW52YXNN
b2R1bGU6Omhvc3QoSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKiwgSlNDOjpFeGVjU3RhdGUqKSBjb25z
dAoreworICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOworfQorCiBEZXByZWNhdGVkOjpTY3JpcHRP
YmplY3QgSW5qZWN0ZWRTY3JpcHRDYW52YXNNb2R1bGU6OndyYXBDYW52YXMyRENvbnRleHQoY29u
c3QgRGVwcmVjYXRlZDo6U2NyaXB0T2JqZWN0JiBjb250ZXh0KQogewogICAgIHJldHVybiBjYWxs
V3JhcENvbnRleHRGdW5jdGlvbigid3JhcENhbnZhczJEQ29udGV4dCIsIGNvbnRleHQpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0Q2FudmFzTW9k
dWxlLmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRDYW52YXNNb2R1
bGUuaAppbmRleCA1MDFkMmU2Li4yYzQ0MzY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRDYW52YXNNb2R1bGUuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRDYW52YXNNb2R1bGUuaApAQCAtNDUsMTIgKzQ1LDEz
IEBAIGNsYXNzIEluamVjdGVkU2NyaXB0TWFuYWdlcjsKIAogI2lmIEVOQUJMRShJTlNQRUNUT1Ip
CiAKLWNsYXNzIEluamVjdGVkU2NyaXB0Q2FudmFzTW9kdWxlIDogcHVibGljIEluamVjdGVkU2Ny
aXB0TW9kdWxlIHsKK2NsYXNzIEluamVjdGVkU2NyaXB0Q2FudmFzTW9kdWxlIEZJTkFMIDogcHVi
bGljIEluamVjdGVkU2NyaXB0TW9kdWxlIHsKIHB1YmxpYzoKICAgICBJbmplY3RlZFNjcmlwdENh
bnZhc01vZHVsZSgpOwogICAgIAotICAgIHZpcnR1YWwgU3RyaW5nIHNvdXJjZSgpIGNvbnN0Owot
ICAgIHZpcnR1YWwgYm9vbCByZXR1cm5zT2JqZWN0KCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQor
ICAgIHZpcnR1YWwgU3RyaW5nIHNvdXJjZSgpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwg
SlNDOjpKU1ZhbHVlIGhvc3QoSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKiwgSlNDOjpFeGVjU3RhdGUq
KSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIGJvb2wgcmV0dXJuc09iamVjdCgpIGNvbnN0
IE9WRVJSSURFIHsgcmV0dXJuIHRydWU7IH0KIAogICAgIHN0YXRpYyBJbmplY3RlZFNjcmlwdENh
bnZhc01vZHVsZSBtb2R1bGVGb3JTdGF0ZShJbmplY3RlZFNjcmlwdE1hbmFnZXIqLCBKU0M6OkV4
ZWNTdGF0ZSopOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0
ZWRTY3JpcHRIb3N0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlw
dEhvc3QuY3BwCmluZGV4IDA3Yzc2ZTQuLmMyMzk5ZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdEhvc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdEhvc3QuY3BwCkBAIC0yOSwxMzYgKzI5LDE1IEBACiAg
Ki8KIAogI2luY2x1ZGUgImNvbmZpZy5oIgotCi0jaWYgRU5BQkxFKElOU1BFQ1RPUikKLQogI2lu
Y2x1ZGUgIkluamVjdGVkU2NyaXB0SG9zdC5oIgogCi0jaW5jbHVkZSAiRWxlbWVudC5oIgotI2lu
Y2x1ZGUgIkZyYW1lLmgiCi0jaW5jbHVkZSAiRnJhbWVMb2FkZXIuaCIKLSNpbmNsdWRlICJIVE1M
RnJhbWVPd25lckVsZW1lbnQuaCIKLSNpbmNsdWRlICJJbmplY3RlZFNjcmlwdC5oIgotI2luY2x1
ZGUgIkluc3BlY3RvckFnZW50LmgiCi0jaW5jbHVkZSAiSW5zcGVjdG9yQ2xpZW50LmgiCi0jaW5j
bHVkZSAiSW5zcGVjdG9yQ29uc29sZUFnZW50LmgiCi0jaW5jbHVkZSAiSW5zcGVjdG9yRE9NQWdl
bnQuaCIKLSNpbmNsdWRlICJJbnNwZWN0b3JET01TdG9yYWdlQWdlbnQuaCIKLSNpbmNsdWRlICJJ
bnNwZWN0b3JEYXRhYmFzZUFnZW50LmgiCi0jaW5jbHVkZSAiSW5zcGVjdG9yV2ViRnJvbnRlbmRE
aXNwYXRjaGVycy5oIgotI2luY2x1ZGUgIlBhc3RlYm9hcmQuaCIKLSNpbmNsdWRlICJTdG9yYWdl
LmgiCi0jaW5jbHVkZSAibWFya3VwLmgiCi0jaW5jbHVkZSA8YmluZGluZ3MvU2NyaXB0VmFsdWUu
aD4KLSNpbmNsdWRlIDxpbnNwZWN0b3IvSW5zcGVjdG9yVmFsdWVzLmg+Ci0jaW5jbHVkZSA8d3Rm
L1JlZlB0ci5oPgotI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KLQotI2lmIEVOQUJMRShT
UUxfREFUQUJBU0UpCi0jaW5jbHVkZSAiRGF0YWJhc2UuaCIKLSNlbmRpZgotCi11c2luZyBuYW1l
c3BhY2UgSW5zcGVjdG9yOworI2lmIEVOQUJMRShJTlNQRUNUT1IpCiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogUGFzc1JlZlB0cjxJbmplY3RlZFNjcmlwdEhvc3Q+IEluamVjdGVkU2NyaXB0SG9z
dDo6Y3JlYXRlKCkKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IEluamVjdGVkU2NyaXB0SG9z
dCgpKTsKLX0KLQotSW5qZWN0ZWRTY3JpcHRIb3N0OjpJbmplY3RlZFNjcmlwdEhvc3QoKQotICAg
IDogbV9pbnNwZWN0b3JBZ2VudCgwKQotICAgICwgbV9jb25zb2xlQWdlbnQoMCkKLSNpZiBFTkFC
TEUoU1FMX0RBVEFCQVNFKQotICAgICwgbV9kYXRhYmFzZUFnZW50KDApCi0jZW5kaWYKLSAgICAs
IG1fZG9tU3RvcmFnZUFnZW50KDApCi0gICAgLCBtX2RvbUFnZW50KDApCi17Ci0gICAgbV9kZWZh
dWx0SW5zcGVjdGFibGVPYmplY3QgPSBhZG9wdFB0cihuZXcgSW5zcGVjdGFibGVPYmplY3QoKSk7
Ci19Ci0KLUluamVjdGVkU2NyaXB0SG9zdDo6fkluamVjdGVkU2NyaXB0SG9zdCgpCi17Ci19Ci0K
LXZvaWQgSW5qZWN0ZWRTY3JpcHRIb3N0OjpkaXNjb25uZWN0KCkKLXsKLSAgICBtX2luc3BlY3Rv
ckFnZW50ID0gMDsKLSAgICBtX2NvbnNvbGVBZ2VudCA9IDA7Ci0jaWYgRU5BQkxFKFNRTF9EQVRB
QkFTRSkKLSAgICBtX2RhdGFiYXNlQWdlbnQgPSAwOwotI2VuZGlmCi0gICAgbV9kb21TdG9yYWdl
QWdlbnQgPSAwOwotICAgIG1fZG9tQWdlbnQgPSAwOwotfQotCi12b2lkIEluamVjdGVkU2NyaXB0
SG9zdDo6aW5zcGVjdEltcGwoUGFzc1JlZlB0cjxJbnNwZWN0b3JWYWx1ZT4gb2JqZWN0LCBQYXNz
UmVmUHRyPEluc3BlY3RvclZhbHVlPiBoaW50cykKLXsKLSAgICBpZiAobV9pbnNwZWN0b3JBZ2Vu
dCkgewotICAgICAgICBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6UnVudGltZTo6UmVt
b3RlT2JqZWN0PiByZW1vdGVPYmplY3QgPSBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpSdW50aW1l
OjpSZW1vdGVPYmplY3Q6OnJ1bnRpbWVDYXN0KG9iamVjdCk7Ci0gICAgICAgIG1faW5zcGVjdG9y
QWdlbnQtPmluc3BlY3QocmVtb3RlT2JqZWN0LCBoaW50cy0+YXNPYmplY3QoKSk7Ci0gICAgfQot
fQotCi12b2lkIEluamVjdGVkU2NyaXB0SG9zdDo6Z2V0RXZlbnRMaXN0ZW5lcnNJbXBsKE5vZGUq
IG5vZGUsIFZlY3RvcjxFdmVudExpc3RlbmVySW5mbz4mIGxpc3RlbmVyc0FycmF5KQotewotICAg
IGlmIChtX2RvbUFnZW50KQotICAgICAgICBtX2RvbUFnZW50LT5nZXRFdmVudExpc3RlbmVycyhu
b2RlLCBsaXN0ZW5lcnNBcnJheSwgZmFsc2UpOwotfQotCi12b2lkIEluamVjdGVkU2NyaXB0SG9z
dDo6Y2xlYXJDb25zb2xlTWVzc2FnZXMoKQotewotICAgIGlmIChtX2NvbnNvbGVBZ2VudCkgewot
ICAgICAgICBFcnJvclN0cmluZyBlcnJvcjsKLSAgICAgICAgbV9jb25zb2xlQWdlbnQtPmNsZWFy
TWVzc2FnZXMoJmVycm9yKTsKLSAgICB9Ci19Ci0KLXZvaWQgSW5qZWN0ZWRTY3JpcHRIb3N0Ojpj
b3B5VGV4dChjb25zdCBTdHJpbmcmIHRleHQpCi17Ci0gICAgUGFzdGVib2FyZDo6Y3JlYXRlRm9y
Q29weUFuZFBhc3RlKCktPndyaXRlUGxhaW5UZXh0KHRleHQsIFBhc3RlYm9hcmQ6OkNhbm5vdFNt
YXJ0UmVwbGFjZSk7Ci19Ci0KLURlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlIEluamVjdGVkU2NyaXB0
SG9zdDo6SW5zcGVjdGFibGVPYmplY3Q6OmdldChKU0M6OkV4ZWNTdGF0ZSopCi17Ci0gICAgcmV0
dXJuIERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlKCk7Ci19OwotCi12b2lkIEluamVjdGVkU2NyaXB0
SG9zdDo6YWRkSW5zcGVjdGVkT2JqZWN0KFBhc3NPd25QdHI8SW5qZWN0ZWRTY3JpcHRIb3N0OjpJ
bnNwZWN0YWJsZU9iamVjdD4gb2JqZWN0KQotewotICAgIG1faW5zcGVjdGVkT2JqZWN0cy5pbnNl
cnQoMCwgb2JqZWN0KTsKLSAgICB3aGlsZSAobV9pbnNwZWN0ZWRPYmplY3RzLnNpemUoKSA+IDUp
Ci0gICAgICAgIG1faW5zcGVjdGVkT2JqZWN0cy5yZW1vdmVMYXN0KCk7Ci19Ci0KLXZvaWQgSW5q
ZWN0ZWRTY3JpcHRIb3N0OjpjbGVhckluc3BlY3RlZE9iamVjdHMoKQotewotICAgIG1faW5zcGVj
dGVkT2JqZWN0cy5jbGVhcigpOwotfQotCi1JbmplY3RlZFNjcmlwdEhvc3Q6Okluc3BlY3RhYmxl
T2JqZWN0KiBJbmplY3RlZFNjcmlwdEhvc3Q6Omluc3BlY3RlZE9iamVjdCh1bnNpZ25lZCBpbnQg
bnVtKQotewotICAgIGlmIChudW0gPj0gbV9pbnNwZWN0ZWRPYmplY3RzLnNpemUoKSkKLSAgICAg
ICAgcmV0dXJuIG1fZGVmYXVsdEluc3BlY3RhYmxlT2JqZWN0LmdldCgpOwotICAgIHJldHVybiBt
X2luc3BlY3RlZE9iamVjdHNbbnVtXS5nZXQoKTsKLX0KLQotI2lmIEVOQUJMRShTUUxfREFUQUJB
U0UpCi1TdHJpbmcgSW5qZWN0ZWRTY3JpcHRIb3N0OjpkYXRhYmFzZUlkSW1wbChEYXRhYmFzZSog
ZGF0YWJhc2UpCi17Ci0gICAgaWYgKG1fZGF0YWJhc2VBZ2VudCkKLSAgICAgICAgcmV0dXJuIG1f
ZGF0YWJhc2VBZ2VudC0+ZGF0YWJhc2VJZChkYXRhYmFzZSk7Ci0gICAgcmV0dXJuIFN0cmluZygp
OwotfQotI2VuZGlmCi0KLVN0cmluZyBJbmplY3RlZFNjcmlwdEhvc3Q6OnN0b3JhZ2VJZEltcGwo
U3RvcmFnZSogc3RvcmFnZSkKLXsKLSAgICBpZiAobV9kb21TdG9yYWdlQWdlbnQpCi0gICAgICAg
IHJldHVybiBtX2RvbVN0b3JhZ2VBZ2VudC0+c3RvcmFnZUlkKHN0b3JhZ2UpOwotICAgIHJldHVy
biBTdHJpbmcoKTsKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IEluamVjdGVkU2NyaXB0SG9zdCk7
CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdEhvc3QuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbmplY3RlZFNjcmlwdEhvc3QuaAppbmRleCAxMTlhNDUwLi5hNTA5N2M2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRIb3N0LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0SG9zdC5oCkBAIC0xLDUgKzEsNSBA
QAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDcsIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CkBAIC03LDEzICs3LDEzIEBACiAgKiBhcmUgbWV0Ogog
ICoKICAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4gCisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgogICogMi4gIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CiAgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uIAorICogICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCiAgKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBDb21wdXRlciwgSW5jLiAo
IkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgogICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJl
IHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKLSAqICAgICBmcm9t
IHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24u
IAorICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0
ZW4gcGVybWlzc2lvbi4KICAqCiAgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQogICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElF
RApAQCAtMzAsOTUgKzMwLDI4IEBACiAjaWZuZGVmIEluamVjdGVkU2NyaXB0SG9zdF9oCiAjZGVm
aW5lIEluamVjdGVkU2NyaXB0SG9zdF9oCiAKLSNpbmNsdWRlICJDb25zb2xlVHlwZXMuaCIKLSNp
bmNsdWRlICJJbnNwZWN0b3JBZ2VudC5oIgogI2luY2x1ZGUgIlNjcmlwdFN0YXRlLmgiCisjaW5j
bHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgotI2lu
Y2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAogbmFtZXNwYWNlIERlcHJlY2F0ZWQgewogY2xhc3MgU2Ny
aXB0VmFsdWU7CiB9CiAKLW5hbWVzcGFjZSBJbnNwZWN0b3IgewotY2xhc3MgSW5zcGVjdG9yT2Jq
ZWN0OwotY2xhc3MgSW5zcGVjdG9yVmFsdWU7Ci19Ci0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAot
Y2xhc3MgRGF0YWJhc2U7Ci1jbGFzcyBJbmplY3RlZFNjcmlwdDsKLWNsYXNzIEluc3BlY3RvckFn
ZW50OwotY2xhc3MgSW5zcGVjdG9yQ29uc29sZUFnZW50OwotY2xhc3MgSW5zcGVjdG9yRE9NQWdl
bnQ7Ci1jbGFzcyBJbnNwZWN0b3JET01TdG9yYWdlQWdlbnQ7Ci1jbGFzcyBJbnNwZWN0b3JEYXRh
YmFzZUFnZW50OwogY2xhc3MgTm9kZTsKLWNsYXNzIFN0b3JhZ2U7Ci0KLXN0cnVjdCBFdmVudExp
c3RlbmVySW5mbzsKIAogY2xhc3MgSW5qZWN0ZWRTY3JpcHRIb3N0IDogcHVibGljIFJlZkNvdW50
ZWQ8SW5qZWN0ZWRTY3JpcHRIb3N0PiB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8
SW5qZWN0ZWRTY3JpcHRIb3N0PiBjcmVhdGUoKTsKLSAgICB+SW5qZWN0ZWRTY3JpcHRIb3N0KCk7
Ci0KLSAgICB2b2lkIGluaXQoSW5zcGVjdG9yQWdlbnQqIGluc3BlY3RvckFnZW50Ci0gICAgICAg
ICAgICAsIEluc3BlY3RvckNvbnNvbGVBZ2VudCogY29uc29sZUFnZW50Ci0jaWYgRU5BQkxFKFNR
TF9EQVRBQkFTRSkKLSAgICAgICAgICAgICwgSW5zcGVjdG9yRGF0YWJhc2VBZ2VudCogZGF0YWJh
c2VBZ2VudAotI2VuZGlmCi0gICAgICAgICAgICAsIEluc3BlY3RvckRPTVN0b3JhZ2VBZ2VudCog
ZG9tU3RvcmFnZUFnZW50Ci0gICAgICAgICAgICAsIEluc3BlY3RvckRPTUFnZW50KiBkb21BZ2Vu
dAotICAgICAgICApCi0gICAgewotICAgICAgICBtX2luc3BlY3RvckFnZW50ID0gaW5zcGVjdG9y
QWdlbnQ7Ci0gICAgICAgIG1fY29uc29sZUFnZW50ID0gY29uc29sZUFnZW50OwotI2lmIEVOQUJM
RShTUUxfREFUQUJBU0UpCi0gICAgICAgIG1fZGF0YWJhc2VBZ2VudCA9IGRhdGFiYXNlQWdlbnQ7
Ci0jZW5kaWYKLSAgICAgICAgbV9kb21TdG9yYWdlQWdlbnQgPSBkb21TdG9yYWdlQWdlbnQ7Ci0g
ICAgICAgIG1fZG9tQWdlbnQgPSBkb21BZ2VudDsKLSAgICB9CisgICAgfkluamVjdGVkU2NyaXB0
SG9zdCgpIHsgfQogCiAgICAgc3RhdGljIE5vZGUqIHNjcmlwdFZhbHVlQXNOb2RlKERlcHJlY2F0
ZWQ6OlNjcmlwdFZhbHVlKTsKICAgICBzdGF0aWMgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUgbm9k
ZUFzU2NyaXB0VmFsdWUoSlNDOjpFeGVjU3RhdGUqLCBOb2RlKik7CiAKLSAgICB2b2lkIGRpc2Nv
bm5lY3QoKTsKLQotICAgIGNsYXNzIEluc3BlY3RhYmxlT2JqZWN0IHsKLSAgICAgICAgV1RGX01B
S0VfRkFTVF9BTExPQ0FURUQ7Ci0gICAgcHVibGljOgotICAgICAgICB2aXJ0dWFsIERlcHJlY2F0
ZWQ6OlNjcmlwdFZhbHVlIGdldChKU0M6OkV4ZWNTdGF0ZSopOwotICAgICAgICB2aXJ0dWFsIH5J
bnNwZWN0YWJsZU9iamVjdCgpIHsgfQotICAgIH07Ci0gICAgdm9pZCBhZGRJbnNwZWN0ZWRPYmpl
Y3QoUGFzc093blB0cjxJbnNwZWN0YWJsZU9iamVjdD4pOwotICAgIHZvaWQgY2xlYXJJbnNwZWN0
ZWRPYmplY3RzKCk7Ci0gICAgSW5zcGVjdGFibGVPYmplY3QqIGluc3BlY3RlZE9iamVjdCh1bnNp
Z25lZCBpbnQgbnVtKTsKLQotICAgIHZvaWQgaW5zcGVjdEltcGwoUGFzc1JlZlB0cjxJbnNwZWN0
b3I6Okluc3BlY3RvclZhbHVlPiBvYmplY3RUb0luc3BlY3QsIFBhc3NSZWZQdHI8SW5zcGVjdG9y
OjpJbnNwZWN0b3JWYWx1ZT4gaGludHMpOwotICAgIHZvaWQgZ2V0RXZlbnRMaXN0ZW5lcnNJbXBs
KE5vZGUqLCBWZWN0b3I8RXZlbnRMaXN0ZW5lckluZm8+JiBsaXN0ZW5lcnNBcnJheSk7Ci0KLSAg
ICB2b2lkIGNsZWFyQ29uc29sZU1lc3NhZ2VzKCk7Ci0gICAgdm9pZCBjb3B5VGV4dChjb25zdCBT
dHJpbmcmIHRleHQpOwotI2lmIEVOQUJMRShTUUxfREFUQUJBU0UpCi0gICAgU3RyaW5nIGRhdGFi
YXNlSWRJbXBsKERhdGFiYXNlKik7Ci0jZW5kaWYKLSAgICBTdHJpbmcgc3RvcmFnZUlkSW1wbChT
dG9yYWdlKik7Ci0KIHByaXZhdGU6Ci0gICAgSW5qZWN0ZWRTY3JpcHRIb3N0KCk7Ci0KLSAgICBJ
bnNwZWN0b3JBZ2VudCogbV9pbnNwZWN0b3JBZ2VudDsKLSAgICBJbnNwZWN0b3JDb25zb2xlQWdl
bnQqIG1fY29uc29sZUFnZW50OwotI2lmIEVOQUJMRShTUUxfREFUQUJBU0UpCi0gICAgSW5zcGVj
dG9yRGF0YWJhc2VBZ2VudCogbV9kYXRhYmFzZUFnZW50OwotI2VuZGlmCi0gICAgSW5zcGVjdG9y
RE9NU3RvcmFnZUFnZW50KiBtX2RvbVN0b3JhZ2VBZ2VudDsKLSAgICBJbnNwZWN0b3JET01BZ2Vu
dCogbV9kb21BZ2VudDsKLSAgICBWZWN0b3I8T3duUHRyPEluc3BlY3RhYmxlT2JqZWN0Pj4gbV9p
bnNwZWN0ZWRPYmplY3RzOwotICAgIE93blB0cjxJbnNwZWN0YWJsZU9iamVjdD4gbV9kZWZhdWx0
SW5zcGVjdGFibGVPYmplY3Q7CisgICAgSW5qZWN0ZWRTY3JpcHRIb3N0KCkgeyB9CiB9OwogCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5qZWN0ZWRTY3JpcHRIb3N0LmlkbCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Jbmpl
Y3RlZFNjcmlwdEhvc3QuaWRsCmluZGV4IGQ4NjYzZWQuLjZhODhhNmIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdEhvc3QuaWRsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdEhvc3QuaWRsCkBAIC0zNSwyMCArMzUs
MTEgQEAKICAgICBDb25kaXRpb25hbD1JTlNQRUNUT1IsCiAgICAgSW1wbGVtZW50YXRpb25MYWNr
c1ZUYWJsZQogXSBpbnRlcmZhY2UgSW5qZWN0ZWRTY3JpcHRIb3N0IHsKLSAgICB2b2lkIGNsZWFy
Q29uc29sZU1lc3NhZ2VzKCk7Ci0KLSAgICB2b2lkIGNvcHlUZXh0KERPTVN0cmluZyB0ZXh0KTsK
LSAgICBbQ3VzdG9tXSB2b2lkIGluc3BlY3QoYW55IG9iamVjdElkLCBhbnkgaGludHMpOwotICAg
IFtDdXN0b21dIGFueSBpbnNwZWN0ZWRPYmplY3QoaW50IG51bSk7CiAgICAgW0N1c3RvbV0gYW55
IGludGVybmFsQ29uc3RydWN0b3JOYW1lKGFueSBvYmplY3QpOwogICAgIFtDdXN0b21dIGJvb2xl
YW4gaXNIVE1MQWxsQ29sbGVjdGlvbihhbnkgb2JqZWN0KTsKICAgICBbQ3VzdG9tXSBET01TdHJp
bmcgdHlwZShhbnkgb2JqZWN0KTsKICAgICBbQ3VzdG9tXSBhbnkgZnVuY3Rpb25EZXRhaWxzKGFu
eSBvYmplY3QpOwogICAgIFtDdXN0b21dIEFycmF5IGdldEludGVybmFsUHJvcGVydGllcyhhbnkg
b2JqZWN0KTsKLSAgICBbQ3VzdG9tXSBBcnJheSBnZXRFdmVudExpc3RlbmVycyhOb2RlIG5vZGUp
OwogCiAgICAgW0N1c3RvbV0gcmVhZG9ubHkgYXR0cmlidXRlIGFueSBldmFsdWF0ZTsKLQotICAg
IFtDdXN0b21dIERPTVN0cmluZyBkYXRhYmFzZUlkKGFueSBkYXRhYmFzZSk7Ci0gICAgW0N1c3Rv
bV0gRE9NU3RyaW5nIHN0b3JhZ2VJZChhbnkgc3RvcmFnZSk7CiB9OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0TWFuYWdlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmNwcAppbmRleCBjYjg2NDgz
Li5kOWU5OTlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRT
Y3JpcHRNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRT
Y3JpcHRNYW5hZ2VyLmNwcApAQCAtNjksNyArNjksNiBAQCBJbmplY3RlZFNjcmlwdE1hbmFnZXI6
On5JbmplY3RlZFNjcmlwdE1hbmFnZXIoKQogCiB2b2lkIEluamVjdGVkU2NyaXB0TWFuYWdlcjo6
ZGlzY29ubmVjdCgpCiB7Ci0gICAgbV9pbmplY3RlZFNjcmlwdEhvc3QtPmRpc2Nvbm5lY3QoKTsK
ICAgICBtX2luamVjdGVkU2NyaXB0SG9zdC5jbGVhcigpOwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmgKaW5kZXggZDYxZmQyOC4uMTMz
YjFkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0
TWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdE1h
bmFnZXIuaApAQCAtNTEsNiArNTEsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBET01X
aW5kb3c7CiBjbGFzcyBJbmplY3RlZFNjcmlwdDsKIGNsYXNzIEluamVjdGVkU2NyaXB0SG9zdDsK
K2NsYXNzIENvbW1hbmRMaW5lQVBJSG9zdDsKIAogY2xhc3MgSW5qZWN0ZWRTY3JpcHRNYW5hZ2Vy
IHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShJbmplY3RlZFNjcmlwdE1hbmFnZXIpOyBXVEZf
TUFLRV9GQVNUX0FMTE9DQVRFRDsKQEAgLTU5LDkgKzYwLDEwIEBAIHB1YmxpYzoKICAgICBzdGF0
aWMgUGFzc093blB0cjxJbmplY3RlZFNjcmlwdE1hbmFnZXI+IGNyZWF0ZUZvcldvcmtlcigpOwog
ICAgIHZpcnR1YWwgfkluamVjdGVkU2NyaXB0TWFuYWdlcigpOwogCi0gICAgdm9pZCBkaXNjb25u
ZWN0KCk7CisgICAgdmlydHVhbCB2b2lkIGRpc2Nvbm5lY3QoKTsKIAogICAgIEluamVjdGVkU2Ny
aXB0SG9zdCogaW5qZWN0ZWRTY3JpcHRIb3N0KCk7CisgICAgdmlydHVhbCBDb21tYW5kTGluZUFQ
SUhvc3QqIGNvbW1hbmRMaW5lQVBJSG9zdCgpIGNvbnN0IHsgcmV0dXJuIG51bGxwdHI7IH0KIAog
ICAgIEluamVjdGVkU2NyaXB0IGluamVjdGVkU2NyaXB0Rm9yKEpTQzo6RXhlY1N0YXRlKik7CiAg
ICAgSW5qZWN0ZWRTY3JpcHQgaW5qZWN0ZWRTY3JpcHRGb3JJZChpbnQpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0TW9kdWxlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdE1vZHVsZS5jcHAKaW5kZXggMDc5N2I3
OC4uZWNjOTc5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVk
U2NyaXB0TW9kdWxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRT
Y3JpcHRNb2R1bGUuY3BwCkBAIC03MSw2ICs3MSw3IEBAIHZvaWQgSW5qZWN0ZWRTY3JpcHRNb2R1
bGU6OmVuc3VyZUluamVjdGVkKEluamVjdGVkU2NyaXB0TWFuYWdlciogaW5qZWN0ZWRTY3JpcHRN
CiAgICAgICAgIERlcHJlY2F0ZWQ6OlNjcmlwdEZ1bmN0aW9uQ2FsbCBmdW5jdGlvbihpbmplY3Rl
ZFNjcmlwdC5pbmplY3RlZFNjcmlwdE9iamVjdCgpLCAiaW5qZWN0TW9kdWxlIiwgV2ViQ29yZTo6
ZnVuY3Rpb25DYWxsSGFuZGxlckZyb21BbnlUaHJlYWQpOwogICAgICAgICBmdW5jdGlvbi5hcHBl
bmRBcmd1bWVudChuYW1lKCkpOwogICAgICAgICBmdW5jdGlvbi5hcHBlbmRBcmd1bWVudChzb3Vy
Y2UoKSk7CisgICAgICAgIGZ1bmN0aW9uLmFwcGVuZEFyZ3VtZW50KGhvc3QoaW5qZWN0ZWRTY3Jp
cHRNYW5hZ2VyLCBpbmplY3RlZFNjcmlwdC5zY3JpcHRTdGF0ZSgpKSk7CiAgICAgICAgIHJlc3Vs
dFZhbHVlID0gaW5qZWN0ZWRTY3JpcHQuY2FsbEZ1bmN0aW9uV2l0aEV2YWxFbmFibGVkKGZ1bmN0
aW9uLCBoYWRFeGNlcHRpb24pOwogICAgICAgICBpZiAoaGFkRXhjZXB0aW9uIHx8IChyZXR1cm5z
T2JqZWN0KCkgJiYgKHJlc3VsdFZhbHVlLmhhc05vVmFsdWUoKSB8fCAhcmVzdWx0VmFsdWUuaXNP
YmplY3QoKSkpKSB7CiAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdE1vZHVsZS5oIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0TW9kdWxlLmgKaW5kZXggZmViYTM0
Ni4uNzM1MTdkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVk
U2NyaXB0TW9kdWxlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2Ny
aXB0TW9kdWxlLmgKQEAgLTM4LDYgKzM4LDEwIEBACiAKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQog
CituYW1lc3BhY2UgSlNDIHsKK2NsYXNzIEpTVmFsdWU7Cit9CisKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogY2xhc3MgSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyOwpAQCAtNDUsNiArNDksNyBAQCBjbGFz
cyBJbmplY3RlZFNjcmlwdE1hbmFnZXI7CiBjbGFzcyBJbmplY3RlZFNjcmlwdE1vZHVsZSA6IHB1
YmxpYyBJbmplY3RlZFNjcmlwdEJhc2UgewogcHVibGljOgogICAgIHZpcnR1YWwgU3RyaW5nIHNv
dXJjZSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIEpTQzo6SlNWYWx1ZSBob3N0KEluamVjdGVk
U2NyaXB0TWFuYWdlciosIEpTQzo6RXhlY1N0YXRlKikgY29uc3QgPSAwOwogICAgIHZpcnR1YWwg
Ym9vbCByZXR1cm5zT2JqZWN0KCkgY29uc3QgPSAwOwogCiBwcm90ZWN0ZWQ6CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRTb3VyY2UuanMgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRTb3VyY2UuanMKaW5kZXggMjA2NDZj
My4uOWM4OGM3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVk
U2NyaXB0U291cmNlLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNj
cmlwdFNvdXJjZS5qcwpAQCAtMTI3LDM1ICsxMjcsOCBAQCBJbmplY3RlZFNjcmlwdC5wcm90b3R5
cGUgPSB7CiAgICAgICovCiAgICAgaW5zcGVjdE5vZGU6IGZ1bmN0aW9uKG9iamVjdCkKICAgICB7
Ci0gICAgICAgIHRoaXMuX2luc3BlY3Qob2JqZWN0KTsKLSAgICB9LAotCi0gICAgLyoqCi0gICAg
ICogQHBhcmFtIHsqfSBvYmplY3QKLSAgICAgKiBAcmV0dXJuIHsqfQotICAgICAqLwotICAgIF9p
bnNwZWN0OiBmdW5jdGlvbihvYmplY3QpCi0gICAgewotICAgICAgICBpZiAoYXJndW1lbnRzLmxl
bmd0aCA9PT0gMCkKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICB2YXIgb2JqZWN0SWQg
PSB0aGlzLl93cmFwT2JqZWN0KG9iamVjdCwgIiIpOwotICAgICAgICB2YXIgaGludHMgPSB7fTsK
LQotICAgICAgICBzd2l0Y2ggKGluamVjdGVkU2NyaXB0Ll9kZXNjcmliZShvYmplY3QpKSB7Ci0g
ICAgICAgICAgICBjYXNlICJEYXRhYmFzZSI6Ci0gICAgICAgICAgICAgICAgdmFyIGRhdGFiYXNl
SWQgPSBJbmplY3RlZFNjcmlwdEhvc3QuZGF0YWJhc2VJZChvYmplY3QpCi0gICAgICAgICAgICAg
ICAgaWYgKGRhdGFiYXNlSWQpCi0gICAgICAgICAgICAgICAgICAgIGhpbnRzLmRhdGFiYXNlSWQg
PSBkYXRhYmFzZUlkOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgY2FzZSAi
U3RvcmFnZSI6Ci0gICAgICAgICAgICAgICAgdmFyIHN0b3JhZ2VJZCA9IEluamVjdGVkU2NyaXB0
SG9zdC5zdG9yYWdlSWQob2JqZWN0KQotICAgICAgICAgICAgICAgIGlmIChzdG9yYWdlSWQpCi0g
ICAgICAgICAgICAgICAgICAgIGhpbnRzLmRvbVN0b3JhZ2VJZCA9IEluamVjdGVkU2NyaXB0SG9z
dC5ldmFsdWF0ZSgiKCIgKyBzdG9yYWdlSWQgKyAiKSIpOwotICAgICAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICB9Ci0gICAgICAgIEluamVjdGVkU2NyaXB0SG9zdC5pbnNwZWN0KG9iamVjdElk
LCBoaW50cyk7Ci0gICAgICAgIHJldHVybiBvYmplY3Q7CisgICAgICAgIGlmICh0aGlzLl9jb21t
YW5kTGluZUFQSUltcGwpCisgICAgICAgICAgICB0aGlzLl9jb21tYW5kTGluZUFQSUltcGwuaW5z
cGVjdChvYmplY3QpOwogICAgIH0sCiAKICAgICAvKioKQEAgLTY5NCw3ICs2NjcsNyBAQCBJbmpl
Y3RlZFNjcmlwdC5wcm90b3R5cGUgPSB7CiAgICAgICogQHBhcmFtIHtzdHJpbmd9IHNvdXJjZQog
ICAgICAqIEByZXR1cm4ge09iamVjdH0KICAgICAgKi8KLSAgICBpbmplY3RNb2R1bGU6IGZ1bmN0
aW9uKG5hbWUsIHNvdXJjZSkKKyAgICBpbmplY3RNb2R1bGU6IGZ1bmN0aW9uKG5hbWUsIHNvdXJj
ZSwgaG9zdCkKICAgICB7CiAgICAgICAgIGRlbGV0ZSB0aGlzLl9tb2R1bGVzW25hbWVdOwogICAg
ICAgICB2YXIgbW9kdWxlRnVuY3Rpb24gPSBJbmplY3RlZFNjcmlwdEhvc3QuZXZhbHVhdGUoIigi
ICsgc291cmNlICsgIikiKTsKQEAgLTcwNCw3ICs2NzcsNyBAQCBJbmplY3RlZFNjcmlwdC5wcm90
b3R5cGUgPSB7CiAgICAgICAgICAgICAgICAgaW5zcGVjdGVkR2xvYmFsT2JqZWN0LmNvbnNvbGUu
ZXJyb3IoIldlYiBJbnNwZWN0b3IgZXJyb3I6IEEgZnVuY3Rpb24gd2FzIGV4cGVjdGVkIGZvciBt
b2R1bGUgJXMgZXZhbHVhdGlvbiIsIG5hbWUpOwogICAgICAgICAgICAgcmV0dXJuIG51bGw7CiAg
ICAgICAgIH0KLSAgICAgICAgdmFyIG1vZHVsZSA9IG1vZHVsZUZ1bmN0aW9uLmNhbGwoaW5zcGVj
dGVkR2xvYmFsT2JqZWN0LCBJbmplY3RlZFNjcmlwdEhvc3QsIGluc3BlY3RlZEdsb2JhbE9iamVj
dCwgaW5qZWN0ZWRTY3JpcHRJZCwgdGhpcyk7CisgICAgICAgIHZhciBtb2R1bGUgPSBtb2R1bGVG
dW5jdGlvbi5jYWxsKGluc3BlY3RlZEdsb2JhbE9iamVjdCwgSW5qZWN0ZWRTY3JpcHRIb3N0LCBp
bnNwZWN0ZWRHbG9iYWxPYmplY3QsIGluamVjdGVkU2NyaXB0SWQsIHRoaXMsIGhvc3QpOwogICAg
ICAgICB0aGlzLl9tb2R1bGVzW25hbWVdID0gbW9kdWxlOwogICAgICAgICByZXR1cm4gbW9kdWxl
OwogICAgIH0sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
Q29uc29sZUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb25z
b2xlQWdlbnQuY3BwCmluZGV4IDAxOWMyOTUuLjI4YTQwOWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb25zb2xlQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb25zb2xlQWdlbnQuY3BwCkBAIC0yOSwxMCArMjks
MTAgQEAKIAogI2luY2x1ZGUgIkluc3BlY3RvckNvbnNvbGVBZ2VudC5oIgogCisjaW5jbHVkZSAi
Q29tbWFuZExpbmVBUElIb3N0LmgiCiAjaW5jbHVkZSAiQ29uc29sZS5oIgogI2luY2x1ZGUgIkNv
bnNvbGVNZXNzYWdlLmgiCiAjaW5jbHVkZSAiRE9NV2luZG93LmgiCi0jaW5jbHVkZSAiSW5qZWN0
ZWRTY3JpcHRIb3N0LmgiCiAjaW5jbHVkZSAiSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmgiCiAjaW5j
bHVkZSAiSW5zcGVjdG9yV2ViRnJvbnRlbmREaXNwYXRjaGVycy5oIgogI2luY2x1ZGUgIkluc3Ry
dW1lbnRpbmdBZ2VudHMuaCIKQEAgLTMxOSwxMCArMzE5LDEwIEBAIHZvaWQgSW5zcGVjdG9yQ29u
c29sZUFnZW50OjphZGRDb25zb2xlTWVzc2FnZShQYXNzT3duUHRyPENvbnNvbGVNZXNzYWdlPiBj
b25zb2xlCiAgICAgfQogfQogCi1jbGFzcyBJbnNwZWN0YWJsZUhlYXBPYmplY3QgOiBwdWJsaWMg
SW5qZWN0ZWRTY3JpcHRIb3N0OjpJbnNwZWN0YWJsZU9iamVjdCB7CitjbGFzcyBJbnNwZWN0YWJs
ZUhlYXBPYmplY3QgRklOQUwgOiBwdWJsaWMgQ29tbWFuZExpbmVBUElIb3N0OjpJbnNwZWN0YWJs
ZU9iamVjdCB7CiBwdWJsaWM6CiAgICAgZXhwbGljaXQgSW5zcGVjdGFibGVIZWFwT2JqZWN0KGlu
dCBoZWFwT2JqZWN0SWQpIDogbV9oZWFwT2JqZWN0SWQoaGVhcE9iamVjdElkKSB7IH0KLSAgICB2
aXJ0dWFsIERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlIGdldChKU0M6OkV4ZWNTdGF0ZSopCisgICAg
dmlydHVhbCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSBnZXQoSlNDOjpFeGVjU3RhdGUqKSBPVkVS
UklERQogICAgIHsKICAgICAgICAgcmV0dXJuIFNjcmlwdFByb2ZpbGVyOjpvYmplY3RCeUhlYXBP
YmplY3RJZChtX2hlYXBPYmplY3RJZCk7CiAgICAgfQpAQCAtMzMyLDcgKzMzMiw4IEBAIHByaXZh
dGU6CiAKIHZvaWQgSW5zcGVjdG9yQ29uc29sZUFnZW50OjphZGRJbnNwZWN0ZWRIZWFwT2JqZWN0
KEVycm9yU3RyaW5nKiwgaW50IGluc3BlY3RlZEhlYXBPYmplY3RJZCkKIHsKLSAgICBtX2luamVj
dGVkU2NyaXB0TWFuYWdlci0+aW5qZWN0ZWRTY3JpcHRIb3N0KCktPmFkZEluc3BlY3RlZE9iamVj
dChhZG9wdFB0cihuZXcgSW5zcGVjdGFibGVIZWFwT2JqZWN0KGluc3BlY3RlZEhlYXBPYmplY3RJ
ZCkpKTsKKyAgICBpZiAoQ29tbWFuZExpbmVBUElIb3N0KiBjb21tYW5kTGluZUFQSUhvc3QgPSBt
X2luamVjdGVkU2NyaXB0TWFuYWdlci0+Y29tbWFuZExpbmVBUElIb3N0KCkpCisgICAgICAgIGNv
bW1hbmRMaW5lQVBJSG9zdC0+YWRkSW5zcGVjdGVkT2JqZWN0KGFkb3B0UHRyKG5ldyBJbnNwZWN0
YWJsZUhlYXBPYmplY3QoaW5zcGVjdGVkSGVhcE9iamVjdElkKSkpOwogfQogCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29u
dHJvbGxlci5jcHAKaW5kZXggYjYyYzRhNi4uYjI5ODZkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcApAQCAtMzQsNiArMzQsNyBAQAog
CiAjaW5jbHVkZSAiSW5zcGVjdG9yQ29udHJvbGxlci5oIgogCisjaW5jbHVkZSAiQ29tbWFuZExp
bmVBUElIb3N0LmgiCiAjaW5jbHVkZSAiRE9NV3JhcHBlcldvcmxkLmgiCiAjaW5jbHVkZSAiR3Jh
cGhpY3NDb250ZXh0LmgiCiAjaW5jbHVkZSAiSWRlbnRpZmllcnNGYWN0b3J5LmgiCkBAIC04OSw2
ICs5MCw4IEBAIEluc3BlY3RvckNvbnRyb2xsZXI6Okluc3BlY3RvckNvbnRyb2xsZXIoUGFnZSog
cGFnZSwgSW5zcGVjdG9yQ2xpZW50KiBpbnNwZWN0b3JDCiAgICAgLCBtX2hhc1JlbW90ZUZyb250
ZW5kKGZhbHNlKQogI2VuZGlmCiB7CisgICAgQVNTRVJUX0FSRyhpbnNwZWN0b3JDbGllbnQsIGlu
c3BlY3RvckNsaWVudCk7CisKICAgICBPd25QdHI8SW5zcGVjdG9yQWdlbnQ+IGluc3BlY3RvckFn
ZW50UHRyKEluc3BlY3RvckFnZW50OjpjcmVhdGUocGFnZSwgbV9pbnN0cnVtZW50aW5nQWdlbnRz
LmdldCgpKSk7CiAgICAgbV9pbnNwZWN0b3JBZ2VudCA9IGluc3BlY3RvckFnZW50UHRyLmdldCgp
OwogICAgIG1fYWdlbnRzLmFwcGVuZChpbnNwZWN0b3JBZ2VudFB0ci5yZWxlYXNlKCkpOwpAQCAt
MTY0LDE1ICsxNjcsMTcgQEAgSW5zcGVjdG9yQ29udHJvbGxlcjo6SW5zcGVjdG9yQ29udHJvbGxl
cihQYWdlKiBwYWdlLCBJbnNwZWN0b3JDbGllbnQqIGluc3BlY3RvckMKICAgICBtX2FnZW50cy5h
cHBlbmQoSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQ6OmNyZWF0ZShtX2luc3RydW1lbnRpbmdBZ2Vu
dHMuZ2V0KCkpKTsKICNlbmRpZgogCi0gICAgQVNTRVJUX0FSRyhpbnNwZWN0b3JDbGllbnQsIGlu
c3BlY3RvckNsaWVudCk7Ci0gICAgbV9pbmplY3RlZFNjcmlwdE1hbmFnZXItPmluamVjdGVkU2Ny
aXB0SG9zdCgpLT5pbml0KG1faW5zcGVjdG9yQWdlbnQKLSAgICAgICAgLCBjb25zb2xlQWdlbnQK
KyAgICBBU1NFUlQobV9pbmplY3RlZFNjcmlwdE1hbmFnZXItPmNvbW1hbmRMaW5lQVBJSG9zdCgp
KTsKKyAgICBpZiAoQ29tbWFuZExpbmVBUElIb3N0KiBjb21tYW5kTGluZUFQSUhvc3QgPSBtX2lu
amVjdGVkU2NyaXB0TWFuYWdlci0+Y29tbWFuZExpbmVBUElIb3N0KCkpIHsKKyAgICAgICAgY29t
bWFuZExpbmVBUElIb3N0LT5pbml0KG1faW5zcGVjdG9yQWdlbnQKKyAgICAgICAgICAgICwgY29u
c29sZUFnZW50CisgICAgICAgICAgICAsIG1fZG9tQWdlbnQKKyAgICAgICAgICAgICwgZG9tU3Rv
cmFnZUFnZW50CiAjaWYgRU5BQkxFKFNRTF9EQVRBQkFTRSkKLSAgICAgICAgLCBkYXRhYmFzZUFn
ZW50CisgICAgICAgICAgICAsIGRhdGFiYXNlQWdlbnQKICNlbmRpZgotICAgICAgICAsIGRvbVN0
b3JhZ2VBZ2VudAotICAgICAgICAsIG1fZG9tQWdlbnQKLSAgICApOworICAgICAgICApOworICAg
IH0KIAogI2lmIEVOQUJMRShKQVZBU0NSSVBUX0RFQlVHR0VSKQogICAgIHJ1bnRpbWVBZ2VudC0+
c2V0U2NyaXB0RGVidWdTZXJ2ZXIoJm1fZGVidWdnZXJBZ2VudC0+c2NyaXB0RGVidWdTZXJ2ZXIo
KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySGVhcFBy
b2ZpbGVyQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckhlYXBQ
cm9maWxlckFnZW50LmNwcAppbmRleCA3Yjc4OGFiLi4yNWM5NzM4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySGVhcFByb2ZpbGVyQWdlbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JIZWFwUHJvZmlsZXJBZ2VudC5jcHAK
QEAgLTI5LDExICsyOSwxMSBAQAogICovCiAKICNpbmNsdWRlICJjb25maWcuaCIKLQotI2lmIEVO
QUJMRShKQVZBU0NSSVBUX0RFQlVHR0VSKSAmJiBFTkFCTEUoSU5TUEVDVE9SKQotCiAjaW5jbHVk
ZSAiSW5zcGVjdG9ySGVhcFByb2ZpbGVyQWdlbnQuaCIKIAorI2lmIEVOQUJMRShKQVZBU0NSSVBU
X0RFQlVHR0VSKSAmJiBFTkFCTEUoSU5TUEVDVE9SKQorCisjaW5jbHVkZSAiQ29tbWFuZExpbmVB
UElIb3N0LmgiCiAjaW5jbHVkZSAiSW5qZWN0ZWRTY3JpcHQuaCIKICNpbmNsdWRlICJJbmplY3Rl
ZFNjcmlwdEhvc3QuaCIKICNpbmNsdWRlICJJbnN0cnVtZW50aW5nQWdlbnRzLmgiCkBAIC02OSw3
ICs2OSw5IEBAIHZvaWQgSW5zcGVjdG9ySGVhcFByb2ZpbGVyQWdlbnQ6OnJlc2V0U3RhdGUoKQog
ICAgIG1fc25hcHNob3RzLmNsZWFyKCk7CiAgICAgbV9uZXh0VXNlckluaXRpYXRlZEhlYXBTbmFw
c2hvdE51bWJlciA9IDE7CiAgICAgcmVzZXRGcm9udGVuZFByb2ZpbGVzKCk7Ci0gICAgbV9pbmpl
Y3RlZFNjcmlwdE1hbmFnZXItPmluamVjdGVkU2NyaXB0SG9zdCgpLT5jbGVhckluc3BlY3RlZE9i
amVjdHMoKTsKKworICAgIGlmIChDb21tYW5kTGluZUFQSUhvc3QqIGNvbW1hbmRMaW5lQVBJSG9z
dCA9IG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLT5jb21tYW5kTGluZUFQSUhvc3QoKSkKKyAgICAg
ICAgY29tbWFuZExpbmVBUElIb3N0LT5jbGVhckluc3BlY3RlZE9iamVjdHMoKTsKIH0KIAogdm9p
ZCBJbnNwZWN0b3JIZWFwUHJvZmlsZXJBZ2VudDo6cmVzZXRGcm9udGVuZFByb2ZpbGVzKCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQcm9maWxlckFnZW50
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQcm9maWxlckFnZW50LmNw
cAppbmRleCBmNzdlMDE0Li5hYTc4NmRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yUHJvZmlsZXJBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvclByb2ZpbGVyQWdlbnQuY3BwCkBAIC0zMyw2ICszMyw3IEBACiAKICNp
bmNsdWRlICJJbnNwZWN0b3JQcm9maWxlckFnZW50LmgiCiAKKyNpbmNsdWRlICJDb21tYW5kTGlu
ZUFQSUhvc3QuaCIKICNpbmNsdWRlICJDb25zb2xlLmgiCiAjaW5jbHVkZSAiQ29uc29sZUFQSVR5
cGVzLmgiCiAjaW5jbHVkZSAiQ29uc29sZVR5cGVzLmgiCkBAIC0zMTYsNyArMzE3LDkgQEAgdm9p
ZCBJbnNwZWN0b3JQcm9maWxlckFnZW50OjpyZXNldFN0YXRlKCkKICAgICBtX25leHRVc2VySW5p
dGlhdGVkUHJvZmlsZU51bWJlciA9IDE7CiAgICAgbV9uZXh0VXNlckluaXRpYXRlZEhlYXBTbmFw
c2hvdE51bWJlciA9IDE7CiAgICAgcmVzZXRGcm9udGVuZFByb2ZpbGVzKCk7Ci0gICAgbV9pbmpl
Y3RlZFNjcmlwdE1hbmFnZXItPmluamVjdGVkU2NyaXB0SG9zdCgpLT5jbGVhckluc3BlY3RlZE9i
amVjdHMoKTsKKworICAgIGlmIChDb21tYW5kTGluZUFQSUhvc3QqIGNvbW1hbmRMaW5lQVBJSG9z
dCA9IG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLT5jb21tYW5kTGluZUFQSUhvc3QoKSkKKyAgICAg
ICAgY29tbWFuZExpbmVBUElIb3N0LT5jbGVhckluc3BlY3RlZE9iamVjdHMoKTsKIH0KIAogdm9p
ZCBJbnNwZWN0b3JQcm9maWxlckFnZW50OjpyZXNldEZyb250ZW5kUHJvZmlsZXMoKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1BhZ2VDb25zb2xlQWdlbnQuY3BwIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1BhZ2VDb25zb2xlQWdlbnQuY3BwCmluZGV4IGNlYWJiZDIu
Ljk3ZDY4ZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9QYWdlQ29uc29s
ZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvUGFnZUNvbnNvbGVBZ2Vu
dC5jcHAKQEAgLTM0LDYgKzM0LDcgQEAKIAogI2luY2x1ZGUgIlBhZ2VDb25zb2xlQWdlbnQuaCIK
IAorI2luY2x1ZGUgIkNvbW1hbmRMaW5lQVBJSG9zdC5oIgogI2luY2x1ZGUgIkRPTVdpbmRvdy5o
IgogI2luY2x1ZGUgIkluamVjdGVkU2NyaXB0SG9zdC5oIgogI2luY2x1ZGUgIkluamVjdGVkU2Ny
aXB0TWFuYWdlci5oIgpAQCAtNjQsMTAgKzY1LDEwIEBAIHZvaWQgUGFnZUNvbnNvbGVBZ2VudDo6
Y2xlYXJNZXNzYWdlcyhFcnJvclN0cmluZyogZXJyb3JTdHJpbmcpCiAgICAgSW5zcGVjdG9yQ29u
c29sZUFnZW50OjpjbGVhck1lc3NhZ2VzKGVycm9yU3RyaW5nKTsKIH0KIAotY2xhc3MgSW5zcGVj
dGFibGVOb2RlIDogcHVibGljIEluamVjdGVkU2NyaXB0SG9zdDo6SW5zcGVjdGFibGVPYmplY3Qg
eworY2xhc3MgSW5zcGVjdGFibGVOb2RlIEZJTkFMIDogcHVibGljIENvbW1hbmRMaW5lQVBJSG9z
dDo6SW5zcGVjdGFibGVPYmplY3QgewogcHVibGljOgogICAgIGV4cGxpY2l0IEluc3BlY3RhYmxl
Tm9kZShOb2RlKiBub2RlKSA6IG1fbm9kZShub2RlKSB7IH0KLSAgICB2aXJ0dWFsIERlcHJlY2F0
ZWQ6OlNjcmlwdFZhbHVlIGdldChKU0M6OkV4ZWNTdGF0ZSogc3RhdGUpCisgICAgdmlydHVhbCBE
ZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSBnZXQoSlNDOjpFeGVjU3RhdGUqIHN0YXRlKSBPVkVSUklE
RQogICAgIHsKICAgICAgICAgcmV0dXJuIEluamVjdGVkU2NyaXB0SG9zdDo6bm9kZUFzU2NyaXB0
VmFsdWUoc3RhdGUsIG1fbm9kZSk7CiAgICAgfQpAQCAtNzksMTAgKzgwLDEyIEBAIHZvaWQgUGFn
ZUNvbnNvbGVBZ2VudDo6YWRkSW5zcGVjdGVkTm9kZShFcnJvclN0cmluZyogZXJyb3JTdHJpbmcs
IGludCBub2RlSWQpCiB7CiAgICAgTm9kZSogbm9kZSA9IG1faW5zcGVjdG9yRE9NQWdlbnQtPm5v
ZGVGb3JJZChub2RlSWQpOwogICAgIGlmICghbm9kZSB8fCBub2RlLT5pc0luU2hhZG93VHJlZSgp
KSB7Ci0gICAgICAgICplcnJvclN0cmluZyA9ICJub2RlSWQgaXMgbm90IHZhbGlkIjsKKyAgICAg
ICAgKmVycm9yU3RyaW5nID0gQVNDSUlMaXRlcmFsKCJub2RlSWQgaXMgbm90IHZhbGlkIik7CiAg
ICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgbV9pbmplY3RlZFNjcmlwdE1hbmFnZXItPmluamVj
dGVkU2NyaXB0SG9zdCgpLT5hZGRJbnNwZWN0ZWRPYmplY3QoYWRvcHRQdHIobmV3IEluc3BlY3Rh
YmxlTm9kZShub2RlKSkpOworCisgICAgaWYgKENvbW1hbmRMaW5lQVBJSG9zdCogY29tbWFuZExp
bmVBUElIb3N0ID0gbV9pbmplY3RlZFNjcmlwdE1hbmFnZXItPmNvbW1hbmRMaW5lQVBJSG9zdCgp
KQorICAgICAgICBjb21tYW5kTGluZUFQSUhvc3QtPmFkZEluc3BlY3RlZE9iamVjdChhZG9wdFB0
cihuZXcgSW5zcGVjdGFibGVOb2RlKG5vZGUpKSk7CiB9CiAKIGJvb2wgUGFnZUNvbnNvbGVBZ2Vu
dDo6ZGV2ZWxvcGVyRXh0cmFzRW5hYmxlZCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvUGFnZUluamVjdGVkU2NyaXB0TWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvUGFnZUluamVjdGVkU2NyaXB0TWFuYWdlci5jcHAKaW5kZXggYmU1NTE3OS4uMzQz
MmIwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1BhZ2VJbmplY3RlZFNj
cmlwdE1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9QYWdlSW5qZWN0
ZWRTY3JpcHRNYW5hZ2VyLmNwcApAQCAtMzEsNiArMzEsMjAgQEAKICNpbmNsdWRlICJDb21tYW5k
TGluZUFQSU1vZHVsZS5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CisgICAgCitQYWdlSW5qZWN0
ZWRTY3JpcHRNYW5hZ2VyOjpQYWdlSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKEluc3BlY3RlZFN0YXRl
QWNjZXNzQ2hlY2sgYWNjZXNzQ2hlY2spCisgICAgOiBJbmplY3RlZFNjcmlwdE1hbmFnZXIoYWNj
ZXNzQ2hlY2spCisgICAgLCBtX2NvbW1hbmRMaW5lQVBJSG9zdChDb21tYW5kTGluZUFQSUhvc3Q6
OmNyZWF0ZSgpKQoreworfQorCit2b2lkIFBhZ2VJbmplY3RlZFNjcmlwdE1hbmFnZXI6OmRpc2Nv
bm5lY3QoKQoreworICAgIEluamVjdGVkU2NyaXB0TWFuYWdlcjo6ZGlzY29ubmVjdCgpOworCisg
ICAgbV9jb21tYW5kTGluZUFQSUhvc3QtPmRpc2Nvbm5lY3QoKTsKKyAgICBtX2NvbW1hbmRMaW5l
QVBJSG9zdC5jbGVhcigpOworfQogCiB2b2lkIFBhZ2VJbmplY3RlZFNjcmlwdE1hbmFnZXI6OmRp
ZENyZWF0ZUluamVjdGVkU2NyaXB0KEluamVjdGVkU2NyaXB0IGluamVjdGVkU2NyaXB0KQogewpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1BhZ2VJbmplY3RlZFNjcmlwdE1h
bmFnZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9QYWdlSW5qZWN0ZWRTY3JpcHRNYW5h
Z2VyLmgKaW5kZXggYWRmYmU4Ny4uODg0YjNhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL1BhZ2VJbmplY3RlZFNjcmlwdE1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvUGFnZUluamVjdGVkU2NyaXB0TWFuYWdlci5oCkBAIC0yNiwxNyArMjYsMjUg
QEAKICNpZm5kZWYgUGFnZUluamVjdGVkU2NyaXB0TWFuYWdlcl9oCiAjZGVmaW5lIFBhZ2VJbmpl
Y3RlZFNjcmlwdE1hbmFnZXJfaAogCisjaW5jbHVkZSAiQ29tbWFuZExpbmVBUElIb3N0LmgiCiAj
aW5jbHVkZSAiSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmgiCisjaW5jbHVkZSA8d3RmL1JlZlB0ci5o
PgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFBhZ2VJbmplY3RlZFNjcmlwdE1hbmFn
ZXIgRklOQUwgOiBwdWJsaWMgSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyIHsKIHB1YmxpYzoKLSAgICBl
eHBsaWNpdCBQYWdlSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKEluc3BlY3RlZFN0YXRlQWNjZXNzQ2hl
Y2sgYWNjZXNzQ2hlY2spIDogSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKGFjY2Vzc0NoZWNrKSB7IH0K
KyAgICBleHBsaWNpdCBQYWdlSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKEluc3BlY3RlZFN0YXRlQWNj
ZXNzQ2hlY2spOwogICAgIHZpcnR1YWwgflBhZ2VJbmplY3RlZFNjcmlwdE1hbmFnZXIoKSB7IH0K
IAorICAgIHZpcnR1YWwgdm9pZCBkaXNjb25uZWN0KCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCBD
b21tYW5kTGluZUFQSUhvc3QqIGNvbW1hbmRMaW5lQVBJSG9zdCgpIGNvbnN0IE9WRVJSSURFIHsg
cmV0dXJuIG1fY29tbWFuZExpbmVBUElIb3N0LmdldCgpOyB9CisKIHByb3RlY3RlZDoKICAgICB2
aXJ0dWFsIHZvaWQgZGlkQ3JlYXRlSW5qZWN0ZWRTY3JpcHQoSW5qZWN0ZWRTY3JpcHQpIE9WRVJS
SURFOworCitwcml2YXRlOgorICAgIFJlZlB0cjxDb21tYW5kTGluZUFQSUhvc3Q+IG1fY29tbWFu
ZExpbmVBUElIb3N0OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dvcmtlckluc3BlY3RvckNvbnRyb2xsZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dvcmtlckluc3BlY3RvckNvbnRyb2xsZXIuY3BwCmlu
ZGV4IGRmZmYzZjguLmU0ZmI1NTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9Xb3JrZXJJbnNwZWN0b3JDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvV29ya2VySW5zcGVjdG9yQ29udHJvbGxlci5jcHAKQEAgLTM0LDYgKzM0LDcgQEAKIAog
I2luY2x1ZGUgIldvcmtlckluc3BlY3RvckNvbnRyb2xsZXIuaCIKIAorI2luY2x1ZGUgIkNvbW1h
bmRMaW5lQVBJSG9zdC5oIgogI2luY2x1ZGUgIkluamVjdGVkU2NyaXB0SG9zdC5oIgogI2luY2x1
ZGUgIkluamVjdGVkU2NyaXB0TWFuYWdlci5oIgogI2luY2x1ZGUgIkluc3BlY3RvckNsaWVudC5o
IgpAQCAtOTgsMTQgKzk5LDE2IEBAIFdvcmtlckluc3BlY3RvckNvbnRyb2xsZXI6Oldvcmtlcklu
c3BlY3RvckNvbnRyb2xsZXIoV29ya2VyR2xvYmFsU2NvcGUqIHdvcmtlckdsCiAgICAgbV9hZ2Vu
dHMuYXBwZW5kKEluc3BlY3RvclRpbWVsaW5lQWdlbnQ6OmNyZWF0ZShtX2luc3RydW1lbnRpbmdB
Z2VudHMuZ2V0KCksIDAsIDAsIEluc3BlY3RvclRpbWVsaW5lQWdlbnQ6Oldvcmtlckluc3BlY3Rv
ciwgMCkpOwogICAgIG1fYWdlbnRzLmFwcGVuZChjb25zb2xlQWdlbnQucmVsZWFzZSgpKTsKIAot
ICAgIG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLT5pbmplY3RlZFNjcmlwdEhvc3QoKS0+aW5pdCgw
Ci0gICAgICAgICwgMAorICAgIGlmIChDb21tYW5kTGluZUFQSUhvc3QqIGNvbW1hbmRMaW5lQVBJ
SG9zdCA9IG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLT5jb21tYW5kTGluZUFQSUhvc3QoKSkgewor
ICAgICAgICBjb21tYW5kTGluZUFQSUhvc3QtPmluaXQobnVsbHB0cgorICAgICAgICAgICAgLCBu
dWxscHRyCisgICAgICAgICAgICAsIG51bGxwdHIKKyAgICAgICAgICAgICwgbnVsbHB0cgogI2lm
IEVOQUJMRShTUUxfREFUQUJBU0UpCi0gICAgICAgICwgMAorICAgICAgICAgICAgLCBudWxscHRy
CiAjZW5kaWYKLSAgICAgICAgLCAwCi0gICAgICAgICwgMAotICAgICk7CisgICAgICAgICk7Cisg
ICAgfQogfQogIAogV29ya2VySW5zcGVjdG9yQ29udHJvbGxlcjo6fldvcmtlckluc3BlY3RvckNv
bnRyb2xsZXIoKQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>